merge 19889:20181 of rails_port into the openID branch

merge conflicts with the remember_me functionality
This commit is contained in:
Kai Krueger 2010-02-27 11:21:15 +00:00
commit bbf30e76e4
86 changed files with 2487 additions and 492 deletions

View file

@ -133,12 +133,12 @@ class AmfController < ApplicationController
when 'putway'; orn=renumberednodes.dup
r=putway(renumberednodes,*args)
r[4]=renumberednodes.reject { |k,v| orn.has_key?(k) }
if r[2] != r[3] then renumberedways[r[2]] = r[3] end
if r[0]==0 and r[2] != r[3] then renumberedways[r[2]] = r[3] end
result=AMF.putdata(index,r)
when 'putrelation'; result=AMF.putdata(index,putrelation(renumberednodes, renumberedways, *args))
when 'deleteway'; result=AMF.putdata(index,deleteway(*args))
when 'putpoi'; r=putpoi(*args)
if r[2] != r[3] then renumberednodes[r[2]] = r[3] end
if r[0]==0 and r[2] != r[3] then renumberednodes[r[2]] = r[3] end
result=AMF.putdata(index,r)
when 'startchangeset'; result=AMF.putdata(index,startchangeset(*args))
end
@ -156,6 +156,8 @@ class AmfController < ApplicationController
def amf_handle_error(call,rootobj,rootid)
yield
rescue OSM::APIAlreadyDeletedError => ex
return [-4, ex.object, ex.object_id]
rescue OSM::APIVersionMismatchError => ex
return [-3, [rootobj, rootid], [ex.type.downcase, ex.id, ex.latest]]
rescue OSM::APIUserChangesetMismatchError => ex
@ -358,7 +360,7 @@ class AmfController < ApplicationController
way = Way.find(:first, :conditions => { :id => wayid }, :include => { :nodes => :node_tags })
# check case where way has been deleted or doesn't exist
return [-4, 'way', wayid, [], {}, nil] if way.nil? or !way.visible
return [-4, 'way', wayid] if way.nil? or !way.visible
points = way.nodes.collect do |node|
nodetags=node.tags
@ -403,7 +405,7 @@ class AmfController < ApplicationController
unless old_way.nil?
points = old_way.get_nodes_revert(timestamp)
if !old_way.visible
return [-1, "Sorry, the way was deleted at that time - please revert to a previous version.", id, [], {}, nil, false]
return [-1, "Sorry, the way was deleted at that time - please revert to a previous version.", id]
end
end
rescue ArgumentError
@ -413,7 +415,7 @@ class AmfController < ApplicationController
end
if old_way.nil?
return [-1, "Sorry, the server could not find a way at that time.", id, [], {}, nil, false]
return [-1, "Sorry, the server could not find a way at that time.", id]
else
curway=Way.find(id)
old_way.tags['history'] = "Retrieved from v#{old_way.version}"
@ -492,8 +494,8 @@ class AmfController < ApplicationController
def findgpx(searchterm, usertoken)
amf_handle_error_with_timeout("'findgpx'" ,nil,nil) do
user = getuser(usertoken)
if !user then return -1,"You must be logged in to search for GPX traces.",[] end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked'),[] end
if !user then return -1,"You must be logged in to search for GPX traces." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end
gpxs = []
if searchterm.to_i>0 then
@ -523,7 +525,7 @@ class AmfController < ApplicationController
amf_handle_error("'getrelation' #{relid}" ,'relation',relid) do
rel = Relation.find(:first, :conditions => { :id => relid })
return [-4, 'relation', relid, {}, [], nil] if rel.nil? or !rel.visible
return [-4, 'relation', relid] if rel.nil? or !rel.visible
[0, '', relid, rel.tags, rel.members, rel.version]
end
end
@ -560,7 +562,7 @@ class AmfController < ApplicationController
user = getuser(usertoken)
if !user then return -1,"You are not logged in, so the relation could not be saved." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end
if !tags_ok(tags) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
if !tags_ok(tags) then return -1,"One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." end
tags = strip_non_xml_chars tags
relid = relid.to_i
@ -649,7 +651,7 @@ class AmfController < ApplicationController
if !user then return -1,"You are not logged in, so the way could not be saved." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end
if pointlist.length < 2 then return -2,"Server error - way is only #{points.length} points long." end
if !tags_ok(attributes) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
if !tags_ok(attributes) then return -1,"One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." end
attributes = strip_non_xml_chars attributes
originalway = originalway.to_i
@ -666,6 +668,7 @@ class AmfController < ApplicationController
lat = a[1].to_f
id = a[2].to_i
version = a[3].to_i
if id == 0 then return -2,"Server error - node with id 0 found in way #{originalway}." end
if lat== 90 then return -2,"Server error - node with latitude -90 found in way #{originalway}." end
if renumberednodes[id] then id = renumberednodes[id] end
@ -677,7 +680,7 @@ class AmfController < ApplicationController
node.tags = a[4]
# fixup node tags in a way as well
if !tags_ok(node.tags) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
if !tags_ok(node.tags) then return -1,"One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." end
node.tags = strip_non_xml_chars node.tags
node.tags.delete('created_by')
@ -753,7 +756,7 @@ class AmfController < ApplicationController
user = getuser(usertoken)
if !user then return -1,"You are not logged in, so the point could not be saved." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end
if !tags_ok(tags) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
if !tags_ok(tags) then return -1,"One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." end
tags = strip_non_xml_chars tags
id = id.to_i
@ -765,7 +768,7 @@ class AmfController < ApplicationController
node = Node.find(id)
if !visible then
unless node.ways.empty? then return -1,"The point has since become part of a way, so you cannot save it as a POI.",id,id,version end
unless node.ways.empty? then return -1,"Point #{id} has since become part of a way, so you cannot save it as a POI.",id,id,version end
end
end
# We always need a new node, based on the data that has been sent to us
@ -816,7 +819,7 @@ class AmfController < ApplicationController
if n
return [0, '', n.id, n.lon, n.lat, n.tags, v]
else
return [-4, 'node', id, nil, nil, {}, nil]
return [-4, 'node', id]
end
end
end
@ -832,7 +835,7 @@ class AmfController < ApplicationController
# Returns 0 (success), unchanged way id, new way version, new node versions.
def deleteway(usertoken, changeset_id, way_id, way_version, deletednodes) #:doc:
amf_handle_error("'deleteway' #{way_id}" ,'way',id) do
amf_handle_error("'deleteway' #{way_id}" ,'way', way_id) do
user = getuser(usertoken)
unless user then return -1,"You are not logged in, so the way could not be deleted." end
unless user.active_blocks.empty? then return -1,t('application.setup_user_auth.blocked') end

View file

@ -192,6 +192,8 @@ class ApplicationController < ActionController::Base
report_error message, :bad_request
rescue OSM::APIError => ex
report_error ex.message, ex.status
rescue ActionController::UnknownAction => ex
raise
rescue Exception => ex
logger.info("API threw unexpected #{ex.class} exception: #{ex.message}")
ex.backtrace.each { |l| logger.info(l) }

View file

@ -166,7 +166,7 @@ class DiaryEntryController < ApplicationController
:visible => true
})
if @entry
@title = t 'diary_entry.view.title', :user => params[:display_name]
@title = t 'diary_entry.view.title', :user => params[:display_name], :title => @entry.title
else
@title = t 'diary_entry.no_such_entry.title', :id => params[:id]
render :action => 'no_such_entry', :status => :not_found

View file

@ -17,11 +17,13 @@ class GeocoderController < ApplicationController
@sources.push "latlon"
elsif @query.match(/^\d{5}(-\d{4})?$/)
@sources.push "us_postcode"
@sources.push "osm_nominatim"
elsif @query.match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
@sources.push "uk_postcode"
@sources.push "osm_nominatim"
elsif @query.match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
@sources.push "ca_postcode"
@sources.push "osm_nominatim"
else
@sources.push "osm_nominatim"
@sources.push "geonames"

View file

@ -100,8 +100,15 @@ class MessageController < ApplicationController
end
message.message_read = message_read
if message.save
flash[:notice] = notice
redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
if request.xhr?
render :update do |page|
page.replace "inbox-count", :partial => "message_count"
page.replace "inbox-#{message.id}", :partial => "message_summary", :object => message
end
else
flash[:notice] = notice
redirect_to :controller => 'message', :action => 'inbox', :display_name => @user.display_name
end
end
end
rescue ActiveRecord::RecordNotFound

View file

@ -233,7 +233,7 @@ class TraceController < ApplicationController
rss = OSM::GeoRSS.new
traces.each do |trace|
rss.add(trace.latitude, trace.longitude, trace.name, trace.user.display_name, url_for({:controller => 'trace', :action => 'view', :id => trace.id, :display_name => trace.user.display_name}), "<img src='#{url_for({:controller => 'trace', :action => 'icon', :id => trace.id, :user_login => trace.user.display_name})}'> GPX file with #{trace.size} points from #{trace.user.display_name}", trace.timestamp)
rss.add(trace.latitude, trace.longitude, trace.name, trace.user.display_name, url_for({:controller => 'trace', :action => 'view', :id => trace.id, :display_name => trace.user.display_name}), "<img src='#{url_for({:controller => 'trace', :action => 'icon', :id => trace.id, :display_name => trace.user.display_name})}'> GPX file with #{trace.size} points from #{trace.user.display_name}", trace.timestamp)
end
render :text => rss.to_s, :content_type => "application/rss+xml"

View file

@ -4,9 +4,9 @@ class UserController < ApplicationController
before_filter :authorize, :only => [:api_details, :api_gpx_files]
before_filter :authorize_web, :except => [:api_details, :api_gpx_files]
before_filter :set_locale, :except => [:api_details, :api_gpx_files]
before_filter :require_user, :only => [:set_home, :account, :go_public, :make_friend, :remove_friend, :upload_image, :delete_image]
before_filter :require_user, :only => [:account, :go_public, :make_friend, :remove_friend]
before_filter :check_database_readable, :except => [:api_details, :api_gpx_files]
before_filter :check_database_writable, :only => [:login, :new, :set_home, :account, :go_public, :make_friend, :remove_friend, :upload_image, :delete_image]
before_filter :check_database_writable, :only => [:login, :new, :account, :go_public, :make_friend, :remove_friend]
before_filter :check_api_readable, :only => [:api_details, :api_gpx_files]
before_filter :require_allow_read_prefs, :only => [:api_details]
before_filter :require_allow_read_gpx, :only => [:api_gpx_files]
@ -15,7 +15,7 @@ class UserController < ApplicationController
before_filter :lookup_this_user, :only => [:activate, :deactivate, :hide, :unhide, :delete]
filter_parameter_logging :password, :pass_crypt, :pass_crypt_confirmation
cache_sweeper :user_sweeper, :only => [:account, :hide, :unhide, :delete]
def save
@ -24,31 +24,31 @@ class UserController < ApplicationController
if Acl.find_by_address(request.remote_ip, :conditions => {:k => "no_account_creation"})
render :action => 'new'
else
#The redirect from the OpenID provider reenters here again
#and we need to pass the parameters through to the
#open_id_authentication function a second time
if params[:open_id_complete]
openid_verify('', true)
#We have set the user.openid_url to nil beforehand. If it hasn't
#been set to a new valid openid_url, it means the openid couldn't be validated
if @user.nil? or @user.openid_url.nil?
render :action => 'new'
return
end
else
@user = User.new(params[:user])
@user.visible = true
@user.data_public = true
@user.description = "" if @user.description.nil?
@user.creation_ip = request.remote_ip
@user.languages = request.user_preferred_languages
#Set the openid_url to nil as for one it is used
#to check if the openid could be validated and secondly
#to not get dupplicate conflicts for an empty openid
@user.openid_url = nil
#The redirect from the OpenID provider reenters here again
#and we need to pass the parameters through to the
#open_id_authentication function a second time
if params[:open_id_complete]
openid_verify('', true)
#We have set the user.openid_url to nil beforehand. If it hasn't
#been set to a new valid openid_url, it means the openid couldn't be validated
if @user.nil? or @user.openid_url.nil?
render :action => 'new'
return
end
else
@user = User.new(params[:user])
if (!params[:user][:openid_url].nil? and params[:user][:openid_url].length > 0)
@user.visible = true
@user.data_public = true
@user.description = "" if @user.description.nil?
@user.creation_ip = request.remote_ip
@user.languages = request.user_preferred_languages
#Set the openid_url to nil as for one it is used
#to check if the openid could be validated and secondly
#to not get dupplicate conflicts for an empty openid
@user.openid_url = nil
if (!params[:user][:openid_url].nil? and params[:user][:openid_url].length > 0)
if @user.pass_crypt.length == 0
#if the password is empty, but we have a openid
#then generate a random passowrd to disable
@ -89,13 +89,14 @@ class UserController < ApplicationController
return
end
end
if @user.save
flash[:notice] = t 'user.new.flash create success message'
Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => params[:referer]))
redirect_to :action => 'login'
else
render :action => 'new'
end
if @user.save
flash[:notice] = t 'user.new.flash create success message'
Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => params[:referer]))
redirect_to :action => 'login'
else
render :action => 'new'
end
end
end
@ -103,7 +104,7 @@ class UserController < ApplicationController
@title = t 'user.account.title'
@tokens = @user.oauth_tokens.find :all, :conditions => 'oauth_tokens.invalidated_at is null and oauth_tokens.authorized_at is not null'
#The redirect from the OpenID provider reenters here again
#The redirect from the OpenID provider reenters here again
#and we need to pass the parameters through to the
#open_id_authentication function
if params[:open_id_complete]
@ -113,38 +114,42 @@ class UserController < ApplicationController
end
if params[:user] and params[:user][:display_name] and params[:user][:description]
if params[:user][:email] != @user.email
@user.new_email = params[:user][:email]
end
@user.display_name = params[:user][:display_name]
@user.new_email = params[:user][:new_email]
if params[:user][:pass_crypt].length > 0 or params[:user][:pass_crypt_confirmation].length > 0
@user.pass_crypt = params[:user][:pass_crypt]
@user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation]
end
if (params[:user][:openid_url].length == 0)
#Clearing doesn't need OpenID validation, so we can set it here.
@user.openid_url = nil
end
@user.description = params[:user][:description]
@user.languages = params[:user][:languages].split(",")
case params[:image_action]
when "new" then @user.image = params[:user][:image]
when "delete" then @user.image = nil
end
@user.home_lat = params[:user][:home_lat]
@user.home_lon = params[:user][:home_lon]
if @user.save
set_locale
if params[:user][:email] == @user.new_email
flash.now[:notice] = t 'user.account.flash update success confirm needed'
Notifier.deliver_email_confirm(@user, @user.tokens.create)
else
if @user.new_email.nil? or @user.new_email.empty?
flash.now[:notice] = t 'user.account.flash update success'
else
flash.now[:notice] = t 'user.account.flash update success confirm needed'
begin
Notifier.deliver_email_confirm(@user, @user.tokens.create)
rescue
# Ignore errors sending email
end
end
end
if (params[:user][:openid_url].length > 0)
if (params[:user][:openid_url].length > 0)
begin
@norm_openid_url = OpenIdAuthentication.normalize_identifier(params[:user][:openid_url])
if (@norm_openid_url != @user.openid_url)
@ -158,6 +163,13 @@ class UserController < ApplicationController
end
end
else
if flash[:errors]
flash[:errors].each do |attr,msg|
attr = "new_email" if attr == "email"
@user.errors.add(attr,msg)
end
end
end
end
@ -197,14 +209,48 @@ class UserController < ApplicationController
end
end
def set_home
if params[:user][:home_lat] and params[:user][:home_lon]
@user.home_lat = params[:user][:home_lat].to_f
@user.home_lon = params[:user][:home_lon].to_f
if @user.save
flash[:notice] = t 'user.set_home.flash success'
redirect_to :controller => 'user', :action => 'account'
def open_id_authentication(openid_url)
#TODO: only ask for nickname and email, if we don't already have a user for that openID, in which case
#email and nickname are already filled out. I don't know how to do that with ruby syntax though, as we
#don't want to duplicate the do block
#On the other hand it also doesn't matter too much if we ask every time, as the OpenID provider should
#remember these results, and shouldn't repromt the user for these data each time.
authenticate_with_open_id(openid_url, :return_to => request.protocol + request.host_with_port + '/login?referer=' + params[:referer], :optional => [:nickname, :email]) do |result, identity_url, registration|
if result.successful?
#We need to use the openid url passed back from the OpenID provider
#rather than the one supplied by the user, as these can be different.
#e.g. one can simply enter yahoo.com in the login box, i.e. no user specific url
#only once it comes back from the OpenID provider do we know the unique address for
#the user.
user = User.find_by_openid_url(identity_url)
if user
if user.visible? and user.active?
session[:user] = user.id
session_expires_after 1.month if session[:remember]
else
user = nil
flash.now[:error] = t 'user.login.account not active'
end
else
#We don't have a user registered to this OpenID. Redirect to the create account page
#with username and email filled in if they have been given by the OpenID provider through
#the simple registration protocol
redirect_to :controller => 'user', :action => 'new', :nickname => registration['nickname'], :email => registration['email'], :openid => identity_url
end
else if result.missing?
#Try and apply some heuristics to make common cases more userfriendly
mapped_id = openid_specialcase_mapping(openid_url)
if mapped_id
open_id_authentication(mapped_id)
else
flash.now[:error] = t 'user.login.openid missing provider'
end
else if result.invalid?
flash.now[:error] = t 'user.login.openid invalid'
else
flash.now[:error] = t 'user.login.auth failure'
end
end
end
end
end
@ -225,7 +271,8 @@ class UserController < ApplicationController
if user
token = user.tokens.create
Notifier.deliver_lost_password(user, token)
flash.now[:notice] = t 'user.lost_password.notice email on way'
flash[:notice] = t 'user.lost_password.notice email on way'
redirect_to :action => 'login'
else
flash.now[:error] = t 'user.lost_password.notice email cannot find'
end
@ -267,39 +314,39 @@ class UserController < ApplicationController
# send them to the home page
redirect_to :controller => 'site', :action => 'index' if session[:user]
@nickname = params['nickname']
@nickname = params['nickname']
@email = params['email']
@openID = params['openid']
end
def login
#The redirect from the OpenID provider reenters here again
#The redirect from the OpenID provider reenters here again
#and we need to pass the parameters through to the
# open_id_authentication function
if params[:open_id_complete]
open_id_authentication('')
end
if params[:user] and session[:user].nil?
if !params[:user][:openid_url].nil? and !params[:user][:openid_url].empty?
if !params[:user][:openid_url].nil? and !params[:user][:openid_url].empty?
session[:remember] = params[:remember_me]
open_id_authentication(params[:user][:openid_url])
else
email_or_display_name = params[:user][:email]
pass = params[:user][:password]
user = User.authenticate(:username => email_or_display_name, :password => pass)
if user
session[:user] = user.id
elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true)
flash.now[:error] = t 'user.login.account not active'
else
flash.now[:error] = t 'user.login.auth failure'
end
end
email_or_display_name = params[:user][:email]
pass = params[:user][:password]
user = User.authenticate(:username => email_or_display_name, :password => pass)
if user
session[:user] = user.id
session_expires_after 1.month if params[:remember_me]
elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true)
flash.now[:error] = t 'user.login.account not active'
else
flash.now[:error] = t 'user.login.auth failure'
end
end
end
if session[:user]
# The user is logged in, if the referer param exists, redirect them to that
# unless they've also got a block on them, in which case redirect them to
@ -319,51 +366,6 @@ class UserController < ApplicationController
@title = t 'user.login.title'
end
def open_id_authentication(openid_url)
#TODO: only ask for nickname and email, if we don't already have a user for that openID, in which case
#email and nickname are already filled out. I don't know how to do that with ruby syntax though, as we
#don't want to duplicate the do block
#On the other hand it also doesn't matter too much if we ask every time, as the OpenID provider should
#remember these results, and shouldn't repromt the user for these data each time.
authenticate_with_open_id(openid_url, :return_to => request.protocol + request.host_with_port + '/login?referer=' + params[:referer], :optional => [:nickname, :email]) do |result, identity_url, registration|
if result.successful?
#We need to use the openid url passed back from the OpenID provider
#rather than the one supplied by the user, as these can be different.
#e.g. one can simply enter yahoo.com in the login box, i.e. no user specific url
#only once it comes back from the OpenID provider do we know the unique address for
#the user.
user = User.find_by_openid_url(identity_url)
if user
if user.visible? and user.active?
session[:user] = user.id
else
user = nil
flash.now[:error] = t 'user.login.account not active'
end
else
#We don't have a user registered to this OpenID. Redirect to the create account page
#with username and email filled in if they have been given by the OpenID provider through
#the simple registration protocol
redirect_to :controller => 'user', :action => 'new', :nickname => registration['nickname'], :email => registration['email'], :openid => identity_url
end
else if result.missing?
#Try and apply some heuristics to make common cases more userfriendly
mapped_id = openid_specialcase_mapping(openid_url)
if mapped_id
open_id_authentication(mapped_id)
else
flash.now[:error] = t 'user.login.openid missing provider'
end
else if result.invalid?
flash.now[:error] = t 'user.login.openid invalid'
else
flash.now[:error] = t 'user.login.auth failure'
end
end
end
end
end
def logout
if session[:token]
token = UserToken.find_by_token(session[:token])
@ -373,6 +375,7 @@ class UserController < ApplicationController
session[:token] = nil
end
session[:user] = nil
session_expires_automatically
if params[:referer]
redirect_to params[:referer]
else
@ -412,9 +415,12 @@ class UserController < ApplicationController
@user.new_email = nil
@user.active = true
@user.email_valid = true
@user.save!
if @user.save
flash[:notice] = t 'user.confirm_email.success'
else
flash[:errors] = @user.errors
end
token.destroy
flash[:notice] = t 'user.confirm_email.success'
session[:user] = @user.id
redirect_to :action => 'account', :display_name => @user.display_name
else
@ -423,18 +429,6 @@ class UserController < ApplicationController
end
end
def upload_image
@user.image = params[:user][:image]
@user.save!
redirect_to :controller => 'user', :action => 'view', :display_name => @user.display_name
end
def delete_image
@user.image = nil
@user.save!
redirect_to :controller => 'user', :action => 'view', :display_name => @user.display_name
end
def api_gpx_files
doc = OSM::API.new.get_xml_doc
@user.traces.each do |trace|

View file

@ -19,7 +19,6 @@ class Changeset < ActiveRecord::Base
validates_numericality_of :min_lat, :max_lat, :min_lon, :max_lat, :allow_nil => true, :integer_only => true
validates_numericality_of :user_id, :integer_only => true
validates_numericality_of :num_changes, :integer_only => true, :greater_than_or_equal_to => 0
validates_associated :user
# over-expansion factor to use when updating the bounding box
EXPAND = 0.1

View file

@ -20,6 +20,5 @@ class DiaryEntry < ActiveRecord::Base
:greater_than_or_equal_to => -90, :less_than_or_equal_to => 90
validates_numericality_of :longitude, :allow_nil => true,
:greater_than_or_equal_to => -180, :less_than_or_equal_to => 180
validates_associated :user
validates_associated :language
end

View file

@ -7,7 +7,6 @@ class Message < ActiveRecord::Base
validates_presence_of :title, :body, :sent_on, :sender, :recipient
validates_length_of :title, :within => 1..255
validates_inclusion_of :message_read, :in => [ true, false ]
validates_associated :sender, :recipient
validates_as_utf8 :title
def digest

View file

@ -25,8 +25,8 @@ class User < ActiveRecord::Base
validates_uniqueness_of :openid_url, :allow_nil => true
validates_length_of :pass_crypt, :within => 8..255
validates_length_of :display_name, :within => 3..255, :allow_nil => true
validates_length_of :email, :within => 6..255
validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
validates_email_format_of :email
validates_email_format_of :new_email, :allow_blank => true
validates_format_of :display_name, :with => /^[^\/;.,?]*$/
validates_numericality_of :home_lat, :allow_nil => true
validates_numericality_of :home_lon, :allow_nil => true

View file

@ -34,6 +34,14 @@
<div class="export_details">
<p><%= t'export.start.export_details' %></p>
</div>
<div id="export_osm_too_large">
<p class="export_heading"><%= t'export.start.too_large.heading' %></p>
<div class="export_details">
<p><%= t'export.start.too_large.body' %></p>
</div
</div>
</div>
<div id="export_mapnik">
@ -57,6 +65,7 @@
<div id="export_html">
<p class="export_heading"><%= t'export.start.options' %></p>
<div class="export_details">
<p><a id="add_marker" href="#"><%= t'export.start.add_marker' %></a></p>
<p id="marker_inputs" style="display:none">
@ -66,6 +75,7 @@
</div>
<p class="export_heading"><%= t'export.start.output' %></p>
<div class="export_details">
<p><input type="text" id="export_html_text" style="width:95%" /></p>
<p><%= t'export.start.paste_html' %></p>

View file

@ -191,16 +191,16 @@ page << <<EOJ
var bounds = new OpenLayers.Bounds($("minlon").value, $("minlat").value, $("maxlon").value, $("maxlat").value);
if (bounds.getWidth() * bounds.getHeight() > #{APP_CONFIG['max_request_area']}) {
$("format_osm").disabled = true;
$("format_osm").checked = false;
$("export_osm").style.display = "none";
$("export_osm_too_large").style.display = "block";
} else {
$("format_osm").disabled = false;
$("export_osm_too_large").style.display = "none";
}
var max_scale = maxMapnikScale();
if ($("format_mapnik").checked && $("mapnik_scale").value < max_scale) {
if ($("format_osm").checked && bounds.getWidth() * bounds.getHeight() > #{APP_CONFIG['max_request_area']}) {
$("export_commit").disabled = true;
} else if ($("format_mapnik").checked && $("mapnik_scale").value < max_scale) {
$("export_commit").disabled = true;
} else {
$("export_commit").disabled = false;

View file

@ -65,8 +65,8 @@
diaryclass = 'active' if params['controller'] == 'diary_entry'
%>
<li><%= link_to t('layouts.view'), {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => t('layouts.view_tooltip'), :class => viewclass} %></li>
<li><%= link_to t('layouts.edit'), {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => t('layouts.edit_tooltip'), :class => editclass} %></li>
<li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list' }, {:id => 'historyanchor', :title => t('layouts.history_tooltip'), :class => historyclass} %></li>
<li><%= link_to t('layouts.edit'), {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => t('javascripts.site.edit_tooltip'), :class => editclass} %></li>
<li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list' }, {:id => 'historyanchor', :title => t('javascripts.site.history_tooltip'), :class => historyclass} %></li>
<% if params['controller'] == 'site' and (params['action'] == 'index' or params['action'] == 'export') %>
<li><%= link_to_remote t('layouts.export'), {:url => {:controller => 'export', :action => 'start'}}, {:id => 'exportanchor', :title => t('layouts.export_tooltip'), :class => exportclass, :href => url_for(:controller => 'site', :action => 'export')} %></li>
<% else %>

View file

@ -0,0 +1 @@
<p id="inbox-count"><%= t'message.inbox.you_have', :new_count => @user.new_messages.size, :old_count => (@user.messages.size - @user.new_messages.size) %></p>

View file

@ -1,13 +1,13 @@
<% this_colour = cycle('lightgrey', 'white') %>
<tr class="inbox-row<%= "-unread" if not message_summary.message_read? %>">
<tr id="inbox-<%= message_summary.id %>" class="inbox-row<%= "-unread" if not message_summary.message_read? %>">
<td class="inbox-sender" bgcolor="<%= this_colour %>"><%= link_to h(message_summary.sender.display_name), :controller => 'user', :action => message_summary.sender.display_name %></td>
<td class="inbox-subject" bgcolor="<%= this_colour %>"><%= link_to h(message_summary.title), :controller => 'message', :action => 'read', :message_id => message_summary.id %></td>
<td class="inbox-sent nowrap" bgcolor="<%= this_colour %>"><%= l message_summary.sent_on %></td>
<% if message_summary.message_read? %>
<td><%= button_to t('message.message_summary.unread_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread' %></td>
<td><%= button_to t('message.message_summary.unread_button'), {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread'}, { :onclick => remote_function(:url => {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'unread'}) + "; return false;" } %></td>
<% else %>
<td><%= button_to t('message.message_summary.read_button'), :controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read' %></td>
<td><%= button_to t('message.message_summary.read_button'), {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read'}, { :onclick => remote_function(:url => {:controller => 'message', :action => 'mark', :message_id => message_summary.id, :mark => 'read'}) + "; return false;" } %></td>
<% end %>
<td><%= button_to t('message.message_summary.reply_button'), :controller => 'message', :action => 'reply', :message_id => message_summary.id %></td>
<td><%= button_to t('message.message_summary.delete_button'), :controller => 'message', :action => 'delete', :message_id => message_summary.id, :referer => request.request_uri %></td>

View file

@ -1,6 +1,6 @@
<h2><%= t'message.inbox.my_inbox'%>/<%= link_to t('message.inbox.outbox'), url_for(:controller => "user", :action => "outbox", :id => @user.display_name) %></h2>
<p><%= t'message.inbox.you_have', :new_count => @user.new_messages.size, :old_count => (@user.messages.size - @user.new_messages.size) %></p>
<%= render :partial => "message_count" %>
<% if @user.messages.size > 0 %>
<div id="messages">

View file

@ -170,7 +170,8 @@ end
url += "/full";
<% end %>
addObjectToMap(url, <%= object_zoom %>);
// IE requires Vector layers be initialised on page load, and not under deferred script conditions
Event.observe(window, 'load', function() { addObjectToMap(url, <%= object_zoom %>) });
<% end %>
map.events.register("moveend", map, updateLocation);

View file

@ -1,42 +1,106 @@
<h2><%= t 'user.account.my settings' %></h2>
<%= error_messages_for 'user' %>
<% form_for :user, @user do |f| %>
<% form_for :user, :html => { :multipart => true } do |f| %>
<table id="accountForm">
<tr><td class="fieldName"><%= t 'user.new.display name' %></td><td><%= f.text_field :display_name %></td></tr>
<tr><td class="fieldName"><%= t 'user.new.email address' %></td><td><%= f.text_field :email, {:size => 50, :maxlength => 255} %> <span class="minorNote"><%= t 'user.account.email never displayed publicly' %></span></td></tr>
<tr><td class="fieldName" style="padding-bottom:0px;"><%= t 'user.new.password' %></td><td style="padding-bottom:0px;"><%= f.password_field :pass_crypt, {:value => '', :size => 30, :maxlength => 255} %></td></tr>
<tr><td class="fieldName" style="padding-bottom:0px;"><%= t 'user.new.confirm password' %></td><td><%= f.password_field :pass_crypt_confirmation, {:value => '', :size => 30, :maxlength => 255} %></td></tr>
<tr><td class="fieldName" ><%= t 'user.account.openid.openid' %></td><td style="padding-bottom:0px;"><%= f.text_field :openid_url %> (<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>) </td></tr>
<tr>
<td class="fieldName" valign="top"><%= t 'user.account.public editing.heading' %></td>
<td>
<% if @user.data_public? %>
<%= t 'user.account.public editing.enabled' %> <span class="minorNote">(<a href="<%= t 'user.account.public editing.enabled link' %>" target="_new"><%= t 'user.account.public editing.enabled link text' %></a>)</span>
<% else %>
<%= t 'user.account.public editing.disabled' %><span class="minorNote">(<a href="#public"><%= t 'user.account.public editing.disabled link text' %></a>)</span>
<% end %>
</td>
<td class="fieldName"><%= t 'user.new.display name' %></td>
<td><%= f.text_field :display_name %></td>
</tr>
<tr>
<td class="fieldName" style="padding-bottom:0px;"><%= t 'user.account.current email address' %></td>
<td style="padding-bottom:0px;"><%= @user.email %> <span class="minorNote"><%= t 'user.account.email never displayed publicly' %></span></td>
</tr>
<tr><td class="fieldName" valign="top"><%= t 'user.account.profile description' %></td><td><%= f.text_area :description, :rows => '5', :cols => '60' %></td></tr>
<tr>
<td class="fieldName"><%= t 'user.account.new email address' %></td>
<td><%= f.text_field :new_email, {:size => 50, :maxlength => 255} %> <span class="minorNote"><%= t 'user.account.email never displayed publicly' %></span></td>
</tr>
<tr><td class="fieldName" valign="top"><%= t 'user.account.preferred languages' %></td><td><%= f.text_field :languages %></td></tr>
<tr>
<td class="fieldName" style="padding-bottom:0px;"><%= t 'user.new.password' %></td>
<td style="padding-bottom:0px;"><%= f.password_field :pass_crypt, {:value => '', :size => 30, :maxlength => 255} %></td>
</tr>
<tr id="homerow" <% unless @user.home_lat and @user.home_lon %> class="nohome" <%end%> ><td class="fieldName"><%= t 'user.account.home location' %></td><td><em class="message"><%= t 'user.account.no home location' %></em><span class="location"><%= t 'user.account.latitude' %> <%= f.text_field :home_lat, :size => 20, :id => "home_lat" %><%= t 'user.account.longitude' %><%= f.text_field :home_lon, :size => 20, :id => "home_lon" %></span></td></tr>
<tr>
<td class="fieldName"><%= t 'user.new.confirm password' %></td>
<td><%= f.password_field :pass_crypt_confirmation, {:value => '', :size => 30, :maxlength => 255} %></td>
</tr>
<tr>
<td class="fieldName" ><%= t 'user.account.openid.openid' %></td>
<td style="padding-bottom:0px;"><%= f.text_field :openid_url %> (<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>) </td>
</tr>
<tr><td></td><td>
<p><%= t 'user.account.update home location on click' %> <input type="checkbox" value="1" <% unless @user.home_lat and @user.home_lon %> checked="checked" <% end %> id="updatehome" /> </p>
<div id="map" style="border:1px solid black; position:relative; width:500px; height:400px;"></div>
</td></tr>
<tr>
<td class="fieldName" valign="top"><%= t 'user.account.public editing.heading' %></td>
<td>
<% if @user.data_public? %>
<%= t 'user.account.public editing.enabled' %> <span class="minorNote">(<a href="<%= t 'user.account.public editing.enabled link' %>" target="_new"><%= t 'user.account.public editing.enabled link text' %></a>)</span>
<% else %>
<%= t 'user.account.public editing.disabled' %> <span class="minorNote">(<a href="#public"><%= t 'user.account.public editing.disabled link text' %></a>)</span>
<% end %>
</td>
</tr>
<tr>
<td class="fieldName" valign="top"><%= t 'user.account.profile description' %></td>
<td><%= f.text_area :description, :rows => '5', :cols => '60' %></td>
</tr>
<tr>
<td class="fieldName" valign="top"><%= t 'user.account.preferred languages' %></td>
<td><%= f.text_field :languages %></td>
</tr>
<tr>
<td class="fieldName" valign="top">
<%= t 'user.account.image' %>
</td>
<td valign="top">
<% if @user.image.nil? %>
<%= hidden_field_tag "image_action", "new" %>
<%= t 'user.account.new image' %><br /><%= file_column_field "user", "image" %>
<% else %>
<table>
<tr>
<td rowspan="3" valign="top"><%= image_tag url_for_file_column(@user, "image") %></td>
<td><%= radio_button_tag "image_action", "keep", true %></td>
<td><%= t 'user.account.keep image' %></td>
</tr>
<tr>
<td><%= radio_button_tag "image_action", "delete" %></td>
<td><%= t 'user.account.delete image' %></td>
</tr>
<tr>
<td><%= radio_button_tag "image_action", "new" %></td>
<td><%= t 'user.account.replace image' %><br /><%= file_column_field "user", "image", :onchange => "$('image_action_new').checked = true" %></td>
</tr>
</table>
<% end %>
</td>
</tr>
<tr id="homerow" <% unless @user.home_lat and @user.home_lon %> class="nohome" <%end%> >
<td class="fieldName"><%= t 'user.account.home location' %></td>
<td><em class="message"><%= t 'user.account.no home location' %></em><span class="location"><%= t 'user.account.latitude' %> <%= f.text_field :home_lat, :size => 20, :id => "home_lat" %><%= t 'user.account.longitude' %><%= f.text_field :home_lon, :size => 20, :id => "home_lon" %></span></td>
</tr>
<tr>
<td></td>
<td>
<p><%= t 'user.account.update home location on click' %> <input type="checkbox" value="1" <% unless @user.home_lat and @user.home_lon %> checked="checked" <% end %> id="updatehome" /> </p>
<div id="map" style="border:1px solid black; position:relative; width:500px; height:400px;"></div>
</td>
</tr>
<tr><td></td><td align=right><br/><%= submit_tag t('user.account.save changes button') %></td></tr>
<tr>
<td></td>
<td align=right><br/><%= submit_tag t('user.account.save changes button') %></td>
</tr>
</table>
<br/>
<% end %>
<%= render :partial => 'friend_map' %>
<% unless @user.data_public? %>
<a name="public"></a>
<h2><%= t 'user.account.public editing note.heading' %></h2>

View file

@ -6,16 +6,12 @@
<%= hidden_field_tag('referer', h(params[:referer])) %>
<table id="loginForm">
<tr><td class="fieldName"><%= t 'user.login.email or username' %></td><td><%= text_field('user', 'email',{:size => 28, :maxlength => 255, :tabindex => 1}) %></td></tr>
<tr><td class="fieldName"><%= t 'user.login.password' %></td><td><%= password_field('user', 'password',{:size => 28, :maxlength => 255, :tabindex => 2}) %> <span class="minorNote">(<%= link_to t('user.login.lost password link'), :controller => 'user', :action => 'lost_password' %>)</span></td></tr>
<tr><td colspan="2">&nbsp;<!--vertical spacer--></td></tr>
<tr><td></td><td align="right"><%= submit_tag t('user.login.login_button'), :tabindex => 3 %></td></tr>
<tr><td colspan = "3"><h4><%= t 'user.login.alternatively' %></h4></td></tr>
<tr><td class="fieldName"><%= t 'user.login.password' %></td><td><%= password_field('user', 'password',{:size => 28, :maxlength => 255, :tabindex => 2}) %></td><td> <span class="minorNote">(<%= link_to t('user.login.lost password link'), :controller => 'user', :action => 'lost_password' %>)</span></td></tr>
<tr><td colspan = "3"><h4><I><%= t 'user.login.alternatively' %></I></h4></td></tr>
<tr><td class="fieldName"><%= t 'user.login.openid' %></td><td><%= text_field('user', 'openid_url',{:size => 28, :maxlength => 255, :tabindex => 3}) %></td><td> <span class="minorNote">(<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>)</span></td></tr>
<tr><td colspan="2"><%= t 'user.login.openid description' %> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>)</td></tr>
<tr><td class="fieldName"><%= t 'user.login.openid' %></td><td><%= text_field('user', 'openid_url',{:size => 28, :maxlength => 255, :tabindex => 3}) %></td></tr>
<tr><td colspan="2">&nbsp;<!--vertical spacer--></td></tr>
<tr><td></td><td align="right"><%= submit_tag t('user.login.login_button'), :tabindex => 3 %></td></tr>
<tr><td colspan="2">&nbsp;<!--vertical spacer--></td></tr>
<tr><td colspan="2">&nbsp;<!--vertical spacer--></td></tr>
<tr><td class="fieldName"><label for="remember_me">Remember me:</label></td><td><%= check_box_tag "remember_me", "yes", false, :tabindex => 3 %></td><td align=right><%= submit_tag t('user.login.login_button'), :tabindex => 3 %></td></tr>
</table>
<% end %>

View file

@ -1,3 +1,6 @@
<% if @this_user.image %>
<%= image_tag url_for_file_column(@this_user, "image"), :align => "right", :float => "left" %>
<% end %>
<h2><%= h(@this_user.display_name) %>
<% UserRole::ALL_ROLES.each do |role| %>
<% if @user and @user.administrator? %>
@ -64,23 +67,6 @@
<p><b><%= t 'user.view.created from' %></b> <%= @this_user.creation_ip %></p>
<% end %>
<h3><%= t 'user.view.user image heading' %></h3>
<% if @this_user.image %>
<%= image_tag url_for_file_column(@this_user, "image") %>
<% if @user and @this_user.id == @user.id %>
<%= button_to t('user.view.delete image'), :action => 'delete_image' %>
<% end %>
<% end %>
<br />
<% if @user and @this_user.id == @user.id %>
<%= t 'user.view.upload an image' %><br />
<%= form_tag({:action=>'upload_image'}, :multipart => true)%>
<%= file_column_field 'user', 'image' %>
<%= submit_tag t('user.view.add image') %>
</form>
<% end %>
<h3><%= t 'user.view.description' %></h3>
<div id="description"><%= htmlize(@this_user.description) %></div>
@ -158,7 +144,5 @@
<br/>
<br/>
<% if @user and @this_user.id == @user.id %>
<%= link_to t('user.view.change your settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %>
<br/><br/>
<%= link_to t('user.view.my_oauth_details'), :controller => 'oauth_clients', :action => 'index' %>
<% end %>

View file

@ -46,16 +46,19 @@ include_shell "lighttpd-host-blocks.sh"
#
# Block some troublesome robots
#
$HTTP["useragent"] =~ "msnbot" { url.access-deny = ("") }
#$HTTP["useragent"] =~ "msnbot" { url.access-deny = ("") }
$HTTP["useragent"] =~ "Twiceler" { url.access-deny = ("") }
$HTTP["useragent"] =~ "Baiduspider" { url.access-deny = ("") }
$HTTP["useragent"] =~ "Sosospider+" { url.access-deny = ("") }
#$HTTP["useragent"] =~ "Yahoo! Slurp" { url.access-deny = ("") }
$HTTP["useragent"] =~ "Yeti" { url.access-deny = ("") }
#$HTTP["useragent"] =~ "Googlebot" { url.access-deny = ("") }
$HTTP["useragent"] =~ "The Hare and the Hedgeho" { url.access-deny = ("") }
#
# Rule to block tilesAtHome when somebody decides to queue vast
# number of tiles for rerendering
# Block tilesAtHome
#
#$HTTP["useragent"] == "tilesAtHome" { url.access-deny = ("") }
$HTTP["useragent"] =~ "tilesAtHome" { url.access-deny = ("") }
#
# Block JOSM revisions 1722-1727 as they have a serious bug that causes
@ -65,11 +68,6 @@ $HTTP["useragent"] =~ "^JOSM/[0-9]+\.[0-9]+ \(172[234567] " {
url.access-deny = ("")
}
#
# Limit connections to 20 per IP address
#
evasive.max-conns-per-ip = 20
#
# Setup MIME type mapping
#
@ -153,13 +151,13 @@ server.document-root = "/home/rails/public"
#
# Send everything else to the appropriate FastCGI server
#
$HTTP["useragent"] =~ "^tilesAtHome" {
server.error-handler-404 = "/dispatch.tah"
}
else $HTTP["url"] =~ "^/trace/[0-9]+/data$" {
$HTTP["url"] =~ "^/trace/[0-9]+/data$" {
server.error-handler-404 = "/dispatch.bulkapi"
}
else $HTTP["url"] =~ "^/api/0\.6/(map|trackpoints|amf|amf/read|swf/trackpoints|changeset/[0-9]+/(upload|download))$" {
else $HTTP["url"] =~ "^/api/0\.6/map$" {
server.error-handler-404 = "/dispatch.map"
}
else $HTTP["url"] =~ "^/api/0\.6/(trackpoints|amf|amf/read|swf/trackpoints|changeset/[0-9]+/(upload|download))$" {
server.error-handler-404 = "/dispatch.bulkapi"
}
else $HTTP["url"] =~ "^/api/0\.6/.*/(full|history|search|ways)$" {
@ -171,9 +169,6 @@ else $HTTP["url"] =~ "^/api/0\.6/" {
else $HTTP["url"] =~ "^/api/0\.[0-9]+/" {
url.access-deny = ("")
}
else $HTTP["url"] =~ "^/geocoder/(search|description)_osm_namefinder$" {
server.error-handler-404 = "/dispatch.namefinder"
}
else $HTTP["url"] =~ "^/geocoder/(search|description)_geonames$" {
server.error-handler-404 = "/dispatch.geonames"
}
@ -211,9 +206,7 @@ fastcgi.server = (
( "host" => "127.0.0.1", "port" => 8022, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8023, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8024, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8025, "check-local" => "disable" )
),
".namefinder" => (
( "host" => "127.0.0.1", "port" => 8025, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8026, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8027, "check-local" => "disable" ),
( "host" => "127.0.0.1", "port" => 8028, "check-local" => "disable" ),
@ -276,10 +269,13 @@ fastcgi.server = (
( "host" => "10.0.0.10", "port" => 8010, "check-local" => "disable" ),
( "host" => "10.0.0.11", "port" => 8010, "check-local" => "disable" ),
( "host" => "10.0.0.12", "port" => 8010, "check-local" => "disable" ),
),
".tah" => (
( "host" => "10.0.0.10", "port" => 8011, "check-local" => "disable" ),
( "host" => "10.0.0.11", "port" => 8011, "check-local" => "disable" ),
( "host" => "10.0.0.12", "port" => 8011, "check-local" => "disable" )
),
".map" => (
( "host" => "10.0.0.10", "port" => 9000, "check-local" => "disable" ),
( "host" => "10.0.0.11", "port" => 9000, "check-local" => "disable" ),
( "host" => "10.0.0.12", "port" => 9000, "check-local" => "disable" )
)
)

View file

@ -276,7 +276,7 @@ af:
login: Teken in
login_to_leave_a_comment: U moet eers {{login_link}} alvorens u kommentaar kan lewer
save_button: Stoor
title: Gebruikersdagboeke | {{user}}
title: "{{user}} se dagboek | {{title}}"
user_title: Dagboek van {{user}}
export:
start:
@ -748,7 +748,7 @@ af:
zero: U inboks bevat geen ongelees boodskappe nie
intro_1: OpenStreetMap is 'n vry bewerkbare kaart van die hele wêreld. Dit word deur mense soos u geskep.
intro_2: Met OpenStreetMap kan u geografiese data van die hele aarde sien, wysig en gebruik.
intro_3: OpenStreetMap se webwerf word deur {{ucl}} en {{bytemark}} ondersteun.
intro_3: OpenStreetMap se webwerf word ondersteun deur {{ucl}} en {{bytemark}}. Ander ondersteuners word by {{partners}} gelys.
log_in: Teken in
log_in_tooltip: Teken aan met 'n bestaande rekening
logo:

View file

@ -343,7 +343,7 @@ ar:
login: سجّل دخول
login_to_leave_a_comment: "{{login_link}} لترك تعليق"
save_button: احفظ
title: يوميات المستخدمين | {{user}}
title: يوميات {{user}} | {{title}}
user_title: يومية {{user}}
export:
start:
@ -884,7 +884,8 @@ ar:
zero: صندوق بريدك لا يحوي رسائل غير مقروءة
intro_1: خريطة الشارع المفتوحة هي خريطة للعالم كله قابلة للتحرير حرة ومجانية. قام بإنشائها أشخاص مثلك.
intro_2: خريطة الشارع المفتوحة تسمح لك بعرض وتعديل واستخدام البيانات الجغرافية بطريقة تعاونية من أي مكان على وجه الأرض.
intro_3: تفضل باستضافة خريطة الشارع المفتوحة كلًا من {{ucl}} و {{bytemark}}.
intro_3: تفضل باستضافة خريطة الشارع المفتوحة كلًا من {{ucl}} و {{bytemark}}. داعمو المشروع الآخرون مسردون في {{partners}}.
intro_3_partners: الويكي
license:
title: بيانات خريطة الشارع المفتوحة مرخصة تحت رخصة المشاع الإبداعي، النسبة، نسخة 2.0
log_in: دخول
@ -1322,6 +1323,7 @@ ar:
trackable: تعقبي (يظهر كمجهول الهوية ونقاط مرتبة زمنيًا)
user:
account:
current email address: "عنوان البريد الإلكرتروني الحالي:"
email never displayed publicly: (لا يظهر علنًا)
flash update success: تم تحديث معلومات المستخدم بنجاح.
flash update success confirm needed: تم تحديث معلومات المستخدم بنجاح. تحقق من بريدك الإلكتروني لمذكرة تأكيد العنوان الإلكتروني الجديد.
@ -1330,6 +1332,7 @@ ar:
longitude: "خط الطول:"
make edits public button: اجعل جميع تعديلاتي عامة
my settings: إعداداتي
new email address: "عنوان البريد الإلكتروني الجديد:"
no home location: لم تدخل موقع منزلك.
preferred languages: "اللغات المفضّلة:"
profile description: "وصف الملف الشخصي:"

View file

@ -101,6 +101,7 @@ ca:
prev_tooltip: Conjunt de canvis anterior
user:
name_tooltip: Visualitza les edicions feter per {{user}}
prev_tooltip: Edició anterior per l'usuari {{user}}
common_details:
changeset_comment: "Comentari:"
edited_at: "Editat:"
@ -178,6 +179,7 @@ ca:
load_data: Carrega dades
loading: S'està carregant...
object_list:
api: Obté aquesta àrea mitjançant l'API
back: Mostra llista d'objectes
details: Detalls
heading: Llista d'objectes
@ -195,6 +197,7 @@ ca:
private_user: usuari privat
show_history: Mostra l'historial
wait: Espereu...
zoom_or_select: Ampliar o seleccionar una àrea del mapa per veure
tag_details:
tags: "Etiquetes:"
timeout:
@ -247,8 +250,10 @@ ca:
confirm: Confirmar
edit:
language: Idioma
latitude: "Latitud:"
longitude: "Longitud:"
save_button: Guardar
subject: "Assumpte:"
view:
login: Accés
save_button: Desa
@ -257,6 +262,7 @@ ca:
export_button: Exporta
export_details: Les dades l'OpenStreetMap són publicades sota el termes de la <a href="http://creativecommons.org/licenses/by-sa/2.0/">llicència Creative Commons Attribution-ShareAlike 2.0</a>.
format: Format
image_size: Mida de la imatge
latitude: "Lat:"
licence: Llicència
longitude: "Lon:"
@ -283,6 +289,17 @@ ca:
south_east: sud-est
south_west: sud-oest
west: oest
results:
more_results: Més resultats
no_results: No hi ha resultats
search:
title:
ca_postcode: Resultats de <a href="http://geocoder.ca/">Geocoder.CA</a>
latlon: Resultats <a href="http://openstreetmap.org/">propis</a>
osm_namefinder: Resultats de <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>
osm_nominatim: Resultats de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap nominatim</a>
uk_postcode: Resultats de <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>
us_postcode: Resultats de <a href="http://geocoder.us/">Geocoder.us</a>
search_osm_namefinder:
suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} de {{parentname}})"
suffix_place: ", {{distance}} {{direction}} de {{placename}}"
@ -290,12 +307,16 @@ ca:
prefix:
amenity:
airport: Aeroport
atm: Caixer automàtic
auditorium: Auditori
bank: Banc
bar: Bar
brothel: Prostíbul
bureau_de_change: Oficina de canvi
bus_station: Estació d'autobusos
cafe: Cafè
car_rental: Lloguer de cotxes
casino: Casino
cinema: Cinema
club: Club
courthouse: Jutjat
@ -304,8 +325,12 @@ ca:
drinking_water: Aigua potable
driving_school: Autoescola
embassy: Ambaixada
emergency_phone: Telèfon d'emergència
fire_station: Parc de bombers
fountain: Font
fuel: Gasolinera
grave_yard: Cementiri
health_centre: Centre de Salut
hospital: Hospital
hotel: Hotel
ice_cream: Gelat
@ -318,8 +343,11 @@ ca:
place_of_worship: Lloc de culte
post_office: Oficina de correus
prison: Presó
public_building: Edifici públic
recycling: Punt de reciclatge
restaurant: Restaurant
sauna: Sauna
school: Escola
shop: Botiga
social_club: Club social
supermarket: Supermercat
@ -331,31 +359,73 @@ ca:
wifi: Accés a internet WiFi
youth_centre: Centre juvenil
building:
apartments: Bloc d'apartaments
chapel: Capella
church: Església
city_hall: Ajuntament
commercial: Edifici comercial
faculty: Edifici facultatiu
flats: Pisos
garage: Garatge
hospital: Edifici hospitalari
hotel: Hotel
house: Casa
industrial: Edifici industrial
public: Edifici públic
school: Edifici escolar
stadium: Estadi
store: Magatzem
tower: Torre
train_station: Estació de tren
university: Edifici universitari
"yes": Edifici
highway:
bus_stop: Parada d'autobús
cycleway: Ruta per a bicicletes
emergency_access_point: Accés d'emergència
footway: Sendera
gate: Porta
primary_link: Carretera principal
road: Carretera
secondary: Carretera secundària
secondary_link: Carretera secundària
steps: Graons
stile: Escala per a travessar reixats
tertiary: Carretera terciària
trail: Sendera
unclassified: Carretera sense classificar
historic:
archaeological_site: Lloc arqueològic
battlefield: Camp de batalla
building: Edifici
castle: Castell
church: Església
house: Casa
icon: Icona
memorial: Memorial
mine: Mina
monument: Monument
museum: Museu
ruins: Ruïnes
tower: Torre
landuse:
cemetery: Cementiri
commercial: Zona comercial
farm: Granja
forest: Bosc
industrial: Zona industrial
mine: Mina
mountain: Muntanya
park: Parc
plaza: Plaça
quarry: Pedrera
residential: Àrea residencial
wetland: Aiguamoll
wood: Fusta
leisure:
fishing: Àrea de pesca
garden: Jardí
golf_course: Camp de golf
ice_rink: Pista de patinatge sobre gel
marina: Port esportiu
miniature_golf: Minigolf
@ -368,17 +438,33 @@ ca:
bay: Badia
beach: Platja
cape: Cap
cave_entrance: Entrada a cova
channel: Canal
cliff: Cingle
coastline: Litoral
crater: Cràter
fjord: Fiord
geyser: Guèiser
glacier: Glacera
hill: Pujol
island: Illa
moor: Amarratge
mud: Llot
peak: Pic
point: Punt
reef: Escull
river: Riu
rock: Roca
scree: Pedregar
shoal: Banc
spring: Deu
tree: Arbre
valley: Vall
volcano: Volcà
water: Aigua
wetland: Aiguamoll
wetlands: Aiguamolls
wood: Bosc
place:
airport: Aeroport
city: Ciutat
@ -396,14 +482,23 @@ ca:
subdivision: Subdivisió
suburb: Suburbi
town: Poble
railway:
level_crossing: Pas a nivell
monorail: Monorail
subway: Estació de metro
tram: Tramvia
tram_stop: Parada de tramvia
shop:
bakery: Fleca
books: Llibreria
butcher: Carnisseria
car_repair: Reparació d'automòbils
chemist: Farmàcia
fish: Peixateria
florist: Floristeria
hairdresser: Perruqueria o barberia
jewelry: Joieria
laundry: Bugaderia
market: Mercat
shoes: Sabateria
supermarket: Supermercat
@ -414,6 +509,7 @@ ca:
bed_and_breakfast: Llist i esmorzar (B&B)
chalet: Xalet
guest_house: Alberg
hostel: Hostal
hotel: Hotel
information: Informació
motel: Motel
@ -424,7 +520,13 @@ ca:
viewpoint: Mirador
zoo: Zoològic
waterway:
ditch: Séquia
mooring: Amarradors
rapids: Ràpids
river: Riu
wadi: Torrent
water_point: Punt d'aigua
waterfall: Cascada
javascripts:
map:
base:
@ -435,12 +537,15 @@ ca:
export: Exporta
gps_traces: Traces de GPS
history: Historial
home: Inici
intro_1: L'OpenStreetMap és un mapa editable i lliure de tot el món. Està fet per gent com vós.
logo:
alt_text: logotip de l'OpenStreetMap
shop: Botiga
user_diaries: DIaris de usuari
view: Veure
view_tooltip: Visualitza els mapes
welcome_user: Benvingut/da, {{user_link}}
map:
coordinates: "Coordenades:"
edit: Modifica
@ -448,27 +553,37 @@ ca:
message:
inbox:
date: Data
from: De
title: Safata d'entrada
message_summary:
delete_button: Suprimeix
read_button: Marca com a llegit
reply_button: Respon
unread_button: Marca com a no llegit
new:
back_to_inbox: Tornar a la safata d'entrada
send_button: Envia
subject: Assumpte
outbox:
date: Data
my_inbox: El meu {{inbox_link}}
subject: Assumpte
to: A
read:
date: Data
from: De
reply_button: Respon
subject: Assumpte
to: Per a
sent_message_summary:
delete_button: Suprimeix
notifier:
diary_comment_notification:
hi: Hola {{to_user}},
email_confirm:
subject: "[OpenStreetMap] Confirmeu l'adreça de correu"
email_confirm_html:
greeting: Hi,
greeting: Hola,
email_confirm_plain:
greeting: Hola,
gpx_notification:
@ -479,31 +594,52 @@ ca:
greeting: Hola,
message_notification:
hi: Hola {{to_user}},
signup_confirm_plain:
more_videos: "Hi ha més videos aquí:"
oauth_clients:
edit:
submit: Modificació
form:
name: Nom
required: Requerit
site:
edit:
user_page_link: pàgina d'usuari
index:
permalink: Enllaç permanent
shortlink: Enllaç curt
key:
table:
entry:
cemetery: Cementiri
centre: Centre esportiu
farm: Granja
forest: Bosc
golf: Camp de golf
industrial: Zona industrial
lake:
- Llac
military: Àrea militar
private: Accés privat
rail: Ferrocarril
reserve: Reserva natural
resident: Zona residencial
school:
- Escola
- Universitat
secondary: Carretera secundària
station: Estació de tren
subway: Metro
summit:
1: pic
wood: Fusta
search:
search: Cerca
submit_text: Vés-hi
where_am_i: On sóc?
sidebar:
close: Tanca
search_results: Resultats de la cerca
trace:
create:
upload_trace: Pujar traça de GPS
@ -512,6 +648,7 @@ ca:
download: descàrrega
edit: modificació
filename: "Nom del fitxer:"
heading: Editant traça {{name}}
map: mapa
owner: "Propietari:"
points: "Punts:"
@ -522,11 +659,13 @@ ca:
title: Editant traça {{name}}
uploaded_at: "Pujat a:"
visibility: "Visibilitat:"
visibility_help: Què vol dir això?
list:
tagged_with: " etiquetat amb {{tags}}"
your_traces: Les teves traces GPS
no_such_user:
heading: No existeix l'usuari {{user}}
title: No existeix l`usuari
trace:
ago: fa {{time_in_words_ago}}
by: en
@ -541,12 +680,15 @@ ca:
private: PRIVAT
public: PUBLIC
trace_details: Veure detalls de la traça
trackable: RASTREABLE
view_map: Visualitza el mapa
trace_form:
description: Descripció
help: Ajuda
tags: Etiquetes
tags_help: separat per comas
upload_button: Pujar
upload_gpx: Carregar arxiu GPX
visibility: Visibilitat
visibility_help: què significa això?
trace_header:
@ -557,7 +699,9 @@ ca:
trace_paging_nav:
next: Següent &raquo;
previous: "&laquo; Previ"
showing_page: Mostrant pàgina {{page}}
view:
delete_track: Elimina aquesta traça
description: "Descripció:"
download: baixada
edit: modificació
@ -568,7 +712,9 @@ ca:
owner: "Propietari:"
pending: PENDENT
points: "Punts:"
start_coordinates: "coordenada de inici:"
tags: "Etiquetes:"
trace_not_found: No s'ha trobat la traça!
uploaded: "Pujat el:"
visibility: "Visibilitat:"
user:
@ -576,9 +722,12 @@ ca:
email never displayed publicly: (no es mostrarà mai en públic)
latitude: "Latitud:"
longitude: "Longitud:"
my settings: La meva configuració
preferred languages: "Llengües preferents:"
public editing:
enabled link text: què és això?
public editing note:
heading: Edició pública
return to profile: Torna al perfil
save changes button: Desa els canvis
title: Edita el compte
@ -588,6 +737,8 @@ ca:
button: Confirmar
friend_map:
your location: La teva situació
go_public:
flash success: Ara totes les teves edicions són públiques i ja estàs autoritzat per a editar
login:
create_account: crea un compte
email or username: "Adreça de correu o usuari:"
@ -600,6 +751,8 @@ ca:
lost_password:
email address: "Adreça de correu electrònic:"
heading: Heu oblidat la contrasenya?
new password button: Restablir contrasenya
title: contrasenya perduda
make_friend:
success: "{{name}} ara és el vostre amic."
new:
@ -611,8 +764,10 @@ ca:
reset_password:
confirm password: "Confirmeu la contrasenya:"
flash changed: S'ha canviat la contrasenya.
heading: Restablir la contrasenya per {{user}}
password: "Contrasenya:"
title: Reinicialitza la contrasenya
reset: Restablir contrasenya
title: Restablir la contrasenya
view:
add image: Afegeix una imatge
confirm: Confirmeu
@ -624,9 +779,11 @@ ca:
diary: diari
edits: modificacions
email address: "Adreça de correu:"
hide_user: amagar aquest usuari
my diary: el meu diari
my edits: les meves edicions
my traces: les meves traces
my_oauth_details: Veure els meus detalls de OAuth
nearby users: "Usuaris propers:"
role:
administrator: Aquest usuari és administrador
@ -649,11 +806,17 @@ ca:
confirm: N'esteu segur?
edit: Edició
show: Mostra
status: Estat
user_role:
filter:
already_has_role: L'usuari ja té un rol {{role}}.
doesnt_have_role: L'usuari no té el rol {{role}}.
not_a_role: La cadena `{{role}}' no és un rol vàlid.
not_an_administrator: Només els administradors poden realitzar l'administració de rols de usuaris, i vosté no és un administrador.
grant:
confirm: Confirmar
heading: Confirmi la concessió de rol
title: Confirmi la concessió de rol
revoke:
confirm: Confirmar
heading: Confirmar revocació de rol

View file

@ -313,7 +313,7 @@ en:
save_button: "Save"
marker_text: Diary entry location
view:
title: "Users' diaries | {{user}}"
title: "{{user}}'s diary | {{title}}"
user_title: "{{user}}'s diary"
leave_a_comment: "Leave a comment"
login_to_leave_a_comment: "{{login_link}} to leave a comment"
@ -362,6 +362,9 @@ en:
embeddable_html: "Embeddable HTML"
licence: "Licence"
export_details: 'OpenStreetMap data is licensed under the <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons Attribution-ShareAlike 2.0 license</a>.'
too_large:
heading: "Area Too Large"
body: "This area is too large to be exported as OpenStreetMap XML Data. Please zoom in or select a smaller area."
options: "Options"
format: "Format"
scale: "Scale"
@ -884,15 +887,13 @@ en:
sign_up: sign up
sign_up_tooltip: Create an account for editing
view: View
view_tooltip: View maps
view_tooltip: View the map
edit: Edit
edit_tooltip: Edit maps
history: History
history_tooltip: Changeset history
export: Export
export_tooltip: Export map data
gps_traces: GPS Traces
gps_traces_tooltip: Manage traces
gps_traces_tooltip: Manage GPS traces
user_diaries: User Diaries
user_diaries_tooltip: View user diaries
tag_line: The Free Wiki World Map
@ -1415,10 +1416,6 @@ en:
ago: "({{time_in_words_ago}} ago)"
email address: "Email address:"
created from: "Created from:"
user image heading: User image
delete image: Delete Image
upload an image: Upload an image
add image: Add Image
description: Description
user location: User location
no home location: "No home location has been set."
@ -1430,7 +1427,6 @@ en:
m away: "{{count}}m away"
nearby users: "Nearby users:"
no nearby users: "There are no users who admit to mapping nearby yet."
change your settings: change your settings
my_oauth_details: "View my OAuth details"
role:
administrator: "This user is an administrator"
@ -1456,6 +1452,8 @@ en:
account:
title: "Edit account"
my settings: My settings
current email address: "Current Email Address:"
new email address: "New Email Address:"
email never displayed publicly: "(never displayed publicly)"
openid:
openid: "OpenID:"
@ -1473,6 +1471,11 @@ en:
text: "Currently your edits are anonymous and people cannot send you messages or see your location. To show what you edited and allow people to contact you through the website, click the button below. <b>Since the 0.6 API changeover, only public users can edit map data</b>. (<a href=\"http://wiki.openstreetmap.org/wiki/Anonymous_edits\">find out why</a>).<ul><li>Your email address will not be revealed by becoming public.</li><li>This action cannot be reversed and all new users are now public by default.</li></ul>"
profile description: "Profile Description:"
preferred languages: "Preferred Languages:"
image: "Image:"
new image: "Add an image"
keep image: "Keep the current image"
delete image: "Remove the current image"
replace image: "Replace the current image"
home location: "Home Location:"
no home location: "You have not entered your home location."
latitude: "Latitude:"
@ -1625,5 +1628,9 @@ en:
overlays:
maplint: Maplint
site:
edit_tooltip: Edit the map
edit_disabled_tooltip: Zoom in to edit the map
edit_zoom_alert: You must zoom in to edit the map
history_zoom_alert: You must zoom in to see the editing history
history_tooltip: View edits for this area
history_disabled_tooltip: Zoom in to view edits for this area
history_zoom_alert: You must zoom in to view edits for this area

View file

@ -333,7 +333,7 @@ es:
login: Identifíquese
login_to_leave_a_comment: "{{login_link}} para dejar un comentario"
save_button: Guardar
title: Diarios de usuarios | {{user}}
title: Diario de {{user}} | {{title}}
user_title: Diario de {{user}}
export:
start:
@ -546,6 +546,7 @@ es:
ford: Vado
gate: Puerta
living_street: Calle residencial
minor: Carretera secundaria
motorway: Autovía
motorway_junction: Cruce de autovías
motorway_link: Enlace de autovía
@ -720,6 +721,7 @@ es:
narrow_gauge: Vía ferroviaria angosta
platform: Plataforma de tren
preserved: Vía ferroviaria preservada
spur: Ramificación de vía
station: Estación de trenes
subway: Estación de metro
subway_entrance: Entrada al metro
@ -808,7 +810,7 @@ es:
caravan_site: Camping para caravanas
chalet: Chalet
guest_house: Albergue
hostel: Hostel
hostel: Hostal
hotel: Hotel
information: Información
lean_to: Nave
@ -837,6 +839,7 @@ es:
riverbank: Ribera
stream: Arroyo
wadi: Riera
water_point: Punto de agua
waterfall: Cascada
weir: Represa
javascripts:
@ -870,7 +873,8 @@ es:
zero: Tu bandeja de entrada no tiene mensajes sin leer
intro_1: OpenStreetMap es un mapa libremente editable de todo el mundo. Está hecho por personas como usted.
intro_2: OpenStreetMap te permite ver, editar y usar información geográfica de manera colaborativa desde cualquier lugar del mundo.
intro_3: Agradecimientos al {{ucl}} y {{bytemark}} por apoyar el hospedaje de los servidores de OpenStreetMap.
intro_3: El alojamiento de OpenStreetMap es proporcionado amablemente por {{ucl}} y {{bytemark}}. Otros patrocinadores del proyecto se encuentran listados en el {{partners}}.
intro_3_partners: wiki
license:
title: Los datos de OpenStreetMap se encuentran bajo la licencia Creative Commons Attribution-Share Alike 2.0 Generic License
log_in: identificarse
@ -1309,6 +1313,7 @@ es:
trackable: Trazable (solo compartido como anonimo, puntos ordenados con marcas de tiempo)
user:
account:
current email address: "Dirección de correo electrónico actual:"
email never displayed publicly: (nunca es mostrado públicamente)
flash update success: La información del usuario se ha actualizado correctamente.
flash update success confirm needed: La información del usuario se ha actualizado correctamente. Compruebe su correo electrónico para ver una nota sobre cómo confirmar su nueva dirección de correo electrónico.
@ -1317,6 +1322,7 @@ es:
longitude: "Longitud:"
make edits public button: Hacer que todas mis ediciones sean públicas
my settings: Mis preferencias
new email address: "Nueva dirección de correo electrónico:"
no home location: No has introducido tu lugar de origen.
preferred languages: "Idiomas preferidos:"
profile description: "Descripción del perfil:"

View file

@ -14,6 +14,7 @@ eu:
language: Hizkuntza
latitude: Latitude
longitude: Longitude
title: Izenburua
friend:
friend: Lagun
message:
@ -25,6 +26,7 @@ eu:
latitude: Latitude
longitude: Longitude
name: Izena
public: Publikoa
size: Tamaina
user:
description: Deskribapen
@ -130,6 +132,7 @@ eu:
changeset:
anonymous: Anonimoa
big_area: (handia)
no_comment: (bat ere)
changeset_paging_nav:
next: Hurrengoa &raquo;
previous: "&laquo; Aurrekoa"
@ -137,6 +140,7 @@ eu:
saved_at: Noiz gordeta
diary_entry:
diary_comment:
confirm: Baieztatu
hide_link: Iruzkin hau ezkutatu
diary_entry:
comment_count:
@ -153,6 +157,8 @@ eu:
subject: "Gaia:"
use_map_link: mapa erabili
view:
leave_a_comment: Iruzkin bat utzi
login: Saioa hasi
save_button: Gorde
export:
start:
@ -278,14 +284,18 @@ eu:
church: Eliza
city_hall: Udaletxea
garage: Garajea
hospital: Ospitale erakina
hotel: Hotela
house: Etxe
industrial: Eraikin industriala
public: Eraikin publiko
school: Eskola eraikina
shop: Denda
stadium: Estadio
store: Denda
tower: Dorre
train_station: Tren Geltokia
university: Unibertsitate eraikina
"yes": Eraikina
highway:
bus_stop: Autobus-geraleku
@ -402,6 +412,7 @@ eu:
historic_station: Tren Geltoki Historikoa
light_rail: Tren Arina
monorail: Monoraila
platform: Trenbide Plataforma
station: Tren Geltokia
subway: Metro geltoki
subway_entrance: Metro Sarbidea
@ -434,8 +445,11 @@ eu:
laundry: Garbitegi
mall: Merkataritza-gunea
market: Merkatu
mobile_phone: Mugikor-denda
music: Musika-denda
newsagent: Kioskoa
optician: Optika
pet: Animalia-denda
photo: Argazki-denda
shoes: Zapatadenda
shopping_centre: Merkatal Gunea
@ -481,6 +495,7 @@ eu:
history: Historia
home: hasiera
inbox: sarrera-ontzia ({{count}})
intro_3_partners: wiki
license:
title: OpenStreetMap-eko datuak Creative Commons Aitortu-Partekatu 2.0 Generiko baimen baten mende daude.
log_in: Saioa hasi
@ -569,6 +584,8 @@ eu:
form:
name: Izena
site:
edit:
user_page_link: Lankide orria
index:
license:
license_name: Creative Commons-en Aitortu-Partekatu 2.0
@ -596,6 +613,7 @@ eu:
park: Parke
primary: Lehen mailako errepidea
rail: Trenbidea
reserve: Natura-erreserba
runway:
- Aireportuko Pista
school:
@ -725,6 +743,7 @@ eu:
creator_name: Egilea
edit: Aldatu
show: Erakutsi
status: Egoera
period:
one: ordu bat
other: "{{count}} ordu"
@ -732,6 +751,7 @@ eu:
confirm: Ziur zaude?
edit: Aldatu
show: Erakutsi
status: Egoera
user_role:
grant:
confirm: Berretsi

View file

@ -378,6 +378,7 @@ fi:
other: noin {{count}} km
zero: alle 1 km
results:
more_results: Lisää tuloksia
no_results: Mitään ei löytynyt
search:
title:
@ -465,6 +466,7 @@ fi:
veterinary: Eläinlääkäri
waste_basket: Roskakori
wifi: Langaton lähiverkko
youth_centre: Nuorisokeskus
boundary:
administrative: Hallinnollinen raja
building:
@ -489,6 +491,7 @@ fi:
"yes": Rakennus
highway:
bus_stop: Bussipysäkki
byway: Sivutie
construction: Rakenteilla oleva tie
cycleway: Pyörätie
distance_marker: Etäisyysmerkki
@ -525,7 +528,9 @@ fi:
wreck: Hylky
landuse:
cemetery: Hautausmaa
construction: Rakennustyömaa
forest: Metsä
grass: Nurmikko
industrial: Teollisuusalue
landfill: Kaatopaikka
military: Sotilasalue
@ -541,6 +546,8 @@ fi:
fishing: Kalastusalue
garden: Puutarha
golf_course: Golf-kenttä
ice_rink: Luistelurata
marina: Huvivenesatama
miniature_golf: Minigolf
park: Puisto
pitch: Urheilukenttä
@ -628,6 +635,7 @@ fi:
fish: Kalakauppa
florist: Kukkakauppa
food: Ruokakauppa
funeral_directors: Hautausurakoitsija
furniture: Huonekaluliike
gift: Lahjakauppa
hairdresser: Kampaamo
@ -645,10 +653,12 @@ fi:
shoes: Kenkäkauppa
shopping_centre: Ostoskeskus
sports: Urheilukauppa
supermarket: Supermarketti
toys: Lelukauppa
travel_agency: Matkatoimisto
video: Videokauppa
tourism:
alpine_hut: Alppimaja
artwork: Taideteos
bed_and_breakfast: Aamiaismajoitus
cabin: Mökki
@ -675,6 +685,7 @@ fi:
river: Joki
riverbank: Joki
stream: Puro
weir: Pato
javascripts:
map:
base:
@ -701,7 +712,8 @@ fi:
zero: Sinulla ei ole lukemattomia viestejä.
intro_1: OpenStreetMap on avoin ja vapaasti muokattava maailmankartta. Kuka vain voi osallistua.
intro_2: Voit selata, muokata ja käyttää yhteistyössä luotua karttatietoa kaikista maailman kolkista.
intro_3: OpenStreetMapin verkkoliikenteen tarjoavat {{ucl}} ja {{bytemark}}.
intro_3: OpenStreetMapin verkkoliikenteen tarjoavat {{ucl}} ja {{bytemark}}. Muut projektin tukijat on listattu {{partners}}.
intro_3_partners: wikissä
log_in: kirjaudu sisään
log_in_tooltip: Kirjaudu sisään tunnuksellasi
logo:
@ -952,6 +964,7 @@ fi:
search_help: "esim.: 'Munkkivuori', 'Karttatie, Oulu' tai 'post offices near Helsinki' <a href='http://wiki.openstreetmap.org/wiki/Search'>lisää esimerkkejä...</a> (englanniksi)"
submit_text: Hae
where_am_i: Nykyinen sijainti?
where_am_i_title: Määrittää nykyisen sijainnin hakukoneella
sidebar:
close: Sulje
search_results: Hakutulokset

View file

@ -337,7 +337,7 @@ fr:
login: Connectez-vous
login_to_leave_a_comment: "{{login_link}} pour ajouter un commentaire"
save_button: Enregistrer
title: Journaux des utilisateurs | {{user}}
title: Journal de {{user}} | {{title}}
user_title: Journal de {{user}}
export:
start:
@ -876,7 +876,8 @@ fr:
zero: Votre boîte aux lettres ne contient pas de messages non lus
intro_1: OpenStreetMap est une carte du monde entier librement modifiable, faite par des gens comme vous.
intro_2: OpenStreetMap vous permet de voir, modifier et utiliser des données géographiques de n'importe quel endroit dans le monde.
intro_3: OpenStreetMap est gracieusement hébergé par {{ucl}} et {{bytemark}}.
intro_3: OpenStreetMap est gracieusement hébergé par {{ucl}} et {{bytemark}}. D'autres sponsors du projet sont listés sur le {{partners}}.
intro_3_partners: wiki
license:
title: Les données OpenStreetMap sont sous licence générale Creative Commons paternité partage à lidentique 2.0
log_in: Connexion
@ -986,7 +987,7 @@ fr:
hopefully_you_2: "{{server_url}} à {{new_address}}."
friend_notification:
had_added_you: "{{user}} vous a ajouté comme ami dans OpenStreetMap."
see_their_profile: Vous pouvez voir leur profil sur {{userurl}} et les ajouter comme ami si vous le souhaitez.
see_their_profile: Vous pouvez voir son profil sur {{userurl}} et lajouter comme ami si vous le souhaitez.
subject: "[OpenStreetMap] {{user}} vous a ajouté comme ami"
gpx_notification:
and_no_tags: et sans balise.
@ -1314,6 +1315,7 @@ fr:
trackable: Pistable (partagé seulement anonymement, points ordonnés avec les dates)
user:
account:
current email address: "Adresse de courriel actuelle :"
email never displayed publicly: (jamais affiché publiquement)
flash update success: Informations sur l'utilisateur mises à jour avec succès.
flash update success confirm needed: Informations sur l'utilisateur mises à jour avec succès. Vérifiez votre boîte mail afin de valider la vérification de votre nouvelle adresse e-mail.
@ -1322,6 +1324,7 @@ fr:
longitude: "Longitude:"
make edits public button: Rendre toutes mes modifications publiques
my settings: Mes options
new email address: "Nouvelle adresse de courriel :"
no home location: Vous n'avez pas indiqué l'emplacement de votre domicile.
preferred languages: "Langues préférées :"
profile description: "Description du profil :"

View file

@ -97,6 +97,7 @@ fur:
view_history: cjale storic
node_details:
coordinates: "Coordenadis:"
part_of: "Part di:"
node_history:
download: "{{download_xml_link}} o {{view_details_link}}"
download_xml: Discjame XML
@ -116,6 +117,7 @@ fur:
view_history: cjale storic
relation_details:
members: "Membris:"
part_of: "Part di:"
relation_history:
download: "{{download_xml_link}} o {{view_details_link}}"
download_xml: Discjame XML
@ -148,6 +150,11 @@ fur:
show_history: Mostre storic
wait: Daûr a spietâ...
zoom_or_select: Ingrandìs o sielç la aree de mape che tu vuelis viodi
tag_details:
tags: "Etichetis:"
timeout:
type:
relation: relazion
way:
download: "{{download_xml_link}}, {{view_history_link}} o {{edit_link}}"
download_xml: Discjame XML
@ -168,7 +175,9 @@ fur:
still_editing: (ancjemò in cambiament)
view_changeset_details: Viôt detais dal grup di cambiaments
changeset_paging_nav:
showing_page: Daûr a mostrâ la pagjine
next: Successîf &raquo;
previous: "&laquo; Precedent"
showing_page: Daûr a mostrâ la pagjine {{page}}
changesets:
area: Aree
comment: Coment
@ -191,12 +200,16 @@ fur:
diary_entry:
diary_comment:
comment_from: Coment di {{link_user}} ai {{comment_created_at}}
confirm: Conferme
hide_link: Plate chest coment
diary_entry:
comment_count:
one: 1 coment
other: "{{count}} coments"
comment_link: Scrîf un coment
confirm: Conferme
edit_link: Cambie cheste vôs
hide_link: Plate cheste vôs
posted_by: Scrit di {{link_user}} ai {{created}} par {{language_link}}
reply_link: Rispuint a cheste vôs
edit:
@ -237,7 +250,7 @@ fur:
login: Jentre
login_to_leave_a_comment: "{{login_link}} par lassâ un coment"
save_button: Salve
title: Diaris dai utents | {{user}}
title: Diari di {{user}} | {{title}}
user_title: Diari di {{user}}
export:
start:
@ -261,6 +274,7 @@ fur:
start_rjs:
add_marker: Zonte un segnalut ae mape
change_marker: Cambie la posizion dal segnalut
click_add_marker: Frache su la mape par zontâ un segn
export: Espuarte
manually_select: Sielç a man une aree divierse
view_larger_map: Viôt une mape plui grande
@ -269,6 +283,7 @@ fur:
title:
geonames: Lûc cjolt di <a href="http://www.geonames.org/">GeoNames</a>
osm_namefinder: "{{types}} dal <a href=\"http://gazetteer.openstreetmap.org/namefinder/\">OpenStreetMap Namefinder</a>"
osm_nominatim: Lûc di <a href="http://nominatim.openstreetmap.org/">OpenStreetMap Nominatim</a>
types:
cities: Citâts
places: Puescj
@ -289,6 +304,7 @@ fur:
other: cirche {{count}}km
zero: mancul di 1km
results:
more_results: Altris risultâts
no_results: Nissun risultât
search:
title:
@ -296,10 +312,128 @@ fur:
geonames: Risultâts cjolts di <a href="http://www.geonames.org/">GeoNames</a>
latlon: Risultâts cjolts dal <a href="http://openstreetmap.org/">sît interni</a>
osm_namefinder: Risultâts cjolts di <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>
osm_nominatim: Risultâts di <a href="http://nominatim.openstreetmap.org/">OpenStreetMap Nominatim</a>
uk_postcode: Risultâts cjolts di <a href="http://www.npemap.org.uk/">NPEMap / FreeThe Postcode</a>
us_postcode: Risultâts cjolts di <a href="http://geocoder.us/">Geocoder.us</a>
search_osm_namefinder:
suffix_parent: "{{suffix}} ({{parentdistance}} {{parentdirection}} di {{parentname}})"
suffix_place: ", {{distance}} a {{direction}} di {{placename}}"
search_osm_nominatim:
prefix:
amenity:
airport: Aeropuart
atm: Bancomat
auditorium: Auditori
bank: Bancje
bureau_de_change: Ufizi di cambi
bus_station: Stazion des corieris
car_wash: Lavaç machinis
cinema: Cine
clinic: Cliniche
dentist: Dentist
doctors: Dotôrs
drinking_water: Aghe potabil
driving_school: Scuele guide
embassy: Ambassade
emergency_phone: Telefon di emergjence
fire_station: Stazion dai pompîrs
fountain: Fontane
fuel: Stazion di riforniment
hospital: Ospedâl
library: Biblioteche
market: Marcjât
park: Parc
pharmacy: Farmacie
post_office: Pueste
restaurant: Ristorant
sauna: Saune
school: Scuele
telephone: Telefon public
theatre: Teatri
townhall: Municipi
university: Universitât
youth_centre: Centri zovanîl
boundary:
administrative: Confin aministratîf
building:
chapel: Capele
church: Glesie
house: Cjase
stadium: Stadi
train_station: Stazion de ferade
university: Edifici universitari
highway:
bus_stop: Fermade autobus
emergency_access_point: Pont di acès di emergjence
raceway: Circuit
steps: Scjalis
historic:
archaeological_site: Sît archeologic
castle: Cjiscjel
church: Glesie
house: Cjase
monument: Monument
museum: Museu
tower: Tor
landuse:
cemetery: Simiteri
commercial: Aree comerciâl
industrial: Aree industriâl
military: Aree militâr
nature_reserve: Riserve naturâl
park: Parc
residential: Aree residenziâl
leisure:
garden: Zardin
golf_course: Troi di golf
miniature_golf: Minigolf
park: Parc
sports_centre: Centri sportîf
swimming_pool: Pissine
natural:
bay: Rade
channel: Canâl
crater: Cratêr
glacier: Glaçâr
island: Isule
point: Pont
tree: Arbul
valley: Val
volcano: Vulcan
place:
airport: Aeropuart
city: Citât
country: Paîs
county: Contee
hamlet: Frazion
house: Cjase
houses: Cjasis sparniçadis
island: Isule
locality: Localitât
postcode: Codis postâl
region: Regjon
sea: Mâr
state: Stât
town: Citadine
village: Vilaç
railway:
abandoned: Ferade bandonade
construction: Ferade in costruzion
shop:
bakery: Pancôr
books: Librerie
butcher: Becjarie
car_repair: Riparazion di machinis
supermarket: Supermarcjât
toys: Negozi di zugatui
tourism:
museum: Museu
valley: Val
viewpoint: Pont panoramic
zoo: Zoo
waterway:
canal: Canâl
river: Flum
javascripts:
map:
base:
@ -330,7 +464,8 @@ fur:
zero: Nol è nissun messaç di lei te pueste in jentrade
intro_1: OpenStreetMap al è une mape libare e modificabile dal marimont. Al è fat di int come te.
intro_2: OpenStreetMap al permet a ogni persone su la Tiere di viodi, cambiâ e doprâ i dâts gjeografics intune forme colaborative.
intro_3: L'hosting di OpenStreetMap al è sostignût cun gjenerositât di {{ucl}} e {{bytemark}}.
intro_3: "L'hosting di OpenStreetMap al è sostignût cun gjenerositât di {{ucl}} e {{bytemark}}.\nAltris sostegnidôrs a son elencâts te {{partners}}."
intro_3_partners: vichi
license:
title: I dâts di OpenStreetMap a son dâts fûr sot de Creative Commons Attribution-Share Alike 2.0 Generic License
log_in: jentre
@ -367,6 +502,9 @@ fur:
inbox:
date: Date
from: Di
my_inbox: I miei messaç in jentrade
no_messages_yet: No tu âs ancjemò nissun messaç. Parcè no tu contatis cualchidun de {{people_mapping_nearby_link}}?
outbox: in jessude
people_mapping_nearby: int che e je daûr a mapâ dongje di te
subject: Sogjet
title: In jentrade
@ -380,6 +518,7 @@ fur:
reply_button: Rispuint
unread_button: Segne come no let
new:
back_to_inbox: Torne ai messaçs in jentrade
body: Cuarp
message_sent: Messaç mandât
send_button: Mande
@ -388,9 +527,18 @@ fur:
title: Mande messaç
outbox:
date: Date
inbox: in jentrade
my_inbox: Messaçs {{inbox_link}}
no_sent_messages: No tu âs ancjemò mandât nissun messaç. Parcè no tu contatis cualchidun de {{people_mapping_nearby_link}}?
outbox: in jessude
people_mapping_nearby: int che e je daûr a mapâ dongje di te
subject: Sogjet
title: In jessude
to: A
you_have_sent_messages: Tu âs {{count}} messaçs inviâts
read:
back_to_inbox: Torne ai messaçs in jentrade
back_to_outbox: Torne ai messaçs in jessude
date: Date
from: Di
reading_your_messages: Leture dai tiei messaçs
@ -402,12 +550,26 @@ fur:
sent_message_summary:
delete_button: Elimine
notifier:
diary_comment_notification:
hi: Mandi {{to_user}},
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.
subject: "[OpenStreetMap] {{user}} ti à zontât come amì su OpenStreetMap."
gpx_notification:
and_no_tags: e nissune etichete.
and_the_tags: "e lis etichetis ca sot:"
greeting: Mandi,
success:
loaded_successfully: al sedi stât cjamât cun sucès, cun {{trace_points}} suntun totât di {{possible_points}} ponts pussibii.
subject: "[OpenStreetMap] Impuartazion GPX completade cun sucès"
your_gpx_file: Al somee che il to file GPX
message_notification:
hi: Mandi {{to_user}},
signup_confirm:
subject: "[OpenStreetMap] Conferme la tô direzion di pueste eletroniche"
signup_confirm_html:
introductory_video: Tu puedis viodi un {{introductory_video_link}}.
oauth_clients:
@ -416,8 +578,12 @@ fur:
site:
edit:
flash_player_required: Ti covente un riprodutôr Flash par doprâ Potlatch, l'editôr Flash di OpenStreetMap. Tu puedis <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">discjamâ il Flash Player di Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">E je cualchi altre opzion</a> par lavorâ su OpenStreetMap.
potlatch_unsaved_changes: Tu âs cambiaments no salvâts. (Par salvâ in Potlatch, tu varessis di deselezionâ il percors o il pont atuâl, se tu stâs lavorant in modalitât live, o fracâ su Salve se tu viodis un boton Salve.)
user_page_link: pagjine dal utent
index:
js_1: Tu stâs doprant un sgarfadôr che nol supuarte JavaScript o ben JavaScript al è stât disativât.
js_2: OpenStreetMap al dopre JavaScript par mostrâ la sô mape.
js_3: Tu puedis provâ il <a href="http://tah.openstreetmap.org/Browse/">broser static di tiles Tiles@Home</a> se no tu rivis a ativâ JavaScript.
license:
license_name: Creative Commons Attribution-Share Alike 2.0
notice: Dât fûr sot de licence {{license_name}} di {{project_name}} e i siei utents che a àn contribuît.
@ -452,12 +618,14 @@ fur:
tram:
- tram
- tram
unsurfaced: Strade blancje
heading: Leiende par z{{zoom_level}}
search:
search: Cîr
search_help: "esemplis: 'Cividât', 'Via Udine, Cormons', 'CB2 5AQ', o se no 'post offices near Gorizia' <a href='http://wiki.openstreetmap.org/wiki/Search'>altris esemplis...</a>"
submit_text: Va
where_am_i: Dulà soio?
where_am_i_title: Descrîf il lûc atuâl doprant il motôr di ricercje
sidebar:
close: Siere
search_results: Risultâts de ricercje
@ -476,6 +644,7 @@ fur:
points: "Ponts:"
save_button: Salve cambiaments
start_coord: "Coordenadis iniziâls:"
tags: "Etichetis:"
tags_help: separâts di virgulis
title: Cambiant il percors {{name}}
uploaded_at: "Cjamât ai:"
@ -484,6 +653,7 @@ fur:
list:
public_traces: Percors GPS publics
public_traces_from: Percors GPS publics di {{user}}
tagged_with: " etichetât cun {{tags}}"
your_traces: Percors GPS personâi
trace:
ago: "{{time_in_words_ago}} fa"
@ -502,6 +672,7 @@ fur:
trace_form:
description: "Descrizion:"
help: Jutori
tags: Etichetis
tags_help: separâts di virgulis
upload_button: Cjame
upload_gpx: "Cjame file GPX:"
@ -510,6 +681,12 @@ fur:
see_all_traces: Cjale ducj i percors
see_just_your_traces: Cjale dome i tiei percors o cjame un percors
see_your_traces: Cjale ducj i miei percors
trace_optionals:
tags: Etichetis
trace_paging_nav:
next: Sucessîf &raquo;
previous: "&laquo; Precedent"
showing_page: Daûr a mostrâ la pagjine {{page}}
view:
delete_track: Elimine chest percors
description: "Descrizion:"
@ -524,11 +701,16 @@ fur:
pending: IN SPIETE
points: "Ponts:"
start_coordinates: "Coordenadis iniziâls:"
tags: "Etichetis:"
title: Viodint il percors {{name}}
trace_not_found: Percors no cjatât!
uploaded: "Cjamât ai:"
visibility: "Visibilitât:"
user:
account:
email never displayed publicly: (mai mostrade in public)
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:"
latitude: "Latitudin:"
longitude: "Longjitudin:"
@ -539,6 +721,7 @@ fur:
profile description: "Descrizion dal profîl:"
public editing:
disabled link text: parcè no puedio cambiâ?
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: ce isal chest?
return to profile: Torne al profîl
save changes button: Salve cambiaments
@ -584,6 +767,9 @@ fur:
body: Nol esist un utent di non {{user}}. Controle par plasê la grafie o che tu vedis seguît il leam just.
heading: L'utent {{user}} nol esist
title: Utent no cjatât
remove_friend:
not_a_friend: "{{name}} nol è un dai tiei amîs."
success: "{{name}} al è stât gjavât dai tiei amîs."
set_home:
flash success: Lûc iniziâl salvât cun sucès
view:
@ -591,9 +777,12 @@ fur:
add image: Zonte figure
ago: ({{time_in_words_ago}} fa)
block_history: viôt i blocs ricevûts
blocks by me: blocs aplicâts di me
blocks on me: blocs su di me
change your settings: cambie lis tôs impostazions
confirm: Conferme
create_block: bloche chest utent
created from: "Creât di:"
delete image: Elimine figure
description: Descrizion
diary: diari
@ -603,6 +792,7 @@ fur:
km away: a {{count}}km di distance
m away: "{{count}}m di distance"
mapper since: "Al mape dai:"
moderator_history: viôt i blocs ricevûts
my diary: il gno diari
my edits: miei cambiaments
my settings: mês impostazions

View file

@ -137,15 +137,15 @@ hu:
edit: szerkesztés
node: Pont
node_title: "Pont: {{node_name}}"
view_history: történet megtekintése
view_history: előzmények megtekintése
node_details:
coordinates: "Koordináták:"
part_of: "Része:"
node_history:
download: "{{download_xml_link}} vagy {{view_details_link}}"
download_xml: XML letöltése
node_history: Pont története
node_history_title: "Pont története: {{node_name}}"
node_history: Pont előzményei
node_history_title: "Pont előzményei: {{node_name}}"
view_details: részletek megtekintése
not_found:
sorry: Sajnálom, a(z) {{id}} azonosítójú {{type}} nem található.
@ -162,15 +162,15 @@ hu:
download_xml: XML letöltése
relation: Kapcsolat
relation_title: "Kapcsolat: {{relation_name}}"
view_history: történet megtekintése
view_history: előzmények megtekintése
relation_details:
members: "Tagok:"
part_of: "Része:"
relation_history:
download: "{{download_xml_link}} vagy {{view_details_link}}"
download_xml: XML letöltése
relation_history: Kapcsolat története
relation_history_title: "Kapcsolat története: {{relation_name}}"
relation_history: Kapcsolat előzményei
relation_history_title: "Kapcsolat előzményei: {{relation_name}}"
view_details: részletek megtekintése
relation_member:
entry_role: "{{type}} {{name}} mint {{role}}"
@ -187,7 +187,7 @@ hu:
details: Részletek
drag_a_box: Terület kijelöléséhez rajzolj egy négyzetet a térképen
edited_by_user_at_timestamp: "[[user]] szerkesztette ekkor: [[timestamp]]"
history_for_feature: "[[feature]] története"
history_for_feature: "[[feature]] előzményei"
load_data: Adatok betöltése
loaded_an_area_with_num_features: "Olyan területet töltöttél be, amely [[num_features]] elemet tartalmaz. Néhány böngésző lehet, hogy nem birkózik meg ekkora mennyiségű adattal. Általában a böngészők egyszerre kevesebb mint 100 elem megjelenítésével működnek a legjobban: minden más esetben a böngésző lelassulhat/nem válaszolhat. Ha biztos vagy benne, hogy meg szeretnéd jeleníteni ezeket az adatokat, megteheted ezt az alábbi gombra kattintva."
loading: Betöltés…
@ -209,9 +209,9 @@ hu:
node: Pont
way: Vonal
private_user: ismeretlen felhasználó
show_history: Történet megjelenítése
show_history: Előzmények megjelenítése
unable_to_load_size: "Nem tölthető be: a határolónégyzet mérete ([[bbox_size]]) túl nagy. ({{max_bbox_size}}-nél kisebbnek kell lennie.)"
wait: Várjon...
wait: Várj...
zoom_or_select: Közelíts rá vagy jelölj ki egy területet a térképen a megtekintéshez
tag_details:
tags: "Címkék:"
@ -226,7 +226,7 @@ hu:
download: "{{download_xml_link}}, {{view_history_link}} vagy {{edit_link}}"
download_xml: XML letöltése
edit: szerkesztés
view_history: történet megtekintése
view_history: előzmények megtekintése
way: Vonal
way_title: "Vonal: {{way_name}}"
way_details:
@ -239,8 +239,8 @@ hu:
download: "{{download_xml_link}} vagy {{view_details_link}}"
download_xml: XML letöltése
view_details: részletek megtekintése
way_history: Vonal története
way_history_title: "Vonal története: {{way_name}}"
way_history: Vonal előzményei
way_history_title: "Vonal előzményei: {{way_name}}"
changeset:
changeset:
anonymous: Névtelen
@ -334,7 +334,7 @@ hu:
login: Jelentkezz be
login_to_leave_a_comment: "{{login_link}} a hozzászóláshoz"
save_button: Mentés
title: Felhasználók naplói | {{user}}
title: "{{user}} naplója | {{title}}"
user_title: "{{user}} naplója"
export:
start:
@ -852,7 +852,7 @@ hu:
noname: NincsNév
site:
edit_zoom_alert: Közelítened kell a térkép szerkesztéséhez
history_zoom_alert: Közelítened kell a szerkesztési történet megtekintéséhez
history_zoom_alert: Közelítened kell a szerkesztési előzmények megtekintéséhez
layouts:
donate: Támogasd az OpenStreetMapot a Hardverfrissítési Alapba történő {{link}}sal.
donate_link_text: adományozás
@ -865,8 +865,8 @@ hu:
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
history: Történet
history_tooltip: Módosításcsomagok története
history: Előzmények
history_tooltip: Módosításcsomagok előzményei
home: otthon
home_tooltip: Ugrás otthonra
inbox: postaláda ({{count}})
@ -876,8 +876,9 @@ hu:
zero: A postaláda nem tartalmaz olvasatlan üzenetet
intro_1: Az OpenStreetMap egy szabadon szerkeszthető térkép az egész világról. Olyan emberek készítik, mint Te.
intro_2: Az OpenStreetMap lehetővé teszi neked, hogy szabadon megtekintsd, szerkeszd és használd a földrajzi adatokat, bárhol is vagy a Földön.
intro_3: Az OpenStreetMap hostingját a {{ucl}} és a {{bytemark}} támogatja.
intro_3: Az OpenStreetMap hostingját a {{ucl}} és a {{bytemark}} támogatja. A projekt további támogatói a {{partners}} találhatók.
intro_3_bytemark: Bytemark
intro_3_partners: wikiben
license:
title: Az OpenStreetMap adatokra a Creative Commons Nevezd meg!-Így add tovább! 2.0 Általános Licenc vonatkozik
log_in: bejelentkezés
@ -1314,12 +1315,13 @@ hu:
uploaded: "Feltöltve:"
visibility: "Láthatóság:"
visibility:
identifiable: Azonosítható (megjelenik a nyomvonalak listáján, és azonodítható, rendezett pontok időbélyeggel)
identifiable: Azonosítható (megjelenik a nyomvonalak listáján, és azonosítható, rendezett pontok időbélyeggel)
private: Magán (megosztva csak névtelenül, rendezetlen pontok)
public: Nyilvános (megjelenik a nyomvonalak listáján névtelenül, rendezetlen pontok)
trackable: Követhető (megosztva csak névtelenül, rendezett pontok időbélyeggel)
user:
account:
current email address: "Jelenlegi e-mail cím:"
email never displayed publicly: (soha nem jelenik meg nyilvánosan)
flash update success: Felhasználói információk sikeresen frissítve.
flash update success confirm needed: Felhasználói információk sikeresen frissítve. Nézd meg az e-mailjeidet az új e-mail címedet megerősítő levélhez.
@ -1328,6 +1330,7 @@ hu:
longitude: "Földrajzi hosszúság:"
make edits public button: Szerkesztéseim nyilvánossá tétele
my settings: Beállításaim
new email address: "Új e-mail cím:"
no home location: Nem adtad meg az otthonod helyét.
preferred languages: "Előnyben részesített nyelvek:"
profile description: "Profil leírása:"

View file

@ -212,6 +212,13 @@ ia:
zoom_or_select: Face zoom avante o selige un area del carta a visualisar
tag_details:
tags: "Etiquettas:"
timeout:
sorry: Pardono, le datos pro le {{type}} con le ID {{id}} ha prendite troppo de tempore pro esser recuperate.
type:
changeset: gruppo de modificationes
node: nodo
relation: relation
way: via
way:
download: "{{download_xml_link}}, {{view_history_link}} o {{edit_link}}"
download_xml: Discargar XML
@ -399,21 +406,124 @@ ia:
search_osm_nominatim:
prefix:
amenity:
airport: Aeroporto
arts_centre: Centro artistic
auditorium: Auditorio
bank: Banca
bar: Bar
bench: Banco
bicycle_parking: Stationamento pro bicyclettas
bicycle_rental: Location de bicyclettas
brothel: Bordello
bureau_de_change: Officio de cambio
bus_station: Station de autobus
cafe: Café
car_rental: Location de automobiles
car_sharing: Repartition de autos
car_wash: Carwash
casino: Casino
cinema: Cinema
clinic: Clinica
club: Club
college: Schola superior
community_centre: Centro communitari
courthouse: Tribunal
crematorium: Crematorio
dentist: Dentista
dormitory: Dormitorio
drinking_water: Aqua potabile
driving_school: Autoschola
embassy: Ambassada
emergency_phone: Telephono de emergentia
fast_food: Fast food
ferry_terminal: Terminal de ferry
fire_hydrant: Hydrante de incendio
fountain: Fontana
fuel: Carburante
grave_yard: Cemeterio
gym: Centro de fitness / Gymnasio
hall: Hall
hospital: Hospital
hotel: Hotel
hunting_stand: Posto de cacia
ice_cream: Gelato
kindergarten: Schola pro juvene infantes
library: Bibliotheca
market: Mercato
marketplace: Mercato
mountain_rescue: Succurso de montania
nightclub: Club nocturne
nursery: Sala recreative pro parve infantes
nursing_home: Casa de convalescentia
office: Officio
park: Parco
parking: Parking
place_of_worship: Loco de adoration
police: Policia
post_box: Cassa postal
post_office: Officio postal
preschool: Pre-schola
prison: Prision
pub: Taverna
public_building: Edificio public
public_market: Mercato public
reception_area: Area de reception
recycling: Puncto de recyclage
restaurant: Restaurante
retirement_home: Residentia pro vetere personas
sauna: Sauna
school: Schola
shelter: Refugio
shop: Boteca
shopping: Compras
social_club: Club social
studio: Appartamento de un camera
supermarket: Supermercato
taxi: Taxi
telephone: Telephono public
theatre: Theatro
toilets: Toilettes
townhall: Casa municipal
university: Universitate
vending_machine: Distributor automatic
veterinary: Clinica veterinari
village_hall: Casa communal
wifi: Accesso WiFi
youth_centre: Centro pro le juventute
highway:
bridleway: Sentiero pro cavallos
bus_guideway: Via guidate de autobus
bus_stop: Halto de autobus
byway: Via minor
construction: Strata in construction
cycleway: Pista cyclabile
distance_marker: Marcator de distantia
emergency_access_point: Puncto de accesso de emergentia
footway: Sentiero pro pedones
ford: Vado
gate: Porta a cancello
living_street: Strata residential
minor: Via minor
motorway: Autostrata
motorway_junction: Junction de autostrata
motorway_link: Via de communication a autostrata
path: Sentiero
pedestrian: Via pro pedones
platform: Platteforma
primary: Via principal
primary_link: Via principal
raceway: Circuito
residential: Residential
road: Via
secondary: Via secundari
secondary_link: Via secundari
service: Via de servicio
services: Servicios de autostrata
steps: Scalones
stile: Scalon o apertura de passage
tertiary: Via tertiari
track: Pista
trail: Pista
trunk: Via national
trunk_link: Via national
unclassified: Via non classificate
@ -441,19 +551,44 @@ ia:
track: Pista de athletismo
water_park: Parco aquatic
natural:
bay: Baia
beach: Plagia
cape: Capo
cave_entrance: Entrata de caverna
channel: Canal
cliff: Precipitio
coastline: Linea de costa
crater: Crater
feature: Attraction
fell: Montania
fjord: Fiord
geyser: Geyser
glacier: Glaciero
heath: Landa
hill: Collina
island: Insula
land: Terra
marsh: Palude
moor: Landa
mud: Fango
peak: Picco
point: Puncto
reef: Scolio
ridge: Cresta
river: Fluvio/Riviera
rock: Rocca
scree: Talus
scrub: Arbusto
shoal: Banco de sablo
spring: Fontana
strait: Stricto
tree: Arbore
valley: Vallea
volcano: Vulcano
water: Aqua
wetland: Terra humide
wetlands: Terreno paludose
wood: Bosco
place:
airport: Aeroporto
city: Citate
@ -909,6 +1044,7 @@ ia:
count_points: "{{count}} punctos"
edit: modificar
edit_map: Modificar carta
identifiable: IDENTIFICABILE
in: in
map: carta
more: plus
@ -916,6 +1052,7 @@ ia:
private: PRIVATE
public: PUBLIC
trace_details: Vider detalios del tracia
trackable: TRACIABILE
view_map: Vider carta
trace_form:
description: Description
@ -923,7 +1060,7 @@ ia:
tags: Etiquettas
tags_help: separate per commas
upload_button: Cargar
upload_gpx: Cargar file GPX
upload_gpx: Incargar file GPX
visibility: Visibilitate
visibility_help: que significa isto?
trace_header:
@ -933,6 +1070,10 @@ ia:
traces_waiting: Tu ha {{count}} tracias attendente cargamento. Per favor considera attender le completion de istes ante de cargar alteres, pro non blocar le cauda pro altere usatores.
trace_optionals:
tags: Etiquettas
trace_paging_nav:
next: Sequente &raquo;
previous: "&laquo; Precedente"
showing_page: Pagina {{page}} monstrate
view:
delete_track: Deler iste tracia
description: "Description:"
@ -959,6 +1100,7 @@ ia:
trackable: Traciabile (solmente condividite como anonymo, punctos ordinate con datas e horas)
user:
account:
current email address: "Adresse de e-mail actual:"
email never displayed publicly: (nunquam monstrate publicamente)
flash update success: Informationes del usator actualisate con successo.
flash update success confirm needed: Informationes del usator actualisate con successo. Tu recipera in e-mail un nota pro confirmar tu nove adresse de e-mail.
@ -967,6 +1109,7 @@ ia:
longitude: "Longitude:"
make edits public button: Render tote mi modificationes public
my settings: Mi configurationes
new email address: "Adresse de e-mail nove:"
no home location: Tu non ha entrate tu position de origine.
preferred languages: "Linguas preferite:"
profile description: "Description del profilo:"

View file

@ -331,7 +331,7 @@ mk:
login: Најавување
login_to_leave_a_comment: "{{login_link}} за да оставите коментар"
save_button: Зачувај
title: Кориснички дневници | {{user}}
title: Дневникот на {{user}} | {{title}}
user_title: дневник на {{user}}
export:
start:
@ -870,8 +870,9 @@ mk:
zero: Немате непрочитани пораки во сандачето
intro_1: OpenStreetMap е слободна уредлива карта на целиот свет. Ја прават луѓе како вас.
intro_2: OpenStreetMap ви овозможува да разгледувате, уредувате и користите гоеографски податоци на колаборативен начин од било кое место на Земјината топка.
intro_3: OpenStreetMap е вдомен со великодушна поддршка од {{ucl}} и {{bytemark}}.
intro_3: Вдомувањето на OpenStreetMap е овозможено од {{ucl}} и {{bytemark}}. Другите поддржувачи на проектот се наведени на {{partners}}.
intro_3_bytemark: bytemark
intro_3_partners: вики
intro_3_ucl: Центарот UCL VR
license:
title: Податоците на OpenStreetMap се под Creative Commons Наведи извор-Сподели под исти услови 2.0 Нелокализирана лиценца

View file

@ -302,7 +302,7 @@ nl:
feed:
all:
description: Recente dagboekberichten van OpenStreetMap-gebruikers
title: OpenStreetMap dagboekberichten
title: OpenStreetMap-dagboekberichten
language:
description: Recente dagboekberichten van OpenStreetMap-gebruikers in het {{language_name}}
title: OpenStreetMap dagboekberichten in het {{language_name}}
@ -312,7 +312,7 @@ nl:
list:
in_language_title: Dagboekberichten in het {{language}}
new: Nieuw dagboekbericht
new_title: Nieuwe bericht voor uw dagboek schrijven
new_title: Nieuw bericht voor uw dagboek schrijven
newer_entries: Nieuwere berichten
no_entries: Het dagboek is leeg
older_entries: Oudere berichten
@ -334,7 +334,7 @@ nl:
login: aanmelden
login_to_leave_a_comment: U moet moet zich {{login_link}} om te kunnen reageren
save_button: Opslaan
title: Gebruikersdagboeken | {{user}}
title: Gebruikersdagboek van {{user}} | {{title}}
user_title: Dagboek van {{user}}
export:
start:
@ -421,7 +421,7 @@ nl:
bicycle_rental: Fietsverhuur
brothel: Bordeel
bureau_de_change: Wisselkantoor
bus_station: Bushalte
bus_station: Busstation
cafe: Café
car_rental: Autoverhuur
car_sharing: Autodelen
@ -430,7 +430,7 @@ nl:
cinema: Bioscoop
clinic: Kliniek
club: Club
college: Middelbare school
college: Hogeschool
community_centre: Gemeenschapscentrum
courthouse: Rechtbank
crematorium: Crematorium
@ -492,7 +492,7 @@ nl:
telephone: Openbare telefoon
theatre: Theater
toilets: Toiletten
townhall: Gemeentehuid
townhall: Gemeentehuis
university: Universiteit
vending_machine: Automaat
veterinary: Dierenarts
@ -873,7 +873,8 @@ nl:
zero: Uw Postvak IN bevat geen nieuwe berichten
intro_1: OpenStreetMap is een vrij bewerkbare kaart van de hele wereld. Hij wordt gemaakt door mensen zoals u.
intro_2: Met OpenStreetMap kunt u geografische gegevens van de hele aarde bekijken, samen bewerken en gebruiken.
intro_3: De hosting van OpenStreetMap wordt ondersteund door {{ucl}} en {{bytemark}}.
intro_3: De hosting van OpenStreetMap wordt ondersteund door {{ucl}} en {{bytemark}}. Andere partners van het project zijn opgenomen in de {{partners}}
intro_3_partners: wiki
license:
title: Gegevens van OpenStreetMap zijn beschikbaar onder de licentie Creative Commons Naamsvermelding-Gelijk delen 2.0 Generiek
log_in: aanmelden
@ -1311,6 +1312,7 @@ nl:
trackable: Traceerbaar (alleen gedeeld als anoniem; geordende punten met tijdstempels)
user:
account:
current email address: "Huidige e-mailadres:"
email never displayed publicly: (nooit openbaar gemaakt)
flash update success: De gebruikersinformatie is bijgewerkt.
flash update success confirm needed: De gebruikersinformatie is bijgewerkt. Controleer uw e-mail om uw nieuwe e-mailadres te bevestigen.
@ -1319,6 +1321,7 @@ nl:
longitude: "Lengtegraad:"
make edits public button: Al mijn wijzigingen openbaar maken
my settings: Mijn instellingen
new email address: "Nieuw e-mailadres:"
no home location: Er is geen thuislocatie ingevoerd.
preferred languages: "Voorkeurstalen:"
profile description: "Profielbeschrijving:"

View file

@ -4,6 +4,7 @@
# Author: Hansfn
# Author: Jon Harald Søby
# Author: Laaknor
# Author: Nghtwlkr
# Author: Oyvind
"no":
activerecord:
@ -210,6 +211,13 @@
zoom_or_select: Zoom inn eller velg et område av kartet for visning
tag_details:
tags: "Markelapper:"
timeout:
sorry: Beklager, data for {{type}} med id {{id}} brukte for lang tid på å hentes.
type:
changeset: endringssett
node: node
relation: relasjon
way: vei
way:
download: "{{download_xml_link}}, {{view_history_link}} eller {{edit_link}}"
download_xml: Last ned XML
@ -239,7 +247,9 @@
still_editing: (redigerer forsatt)
view_changeset_details: Vis detaljer for endringssett
changeset_paging_nav:
showing_page: Viser side
next: Neste »
previous: « Forrige
showing_page: Viser side {{page}}
changesets:
area: Område
comment: Kommentar
@ -261,6 +271,7 @@
title_user_bbox: Endringssett av {{user}} innen {{bbox}}
diary_entry:
diary_comment:
comment_from: Kommentar fra {{link_user}}, {{comment_created_at}}
confirm: Bekreft
hide_link: Skjul denne kommentaren
diary_entry:
@ -317,14 +328,15 @@
login: Logg inn
login_to_leave_a_comment: "{{login_link}} for å legge igjen en kommentar"
save_button: Lagre
title: Brukernes dagbok | {{user}}
title: "{{user}} sin dagbok | {{title}}"
user_title: Dagboken for {{user}}
export:
start:
add_marker: Legg til en markør på kartet
area_to_export: Område som skal eksporteres
embeddable_html: HTML-fil (*.html)|*.html
embeddable_html: HTML som kan bygges inn
export_button: Eksporter
export_details: Data fra OpenStreetMap er lisensiert under lisensen <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.no">Creative Commons Navngivelse-Del på samme vilkår 2.0</a>.
format: Format
format_to_export: Format for eksport
image_size: Bildestørrelse
@ -338,6 +350,7 @@
osm_xml_data: OpenStreetMap XML-data
osmarender_image: Osmarender-bilde
output: Utdata
paste_html: Lim inn HTML som skal bygges inn i nettsted
scale: Skala
zoom: Zoom
start_rjs:
@ -373,6 +386,7 @@
other: omtrent {{count}}km
zero: mindre enn 1 km
results:
more_results: Flere resultat
no_results: Ingen resultat funnet
search:
title:
@ -389,85 +403,307 @@
prefix:
amenity:
airport: Flyplass
arts_centre: Kunstsenter
atm: Minibank
auditorium: Auditorium
bank: Bank
bar: Bar
bench: Benk
bicycle_rental: Sykkelutleie
brothel: Bordell
bureau_de_change: Vekslingskontor
bus_station: Busstasjon
cafe: Kafé
car_rental: Bilutleie
car_wash: Bilvask
casino: Kasino
cinema: Kino
clinic: Klinikk
club: Klubb
college: Høyskole
crematorium: Krematorium
dentist: Tannlege
doctors: Leger
dormitory: Sovesal
drinking_water: Drikkevann
embassy: Ambassade
emergency_phone: Nødtelefon
fast_food: Hurtigmat
ferry_terminal: Ferjeterminal
fire_hydrant: Brannhydrant
fire_station: Brannstasjon
fountain: Fontene
fuel: Drivstoff
grave_yard: Gravlund
gym: Treningssenter
health_centre: Helsesenter
hospital: Sykehus
hotel: Hotell
ice_cream: Iskrem
kindergarten: Barnehage
library: Bibliotek
market: Marked
marketplace: Markedsplass
nightclub: Nattklubb
office: Kontor
park: Park
parking: Parkeringsplass
pharmacy: Apotek
place_of_worship: Tilbedelsesplass
police: Politi
post_box: Postboks
post_office: Postkontor
preschool: Førskole
prison: Fengsel
pub: Pub
public_building: Offentlig bygning
restaurant: Restaurant
retirement_home: Gamlehjem
school: Skole
studio: Studio
supermarket: Supermarked
taxi: Drosje
telephone: Offentlig telefon
theatre: Teater
toilets: Toaletter
townhall: Rådhus
veterinary: Veterinærklinikk
wifi: WiFi-tilgangspunkt
youth_centre: Ungdomssenter
boundary:
administrative: Administrativ grense
building:
apartments: Leilighetsblokk
block: Bygningsblokk
bunker: Bunker
chapel: Kapell
church: Kirke
city_hall: Rådhus
dormitory: Sovesal
farm: Gårdsbygg
flats: Leiligheter
garage: Garasje
hospital: Sykehusbygg
hotel: Hotell
house: Hus
industrial: Industribygg
office: Kontorbygg
public: Offentlig bygg
residential: Boligbygg
school: Skolebygg
shop: Butikk
stadium: Stadion
store: Butikk
terrace: Terrasse
tower: Tårn
train_station: Jernbanestasjon
university: Universitetsbygg
"yes": Bygning
highway:
bus_stop: Busstopp
cycleway: Sykkelsti
motorway: Motorvei
pedestrian: Gangvei
road: Vei
steps: Trapper
historic:
archaeological_site: Arkeologisk plass
battlefield: Slagmark
boundary_stone: Grensestein
building: Bygning
castle: Slott
church: Kirke
house: Hus
icon: Ikon
manor: Herregård
memorial: Minne
mine: Gruve
monument: Monument
leisure:
museum: Museum
ruins: Ruiner
tower: Tårn
wreck: Vrak
landuse:
cemetery: Gravplass
commercial: Kommersielt område
construction: Kontruksjon
farm: Gård
farmyard: Gårdstun
forest: Skog
grass: Gress
industrial: Industriområde
landfill: Landfylling
meadow: Eng
military: Militært område
mine: Gruve
mountain: Fjell
nature_reserve: Naturreservat
park: Park
quarry: Steinbrudd
railway: Jernbane
reservoir: Reservoar
residential: Boligområde
vineyard: Vingård
wetland: Våtland
wood: Skog
leisure:
fishing: Fiskeområde
garden: Hage
golf_course: Golfbane
ice_rink: Skøytebane
miniature_golf: Minigolf
nature_reserve: Naturreservat
park: Park
playground: Lekeplass
sports_centre: Sportssenter
stadium: Stadion
swimming_pool: Svømmebaseng
water_park: Vannpark
natural:
beach: Strand
cave_entrance: Huleinngang
channel: Kanal
cliff: Klippe
coastline: Kystlinje
crater: Krater
fjord: Fjord
geyser: Geysir
glacier: Isbre
island: Øy
mud: Gjørme
peak: Topp
reef: Rev
river: Elv
rock: Stein
scrub: Kratt
spring: Kilde
tree: Tre
valley: Dal
volcano: Vulkan
water: Vann
wetlands: Våtland
wood: Skog
place:
airport: Flyplass
city: By
country: Land
farm: Gård
house: Hus
houses: Hus
island: Øy
islet: Holme
municipality: Kommune
postcode: Postnummer
region: Område
sea: Hav
subdivision: Underavdeling
suburb: Forstad
town: Tettsted
railway:
abandoned: Forlatt jernbane
construction: Jernbane under konstruksjon
disused: Nedlagt jernbane
disused_station: Nedlagt jernbanestasjon
halt: Togstopp
historic_station: Historisk jernbanestasjon
platform: Jernbaneperrong
station: Jernbanestasjon
subway: T-banestasjon
subway_entrance: T-baneinngang
shop:
alcohol: Utenfor lisens
art: Kunstbutikk
bakery: Bakeri
beauty: Skjønnhetssalong
bicycle: Sykkelbutikk
books: Bokhandel
butcher: Slakter
car: Bilbutikk
car_dealer: Bilforhandler
car_parts: Bildeler
car_repair: Bilverksted
carpet: Teppebutikk
charity: Veldedighetsbutikk
chemist: Kjemiker
clothes: Klesbutikk
computer: Databutikk
convenience: Nærbutikk
cosmetics: Kosmetikkforretning
drugstore: Apotek
dry_cleaning: Renseri
electronics: Elektronikkforretning
estate_agent: Eiendomsmegler
farm: Gårdsbutikk
fashion: Motebutikk
fish: Fiskebutikk
florist: Blomsterbutikk
food: Matbutikk
furniture: Møbler
gallery: Galleri
garden_centre: Hagesenter
gift: Gavebutikk
greengrocer: Grønnsakshandel
grocery: Dagligvarebutikk
hairdresser: Frisør
hardware: Jernvarehandel
hifi: Hi-Fi
insurance: Forsikring
jewelry: Gullsmed
kiosk: Kiosk
laundry: Vaskeri
mall: Kjøpesenter
market: Marked
mobile_phone: Mobiltelefonbutikk
motorcycle: Motorsykkelbutikk
music: Musikkbutikk
newsagent: Nyhetsbyrå
optician: Optiker
organic: Organisk matbutikk
outdoor: Utendørs butikk
pet: Dyrebutikk
photo: Fotobutikk
salon: Salong
shoes: Skobutikk
shopping_centre: Kjøpesenter
sports: Sportsbutikk
supermarket: Supermarked
toys: Lekebutikk
travel_agency: Reisebyrå
video: Videobutikk
wine: Utenfor lisens
tourism:
alpine_hut: Fjellhytte
artwork: Kunstverk
attraction: Attraksjon
cabin: Hytte
camp_site: Teltplass
caravan_site: Campingplass
guest_house: Gjestehus
hostel: Vandrerhjem
hotel: Hotell
information: Informasjon
motel: Motell
museum: Museum
picnic_site: Piknikplass
theme_park: Fornøyelsespark
valley: Dal
viewpoint: Utsiktspunkt
zoo: Dyrepark
waterway:
canal: Kanal
dam: Demning
ditch: Grøft
rapids: Stryk
river: Elv
stream: Strøm
waterfall: Foss
javascripts:
map:
base:
cycle_map: Sykkelkart
noname: IntetNavn
layouts:
donate: Støtt OpenStreetMap ved {{link}} til Hardware Upgrade Fund (et fond for maskinvareoppgraderinger).
donate_link_text: donering
edit: Rediger
edit_tooltip: Rediger kart
@ -488,7 +724,10 @@
zero: Din innboks inneholder ingen uleste meldinger
intro_1: OpenStreetMap er et fritt redigerbart kart over hele jorda. Det er lagd av folk som deg.
intro_2: OpenStreetMap gjør det mulig å vise, redigere og bruke geografiske data på en samarbeidende måte fra hvor som helst på jorda.
intro_3: OpenStreetMaps hosting er støttet av {{ucl}} og {{bytemark}}.
intro_3: OpenStreetMaps tjenerplass støttes av {{ucl}} og {{bytemark}}. Andre støttespillere av prosjektet er oppført i {{partners}}.
intro_3_partners: wiki
license:
title: Data fra OpenStreetMap er lisensiert under lisensen Creative Commons Navngivelse-Del på like vilkår 2.0 Generisk
log_in: logg inn
log_in_tooltip: Logg inn med en eksisterende konto
logo:
@ -497,6 +736,7 @@
logout_tooltip: Logg ut
make_a_donation:
text: Doner
title: Støtt OpenStreetMap med en donasjon
news_blog: Nyhetsblogg
news_blog_tooltip: Nyhetsblogg om OpenStreetMap, frie geografiske data, osv.
osm_offline: OpenStreetMap databasen er for øyeblikket utilgjengelig mens essensielt vedlikeholdsarbeid utføres.
@ -577,11 +817,14 @@
delete_button: Slett
notifier:
diary_comment_notification:
footer: Du kan også lese kommentaren på {{readurl}} og du kan kommentere på {{commenturl}} eller svare på {{replyurl}}
header: "{{from_user}} har kommentert på ditt siste OpenStreetMap-dagbokinnlegg med emnet {{subject}}:"
hi: Hei {{to_user}},
subject: "[OpenStreetMap] {{user}} kommenterte på en oppføring i dagboka di"
email_confirm:
subject: "[OpenStreetMap] Bekreft din e-postadresse"
email_confirm_html:
click_the_link: Om dette er deg, vennligst klikk på lenken under for å bekrefte endringen.
greeting: Hei,
hopefully_you: Noen (forhåpentligvis deg) ønsker å endre e-postadressen for {{server_url}} til {{new_address}}.
email_confirm_plain:
@ -590,6 +833,8 @@
hopefully_you_1: Noen (forhåpentligvis deg) ønsker å endre e-postadressen for
hopefully_you_2: "{{server_url}} til {{new_address}}."
friend_notification:
had_added_you: "{{user}} har lagt deg til som venn på OpenStreetMap."
see_their_profile: Du kan se profilen deres på {{userurl}} og legge dem til som venn også om du vil det.
subject: "[OpenStreetMap] {{user}} la deg til som en venn"
gpx_notification:
and_no_tags: og ingen merkelapper.
@ -597,6 +842,7 @@
failure:
failed_to_import: "klarte ikke importere. Her er feilen:"
more_info_1: Mer informasjon om feil ved import av GPX og hvordan du kan unngå det
more_info_2: "de kan bli funnet hos:"
subject: "[OpenStreetMap] Feil under import av GPX"
greeting: Hei,
success:
@ -610,21 +856,40 @@
greeting: Hei,
hopefully_you: Noen (forhåpentligvis deg) har bedt å nullstille passordet for OpenStreetMap-kontoen knyttet til denne e-postadressen.
lost_password_plain:
click_the_link: Om dette er deg, vennligst klikk på lenken under for å tilbakestille passordet.
greeting: Hei,
hopefully_you_1: Noen (muligens deg) har bedt om å tilbakestille passordet på denne
message_notification:
footer1: Du kan også lese meldingen på {{readurl}}
footer2: og du kan svare til {{replyurl}}
header: "{{from_user}} har sendt deg en melding gjennom OpenStreetMap med emnet {{subject}}:"
hi: Hei {{to_user}},
subject: "[OpenStreetMap] {{user}} sendte deg en melding"
signup_confirm:
subject: "[OpenStreetMap] Bekreft din e-postadresse"
signup_confirm_html:
current_user: En liste over nåværende brukere i kategorier, basert på hvor i verden de er, er tilgjengelig fra <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.
greeting: Hei der!
introductory_video: Du kan se en {{introductory_video_link}}.
more_videos: Det er {{more_videos_link}}.
more_videos_here: flere videoer her
video_to_openstreetmap: introduksjonsvideo til OpenStreetMap
wiki_signup: Du vil kanskje <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">melde deg inn i OpenStreetMap-wikien</a> også.
signup_confirm_plain:
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.
current_user_2: "de er, er tilgjengelig fra:"
greeting: Hei der!
introductory_video: "Du kan se en introduksjonsvideo for OpenStreetMap her:"
more_videos: "Det er flere videoer her:"
the_wiki: "Les mer om OpenStreetMap på wikien:"
user_wiki_1: Det anbefales at du oppretter en wikibrukerside som inkluderer
wiki_signup: "Du vil kanskje også melde deg inn i OpenStreetMap-wikien på:"
oauth:
oauthorize:
allow_read_gpx: les dine private GPS-spor.
allow_read_prefs: Innstillingene ble lagret.
allow_read_prefs: les brukerinnstillingene dine.
allow_to: "Tillat klientprogrammet å gjøre:"
allow_write_api: endre kartet.
allow_write_diary: opprett dagbokoppføringer, kommentarer og finn venner.
@ -645,7 +910,7 @@
callback_url: "URL til sårbarhetsinformasjon:"
name: Navn
required: Påkrevet
support_url: "URL til sårbarhetsinformasjon:"
support_url: Støtte-URL
url: "URL til sårbarhetsinformasjon:"
index:
application: Applikasjonsnavn
@ -662,23 +927,33 @@
sorry: Klarte ikke finne den {{type}}-en.
show:
access_url: URL for tilgangensnøkkel
allow_read_gpx: les deres private GPS-spor.
allow_read_prefs: les brukerinnstillingene deres.
allow_write_api: endre kartet.
allow_write_diary: opprett dagbokoppføringer, kommentarer og finn venner.
allow_write_gpx: last opp GPS-spor.
allow_write_prefs: endre brukerinnstillingene deres.
authorize_url: "URL til sårbarhetsinformasjon:"
edit: Rediger detaljer
key: Kartnøkkel
key: "Forbrukernøkkel:"
requests: "Ber om følgende tillatelser fra brukeren:"
secret: "Forbrukerhemmelighet:"
support_notice: Vi støtter HMAC-SHA1 (anbefalt) så vel som ren tekst i ssl-modus.
title: OAuth-detaljer for {{app_name}}
url: "URL til sårbarhetsinformasjon:"
update:
flash: Informasjon om %d pakke/pakker ble oppdatert.
flash: Oppdaterte klientinformasjonen
site:
edit:
anon_edits_link_text: Finn ut hvorfor dette er tilfellet.
user_page_link: brukerside
index:
js_1: Du har en nettleser som ikke støtter JavaScript eller så har du slått av JavaScript.
js_2: OpenStreetMap bruker JavaScript på kartsidene.
js_3: Hvis du ikke kan slå på JavaScript, så kan du prøve de <a href="http://tah.openstreetmap.org/Browse/">de statiske Tiles@Home-kartsidene</a>.
license:
license_name: Creative Commons Navngivelse-Del på like vilkår 2.0
notice: Lisensiert under lisensen {{license_name}} av {{project_name}} og dets bidragsytere.
project_name: OpenStreetMap-prosjekt
permalink: Permanent lenke
shortlink: Kort lenke
@ -690,12 +965,14 @@
apron:
- terminal
- terminal
bridge: Sort kant = bru
bridleway: Ridevei
building: Viktig bygning
byway: Stikkvei
cable:
- Kabelvogn
- stolheis
cemetery: Gravplass
centre: Sportssenter
commercial: Kommersielt område
common:
@ -722,6 +999,8 @@
reserve: Naturreservat
resident: Boligområde
retail: Militært område
runway:
- Flystripe
school:
- Skole
- universitet
@ -737,6 +1016,7 @@
- Lyskilde
- trikk
trunk: Hovedvei
tunnel: Streket kant = tunnel
unclassified: Uklassifisert vei
wood: Ved
heading: Legend for z{{zoom_level}}
@ -813,6 +1093,10 @@
traces_waiting: Du har {{count}} spor som venter på opplasting. Du bør vurdere å la disse bli ferdig før du laster opp flere spor slik at du ikke blokkerer køa for andre brukere.
trace_optionals:
tags: Markelapper
trace_paging_nav:
next: Neste »
previous: « Forrige
showing_page: Viser side {{page}}
view:
delete_track: Slett dette sporet
description: "Beskrivelse:"
@ -839,6 +1123,7 @@
trackable: Sporbar (bare delt som anonyme, sorterte punkter med tidsstempel)
user:
account:
current email address: "Nåværende e-postadresse:"
email never displayed publicly: " (vis aldri offentlig)"
flash update success: Brukerinformasjon oppdatert.
flash update success confirm needed: Brukerinformasjon oppdatert. Sjekk eposten din for å bekrefte din epostadresse.
@ -847,12 +1132,14 @@
longitude: "Lengdegrad:"
make edits public button: Gjør alle mine redigeringer offentlig
my settings: Mine innstillinger
new email address: "Ny e-postadresse:"
no home location: Du har ikke skrevet inn din hjemmelokasjon.
preferred languages: "Foretrukne språk:"
profile description: "Profilbeskrivelse:"
public editing:
disabled: Deaktivert og kan ikke redigere data. Alle tidligere redigeringer er anonyme.
disabled link text: hvorfor can jeg ikke redigere?
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: hva er dette?
heading: "Offentlig redigering:"
public editing note:
@ -881,6 +1168,7 @@
go_public:
flash success: Alle dine redigeringer er nå offentlig, og du har lov til å redigere.
login:
account not active: Beklager,kontoen din er ikke aktivert ennå.<br />Vennligst klikk på lenken i e-posten med kontobekreftelsen for å aktivere kontoen din.
auth failure: Beklager, kunne ikke logge inn med den informasjonen
create_account: opprett en konto
email or username: "E-postadresse eller brukernavn:"
@ -896,6 +1184,7 @@
help_text: Skriv inn e-postadressen du brukte for å registrere deg, og vi vil sende deg ei lenke som du kan bruke til å nullstille passordet ditt.
new password button: Nullstill passord
notice email cannot find: Klarte ikke finne den e-postadressen. Beklager.
notice email on way: Synd at du mistet det, men en e-post er på vei slik at du kan tilbakestille det snart.
title: Glemt passord
make_friend:
already_a_friend: Du er allerede venner med {{name}}.
@ -905,7 +1194,9 @@
confirm email address: "Bekreft e-postadresse:"
confirm password: "Bekreft passord:"
display name: "Visningsnavn:"
display name description: Ditt offentlig fremviste brukernavn. Du kan endre dette senere i innstillingene.
email address: "E-postadresse:"
fill_form: Fyll ut skjemaet og vi vil sende deg en e-post for å aktivere kontoen din.
heading: Opprett en brukerkonto
password: "Passord:"
signup: Registrering
@ -931,6 +1222,8 @@
add as friend: legg til som en venn
add image: Legg til bilde
ago: ({{time_in_words_ago}} siden)
block_history: vis mottatte blokkeringer
blocks by me: blokkeringer utført av meg
blocks on me: mine blokkeringer
change your settings: endre dine innstillinger
confirm: Bekreft
@ -955,7 +1248,9 @@
my_oauth_details: Vis mine OAuth-detaljer
nearby users: "Næreliggende brukere:"
new diary entry: ny dagbokoppføring
no friends: Du har ikke lagt til noen venner ennå.
no home location: Ingen hjemmelokasjon satt.
no nearby users: Det er ingen brukere som innrømmer kartlegging i ditt område ennå.
remove as friend: fjern som venn
role:
administrator: Denne brukeren er en administrator
@ -969,29 +1264,89 @@
send message: send melding
settings_link_text: innstillinger
traces: spor
unhide_user: stopp å skjule denne brukeren
upload an image: Last opp et bilde
user image heading: Brukerbilde
user location: Brukerens posisjon
your friends: Dine venner
user_block:
blocks_by:
empty: "{{name}} har ikke blokkert noen ennå."
heading: Liste over blokkeringer av {{name}}
title: Blokkeringer av {{name}}
blocks_on:
empty: "{{name}} har ikke blitt blokkert ennå."
title: Blokkeringer av {{name}}
create:
flash: Opprettet en blokkering av bruker {{name}}.
try_contacting: Vennligst prøv å kontakte brukeren før du blokkerer dem og gi dem rimelig med tid til å svare.
try_waiting: Vennligst prøv å gi brukeren rimelig med tid til å svare før du blokkerer dem.
edit:
back: Vis alle blokkeringer
heading: Endrer blokkering av {{name}}
reason: Årsaken til hvorfor {{name}} blir blokkert. Vennligst vær så rolig og rimelig som mulig og oppgi så mange detaljer du kan om situasjonen. Husk at ikke alle brukere forstår felleskapssjargongen så prøv å bruke lekmannsuttrykk.
show: Vis denne blokkeringen
submit: Oppdater blokkering
title: Endrer blokkering av {{name}}
filter:
block_expired: Blokkeringen har allerede utløpt og kan ikke endres.
block_period: Blokkeringsperioden må være en av verdiene som kan velges fra rullegardinen.
not_a_moderator: Du må være en moderator for å utføre den handlingen.
helper:
time_future: Slutter om {{time}}.
time_past: Sluttet {{time}} siden.
until_login: Aktiv inntil brukeren logger inn.
index:
empty: Ingen blokkeringer har blitt utført ennå.
heading: Liste over brukerblokkeringer
title: Brukerblokkeringer
model:
non_moderator_revoke: Må være en moderator for å tilbakekalle en blokkering.
non_moderator_update: Må være en moderator for å opprette eller oppdatere en blokkering.
new:
back: Vis alle blokkeringer
heading: Oppretter blokkering av {{name}}
reason: Årsaken til at {{name}} blir blokkert. Vennligst vær så rolig og rimelig som mulig og gi så mange detaljer du kan om situasjonen, og husk på at meldingen blir synlig for offentligheten. Husk på at ikke alle brukere forstår fellesskapssjargongen så prøv å bruke lekmannsuttrykk.
submit: Opprett blokkering
title: Oppretter blokkering av {{name}}
tried_contacting: Jeg har kontaktet brukeren og bedt dem stoppe.
tried_waiting: Jeg har gitt brukeren rimelig med tid til å svare på disse kommunikasjonene.
not_found:
back: Tilbake til indeksen
partial:
confirm: Er du sikker?
creator_name: Opprettet av
display_name: Blokkert bruker
edit: Rediger
not_revoked: (ikke tilbakekalt)
reason: Årsak for blokkering
revoke: Tilbakekall!
revoker_name: Tilbakekalt av
show: Vis
status: Status
period:
one: 1 time
other: "{{count}} timer"
revoke:
confirm: Er du sikker på at du vil tilbakekalle denne blokkeringen?
flash: Denne blokkeringen har blitt tilbakekalt.
heading: Tilbakekaller blokkering på {{block_on}} av {{block_by}}
past: Denne blokkeringen endte {{time}} siden og kan ikke tilbakekalles nå.
revoke: Tilbakekall!
time_future: Denne blokkeringen ender i {{time}}
title: Tilbakekaller blokkering på {{block_on}}
show:
confirm: Er du sikker?
edit: Rediger
revoke: Tilbakekall!
show: Vis
status: Status
time_future: Slutter om {{time}}
time_past: Sluttet {{time}} siden
title: "{{block_on}} blokkert av {{block_by}}"
update:
only_creator_can_edit: Bare moderatoren som opprettet denne blokkeringen kan endre den.
success: Blokkering oppdatert.
user_role:
filter:
already_has_role: Brukeren har allerede rollen {{role}}.
@ -999,6 +1354,7 @@
not_a_role: Strengen "{{role}}" er ikke en gyldig rolle.
not_an_administrator: Kun administratorer kan forandre roller, og du er ikke administrator.
grant:
are_you_sure: Er du sikker på at du vil gi rollen `{{role}}' til brukeren `{{name}}'?
confirm: Bekreft
fail: Kunne ikke gi rollen "{{role}}" til bruker "{{name}}". Sjekk at brukeren og rollen er gyldig.
heading: Bekreft rolletildeling

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: syck
# Author: BdgwksxD
# Author: Soeb
# Author: Sp5uhe
# Author: Wpedzich
# Author: Yarl
@ -252,7 +253,7 @@ pl:
no_edits: (brak edycji)
show_area_box: pokaż prostokąt zawierający
still_editing: (nadal edytowany)
view_changeset_details: Zobacz szczegóły changesetu
view_changeset_details: Zobacz szczegóły zestawu zmian
changeset_paging_nav:
next: Następna &raquo;
previous: "&laquo; Poprzednia"
@ -337,7 +338,7 @@ pl:
login: Zaloguj się
login_to_leave_a_comment: "{{login_link}}, aby dodać komentarz"
save_button: Zapisz
title: Wpisy użytkowników | {{user}}
title: Dziennik użytkownika {{user}} | {{title}}
user_title: Dziennik dla {{user}}
export:
start:
@ -1000,6 +1001,8 @@ pl:
subject: "[OpenStreetMap] Sukces importu pliku GPX"
with_description: z opisem
your_gpx_file: Wygląda, ze Twój plik GPX
lost_password:
subject: "[OpenStreetMap] Prośba zmiany hasła"
lost_password_html:
click_the_link: Jeśli to Ty, kliknij na poniższy link, aby zresetować hasło.
greeting: Witaj,
@ -1059,6 +1062,13 @@ pl:
oauth_clients:
edit:
submit: Edytuj
form:
required: Wymagane
index:
application: Nazwa aplikacji
revoke: Odwołaj!
show:
edit: Edytuj szczegóły
site:
edit:
anon_edits_link_text: Tu dowiesz się dlaczego.
@ -1257,6 +1267,7 @@ pl:
trackable: Niezidentyfikowany (udostępniany jedynie jako anonimowy, uporządkowane punkty ze znacznikami czasu)
user:
account:
current email address: "Aktualny adres e-mail:"
email never displayed publicly: (nie jest wyświetlany publicznie)
flash update success: Zaktualizowano profil użytkownika.
flash update success confirm needed: Zaktualizowano profil użytkownika. Sprawdź czy przyszedł już mail potwierdzający nowy adres mailowy.
@ -1265,6 +1276,7 @@ pl:
longitude: "Długość geograficzna:"
make edits public button: Niech wszystkie edycje będą publiczne.
my settings: Moje ustawienia
new email address: "Nowy adres e-mail:"
no home location: Nie wpisałeś swojej lokalizacji domowej.
preferred languages: "Preferowane Języki:"
profile description: "Opis profilu:"
@ -1443,6 +1455,9 @@ pl:
model:
non_moderator_revoke: Musisz być moderatorem, żeby odwoływać blokady.
non_moderator_update: Musisz być moderatorem, żeby ustalać i edytować blokady.
new:
back: Zobacz wszystkie blokady
submit: Utwórz blokadę
not_found:
back: Powrót do spisu
sorry: Niestety, nie udało się odnaleźć blokady użytkownika o identyfikatorze {{id}}.
@ -1482,6 +1497,8 @@ pl:
time_future: Blokada wygasa {{time}}
time_past: Zakończona {{time}} temu
title: "{{block_on}} zablokowany przez użytkownika {{block_by}}"
update:
success: Blokada zaktualizowana.
user_role:
filter:
already_has_role: Użytkownik ma już rolę {{role}}.

View file

@ -111,6 +111,13 @@ pt-BR:
all:
next_tooltip: Próximo conjunto de alterações
prev_tooltip: Conjunto de alterações anterior
paging:
all:
next: "{{id}} &raquo;"
prev: "&laquo; {{id}}"
user:
next: "{{id}} &raquo;"
prev: "&laquo; {{id}}"
user:
name_tooltip: Ver edições de {{user}}
next_tooltip: Editado posteriormente por {{user}}
@ -337,7 +344,7 @@ pt-BR:
login: Entrar
login_to_leave_a_comment: "{{login_link}} para deixar um comentário"
save_button: Salvar
title: Diários dos usuários | {{user}}
title: Diário de {{user}} | {{title}}
user_title: Diário de {{user}}
export:
start:
@ -454,6 +461,7 @@ pt-BR:
fuel: Combustível
grave_yard: Cemitério
gym: Ginásio
hall: Salão
health_centre: Centro de saúde
hospital: Hospital
hotel: Hotel
@ -465,6 +473,8 @@ pt-BR:
marketplace: Mercado público / feira
mountain_rescue: Abrigo de montanha
nightclub: Casa noturna/Boate
nursery: Berçário
nursing_home: Asilo
office: Escritório
park: Parque
parking: Estacionamento
@ -478,6 +488,7 @@ pt-BR:
pub: Pub
public_building: Edifício público
public_market: Mercado público
reception_area: Área de recepção
recycling: Posto de Reciclagem
restaurant: Restaurante
retirement_home: Asilo
@ -497,6 +508,7 @@ pt-BR:
university: Universidade
vending_machine: Máquina de venda automática
veterinary: Clínica veterinária
village_hall: Salão de vila
waste_basket: Lata de lixo
wifi: Ponto de Acesso WiFi
youth_centre: Centro juvenil
@ -504,6 +516,7 @@ pt-BR:
administrative: Limite Administrativo
building:
apartments: Bloco de apartamentos
block: Bloco de Prédios
bunker: Bunker
chapel: Capela
church: Igreja
@ -511,7 +524,11 @@ pt-BR:
commercial: Edifício comercial
dormitory: Dormitório
entrance: Entrada de edifício
faculty: Prédio de Faculdade
farm: Paiol
flats: Apartamentos
garage: Garagem
hall: Salão
hospital: Hospital
hotel: Hotel
house: Casa
@ -519,6 +536,7 @@ pt-BR:
office: Edifício de escritórios
public: Edifício público
residential: Edifício residencial
retail: Prédio de Varejo
school: Edifício escolar
shop: Loja
stadium: Estádio
@ -530,16 +548,24 @@ pt-BR:
"yes": Edifício
highway:
bridleway: Pista para cavalos
bus_guideway: Corredor de ônibus
bus_stop: Ponto de ônibus
byway: Trilha larga
construction: Estrada em construção
cycleway: Ciclovia
distance_marker: Marcador de quilometragem
emergency_access_point: Acesso de emergência
footway: Caminho
ford: Travessia de rio
gate: Portão
living_street: Rua residencial
minor: Estrada Secundária
motorway: Rodovia expressa
motorway_junction: Trevo de Acesso
motorway_link: Autoestrada
path: Caminho
pedestrian: Rua de pedestres
platform: Plataforma
primary: Via Primária
primary_link: Via Primária
raceway: Pista de corrida
@ -548,49 +574,72 @@ pt-BR:
secondary: Via Secundária
secondary_link: Via Secundária
service: Rua de serviço
services: Serviços de autoestrada
steps: Degraus
stile: Escada de cerca
tertiary: Via terciária
track: Trilha
trail: Trilha
trunk: Via de entroncamento
trunk_link: Via Expressa
unclassified: Via não classificada
unsurfaced: Rua não pavimentada
historic:
archaeological_site: Sítio arqueológico
battlefield: Campo de batalha
boundary_stone: Marco
building: Edifício
castle: Castelo
church: Igreja
house: Casa histórica
icon: Ícone
manor: Terra arrendada
memorial: Memorial
mine: Mina histórica
monument: Monumento
museum: Museu
ruins: Ruínas
tower: Torre histórica
wayside_cross: Cruz de beira-de-estrada
wayside_shrine: Túmulo de beira-de-estrada
wreck: Naufrágio
landuse:
allotments: Horta urbana
basin: Bacia
brownfield: Terreno Industrial
cemetery: Cemitério
commercial: Área comercial
conservation: Conservação
construction: Construção
farm: Fazenda
farmland: Área cultivada
farmyard: Curral
forest: Floresta
grass: Gramado
greenfield: Espaço Verde
industrial: Área industrial
landfill: Aterro sanitário
meadow: Gramado
military: Área militar
mine: Mina
mountain: Montanha
nature_reserve: Reserva Natural
park: Parque
piste: Pista de ski
plaza: Praça
quarry: Pedreira
railway: Terreno de ferrovia
recreation_ground: Área recreacional
reservoir: Represa ou Reservatório de Água
residential: Área residencial
retail: Varejo
village_green: Parque municipal
vineyard: Vinhedo
wetland: Pântano / Mangue
wood: Madeira
leisure:
beach_resort: Balneário
common: Terreno comum
fishing: Área de pesca
garden: Jardim
golf_course: Campo de Golf
@ -599,9 +648,14 @@ pt-BR:
miniature_golf: Mini Golfe
nature_reserve: Reserva Ambiental
park: Parque
pitch: Campo esportivo
playground: Playground
recreation_ground: Área recreativa
slipway: Rampa de barco
sports_centre: Centro Esportivo
stadium: Estádio
swimming_pool: Piscina
track: Pista de corrida
water_park: Parque aquático
natural:
bay: Baía
@ -612,31 +666,41 @@ pt-BR:
cliff: Penhasco
coastline: Litoral
crater: Cratera
feature: Recurso natural
fell: Colina
fjord: Fiorde
geyser: Gêiser
glacier: Geleira
heath: Charneca
hill: Colina/Morro
island: Ilha
land: Solo
marsh: Pântano
moor: Brejo
mud: Lama
peak: Pico
point: Ponto
reef: Recife
ridge: Cordilheira
river: Rio
rock: Rocha
scree: Cascalho
scrub: Arbusto
shoal: Barra
spring: Nascente
strait: Estreito
tree: Árvore
valley: Vale
volcano: Vulcão
water: Água
wetland: Pântano / Mangue
wetlands: Pântano
wood: Madeira
place:
airport: Aeroporto
city: Cidade
country: País
county: Município
farm: Fazenda
hamlet: Aldeia
house: Casa
@ -644,6 +708,7 @@ pt-BR:
island: Ilha
islet: Ilhota
locality: Localidade
moor: Pântano
municipality: Municipalidade
postcode: CEP
region: Região
@ -651,21 +716,35 @@ pt-BR:
state: Estado
subdivision: Subdivisão
suburb: Subúrbio
town: Cidade
unincorporated_area: Área não incorporada
village: Vila
railway:
abandoned: Trilhos abandonados
construction: Via férrea em construção
disused: Ferrovia em desuso
disused_station: Estação férrea em desuso
funicular: Funicular
halt: Parada de trem
historic_station: Estação de trem histórica
junction: Cruzamento de ferrovia
level_crossing: Passagem em nível
light_rail: Trem metropolitano
monorail: Monotrilho
narrow_gauge: Ferrovia estreita
platform: Plataforma de trem
preserved: Ferrovia preservada
spur: Ramificação de linha
station: Estação de Trem
subway: Estação de metrô
subway_entrance: Entrada do metrô
switch: Chave de ferrovia
tram: Rota de bonde
tram_stop: Parada de bonde
yard: Estação de classificação
shop:
alcohol: Loja de bebidas alcoolicas
apparel: Loja de roupa
art: Loja de artigos de arte
bakery: Padaria
beauty: Salão de Beleza
@ -678,37 +757,50 @@ pt-BR:
car_parts: Autopeças
car_repair: Oficina mecânica
carpet: Loja de tapetes
charity: Loja beneficente
chemist: Farmacêutico
clothes: Loja de roupas
computer: Loja de computação
confectionery: Confeitaria
convenience: Loja de conveniência
copyshop: Gráfica/copiadora
cosmetics: Loja de cosméticos
department_store: Loja de departamentos
discount: Loja de descontos
doityourself: Faça você mesmo
drugstore: Drogaria
dry_cleaning: Lavagem a seco
electronics: Loja de Eletrônicos
estate_agent: Imobiliária
farm: Loja de produtos agrícolas
fashion: Loja de roupas
fish: Peixaria
florist: Florista
food: Loja de alimentação
funeral_directors: Capela Mortuária
furniture: Móveis
gallery: Galeria
garden_centre: Viveiro
general: Loja de artigos gerais
gift: Loja de presentes
greengrocer: Sacolão/Hortifrutti
grocery: Loja de alimentos
hairdresser: Cabelereiro
hardware: Material/Equipamentos de construção
hifi: Loja de artigos de som
insurance: Seguradora
jewelry: Joalheria
kiosk: Quiosque
laundry: Lavanderia
mall: Shopping Center
market: Mercado
mobile_phone: Loja de celulares
motorcycle: Loja de motocicletas
music: Loja de música
newsagent: Jornaleiro
optician: Ótica / Oculista
organic: Loja de alimentos orgânicos
outdoor: Loja ao ar livre
pet: Pet Shop
photo: Loja fotográfica
salon: Salão de beleza
@ -719,17 +811,22 @@ pt-BR:
supermarket: Supermercado
toys: Loja de brinquedos
travel_agency: Agência de viagens
video: Loja de vídeo
wine: Loja de vinhos
tourism:
alpine_hut: Cabana alpina
artwork: Ilustração
attraction: Atração
bed_and_breakfast: Cama e café da manhã
cabin: Cabana
camp_site: Acampamento
caravan_site: Acampamento de Caravanas
chalet: Chalé
guest_house: Albergue
hostel: Abrigo
hotel: Hotel
information: Informações
lean_to: Inclinado Para
motel: Motel
museum: Museu
picnic_site: Área de Piquenique
@ -738,15 +835,28 @@ pt-BR:
viewpoint: Mirador
zoo: Zoológico
waterway:
boatyard: Estaleiro
canal: Canal
connector: Eclusa
dam: Represa
derelict_canal: Canal Abandonado
ditch: Vala
dock: Doca
drain: Canal
lock: Dique
lock_gate: Portão de Dique
mineral_spring: Fonte mineral
mooring: Ancoradouro
rapids: Corredeiras
river: Rio
riverbank: Margem de rio
stream: Córrego
wadi: Uádi
water_point: Ponto de água
waterfall: Queda de água
weir: Açude
html:
dir: ltr
javascripts:
map:
base:
@ -780,9 +890,13 @@ pt-BR:
one: 1 Nova mensagem na sua caixa de entrada
other: Sua caixa de entrada tem {{count}} mensagens não lidas
zero: Sem novas mensagens na sua caixa de entrada
intro_1: OpenStreetMap é um mapa livre e editável do mundo. Ele é feito por pessoas como você.
intro_2: OpenStreetMap permite visualizar, editar e usar dados geográficos de maneira colaborativa de qualquer lugar do mundo.
intro_3: A hospedagem dos dados do OpenStreetMap é cedida gentilmente por {{ucl}} e {{bytemark}}.
intro_1: O OpenStreetMap é um mapa livre e editável do mundo todo. Ele é feito por pessoas como você.
intro_2: O OpenStreetMap permite visualizar, editar e usar dados geográficos de maneira colaborativa de qualquer lugar do mundo.
intro_3: A hospedagem do OpenStreetMap é cedida gentilmente por {{ucl}} e {{bytemark}}. Outros apoiadores do projeto estão listados no {{partners}}.
intro_3_bytemark: bytemark
intro_3_partners: wiki
intro_3_partners_url: http://wiki.openstreetmap.org/wiki/Partners?uselang=pt-br
intro_3_ucl: UCL VR Centre
license:
alt: CC by-sa 2.0
title: Os dados do OpenStreetMaps estão licenciados na Licença Creative Commons Atribuição-Compartilhamento pela Mesma Licença 2.0 Genérica
@ -1127,7 +1241,7 @@ pt-BR:
heading: Legenda para o zoom nível {{zoom_level}}
search:
search: Buscar
search_help: "exemplos: 'Brasília', 'Av. Paulista, São Paulo', ou 'hospitals near Belo Horizonte' <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Search'>mais exemplos...</a>"
search_help: "exemplos: 'Brasília', 'Av. Paulista, São Paulo', ou 'hospitals near Belo Horizonte'. <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Search'>mais exemplos...</a>"
submit_text: Ir
where_am_i: Onde estou?
where_am_i_title: Descrever a localidade atual usando o motor de busca
@ -1238,6 +1352,7 @@ pt-BR:
trackable: Acompanhável (compartilhada anonimamente como pontos ordenados com informação de tempo)
user:
account:
current email address: "Endereço de e-mail atual:"
email never displayed publicly: (nunca mostrado publicamente)
flash update success: Informação de usuário atualizada com sucesso.
flash update success confirm needed: Informação de usuário atualizada com sucesso. Verifique sua caixa de entrada do email para confirmar seu novo endereço.
@ -1246,6 +1361,7 @@ pt-BR:
longitude: "Longitude:"
make edits public button: Tornar todas as minhas edições públicas
my settings: Minhas configurações
new email address: "Novo endereço de e-mail:"
no home location: Você ainda não entrou a sua localização.
preferred languages: "Preferência de Idioma:"
profile description: "Descrição do Perfil:"

View file

@ -337,7 +337,7 @@ ru:
login: Представиться
login_to_leave_a_comment: "{{login_link}}, чтобы оставить комментарий"
save_button: Сохранить
title: Дневники пользователя | {{user}}
title: Дневник пользователя {{user}} | {{title}}
user_title: Дневник пользователя {{user}}
export:
start:
@ -881,8 +881,9 @@ ru:
zero: В вашем ящике нет непрочитанных сообщений
intro_1: OpenStreetMap — это свободно редактируемая карта всего мира. Она сделана такими же людьми, как и вы.
intro_2: OpenStreetMap позволяет совместно просматривать, изменять и использовать географические данные в любой точке Земли.
intro_3: Услуги хостинга для OpenStreetMap предоставляют {{ucl}} и {{bytemark}}.
intro_3_ucl: Центр UCL VR
intro_3: Услуги хостинга для OpenStreetMap любезно предоставлены {{ucl}} и {{bytemark}}. Другие сторонники проекта перечислены в {{partners}}.
intro_3_partners: вики
intro_3_ucl: UCL VR Centre
license:
title: Данные OpenStreetMap лицензированы Creative Commons Attribution-Share Alike 2.0 Generic
log_in: войти
@ -1325,6 +1326,7 @@ ru:
trackable: Отслеживаемый (доступно только анонимно, упорядоченные точки с отметками времени)
user:
account:
current email address: "Текущий адрес эл. почты:"
email never displayed publicly: (не будет показан)
flash update success: Информация о пользователе успешно обновлена.
flash update success confirm needed: Информация о пользователе успешно обновлена. Проверьте свою электронную почту, чтобы подтвердить ваш новый адрес.
@ -1333,6 +1335,7 @@ ru:
longitude: "Долгота:"
make edits public button: Сделать все мои правки доступными
my settings: Мои настройки
new email address: "Новый адрес эл. почты:"
no home location: Вы не обозначили свое основное местоположение.
preferred languages: "Предпочитаемые языки:"
profile description: "Описание профиля:"

View file

@ -182,7 +182,7 @@ sr-EC:
load_data: Учитај податке
loaded_an_area_with_num_features: "Учитали сте област која садржи [[num_features]] облика. У принципу, неки бровзери се не могу изборити са приказивањем оволике количине података. Бровзери углавном најбоље раде кад приказују мање од сто облика одједном: много више од тога може их успорити или закочити. Ако сте сигурни да желите да прикажете ове податке, можете то урадити кликом на дугме испод."
loading: Учитавање
manually_select: Ручно изабери другу област
manually_select: Ручно изаберите другу област
object_list:
api: Добави ову област помоћу АПИ-ја
back: Прикажи листу објеката
@ -299,6 +299,7 @@ sr-EC:
mapnik_image: Мапник слика
max: максимално
options: Подешавања
osm_xml_data: OpenStreetMap XML подаци
osmarender_image: Осмарендер слика
scale: Размера
zoom: Увећање
@ -307,6 +308,7 @@ sr-EC:
change_marker: Промените положај маркера
click_add_marker: Кликните на мапу како бирте додали маркер
export: Извези
manually_select: Ручно изаберите другу област
view_larger_map: Погледајте већу мапу
geocoder:
description:
@ -338,7 +340,11 @@ sr-EC:
airport: Аеродром
atm: Банкомат
bank: Банка
bar: Бар
bench: Клупа
brothel: Бордел
bureau_de_change: Мењачница
bus_station: Аутобуска станица
cafe: Кафе
car_wash: Ауто-перионица
casino: Казино
@ -346,8 +352,10 @@ sr-EC:
clinic: Клиника
club: Клуб
college: Факултет
courthouse: Зграда суда
crematorium: Крематоријум
dentist: Зубар
driving_school: Ауто-школа
embassy: Амбасада
fast_food: Брза храна
fire_hydrant: Хидрант
@ -356,36 +364,56 @@ sr-EC:
grave_yard: Гробље
gym: Фитнес центар / Теретана
health_centre: Дом здравља
hospital: Болница
hotel: Хотел
kindergarten: Обданиште
library: Библиотека
marketplace: Пијаца
mountain_rescue: Горска служба
nightclub: Ноћни клуб
park: Парк
parking: Паркинг
pharmacy: Апотека
police: Полиција
post_box: Поштанско сандуче
post_office: Пошта
preschool: Обданиште
prison: Затвор
pub: Паб
restaurant: Ресторан
retirement_home: Старачки дом
sauna: Сауна
school: Школа
studio: Сттудио
shop: Продавница
studio: Студио
supermarket: Супермаркет
taxi: Такси
telephone: Јавна говорница
theatre: Позориште
toilets: Тоалети
university: Универзитет
youth_centre: Дом омладине
boundary:
administrative: Административна граница
building:
bunker: Бункер
chapel: Капела
church: Црква
faculty: Факултетска зграда
garage: Гаража
hospital: Болница
hotel: Хотел
house: Кућа
school: Школа
shop: Продавница
stadium: Стадион
tower: Торањ
train_station: Железничка станица
university: Универзитетска зграда
"yes": Зграда
highway:
bus_stop: Аутобуска станица
construction: Аутопут у изградњи
emergency_access_point: Излаз за случај опасности
footway: Стаза
gate: Капија
@ -412,24 +440,33 @@ sr-EC:
cemetery: Гробље
construction: Градилиште
farm: Фарма
forest: Шума
industrial: Индустријска зона
military: Војна област
mine: Рудник
mountain: Планина
park: Парк
quarry: Каменолом
reservoir: Резервоар
residential: Стамбена област
vineyard: Виноград
wood: Гај
leisure:
garden: Башта
golf_course: Голф терен
ice_rink: Клизалиште
marina: Марина
miniature_golf: Мини голф
park: Парк
pitch: Спортско игралиште
playground: Игралиште
sports_centre: Спортски центар
stadium: Стадион
swimming_pool: Базен
track: Стаза за трчање
water_park: Аква-парк
natural:
bay: Залив
beach: Плажа
cape: Рт
cave_entrance: Улаз у пећину
@ -440,22 +477,27 @@ sr-EC:
glacier: Глечер
hill: Брдо
island: Острво
marsh: Мочвара
mud: Блато
reef: Гребен
ridge: Гребен
river: Река
rock: Стена
spring: Извор
strait: Мореуз
tree: Дрво
valley: Долина
volcano: Вулкан
water: Вода
place:
airport: Аеродром
city: Град
country: Држава
farm: Фарма
house: Кућа
houses: Куће
island: Острво
islet: Хрид
locality: Локалитет
moor: Соба
municipality: Општина
@ -463,8 +505,10 @@ sr-EC:
region: Регион
sea: Море
suburb: Предграђе
town: Град
town: Варош
village: Село
railway:
narrow_gauge: Пруга уског колосека
shop:
art: Продавница слика
bakery: Пекара
@ -485,6 +529,7 @@ sr-EC:
jewelry: Јувелирница
kiosk: Киоск
market: Маркет
music: Музичка продавница
optician: Оптичар
salon: Салон
shopping_centre: Тржни центар
@ -507,14 +552,19 @@ sr-EC:
waterway:
canal: Канал
dam: Брана
ditch: Јарак
mineral_spring: Минерални извор
river: Река
waterfall: Водопад
javascripts:
site:
history_zoom_alert: Морате зумирати како бисте видели историју уређивања
layouts:
donate_link_text: донирање
edit: Уреди
edit_tooltip: Уредите мапе
export: Извези
export_tooltip: Извоз мапа
gps_traces: ГПС трагови
help_wiki: Помоћ и вики
history: Историја
@ -529,7 +579,7 @@ sr-EC:
log_in_tooltip: Пријавите се са постојећим налогом
logo:
alt_text: OpenStreetMap лого
logout: одјави се
logout: одјавите се
logout_tooltip: Одјави се
make_a_donation:
text: Донирајте
@ -573,8 +623,10 @@ sr-EC:
title: Пошаљи поруку
outbox:
date: Датум
inbox: долазна пошта
my_inbox: Мој {{inbox_link}}
outbox: одлазна пошта
people_mapping_nearby: маперима у вашој близини
subject: Тема
title: Одлазна пошта
to: За
@ -598,12 +650,18 @@ sr-EC:
gpx_notification:
greeting: Поздрав,
lost_password_html:
click_the_link: Ако си то ви, молимо кликните на линк испод како бисте ресетивали лозинку.
click_the_link: Ако сте то ви, молимо кликните на линк испод како бисте ресетивали лозинку.
lost_password_plain:
click_the_link: Ако си то ви, молимо кликните на линк испод како бисте ресетивали лозинку.
click_the_link: Ако сте то ви, молимо кликните на линк испод како бисте ресетивали лозинку.
greeting: Поздрав,
message_notification:
footer2: и можете одговорити на њу {{replyurl}}
hi: Поздрав {{to_user}},
subject: "[OpenStreetMap] {{user}} вам је послао нову поруку"
signup_confirm:
subject: "[OpenStreetMap] Потврдите вашу адресу е-поште"
signup_confirm_html:
greeting: Поздрав!
oauth:
oauthorize:
allow_read_gpx: учитајте ваше GPS путање.
@ -625,12 +683,15 @@ sr-EC:
entry:
admin: Административна граница
apron:
1: терминал
- Аеродромски перон
- терминал
bridge: Црни оквир = мост
brownfield: Грађевинско земљиште
cemetery: Гробље
centre: Спортски центар
commercial: Пословна област
common:
1: ливада
1: Ливада
construction: Путеви у изградњи
cycleway: Бициклистичка стаза
farm: Фарма
@ -644,6 +705,7 @@ sr-EC:
military: Војна област
motorway: Аутопут
park: Парк
pitch: Спортско игралиште
primary: Главни пут
rail: Железничка пруга
reserve: Парк природе
@ -657,7 +719,11 @@ sr-EC:
subway: Подземна железница
tourist: Туристичка атракција
track: Стаза
tram:
- Лака железница
- трамвај
trunk: Магистрални пут
tunnel: Испрекидан оквир = тунел
unsurfaced: Подземни пут
heading: Легенда за увећање {{zoom_level}}
search:
@ -740,12 +806,14 @@ sr-EC:
visibility: "Видљивост:"
user:
account:
current email address: "Тренутна адреса е-поште:"
email never displayed publicly: (не приказуј јавно)
home location: "Моја локација:"
latitude: "Географска ширина:"
longitude: "Географска дужина:"
make edits public button: Нека све моје измене буду јавне
my settings: Моја подешавања
new email address: "Нова адреса е-поште:"
no home location: Нисте унели ваше место становања.
preferred languages: "Подразумевани језици:"
profile description: "Опис профила:"
@ -780,6 +848,8 @@ sr-EC:
help_text: Унесите адресу е-поште коју сте користили за пријављивање, и на њу ћемо вам послати везу коју можете кликнути како бисте ресетовали лозинку.
new password button: Обнови лозинку
title: Изгубљена лозинка
make_friend:
success: "{{name}} је постао ваш пријатељ."
new:
confirm email address: "Потврдите е-мејл адресу:"
confirm password: "Потврди лозинку:"
@ -830,6 +900,7 @@ sr-EC:
your friends: Ваши пријатељи
user_block:
partial:
confirm: Јесте ли сигурни?
edit: Уреди
show: Прикажи
status: Стање

View file

@ -218,6 +218,7 @@ uk:
tag_details:
tags: "Теґи:"
timeout:
sorry: На жаль, дані для {{type}} з ідентифікатором {{id}}, занадто великі для отримання.
type:
changeset: набір змін
node: точка
@ -336,7 +337,7 @@ uk:
login: Ввійдіть
login_to_leave_a_comment: "{{login_link}}, щоб залишити коментар"
save_button: Зберегти
title: Щоденник користувача | {{user}}
title: Щоденник користувача {{user}} | {{title}}
user_title: Щоденник користувача {{user}}
export:
start:
@ -775,6 +776,7 @@ uk:
music: Музика
newsagent: Газетний кіоск
optician: Оптика
organic: Продовольчий магазин
pet: Зоомагазин
photo: Фотомагазин
salon: Салон
@ -860,7 +862,9 @@ uk:
zero: У вас немає непрочитаних повідомлень
intro_1: OpenStreetMap — це мапа Світу, яку можна вільно редагувати. Вона зроблена такими ж людьми, як і ви.
intro_2: OpenStreetMap дозволяє спільно переглядати, змінювати і використовувати географічні дані в будь-якій точці Землі.
intro_3: Послуги розміщення сайту OpenStreetMap надаються {{ucl}} та {{bytemark}}.
intro_3: Послуги хостингу для OpenStreetMap привітно надають {{ucl}} та {{bytemark}}. Список інших партнерів, що надають підтримку проекту розміщено в {{partners}}.
intro_3_bytemark: bytemark
intro_3_ucl: UCL VR Centre
license:
title: Дані OpenStreetMap ліцензовано за Загальною Ліцензією Creative Commons Attribution-Share Alike 2.0
log_in: увійти

View file

@ -1,97 +1,98 @@
# Messages for Egyptian Spoken Arabic (مصرى)
# Exported from translatewiki.net
# Export driver: syck
# Author: Dudi
# Author: Meno25
arz:
action_cancelchanges: جارى إلغاء التغييرات لــ
action_createpoi: إنشاء نقطه إهتمام
action_deletepoint: حذف نقطة
action_insertnode: إضافه عقده إلى طريق \
action_mergeways: دمج طريقان
action_movepoi: تحريك نقطه إهتمام
action_movepoint: تحريك نقطة
action_pointtags: وضع سمات على نقطة
action_waytags: وضع سمات على طريق
action_cancelchanges: اللَغى بيغيّر لـ
action_createpoi: اعمل نقطة اهتمام
action_deletepoint: بيمسح نقطه
action_insertnode: زوّد node فى طريق
action_mergeways: سيّح الطريقين على بعض
action_movepoi: تحريك نقطة اهتمام
action_movepoint: تحريك نقطه
action_pointtags: ظبط tags على نقطه
action_waytags: ظبط الtags ع الطريق
advanced: متقدم
advanced_close: أغلق حزمه التغييرات
advanced_close: اقفل الchangeset
advanced_history: تاريخ الطريق
advanced_inspector: المفتش
advanced_maximise: كبّر النّافذة
advanced_minimise: صغّر النّافذة
advanced_parallel: طريق موازي
advanced_undelete: ألغِ الحذف
advice_uploadempty: لا شيء للتحميل
cancel: ألغِ
closechangeset: إغلاق حزمه التغييرات
createrelation: أنشئ علاقه جديدة
custom: "مخصص:"
delete: احذف
deleting: يجرى المحو
editinglive: تحرير مباشر
findrelation: ابحث عن علاقه تحتوي
advanced_inspector: مفتش
advanced_maximise: كبّر الويندو
advanced_minimise: صغّر الويندو
advanced_parallel: طريق متوازى (parallel)
advanced_undelete: الغى المسح
advice_uploadempty: ما فيش حاجه يرفعها (upload)
cancel: كانسيل
closechangeset: بيقفل الchangeset
createrelation: اعمل علاقه جديده
custom: "مخصوص:"
delete: امسح
deleting: بيمسح
editinglive: تعديل اونلاين
findrelation: دوّر على علاقه فيها
heading_drawing: رسم
heading_introduction: المقدمة
heading_quickref: مرجع سريع
heading_tagging: وسم
heading_troubleshooting: تعقب المشكلات
help: المساعدة
hint_saving: حفظ البيانات
inspector: المفتش
inspector_locked: مقفل
inspector_unsaved: غير محفوظ
inspector_uploading: (تحميل)
login_pwd: "كلمه السر:"
login_title: تعذّر الولوج
login_uid: "اسم المستخدم:"
mail: البريد
more: المزيد
"no":
nobackground: لا خلفية
offset_motorway: الطريق السريع (D3)
ok: موافق
openchangeset: جارى فتح حزمت التغييرات
option_layer_cycle_map: أو أس أم - خريطه الدراجات
point: نقطة
heading_introduction: مقدمه
heading_quickref: مراجعه سريعه
heading_tagging: بيعمل tag
heading_troubleshooting: اقتل المشكله
help: مساعده
hint_saving: بيسييڤ الداتا
inspector: مفتش
inspector_locked: مقفول
inspector_unsaved: مش متسييڤه
inspector_uploading: (رفع/uploading)
login_pwd: "پاسوورد:"
login_title: ما قدرش يسجل دخول
login_uid: "اسم اليوزر:"
mail: رسايل
more: اكتر
"no": لأ
nobackground: ما فيش خلفيه
offset_motorway: هاى-ويى (Highway) (D3)
ok: اوكى
openchangeset: بيفتح الchangeset
option_layer_cycle_map: OSM - خريطة البيسكيليته
point: نقطه
preset_icon_airport: مطار
preset_icon_bar: حانة
preset_icon_bus_stop: موقف حافلات
preset_icon_cafe: مقهى
preset_icon_bar: بار
preset_icon_bus_stop: موقف اوتوبيس
preset_icon_cafe: كافيه
preset_icon_cinema: سينما
preset_icon_fast_food: وجبات سريعة
preset_icon_ferry_terminal: عباره بحرية
preset_icon_fire_station: فوج إطفاء
preset_icon_fast_food: Fast food
preset_icon_ferry_terminal: عبّاره (ferry)
preset_icon_fire_station: محطة مطافى
preset_icon_hospital: مستشفى
preset_icon_hotel: فندق
preset_icon_hotel: لوكانده
preset_icon_museum: متحف
preset_icon_parking: موقف سيارات
preset_icon_pharmacy: صيدلية
preset_icon_place_of_worship: معبد
preset_icon_police: مخفر شرطة
preset_icon_post_box: صندوق بريد
preset_icon_pub: حانة
preset_icon_restaurant: مطعم
preset_icon_school: مدرسة
preset_icon_station: محطه قطار
preset_icon_parking: پاركينج
preset_icon_pharmacy: اجزاخانه
preset_icon_place_of_worship: مكان العباده
preset_icon_police: نقطة بوليس
preset_icon_post_box: بوسطه
preset_icon_pub: Pub
preset_icon_restaurant: ريستوران
preset_icon_school: مدرَسه
preset_icon_station: محطة قطر
preset_icon_supermarket: سوبرماركت
preset_icon_taxi: رتبه التاكسي
preset_icon_telephone: هاتف
preset_icon_theatre: مسرح
prompt_changesetcomment: "أدخل وصفًا لتغييراتك:"
prompt_editlive: تحرير مباشر
prompt_editsave: عدّل مع حفظ
prompt_helpavailable: أنت مستخدم جديد ؟ أنظر فى أسفل اليسار للمساعدة
prompt_launch: إطلاق رابط خارجي
prompt_revertversion: "استرجع إلى نسخه محفوظه سابقًا:"
prompt_savechanges: احفظ التغييرات
prompt_welcome: مرحبا بكم فى OpenStreetMap!
retry: أعد المحاولة
revert: استرجع
save: احفظ
tip_options: تعيين خيارات (اختيار خلفيه الخريطة)
tip_photo: تحميل الصور
tip_undo: تراجع $1 (Z)
uploading: تحميل...
uploading_deleting_ways: حذف طرق
preset_icon_taxi: رتبة التاكسى
preset_icon_telephone: تليفون
preset_icon_theatre: تياترو
prompt_changesetcomment: "دخّل وصف لتغييراتك:"
prompt_editlive: تعديل ع الهوا
prompt_editsave: عدّل و سييڤ
prompt_helpavailable: يوزر جديد؟ بُص تحت ع الشمال علشان المساعده
prompt_launch: اعمل launch لـ URL برّانى
prompt_revertversion: "ارجع لنسخه متسييڤه قبل كده:"
prompt_savechanges: سييڤ التغييرات
prompt_welcome: اهلا بيكو فى OpenStreetMap!
retry: حاول تانى
revert: رجّع
save: سييڤ
tip_options: اظبط الاوپشنز (اختار خلفية الخريطه)
tip_photo: اعمل load للصور
tip_undo: ارجع $1 (Z)
uploading: بيرفع... (Uploading...)
uploading_deleting_ways: بيمسح الطرق
warning: تحذير!
way: طريق
"yes": نعم
"yes": اه

View file

@ -91,6 +91,7 @@ br:
hint_saving: oc'h enrollañ ar roadennoù
hint_saving_loading: o kargañ / oc'h enrollañ roadennoù
inspector: Enseller
inspector_duplicate: Doublenn eus
inspector_in_ways: En hentoù
inspector_latlon: "Ledred $1\nHedred $2"
inspector_locked: Morailhet
@ -102,6 +103,7 @@ br:
inspector_way_connects_to_principal: Kevreañ ouzh $1 $2 ha $3 re all $4
inspector_way_nodes: $1 skoulm
inspector_way_nodes_closed: $1 skoulm (serret)
loading: O kargañ...
login_pwd: "Ger-tremen :"
login_retry: Anavezerioù ho lec'hienn n'int ket bet anavezet. Esaeit en-dro, mar plij.
login_title: N'eus ket bet gallet kevreañ
@ -128,6 +130,8 @@ br:
option_layer_ooc_25k: "Istor UK : 1:25k"
option_layer_ooc_7th: "Istor UK : 7vet"
option_layer_ooc_npe: Istor UK NPE
option_layer_ooc_scotland: "R-U istorel : Skos"
option_layer_streets_haiti: "Haiti: anvioù ar straedoù"
option_layer_tip: Dibab an drekleur da ziskwel
option_limitways: Kas ur c'hemenn pa vez karget kalz a roadennoù pounner
option_microblog_id: "Anv ar mikroblog :"
@ -145,6 +149,7 @@ br:
preset_icon_cafe: Kafedi
preset_icon_cinema: Sinema
preset_icon_convenience: Ispiserezh
preset_icon_disaster: Savadurioù Haiti
preset_icon_fast_food: Boued buan
preset_icon_ferry_terminal: Lestr-treizh
preset_icon_fire_station: Kazarn pomperien
@ -186,6 +191,10 @@ br:
retry: Esaeañ en-dro
revert: Disteuler
save: Enrollañ
tags_backtolist: Distreiñ d'ar roll
tags_descriptions: Deskrivadurioù '$1'
tags_findatag: Kavout un tikedenn
tags_matching: Tikedennoù brudet hag a glot gant '$1'
tip_addrelation: Ouzhpennañ d'un darempred
tip_addtag: Ouzhpennañ ur meneg nevez
tip_alert: Ur fazi zo bet - Klikit da c'houzout hiroc'h

View file

@ -0,0 +1,89 @@
# Messages for Catalan (Català)
# Exported from translatewiki.net
# Export driver: syck
# Author: Jmontane
# Author: PerroVerd
ca:
a_poi: $1 un punt d'interès (POI)
a_way: $1 una via
action_waytags: establir etiquetes d'una via
advanced: Avançat
advanced_close: Tancar conjunt de canvis
advanced_parallel: Via paral·lela
advanced_undelete: Restaura
advice_uploadsuccess: Totes les dades han pujat correctament
cancel: Cancel·la
conflict_visitway: Cliqueu "D'acord" per a mostrar la via.
createrelation: Crea una relació nova
delete: Suprimeix
editinglive: Edició en viu
error_microblog_long: "Enviament a $1 ha fallat:\ncodi HTTP: $2\nmissatge d'error: $3 \n$1 error: $4"
error_nopoi: El POI no es pot trobar (potser hagis mogut lluny?), així que no es pot desfer.
error_nosharedpoint: Les vies $1 i $2 ja no comparteixen un punt comú, així que no es pot desfer la divisió.
heading_introduction: Introducció
heading_tagging: Etiquetat
help: Ajuda
hint_latlon: "lat $1\nlon $2"
hint_loading: carregant dades
inspector: Inspector
inspector_latlon: "Lat $1\nLon $2"
inspector_locked: Bloquejat
inspector_node_count: ($ 1 vegades)
inspector_uploading: (pujant)
inspector_way_nodes: $1 nodes
inspector_way_nodes_closed: $1 nodes (tancats)
loading: S'està carregant…
login_pwd: "Contrasenya:"
login_uid: "Nom d'usuari:"
more: Més
"no": 'No'
ok: D'acord
openchangeset: Obrir conjunt de canvis
option_layer_maplint: OSM - Maplint (errors)
option_layer_nearmap: "Australia: NearMap"
option_layer_ooc_25k: "UK historic: 1:25k"
option_layer_ooc_7th: "Regne Unit històric: 7th"
option_layer_ooc_npe: "Regne Unit històric: NPE"
option_layer_ooc_scotland: "Regne Unit històric: Escòcia"
option_layer_streets_haiti: "Haití: noms de carrers"
option_photo: "Foto KML:"
option_thinareas: Utilitza línies més fines per areas
option_warnings: Mostra advertències flotants
point: Punt
preset_icon_airport: Aeroport
preset_icon_bar: Bar
preset_icon_bus_stop: Parada d'autobús
preset_icon_cafe: Cafè
preset_icon_cinema: Cinema
preset_icon_disaster: Edifici d'Haití
preset_icon_fast_food: Menjar ràpid
preset_icon_ferry_terminal: Ferri
preset_icon_fire_station: Parc de bombers
preset_icon_hospital: Hospital
preset_icon_hotel: Hotel
preset_icon_museum: Museu
preset_icon_parking: Pàrquing
preset_icon_pharmacy: Farmàcia
preset_icon_place_of_worship: Lloc de culte
preset_icon_police: Comissaria de policia
preset_icon_post_box: Bústia de correus
preset_icon_restaurant: Restaurant
preset_icon_school: Escola
preset_icon_station: Estació de ferrocarril
preset_icon_supermarket: Supermercat
preset_icon_taxi: Parada de taxis
preset_icon_telephone: Telèfon
preset_icon_theatre: Teatre
prompt_changesetcomment: "Introduïu una descripció dels canvis:"
prompt_createparallel: Crea via paral.lela
prompt_welcome: Benvingut/da a l'OpenStreetMap!
retry: Reintenta
save: Desa
tags_findatag: Troba una etiqueta
tip_addtag: Afegeix una nova etiqueta
tip_direction: Direcció de la via - feu clic per invertir-la
tip_options: Establir opcions (triar el mapa de fons)
tip_photo: Carregar fotos
warning: Atenció!
way: Via
"yes":

File diff suppressed because one or more lines are too long

View file

@ -35,6 +35,7 @@ es:
advanced_tooltip: Acciones de edición avanzadas
advanced_undelete: Restaurar
advice_bendy: Muy curvo para enderezarse (presione MAYÚS para forzar)
advice_conflict: Conflicto en el servidor - puede que tenga que intentar guardar de nuevo
advice_deletingpoi: Borrando POI (Z para deshacer)
advice_deletingway: Borrando vía (Z para deshacer)
advice_microblogged: Se ha actualizado tu estado $1
@ -91,6 +92,7 @@ es:
hint_saving: guardando los datos
hint_saving_loading: cargando/guardando datos
inspector: Inspector
inspector_duplicate: Duplicado de
inspector_in_ways: En vías
inspector_latlon: "Lat $1\nLon $2"
inspector_locked: Bloqueado
@ -102,6 +104,7 @@ es:
inspector_way_connects_to_principal: Conecta a $1 $2 y $3 otros $4
inspector_way_nodes: $$1 nodos
inspector_way_nodes_closed: $1 nodos (cerrado)
loading: Cargando...
login_pwd: "Contraseña:"
login_retry: No se pudo reconocer tu acceso al sistema. Por favor, inténtalo de nuevo.
login_title: No se pudo acceder
@ -128,6 +131,7 @@ es:
option_layer_ooc_25k: "Histórico de UK: 1:25k"
option_layer_ooc_7th: "Histórico de UK: 7th"
option_layer_ooc_npe: "Histórico de UK: NPE"
option_layer_ooc_scotland: "UK histórico: Escocia"
option_layer_streets_haiti: "Haiti: nombres de calles"
option_layer_tip: Elija el fondo a mostrar
option_limitways: Lanza una advertencia al cargar gran cantidad de datos.
@ -188,6 +192,11 @@ es:
retry: Reintentar
revert: Revertir
save: Guardar
tags_backtolist: Volver a la lista
tags_descriptions: Descripciones de '$1'
tags_findatag: Encontrar una etiqueta
tags_matching: Etiquetas populares que coinciden con '$1'
tags_typesearchterm: "Introduzca una palabra para buscar:"
tip_addrelation: Añadir a una relación
tip_addtag: Añadir un nuevo parámetro (tag)
tip_alert: Ha ocurrido un error - clic para detalles

View file

@ -38,6 +38,7 @@ fr:
advanced_tooltip: Actions de modification avancées
advanced_undelete: Rétablir
advice_bendy: Trop de courbure pour aligner (Maj pour forcer)
advice_conflict: Conflit avec le serveur - vous pourriez à avoir à sauvegarder de nouveau
advice_deletingpoi: Suppression du POI (Z pour annuler)
advice_deletingway: Suppression du chemin (Z pour annuler)
advice_microblogged: Votre statut $1 a été mis à jour
@ -95,6 +96,7 @@ fr:
hint_saving: sauvegarde des données
hint_saving_loading: Charger/sauvegarder les données
inspector: Inspecteur
inspector_duplicate: Doublon de
inspector_in_ways: Dans les chemins
inspector_latlon: "Lat $1\nLon $2"
inspector_locked: Verrouillé
@ -106,6 +108,7 @@ fr:
inspector_way_connects_to_principal: Connecte à $1 $2 et $3 autres $4
inspector_way_nodes: $1 nœuds
inspector_way_nodes_closed: $1 nœuds (fermé)
loading: Chargement …
login_pwd: "Mot de passe :"
login_retry: Votre nom d'utilisateur du site n'a pas été reconnu. Merci de réessayer.
login_title: Connexion impossible
@ -132,6 +135,7 @@ fr:
option_layer_ooc_25k: Historique UK au 1:25k
option_layer_ooc_7th: Historique UK 7e
option_layer_ooc_npe: Historique UK NPE
option_layer_ooc_scotland: "Royaume-Uni historique : Ecosse"
option_layer_streets_haiti: "Haïti: noms des rues"
option_layer_tip: Choisir l'arrière-plan à afficher
option_limitways: Avertir lors du chargement d'une grande quantité de données
@ -192,6 +196,11 @@ fr:
retry: Réessayer
revert: Révoquer
save: Sauvegarder
tags_backtolist: Retour à la liste
tags_descriptions: Descriptions de « $1 »
tags_findatag: Rechercher un mot-clé
tags_matching: Mots-clés populaires correspondant à « $1 »
tags_typesearchterm: "Tapez le mot à rechercher :"
tip_addrelation: Ajouter à une relation
tip_addtag: Ajouter une nouvelle balise
tip_alert: Une erreur est survenue - Cliquez pour plus de détails

View file

@ -34,6 +34,7 @@ hu:
advanced_tooltip: Haladó szerkesztési műveletek
advanced_undelete: Törlés visszavonása
advice_bendy: Túl görbe a kiegyenesítéshez (SHIFT a kényszerítéshez)
advice_conflict: Szerver ütközés - lehet, hogy újra meg kell próbálnod menteni.
advice_deletingpoi: POI törlése (Z a visszavonáshoz)
advice_deletingway: Vonal törlése (Z a visszavonáshoz)
advice_microblogged: $1 állapotod frissítve
@ -91,6 +92,7 @@ hu:
hint_saving: adatok mentése
hint_saving_loading: adatok betöltése/mentése
inspector: Felügyelő
inspector_duplicate: "A következő másolata:"
inspector_in_ways: "A következő vonalakon:"
inspector_latlon: "Szélesség $1\nHosszúság $2"
inspector_locked: Zárolva
@ -102,6 +104,7 @@ hu:
inspector_way_connects_to_principal: $1 $2 vonalhoz és $3 másik $4 vonalhoz csatlakozik
inspector_way_nodes: $1 pont
inspector_way_nodes_closed: $1 pont (zárt)
loading: Betöltés…
login_pwd: "Jelszó:"
login_retry: A webhelyre való bejelentkezésed nem ismerhető fel. Kérlek, próbáld újra.
login_title: Nem lehet bejelentkezni
@ -128,6 +131,7 @@ hu:
option_layer_ooc_25k: "UK történelmi: 1:25k"
option_layer_ooc_7th: "UK történelmi: 7th"
option_layer_ooc_npe: "UK történelmi: NPE"
option_layer_ooc_scotland: "UK történelmi: Skócia"
option_layer_streets_haiti: "Haiti: utcanevek"
option_layer_tip: Válaszd ki a megjelenítendő hátteret
option_limitways: Figyelmeztetés sok adat betöltése előtt
@ -188,6 +192,11 @@ hu:
retry: Újra
revert: Visszaáll.
save: Mentés
tags_backtolist: Vissza a listához
tags_descriptions: "'$1' leírása"
tags_findatag: Címke keresése
tags_matching: "Népszerű címkék, amelyek illeszkednek a következőre: '$1'"
tags_typesearchterm: "Írj be egy szót a kereséshez:"
tip_addrelation: Hozzáadás kapcsolathoz
tip_addtag: Új címke hozzáadása
tip_alert: Hiba történt - kattints a részletekért

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -33,6 +33,7 @@ nl:
advanced_tooltip: Gevorderde bewerkingen
advanced_undelete: Verwijdering ongedaan maken
advice_bendy: Er zijn te veel bochten om recht te maken (SHIFT om toch uit te voeren)
advice_conflict: Server conflict. Probeer opnieuw op te slaan
advice_deletingpoi: POI verwijderen (Z om ongedaan te maken)
advice_deletingway: Weg verwijderen (Z om ongedaan te maken)
advice_microblogged: Uw status bij $1 is bijgewerkt
@ -90,6 +91,7 @@ nl:
hint_saving: gegevens opslaan
hint_saving_loading: gegevens laden en opslaan
inspector: Inspector
inspector_duplicate: Duplicaat van
inspector_in_ways: In wegen
inspector_latlon: "Breedte $1\nLengte $2"
inspector_locked: Op slot
@ -101,6 +103,7 @@ nl:
inspector_way_connects_to_principal: Verbindt $1 $2 en $3 andere $4
inspector_way_nodes: $1 nodes
inspector_way_nodes_closed: $1 nodes (gesloten)
loading: Bezig met laden...
login_pwd: "Wachtwoord:"
login_retry: Het aanmelden is mislukt. Probeer het nog een keer.
login_title: Het was niet mogelijk om aan te melden
@ -127,6 +130,7 @@ nl:
option_layer_ooc_25k: "VK historisch: 1:25k"
option_layer_ooc_7th: "VK historisch: 7e"
option_layer_ooc_npe: "VK historisch: NPE"
option_layer_ooc_scotland: "VK historisch: Schotland"
option_layer_streets_haiti: "Haïti: straatnamen"
option_layer_tip: De achtergrondweergave kiezen
option_limitways: Waarschuwen als er veel gegevens geladen moeten worden
@ -187,6 +191,11 @@ nl:
retry: Opnieuw proberen
revert: Terugdraaien
save: Opslaan
tags_backtolist: Terug naar de lijst
tags_descriptions: Beschrijvingen van "$1"
tags_findatag: Label zoeken
tags_matching: Populaire labels voor "$1"
tags_typesearchterm: "Zoeken naar:"
tip_addrelation: Voeg toe aan een relatie
tip_addtag: Nieuw label toevoegen
tip_alert: Foutmelding - Klik voor meer details

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: syck
# Author: BdgwksxD
# Author: Soeb
# Author: Sp5uhe
# Author: Yarl
pl:
@ -102,6 +103,7 @@ pl:
inspector_way_connects_to_principal: "Połączenia: $1 $2 oraz $3 innych $4"
inspector_way_nodes: $1 węzłów
inspector_way_nodes_closed: $1 węzłów (zamknięte)
loading: Ładowanie...
login_pwd: Hasło
login_retry: Twoja strona logowania nie została uznana. Spróbuj ponownie.
login_title: Błąd logowania
@ -188,6 +190,8 @@ pl:
retry: Spróbuj ponownie
revert: Cofnij
save: Zapisz
tags_backtolist: Powrót do listy
tags_descriptions: Opis '$1'
tip_addrelation: Dodaj do relacji
tip_addtag: Dodaj nowy znacznik
tip_alert: Wystąpił błąd kliknij, aby dowiedzieć się więcej

View file

@ -35,6 +35,7 @@ pt-BR:
advanced_tooltip: Ações avançadas de edição
advanced_undelete: Restaurar
advice_bendy: Muito curvo para endireitar (pressione SHIFT para forçar)
advice_conflict: Conflito no servidor - você pode tentar novamente
advice_deletingpoi: Apagando Ponto de Interesse (Z para desfazer)
advice_deletingway: Excluindo caminho (Z para desfazer)
advice_microblogged: Atualizamos seu status no $1
@ -92,6 +93,7 @@ pt-BR:
hint_saving: salvando dados
hint_saving_loading: carregando/salvando dados
inspector: Inspetor
inspector_duplicate: Duplicado de
inspector_in_ways: Nos caminhos
inspector_latlon: "Lat $1\nLon $2"
inspector_locked: Bloqueado
@ -99,15 +101,20 @@ pt-BR:
inspector_not_in_any_ways: Não está em nenhuma via (POI)
inspector_unsaved: Não salvo
inspector_uploading: (enviando)
inspector_way: $1
inspector_way_connects_to: Conecta-se com $1 caminhos
inspector_way_connects_to_principal: Liga a $1 $2 e $3 outros $4
inspector_way_name: $1 ($2)
inspector_way_nodes: $1 nós
inspector_way_nodes_closed: $1 nós (fechado)
loading: Carregando…
login_pwd: "Senha:"
login_retry: O seu site de login não foi reconhecido. Por favor tente novamente.
login_title: Não foi possível efetuar o log in
login_uid: "Nome de usuário:"
mail: Agência de correio
mail: Msg.
microblog_name_identica: Identi.ca
microblog_name_twitter: Twitter
more: Mais
newchangeset: "Por favor tente de novo: Potlatch iniciará um novo conjunto de mudanças."
"no": Não
@ -120,52 +127,59 @@ pt-BR:
offset_narrowcanal: Canal estreito
ok: Ok
openchangeset: Abrindo changeset
option_custompointers: Utilize os apontadores caneta e mão
option_custompointers: Apontadores caneta e mão
option_external: "Lançador externo:"
option_fadebackground: Esmaecer o plano de fundo
option_layer_cycle_map: OSM - cycle map
option_layer_digitalglobe_haiti: "Haiti: DigitalGlobe"
option_layer_geoeye_gravitystorm_haiti: "Haiti: GeoEye Jan 13"
option_layer_geoeye_nypl_haiti: "Haiti: GeoEye Jan 13+"
option_layer_maplint: OSM - Maplint (erros)
option_layer_mapnik: OSM - Mapnik
option_layer_nearmap: "Austrália: NearMap"
option_layer_ooc_25k: "UK histórico: 1:25k"
option_layer_ooc_7th: "UK histórico: 7th"
option_layer_ooc_npe: "UK histórico: NPE"
option_layer_ooc_scotland: "UK histórico: Escócia"
option_layer_osmarender: OSM - Osmarender
option_layer_streets_haiti: "Haiti: nomes de ruas"
option_layer_tip: Escolha o fundo a mostrar
option_limitways: Avisa quando estiver carregando grande quantidade de dados.
option_layer_yahoo: Yahoo!
option_limitways: Avisa carga de muitos dados
option_microblog_id: "Nome do microblog:"
option_microblog_pwd: "Senha do microblog:"
option_noname: Realçar estradas sem nome
option_photo: "KML da foto:"
option_thinareas: Usar linhas mais finas para áreas
option_thinlines: Utilize linhas finas em todas as escalas
option_thinareas: Linhas mais finas em áreas
option_thinlines: Sempre usar linhas finas
option_tiger: Destacar TIGER sem mudança
option_warnings: Mostrar avisos flutuantes
point: Ponto
preset_icon_airport: Aeroporto
preset_icon_bar: Bar
preset_icon_bus_stop: Ponto de ônibus
preset_icon_bus_stop: P. de ônibus
preset_icon_cafe: Café
preset_icon_cinema: Cinema
preset_icon_convenience: Loja de conveniência
preset_icon_disaster: Edifício no Haiti
preset_icon_convenience: Conveniência
preset_icon_disaster: Edif. no Haiti
preset_icon_fast_food: Fast food
preset_icon_ferry_terminal: Terminal de barcas
preset_icon_ferry_terminal: Term. Balsa
preset_icon_fire_station: Bombeiros
preset_icon_hospital: Hospital
preset_icon_hotel: Hotel
preset_icon_museum: Museu
preset_icon_parking: Estacionamento
preset_icon_pharmacy: Farmácia
preset_icon_place_of_worship: Lugar de adoração
preset_icon_place_of_worship: Templo Rel.
preset_icon_police: Delegacia
preset_icon_post_box: Caixa de correio
preset_icon_post_box: Cx. correio
preset_icon_pub: Pub
preset_icon_recycling: C. de Reciclagem
preset_icon_recycling: C. de reciclagem
preset_icon_restaurant: Restaurante
preset_icon_school: Escola
preset_icon_station: Estação de trem
preset_icon_station: Est. de trem
preset_icon_supermarket: Supermercado
preset_icon_taxi: Ponto de táxi
preset_icon_taxi: Pto. de táxi
preset_icon_telephone: Telefone
preset_icon_theatre: Teatro
preset_tip: Escolha dentre um menu de tags que descrevam $1
@ -180,15 +194,20 @@ pt-BR:
prompt_live: No modo Ao Vivo, cada item que você altera é salvo na base de dados do OpenStreetMap instantaneamente - não é recomendado para iniciantes. Tem certeza?
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: "Retornar a uma versão previamente salva:"
prompt_revertversion: "Reverter para versão anterior:"
prompt_savechanges: Salvar mudanças
prompt_taggedpoints: Alguns dos pontos nesse caminho possuem tags (rótulos). Deseja realmente apagá-los?
prompt_track: Converta a sua trilha GPS para caminhos (trancados) a serem editados.
prompt_unlock: Clique para desbloquear
prompt_welcome: Bem-vindo ao OpenStreetMap!
retry: Tentar novamente
revert: Reverter
revert: Desfaz.
save: Salvar
tags_backtolist: Voltar à lista
tags_descriptions: Descrições de '$1'
tags_findatag: Encontrar uma etiqueta
tags_matching: Etiquetas populares que coincidem com '$1'
tags_typesearchterm: "Digite uma palavra para buscar:"
tip_addrelation: Adicionar a uma relação
tip_addtag: Adicionar um novo tag (rótulo)
tip_alert: Ocorreu um erro - clique para mais informações

View file

@ -35,6 +35,7 @@ ru:
advanced_tooltip: Расширенные действия по редактированию
advanced_undelete: Восстановить
advice_bendy: Сильно изогнуто (SHIFT - выпрямить)
advice_conflict: Конфликт на сервере — возможно, потребуется повторное сохранение
advice_deletingpoi: Удаление точки интереса (Z для отмены)
advice_deletingway: Удаление линии (Z для отмены)
advice_microblogged: Ваш новый статус $1
@ -92,6 +93,7 @@ ru:
hint_saving: сохранение данных
hint_saving_loading: загрузка / сохранение данных
inspector: Просмотр карты
inspector_duplicate: Дублирование объекта
inspector_in_ways: В линиях
inspector_latlon: "Шир $1\nДол $2"
inspector_locked: Заблокировано
@ -105,6 +107,7 @@ ru:
inspector_way_name: $1 ($2)
inspector_way_nodes: точек ($1 шт.)
inspector_way_nodes_closed: $1 точек (замкнуто)
loading: Загрузка…
login_pwd: "Пароль:"
login_retry: Ваш логин с сайта не был распознан. Пожалуйста, попробуйте ещё раз.
login_title: Не удаётся войти
@ -135,6 +138,7 @@ ru:
option_layer_ooc_25k: "UK historic: 1:25k"
option_layer_ooc_7th: "UK historic: 7th"
option_layer_ooc_npe: "UK historic: NPE"
option_layer_ooc_scotland: "UK historic: Scotland"
option_layer_osmarender: OSM - Osmarender
option_layer_streets_haiti: "Гаити: названия улиц"
option_layer_tip: Выберите фон
@ -197,6 +201,11 @@ ru:
retry: Повторить
revert: Вернуть
save: Сохранить
tags_backtolist: Вернуться к списку
tags_descriptions: Описание «$1»
tags_findatag: Найти тег
tags_matching: Популярные теги, соответствующие «$1»
tags_typesearchterm: "Введите слово для поиска:"
tip_addrelation: Добавить отношение
tip_addtag: Добавить новый тег
tip_alert: Произошла ошибка — нажмите для получения подробностей

View file

@ -88,12 +88,14 @@ sk:
inspector_in_ways: V cestách
inspector_latlon: "Šírka $1\nDĺžka $2"
inspector_locked: Uzamknutý
inspector_node_count: ($1 krát)
inspector_not_in_any_ways: Nie je v žiadnej ceste (POI)
inspector_unsaved: Neuložené
inspector_uploading: (nahrávanie)
inspector_way_connects_to: Spojuje do $1 ciest
inspector_way_nodes: $1 bodov
inspector_way_nodes_closed: $1 body (zavreté)
loading: Načítava sa...
login_pwd: "Heslo:"
login_retry: Vaše miestne prihlásenie nebolo rozpoznané. Prosím skúste znovu.
login_title: Nemôžem sa prihlásiť

View file

@ -137,7 +137,7 @@ sr-EC:
preset_icon_place_of_worship: Свето место
preset_icon_police: Полицијска станица
preset_icon_post_box: Поштанско сандуче
preset_icon_pub: Кафана
preset_icon_pub: Паб
preset_icon_recycling: Рециклирање
preset_icon_restaurant: Ресторан
preset_icon_school: Школа

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: syck
# Author: Andygol
# Author: Prima klasy4na
uk:
a_poi: $1 об’єкта (POI)
a_way: $1 лінію
@ -128,6 +129,7 @@ uk:
option_layer_ooc_7th: "В.БРИТАНІЯ істор.: 1:7000"
option_layer_ooc_npe: "В.БРИТАНІЯ істор.: NPE"
option_layer_osmarender: OSM — Osmarender
option_layer_streets_haiti: "Гаїті: назви вулиць"
option_layer_tip: Оберіть фон
option_limitways: Попереджати при завантаженні\nвеликих обсягів даних
option_microblog_id: "Ім'я мікроблогу:"
@ -145,6 +147,7 @@ uk:
preset_icon_cafe: Кафе
preset_icon_cinema: Кінотеатр
preset_icon_convenience: Мінімаркет
preset_icon_disaster: Будівля на Гаїті
preset_icon_fast_food: Забігайлівка
preset_icon_ferry_terminal: Паром
preset_icon_fire_station: Пожежна частина

View file

@ -101,8 +101,6 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/user/confirm-email', :controller => 'user', :action => 'confirm_email'
map.connect '/user/go_public', :controller => 'user', :action => 'go_public'
map.connect '/user/reset-password', :controller => 'user', :action => 'reset_password'
map.connect '/user/upload-image', :controller => 'user', :action => 'upload_image'
map.connect '/user/delete-image', :controller => 'user', :action => 'delete_image'
map.connect '/user/forgot-password', :controller => 'user', :action => 'lost_password'
map.connect '/index.html', :controller => 'site', :action => 'index'
@ -158,7 +156,6 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/user/:display_name/diary/:id/hide', :controller => 'diary_entry', :action => 'hide', :id => /\d+/
map.connect '/user/:display_name/diary/:id/hidecomment/:comment', :controller => 'diary_entry', :action => 'hidecomment', :id => /\d+/, :comment => /\d+/
map.connect '/user/:display_name/account', :controller => 'user', :action => 'account'
map.connect '/user/:display_name/set_home', :controller => 'user', :action => 'set_home'
map.connect '/user/:display_name/activate', :controller => 'user', :action => 'activate'
map.connect '/user/:display_name/deactivate', :controller => 'user', :action => 'deactivate'
map.connect '/user/:display_name/hide', :controller => 'user', :action => 'hide'

View file

@ -40,7 +40,7 @@
projection: new OpenLayers.Projection("EPSG:900913")
});
var attribution = 'Data by <a target="_parent" href="http://www.openstreetmap.org">OpenStreetMap</a>';
var attribution = '(C) <a target="_parent" href="http://www.openstreetmap.org">OpenStreetMap</a> and contributors, <a target="_parent" href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>';
var args = OpenLayers.Util.getParameters();
if (!args.layer || args.layer == "mapnik") {
var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {

View file

@ -0,0 +1 @@
google-site-verification: googled06a989d1ccc8364.html

View file

@ -60,9 +60,11 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj
args[objtype] = objid;
}
node.href = setArgs("/edit", args);
node.title = i18n("javascripts.site.edit_tooltip");
node.style.fontStyle = 'normal';
} else {
node.href = 'javascript:alert(i18n("javascripts.site.edit_zoom_alert"));';
node.title = i18n("javascripts.site.edit_disabled_tooltip");
node.style.fontStyle = 'italic';
}
}
@ -85,9 +87,11 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj
}
node.href = setArgs("/history", args);
node.title = i18n("javascripts.site.history_tooltip");
node.style.fontStyle = 'normal';
} else {
node.href = 'javascript:alert(i18n("javascripts.site.history_zoom_alert"));';
node.title = i18n("javascripts.site.history_disabled_tooltip");
node.style.fontStyle = 'italic';
}
}

Binary file not shown.

10
public/potlatch/tags.css Normal file
View file

@ -0,0 +1,10 @@
h2 { font-family: Arial,Helvetica,sans-serif;
font-size: 14px;
color: #DDDDFF; }
p { font-family: Arial,Helvetica,sans-serif;
font-size: 12px;
color: #FFFFFF; }
a:link { color: #00FFFF;
text-decoration: underline; }

View file

@ -1,6 +1,67 @@
Sitemap: http://www.openstreetmap.org/sitemap.xml.gz
User-agent: *
Disallow: /user/
Disallow: /traces/tag/
Disallow: /traces/page/
Disallow: /api/
Disallow: /browse/
Disallow: /trace/
Disallow: /edit
Allow: /browse/node/
Allow: /browse/way/
Allow: /browse/relation/
Disallow: /browse
Disallow: /login
Disallow: /geocoder
Disallow: /history
Disallow: /message
Disallow: /trace/
Disallow: /*lat=
Disallow: /*node=
Disallow: /*way=
Disallow: /*relation=
User-agent: Slurp
Disallow: /user/*/traces/
Disallow: /user/*/edits/
Disallow: /user/*/diary/
Allow: /user/
Disallow: /traces/tag/
Disallow: /traces/page/
Disallow: /api/
Disallow: /edit
Allow: /browse/node/
Allow: /browse/way/
Allow: /browse/relation/
Disallow: /browse
Disallow: /login
Disallow: /geocoder
Disallow: /history
Disallow: /message
Disallow: /trace/
Disallow: /*lat=
Disallow: /*node=
Disallow: /*way=
Disallow: /*relation=
User-agent: Googlebot
Disallow: /user/*/traces/
Disallow: /user/*/edits/
Disallow: /user/*/diary/
Allow: /user/
Disallow: /traces/tag/
Disallow: /traces/page/
Disallow: /api/
Disallow: /edit
Allow: /browse/node/
Allow: /browse/way/
Allow: /browse/relation/
Disallow: /browse
Disallow: /login
Disallow: /geocoder
Disallow: /history
Disallow: /message
Disallow: /trace/
Disallow: /*lat=
Disallow: /*node=
Disallow: /*way=
Disallow: /*relation=

View file

@ -28,7 +28,7 @@ class AmfControllerTest < ActionController::TestCase
assert_equal way[0], -4
assert_equal way[1], "way"
assert_equal way[2], id
assert way[3].empty? and way[4].empty?
assert way[3].nil? and way[4].nil?
end
def test_getway_nonexistent
@ -41,7 +41,7 @@ class AmfControllerTest < ActionController::TestCase
assert_equal way[0], -4
assert_equal way[1], "way"
assert_equal way[2], 0
assert way[3].empty? and way[4].empty?
assert way[3].nil? and way[4].nil?
end
def test_whichways
@ -185,7 +185,7 @@ class AmfControllerTest < ActionController::TestCase
assert_equal rel[0], -4
assert_equal rel[1], "relation"
assert_equal rel[2], id
assert rel[3].empty? and rel[4].empty?
assert rel[3].nil? and rel[4].nil?
end
def test_getrelation_nonexistent
@ -198,7 +198,7 @@ class AmfControllerTest < ActionController::TestCase
assert_equal rel[0], -4
assert_equal rel[1], "relation"
assert_equal rel[2], id
assert rel[3].empty? and rel[4].empty?
assert rel[3].nil? and rel[4].nil?
end
def test_getway_old
@ -240,8 +240,8 @@ class AmfControllerTest < ActionController::TestCase
amf_parse_response
returned_way = amf_result("/1")
assert_equal -1, returned_way[0]
assert returned_way[3].empty?
assert returned_way[4].empty?
assert returned_way[3].nil?
assert returned_way[4].nil?
assert returned_way[5].nil?
end
end
@ -261,8 +261,8 @@ class AmfControllerTest < ActionController::TestCase
amf_parse_response
returned_way = amf_result("/1")
assert_equal -1, returned_way[0]
assert returned_way[3].empty?
assert returned_way[4].empty?
assert returned_way[3].nil?
assert returned_way[4].nil?
assert returned_way[5].nil?
end
end
@ -510,7 +510,7 @@ class AmfControllerTest < ActionController::TestCase
assert_equal 2, result.size
assert_equal -1, result[0], "Expected to get the status FAIL in the amf"
assert_equal "One of the tags is invalid. Please pester Adobe to fix Flash on Linux.", result[1]
assert_equal "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1.", result[1]
end
def test_putpoi_delete_valid

View file

@ -65,7 +65,7 @@ class UserControllerTest < ActionController::TestCase
# Check that the user account page will display and contains some relevant
# information for the user
def test_view_user_account
get :view
get :view, {:display_name => "unknown"}
assert_response :not_found
get :view, {:display_name => "test"}

View file

@ -40,9 +40,9 @@ class UserTest < ActiveSupport::TestCase
def test_email_valid
ok = %w{ a@s.com test@shaunmcdonald.me.uk hello_local@ping-d.ng
test_local@openstreetmap.org test-local@example.com
test_local@openstreetmap.org test-local@example.com }
bad = %w{ hi ht@ n@ @.com help@.me.uk help"hi.me.uk も対@応します
@ah.com @s.name }
bad = %w{ hi ht@ n@ @.com help@.me.uk help"hi.me.uk も対@応します }
ok.each do |name|
user = users(:normal_user)

View file

@ -0,0 +1,20 @@
Copyright (c) 2010 August Lilleaas
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.

View file

@ -0,0 +1,40 @@
= Session Persistence
Rails 3 plugin that lets you set how long you want your session to be persisted/remembered.
session_expires_after 2.weeks
session_expires_automatically # also aliased to expire_session
The timespan will reset on every request. If you set it to 2 weeks, and the user returns after 1 week, the session will be refreshed and last 2 weeks again. If the user returns after 3 weeks, the session will be reset.
A call to session_expires_automatically will return to a normal automatical expiry cookie, that will expire when the browser is closed.
Note: I haven't tested the plugin with memcache session storage, but it should work there as well.
= Usage
Here's an example sessions controller in a Rails 3 application.
class SessionsController < ApplicationController
def create
session_expires_after 2.weeks if params[:remember_me]
# ..normal auth goes here..
# for example
user = User.authenticate(params[:username], params[:password])
if user
session[:user] = user.id
else
# ..
end
end
def destroy
session_expires_automatically
# ..unauthorize here..
# for example
session[:user] = nil
redirect_to root_path
end
end

View file

@ -0,0 +1,3 @@
require "session_persistence"
ActionController::Base.class_eval { include SessionPersistence }
ActionController::Base.after_filter :_persist_session

View file

@ -0,0 +1,30 @@
module SessionPersistence
private
# Override this method if you don't want to use session[:_remember_for].
def session_persistence_key
:_remember_for
end
# Persist the session.
#
# session_expires_after 1.hour
# session_expires_after 2.weeks
def session_expires_after(seconds)
session[session_persistence_key] = seconds
end
# Expire the session.
def session_expires_automatically
session.delete(session_persistence_key)
end
alias_method :expire_session, :session_expires_automatically
def _persist_session
if session[session_persistence_key]
request.session_options = request.session_options.dup
request.session_options[:expire_after] = session[session_persistence_key]
request.session_options.freeze
end
end
end

View file

@ -0,0 +1,41 @@
require "test/unit"
module ActionController
class Base
def self.after_filter(*args)
end
end
end
$LOAD_PATH.push(File.dirname(__FILE__) + "../lib")
require "../init"
class SessionPersistenceTest < Test::Unit::TestCase
def setup
@controller = ActionController::Base.new
@controller.instance_eval {
def session
@session ||= {}
end
def session_persistence_key
:mine
end
}
end
def test_session_expires_after
@controller.instance_eval { session_expires_after 10 }
assert_equal 10, @controller.session[:mine]
end
def test_session_expires_automatically
@controller.instance_eval {
session_expires_after 10
session_expires_automatically
}
assert !@controller.session.has_key?(:mine)
end
end

View file

@ -0,0 +1,3 @@
pkg
test/debug.log
*.swp

View file

@ -0,0 +1,22 @@
= CHANGELOG
== Version 1.0
* initial version
== Version 1.1 (the Francis Hwang edition)
* moved Regexp out of class methods into the ValidatesEmailFormatOf module
== Version 1.2 (the Ismael Santos Kafeltz and Michael MacDonald edition)
* added support for un-escaped and escaped special characters in the local part, per RFC 3696
* added :allow_nil option
== Version 1.2.1 (the RTFM edition)
* added support for quoted local parts
* added length checks for domain and local parts
* corrected escaped character support for RFC 3696 Errata
* added :allow_blank option
* added :unless option
== Unreleased
* Now available as a gem on GitHub
* added should_validate_email_format_of

View file

@ -0,0 +1,20 @@
Copyright (c) 2006 Alex Dunae
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.

View file

@ -0,0 +1,58 @@
Validates email format
======================
Validate various formats of email address against RFC 2822.
Usage
-----
class PersonTest < ActiveSupport::TestCase
should_validate_email_format_of :email
end
class Person < ActiveRecord::Base
validates_email_format_of :email
end
Options
-------
:message =>
String. A custom error message (default is: " does not appear to be a valid e-mail address")
:on =>
Symbol. Specifies when this validation is active (default is :save, other options :create, :update)
:allow_nil =>
Boolean. Allow nil values (default is false)
:allow_blank =>
Boolean. Allow blank values (default is false)
:if =>
Specifies a method, proc or string to call to determine if the validation should occur
(e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The method,
proc or string should return or evaluate to a true or false value.
:unless =>
See :if option.
Testing
-------
To execute the unit tests run <tt>rake test</tt>.
The unit tests for this plugin use an in-memory sqlite3 database.
Installing the gem
------------------
* gem sources -a http://gems.github.com (only needed once)
* sudo gem install dancroak-validates\_email\_format\_of
Credits
-------
Written by Alex Dunae (dunae.ca), 2006-07.
Thanks to Francis Hwang (http://fhwang.net/) at Diversion Media for creating the 1.1 update.

View file

@ -0,0 +1,12 @@
require 'rake'
require 'rake/testtask'
test_files_pattern = 'test/*_test.rb'
Rake::TestTask.new do |t|
t.libs << 'lib'
t.pattern = test_files_pattern
t.verbose = false
end
desc "Run the test suite"
task :default => :test

View file

@ -0,0 +1 @@
require File.join(File.dirname(__FILE__), 'rails', 'init')

View file

@ -0,0 +1,56 @@
# encoding: utf-8
module ValidatesEmailFormatOf
LocalPartSpecialChars = Regexp.escape('!#$%&\'*-/=?+-^_`{|}~')
LocalPartUnquoted = '(([[:alnum:]' + LocalPartSpecialChars + ']+[\.\+]+))*[[:alnum:]' + LocalPartSpecialChars + '+]+'
LocalPartQuoted = '\"(([[:alnum:]' + LocalPartSpecialChars + '\.\+]*|(\\\\[\u0001-\uFFFF]))*)\"'
Regex = Regexp.new('^((' + LocalPartUnquoted + ')|(' + LocalPartQuoted + ')+)@(((\w+\-+)|(\w+\.))*\w{1,63}\.[a-z]{2,6}$)', Regexp::EXTENDED | Regexp::IGNORECASE)
end
module ActiveRecord
module Validations
module ClassMethods
# Validates whether the value of the specified attribute is a valid email address
#
# class User < ActiveRecord::Base
# validates_email_format_of :email, :on => :create
# end
#
# Configuration options:
# * <tt>message</tt> - A custom error message (default is: " does not appear to be a valid e-mail address")
# * <tt>on</tt> - Specifies when this validation is active (default is :save, other options :create, :update)
# * <tt>allow_nil</tt> - Allow nil values (default is false)
# * <tt>allow_blank</tt> - Allow blank values (default is false)
# * <tt>if</tt> - Specifies a method, proc or string to call to determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new { |user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true or false value.
# * <tt>unless</tt> - See <tt>:if</tt>
def validates_email_format_of(*attr_names)
options = { :message => ' does not appear to be a valid e-mail address',
:on => :save,
:allow_nil => false,
:allow_blank => false,
:with => ValidatesEmailFormatOf::Regex }
options.update(attr_names.pop) if attr_names.last.is_a?(Hash)
validates_each(attr_names, options) do |record, attr_name, value|
v = value.to_s
# local part max is 64 chars, domain part max is 255 chars
# TODO: should this decode escaped entities before counting?
begin
domain, local = v.reverse.split('@', 2)
rescue
record.errors.add(attr_name, options[:message])
next
end
unless v =~ options[:with] and not v =~ /\.\./ and domain.length <= 255 and local.length <= 64
record.errors.add(attr_name, options[:message])
end
end
end
end
end
end

View file

@ -0,0 +1 @@
require 'validates_email_format_of'

View file

@ -0,0 +1,12 @@
require 'rake'
require 'rake/testtask'
test_files_pattern = 'test/*_test.rb'
Rake::TestTask.new do |t|
t.libs << 'lib'
t.pattern = test_files_pattern
t.verbose = false
end
desc "Run the test suite"
task :default => :test

View file

@ -0,0 +1,97 @@
module ValidatesEmailFormatOf
module Shoulda
def should_validate_email_format_of(field)
metaclass = (class << self; self; end)
metaclass.send(:define_method,:should_allow_values) do |klass,*values|
should_allow_values_for(field, *values)
end
metaclass.send(:define_method,:should_not_allow_values) do |klass, *values|
should_not_allow_values_for(field, values, :message => /valid e-mail/)
end
should_validate_email_format_of_klass(model_class, field)
end
def should_validate_email_format_of_klass(klass, field)
context 'Typical valid email' do
should_allow_values(klass,
'valid@example.com',
'Valid@test.example.com',
'valid+valid123@test.example.com',
'valid_valid123@test.example.com',
'valid-valid+123@test.example.co.uk',
'valid-valid+1.23@test.example.com.au',
'valid@example.co.uk',
'v@example.com',
'valid@example.ca',
'valid_@example.com',
'valid123.456@example.org',
'valid123.456@example.travel',
'valid123.456@example.museum',
'valid@example.mobi',
'valid@example.info',
'valid-@example.com')
end
context 'valid email from RFC 3696, page 6' do
should_allow_values(klass,
'customer/department=shipping@example.com',
'$A12345@example.com',
'!def!xyz%abc@example.com',
'_somename@example.com')
end
context 'valid email with apostrophe' do
should_allow_values(klass, "test'test@example.com")
end
context 'valid email from http://www.rfc-editor.org/errata_search.php?rfc=3696' do
should_allow_values(klass,
'"Abc\@def"@example.com',
'"Fred\ Bloggs"@example.com',
'"Joe.\\Blow"@example.com')
end
context 'Typical invalid email' do
should_not_allow_values(klass,
'invalid@example-com',
'invalid@example.com.',
'invalid@example.com_',
'invalid@example.com-',
'invalid-example.com',
'invalid@example.b#r.com',
'invalid@example.c',
'invali d@example.com',
'invalidexample.com',
'invalid@example.')
end
context 'invalid email with period starting local part' do
should_not_allow_values(klass,'.invalid@example.com')
end
context 'invalid email with period ending local part' do
should_not_allow_values(klass, 'invalid.@example.com')
end
context 'invalid email with consecutive periods' do
should_not_allow_values(klass, 'invali..d@example.com')
end
# corrected in http://www.rfc-editor.org/errata_search.php?rfc=3696
context 'invalid email from http://tools.ietf.org/html/rfc3696, page 5' do
should_not_allow_values(klass,
'Fred\ Bloggs_@example.com',
'Abc\@def+@example.com',
'Joe.\\Blow@example.com')
end
context 'invalid email exceeding length limits' do
should_not_allow_values(klass,
"#{'a' * 65}@example.com",
"test@#{'a'*252}.com")
end
end
end
end
Test::Unit::TestCase.extend(ValidatesEmailFormatOf::Shoulda)

View file

@ -0,0 +1,47 @@
$:.unshift(File.dirname(__FILE__) + '/../lib')
require 'rubygems'
require 'active_record'
require 'active_record/base'
require 'validates_email_format_of'
ActiveRecord::Base.establish_connection(
:adapter => 'sqlite3',
:database => ':memory:')
ActiveRecord::Schema.define(:version => 0) do
create_table :users, :force => true do |t|
t.column 'email', :string
end
end
class Person < ActiveRecord::Base
validates_email_format_of :email, :on => :create, :message => 'fails with custom message', :allow_nil => true
end
require 'test/unit'
require 'shoulda'
require "#{File.dirname(__FILE__)}/../init"
class Test::Unit::TestCase #:nodoc:
def self.should_allow_values(klass,*good_values)
good_values.each do |v|
should "allow email to be set to #{v.inspect}" do
user = klass.new(:email => v)
user.save
assert_nil user.errors.on(:email)
end
end
end
def self.should_not_allow_values(klass,*bad_values)
bad_values.each do |v|
should "not allow email to be set to #{v.inspect}" do
user = klass.new(:email => v)
assert !user.save, "Saved user with email set to \"#{v}\""
assert user.errors.on(:email), "There are no errors set on email after being set to \"#{v}\""
end
end
end
end

View file

@ -0,0 +1,37 @@
require File.dirname(__FILE__) + '/test_helper'
require File.dirname(__FILE__) + '/../shoulda_macros/validates_email_format_of'
class User < ActiveRecord::Base
validates_email_format_of :email,
:on => :create,
:message => 'fails with custom message',
:allow_nil => true
end
class ValidatesEmailFormatOfTest < Test::Unit::TestCase
should_validate_email_format_of_klass(User, :email)
context 'An invalid user on update' do
setup do
@user = User.new(:email => 'dcroak@thoughtbot.com')
assert @user.save
assert @user.update_attribute(:email, '..dcroak@thoughtbot.com')
end
should 'pass validation' do
assert @user.valid?
assert @user.save
assert_nil @user.errors.on(:email)
end
end
context 'A user with a nil email' do
setup { @user = User.new(:email => nil) }
should 'pass validation' do
assert @user.valid?
assert @user.save
assert_nil @user.errors.on(:email)
end
end
end

View file

@ -0,0 +1,32 @@
Gem::Specification.new do |s|
s.name = "validates_email_format_of"
s.version = "1.3.0"
s.date = "2009-06-08"
s.summary = "Validate e-mail addreses against RFC 2822 and RFC 3696."
s.email = "dcroak@thoughtbot.com"
s.description = "Validate e-mail addreses against RFC 2822 and RFC 3696."
s.authors = ["Alex Dunae", "Dan Croak", "Mike Burns"]
s.extra_rdoc_files = ["CHANGELOG",
"lib/validates_email_format_of.rb",
"README.markdown"]
s.files = ["CHANGELOG",
"init.rb",
"lib/validates_email_format_of.rb",
"MIT-LICENSE",
"rails/init.rb",
"Rakefile",
"README",
"test/database.yml",
"test/fixtures/people.yml",
"test/fixtures/person.rb",
"test/schema.rb",
"test/test_helper.rb",
"test/validates_email_format_of_test.rb",
"Rakefile",
"validates_email_format_of.gemspec"]
s.has_rdoc = true
s.homepage = %q{http://code.dunae.ca/validates_email_format_of.html}
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Validates_email_format_of"]
s.require_paths = ["lib"]
end