# This configuration was generated by
# `rubocop --auto-gen-config`
-# on 2022-10-25 17:25:58 UTC using RuboCop version 1.37.1.
+# on 2022-11-01 18:20:38 UTC using RuboCop version 1.38.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
Metrics/AbcSize:
Max: 189
-# Offense count: 72
+# Offense count: 73
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
# AllowedMethods: refine
Metrics/BlockLength:
Metrics/PerceivedComplexity:
Max: 26
-# Offense count: 559
+# Offense count: 2495
+# This cop supports safe autocorrection (--autocorrect).
+Minitest/EmptyLineBeforeAssertionMethods:
+ Enabled: false
+
+# Offense count: 560
Minitest/MultipleAssertions:
Max: 52
Exclude:
- 'app/models/user.rb'
+# Offense count: 8
+# This cop supports unsafe autocorrection (--autocorrect-all).
+Rails/ActionControllerFlashBeforeRender:
+ Exclude:
+ - 'app/controllers/confirmations_controller.rb'
+ - 'app/controllers/friendships_controller.rb'
+ - 'app/controllers/oauth_controller.rb'
+ - 'app/controllers/traces_controller.rb'
+ - 'app/controllers/user_blocks_controller.rb'
+ - 'app/controllers/users_controller.rb'
+
# Offense count: 5
# Configuration parameters: Database, Include.
# SupportedDatabases: mysql, postgresql
gem "rubocop"
gem "rubocop-minitest"
gem "rubocop-performance"
- gem "rubocop-rails", "= 2.16.1"
+ gem "rubocop-rails"
gem "rubocop-rake"
gem "selenium-webdriver"
gem "simplecov", :require => false
autoprefixer-rails (10.4.7.0)
execjs (~> 2)
aws-eventstream (1.2.0)
- aws-partitions (1.650.0)
- aws-sdk-core (3.164.0)
+ aws-partitions (1.657.0)
+ aws-sdk-core (3.166.0)
aws-eventstream (~> 1, >= 1.0.2)
- aws-partitions (~> 1, >= 1.525.0)
- aws-sigv4 (~> 1.1)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
- aws-sdk-kms (1.58.0)
- aws-sdk-core (~> 3, >= 3.127.0)
+ aws-sdk-kms (1.59.0)
+ aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
- aws-sdk-s3 (1.116.0)
- aws-sdk-core (~> 3, >= 3.127.0)
+ aws-sdk-s3 (1.117.1)
+ aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
cancancan (3.4.0)
canonical-rails (0.2.14)
rails (>= 4.1, <= 7.1)
- capybara (3.37.1)
+ capybara (3.38.0)
addressable
matrix
mini_mime (>= 0.1.3)
crack (0.4.5)
rexml
crass (1.0.6)
- dalli (3.2.2)
+ dalli (3.2.3)
debug_inspector (1.1.0)
deep_merge (1.2.2)
delayed_job (4.1.11)
railties (>= 5)
doorkeeper-i18n (5.2.5)
doorkeeper (>= 5.2)
- dry-configurable (0.16.1)
- dry-core (~> 0.6)
+ dry-configurable (1.0.0)
+ dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
- dry-container (0.11.0)
- concurrent-ruby (~> 1.0)
- dry-core (0.9.1)
+ dry-core (1.0.0)
concurrent-ruby (~> 1.0)
zeitwerk (~> 2.6)
- dry-inflector (0.3.0)
+ dry-inflector (1.0.0)
dry-initializer (3.1.1)
- dry-logic (1.3.0)
+ dry-logic (1.4.0)
concurrent-ruby (~> 1.0)
- dry-core (~> 0.9, >= 0.9)
+ dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
- dry-schema (1.11.3)
+ dry-schema (1.12.0)
concurrent-ruby (~> 1.0)
- dry-configurable (~> 0.16, >= 0.16)
- dry-core (~> 0.9, >= 0.9)
+ dry-configurable (~> 1.0, < 2)
+ dry-core (~> 1.0, < 2)
dry-initializer (~> 3.0)
- dry-logic (~> 1.3)
- dry-types (~> 1.6)
+ dry-logic (>= 1.4, < 2)
+ dry-types (>= 1.7, < 2)
zeitwerk (~> 2.6)
- dry-types (1.6.1)
+ dry-types (1.7.0)
concurrent-ruby (~> 1.0)
- dry-container (~> 0.3)
- dry-core (~> 0.9, >= 0.9)
- dry-inflector (~> 0.1, >= 0.1.2)
- dry-logic (~> 1.3, >= 1.3)
+ dry-core (~> 1.0, < 2)
+ dry-inflector (~> 1.0, < 2)
+ dry-logic (>= 1.4, < 2)
zeitwerk (~> 2.6)
- dry-validation (1.9.0)
+ dry-validation (1.10.0)
concurrent-ruby (~> 1.0)
- dry-container (~> 0.7, >= 0.7.1)
- dry-core (~> 0.9, >= 0.9)
+ dry-core (~> 1.0, < 2)
dry-initializer (~> 3.0)
- dry-schema (~> 1.11, >= 1.11.0)
+ dry-schema (>= 1.12, < 2)
zeitwerk (~> 2.6)
- erb_lint (0.2.0)
+ erb_lint (0.3.0)
activesupport
better_html (>= 2.0.1)
parser (>= 2.7.1.4)
image_processing (1.12.2)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
- image_size (3.1.0)
+ image_size (3.2.0)
in_threads (1.6.0)
jbuilder (2.11.5)
actionview (>= 5.0.0)
kgio (2.11.4)
kramdown (2.4.0)
rexml
- libxml-ruby (3.2.3)
+ libxml-ruby (3.2.4)
listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
net-protocol
net-protocol (0.1.3)
timeout
- net-smtp (0.3.2)
+ net-smtp (0.3.3)
net-protocol
nio4r (2.5.8)
nokogiri (1.13.9)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3)
loofah (~> 2.3)
- rails-i18n (7.0.5)
+ rails-i18n (7.0.6)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.0.4)
rexml (3.2.5)
rinku (2.0.6)
rotp (6.2.0)
- rubocop (1.37.1)
+ rubocop (1.38.0)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.1.2.1)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.23.0)
parser (>= 3.1.1.0)
- rubocop-minitest (0.22.2)
+ rubocop-minitest (0.23.1)
rubocop (>= 0.90, < 2.0)
rubocop-performance (1.15.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
- rubocop-rails (2.16.1)
+ rubocop-rails (2.17.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
sprockets-rails
tilt
secure_headers (6.5.0)
- selenium-webdriver (4.5.0)
+ selenium-webdriver (4.6.1)
childprocess (>= 0.5, < 5.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
- strong_migrations (1.3.2)
+ strong_migrations (1.4.0)
activerecord (>= 5.2)
terser (1.1.12)
execjs (>= 0.3.0, < 3)
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.1)
+ zeitwerk (2.6.6)
PLATFORMS
ruby
rubocop
rubocop-minitest
rubocop-performance
- rubocop-rails (= 2.16.1)
+ rubocop-rails
rubocop-rake
sanitize
sassc-rails
.text(I18n.t("browse.start_rjs.load_data")),
$("<div>").append(
$("<button type='button' class='btn-close'>")
+ .attr("aria-label", I18n.t("javascripts.close"))
.click(cancel))),
$("<p class='alert alert-warning'>")
.text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit })),
}
var turnByTurnTable = $("<table class='mb-3'>");
- var directionsCloseButton = $("<button type='button' class='btn-close'>");
+ var directionsCloseButton = $("<button type='button' class='btn-close'>")
+ .attr("aria-label", I18n.t("javascripts.close"));
$("#sidebar_content")
.empty()
# Helper methods for checking consistency
include ConsistencyValidations
+ ##
+ # Return XML giving the basic info about the changeset. Does not
+ # return anything about the nodes, ways and relations in the changeset.
+ def show
+ @changeset = Changeset.find(params[:id])
+ @include_discussion = params[:include_discussion].presence
+ render "changeset"
+
+ respond_to do |format|
+ format.xml
+ format.json
+ end
+ end
+
# Create a changeset from XML.
def create
assert_method :put
render :plain => cs.id.to_s
end
- ##
- # Return XML giving the basic info about the changeset. Does not
- # return anything about the nodes, ways and relations in the changeset.
- def show
- @changeset = Changeset.find(params[:id])
- @include_discussion = params[:include_discussion].presence
- render "changeset"
-
- respond_to do |format|
- format.xml
- format.json
- end
- end
-
##
# marks a changeset as closed. this may be called multiple times
# on the same changeset, so is idempotent.
before_action :set_request_formats, :except => [:create, :update, :delete]
- # Create a node from XML.
- def create
- assert_method :put
+ # Dump the details on many nodes whose ids are given in the "nodes" parameter.
+ def index
+ raise OSM::APIBadUserInput, "The parameter nodes is required, and must be of the form nodes=id[,id[,id...]]" unless params["nodes"]
- node = Node.from_xml(request.raw_post, :create => true)
+ ids = params["nodes"].split(",").collect(&:to_i)
- # Assume that Node.from_xml has thrown an exception if there is an error parsing the xml
- node.create_with_history current_user
- render :plain => node.id.to_s
+ raise OSM::APIBadUserInput, "No nodes were given to search for" if ids.empty?
+
+ @nodes = Node.find(ids)
+
+ # Render the result
+ respond_to do |format|
+ format.xml
+ format.json
+ end
end
# Dump the details on a node given in params[:id]
end
end
+ # Create a node from XML.
+ def create
+ assert_method :put
+
+ node = Node.from_xml(request.raw_post, :create => true)
+
+ # Assume that Node.from_xml has thrown an exception if there is an error parsing the xml
+ node.create_with_history current_user
+ render :plain => node.id.to_s
+ end
+
# Update a node from given XML
def update
node = Node.find(params[:id])
node.delete_with_history!(new_node, current_user)
render :plain => node.version.to_s
end
-
- # Dump the details on many nodes whose ids are given in the "nodes" parameter.
- def index
- raise OSM::APIBadUserInput, "The parameter nodes is required, and must be of the form nodes=id[,id[,id...]]" unless params["nodes"]
-
- ids = params["nodes"].split(",").collect(&:to_i)
-
- raise OSM::APIBadUserInput, "No nodes were given to search for" if ids.empty?
-
- @nodes = Node.find(ids)
-
- # Render the result
- respond_to do |format|
- format.xml
- format.json
- end
- end
end
end
end
end
+ ##
+ # Read a note
+ def show
+ # Check the arguments are sane
+ raise OSM::APIBadUserInput, "No id was given" unless params[:id]
+
+ # Find the note and check it is valid
+ @note = Note.find(params[:id])
+ raise OSM::APINotFoundError unless @note
+ raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || current_user&.moderator?
+
+ # Render the result
+ respond_to do |format|
+ format.xml
+ format.rss
+ format.json
+ format.gpx
+ end
+ end
+
##
# Create a new note
def create
end
end
+ ##
+ # Delete (hide) a note
+ def destroy
+ # Check the arguments are sane
+ raise OSM::APIBadUserInput, "No id was given" unless params[:id]
+
+ # Extract the arguments
+ id = params[:id].to_i
+ comment = params[:text]
+
+ # Find the note and check it is valid
+ @note = Note.find(id)
+ raise OSM::APINotFoundError unless @note
+ raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible?
+
+ # Mark the note as hidden
+ Note.transaction do
+ @note.status = "hidden"
+ @note.save
+
+ add_comment(@note, comment, "hidden", :notify => false)
+ end
+
+ # Return a copy of the updated note
+ respond_to do |format|
+ format.xml { render :action => :show }
+ format.json { render :action => :show }
+ end
+ end
+
##
# Add a comment to an existing note
def comment
end
end
- ##
- # Read a note
- def show
- # Check the arguments are sane
- raise OSM::APIBadUserInput, "No id was given" unless params[:id]
-
- # Find the note and check it is valid
- @note = Note.find(params[:id])
- raise OSM::APINotFoundError unless @note
- raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible? || current_user&.moderator?
-
- # Render the result
- respond_to do |format|
- format.xml
- format.rss
- format.json
- format.gpx
- end
- end
-
- ##
- # Delete (hide) a note
- def destroy
- # Check the arguments are sane
- raise OSM::APIBadUserInput, "No id was given" unless params[:id]
-
- # Extract the arguments
- id = params[:id].to_i
- comment = params[:text]
-
- # Find the note and check it is valid
- @note = Note.find(id)
- raise OSM::APINotFoundError unless @note
- raise OSM::APIAlreadyDeletedError.new("note", @note.id) unless @note.visible?
-
- # Mark the note as hidden
- Note.transaction do
- @note.status = "hidden"
- @note.save
-
- add_comment(@note, comment, "hidden", :notify => false)
- end
-
- # Return a copy of the updated note
- respond_to do |format|
- format.xml { render :action => :show }
- format.json { render :action => :show }
- end
- end
-
##
# Return a list of notes matching a given string
def search
before_action :set_request_formats, :except => [:create, :update, :delete]
- def create
- assert_method :put
+ def index
+ raise OSM::APIBadUserInput, "The parameter relations is required, and must be of the form relations=id[,id[,id...]]" unless params["relations"]
- relation = Relation.from_xml(request.raw_post, :create => true)
+ ids = params["relations"].split(",").collect(&:to_i)
- # Assume that Relation.from_xml has thrown an exception if there is an error parsing the xml
- relation.create_with_history current_user
- render :plain => relation.id.to_s
+ raise OSM::APIBadUserInput, "No relations were given to search for" if ids.empty?
+
+ @relations = Relation.find(ids)
+
+ # Render the result
+ respond_to do |format|
+ format.xml
+ format.json
+ end
end
def show
end
end
+ def create
+ assert_method :put
+
+ relation = Relation.from_xml(request.raw_post, :create => true)
+
+ # Assume that Relation.from_xml has thrown an exception if there is an error parsing the xml
+ relation.create_with_history current_user
+ render :plain => relation.id.to_s
+ end
+
def update
logger.debug request.raw_post
end
end
- def index
- raise OSM::APIBadUserInput, "The parameter relations is required, and must be of the form relations=id[,id[,id...]]" unless params["relations"]
-
- ids = params["relations"].split(",").collect(&:to_i)
-
- raise OSM::APIBadUserInput, "No relations were given to search for" if ids.empty?
-
- @relations = Relation.find(ids)
-
- # Render the result
- respond_to do |format|
- format.xml
- format.json
- end
- end
-
def relations_for_way
relations_for_object("Way")
end
head :forbidden unless @trace.public? || @trace.user == current_user
end
+ def create
+ tags = params[:tags] || ""
+ description = params[:description] || ""
+ visibility = params[:visibility]
+
+ if visibility.nil?
+ visibility = if params[:public]&.to_i&.nonzero?
+ "public"
+ else
+ "private"
+ end
+ end
+
+ if params[:file].respond_to?(:read)
+ trace = do_create(params[:file], tags, description, visibility)
+
+ if trace.id
+ TraceImporterJob.perform_later(trace)
+ render :plain => trace.id.to_s
+ elsif trace.valid?
+ head :internal_server_error
+ else
+ head :bad_request
+ end
+ else
+ head :bad_request
+ end
+ end
+
def update
trace = Trace.visible.find(params[:id])
end
end
- def create
- tags = params[:tags] || ""
- description = params[:description] || ""
- visibility = params[:visibility]
-
- if visibility.nil?
- visibility = if params[:public]&.to_i&.nonzero?
- "public"
- else
- "private"
- end
- end
-
- if params[:file].respond_to?(:read)
- trace = do_create(params[:file], tags, description, visibility)
-
- if trace.id
- TraceImporterJob.perform_later(trace)
- render :plain => trace.id.to_s
- elsif trace.valid?
- head :internal_server_error
- else
- head :bad_request
- end
- else
- head :bad_request
- end
- end
-
private
def do_create(file, tags, description, visibility)
before_action :set_request_formats, :except => [:gpx_files]
+ def index
+ raise OSM::APIBadUserInput, "The parameter users is required, and must be of the form users=id[,id[,id...]]" unless params["users"]
+
+ ids = params["users"].split(",").collect(&:to_i)
+
+ raise OSM::APIBadUserInput, "No users were given to search for" if ids.empty?
+
+ @users = User.visible.find(ids)
+
+ # Render the result
+ respond_to do |format|
+ format.xml
+ format.json
+ end
+ end
+
def show
if @user.visible?
# Render the result
end
end
- def index
- raise OSM::APIBadUserInput, "The parameter users is required, and must be of the form users=id[,id[,id...]]" unless params["users"]
-
- ids = params["users"].split(",").collect(&:to_i)
-
- raise OSM::APIBadUserInput, "No users were given to search for" if ids.empty?
-
- @users = User.visible.find(ids)
-
- # Render the result
- respond_to do |format|
- format.xml
- format.json
- end
- end
-
def gpx_files
@traces = current_user.traces.reload
render :content_type => "application/xml"
before_action :set_request_formats, :except => [:create, :update, :delete]
- def create
- assert_method :put
+ def index
+ raise OSM::APIBadUserInput, "The parameter ways is required, and must be of the form ways=id[,id[,id...]]" unless params["ways"]
- way = Way.from_xml(request.raw_post, :create => true)
+ ids = params["ways"].split(",").collect(&:to_i)
- # Assume that Way.from_xml has thrown an exception if there is an error parsing the xml
- way.create_with_history current_user
- render :plain => way.id.to_s
+ raise OSM::APIBadUserInput, "No ways were given to search for" if ids.empty?
+
+ @ways = Way.find(ids)
+
+ # Render the result
+ respond_to do |format|
+ format.xml
+ format.json
+ end
end
def show
end
end
+ def create
+ assert_method :put
+
+ way = Way.from_xml(request.raw_post, :create => true)
+
+ # Assume that Way.from_xml has thrown an exception if there is an error parsing the xml
+ way.create_with_history current_user
+ render :plain => way.id.to_s
+ end
+
def update
way = Way.find(params[:id])
new_way = Way.from_xml(request.raw_post)
end
end
- def index
- raise OSM::APIBadUserInput, "The parameter ways is required, and must be of the form ways=id[,id[,id...]]" unless params["ways"]
-
- ids = params["ways"].split(",").collect(&:to_i)
-
- raise OSM::APIBadUserInput, "No ways were given to search for" if ids.empty?
-
- @ways = Way.find(ids)
-
- # Render the result
- respond_to do |format|
- format.xml
- format.json
- end
- end
-
##
# returns all the ways which are currently using the node given in the
# :id parameter. note that this used to return deleted ways as well, but
current_user.tokens.delete_all
session[:user] = current_user.id
session[:fingerprint] = current_user.fingerprint
- redirect_to edit_account_path
elsif token
flash[:error] = t "confirmations.confirm_email.failure"
- redirect_to edit_account_path
else
flash[:error] = t "confirmations.confirm_email.unknown_token"
end
+
+ redirect_to edit_account_path
end
end
before_action :check_database_writable, :only => [:new, :create, :edit, :update, :comment, :hide, :hidecomment, :subscribe, :unsubscribe]
before_action :allow_thirdparty_images, :only => [:new, :create, :edit, :update, :index, :show, :comments]
+ def index
+ if params[:display_name]
+ @user = User.active.find_by(:display_name => params[:display_name])
+
+ if @user
+ @title = t "diary_entries.index.user_title", :user => @user.display_name
+ @entries = @user.diary_entries
+ else
+ render_unknown_user params[:display_name]
+ return
+ end
+ elsif params[:friends]
+ if current_user
+ @title = t "diary_entries.index.title_friends"
+ @entries = DiaryEntry.where(:user_id => current_user.friends)
+ else
+ require_user
+ return
+ end
+ elsif params[:nearby]
+ if current_user
+ @title = t "diary_entries.index.title_nearby"
+ @entries = DiaryEntry.where(:user_id => current_user.nearby)
+ else
+ require_user
+ return
+ end
+ else
+ @entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
+
+ if params[:language]
+ @title = t "diary_entries.index.in_language_title", :language => Language.find(params[:language]).english_name
+ @entries = @entries.where(:language_code => params[:language])
+ else
+ @title = t "diary_entries.index.title"
+ end
+ end
+
+ @params = params.permit(:display_name, :friends, :nearby, :language)
+
+ @page = (params[:page] || 1).to_i
+ @page_size = 20
+
+ @entries = @entries.visible unless can? :unhide, DiaryEntry
+ @entries = @entries.order("created_at DESC")
+ @entries = @entries.offset((@page - 1) * @page_size)
+ @entries = @entries.limit(@page_size)
+ @entries = @entries.includes(:user, :language)
+ end
+
+ def show
+ @entry = @user.diary_entries.visible.where(:id => params[:id]).first
+ if @entry
+ @title = t "diary_entries.show.title", :user => params[:display_name], :title => @entry.title
+ @comments = can?(:unhidecomment, DiaryEntry) ? @entry.comments : @entry.visible_comments
+ else
+ @title = t "diary_entries.no_such_entry.title", :id => params[:id]
+ render :action => "no_such_entry", :status => :not_found
+ end
+ end
+
def new
@title = t "diary_entries.new.title"
render :action => "new"
end
+ def edit
+ @title = t "diary_entries.edit.title"
+ @diary_entry = DiaryEntry.find(params[:id])
+
+ redirect_to diary_entry_path(@diary_entry.user, @diary_entry) if current_user != @diary_entry.user
+
+ set_map_location
+ rescue ActiveRecord::RecordNotFound
+ render :action => "no_such_entry", :status => :not_found
+ end
+
def create
@title = t "diary_entries.new.title"
end
end
- def edit
- @title = t "diary_entries.edit.title"
- @diary_entry = DiaryEntry.find(params[:id])
-
- redirect_to diary_entry_path(@diary_entry.user, @diary_entry) if current_user != @diary_entry.user
-
- set_map_location
- rescue ActiveRecord::RecordNotFound
- render :action => "no_such_entry", :status => :not_found
- end
-
def update
@title = t "diary_entries.edit.title"
@diary_entry = DiaryEntry.find(params[:id])
render :action => "no_such_entry", :status => :not_found
end
- def index
- if params[:display_name]
- @user = User.active.find_by(:display_name => params[:display_name])
-
- if @user
- @title = t "diary_entries.index.user_title", :user => @user.display_name
- @entries = @user.diary_entries
- else
- render_unknown_user params[:display_name]
- return
- end
- elsif params[:friends]
- if current_user
- @title = t "diary_entries.index.title_friends"
- @entries = DiaryEntry.where(:user_id => current_user.friends)
- else
- require_user
- return
- end
- elsif params[:nearby]
- if current_user
- @title = t "diary_entries.index.title_nearby"
- @entries = DiaryEntry.where(:user_id => current_user.nearby)
- else
- require_user
- return
- end
- else
- @entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
-
- if params[:language]
- @title = t "diary_entries.index.in_language_title", :language => Language.find(params[:language]).english_name
- @entries = @entries.where(:language_code => params[:language])
- else
- @title = t "diary_entries.index.title"
- end
- end
-
- @params = params.permit(:display_name, :friends, :nearby, :language)
-
- @page = (params[:page] || 1).to_i
- @page_size = 20
-
- @entries = @entries.visible unless can? :unhide, DiaryEntry
- @entries = @entries.order("created_at DESC")
- @entries = @entries.offset((@page - 1) * @page_size)
- @entries = @entries.limit(@page_size)
- @entries = @entries.includes(:user, :language)
- end
-
def rss
if params[:display_name]
user = User.active.find_by(:display_name => params[:display_name])
@entries = @entries.visible.includes(:user).order("created_at DESC").limit(20)
end
- def show
- @entry = @user.diary_entries.visible.where(:id => params[:id]).first
- if @entry
- @title = t "diary_entries.show.title", :user => params[:display_name], :title => @entry.title
- @comments = can?(:unhidecomment, DiaryEntry) ? @entry.comments : @entry.visible_comments
- else
- @title = t "diary_entries.no_such_entry.title", :id => params[:id]
- render :action => "no_such_entry", :status => :not_found
- end
- end
-
def hide
entry = DiaryEntry.find(params[:id])
entry.update(:visible => false)
before_action :check_database_writable, :only => [:new, :create, :reply, :mark, :destroy]
before_action :allow_thirdparty_images, :only => [:new, :create, :show]
- # Allow the user to write a new message to another user. This action also
- # deals with the sending of that message to the other user when the user
- # clicks send.
- # The display_name param is the display name of the user that the message is being sent to.
+ # Show a message
+ def show
+ @title = t ".title"
+ @message = Message.find(params[:id])
+
+ if @message.recipient == current_user || @message.sender == current_user
+ @message.message_read = true if @message.recipient == current_user
+ @message.save
+ else
+ flash[:notice] = t ".wrong_user", :user => current_user.display_name
+ redirect_to login_path(:referer => request.fullpath)
+ end
+ rescue ActiveRecord::RecordNotFound
+ @title = t "messages.no_such_message.title"
+ render :action => "no_such_message", :status => :not_found
+ end
+
+ # Allow the user to write a new message to another user.
def new
@message = Message.new(message_params.merge(:recipient => @user))
@title = t ".title"
end
end
+ # Destroy the message.
+ def destroy
+ @message = Message.where("to_user_id = ? OR from_user_id = ?", current_user.id, current_user.id).find(params[:id])
+ @message.from_user_visible = false if @message.sender == current_user
+ @message.to_user_visible = false if @message.recipient == current_user
+ if @message.save && !request.xhr?
+ flash[:notice] = t ".destroyed"
+
+ referer = safe_referer(params[:referer]) if params[:referer]
+
+ redirect_to referer || { :action => :inbox }
+ end
+ rescue ActiveRecord::RecordNotFound
+ @title = t "messages.no_such_message.title"
+ render :action => "no_such_message", :status => :not_found
+ end
+
# Allow the user to reply to another message.
def reply
message = Message.find(params[:message_id])
render :action => "no_such_message", :status => :not_found
end
- # Show a message
- def show
- @title = t ".title"
- @message = Message.find(params[:id])
-
- if @message.recipient == current_user || @message.sender == current_user
- @message.message_read = true if @message.recipient == current_user
- @message.save
- else
- flash[:notice] = t ".wrong_user", :user => current_user.display_name
- redirect_to login_path(:referer => request.fullpath)
- end
- rescue ActiveRecord::RecordNotFound
- @title = t "messages.no_such_message.title"
- render :action => "no_such_message", :status => :not_found
- end
-
# Display the list of messages that have been sent to the user.
def inbox
@title = t ".title"
render :action => "no_such_message", :status => :not_found
end
- # Destroy the message.
- def destroy
- @message = Message.where("to_user_id = ? OR from_user_id = ?", current_user.id, current_user.id).find(params[:id])
- @message.from_user_visible = false if @message.sender == current_user
- @message.to_user_visible = false if @message.recipient == current_user
- if @message.save && !request.xhr?
- flash[:notice] = t ".destroyed"
-
- referer = safe_referer(params[:referer]) if params[:referer]
-
- redirect_to referer || { :action => :inbox }
- end
- rescue ActiveRecord::RecordNotFound
- @title = t "messages.no_such_message.title"
- render :action => "no_such_message", :status => :not_found
- end
-
private
##
@tokens = current_user.oauth_tokens.authorized
end
- def new
- @client_application = ClientApplication.new
- end
-
- def create
- @client_application = current_user.client_applications.build(application_params)
- if @client_application.save
- flash[:notice] = t "oauth_clients.create.flash"
- redirect_to :action => "show", :id => @client_application.id
- else
- render :action => "new"
- end
- end
-
def show
@client_application = current_user.client_applications.find(params[:id])
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
+ def new
+ @client_application = ClientApplication.new
+ end
+
def edit
@client_application = current_user.client_applications.find(params[:id])
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
+ def create
+ @client_application = current_user.client_applications.build(application_params)
+ if @client_application.save
+ flash[:notice] = t "oauth_clients.create.flash"
+ redirect_to :action => "show", :id => @client_application.id
+ else
+ render :action => "new"
+ end
+ end
+
def update
@client_application = current_user.client_applications.find(params[:id])
if @client_application.update(application_params)
@redactions = Redaction.order(:id)
end
+ def show; end
+
def new
@redaction = Redaction.new
end
+ def edit; end
+
def create
@redaction = Redaction.new
@redaction.user = current_user
end
end
- def show; end
-
- def edit; end
-
def update
# NOTE: don't update the user ID
@redaction.title = params[:redaction][:title]
@target_user = target_user
end
- def mine
- redirect_to :action => :index, :display_name => current_user.display_name
- end
-
def show
@trace = Trace.find(params[:id])
@trace = Trace.new(:visibility => default_visibility)
end
+ def edit
+ @trace = Trace.find(params[:id])
+
+ if !@trace.visible?
+ head :not_found
+ elsif current_user.nil? || @trace.user != current_user
+ head :forbidden
+ else
+ @title = t ".title", :name => @trace.name
+ end
+ rescue ActiveRecord::RecordNotFound
+ head :not_found
+ end
+
def create
@title = t ".upload_trace"
end
end
- def data
- trace = Trace.find(params[:id])
-
- if trace.visible? && (trace.public? || (current_user && current_user == trace.user))
- if Acl.no_trace_download(request.remote_ip)
- head :forbidden
- elsif request.format == Mime[:xml]
- send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
- elsif request.format == Mime[:gpx]
- send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
- elsif trace.file.attached?
- redirect_to rails_blob_path(trace.file, :disposition => "attachment")
- else
- send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
- end
- else
- head :not_found
- end
- rescue ActiveRecord::RecordNotFound
- head :not_found
- end
-
- def edit
- @trace = Trace.find(params[:id])
-
- if !@trace.visible?
- head :not_found
- elsif current_user.nil? || @trace.user != current_user
- head :forbidden
- else
- @title = t ".title", :name => @trace.name
- end
- rescue ActiveRecord::RecordNotFound
- head :not_found
- end
-
def update
@trace = Trace.find(params[:id])
head :not_found
end
+ def mine
+ redirect_to :action => :index, :display_name => current_user.display_name
+ end
+
+ def data
+ trace = Trace.find(params[:id])
+
+ if trace.visible? && (trace.public? || (current_user && current_user == trace.user))
+ if Acl.no_trace_download(request.remote_ip)
+ head :forbidden
+ elsif request.format == Mime[:xml]
+ send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
+ elsif request.format == Mime[:gpx]
+ send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
+ elsif trace.file.attached?
+ redirect_to rails_blob_path(trace.file, :disposition => "attachment")
+ else
+ send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
+ end
+ else
+ head :not_found
+ end
+ rescue ActiveRecord::RecordNotFound
+ head :not_found
+ end
+
def georss
@traces = Trace.visible_to_all.visible
before_action :lookup_user_by_name, :only => [:set_status, :destroy]
before_action :allow_thirdparty_images, :only => [:show]
+ ##
+ # display a list of users matching specified criteria
+ def index
+ if request.post?
+ ids = params[:user].keys.collect(&:to_i)
+
+ User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
+ User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
+
+ redirect_to url_for(:status => params[:status], :ip => params[:ip], :page => params[:page])
+ else
+ @params = params.permit(:status, :ip)
+
+ conditions = {}
+ conditions[:status] = @params[:status] if @params[:status]
+ conditions[:creation_ip] = @params[:ip] if @params[:ip]
+
+ @user_pages, @users = paginate(:users,
+ :conditions => conditions,
+ :order => :id,
+ :per_page => 50)
+ end
+ end
+
+ def show
+ @user = User.find_by(:display_name => params[:display_name])
+
+ if @user &&
+ (@user.visible? || current_user&.administrator?)
+ @title = @user.display_name
+ else
+ render_unknown_user params[:display_name]
+ end
+ end
+
+ def new
+ @title = t "users.new.title"
+ @referer = if params[:referer]
+ safe_referer(params[:referer])
+ else
+ session[:referer]
+ end
+
+ append_content_security_policy_directives(
+ :form_action => %w[accounts.google.com *.facebook.com login.live.com github.com meta.wikimedia.org]
+ )
+
+ if current_user
+ # The user is logged in already, so don't show them the signup
+ # page, instead send them to the home page
+ redirect_to @referer || { :controller => "site", :action => "index" }
+ elsif params.key?(:auth_provider) && params.key?(:auth_uid)
+ self.current_user = User.new(:email => params[:email],
+ :email_confirmation => params[:email],
+ :display_name => params[:nickname],
+ :auth_provider => params[:auth_provider],
+ :auth_uid => params[:auth_uid])
+
+ flash.now[:notice] = render_to_string :partial => "auth_association"
+ else
+ check_signup_allowed
+
+ self.current_user = User.new
+ end
+ end
+
+ def create
+ self.current_user = User.new(user_params)
+
+ if check_signup_allowed(current_user.email)
+ session[:referer] = safe_referer(params[:referer]) if params[:referer]
+
+ Rails.logger.info "create: #{session[:referer]}"
+
+ if current_user.auth_provider.present? && current_user.pass_crypt.empty?
+ # We are creating an account with external authentication and
+ # no password was specified so create a random one
+ current_user.pass_crypt = SecureRandom.base64(16)
+ current_user.pass_crypt_confirmation = current_user.pass_crypt
+ end
+
+ if current_user.invalid?
+ # Something is wrong with a new user, so rerender the form
+ render :action => "new"
+ elsif current_user.auth_provider.present?
+ # Verify external authenticator before moving on
+ session[:new_user] = current_user
+ redirect_to auth_url(current_user.auth_provider, current_user.auth_uid), :status => :temporary_redirect
+ else
+ # Save the user record
+ session[:new_user] = current_user
+ redirect_to :action => :terms
+ end
+ end
+ end
+
+ ##
+ # destroy a user, marking them as deleted and removing personal data
+ def destroy
+ @user.soft_destroy!
+ redirect_to user_path(:display_name => params[:display_name])
+ end
+
def terms
@legale = params[:legale] || OSM.ip_to_country(request.remote_ip) || Settings.default_legale
@text = OSM.legal_text_for_country(@legale)
redirect_to edit_account_path
end
- def new
- @title = t "users.new.title"
- @referer = if params[:referer]
- safe_referer(params[:referer])
- else
- session[:referer]
- end
-
- append_content_security_policy_directives(
- :form_action => %w[accounts.google.com *.facebook.com login.live.com github.com meta.wikimedia.org]
- )
-
- if current_user
- # The user is logged in already, so don't show them the signup
- # page, instead send them to the home page
- redirect_to @referer || { :controller => "site", :action => "index" }
- elsif params.key?(:auth_provider) && params.key?(:auth_uid)
- self.current_user = User.new(:email => params[:email],
- :email_confirmation => params[:email],
- :display_name => params[:nickname],
- :auth_provider => params[:auth_provider],
- :auth_uid => params[:auth_uid])
-
- flash.now[:notice] = render_to_string :partial => "auth_association"
- else
- check_signup_allowed
-
- self.current_user = User.new
- end
- end
-
- def create
- self.current_user = User.new(user_params)
-
- if check_signup_allowed(current_user.email)
- session[:referer] = safe_referer(params[:referer]) if params[:referer]
-
- Rails.logger.info "create: #{session[:referer]}"
-
- if current_user.auth_provider.present? && current_user.pass_crypt.empty?
- # We are creating an account with external authentication and
- # no password was specified so create a random one
- current_user.pass_crypt = SecureRandom.base64(16)
- current_user.pass_crypt_confirmation = current_user.pass_crypt
- end
-
- if current_user.invalid?
- # Something is wrong with a new user, so rerender the form
- render :action => "new"
- elsif current_user.auth_provider.present?
- # Verify external authenticator before moving on
- session[:new_user] = current_user
- redirect_to auth_url(current_user.auth_provider, current_user.auth_uid), :status => :temporary_redirect
- else
- # Save the user record
- session[:new_user] = current_user
- redirect_to :action => :terms
- end
- end
- end
-
- def show
- @user = User.find_by(:display_name => params[:display_name])
-
- if @user &&
- (@user.visible? || current_user&.administrator?)
- @title = @user.display_name
- else
- render_unknown_user params[:display_name]
- end
- end
-
##
# sets a user's status
def set_status
redirect_to user_path(:display_name => params[:display_name])
end
- ##
- # destroy a user, marking them as deleted and removing personal data
- def destroy
- @user.soft_destroy!
- redirect_to user_path(:display_name => params[:display_name])
- end
-
- ##
- # display a list of users matching specified criteria
- def index
- if request.post?
- ids = params[:user].keys.collect(&:to_i)
-
- User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
- User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
-
- redirect_to url_for(:status => params[:status], :ip => params[:ip], :page => params[:page])
- else
- @params = params.permit(:status, :ip)
-
- conditions = {}
- conditions[:status] = @params[:status] if @params[:status]
- conditions[:creation_ip] = @params[:ip] if @params[:ip]
-
- @user_pages, @users = paginate(:users,
- :conditions => conditions,
- :order => :id,
- :per_page => 50)
- end
- end
-
##
# omniauth success callback
def auth_success
<div class="d-flex w-100">
<h2 class="flex-grow-1 text-break"><%= title %></h2>
<div>
- <button type="button" class="btn-close"></button>
+ <button type="button" class="btn-close" aria-label="<%= t("javascripts.close") %>"></button>
</div>
</div>
<% unless (banner = next_banner()).nil? %>
<%= link_to (image_tag banner[:img], :alt => banner[:alt], :title => banner[:alt]), banner[:link] %>
-<button type="button" class="btn-close position-absolute top-0 end-0 p-4" id="<%= banner_cookie(banner[:id]) %>"></button>
+<button type="button" class="btn-close position-absolute top-0 end-0 p-4" id="<%= banner_cookie(banner[:id]) %>" aria-label="<%= t("javascripts.close") %>"></button>
<% end %>
</form>
<form method="GET" action="<%= directions_path %>" class="directions_form pb-3">
- <div class="d-flex flex-row-reverse px-3 py-3"><button type="button" class="btn-close"></button></div>
+ <div class="d-flex flex-row-reverse px-3 py-3"><button type="button" class="btn-close" aria-label="<%= t("javascripts.close") %>"></button></div>
<div class="row gx-2 m-1">
<div class="col-1">
title: اعمل حساب
no_auto_account_create: للأسف نحن غير قادرين فى الوقت الحالى على إنشاء حساب
لك تلقائيًا.
- contact_support_html: يرجى الاتصال <a href="mailto:webmaster@openstreetmap.org">بمسؤول
- الموقع</a> لترتيب الحساب المراد إنشاؤه - وسنحاول التعامل مع هذا الطلب بأسرع
- وقت ممكن.
+ contact_support_html: يُرجَى الاتصال <a href="%{support}">بمدير الموقع</a> لترتيب
+ إنشاء حساب، سنحاول التعامل مع الطلب بأسرع وقت ممكن.
email address: 'عنوان البريد الإلكتروني:'
confirm email address: 'تأكيد عنوان البريد الإلكتروني:'
display name: 'اسم المستخدم:'
public editing:
heading: Kemm foran
enabled: Gweredekaet. N'eo ket dizanv ha gallout a ra aozañ roadennoù.
+ enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: Petra eo se ?
disabled: Diweredekaet ha ne c'hall ket aozañ roadennoù ; diznav eo an holl
aozadennoù kent.
review link text: Heuilhit al liamm-mañ evel ma karot evit sellet ouzh diferadennoù
nevez ar c'henlabourer hag asantiñ dezho.
agreed_with_pd: Disklêriet hoc'h eus ivez emañ ho tegasadennoù en domani foran.
+ link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
link text: Petra eo se ?
save changes button: Enrollañ ar c'hemmoù
make edits public button: Lakaat ma holl aozadennoù da vezañ foran
fall.
diary_entry:
posted_by_html: Postet gant %{link_user} da %{created} e %{language_link}.
+ updated_at_html: Hizivadur diwezhañ d'ar %{updated}.
comment_link: Skrivañ un evezhiadenn d'an enmont-mañ
reply_link: Kas ur gemennadenn d'an aozer
comment_count:
title: Enmontoù en deizlevr OpenStreetMap
description: Enmontoù nevez en deizlevr gant implijerien OpenStreetMap
comments:
+ title: Kemennadennoù skrivet en deizlevr gant %{user}
+ heading: Kemennadennoù-deizlevr %{user}
+ subheading_html: Kemennadennoù skrivet en deizlevr gant %{user}
no_comments: Kemennadenn deizlevr ebet
post: Embann
when: Pegoulz
comment: Evezhiadenn
newer_comments: Evezhiadennoù nevesañ
older_comments: Evezhiadennoù koshañ
+ doorkeeper:
+ flash:
+ applications:
+ create:
+ notice: Arload marilhet.
friendships:
make_friend:
heading: ↓Ouzhpennañ %{user} evel mignon ?
shed: Lochenn
stable: Marchosi
static_caravan: Karavanenn
+ temple: Templ
terrace: Renkad savadurioù
train_station: Porzh-houarn
university: Savadur Skol-Veur
trailhead: Lec'h loc'hañ
trunk: Hent-tizh
trunk_link: Hent-tizh
+ turning_circle: Kroashent-tro diabarzh
turning_loop: Kammdro dizehan
unclassified: Hent dirumm
"yes": Hent
historic:
aircraft: Karr-nij istorel
archaeological_site: Lec'hienn henoniel
+ bomb_crater: Krater-bombezenn istorel
battlefield: Tachenn emgann
boundary_stone: Bonn harzoù
building: Savadur istorel
bunker: Bunker
+ cannon: Kanol istorel
castle: Kastell
church: Iliz
city_gate: Porzh kêr
advertising: Bruderezh
antenna: Stign
beacon: Tour-tan
+ beam: Treust
beehive: Ruskenn
breakwater: Diwagenner
bridge: Pont
pier: Sav-mein
pipeline: Eoulsan
pumping_station: Savlec'h-pompañ
+ reservoir_covered: Mirlec'h toet
silo: Silo
snow_cannon: Kanol-erc'h
+ snow_fence: Kloued erc'h
storage_tank: Beol stokañ
+ street_cabinet: Armel deknikel
surveillance: Evezh
telescope: Teleskop
tower: Tour
+ utility_pole: Post tredan
wastewater_plant: Purlec'h tretañ an dourioù lous
watermill: Milin-dour
water_tap: Kog dour
switch: Hentoù-houarn heñchañ
tram: Tramgarr
tram_stop: Arsav tramgarr
+ turntable: Savenn-dro
yard: Gar-dibab
shop:
agrarian: Stal labour-douar
commented_changeset: '%{commenter} en deus skrivet un evezhiadenn d''an/ar
%{time} war un hollad cheñchamantoù emaoc''h o sellet outañ hag a zo bet
krouet gant %{changeset_author}'
+ commented_changeset_html: '%{commenter} en deus skrivet un evezhiadenn d''an/ar
+ %{time} war un hollad cheñchamantoù emaoc''h o sellet outañ hag a zo bet
+ krouet gant %{changeset_author}'
partial_changeset_with_comment: gant an addispleg '%{changeset_comment}'
+ partial_changeset_with_comment_html: gant an evezhiadenn '%{changeset_comment}'
partial_changeset_without_comment: Hep evezhiadenn
details: Muioc'h a ditouroù war an holl cheñchamantoù e %{url}.
+ details_html: Muioc'h a ditouroù war an holl cheñchamantoù e %{url}.
unsubscribe: Evit digoumanantiñ diouzh hizivadurioù an holl gemmoù, gweladennit
%{url} ha klikit war « Digoumanantiñ ».
confirmations:
description: Sevel ur goulenn pe divizout diwar-benn goulennoù dedennus war
un niver bras a demoù pe diwar-benn rolloù skignañ rannvroel.
forums:
- title: Foromoù
+ title: Foromoù (dispredet)
description: Goulennoù ha divizoù evit ar re a gav gwelloc'h un etrefas e
stil un daolenn skritellañ
+ community:
+ title: Forom ar gumuniezh
irc:
title: IRC
description: Flap etreoberiat e meur a yezh disheñvel ha diwar-benn danvezioù
all_traces: An holl roudoù
my_traces: Ma roudoù
traces_from: Roudoù GPS foran gant %{user}
+ remove_tag_filter: Lemel ar sil tikedennoù
destroy:
scheduled_for_deletion: Roudenn da vezañ dilamet
make_public:
not_an_admin: Ret eo deoc'h bezañ merour evit kas an ober-mañ da benn.
setup_user_auth:
blocked_zero_hour: Ur gemennadenn vallus zo war lec'hienn OpenStreetMap evidoc'h.
- Ret eo deoc'h lenn ar gemennadenn-se a-raok gallout enrollañ ho kemmoù.
+ Ret eo deoc'h he lenn a-raok gallout enrollañ ho kemmoù.
blocked: Stanket eo bet ho moned d'an API. Kevreit ouzh an etrefas web evit
gouzout hiroc'h.
need_to_see_terms: Evit ar mare n'oc'h ket aotreet da vont war an API ken. Kevreit
settings_menu:
account_settings: Arventennoù ar gont
oauth1_settings: Arventennoù OAuth 1
+ oauth2_applications: Arloadoù OAuth 2
oauth2_authorizations: Aotreoù OAuth 2
oauth:
authorize:
permissions:
missing: N'eo ket bet aotreet an arload ganeoc'h d'ober gan an arc'hwel-mañ
scopes:
+ read_prefs: Lenn penndibaboù an implijer
+ write_prefs: Kemmañ ho penndibaboù implijer
+ write_diary: Krouiñ enmonedoù en deizlevr, kemennadennoù ha kavout mignoned
write_api: Kemmañ ar gartenn
read_gpx: Lenn ar roudoù GPS prevez.
write_gpx: Enporzhiañ ar roudoù GPS
write_notes: Kemmañ an notennoù
+ read_email: Lenn chomlec'h postel an implijer
oauth_clients:
new:
title: Marilhañ un arload nevez
flash: Distrujet eo bet marilhadur an arload arval
oauth2_applications:
index:
+ new: Marilhañ un arload nevez
name: Anv
permissions: Aotreoù
application:
title: Ma sevenidigezhioù aotreet
application: Sevenidigezh
permissions: Aotreoù
+ application:
+ revoke: Nullañ ar moned
users:
new:
title: Kevreañ
deactivate_user: Diweredekaat an implijer-mañ
confirm_user: Kadarnaat an implijer-mañ
unconfirm_user: Digadarnaat an implijer-mañ
+ unsuspend_user: Distankañ an implijer-mañ
hide_user: Kuzhat an implijer-mañ
unhide_user: Diguzhat an implijer-mañ
delete_user: Dilemel an implijer-mañ
public editing:
heading: Guherandina ji her kesê re vekirî
enabled: Çalak e. Ne anonîm e û dikare daneyan biguherîne.
+ enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: Ev çiye?
disabled: Neçalak e û nikare daneyan biguherîne, hemû guherandinên berê anonîm
in.
bikî û qebûl bikî xêra xwe vê lînkê taqîb bike.
agreed_with_pd: Herwiha te beyan kir ku tu dixwazî guherandinên te wek Malê
Giştî were qebûlkirin.
+ link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
link text: Ev çi ye?
save changes button: Guherandinan qeyd bike
make edits public button: Hemû guherandinên min bila ji her kesê re vekirî be
none: Нема
openid: OpenID
google: Google
- facebook: Facebook
+ facebook: Фејсбук
windowslive: Windows Live
github: GitHub
wikipedia: Википедија
public editing:
heading: Јавно уредување
enabled: Овозможено. Сега не е анонимно и може да се уредуваат податоци.
+ enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: што е ова?
disabled: Оневозможено и не може да се уредуваат податоци, сите претходни
уредувања се анонимни.
title: Најава со Google
alt: Најава со OpenID од Google
facebook:
- title: Најава со Facebook
- alt: Најава со профил на Facebook
+ title: Најава со Фејсбук
+ alt: Најава со профил на Фејсбук
windowslive:
title: Најава со Windows Live
alt: Најава со сметка на Windows Live
oauth_clients:
show:
confirm: निश्चित हुनुहुन्छ ?
+ oauth2_applications:
+ show:
+ delete: मेट्ने
users:
new:
title: खाता खाेल्नुहाेस्
entry:
comment: Comentari
full: Nòta completa
+ account:
+ deletions:
+ show:
+ title: Suprimir lo còmpte
+ warning: Avís! Lo procès de supression dau còmpte es definitiu e pòt pas anullar.
+ delete_account: Suprimir lo còmpte
+ delete_introduction: 'Podètz suprimir vòstre còmpte OpenStreetMap en emplegant
+ lo boton dessota. Prenetz en compte lei detalhs seguents:'
+ delete_profile: S'eliminarà l'informacion de perfiu, comprés vòstre avatar,
+ la descripcion e la localizacion de vòstra demòra.
+ delete_display_name: S'eliminarà lo nom mostrat e se podrà utilizar per d'autrei
+ còmptes.
+ retain_caveats: 'Quauqueis informacions, pasmens, demoraràn a OpenStreetMap,
+ emai lo còmpte suprimit :'
+ retain_edits: Lei modificacions fachas a la mapa, se n'avètz agut fachas,
+ seràn mantengudas.
+ retain_traces: Lei traças GPS se n'avètz agut telecargadas, seràn mantengudas.
+ retain_diary_entries: Leis intradas e comentaris de jornau, se n'i a, seràn
+ mantengudas mai escondudas.
+ retain_notes: Lei nòtas e comentaris sus lei nòtas, se n'i a, seràn mantengudas
+ mai escondudas.
+ retain_changeset_discussions: Lei discussions sus lei cambiaments, se n'i
+ a, se conservaràn.
+ retain_email: L'adreiça e-mail sarà conservada.
+ confirm_delete: Siatz segur ?
+ cancel: Anullar
accounts:
edit:
title: Modificar lo compte
public editing:
heading: Modificacion publica
enabled: Activat. Pas anonim e pòt modificar las donadas.
+ enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: qu’es aquò ?
disabled: Desactivadas e sensa permés per editar; lei modificacions anterioras
son anonimas.
link text: qu’es aquò ?
save changes button: Enregistrar las modificacions
make edits public button: Rendre totas mas modificacions publicas
+ delete_account: Suprimir lo còmpte
update:
success_confirm_needed: Informacions sus l'utilizaire mesas a jorn amb succès.
Verificatz vòstra bóstia mail per tal de validar la verificacion de vòstre
novèla adreça e-mail.
success: Informacions sus l'utilizaire mesas a jorn amb succès.
+ destroy:
+ success: Còmpte suprimit...
browse:
created: Creat
closed: Plegat
reopened_by_html: Reactivat per %{user} fa <abbr title='%{exact_time}'>%{when}</abbr>
reopened_by_anonymous_html: Reactivat per un utilizaire anonim fa <abbr title='%{exact_time}'>%{when}</abbr>
hidden_by_html: Amagat per %{user} <abbr title='%{exact_time}'>fa %{when}</abbr>
- report: Avisar d’aquesta noticia
+ report: Avisar d’aquesta nòta
query:
title: Requèsta suls objèctes
introduction: Clicar sus la mapa per trobar los objèctes a proximitat.
chair_lift: Telesèti
drag_lift: Telesquí
gondola: Telecabina
+ magic_carpet: Cinta Transportadoira
platter: Montaplat
pylon: Pilòn
station: Gara de telecabina
runway: Pista
taxilane: Via de taxi
taxiway: Via de manòbra
- terminal: Terminal
+ terminal: Terminau
windsock: Manega de vent
amenity:
animal_boarding: Pension per animaus
roof: Torre
ruins: Bastissa en roïnas
school: Bastissa escolara
+ semidetached_house: Ostau mejancier
service: Bastissa de servici
shed: Cabanon
stable: Estable
warehouse: Entrepaus
"yes": Bastissa
club:
+ scout: Basa de Scouts
sport: Club esportiu
"yes": Cèrcle
craft:
trailhead: Ponch de partença
trunk: Via exprèssa
trunk_link: Via exprèssa
+ turning_circle: Rotonda de càncel
turning_loop: Virada en bocla
unclassified: Rota menora
"yes": Rota
reservoir: Sèrva
reservoir_watershed: Bacin versant de sèrva
residential: Zòna residenciala
- retail: Zòna comerciala
+ retail: Pargue comerciau
village_green: Zòna publica erborada
vineyard: Vinha
"yes": Usatge del terren
antenna: Antena
avalanche_protection: Proteccion còntra avalancas
beacon: Far
+ beam: Equipa
beehive: Bornhon
breakwater: Mòle
bridge: Pont
reservoir_covered: Depaus cobèrt
silo: Silò
snow_cannon: Canon de nèu
+ snow_fence: Barriera còntra lei avalancadas
storage_tank: Cistèrna d'emmagazinatge
street_cabinet: Armari tecnic
surveillance: Susvelhança
"yes": Luòc
railway:
abandoned: Via ferrada abandonada
+ buffer_stop: Butador
construction: Via ferrada en construccion
disused: Via ferrada desafectada
funicular: Via de funicular
platform: Plataforma ferroviària
preserved: Via ferrada conservada
proposed: Projècte de camin de fèrre
+ rail: Ralh
spur: Via de connexion
station: Gara ferroviària
stop: Arrèst de camin de fèrre
switch: Agulhas
tram: Tramvia
tram_stop: Arrèst de tram
+ turntable: Rotonda ferroviària
yard: Via de triatge
shop:
agrarian: Botiga agricòla
appliance: Botiga d'aparelhs electrodomestics
art: Botiga d'art
baby_goods: Botiga d'articles per la mainada
+ bag: Maroquinariá
bakery: Fornariá
bathroom_furnishing: Mòbles de banh
beauty: Botiga de produchs de beutat
deli: Tractaire
department_store: Grand magazin
discount: Magazin discount
- doityourself: Botiga de bricolatge
+ doityourself: Botiga de bricolejatge
dry_cleaning: Netejatge a sec
e-cigarette: Botiga de cigaretas electronicas
electronics: Magazin d'electronica
fishing: Botiga d'accessòris de pesca
florist: Florista
food: Botiga d'alimentacion
+ frame: Botiga d'enquadrament
funeral_directors: Pompas funèbras
furniture: Amòblament
garden_centre: Jardinariá
health_food: Botiga d'alimentacion naturala
hearing_aids: Aparelhs auditius
herbalist: Erboristeria
- hifi: Magazin Hi-Fi
+ hifi: Botiga Hi-Fi
houseware: Venda d’articles per l'ostau
ice_cream: Glacier
interior_decoration: Decoracion d'interior
hi: Bonjorn %{to_user},
header: '%{from_user} a publicat un comentari sus un article recent del jornal
OpenStreetMap amb lo subjècte %{subject} :'
+ header_html: '%{from_user} a publicat un comentari sus un article recent dau
+ jornau OpenStreetMap amb lo subjècte %{subject} :'
footer: Tanben podètz legir lo comentari sus %{readurl}, lo comentar sus %{commenturl}
o respondre sus %{replyurl}
message_notification:
hi: Bonjorn %{to_user},
header: '%{from_user} vos a mandat un messatge dempuèi OpenStreetMap amb lo
subjècte %{subject} :'
+ header_html: '%{from_user} vos a mandat un messatge d''OpenStreetMap amb lo
+ subjècte %{subject} :'
+ footer: Podètz tanben legir lo messatge a %{readurl} e podètz enviar un messatge
+ a l'autor a %{replyurl}
footer_html: Tanben podètz legir lo messatge a %{readurl} e i podètz respondre
a %{replyurl}
friendship_notification:
de %{place}.'
commented_note: '%{commenter} a resolgut una nòta de mapa qu''avètz comentada.
La nòta es pròcha de %{place}.'
+ commented_note_html: '%{commenter} a laissat un comentari sus una de vòstras
+ nòtas de mapa qu''aviatz comentada. La nòta es pròcha de %{place}.'
reopened:
subject_own: '[OpenStreetMap] %{commenter} a reactivat una de vòstras nòtas'
subject_other: '[OpenStreetMap] %{commenter} a reactivat una nòta a que vos
i interessàvetz'
your_note: '%{commenter} a reactivat una de vòstras nòtas de mapa prèp de
%{place}.'
+ your_note_html: '%{commenter} a laissat un comentari sus una de vòstrei nòtas
+ de mapa pròche de %{place}.'
commented_note: '%{commenter} a reactivat una nòta de mapa qu''avètz comentada.
La nòta se tròba prèp de %{place}.'
details: Mai de detalh sus la nòta pòt èsser obtengut a %{url}.
+ details_html: Podètz trobar mai de detalhs de la nòta a %{url}.
changeset_comment_notification:
hi: Bonjorn %{to_user},
greeting: Bonjorn,
al qual vos interessatz'
your_changeset: '%{commenter} daissèt un comentari lo %{time} sus un de vòstres
ensembles de cambiaments'
+ your_changeset_html: '%{commenter} laissèt un comentari lo %{time} sus un
+ de vòstrei ensems de cambiaments'
commented_changeset: '%{commenter} a fach un comentari per un ensems de cambiaments
de %{changeset_author} a %{time} e que seguissètz'
partial_changeset_with_comment: amb lo comentari « %{changeset_comment}' »
+ partial_changeset_with_comment_html: amb lo comentari « %{changeset_comment}' »
partial_changeset_without_comment: sens comentari
details: Mai de detalhs sus l’ensemble de modificacions a %{url}.
+ details_html: Mai de detalhs sus l’ensems de modificacions a %{url}.
unsubscribe: Per vos desabonar de las mesas a jorn d'aqueste ensemble de modificacions,
visitatz %{url} e clicatz sus « Desabonar ».
+ unsubscribe_html: Per vos desabonar deis actualizacions d'aqueste ensems de
+ modificacions, visitatz %{url} e clicatz sus « Desabonar ».
confirmations:
confirm:
heading: Verificatz vòstre corrièr electronic !
introduction_1: Vos avèm mandat un corrièl de confirmacion.
+ introduction_2: Confirmatz lo compte en clicant lo ligame que se tròba au corrièr
+ que t'avèm enviat e poiràs començar a editar la mapa.
press confirm button: Quichar lo boton confirmar çaijós per activar vòstre compte.
button: Confirmar
success: Compte confirmat, mercé de vos èsser enregistrat !
already active: Aqueste compte es ja estat confirmat.
unknown token: Lo còdi de confirmacion a expirat o existís pas.
+ reconfirm_html: S'as de besonh que te tornem mandar lo corrier de confirmacion,
+ <a href="%{reconfirm}">clica aicí</a>.
confirm_resend:
failure: L’utilizaire %{name} es introbable.
confirm_email:
heading: Confirmar lo cambiament de vòstra adreça e-mail
+ press confirm button: Quichatz lo boton de confirmar dessota per confirmar l'adreça
+ nòva de corrier electronic.
button: Confirmar
success: Modificacion de vòstra adreça de corrièr electronic confirmada !
+ failure: L'adreça de corrier electronic es ja estada confirmada amb aquesta
+ ficha.
+ unknown_token: Lo còde de confirmacion a expirat o existís pas.
messages:
inbox:
title: Bóstia de recepcion
my_inbox: Ma bóstia de recepcion
+ my_outbox: Mon mandador
messages: Avètz %{new_messages} e %{old_messages}
new_messages:
one: '%{count} messatge novèl'
body: O planhèm, i a pas cap de messatge amb aqueste identificant.
outbox:
title: Bóstia de mandadís
+ my_inbox: Mon recebedor
+ my_outbox: Mon mandador
messages:
one: Avètz %{count} messatge mandat
other: Avètz %{count} messatges mandats
reset: Reïnicializar lo senhal
flash changed: Vòstre senhal es estat modificat.
flash token bad: Avètz pas trobat aqueste geton, avètz verificat l'URL ?
+ preferences:
+ show:
+ title: Preferéncias
+ preferred_editor: 'Editor preferit :'
+ preferred_languages: Lengas preferidas
+ edit_preferences: Preferéncias de corrier electronic
+ edit:
+ title: Preferéncias de l'aparéncia
+ save: Actualizar lei preferéncias
+ cancel: Anullar
+ update:
+ failure: Se son pas pogudas actualizar lei preferéncias.
+ update_success_flash:
+ message: Preferéncias actualizadas
profiles:
edit:
+ title: Modificar lo perfiu
+ save: Actualizar lo perfiu
+ cancel: Anullar
image: 'Imatge :'
gravatar:
gravatar: Utilizar Gravatar
+ link: https://wiki.openstreetmap.org/wiki/OC:Cargar
+ what_is_gravatar: Qu'es aquò Grava(ta)r?
disabled: Gravatar es estat desactivat.
enabled: L'afichatge de vòstre Gravatar es estat activat.
new image: Ajustar un imatge
delete image: Suprimir l'imatge actual
replace image: Remplaçar l'imatge actuala
image size hint: (los imatges carrats d'al mens 100×100 pixèls foncionan melhor)
- home location: 'Emplaçament del domicili :'
+ home location: 'Emplaçament dau domicili :'
no home location: Avètz pas indicat l'emplaçament de vòstre domicili.
update home location on click: Metre a jorn l'emplaçament de vòstre domicili
quand clicatz sus la mapa ?
+ update:
+ success: S'es actualizat lo perfiu.
+ failure: S'es pas pogut actualizar lo perfiu.
sessions:
new:
title: Se connectar
lost password link: Avètz perdut vòstre senhal ?
login_button: Se connectar
register now: S'inscriure ara
+ with username: 'Avètz ja un còmpte OpenStreetMap ? Iniciatz session amb lo nom
+ d''usancier e lo senhau:'
with external: 'A la plaça, utilizatz un tèrç per vos connectar :'
new to osm: Novèl sus OpenStreetMap ?
to make changes: Per aportar de modificacions a las donadas OpenStreetMap, vos
title: Desconnexion
heading: Desconnexion d'OpenStreetMap
logout_button: Desconnexion
+ shared:
+ markdown_help:
+ title_html: Analisat amb <a href="https://kramdown.gettalong.org/quickref.html">kramdown</a>
+ headings: Títols
+ subheading: Sostítol
+ unordered: Lista sens ordenar
+ ordered: Lista ordenada
+ first: Premier element
+ second: Element segond
+ link: Li(g)ame
+ text: Tèxte
+ image: Imatge
+ alt: Ajustar de tèxte
+ url: URL
+ richtext_field:
+ edit: Modificar
+ preview: Previsualizacion
site:
about:
next: Seguent
copyright_html: <span>©</span>Contributors<br /> d’OpenStreetMap
- used_by_html: '%{name} provesís de donadas cartograficas sus de milierats de
- sites web, aplicacions mobilas e aparelhs'
+ used_by_html: '%{name} fornís de donadas cartograficas sus de milierats de sites
+ web, aplicacions mobilas e aparelhs'
lede_text: OpenStreetMap es bastit per una comunautat de cartografes benevòls
que contribuisson e mantenon las donadas de las rotas, caminòls, cafès, estacions
ferroviàrias e plan mai encara, pertot dins lo mond.
las podètz distribuir sonque jos la meteissa licéncia. Lo
<a href="https://opendatacommons.org/licenses/odbl/1.0/">tèxte
legal</a> complet detalha vòstres dreits e responsabilitats.
- intro_3_1_html: Nòstres carrèus de rendut cartografics, e tanben de nòstra
- documentacion, son disponibles jos la licéncia <a href="https://creativecommons.org/licenses/by-sa/2.0/">Creative
+ intro_3_1_html: Nòstrei carrèus de rendut cartografics, e tanben la documentacion,
+ son disponibles sota la licéncia <a href="https://creativecommons.org/licenses/by-sa/2.0/">Creative
Commons paternitat – partiment a l’identic 2.0</a> (CC-BY-SA).
credit_title_html: Cossí creditar OpenStreetMap
- credit_1_html: Demandam que vòstre crèdit compòrta la mencion « © los contributors
+ credit_1_html: Demandam que vòstre crèdit compòrte la mencion « © lei contribueires
d’OpenStreetMap ».
credit_2_1_html: Vos fau tanben botar en evidéncia que lei donadas son disponiblas
sota licéncia de basa de donadas dubèrtas e, s'utilizatz nòstrei mapas,
createnote: Apondre una nòta
license:
copyright: Copyright OpenStreetMap e sos contributors, jos una licéncia dobèrta
+ remote_failed: L'edicion a mancat. Asseguratz-vos que lo JOSM o lo Merkaartor
+ s'executa e que l'opcion de comandament a distància es abilitada
edit:
not_public: Avètz pas reglat vòstras modificacions per que sián publicas.
user_page_link: pagina d'utilizaire
title: Forums
description: De questions e de discussions per los que preferisson una interfàcia
jos la forma de tablèu d’afichatge.
+ community:
+ title: Comunautat
irc:
title: IRC
description: Discussion interactiva dins de fòrça lengas diferentas e sus
common:
- Espaci comun
- prada
+ - Jardin
retail: Zòna de comèrci
industrial: Zòna industriala
commercial: Zòna terciària
upload_failed: O planhèm, s'es pas cargar lo GPX. Un administraire es estat
alertat de l'error. Se vos plai, ensaja-o de nòu.
edit:
+ cancel: Anullar
title: Modificar la traça %{name}
heading: Modificar la traça %{name}
visibility_help: qué significa aquò ?
uploaded: 'Mandat lo :'
points: 'Punts :'
start_coordinates: 'Coordenadas de despart :'
+ coordinates_html: '%{latitude}; %{longitude}'
map: mapa
edit: modificar
owner: 'Proprietari :'
newer: Traças novèlas
trace:
pending: EN ESPÈRA
- count_points: '%{count} punts'
+ count_points: '%{count} ponchs'
more: mai
trace_details: Veire los detalhs de la traça
view_map: Veire la mapa
in: dins
index:
public_traces: Traças GPS publicas
+ my_gps_traces: Traças GPS
public_traces_from: Traças GPS publicas de %{user}
description: Percórrer las traças GPS telecargadas recentament
tagged_with: ' balisat amb %{tags}'
traça novèla</a> o per ne saber mai sul traçatge GPS, consultatz la <a href='https://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>pagina
wiki</a>.
upload_trace: Mandar una traça
- my_traces: las mias traças GPS
+ all_traces: Totei lei traças
+ my_traces: Mei traças GPS
+ traces_from: Traças GPS publicas de %{user}
+ remove_tag_filter: Elimina lo filtre d'etiquetas
destroy:
scheduled_for_deletion: Pista prevista per la supression
make_public:
not_an_admin: Avètz besonh d’èsser un administrador per realizar aquesta accion.
setup_user_auth:
blocked_zero_hour: Avètz un messatge urgent sus lo site web de OpenStreetMap.
- Avètz de legir lo messatge abans que poscatz sauvar vòstrei modificacions.
+ Avètz de legir lo messatge abans que posquetz sauvar lei modificacions.
blocked: Vòstre accès a l'API es estat blocat. Se vos plai, connectatz-vos au
site web per trobar mai d’informacions.
+ settings_menu:
+ account_settings: Configuracion
oauth:
authorize:
title: Autorizar l’accès a vòstre compte
deletions:
show:
title: میرا کھاتہ مٹاؤ
- delete_account: کھاتا مٹاؤ
+ delete_account: کھاتہ مٹاؤ
delete_introduction: 'ایہہ بٹن نال ٹہاڈے کھاتا مٹا سکاںگے اے۔ پر ویروے ویکھیو:'
retain_diary_entries: تہاڈے روزنامچے دے لیکھ تے ٹپݨیاں لُکاؤگیاں سی۔
retain_email: تہاڈے ایمیل دا پتہ رکھݨگے اے۔
make edits public button: میریاں ساریاں سودھاں عوام کرو
delete_account: کھاتہ مٹاؤ…
update:
- success_confirm_needed: ٹھیکھ اے، تہاڈے ورتنوالے دے ویروے نواں کیتے سی۔ ایہہ
+ success_confirm_needed: ٹھیک اے، تہاڈے ورتنوالے دے ویروے نواں کیتے سی۔ ایہہ
نواں پتہ لئی ایمیل وچ پکے دی کڑی۔
- success: ٹھیکھ اے، ویروے نواں کیتے سی۔
+ success: ٹھیک اے، ویروے نواں کیتے سی۔
destroy:
success: کھاتہ مٹایا۔
browse:
nursing_home: نرسنگ ہوم
parking: پارکنگ
parking_entrance: پارکنگ پروش
+ parking_space: پارکنگ دا تھاں
pharmacy: فارمیسی
place_of_worship: عبادتگاہ
police: پلیس
beauty: سندرتا والا
beverages: پیݨ پدارتھاں دی دُکان
bicycle: سائیکل دی دکان
+ bookmaker: کتاب بݨاؤݨ والا
books: کتاب دی دُکان
boutique: بُٹیک
butcher: کمسئی
search_guidance: 'مسئلے لئی کھوجیو:'
user_not_found: ورتنوالا نہیں ہوگیا سی
issues_not_found: کجھ مسئلے نہیں لبھیئے
- status: سٹÛ\8cٹس
+ status: ØØ§Ù\84ت
reports: رپورٹاں
last_updated: حالیہ سودھ دی تریخ
last_updated_time_html: <abbr title='%{title}'>%{time}</abbr>
press confirm button: پکا کرن لئی ایہہ بٹن چݨیو
button: پکا کرو
success: پکا کیتا، مہربانی!
- already active: ایہہ کھاتا پہلوں ہی تسدیک ہو چکا اے۔
+ already active: ایہہ کھاتہ پہلوں ہی تسدیک ہو چکا اے۔
unknown token: اُس تسدیکی کوڈ. دی میاد جاں ہوند ختم ہو چکی اے۔
confirm_resend:
failure: '%{name} ورتنوالا نہیں لبھیا۔'
register now: ہُݨے رجِستر کرو
with external: 'لوگاین کرن لئی ہور چݨ سکیو:'
new to osm: ایہہ نقشے تے نویں او؟
- to make changes: نقشے تے سودھان پاؤݨ لئی، تسیں کھاتا بݨا سکیو۔
+ to make changes: نقشے تے سودھاں پاوݨ لئی، تسیں کھاتہ بݨایو۔
create account minute: کھاتا بݨاؤ، صرف اِکّ منٹ لگدا اے۔
no account: کھاتہ نہیں اے؟
account not active: افسوس، حالیہ تہاڈے کھاتا نہیں پکا۔<br/> پکا کرن لئی تہاڈے
title: ایہدا اوورپیس دی فائل
description: ہور نقشے دے ڈیٹا نال ویب سائیٹ توں ڈاؤنلوڈ کریو
geofabrik:
- title: جیوفیںرِک فائلان
+ title: جیوفیںرِک فائلاں
+ description: برعظماں، دیشاں تے کجھ چݨے شہراں نال نقشے توں پرچالت ڈیٹا
metro:
title: میٹرو ایکسٹراکٹ
description: وڈا شہر بارے وچ برامد
add_a_note:
title: سودھ کرن دی وہل نہیں اے؟ کجھ نوٹ پا سکیو!
traces:
+ visibility:
+ private: نجی (صرف انام جاݨکاری ویکھدے، پوئینٹاں لئی کوئی لڑی نہیں اے)
+ public: عاوم (کھرے دی لسٹ وچ ایہہ ویکھدے، پر جاݨکاری انام اے تے پوئینٹاں لئی
+ کوئی لڑی نہیں اے)
new:
upload_trace: کھرے کھوجاں چڑھاؤ
visibility_help: ایہدا کیہ مطلب اے؟
allow_write_api: نقشہ سودھ سکدا
allow_write_gpx: کھرے چڑھاؤݨے
allow_write_notes: نوٹ سودھ سکدا
+ grant_access: اِجازت دیو
authorize_success:
verification: 'پکا کرن دا کوڈ: %{code}'
authorize_failure:
title: اَیپ سودھو
show:
key: 'ورتوں دی کنجی:'
+ access_url: 'پہنچ ٹوکن دی کڑی دا پتہ:'
authorize_url: 'اِجازت دی کڑی:'
edit: وروے سودھو
delete: اَیپ مٹاؤ
title: او اوتھ ویروے
my_tokens: میریاں اِجازت نال ایپلیکیشناں
application: ایپلیکیشن دا ناں
+ revoke: پرتاؤ!
my_apps: میرے اَیپ
no_apps_html: تہاڈے %{oauth} نال کجھ اَیپ جوڑنے چاہیدے؟ اِتھے ایہہ پاؤنگے سی۔
oauth: او آوتھ
new:
authorize: اِجازت دیو
deny: اِجازت نہیں دیو
+ error:
+ title: غلطی آئی گئی اے
show:
title: اِجازت دا کوڈ
oauth2_authorized_applications:
title: میریاں اِجازتاں
application: ایپلیکیشن
permissions: اِجازتاں
+ application:
+ revoke: اِجازت ہٹاؤ
+ confirm_revoke: ایس ایپلکیشن لئی اِجازت ہٹاؤ؟
users:
new:
title: بھرتی ہووو
my comments: ٹپݨیاں
my_preferences: ترجیحاں
my_dashboard: ڈیش بورڈ
+ blocks on me: میرے تے روکاں
+ blocks by me: میرے ولوں رکاں
edit_profile: تہاڈے صفحہ سودھو
send message: سنہا بھیجو
diary: روزنامچہ
latest edit: پچھلی سودھ (%{ago})
email address: 'ایمیل پتہ:'
created from: 'کتھوں اُساریا:'
- status: 'سٹیٹس:'
+ status: حالت
+ spam score: 'سپیم سکور:'
description: تفصیل
user location: ورتنوالے دی ستھتی
role:
update:
success: روک نویائی گئی۔
index:
+ title: ورتنوالے دے روکاں
heading: ورتنوالیاں لئی روکاں دی لسٹ
empty: حالاں کوئی روکاں نہیں بݨائیاں گیاں۔
revoke:
other: '%{count} سال'
show:
created: 'بݨایا:'
- status: سٹÛ\8cٹس
+ status: ØØ§Ù\84ت
show: وکھاؤ
edit: سودھو
revoke: پرتاؤ!
confirm: پکے؟
+ back: ساریاں روکاں ویکھو
revoker: 'پرتاؤݨ والا:'
block:
not_revoked: (نہیں پرتائی دتی گئی)
edit: سودھو
revoke: پرتاؤ
blocks:
+ display_name: روکیا ورتنوالا
creator_name: لیکھک
+ reason: روک دا کارن
status: درجہ
showing_page: صفحہ نمبر %{page}
next: اگلا »
edit_tooltip: نقشہ سودھو
edit_disabled_tooltip: نقشہ سودھݨ واسطے اندر نوں جاؤ
createnote_tooltip: نقشے تے نوٹ پایو
+ createnote_disabled_tooltip: نقشے تے نوٹ پاوݨ لئی وڈا کریو
+ map_notes_zoom_in_tooltip: نوٹ دکھݨ لئی وڈا کریو
+ map_data_zoom_in_tooltip: ڈیٹے دکھݨ لئی وڈا کریو
queryfeature_tooltip: نقشاں لئی پرشن
+ queryfeature_disabled_tooltip: نقش دے پرشن لئی وڈا کریو
changesets:
show:
comment: ٹپݨی کرو
graphhopper_bicycle: سائیکل (گریفہپر)
graphhopper_car: کار(گریف ہپر)
graphhopper_foot: پیر (گریفہوپر)
+ directions: دشاواں
instructions:
via_point_without_exit: (پوئینٹ دوارا)
follow_without_exit: '%{name} تے چلدے رہو'
public editing:
heading: Modificatzione pùblica
enabled: Abilitada. No anònimu e podet modificare datos.
+ enabled link: https://wiki.openstreetmap.org/wiki/Sc:Anonymous_edits
enabled link text: ite est custu?
disabled: Inabilitadu e chene permissu de mudare sos datos; totu sas modìficas
antepostas sunt anònimas.
e atzetare sas cunditziones noas pro sa contributzione.
agreed_with_pd: As fintzas decraradu chi cunsìderas sas modìficas tuas de
domìniu pùblicu.
+ link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms&uselang=sc
link text: ite est custu?
save changes button: Sarva sas modìficas
make edits public button: Faghe totu sas modìficas meas pùblicas
invalid_email_address: se ne prikaže kot veljaven elektronski naslov
models:
acl: Seznam nadzora dostopa
- changeset: Paket sprememb
- changeset_tag: Oznaka paketa sprememb
+ changeset: Množica sprememb
+ changeset_tag: Oznaka množice sprememb
country: Država
diary_comment: Komentar v dnevniku
diary_entry: Vpis v dnevnik
edited_by_html: Uredil(a) %{user} <abbr title='%{title}'>%{time}</abbr>
closed_by_html: Zaprl(a) %{user} <abbr title='%{title}'>%{time}</abbr>
version: Različica
- in_changeset: Paket sprememb
+ in_changeset: Množica sprememb
anonymous: anonimni
no_comment: (brez komentarja)
part_of: Del
view_details: Prikaz podrobnosti
location: 'Lokacija:'
changeset:
- title: 'Paket sprememb: %{id}'
+ title: 'Množica sprememb: %{id}'
belongs_to: Avtor
node: Vozlišč (%{count})
node_paginated: Vozlišča (%{x}-%{y} od %{count})
changesetxml: Paket sprememb XML
osmchangexml: osmChange XML
feed:
- title: Paket sprememb %{id}
- title_comment: Paket sprememb %{id} - %{comment}
+ title: Množica sprememb %{id}
+ title_comment: Množica sprememb %{id} – %{comment}
join_discussion: Prijavite se za pridružitev pogovoru
discussion: Pogovor
still_open: Paket sprememb je še vedno odprt – pogovor se bo začel, ko bo paket
node: vozlišče
way: pot
relation: zveza
- changeset: Paket sprememb
+ changeset: množica sprememb
note: opomba
timeout:
sorry: Pridobivanje podatkov za %{type} z ID-jem %{id} žal traja predolgo.
node: vozlišče
way: pot
relation: zveza
- changeset: Paket sprememb
+ changeset: množica sprememb
note: opomba
redacted:
redaction: Redakcija %{id}
changeset:
anonymous: Anonimen
no_edits: (brez urejanj)
- view_changeset_details: Ogled podrobnosti paketa sprememb
+ view_changeset_details: Ogled podrobnosti množice sprememb
changesets:
id: ID
saved_at: Shranjeno ob
comment: Komentar
area: Območje
index:
- title: Paketi sprememb
+ title: Množice sprememb
title_user: Paketi sprememb uporabnika %{user}
title_friend: Paketi sprememb mojih prijateljev
title_nearby: Paketi sprememb bližnjih uporabnikov
user_diaries_tooltip: Pregled dnevnikov uporabnikov
edit_with: Za urejanje uporabi %{editor}
tag_line: Prost wiki zemljevid sveta
- intro_header: Dobrodošli na OpenStreetMap!
+ intro_header: Pozdravljeni v OpenStreetMap!
intro_text: OpenStreetMap je zemljevid sveta, ki ga ustvarjajo ljudje kot ste
vi, brezplačen za uporabo z odprto licenco.
intro_2_create_account: Ustvarite uporabniški račun
%{possible_points} točk.
subject: '[OpenStreetMap] Uspeh uvoza datoteke GPX'
signup_confirm:
- subject: '[OpenStreetMap] Dobrodošli na OpenStreetMap'
+ subject: '[OpenStreetMap] Pozdravljeni v OpenStreetMap'
greeting: Pozdravljeni!
created: Nekdo (upamo, da ste to vi) je pravkar ustvaril račun na %{site_url}.
confirm: 'Pred karkoli drugim, morate potrditi, da je ta zahteva prišla od vas.
infringement_title_html: Kršitev avtorskih pravic
trademarks_title_html: <span id="trademarks"></span>Blagovne znamke
index:
- js_1: Bodisi uporabljate brskalnik, ki ne podpira Javascript-a, ali pa je izvajanje
- Javascript-a onemogočeno.
+ js_1: Bodisi uporabljate brskalnik, ki ne podpira Javascripta, ali pa je izvajanje
+ Javascripta onemogočeno.
js_2: OpenStreetMap za prikaz zemljevida uporablja Javascript.
permalink: Trajna povezava
shortlink: Kratka povezava
vprašanj in odgovarjanje nanja, sodelovanje v pogovorih in dokumentiranje
kartografskih tem.
welcome:
+ url: /pozdravljeni
title: Pozdravljeni v OpenStreetMap (OSM)
description: Začnite s tem hitrim vodičem, ki zajema osnove OpenStreetMap.
beginners_guide:
title: Wiki OpenStreetMap
description: Prebrskajte wiki za poglobljeno dokumentacijo OSM.
sidebar:
- search_results: Iskalni zadetki
+ search_results: Zadetki iskanja
close: Zapri
search:
search: Iskanje
bicycle_parking: Parkirišče za kolesa
toilets: Stranišče
welcome:
- title: Dobrodošli!
- introduction_html: Dobrodošli na OpenStreetMap, brezplačni zemljevid sveta,
+ title: Pozdravljeni!
+ introduction_html: Pozdravljeni v OpenStreetMap, brezplačnem zemljevidu sveta,
ki ga je mogoče tudi urejati. Zdaj, ko ste vpisani, ste pripravljeni za začetek
- kartiranja. Tu dobite hitri vodnik z najbolj pomembnimi stvarmi, ki jih morate
- vedeti.
+ kartiranja. Tu je hitri vodnik z najpomembnejšim, kar morate vedeti.
whats_on_the_map:
title: Kaj je na zemljevidu
on_html: |-
users:
new:
title: Ustvarjanje računa
- no_auto_account_create: Na žalost vam trenutno ne moremo samodejno ustvariti
- uporabniškega računa.
+ no_auto_account_create: Žal vam trenutno ne moremo samodejno ustvariti uporabniškega
+ računa.
contact_support_html: Prosimo, pišite <a href="%{support}">podpori</a> (v angleščini)
in se dogovorite za ustvaritev uporabniškega računa – potrudili se bomo za
čimprejšnjo obravnavo vašega zahtevka.
public editing:
heading: 公開編輯
enabled: 已開啟。非匿名且可以編輯資料。
+ enabled link: https://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: 這是什麼?
disabled: 已停用且不能編輯資料,所有先前的編輯都會成為匿名的。
disabled link text: 為什麼我不能編輯?
not yet agreed: 您未同意新的貢獻者條款。
review link text: 請跟隨此連結,方便你檢視並接受新的貢獻者條款。
agreed_with_pd: 您亦同意將您的編輯放到公共領域
+ link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms
link text: 這是什麼?
save changes button: 儲存變更
make edits public button: 將我所有的編輯設為公開
partners_title: 合作夥伴
copyright:
foreign:
- title: 關於這個翻譯
+ title: 關於本翻譯
html: 這個翻譯頁面和 %{english_original_link} 若有衝突,會以英文頁面為準
english_link: 英文原文
native:
"jquery-simulate": "^1.0.2",
"js-cookie": "^3.0.0",
"leaflet": "^1.8.0",
- "leaflet.locatecontrol": "^0.76.0",
+ "leaflet.locatecontrol": "^0.78.0",
"qs": "^6.9.4"
},
"devDependencies": {
def test_confirm_email_bad_token
post user_confirm_email_path, :params => { :confirm_string => "XXXXX" }
- assert_response :success
- assert_template :confirm_email
+ assert_response :redirect
+ assert_redirected_to edit_account_path
assert_match(/confirmation code has expired or does not exist/, flash[:error])
end
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@^8.0.0:
- version "8.26.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d"
- integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==
+ version "8.27.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64"
+ integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==
dependencies:
"@eslint/eslintrc" "^1.3.3"
"@humanwhocodes/config-array" "^0.11.6"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-leaflet.locatecontrol@^0.76.0:
- version "0.76.1"
- resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.76.1.tgz#03eb8e98e0c54fee457f930a63624479a6177de0"
- integrity sha512-qA92Mxs2N1jgVx+EdmxtDrdzFD+f2llPJbqaKvmW1epZMSIvD6KNsBjpQYUIxz4XtJkOleqRSwWQcrm5P5NnYw==
+leaflet.locatecontrol@^0.78.0:
+ version "0.78.0"
+ resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.78.0.tgz#fa87ac57fa79d2797f8f3e673d9eb3f104688310"
+ integrity sha512-3cElL7dBPOMkzHTOWUA/SLogrWrmfqYkbIXAikbRD0QcEef4jJRYYVhkcUUTprS2cOQzg2UiR475v8jemJiXRg==
leaflet@^1.8.0:
version "1.9.2"