# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
- Max: 248
+ Max: 266
# Offense count: 29
# This cop supports unsafe autocorrection (--autocorrect-all).
autoprefixer-rails (10.4.16.0)
execjs (~> 2)
aws-eventstream (1.3.0)
- aws-partitions (1.950.0)
- aws-sdk-core (3.201.0)
+ aws-partitions (1.956.0)
+ aws-sdk-core (3.201.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
doorkeeper (>= 5.5, < 5.8)
jwt (>= 2.5)
drb (2.2.1)
- dry-configurable (1.1.0)
+ dry-configurable (1.2.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
dry-core (1.0.1)
factory_bot_rails (6.4.3)
factory_bot (~> 6.4)
railties (>= 5.0.0)
- faraday (2.9.2)
+ faraday (2.10.0)
faraday-net_http (>= 2.0, < 3.2)
+ logger
faraday-net_http (3.1.0)
net-http
ffi (1.17.0)
google-protobuf (3.25.3)
hashdiff (1.1.0)
hashie (5.0.0)
- highline (3.0.1)
+ highline (3.1.0)
+ reline
htmlentities (4.3.4)
http_accept_language (2.1.1)
i18n (1.14.5)
image_size (3.4.0)
in_threads (1.6.0)
io-console (0.7.2)
- irb (1.13.2)
+ irb (1.14.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jbuilder (2.12.0)
marcel (1.0.4)
matrix (0.4.2)
maxminddb (0.1.22)
- mini_magick (4.13.1)
+ mini_magick (4.13.2)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
mini_racer (0.9.0)
omniauth (~> 2.0)
openstreetmap-deadlock_retry (1.3.1)
parallel (1.25.1)
- parser (3.3.3.0)
+ parser (3.3.4.0)
ast (~> 2.4.1)
racc
pg (1.5.6)
io-console (~> 0.5)
request_store (1.7.0)
rack (>= 1.4)
- rexml (3.3.1)
+ rexml (3.3.2)
strscan
rinku (2.0.6)
rotp (6.3.0)
rouge (4.3.0)
rtlcss (0.2.1)
mini_racer (>= 0.6.3)
- rubocop (1.64.1)
+ rubocop (1.65.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
- regexp_parser (>= 1.8, < 3.0)
+ regexp_parser (>= 2.4, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
rubocop (~> 1.41)
rubocop-factory_bot (2.26.1)
rubocop (~> 1.61)
- rubocop-minitest (0.35.0)
+ rubocop-minitest (0.35.1)
rubocop (>= 1.61, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-performance (1.21.1)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.8.1)
- websocket (1.2.10)
+ websocket (1.2.11)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
can [:new, :show, :create, :destroy], :oauth2_authorization
can [:edit, :update, :destroy], :account
can [:show], :dashboard
- can [:new, :create, :edit, :update, :comment, :subscribe, :unsubscribe], DiaryEntry
+ can [:new, :create, :edit, :update, :subscribe, :unsubscribe], DiaryEntry
+ can [:create], DiaryComment
can [:make_friend, :remove_friend], Friendship
can [:new, :create, :reply, :show, :inbox, :outbox, :muted, :mark, :unmute, :destroy], Message
can [:close, :reopen], Note
});
// Add click handler to show OpenID field
- $("#openid_open_url").click(function (e) {
- e.preventDefault();
- $("#openid_url").val("http://");
- $("#login_auth_buttons").hide().removeClass("d-flex");
- $("#login_openid_url").show();
- $("#openid_login_button").show();
+ $("#openid_open_url").click(function () {
+ $("#login_auth_buttons").hide();
+ $("#openid_login_form").show();
});
// Hide OpenID field for now
- $("#login_openid_url").hide();
- $("#openid_login_button").hide();
+ $("#openid_login_form").hide();
});
//= require leaflet.contextmenu
//= require index/contextmenu
//= require index/search
-//= require index/browse
+//= require index/layers/data
//= require index/export
-//= require index/notes
+//= require index/layers/notes
//= require index/history
//= require index/note
//= require index/new_note
OSM.initializeContextMenu(map);
if (OSM.STATUS !== "api_offline" && OSM.STATUS !== "database_offline") {
- OSM.initializeNotes(map);
+ OSM.initializeNotesLayer(map);
if (params.layers.indexOf(map.noteLayer.options.code) >= 0) {
map.addLayer(map.noteLayer);
}
- OSM.initializeBrowse(map);
+ OSM.initializeDataLayer(map);
if (params.layers.indexOf(map.dataLayer.options.code) >= 0) {
map.addLayer(map.dataLayer);
}
-OSM.initializeBrowse = function (map) {
- var browseBounds;
+OSM.initializeDataLayer = function (map) {
+ var loadedBounds;
var dataLayer = map.dataLayer;
dataLayer.setStyle({
function updateData() {
var bounds = map.getBounds();
- if (!browseBounds || !browseBounds.contains(bounds)) {
+ if (!loadedBounds || !loadedBounds.contains(bounds)) {
getData();
}
}
function addFeatures() {
$("#browse_status").empty();
dataLayer.addData(features);
- browseBounds = bounds;
+ loadedBounds = bounds;
}
function cancelAddFeatures() {
-OSM.initializeNotes = function (map) {
+OSM.initializeNotesLayer = function (map) {
var noteLayer = map.noteLayer,
notes = {};
# TODO: some sort of escaping of problem characters in the message
response.headers["Error"] = message
- if request.headers["X-Error-Format"]&.casecmp("xml")&.zero?
+ if request.headers["X-Error-Format"]&.casecmp?("xml")
result = OSM::API.new.xml_doc
result.root.name = "osmError"
result.root << (XML::Node.new("status") << "#{Rack::Utils.status_code(status)} #{Rack::Utils::HTTP_STATUS_CODES[status]}")
authorize_resource
before_action :lookup_user, :only => :index
- before_action :check_database_writable, :only => [:hide, :unhide]
+ before_action :check_database_writable, :only => [:create, :hide, :unhide]
allow_thirdparty_images :only => :index
@comments, @newer_comments_id, @older_comments_id = get_page_items(comments, :includes => [:user])
end
+ def create
+ @entry = DiaryEntry.find(params[:id])
+ @comments = @entry.visible_comments
+ @diary_comment = @entry.comments.build(comment_params)
+ @diary_comment.user = current_user
+ if @diary_comment.save
+
+ # Notify current subscribers of the new comment
+ @entry.subscribers.visible.each do |user|
+ UserMailer.diary_comment_notification(@diary_comment, user).deliver_later if current_user != user
+ end
+
+ # Add the commenter to the subscribers if necessary
+ @entry.subscriptions.create(:user => current_user) unless @entry.subscribers.exists?(current_user.id)
+
+ redirect_to diary_entry_path(@entry.user, @entry)
+ else
+ render :action => "new"
+ end
+ rescue ActiveRecord::RecordNotFound
+ render "diary_entries/no_such_entry", :status => :not_found
+ end
+
def hide
comment = DiaryComment.find(params[:comment])
comment.update(:visible => false)
comment.update(:visible => true)
redirect_to diary_entry_path(comment.diary_entry.user, comment.diary_entry)
end
+
+ private
+
+ ##
+ # return permitted diary comment parameters
+ def comment_params
+ params.require(:diary_comment).permit(:body)
+ end
end
authorize_resource
before_action :lookup_user, :only => :show
- before_action :check_database_writable, :only => [:new, :create, :edit, :update, :comment, :hide, :unhide, :subscribe, :unsubscribe]
+ before_action :check_database_writable, :only => [:new, :create, :edit, :update, :hide, :unhide, :subscribe, :unsubscribe]
allow_thirdparty_images :only => [:new, :create, :edit, :update, :index, :show]
render :action => "no_such_entry", :status => :not_found
end
- def comment
- @entry = DiaryEntry.find(params[:id])
- @comments = @entry.visible_comments
- @diary_comment = @entry.comments.build(comment_params)
- @diary_comment.user = current_user
- if @diary_comment.save
-
- # Notify current subscribers of the new comment
- @entry.subscribers.visible.each do |user|
- UserMailer.diary_comment_notification(@diary_comment, user).deliver_later if current_user != user
- end
-
- # Add the commenter to the subscribers if necessary
- @entry.subscriptions.create(:user => current_user) unless @entry.subscribers.exists?(current_user.id)
-
- redirect_to diary_entry_path(@entry.user, @entry)
- else
- render :action => "show"
- end
- rescue ActiveRecord::RecordNotFound
- render :action => "no_such_entry", :status => :not_found
- end
-
def subscribe
@diary_entry = DiaryEntry.find(params[:id])
ActionController::Parameters.new.permit(:title, :body, :language_code, :latitude, :longitude)
end
- ##
- # return permitted diary comment parameters
- def comment_params
- params.require(:diary_comment).permit(:body)
- end
-
##
# decide on a location for the diary entry map
def set_map_location
@results = []
if lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180
- @results.push(:lat => lat, :lon => lon,
+ @results.push(:lat => params[:lat], :lon => params[:lon],
:zoom => params[:zoom],
- :name => "#{lat}, #{lon}")
+ :name => "#{params[:lat]}, #{params[:lon]}")
end
if lon >= -90 && lon <= 90 && lat >= -180 && lat <= 180
- @results.push(:lat => lon, :lon => lat,
+ @results.push(:lat => params[:lon], :lon => params[:lat],
:zoom => params[:zoom],
- :name => "#{lon}, #{lat}")
+ :name => "#{params[:lon]}, #{params[:lat]}")
end
if @results.empty?
@error = "Longitude #{lon} out of range"
render :action => "error"
else
- @results = [{ :lat => lat, :lon => lon,
+ @results = [{ :lat => params[:lat], :lon => params[:lon],
:zoom => params[:zoom],
- :name => "#{lat}, #{lon}" }]
+ :name => "#{params[:lat]}, #{params[:lon]}" }]
render :action => "results"
end
if query = params[:query]
query.strip!
- if latlon = query.match(/^([NS])\s*(\d{1,3}(\.\d*)?)\W*([EW])\s*(\d{1,3}(\.\d*)?)$/).try(:captures) || # [NSEW] decimal degrees
- query.match(/^(\d{1,3}(\.\d*)?)\s*([NS])\W*(\d{1,3}(\.\d*)?)\s*([EW])$/).try(:captures) # decimal degrees [NSEW]
- params.merge!(nsew_to_decdeg(latlon)).delete(:query)
+ if latlon = query.match(/^(?<ns>[NS])\s*#{dms_regexp('ns')}\W*(?<ew>[EW])\s*#{dms_regexp('ew')}$/) ||
+ query.match(/^#{dms_regexp('ns')}\s*(?<ns>[NS])\W*#{dms_regexp('ew')}\s*(?<ew>[EW])$/)
+ params.merge!(to_decdeg(latlon.named_captures.compact)).delete(:query)
- elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\W*([EW])\s*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?$/).try(:captures) || # [NSEW] degrees, decimal minutes
- query.match(/^(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\s*([NS])\W*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\s*([EW])$/).try(:captures) # degrees, decimal minutes [NSEW]
- params.merge!(ddm_to_decdeg(latlon)).delete(:query)
-
- elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?$/).try(:captures) || # [NSEW] degrees, minutes, decimal seconds
- query.match(/^(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\s*([NS])\W*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\s*([EW])$/).try(:captures) # degrees, minutes, decimal seconds [NSEW]
- params.merge!(dms_to_decdeg(latlon)).delete(:query)
-
- elsif latlon = query.match(%r{^([+-]?\d+(\.\d*)?)(?:\s+|\s*[,/]\s*)([+-]?\d+(\.\d*)?)$})
- params.merge!(:lat => latlon[1].to_f, :lon => latlon[3].to_f).delete(:query)
+ elsif latlon = query.match(%r{^(?<lat>[+-]?\d+(?:\.\d+)?)(?:\s+|\s*[,/]\s*)(?<lon>[+-]?\d+(?:\.\d+)?)$})
+ params.merge!(:lat => latlon["lat"], :lon => latlon["lon"]).delete(:query)
params[:latlon_digits] = true
end
params.permit(:query, :lat, :lon, :latlon_digits, :zoom, :minlat, :minlon, :maxlat, :maxlon)
end
- def nsew_to_decdeg(captures)
- begin
- Float(captures[0])
- lat = captures[2].casecmp("s").zero? ? -captures[0].to_f : captures[0].to_f
- lon = captures[5].casecmp("w").zero? ? -captures[3].to_f : captures[3].to_f
- rescue StandardError
- lat = captures[0].casecmp("s").zero? ? -captures[1].to_f : captures[1].to_f
- lon = captures[3].casecmp("w").zero? ? -captures[4].to_f : captures[4].to_f
- end
- { :lat => lat, :lon => lon }
+ def dms_regexp(name_prefix)
+ /
+ (?: (?<#{name_prefix}d>\d{1,3}(?:\.\d+)?)°? ) |
+ (?: (?<#{name_prefix}d>\d{1,3})°?\s*(?<#{name_prefix}m>\d{1,2}(?:\.\d+)?)['′]? ) |
+ (?: (?<#{name_prefix}d>\d{1,3})°?\s*(?<#{name_prefix}m>\d{1,2})['′]?\s*(?<#{name_prefix}s>\d{1,2}(?:\.\d+)?)["″]? )
+ /x
end
- def ddm_to_decdeg(captures)
- begin
- Float(captures[0])
- lat = captures[3].casecmp("s").zero? ? -(captures[0].to_f + (captures[1].to_f / 60)) : captures[0].to_f + (captures[1].to_f / 60)
- lon = captures[7].casecmp("w").zero? ? -(captures[4].to_f + (captures[5].to_f / 60)) : captures[4].to_f + (captures[5].to_f / 60)
- rescue StandardError
- lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + (captures[2].to_f / 60)) : captures[1].to_f + (captures[2].to_f / 60)
- lon = captures[4].casecmp("w").zero? ? -(captures[5].to_f + (captures[6].to_f / 60)) : captures[5].to_f + (captures[6].to_f / 60)
- end
- { :lat => lat, :lon => lon }
- end
+ def to_decdeg(captures)
+ ns = captures.fetch("ns").casecmp?("s") ? -1 : 1
+ nsd = BigDecimal(captures.fetch("nsd", "0"))
+ nsm = BigDecimal(captures.fetch("nsm", "0"))
+ nss = BigDecimal(captures.fetch("nss", "0"))
- def dms_to_decdeg(captures)
- begin
- Float(captures[0])
- lat = captures[4].casecmp("s").zero? ? -(captures[0].to_f + ((captures[1].to_f + (captures[2].to_f / 60)) / 60)) : captures[0].to_f + ((captures[1].to_f + (captures[2].to_f / 60)) / 60)
- lon = captures[9].casecmp("w").zero? ? -(captures[5].to_f + ((captures[6].to_f + (captures[7].to_f / 60)) / 60)) : captures[5].to_f + ((captures[6].to_f + (captures[7].to_f / 60)) / 60)
- rescue StandardError
- lat = captures[0].casecmp("s").zero? ? -(captures[1].to_f + ((captures[2].to_f + (captures[3].to_f / 60)) / 60)) : captures[1].to_f + ((captures[2].to_f + (captures[3].to_f / 60)) / 60)
- lon = captures[5].casecmp("w").zero? ? -(captures[6].to_f + ((captures[7].to_f + (captures[8].to_f / 60)) / 60)) : captures[6].to_f + ((captures[7].to_f + (captures[8].to_f / 60)) / 60)
- end
- { :lat => lat, :lon => lon }
+ ew = captures.fetch("ew").casecmp?("w") ? -1 : 1
+ ewd = BigDecimal(captures.fetch("ewd", "0"))
+ ewm = BigDecimal(captures.fetch("ewm", "0"))
+ ews = BigDecimal(captures.fetch("ews", "0"))
+
+ lat = ns * (nsd + (nsm / 60) + (nss / 3600))
+ lon = ew * (ewd + (ewm / 60) + (ews / 3600))
+
+ { :lat => lat.round(6).to_s("F"), :lon => lon.round(6).to_s("F") }
end
end
# External authentication support
- def openid_logo
- image_tag "openid.svg", :size => "36", :alt => t("application.auth_providers.openid_logo_alt"), :class => "align-text-bottom"
- end
-
- def auth_button(name, provider, options = {})
+ def auth_button(provider, options = {})
link_to(
- image_tag("#{name}.svg",
- :alt => t("application.auth_providers.#{name}.alt"),
+ image_tag("#{provider}.svg",
+ :alt => t("application.auth_providers.#{provider}.alt"),
:class => "rounded-1",
:size => "36"),
auth_path(options.merge(:provider => provider)),
:method => :post,
- :class => "auth_button btn btn-light p-2 d-block",
- :title => t("application.auth_providers.#{name}.title")
+ :class => "auth_button btn btn-light p-2",
+ :title => t("application.auth_providers.#{provider}.title")
)
end
- def auth_button_preferred(name, provider, options = {})
+ def auth_button_preferred(provider, options = {})
link_to(
- image_tag("#{name}.svg",
- :alt => t("application.auth_providers.#{name}.alt"),
+ image_tag("#{provider}.svg",
+ :alt => t("application.auth_providers.#{provider}.alt"),
:class => "rounded-1 me-3",
- :size => "36") + t("application.auth_providers.#{name}.title"),
+ :size => "36") + t("application.auth_providers.#{provider}.title"),
auth_path(options.merge(:provider => provider)),
:method => :post,
:class => "auth_button btn btn-outline-secondary border py-2 px-4 d-flex justify-content-center align-items-center",
- :title => t("application.auth_providers.#{name}.title")
+ :title => t("application.auth_providers.#{provider}.title")
)
end
end
def oob?
- callback_url.nil? || callback_url.casecmp("oob").zero?
+ callback_url.nil? || callback_url.casecmp?("oob")
end
def oauth10?
-<div>
- <div class="list-inline justify-content-center d-flex align-items-center flex-wrap w-100 mb-3" id="login_auth_buttons">
+<% prefered_auth_button_available = false %>
+<% %w[google facebook microsoft github wikipedia].each do |provider| %>
+ <% if Settings.key?("#{provider}_auth_id".to_sym) -%>
+ <% if @preferred_auth_provider == provider %>
+ <% prefered_auth_button_available = true %>
+ <% end %>
+ <% end -%>
+<% end -%>
- <% prefered_auth_button_available = false %>
- <% %w[google facebook microsoft github wikipedia].each do |provider| %>
- <% if Settings.key?("#{provider}_auth_id".to_sym) -%>
- <% if @preferred_auth_provider == provider %>
- <% prefered_auth_button_available = true %>
- <% end %>
- <% end -%>
- <% end -%>
+<div>
+ <%= tag.div :id => "login_auth_buttons",
+ :class => ["row row-cols-1", { "row-cols-sm-2" => prefered_auth_button_available }, "g-2 mb-3"] do %>
<% if prefered_auth_button_available %>
- <div class="list-inline justify-content-center d-flex align-items-center flex-wrap w-50">
+ <div class="col justify-content-center d-flex align-items-center flex-wrap">
<% %w[google facebook microsoft github wikipedia].each do |provider| %>
<% if Settings.key?("#{provider}_auth_id".to_sym) -%>
<% if @preferred_auth_provider == provider %>
- <%= auth_button_preferred provider, provider %>
+ <%= auth_button_preferred provider %>
<% end %>
<% end -%>
<% end -%>
</div>
- <div class="list-inline justify-content-center d-flex align-items-center flex-wrap gap-2 w-50 px-1">
- <% else %>
- <div class="list-inline justify-content-center d-flex align-items-center flex-wrap gap-2 w-100">
<% end %>
- <%= link_to image_tag("openid.svg",
- :alt => t("application.auth_providers.openid.alt"),
- :size => "36"),
- "#",
- :id => "openid_open_url",
- :title => t("application.auth_providers.openid.title"),
- :class => "btn btn-light p-2 d-block" %>
+ <div class="col justify-content-center d-flex align-items-center flex-wrap gap-2">
+ <%= button_tag image_tag("openid.svg",
+ :alt => t(".openid.alt"),
+ :size => "36"),
+ :type => "button",
+ :id => "openid_open_url",
+ :title => t(".openid.title"),
+ :class => "btn btn-light p-2" %>
<% %w[google facebook microsoft github wikipedia].each do |provider| %>
<% unless @preferred_auth_provider == provider %>
<% if Settings.key?("#{provider}_auth_id".to_sym) -%>
- <%= auth_button provider, provider %>
+ <%= auth_button provider %>
<% end -%>
<% end %>
<% end -%>
</div>
- </div>
+ <% end %>
<%# :tabindex starts high to allow rendering at the bottom of the template %>
<%= form_tag(auth_path(:provider => "openid"), :id => "openid_login_form") do %>
- <div id="login_openid_url" class="mb-3">
- <label for="openid_url" class="form-label"><%= t ".openid_html", :logo => openid_logo %></label>
+ <div class="mb-3">
+ <label for="openid_url" class="form-label">
+ <%= image_tag "openid.svg", :size => "36", :alt => "", :class => "align-text-bottom" %>
+ <%= t ".openid_url" %>
+ </label>
<%= hidden_field_tag("referer", params[:referer], :autocomplete => "off") %>
- <%= text_field_tag("openid_url", "", :tabindex => 20, :autocomplete => "on", :class => "openid_url form-control") %>
+ <%= text_field_tag("openid_url", "https://", :tabindex => 20, :autocomplete => "on", :class => "form-control") %>
<span class="form-text text-body-secondary">(<a href="<%= t "accounts.edit.openid.link" %>" target="_new"><%= t "accounts.edit.openid.link text" %></a>)</span>
</div>
- <%= submit_tag t(".openid_login_button"), :tabindex => 21, :id => "openid_login_button", :class => "btn btn-primary" %>
+ <%= submit_tag t(".openid_login_button"), :tabindex => 21, :class => "btn btn-primary" %>
<% end %>
</div>
--- /dev/null
+<% content_for :heading do %>
+ <h1><%= t ".heading" %></h1>
+<% end %>
+
+<%= render :partial => "diary_entries/diary_entry_heading", :object => @entry, :as => "diary_entry" %>
+
+<h3><%= t "diary_entries.show.leave_a_comment" %></h3>
+
+<%= bootstrap_form_for @diary_comment, :url => comment_diary_entry_path(@entry.user, @entry) do |f| %>
+ <%= f.richtext_field :body, :cols => 80, :rows => 20, :hide_label => true %>
+ <%= f.primary %>
+<% end %>
<% if @entry.subscribers.exists?(current_user.id) %>
<%= link_to t(".unsubscribe"), diary_entry_unsubscribe_path(@entry.user, @entry), :method => :post, :class => "btn btn-sm btn-primary" %>
<% else %>
- <%= link_to t(".subscribe"), diary_entry_subscribe_path(@entry.user, @entry.id), :method => :post, :class => "btn btn-sm btn-primary" %>
+ <%= link_to t(".subscribe"), diary_entry_subscribe_path(@entry.user, @entry), :method => :post, :class => "btn btn-sm btn-primary" %>
<% end %>
</div>
<% end %>
<% if current_user %>
<h3 id="newcomment"><%= t ".leave_a_comment" %></h3>
- <%= bootstrap_form_for @entry.comments.new, :url => { :action => "comment" } do |f| %>
+ <%= bootstrap_form_for @entry.comments.new, :url => comment_diary_entry_path(@entry.user, @entry) do |f| %>
<%= f.richtext_field :body, :cols => 80, :rows => 20, :hide_label => true %>
<%= f.primary %>
<% end %>
</div>
<% end %>
-<div id="login_login">
- <% if @preferred_auth_provider %>
- <%= render :partial => "auth_providers" %>
- <%= render :partial => "shared/section_divider", :locals => { :text => t(".or") } %>
+<% if @preferred_auth_provider %>
+ <%= render :partial => "auth_providers" %>
+ <%= render :partial => "shared/section_divider", :locals => { :text => t(".or") } %>
<% end %>
- <%= bootstrap_form_tag(:action => "login", :html => { :id => "login_form" }) do |f| %>
- <%= hidden_field_tag("referer", h(params[:referer]), :autocomplete => "off") %>
+<%= bootstrap_form_tag(:action => "login", :html => { :id => "login_form" }) do |f| %>
+ <%= hidden_field_tag("referer", h(params[:referer]), :autocomplete => "off") %>
- <%= f.text_field :username, :label => t(".email or username"), :autofocus => true, :tabindex => 1, :value => params[:username] %>
+ <%= f.text_field :username, :label => t(".email or username"), :autofocus => true, :tabindex => 1, :value => params[:username] %>
- <div class="d-flex flex-wrap column-gap-3 justify-content-between align-items-baseline mb-2">
- <%= f.label :password, t(".password") %>
- <small><%= link_to(t(".lost password link"), user_forgot_password_path) %></small>
- </div>
-
- <%= f.password_field :password, :autocomplete => "on", :tabindex => 2, :value => "", :skip_label => true %>
+ <div class="d-flex flex-wrap column-gap-3 justify-content-between align-items-baseline mb-2">
+ <%= f.label :password, t(".password") %>
+ <small><%= link_to(t(".lost password link"), user_forgot_password_path) %></small>
+ </div>
- <%= f.form_group do %>
- <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %>
- <% end %>
+ <%= f.password_field :password, :autocomplete => "on", :tabindex => 2, :value => "", :skip_label => true %>
- <div class="mb-3">
- <%= f.primary t(".login_button"), :tabindex => 4 %>
- </div>
+ <%= f.form_group do %>
+ <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %>
<% end %>
- <% unless @preferred_auth_provider %>
- <%= render :partial => "shared/section_divider", :locals => { :text => t(".with external") } %>
- <%= render :partial => "auth_providers" %>
- <% end %>
-</div>
+ <div class="mb-3">
+ <%= f.primary t(".login_button"), :tabindex => 4 %>
+ </div>
+<% end %>
+
+<% unless @preferred_auth_provider %>
+ <%= render :partial => "shared/section_divider", :locals => { :text => t(".with external") } %>
+ <%= render :partial => "auth_providers" %>
+<% end %>
</div>
<% end %>
-<div>
- <p><strong><%= t "users.new.no_auto_account_create" %></strong></p>
- <p><%= t "users.new.please_contact_support_html", :support_link => mail_to(Settings.support_email, t("users.new.support")) %></p>
-</div>
+<p><strong><%= t "users.new.no_auto_account_create" %></strong></p>
+<p><%= t "users.new.please_contact_support_html", :support_link => mail_to(Settings.support_email, t("users.new.support")) %></p>
</div>
<% end %>
-<div>
- <% if current_user.auth_uid.nil? %>
- <div class="text-body-secondary fs-6">
- <p><strong><%= t ".about.header" %></strong> <%= t ".about.paragraph_1" %></p>
- <p><%= t ".about.paragraph_2" %></p>
- </div>
+<% if current_user.auth_uid.nil? %>
+ <div class="text-body-secondary fs-6">
+ <p><strong><%= t ".about.header" %></strong> <%= t ".about.paragraph_1" %></p>
+ <p><%= t ".about.paragraph_2" %></p>
+ </div>
- <% unless @preferred_auth_provider.nil? %>
- <%= render :partial => "auth_providers" %>
- <%= render :partial => "shared/section_divider", :locals => { :text => t(".or") } %>
-<% end %>
- <% else %>
- <h4><%= t ".about.welcome" %></h4>
+ <% unless @preferred_auth_provider.nil? %>
+ <%= render :partial => "auth_providers" %>
+ <%= render :partial => "shared/section_divider", :locals => { :text => t(".or") } %>
<% end %>
+<% else %>
+ <h4><%= t ".about.welcome" %></h4>
+<% end %>
- <%= bootstrap_form_for current_user, :url => { :action => "create" } do |f| %>
- <%= hidden_field_tag("referer", h(@referer)) unless @referer.nil? %>
- <%= hidden_field_tag("email_hmac", h(@email_hmac)) unless @email_hmac.nil? %>
- <%= f.hidden_field :auth_provider unless current_user.auth_provider.nil? %>
- <%= f.hidden_field :auth_uid unless current_user.auth_uid.nil? %>
+<%= bootstrap_form_for current_user, :url => { :action => "create" } do |f| %>
+ <%= hidden_field_tag("referer", h(@referer)) unless @referer.nil? %>
+ <%= hidden_field_tag("email_hmac", h(@email_hmac)) unless @email_hmac.nil? %>
+ <%= f.hidden_field :auth_provider unless current_user.auth_provider.nil? %>
+ <%= f.hidden_field :auth_uid unless current_user.auth_uid.nil? %>
- <% if current_user.auth_uid.nil? or @email_hmac.nil? or not current_user.errors[:email].empty? %>
- <%= f.email_field :email, :help => t(".email_help.html",
- :privacy_policy_link => link_to(t(".email_help.privacy_policy"),
- t(".email_help.privacy_policy_url"),
- :title => t(".email_help.privacy_policy_title"),
- :target => :new)),
- :autofocus => true,
- :tabindex => 1 %>
- <% else %>
- <%= f.hidden_field :email %>
- <% end %>
+ <% if current_user.auth_uid.nil? or @email_hmac.nil? or not current_user.errors[:email].empty? %>
+ <%= f.email_field :email, :help => t(".email_help.html",
+ :privacy_policy_link => link_to(t(".email_help.privacy_policy"),
+ t(".email_help.privacy_policy_url"),
+ :title => t(".email_help.privacy_policy_title"),
+ :target => :new)),
+ :autofocus => true,
+ :tabindex => 1 %>
+ <% else %>
+ <%= f.hidden_field :email %>
+ <% end %>
- <%= f.text_field :display_name, :help => t(".display name description"), :tabindex => 2 %>
+ <%= f.text_field :display_name, :help => t(".display name description"), :tabindex => 2 %>
- <% if current_user.auth_uid.nil? %>
- <div class="row">
- <div class="col-sm">
- <%= f.password_field :pass_crypt, :tabindex => 3 %>
- </div>
- <div class="col-sm">
- <%= f.password_field :pass_crypt_confirmation, :tabindex => 4 %>
- </div>
+ <% if current_user.auth_uid.nil? %>
+ <div class="row">
+ <div class="col-sm">
+ <%= f.password_field :pass_crypt, :tabindex => 3 %>
+ </div>
+ <div class="col-sm">
+ <%= f.password_field :pass_crypt_confirmation, :tabindex => 4 %>
</div>
- <% end %>
-
- <p class="mb-3 text-body-secondary fs-6"><%= t(".by_signing_up.html",
- :tou_link => link_to(t("layouts.tou"),
- "https://wiki.osmfoundation.org/wiki/Terms_of_Use",
- :target => :new),
- :privacy_policy_link => link_to(t(".by_signing_up.privacy_policy"),
- t(".by_signing_up.privacy_policy_url"),
- :title => t(".by_signing_up.privacy_policy_title"),
- :target => :new),
- :contributor_terms_link => link_to(t(".by_signing_up.contributor_terms"),
- t(".by_signing_up.contributor_terms_url"),
- :target => :new)) %></p>
- <%= f.form_group do %>
- <%= f.check_box :consider_pd,
- :tabindex => 5,
- :label => t(".consider_pd_html",
- :consider_pd_link => link_to(t(".consider_pd"),
- t(".consider_pd_url"),
- :target => :new)) %>
- <% end %>
-
- <div class="mb-3">
- <%= submit_tag(t(".continue"), :name => "continue", :id => "continue", :class => "btn btn-primary", :tabindex => 6) %>
</div>
<% end %>
- <% if current_user.auth_uid.nil? and @preferred_auth_provider.nil? %>
- <%= render :partial => "shared/section_divider", :locals => { :text => t(".use external auth") } %>
- <%= render :partial => "auth_providers" %>
+ <p class="mb-3 text-body-secondary fs-6"><%= t(".by_signing_up.html",
+ :tou_link => link_to(t("layouts.tou"),
+ "https://wiki.osmfoundation.org/wiki/Terms_of_Use",
+ :target => :new),
+ :privacy_policy_link => link_to(t(".by_signing_up.privacy_policy"),
+ t(".by_signing_up.privacy_policy_url"),
+ :title => t(".by_signing_up.privacy_policy_title"),
+ :target => :new),
+ :contributor_terms_link => link_to(t(".by_signing_up.contributor_terms"),
+ t(".by_signing_up.contributor_terms_url"),
+ :target => :new)) %></p>
+ <%= f.form_group do %>
+ <%= f.check_box :consider_pd,
+ :tabindex => 5,
+ :label => t(".consider_pd_html",
+ :consider_pd_link => link_to(t(".consider_pd"),
+ t(".consider_pd_url"),
+ :target => :new)) %>
<% end %>
-</div>
+
+ <div class="mb-3">
+ <%= submit_tag(t(".continue"), :name => "continue", :id => "continue", :class => "btn btn-primary", :tabindex => 6) %>
+ </div>
+<% end %>
+
+<% if current_user.auth_uid.nil? and @preferred_auth_provider.nil? %>
+ <%= render :partial => "shared/section_divider", :locals => { :text => t(".use external auth") } %>
+ <%= render :partial => "auth_providers" %>
+<% end %>
sotmeu_2024:
id: sotmeu_2024
alt: State of the Map Europe 2024
- link: https://stateofthemap.eu/
+ link: https://openstreetmap.org.pl/2024/sotm-eu-2024-community-tickets-70/
img: banners/StateoftheMapEurope_2024.png
enddate: 2024-jul-18
-sotmasia_2023:
- id: sotmasia_2023
- alt: State of the Map Asia x Foss4G Thailand 2023
- link: https://stateofthemap.asia/
- img: banners/SOTMAsia_x_FOSS4G_2023.jpg
- startdate: 2023-oct-18
- enddate: 2023-nov-18
-sotmafrica_2023:
- id: sotmafrica_2023
- alt: State of the Map Africa 2023
- link: https://2023.stateofthemap.africa
- img: banners/StateOfTheMapAfrica_2023.jpg
+sotm_2024:
+ id: sotm_2024
+ alt: State of the Map 2024
+ link: https://2024.stateofthemap.org
+ img: banners/sotm_2024.png
srcset:
- - [banners/StateOfTheMapAfrica_2023.jpg, 1x]
- - [banners/StateOfTheMapAfrica_2023@2x.jpg, 2x]
- startdate: 2023-oct-30
- enddate: 2023-nov-30
+ - [banners/sotm_2024.png, 1x]
+ - [banners/sotm_2024@2x.png, 2x]
+ startdate: 2024-jul-10
+ enddate: 2024-sep-05
\ No newline at end of file
oauth1_settings: OAuth 1 instellings
oauth2_applications: OAuth 2 programme
auth_providers:
- openid_logo_alt: Meld aan met 'n OpenID
openid:
title: Meld aan met OpenID
alt: Meld aan met 'n OpenID-URL
settings_menu:
account_settings: إعدادات الحساب
auth_providers:
- openid_logo_alt: تسجيل الدخول بOpenID
openid:
title: تسجيل الدخول بOpenID
alt: تسجيل الدخول باستخدام مسار OpenID
coneuta pela interfaz web pa ver los Términos de Collaboración. Nun fai falta
aceutalos, pero debes conocelos.
auth_providers:
- openid_logo_alt: Coneutar con una OpenID
openid:
title: Aniciar sesión con OpenID
alt: Aniciar sesión con una URL d'OpenID
private: MƏXFİ
application:
auth_providers:
- openid_logo_alt: OpenID ilə hesabınıza daxil olun
microsoft:
title: Microsoft ilə daxil olun
github:
need_to_see_terms: Ваш доступ да API часова прыпынены. Калі ласка, увайдзіце
ў ўэб-інтэрфэйс, каб каб паглядзець умовы супрацоўніцтва. Вам не абавязкова
пагаджацца зь імі, але неабходна зь імі азнаёміцца.
- auth_providers:
- openid_logo_alt: Увайсьці ў сыстэму з дапамогай OpenID
oauth:
authorize:
request_access_html: Дастасаваньне %{app_name} патрабуе доступ да Вашага рахунку,
ў вэб-інтэрфейс для прагляду ўмоў удзелу. Вы не абавязаны пагаджацца, але
вам варта праглядзець іх.
auth_providers:
- openid_logo_alt: Увайсці з дапамогай OpenID
openid:
title: Уваход праз OpenID
alt: Уваход праз OpenID URL
tou: Условия за ползване
osm_offline: Базата на данни на OpenStreetMap в момента е изключена докато се
извършва необходима поддръжка.
+ osm_read_only: В момента базата данни на OpenStreetMap е в режим "само за четене",
+ тъй като се извършва техническа поддръжка на базата данни.
help: Помощ
about: За проекта
copyright: Авторски права
require_admin:
not_an_admin: Трябва да сте админ за да извършите това действие
auth_providers:
- openid_logo_alt: Влизане с OpenID
openid:
title: Влизане с OpenID
alt: Влизане с адрес на OpenID
oauth2_authorizations: Aotreoù OAuth 2
muted_users: Implijerien kuzhet
auth_providers:
- openid_logo_alt: Kevreañ gant un OpenID
openid_login_button: Kenderc'hel
openid:
title: Kevreañ gant OpenID
need_to_see_terms: Vaš pristup API-ju je privremeno suspendovan. Molimo da se
prijavite na web upravljačku ploču da pogledate Uslove za doprinosioce. Ne
morate se složiti, ali ih morate pogledati.
- auth_providers:
- openid_logo_alt: Prijavite se sa OtvorenimID
oauth:
authorize:
request_access_html: 'Aplikacija %{app_name} zahtjeva pristup Vašem korisničkom
oauth2_authorizations: Autoritzacions OAuth 2
muted_users: Usuaris silenciats
auth_providers:
- openid_logo_alt: Inicia sessió amb un compte OpenID
openid:
title: Inicia sessió amb un compte OpenID
alt: Inicia sessió amb un URL d'OpenID
# Author: McDutchie
# Author: Sasan700
# Author: Исмаил Садуев
+# Author: Робин
# Author: Умар
---
ce:
formats:
friendly: '%e %B %Y %H:%M'
helpers:
+ file:
+ prompt: Харжа файл
submit:
diary_comment:
- create: Ӏалашдан
+ create: Коммент
diary_entry:
create: Ӏалашйан
update: Карлайаккха
create: ДӀадахьийта
client_application:
create: ДӀайаздала
- update: Хийца
+ update: Карлайаккха
+ oauth2_application:
+ create: Регистраци йан
+ update: Карлайаккха
redaction:
create: Нисдар кхоллар
update: Хийцам Ӏалашбе
messages:
invalid_email_address: электронан поштан адресе тера дац
email_address_not_routable: неъбиллина бац
+ display_name_is_user_n: user_n хила йиш йац, наггахь n хьан лелоша ID йацахь
+ models:
+ user_mute:
+ is_already_muted: хӀинцале а дӀайаккхина
models:
acl: ТӀецакхачаран бахьанин могӀа
changeset: Нисдарш
diary_comment: Коммент
diary_entry: Къамелан дӀайаздар
friend: ДоттагӀ
+ issue: Хаттар
language: Мотт
message: Хаам
node: ТӀадам
relation: Хилар
relation_member: Хиларан декъашхо
relation_tag: Хиларан тег
+ report: хаам
session: Сесси
trace: Трек
tracepoint: Трекан тӀадам
way_node: Сизан тӀадам
way_tag: Сизан тег
attributes:
+ client_application:
+ name: ЦIе (схьадоьхург)
+ url: Приложенена URL (схьадоьхург)
+ callback_url: URL йухакхайкха
+ support_url: URL гӀо дар
+ allow_read_prefs: йеша лелорчера лаамаш
+ allow_write_prefs: хийца лелорчера лаамаш
+ allow_write_diary: |-
+ тептар тIехь йаздарш кхолла а, комментареш йа а,
+ доттагӀий лаха
+ allow_write_api: карта нисдар
+ allow_read_gpx: долахь йолу GPS-трекаш йеша
+ allow_write_gpx: GPS-трекаш чуйаха
+ allow_write_notes: заметкаш нисайар
diary_comment:
body: Текст
diary_entry:
user: Декъашхо
title: Тема
+ body: Текст
latitude: Шоралла
longitude: Дохалла
language_code: Мотт
+ doorkeeper/application:
+ name: ЦӀе
+ redirect_uri: URI-ш хийца
+ confidential: Къайле приложени?
+ scopes: Магор
friend:
user: Декъашхо
friend: ДоттагӀ
trace:
user: Декъашхо
visible: Гуш хилар
- name: ЦӀе
+ name: Файлан Ñ\86Ӏе
size: Барам
latitude: Шоралла
longitude: Дохалла
public: Массарна
description: Цуьнах лаьцна
- visibility: 'Гуш хилар:'
+ gpx_file: GPX файл чуяккха
+ visibility: Гуш хилар
+ tagstring: Тегаш
message:
sender: Баийтинарг
title: Тема
body: Текст
recipient: Кхаьчнарг
+ redaction:
+ title: Корта
+ description: Цуьнах лаьцна
+ report:
+ category: Хьай хаамина бахьан гайта
+ details: Дехар ду, кхин а цхьацца дерг дийца проблемех лаьцна (оьшуш ду).
user:
+ auth_provider: Аутентификацин провайдер
+ auth_uid: Аутентификаци
email: Электронан пошт
- new_email: 'Электронан поштан керла адрес:'
+ new_email: Электронан поштан керла адрес
active: Жигара
display_name: Гуш йолу цӀе
description: Цуьнах лаьцна
- home_lat: 'Шоралла:'
- home_lon: 'Дохалла:'
- languages: Меттанаш
+ home_lat: Шоралла
+ home_lon: Дохалла
+ languages: ГӀоле хета меттанаш
+ preferred_editor: ГӀоле хеташ волу редактор
pass_crypt: Пароль
+ pass_crypt_confirmation: Бакъйе пароль
+ help:
+ doorkeeper/application:
+ confidential: |-
+ Приложени лелор йу клиентан къайле ларъян йиш йолчохь
+ (долахь йолу мобилан программаш а, цхьана агӀонан программаш а къайлаха йац)
+ redirect_uri: Цхьа могӀа лелабе URI тIехь
+ trace:
+ tagstring: цӀоьмалгца хадийна
+ user_block:
+ reason: Юзер дӀакъовларан бахьана. Дехар ду, хьайн ницкъ ма-кхоччу тийна а,
+ хьекъале а хила. Хьайн ницкъ ма-кхоччу пайдаэцархочун алсам хаам ло и дIа
+ хунда ваьккхан аьла и хIума нахана гуш хир дуйла дагахь а долуш. Диц ма
+ де, массо а пайдаэцархо кхеташ вац йукъараллин жаргонех, цундела дилитантан
+ терминаш лело хьажа.
+ needs_view: Бакъо йал оьший юзерин система чу вала, блок дӀаяккхале хьалха?
+ user:
+ new_email: (гайтан хир йац)
datetime:
distance_in_words_ago:
about_x_hours:
- one: герг сахьт хьалха
- other: '%{count} геÑ\80г сахьт хьалха'
+ one: '%{count} сахьт герг'
+ other: '%{count} маÑ\81еÑ\85 сахьт хьалха'
about_x_months:
- one: герг бутт хьалха
- other: '%{count} геÑ\80г бÑ\83Ñ\82Ñ\82 Ñ\85Ñ\8cалÑ\85а'
+ one: '%{count} герг бутт хьалха'
+ other: '%{count} маÑ\81Ñ\81еÑ\85 бÑ\83Ñ\82Ñ\82 Ñ\85Ñ\8cалÑ\85Ñ\8cа'
about_x_years:
- one: герг шо хьалха
- other: '%{count} геÑ\80г шо хьалха'
+ one: '%{count} герг шо хьалха'
+ other: '%{count} меÑ\81еÑ\85 шо хьалха'
almost_x_years:
- one: герг шо хьалха
- other: '%{count} геÑ\80г шо хьалха'
+ one: '%{count} шо герг хьалха'
+ other: '%{count} маÑ\81еÑ\85 шо хьалха'
half_a_minute: ахминот хьалхьа
less_than_x_seconds:
one: секундал кӀезга хьалха
x_seconds:
one: 1 секунд хьалха
other: '%{count} секунд хьалха'
- x_minutes:
- one: 1 минот хьалха
- few: '%{count} минот хьалха'
- other: '%{count} минот хьалха'
+ x_minutes: '{{PLURAL|one=%{count}1 минот хьалха|few=%{count} минот хьалха|many=%{count}'
x_days:
- one: 1 де хьалха
- few: '%{count} де хьалха'
- other: '%{count} де хьалха'
+ one: '%{count} де хьалха'
+ other: '%{count} масех де хьалха'
x_months:
- one: 1 бутт хьалха
- few: '%{count} бутт хьалха'
- other: '%{count} бутт хьалха'
+ one: '%{count} бутт хьалха'
+ other: '%{count} масех бутт хьалха'
x_years:
- one: 1 шо хьалха
- few: '%{count} шо хьалха'
- other: '%{count} шо хьалха'
+ one: '%{count} шо хьалха'
+ other: '%{count} масех шо хьалха'
editor:
default: Ӏадйитаран кеп (хӀоттина %{name})
id:
remote:
name: Генара лелор
description: Генара лелор (JOSM йа Merkaartor)
+ auth:
+ providers:
+ none: Йаьсса
+ google: Google
+ facebook: Facebook
+ github: GitHub
+ wikipedia: Википеди
api:
notes:
comment:
opened_at_html: Кхоьллина %{when}
- opened_at_by_html: Кхоьллина %{when} хьалха %{user}
- commented_at_html: Карлаяьккхина %{when} хьалха
- commented_at_by_html: Карлаяьккхина %{when} хьалха %{user}
- closed_at_html: Кичйина %{when} хьалха
- closed_at_by_html: Кечйина %{when} хьалха %{user}
- reopened_at_html: Ð\99Ñ\83Ñ\85а йеллина %{when} Ñ\85Ñ\8cалÑ\85а
- reopened_at_by_html: Йуха йиллина %{when} хьалха %{user}
+ opened_at_by_html: Кхоьллина %{when} пайдаэцархочо %{user}
+ commented_at_html: Карлаяьккхина %{when}
+ commented_at_by_html: Карлаяьккхина %{when} пайдаэцархочо %{user}
+ closed_at_html: Кичйина %{when}
+ closed_at_by_html: Кечйина %{when} пайдаэцархочо %{user}
+ reopened_at_html: Ð\99Ñ\83Ñ\85а йиллина %{when}
+ reopened_at_by_html: Йуха йиллина %{when} пайдаэцархочо %{user}
rss:
title: OpenStreetMap билгалонаш
+ description_all: Къепйоза кхоьллина а, комментареш йина йа дӀакъевлина тептарш
+ description_area: Тептари къепйоза, кхоьллина а, комментареш йина йа дӀакъевлина
+ шуна меттигера [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+ description_item: RSS-Ӏовраш билгалонаш %{id}
+ opened: керла билгалдаккхар (герга %{place})
+ commented: керла комментари (герга %{place})
+ closed: къоьвлина билгалдаккхар (герга %{place})
+ reopened: йуха хьайилин билгалдаккхар (герга %{place})
entry:
comment: Коммент
full: Йуьззина текст
+ account:
+ deletions:
+ show:
+ title: Са аккаунт дӀайаккхар
+ warning: Терго йе! Аккаунт дӀаяккхаран процесс тӀаьххьара йу, йухаерзо йиш
+ яц.
+ delete_account: Аккаунт дӀайаккхар
+ delete_introduction: 'Хьай OpenStreetMap аккаунт дӀадаккха йиш йу лахахь йолчу
+ нуьйдица. Дехар ду, тидам бе лахахь долчу детальшна:'
+ delete_profile: Хьан профилан информаци, аватар а, йаздар а, цӀахь волу меттиг
+ а йолуш, дӀайаккхина хир ю.
+ delete_display_name: Хьан гойтуш йолу цӀе дӀаяьккхина хир ю, кхечу аккаунташа
+ юха лело йиш ю.
+ retain_caveats: 'Делахь а, хьох лаьцна цхьаболу хаамаш латтор бу OpenStreetMap-ехь,
+ хьан аккаунт дӀаяьккхинчул тӀаьхьа а:'
+ retain_edits: Картан базехь ахь дина хийцамаш, нагахь санна уьш белахь, ларбийр
+ бу.
+ retain_traces: Ахь чуйиллина лараш, нагахь санна уьш елахь, ларйийр йу.
+ retain_diary_entries: Хьан дневникан йаззамаш а, дневникан комментареш а,
+ нагахь санна уьш елахь, ларйийр ю, амма гуш ца хилийта къайлаяьхна хир йу.
+ retain_notes: Хьан картан тептарш а, цун тIе комментареш а, нагахь санна уьш
+ елахь, ларйийр ю, амма гуш ца хилийта къайлайахна хир ю.
+ retain_changeset_discussions: Хьан хийцамийн дискуссеш, нагахь санна уьш елахь,
+ ларйийр ю.
+ retain_email: Хьан почтан адрес лардийр ду.
+ recent_editing_html: Ахь дукха хан йоццуш хийцамаш бина хила дер, хьан аккаунт
+ карарчу хенахь дӀайаккха йиш яц. ДӀайаккха йиш хир йу цхьана %{time}.
+ confirm_delete: Бакъалла лаьий хӀуна?
+ cancel: Цаоьшу
accounts:
edit:
- current email address: 'Карара электронан поштан адрес:'
+ title: Аккаунт хийца
+ my settings: Сан нисдаран гӀирс
+ current email address: Карара электронан поштан адрес
+ external auth: Арахьара аутентификаци
openid:
link text: хӀун йу хӀара?
+ public editing:
+ heading: Йукъара нисайар
+ enabled: ДӀахӀоттийна. Аноним йац, нисайа йиш ю.
+ enabled link text: хӀун йу хӀара?
+ disabled: ДӀасакъаьстина а, нисайа йиш йоцуш а, хьалха дина массо а хийцамаш
+ анониман ду.
+ disabled link text: Соьга хьунда ца йало нийсарш?
contributor terms:
+ heading: Дакъалацарна хьоьлаш
+ agreed: Хьо реза хила керлачу дакъалацаран низаман.
+ not yet agreed: Хьо хинца а, реза ца хила керлачу дакъалацаран низаман.
+ review link text: Дехар ду хьайна аттачу хенахь хӀокху ссылки тӀе хьажа, керла
+ дакъалацаран Низам талла а, тӀеэца а.
+ agreed_with_pd: Иштта ахь дӀакхайкхийна, хьайн хийцамаш Къоман Кхиам лоруш
+ йу аьлла.
link text: хӀун йу хӀара?
save changes button: Хийцамаш дӀаӀалашбан
+ delete_account: Аккаунт дӀайаккхар...
+ go_public:
+ heading: Йукъара нисайар
+ currently_not_public: Карарчу хенахь хьан хийцамаш анониман бу, наха хьуна хаамаш
+ дӀакхачо а, хьан меттиг ган а йиш яц. Ахь хийцинарг гайта а, сайтехула хьайца
+ зӀене бовла а, лахахь йолчу нуьйда тӀе Ӏоттало.
+ only_public_can_edit: 0.6 API хийцаелчахьана, йукъараллин пайдаэцархойн бен
+ йиш яц картан хаамаш хийца.
+ find_out_why: хӀунда ду хаа
+ email_not_revealed: Хьан электронан почтан адрес гучудер дац, иза публични гIоттадахь.
+ not_reversible: И гӀуллакх йухадерзо йиш яц, массо а керла пайдаэцархой хӀинца
+ публични лоруш бу.
+ make_edits_public_button: Сан массо а хийцамаш нахана гойтуш дӀахӀиттабе
+ update:
+ success_confirm_needed: Декъашхочун информаци кхиамца карлаяьккхина. Хьайн электронан
+ почтан чу хьажа, хьай керла адрес тӀечӀагӀда.
+ success: Декъашхочунахь лаьцна информаци кхиамца карлайаькхна.
+ destroy:
+ success: Аккаунт дӀайаккхина.
browse:
+ deleted_ago_by_html: ДӀадаьккхина %{time_ago} декъашхочо %{user}
+ edited_ago_by_html: Нисайина %{time_ago} декъашхочо %{user}
version: Верси
+ redacted_version: Нисайина верси
in_changeset: Нисдарш
anonymous: аноним
no_comment: (коммент йац)
part_of: Дакъалоцу цу
+ part_of_relations:
+ one: '%{count} йукъаметтиг '
+ other: '%{count} йукъаметтигаш'
+ part_of_ways:
+ one: '%{count} сиза'
+ other: '%{count} сизнаш'
download_xml: Схьаэца XML
view_history: Хьажа истори
+ view_unredacted_history: Хьажа нисайаза историга
view_details: Мадарра
+ view_redacted_data: Хьажа нисайина историга
+ view_redaction_message: Хьажа нийсабина хаамига
location: 'Географин йолу меттиг:'
node:
title_html: 'ТӀадам: %{name}'
title_html: 'Сиз: %{name}'
history_title_html: 'Сизан истори: %{name}'
nodes: ТӀадам
+ nodes_count:
+ one: '%{count} шад'
+ other: '%{count} шаднаш'
also_part_of_html:
one: сиза чохь йу %{related_ways}
other: сизийн чохь йу %{related_ways}
title_html: 'Хилар: %{name}'
history_title_html: 'Хиларан истори: %{name}'
members: Декъашхой
+ members_count:
+ one: '%{count} декъашхо '
+ other: '%{count} декъашхоша'
relation_member:
entry_role_html: '%{type} %{name} ролехь %{role}'
type:
entry_html: Хилар %{relation_name}
entry_role_html: Хилар %{relation_name} (ролехь %{relation_role})
not_found:
+ title: Цакарийна
sorry: 'Халахетарх, %{type} #%{id} цакарий.'
type:
node: тӀадам
changeset: нисдарш
note: билгалдаккхар
timeout:
+ title: Тайм-аут гIалат
sorry: Бехк ба билла, цу %{type} хаамаш %{id} чуьра чубаха тӀех беха бу.
type:
node: тӀадамаш
tag: Вики агӀонгахь гойту, тег %{key}=%{value}
wikidata_link: Элемент %{page} Викихаамашкахь
wikipedia_link: АгӀо %{page} Википедин чохь
+ wikimedia_commons_link: Викиларми тIера элемент %{page}
telephone_link: Телпо тоха %{phone_number}
+ colour_preview: Басе %{colour_value} хьажа
+ email_link: Электронан почта %{email}
query:
title: ХӀун йу кхузахь?
introduction: Уллера объекташ карайан, картин тӀетаӀайe
nearby: Уллера объекташ
enclosing: Йолу меттиг
+ old_nodes:
+ not_found:
+ sorry: 'Бехк ма билла, шад #%{id} версин %{version} карийна бац.'
+ old_ways:
+ not_found:
+ sorry: 'Бехк ма била, некъ #%{id} версин %{version} карийна бац.'
+ old_relations:
+ not_found:
+ sorry: 'Бехк ма билла, йукъаметтиг #%{id} версин %{version} карийна йац.'
changesets:
changeset_paging_nav:
showing_page: АгӀо %{page}
index:
title: Нисдарш
title_user: Декъашхочун %{user} нисдарш
+ title_user_link_html: Декъашхочун %{user_link} нисдарш
title_friend: Хьан доттагӀийн нисдарш
title_nearby: Уллера декъашхойн нисдарш
- empty: Нисдарш цакарий
+ empty: Нисдарш цакарий.
empty_area: Кхузахь нисдарш дина дац.
- empty_user: Ð\9aÑ\85Ñ\83заÑ\85Ñ\8c Ñ\85Ó\80окÑ\85Ñ\83 декÑ\8aаÑ\88Ñ\85оÑ\87о ниÑ\81даÑ\80Ñ\88 дийна даÑ\86.
+ empty_user: Кхузахь хӀокху декъашхочо нисдарш дина дац.
no_more: Кхи цхьа нисдарш цакарий.
- no_more_area: Кхузахь нисдарш дина дац.
- no_more_user: Кхузахь хӀокху декъашхочо нисдарш дина дац.
+ no_more_area: Кхи кхузахь нисдарш дина дац.
+ no_more_user: Кхи кхузахь хӀокху декъашхочо нисдарш дина дац.
load_more: Чуйаха кхин а
feed:
title: 'Нисдарш: %{id}'
created: Кхоьллина
closed: ДӀачӀагӀа
belongs_to: Автор
+ subscribe:
+ heading: ТIевазалур вуй хийцамийн дийцар тIе?
+ button: ТIевазало дийцар тIе
+ unsubscribe:
+ heading: ХӀокху хийцамийн дийцар тIера дӀакъаста?
+ button: ДӀакъаста дийцар тIера
+ heading:
+ title: 'Нисдарш: %{id}'
+ created_by_html: Кхоьлина %{link_user} on %{created}.
+ no_such_entry:
+ title: Иштта хийцама пакет бац
+ heading: 'ДӀайазайина йац id: %{id}'
+ body: Бехк ма билла, id %{id} хийцамаш бац. Дехар ду, нийса йазийни хьажа, хьо
+ чоьха ваьла ссылка нийса ца хила а тарло.
show:
title: 'Нисдарш: %{id}'
+ created: Кхоьллина %{when}
+ closed: 'ДӀакъевлина: %{when}'
+ created_ago_html: Кхоьллина %{time_ago}
+ closed_ago_html: ДӀакъевлина %{time_ago}
+ created_ago_by_html: Кхоьллина %{time_ago} декъашхочо %{user}
+ closed_ago_by_html: ДӀакъевлина %{time_ago} декъашхочо %{user}
discussion: Дийцар
join_discussion: Дийцарехь дакъалаца системин чугӀо
+ still_open: Хийцамийн пакет хӀинца а йиллина йу - дискусси схьайоьллур йу хийцамийн
+ пакет дӀакъевлича.
+ subscribe: Йаздала
+ unsubscribe: Йаздалар дӀадаккха
+ comment_by_html: Комментари йина %{user} %{time_ago}
+ hidden_comment_by_html: Къайлаха комментари йина %{user} %{time_ago}
hide_comment: къайлайаккха
unhide_comment: гайта
comment: Коммент
relations: Хилар (%{count})
relations_paginated: Хилар (%{x}-%{y} чуьра %{count})
timeout:
- sorry: Ахьа бихина нисдарийн могӀа, арабаккха тӀехь беха бу.
+ sorry: Бехк ма билла, ахьа бихина нисдарийн могӀа, арабаккха тӀехь сов хьан
+ оьшу.
changeset_comments:
comment:
- comment: '#%{changeset_id} %{author} керла коммент'
- commented_at_by_html: Карлаяьккхина %{when} хьалха %{user}
+ comment: '#%{changeset_id} %{author} керла коммент нисдаран пакет тIе'
+ commented_at_by_html: Карлайаккхина %{when} декъашхочо %{user}
+ comments:
+ comment: 'Керла комментари нисдаран пакет тIе #%{changeset_id} декъашхочо %{author}'
index:
title_all: OpenStreetMap тӀехь дина нисдарийн дийцар
title_particular: 'OpenStreetMap #%{changeset_id} тӀехь дина нисдарийн дийцар'
+ timeout:
+ sorry: Бехк ма билла, ахьа бихина нисдарийн могӀанаш, арабаха тӀехь сов хьан
+ оьшу.
dashboards:
contact:
+ km away: Хьун тIера %{count} км
+ m away: Хьун тIера %{count} м
latest_edit_html: 'ТӀаьххьара нисдар %{ago}:'
popup:
+ your location: Хьо волу/йолу меттиг
+ nearby mapper: Уллера картадилархо
friend: ДоттагӀ
show:
+ title: Сан панель
+ no_home_location_html: '%{edit_profile_link} а, хьо волу меттиг а хӀоттае, уллера
+ декъашхо гарахьам.'
+ edit_your_profile: Хьайн профиль нисайе
my friends: ДоттагӀий
+ no friends: Цкъачунна цхьа а доттагӀ тӀетоьхна вац ахь.
+ nearby users: Кхибола уллера декъашхой
+ no nearby users: Кхин цхьа а декъашхо вац цкъачунна уллех карта хӀоттош болх
+ беш.
+ friends_changesets: доттагӀийн хийцамаш
+ friends_diaries: доттагӀийн тептарш
+ nearby_changesets: лулара хийцамаш
+ nearby_diaries: лулара тептаран йаздарш
diary_entries:
new:
title: Керла дӀайаздар дневник чохь
form:
- location: 'Меттиг:'
- use_map_link: Ð\93айÑ\82а каÑ\80Ñ\82ан Ñ\82Ó\80еÑ\85Ñ\8c
+ location: Меттиг
+ use_map_link: Ð\9aаÑ\80Ñ\82а лела де
index:
- title: Ð\94невникаш
- title_friends: ДоттагӀийн дневникаш
- title_nearby: Уллера декъашхойн дневникаш
- user_title: Декъашхочун дневник %{user}
+ title: ТепÑ\82аÑ\80ш
+ title_friends: ДоттагӀийн тептарш
+ title_nearby: Уллера декъашхойн тептарш
+ user_title: Декъашхочун тептар %{user}
in_language_title: '%{language} маттахь дневникан дӀайаздарш'
new: Дневник чуьра керла дӀайаздар
new_title: Кхолла хьайн дневник чохь керла дӀайаздар
+ my_diary: Сан тептар
no_entries: Дневник чохь дӀайаздарш дац
recent_entries: Дукха хан йоцу дӀайаздарш
older_entries: Шира дӀайаздарш
title: ДӀайаздарш тадар
marker_text: Билгало йазйаран меттиг
show:
- title: Декъашхочун дневник %{user} | %{title}
- user_title: Декъашхочун дневник %{user}
+ title: Декъашхочун тептар %{user} | %{title}
+ user_title: Декъашхочун тептар %{user}
+ discussion: Дийцар
+ subscribe: Йаздала
+ unsubscribe: Йаздалар дӀадаккха
leave_a_comment: Йитта коммент
login_to_leave_a_comment_html: '%{login_link}, коммент йитарна'
login: ЧугӀо
body: id %{id} чуьра дӀайаздарш цакарий. хьажа нийса йаздиний. Хьажорг гӀалате
хила мега.
diary_entry:
- posted_by_html: 'ДӀабахийтина %{link_user} %{created}, мотт: %{language_link}'
- comment_link: Йитта коммент
- reply_link: Жоп ло
+ posted_by_html: 'Арахецна %{link_user} %{created}, мотт: %{language_link}'
+ updated_at_html: ТӀаьххьара карладаккхар %{updated}.
+ comment_link: Комментари е хӀокху йаззамна
+ reply_link: Авторе йаза де
comment_count:
- few: '%{count} коммент яц'
- other: '%{count} коммент яц'
+ one: '%{count} коммент'
+ other: '%{count} комментареш'
+ no_comments: Комментари йац
edit_link: Хийца дӀайаздар
hide_link: Къайладаккха дӀайаздар
unhide_link: Гучудаккха хӀара дӀайаздар
report: Хаамбе хӀокху дӀайаздарх дневник тӀехь
diary_comment:
comment_from_html: Коммент %{link_user} %{comment_created_at}
- hide_link: Ð\9aÑ\8aайладаккха хӀара коммент
+ hide_link: Ð\9aÑ\8aайлайаккха хӀара коммент
unhide_link: Гучуйаккха хӀара коммент
confirm: Бакъдан
report: ХӀокху комментах хаамбе
location:
location: 'Меттиг:'
- view: Ð\93аÑ\80
+ view: Ð¥Ñ\8cажа
edit: Нисдар
feed:
user:
all:
title: Дневникан дӀайаздарш OpenStreetMap
description: OpenStreetMap декъашхойн тӀаьххьарлера дӀайаздарш
+ subscribe:
+ heading: РoгӀepa йаззам йазъечу дискуссина тIе вазлой?
+ button: ТIевазало дийцар тIе
+ unsubscribe:
+ heading: РoгӀepa йаззам йазъечу дискуссина тIера дӀакъастий?
+ button: ДӀакъаста дийцар тIера
diary_comments:
index:
+ title: Декъашхочо тӀетоьхначу дневникан йаздаршна комментареш %{user}
+ heading: '%{user} тептар тIе комментареш'
+ subheading_html: тдекъашхочо тептар тIе комментареш тоьхна %{user}
+ no_comments: цхьа комментари йац тептартех
post: Хаам
when: Маца
comment: Коммент
newer_comments: Керла комменташ
older_comments: Шира комменташ
+ new:
+ heading: Дневник йазъйаран дискуссе комментари тӀетоха?
+ doorkeeper:
+ errors:
+ messages:
+ account_selection_required: Авторизацин серверо декъашхочуна тептар къасто
+ деза доьху
+ consent_required: Авторизацин серверо декъашхочуна резахилар доьху
+ interaction_required: Авторизацин серверна оьшу декъашхочуна йукъаметтигаш
+ лелайар
+ login_required: Авторизацин серверна оьшу чаккхенан декъашхочуна аутентификаци
+ flash:
+ applications:
+ create:
+ notice: Приложенин регистраци йина.
+ openid_connect:
+ errors:
+ messages:
+ auth_time_from_resource_owner_not_configured: ГIулкх ца хила хIара кехо
+ бахьанехь::OpenidConnect.configure.auth_time_from_resource_owner конфугираци
+ йац.
+ reauthenticate_resource_owner_not_configured: ГIулкх ца хила хIара кехо
+ бахьанехь::OpenidConnect.configure.reauthenticate_resource_owner конфугираци
+ йац.
+ resource_owner_from_access_token_not_configured: ГIулкх ца хила хIара кехо
+ бахьанехь::OpenidConnect.configure.resource_owner_from_access_token конфугираци
+ йац.
+ select_account_for_resource_owner_not_configured: ГIулкх ца хила хIара кехо
+ бахьанехь::OpenidConnect.configure.select_account_for_resource_owner конфугираци
+ йац.
+ subject_not_configured: ID Токен генераци ца хилира Кехо бахьана долуш::OpenidConnect.configure.subject
+ конфугираци йац.
+ scopes:
+ address: Хьо волу адрес хьажа
+ email: Хьайн электронан почтан адрес хьажа
+ openid: Хьайн аккаунте аутинфикаци
+ phone: Хьайн телефон номере хьажа
+ profile: Хьайн профилан хаамашка хьажа
+ errors:
+ contact:
+ contact_url_title: Тайп-тайпанчу контактийн каналаша гайтан
+ contact: Контакт
+ contact_the_community_html: Маьрша хила %{contact_link} OpenStreetMap йукъаралле,
+ нагахь санна хьуна йоьхна ссылка / гIалат карийнехь. Нийса URL дӀаязъе хьайн
+ дехаран йуккхех.
+ bad_request:
+ title: Нийса доцу дехар
+ description: OpenStreetMap сервер тӀехь ахь йехна операци нийса йац (HTTP 400)
+ forbidden:
+ title: Магийна дац
+ description: OpenStreetMap сервер тӀехь ахь йехна операци администраторшна бен
+ магина йац (HTTP 403)
+ internal_server_error:
+ title: Приложенин гIалат
+ description: OpenStreetMap серверна дагахь доцу хьал нисделира, цо новкъарло
+ йира дехар кхочушдан (HTTP 500)
+ not_found:
+ title: Файл цакарий
+ description: Цу цӀарца йолу файл/каталог/API операци ца карийра OpenStreetMap
+ сервер тӀехь (HTTP 404)
+ friendships:
+ make_friend:
+ heading: '%{user} доттагӀ санна тӀетохий?'
+ button: ТӀетоха доттагӀ сана
+ success: '%{name} хIинца хьа доттагI ву!'
+ failed: Бехк ма билла, %{name} доттагӀ санна тӀе цатохавела.
+ already_a_friend: Хьо хӀинца %{name} доттагӀ ву .
+ limit_exceeded: Дукха юзершца доттагӀалла лелийна ахь тӀаьхьарчу хенахь. Кхин
+ доттагӀалла лело гӀертале жимма собар дехьа.
+ remove_friend:
+ heading: ДоттагӀ %{user} дӀаваккхий?
+ button: ДоттагӀ дӀаваккха
+ success: '%{name} хьан доттагIшна йукъара дӀаваьккхина.'
+ not_a_friend: '%{name} хIинца хьа доттагI вац.'
geocoder:
+ search:
+ title:
+ results_from_html: '%{results_link} тӀера жамӀаш'
+ latlon: Чоьхьара
search_osm_nominatim:
prefix:
aerialway:
cable_car: Муьшан некъ
+ chair_lift: Муш тесна хьалаойург
+ drag_lift: Якорь тесна хьалаойург
+ gondola: Канатан некъ
+ magic_carpet: Инзаре кузан хьалаойург
+ platter: Бугелан хьалаойург
+ pylon: БӀогӀам
+ station: Канатан хьалаойургачун станци
+ t-bar: Т-сан хьалаойург
+ "yes": ХӀаваан некъ
aeroway:
aerodrome: Аэродром
- apron: Перрон
+ airstrip: Кеман хьалагIоту-охьахуа некъ
+ apron: Аэропортан перрон
+ gate: Аэропортан гэйт
hangar: Ангар
helipad: Беркеманийн майда
- terminal: Терминал
+ holding_position: Собар до меттиг
+ navigationaid: Авиацин навигацина систем
+ parking_position: Машен дӀахӀотто меттиг
+ runway: Кема хьалагIоту некъ
+ taxilane: Таксин некъ
+ taxiway: Кема нийсадо некъ
+ terminal: Аэропортер терминал
+ windsock: Мох гойтуш йерг
amenity:
+ animal_boarding: Дийнатан интернат
+ animal_shelter: Дийнаташан тховкӀело
+ arts_centre: Исбаьхьаллин центр
atm: Банкомат
bank: Банк
bar: Бар
bench: ГӀант
bicycle_parking: Велопарковка
bicycle_rental: Вилспетийн прокат
+ bicycle_repair_station: вилспеташ та йо меттиг
+ biergarten: Йий духку меттиг
+ blood_bank: ЦIина доккху банк
+ boat_rental: Лодкан прокат
brothel: Бордель
+ bureau_de_change: Валюта хуьйцу меттиг
+ bus_station: Автобусан станци
cafe: Кафе
car_rental: Автомобилийн аренда
car_sharing: Каршаринг
car_wash: Авто йуьлу меттиг
casino: Казино
+ charging_station: Электромашенан ток ло станци
+ childcare: Берига хьожу Iедал
cinema: Кинотеатр
clinic: Поликлиника
clock: Сахьташ
college: Колледж
community_centre: Йукъараллин центр
+ conference_centre: Конференц-центр
courthouse: Суд
crematorium: Крематоорий
dentist: Стоматологи
drinking_water: Молу хи
driving_school: Автошкола
embassy: Векалалла
+ events_venue: Вовшахкхеттар дӀахьуш йолу меттиг
fast_food: Фаст-фуд
ferry_terminal: Пароман станци
fire_station: ЦӀеяйаран станци
fuel: Йагорг йоттар
gambling: Ловза цӀа
grave_yard: ДӀабухку меттиг
+ grit_bin: ГIум чохь йол контейнер
hospital: Госпиталь
+ hunting_stand: Талларан стенд
+ ice_cream: Морожени
+ internet_cafe: Интернет кафе
+ kindergarten: Берийн беш
+ language_school: Мотт Iамо ишкол
library: Библиотека
+ loading_dock: ТIедуту док
+ love_hotel: Безаман отель
marketplace: Базар
+ mobile_money_agent: Мобилан ахчанан агент
monastery: Монастырь
+ money_transfer: Ахч дехьадокху меттиг
+ motorcycle_parking: Маццикл дӀахӀотто меттиг
+ music_school: Музыкийн ишкол
nightclub: Буьйсанан клуб
nursing_home: Къанойн цӀа
parking: ДӀахӀуттийла
+ parking_entrance: Парковкан чуволийла
parking_space: Парковка
+ payment_terminal: Ахча дӀадаларан терминал
pharmacy: Аптека
+ place_of_worship: Ӏибадат до меттиг
police: Полици
post_box: Поштан йаьшка
post_office: Поштан дакъа
prison: Набахте
pub: Паб
+ public_bath: Йукъара бани
+ public_bookcase: Йукъара книжкан шкаф
public_building: Йукъараллин гӀишло
+ ranger_station: Рейнджерин станци
recycling: Утилизацин меттиг
restaurant: Ресторан
+ sanitary_dump_station: Санитарийн кхели
school: Ишкол
shelter: ДӀахьуллойла
shower: Душ
theatre: Театр
toilets: ХьаштагӀа
townhall: ГӀалин администраци
+ training: Ӏаморан меттиг
university: Университет
+ vehicle_inspection: Машенаг хьожу меттиг
vending_machine: Махбаран автомат
veterinary: Ветеринаран клиника
village_hall: Керт
waste_basket: Урна
waste_disposal: Нехийн бак
+ waste_dump_site: Нехаш дӀакхуссу меттиг
+ watering_place: Хи доккху меттиг
water_point: Хи гулдар
+ weighbridge: ТӀайан терза
+ "yes": ПаргIатто
boundary:
+ aboriginal_lands: Аборигенан латташ
administrative: Административан дакъа
+ census: Бахархойн дӀаязбаран доза
national_park: Къоман парк
+ political: Хьаржаман доза
protected_area: ГӀорала деш йолу меттиг
+ "yes": Доза
bridge:
aqueduct: Акведук
boardwalk: Тротуар
viaduct: Виадук
"yes": ТӀай
building:
+ apartment: Петар
+ apartments: Петарш
+ barn: Амбар
+ bungalow: Бунгало
+ cabin: ЛаппагӀа
+ chapel: Килс
+ church: Килс
+ civic: Граждански гӀишло
+ college: Колледжан гIишло
+ commercial: Коммерцин гӀишло
+ construction: Йаш йолу гIишло
+ cowshed: Божал
+ detached: Ша лаьтта цIа
+ dormitory: Общежити
+ duplex: Шина агIор цIа
+ farm: Ферма
+ farm_auxiliary: Фермера цIа
+ garage: Гараж
+ garages: Гаражаш
+ greenhouse: Теплиц
+ hangar: Ангар
+ hospital: Лазартне гIишло
+ hotel: ХьешацӀа
+ house: ЦӀа
+ houseboat: ЦӀийнан хинкема
+ hut: ЛаппагӀа
+ industrial: Промышленни гӀишло
+ kindergarten: Берийн беш
+ manufacture: Промышленни гӀишло
+ office: Офисан гIишло
+ public: Йукъараллин гӀишло
+ residential: Нах беха цIа
+ retail: Йохк-эцаран гIишло
+ roof: Тхов
+ ruins: Доьхна цIа
+ school: Ишколан гIишло
+ semidetached_house: Ши петар йол цIа
+ service: Сервисан гIишло
+ shed: Божал
+ stable: Кхай
+ static_caravan: ДIайсалело цIа
+ sty: Хьакхин божал
+ temple: Килсан гIишло
+ terrace: МогIара цIенош
+ train_station: Аьчка некъан вокзал
+ university: Университет
+ warehouse: Дуо
"yes": ГӀишло
+ club:
+ scout: Скаутан база
+ sport: Спортан клуб
+ "yes": Клуб
craft:
+ beekeeper: Накхаршлелорхо
+ blacksmith: Пхьар
brewery: Йий доккху
carpenter: Дечиг-пхьар
+ caterer: Юург латтош верг
+ confectionery: Кондитерски
+ dressmaker: ХIумаша тоьгург
electrician: Электрик
+ electronics_repair: Электроник тайо меттиг
gardener: Бешахо
+ glaziery: Аьнглилелархо
+ handicraft: Пхьола
+ hvac: HVAC Пхьола
+ metal_construction: Эчкан пхьар
painter: Исбаьхьалча
photographer: Суртдоккхург
plumber: Сантехник
+ roofer: Тхован пхьар
+ sawmill: Дечкан хьер
shoemaker: Эткийн пхьар
+ stonemason: ТӀулгбуттург
tailor: Тегархо
+ window_construction: Кораш до меттиг
+ winery: Вино до меттиг
"yes": ПхьалгӀа
emergency:
+ access_point: Интернет тIекхочу меттиг
+ ambulance_station: Сиха гIо до станци
assembly_point: Гулдо меттиг
defibrillator: Дефибриллятор
+ fire_extinguisher: ЦӀейойург
+ fire_water_pond: ЦӀейойурган Iам
+ landing_site: Аварийна охьааран меттиг
+ life_ring: Аварийн хинтIехь латто хӀоз
+ phone: Аварийн телефон
+ siren: Аварийн хаамийн сирен
+ suction_point: Аварийн хи чуузу меттиг
+ water_tank: ЦӀейойургучер Iам
highway:
+ abandoned: Тесна некъ
+ bridleway: Говр хьохку некъ
+ bus_guideway: Автобусан моха
bus_stop: Автобус соцу меттиг
+ construction: Некъ тобар
+ corridor: Йуккъахула чекхвала
+ crossing: Биъ-некъ
+ cycleway: Вилиспетан некъ
+ elevator: Лифт
+ emergency_access_point: Дуьххьара гIо до меттиг
+ emergency_bay: Аварийн лоттийла
+ footway: Тротуар
ford: Гечо
+ give_way: Знак "Некъ битта"
+ living_street: Нах беха урам
+ milestone: Километаран бIогIам
+ motorway: Бокх некъ
+ motorway_junction: Бокх биъ-некъ
+ motorway_link: Некъан къастар
+ passing_place: Некъ къастаран моха
path: 'Некъ:'
+ pedestrian: ГIаш лела урам
platform: Платформа
primary: Коьрта некъ
primary_link: Коьрта некъ
proposed: Проектехь болу некъ
+ raceway: Машен къовсу некъ
residential: Урам
rest_area: СадоӀу зона
road: Некъ
+ secondary: Къезга лелабо некъ
+ secondary_link: Къезга лелабо некъ
+ service: ДӀасалелар
+ services: Некъаца йолу сервис
+ speed_camera: Сихаллин камера
steps: ТӀегӀанаш
+ stop: Соцу знак
street_lamp: Урамера фонарь
+ tertiary: КхозлолгIа классан некъ
+ tertiary_link: КхозлолгIа классан некъ
+ track: Ворданан некъ
+ traffic_mirror: Некъан куьзга
+ traffic_signals: Светофор
+ trailhead: Тача
trunk: Некъ
+ trunk_link: Бокх некъ
+ turning_circle: Чувоьрзу гуо
+ turning_loop: Чувоьрзу некъ
+ unclassified: Меттигера некъ
"yes": Некъ
historic:
+ aircraft: Историйн кема
archaeological_site: Эхкарш
+ bomb_crater: Хьалхалера бомбехь дисина ор
battlefield: ТӀеман бай
boundary_stone: Дозанан тӀулг
building: Историн гӀишло
bunker: Бункер
+ cannon: Историйн йокх топ
castle: ГӀап
+ charcoal_pile: Историйн дечкан кIора
church: Килс
city_gate: ГӀалин ков
citywalls: Историн чӀагӀанаш
fort: Форт
heritage: Культуран тӀаьхьалон объект
+ hollow_way: ТIаьIана некъ
house: ЦӀа
manor: Латта
memorial: Мемориал
+ milestone: Историйн мур
mine: Хьаст
+ mine_shaft: Шахтан гIад
+ monument: Монумент
+ railway: Историйн цӀерпоштан некъ
+ roman_road: Римхойн некъ
ruins: Саьлнаш
+ rune_stone: Рунийн тIулг
stone: ТӀулг
tomb: Каш
tower: БӀов
+ wayside_chapel: Некъаца йол килс
+ wayside_cross: Некъаца долу жIара
+ wayside_shrine: Некъаца йолу Iибадатан меттиг
+ wreck: ХIорд-кеман остов
+ "yes": Иэсан меттиг
junction:
"yes": Галморзе
landuse:
allotments: Бешлелор
+ aquaculture: Аквакультур
basin: Бассейн
+ brownfield: ГIишло йа кечайина меттиг
cemetery: Кешнаш
commercial: Офисан меттиг
conservation: Лардойла
construction: ГӀишлош йар
+ farmland: ДIадуьйша латт
+ farmyard: Ферман керт
+ forest: Хьун
garages: Гаражаш
grass: Буц
+ greenfield: Кхиаза йолу территори
+ industrial: Ерматаллин кIошта
landfill: ДӀакхийсуьйла
meadow: Бай
military: ТӀеман меттиг
mine: Шахта
orchard: Стоьмийн беш
+ plant_nursery: Ораматаш кхио меттиг
quarry: Карьер
railway: Аьчкан некъ
recreation_ground: СадоӀу некъ
+ religious: Динан территори
reservoir: Хи латтийла
+ reservoir_watershed: Резервуарийн хидоькъе
+ residential: Нах беха меттиг
retail: Мах бен территори
+ village_green: Эвлан юкъ
+ vineyard: Кемсийн беш
+ "yes": Латталелор
leisure:
+ adult_gaming_centre: Боккхиниш ловзу центр
+ amusement_arcade: Самукъадаккхаран Аркада
+ bandstand: Эстрада
+ beach_resort: Диттнаш долуш пляж
+ bird_hide: Олхазарша толлу пункт
+ bleachers: Трибунаш
+ bowling_alley: Боулинган моха
+ common: Йукъара латта
+ dance: Хелхаран чоь
+ dog_park: ЖIаьлина майда
+ firepit: ЦIе латто меттиг
+ fishing: ЧӀерийлецар
+ fitness_centre: Фитнес-центр
+ fitness_station: Тренажер
+ garden: Беш
+ golf_course: Гольфан майда
+ horse_riding: Говр хохку меттиг
+ ice_rink: Ша
marina: Йист
miniature_golf: Минигольф
nature_reserve: Лардойла
+ outdoor_seating: Арахь охьаховшар
park: Парк
+ picnic_table: Пикникан стоьла
pitch: Спортан майда
playground: Берийн ловзу майда
recreation_ground: СадоӀу зона
"yes": Мукъа хан
man_made:
adit: Галерей
+ advertising: Реклама
+ antenna: Антенна
+ avalanche_protection: Хьаьттан дуьхьало
beacon: Маяк
+ beam: ЗӀенар
beehive: Улей
+ breakwater: ТулгӀа-хьадорг
bridge: ТӀай
bunker_silo: Бункер
+ cairn: ТIулган пирамида
chimney: КӀуьран биргӀа
+ clearcut: Ирзу
+ communications_tower: ЗӀенан бӀов
crane: Кран
+ cross: Некъ хадор
+ dolphin: ХIорд-кема дӀатосийла
+ dyke: Дамба
embankment: ЦӀерпоштнекъан вал
flagpole: ГӀуркх
gasometer: Газгольдер
groyne: Буна
kiln: Пеш
lighthouse: Маяк
+ manhole: Люк
mast: Мачта
mine: Хьаст
+ mineshaft: Шахтан гIад
+ monitoring_station: Тидам бо станци
+ petroleum_well: Мехкадаьттан буру
pier: Мор
pipeline: Турбанаш йахкар
+ pumping_station: Насосан станци
+ reservoir_covered: ДӀакъевлина резервуар
silo: Силос
+ snow_cannon: Ло тухарг
+ snow_fence: Лона дуьхьало
+ storage_tank: Къойлана резервуар
+ street_cabinet: Урамера шкаф
+ surveillance: Тидам бо камер
+ telescope: Телескоп
tower: БӀов
+ utility_pole: Тоькан бIогIам
+ wastewater_plant: Боьха хи цIандо станци
+ watermill: Хина хьера
+ water_tap: Хин кран
+ water_tower: Хин бӀов
water_well: ГӀу
+ water_works: Хидокху меттиг
+ windmill: Мохан электростанци
+ works: Фабрика
+ "yes": Адмо кхоьллина
+ military:
+ airfield: ТIеман аэродром
+ barracks: Баракаш
+ bunker: Бункер
+ checkpoint: Блокпост
+ trench: Саьнгар
+ "yes": ТIеман
+ mountain_pass:
+ "yes": Дукъ даккхар
natural:
+ atoll: Атолл
+ bare_rock: Йерзина тарх
bay: Айма
+ beach: Пляж
cape: Кафе
+ cave_entrance: Хьех чувола меттиг
+ cliff: Тарх
+ coastline: ХӀордан йист
crater: Кратер
+ dune: Дюна
+ fell: Ломар йеса меттиг
fjord: Фьорд
forest: Хьуьн
geyser: Гейзер
glacier: Шалам
grassland: Бай
+ heath: Йеса аре
hill: Барз
+ hot_spring: Муьжхи
island: ГӀайре
+ isthmus: Лаг
land: Латта
+ marsh: Буц йолу ишал
+ moor: Ишал
mud: Хатт
peak: Ломан бохь
+ peninsula: АxгӀайpe
point: Мара
reef: Риф
ridge: Дукъ
rock: Тарх
saddle: Лам баккхар
sand: ГӀум
+ scree: Охьатекхна жагӀа
+ scrub: Коьллаш
+ shingle: ЖагӀа
+ spring: |2-
+
+ Хьаст
stone: ТӀулг
strait: Хидоькъе
tree: Дитт
+ tree_row: Диттан могӀа
+ tundra: Тундра
+ valley: ТогӀе
volcano: ТӀаплам
+ water: Хи
+ wetland: Ишалан меттиг
+ wood: Хьун
+ "yes": Ӏаламан хӀума
office:
+ accountant: Бухгалтер
administrative: Администраци
+ advertising_agency: Рекламан агентство
architect: Архитектор
+ association: Ассоциаци
company: Компани
+ diplomatic: Дипломатин офис
+ educational_institution: Дешаран меттиг
+ employment_agency: Болх луьху агентство
+ energy_supplier: Ток латтучун офис
+ estate_agent: ГIишлонан агенство
+ financial: Финансан офис
+ government: Ӏедалан урхалла
+ insurance: Страховийн офис
+ it: IT-офис
+ lawyer: Юрист
+ logistics: Логистикан офис
+ newspaper: Газетан офис
+ ngo: НКО офис
+ notary: Нотариус
+ religion: Динан офис
+ research: Талламан офис
+ tax_advisor: Налогийн хьехамча
+ telecommunication: Телекоммуникацин офис
+ travel_agent: Туристийн агенталла
"yes": Офис
place:
+ allotments: Бешлелор
+ archipelago: Архипелаг
city: ГӀала
city_block: ГӀалин куп
country: Пачхьалкх
houses: ЦӀа
island: ГӀайре
islet: Жима гӀайре
+ isolated_dwelling: Фермера цIа
+ locality: Меттиг
municipality: Муниципалитет
neighbourhood: Лулахалла
+ plot: Дакъа
postcode: Поштан индекс
quarter: ГӀалин кӀошт
region: Регион
village: Дитташ
"yes": Йолу меттиг
railway:
+ abandoned: ДӀасабаькхна цӀерпоштан некъ
+ buffer_stop: Буферан сацар
+ construction: Баьш болу цӀерпоштнекъ
+ disused: ДӀатесна цӀерпоштан некъ
+ funicular: Фуникулер
+ halt: ЦӀерпоштан вокзал
+ junction: ЦӀерпоштнекъан дӀасакъастар
+ level_crossing: ЦӀерпоштнекъах дехьаволийла
+ light_rail: Йей рельсан транспорт
+ miniature: ЦӀерпоштнекъан макет
monorail: Монорельс
+ narrow_gauge: готта аьчка некъ
+ platform: Эчка некъан платформа
+ preserved: Историйн эчка некъ
+ proposed: Ба безаш эчкан некъ
+ rail: Рельс
+ spur: ЦӀерпоштан лини
+ station: ЦӀерпоштан вокзал
+ stop: ЦӀерпоштан сацар
+ subway: Метро
+ subway_entrance: Метро чувола меттиг
+ switch: ЦӀерпоштан коммутатор
+ tram: Трамвай
+ tram_stop: Трамвайан сацар
+ turntable: Чуваьрзу гуо
+ yard: ЦӀерпоштан керт
shop:
+ agrarian: Латталелахочун туька
+ alcohol: Къаьркъан туька
+ antiques: Антиквариат
+ appliance: Чура хӀумман туька
+ art: Исбаьхьаллин салон
+ baby_goods: Берийн хӀуманаш
+ bag: Тоьрмагин туька
+ bakery: Бепиг
+ bathroom_furnishing: Ванни мебель
+ beauty: Хазалан салон
+ bed: Меттан хӀуманаш
+ beverages: Маларш духку туька
+ bicycle: Вилспетан туька
+ bookmaker: Букмекер
+ books: Жайнан туька
+ boutique: Бутик
+ butcher: Жижиг духку туька
+ car: Машенийн туька
+ car_parts: Машенан дакъош духку туька
+ car_repair: Машен тайорг
+ carpet: Кузанаш
+ charity: СагӀийна туька
+ cheese: Нехчан туька
+ chemist: Хими
+ chocolate: Шоколад
+ clothes: Духарш духку туька
+ coffee: Кофина туька
+ computer: Компьютеран туька
+ confectionery: Кондитеран туька
+ convenience: Сурсатина туька
+ copyshop: Копий йо меттиг
+ cosmetics: Косметика
+ craft: Пхьеран хӀуманан туька
+ curtain: Бойш йухку туька
+ dairy: Шуран туька
+ deli: Деликатесан туька
+ department_store: Универсам
+ discount: ДӀадохкаран туька
+ doityourself: '"Айха де" тайпа туька'
+ dry_cleaning: Химйилар
+ e-cigarette: Электронан сигаьркан туька
+ electronics: Электроникан туька
+ erotic: Эротикан туька
+ estate_agent: ГIишлонан агенство
+ fabric: Къади духку туька
+ farm: Кертар сурсатийн туька
+ fashion: Духаран туька
+ fishing: ЧӀаралацархочун туька
+ florist: Зезагийна туька
+ food: Сурсаташ
+ frame: Гуран туька
+ funeral_directors: ДӀаверзоран бюро
+ furniture: Мебель
+ garden_centre: Бешан центр
+ gas: Газ техникан гӀирс
+ general: Йукъара туька
+ gift: СовгӀатийн туька
+ greengrocer: Хасстоьман туька
+ grocery: Сурсатин туька
+ hairdresser: Парикмахер
+ hardware: ГӀирсан туька
+ health_food: Могша даарин туька
+ hearing_aids: Къорачан аппараташ
+ herbalist: Бецан говзанча
hifi: Аудио/видео аппаратурийн туька
houseware: ПхьегӀийн туька
+ ice_cream: Морожени туька
interior_decoration: Интерьер кечйар
+ jewelry: Деши духка туька
+ kiosk: Киоск
+ kitchen: Кухни туька
+ laundry: ХӀуманаш йутту
+ locksmith: Слесар
+ lottery: Лотерей
+ mall: Йоккха туька
+ massage: Массаж
+ medical_supply: Медицинан хӀуманаш йухку туька
+ mobile_phone: Смартфонаш йухку туька
+ money_lender: Кредитор
+ motorcycle: Моццикалан туька
+ motorcycle_repair: Моццикалаш тайар
music: Музыкийн туька
+ musical_instrument: Иллийн гӀирс
newsagent: Газетийн киоск
+ nutrition_supplements: Кхачанан тӀетохарш
optician: Оптика
+ organic: Органикан сурсата туька
+ outdoor: Арахь садаӀаран туька
+ paint: Басарши туька
+ pastry: Кондитерски
+ pawnbroker: Ломбард
+ perfumery: Парфюмери
+ pet: Дийнатин туька
+ pet_grooming: Дийнаташка хьажар
+ photo: Фототуька
+ seafood: ХӀордан сурсаташ
+ second_hand: Лелайин хIуманаш йухку туька
+ sewing: ХIум тоьгу цех
+ shoes: Мачийн туька
+ sports: Спортан туька
+ stationery: Канцеляран гIирс
+ storage_rental: Дуон аренда
+ supermarket: Супермаркет
+ tailor: Тегархо
+ tattoo: Тату салон
+ tea: Чайн туька
+ ticket: Касса
+ tobacco: Сигаьркан туька
+ toys: Ловза хIуман туька
+ travel_agency: Туристийн агенство
+ tyres: Чкъурган туька
+ vacant: Йеса туька
+ variety_store: Цхьа мах болу туька
+ video: Видео туька
+ video_games: Видеоловзаршан туька
+ wholesale: Туьпахьан туька
+ wine: Винон туька
"yes": Туька
tourism:
alpine_hut: Альпийн цӀа
apartment: Апартаменташ
+ artwork: Исбаьхьаллин болх
attraction: Сийлахь меттиг
- cabin: ЛаппагӀа
+ bed_and_breakfast: Эхан пансион
+ cabin: Туристан лаппагӀа
+ camp_pitch: Кемпинг
camp_site: Лагерь
+ caravan_site: ЧкъургтIех долу цIеношна латтар
+ chalet: Шале
+ gallery: Галерей
+ guest_house: Хьешан цIа
+ hostel: Хостел
+ hotel: Отель
+ information: Хаам
+ motel: Мотель
+ museum: Музей
+ picnic_site: Пикникан меттиг
+ theme_park: Сакъуьру парк
+ viewpoint: Хьажаран меттиг
+ wilderness_hut: Акха меттехь лаппагӀа
zoo: Зоопарк
+ tunnel:
+ building_passage: ГӀишлочухула чакхавалар
+ culvert: Хина турба
+ "yes": Тоннель
+ waterway:
+ artificial: Искусствени хи дIадохар
+ boatyard: Верфь
+ canal: Канал
+ dam: Дамба
+ derelict_canal: Дакъадела татол
+ ditch: Татол
+ dock: Док
+ drain: Харш
+ lock: Шлюз
+ lock_gate: Шлюзан ков
+ mooring: Швартовкан меттиг
+ rapids: Хинан тарх
+ river: Хи
+ stream: Шовда
+ wadi: Лекъан хи
+ waterfall: Чухчари
+ weir: ЧӀинг
+ "yes": Хичура маршрут
+ admin_levels:
+ level2: Паччалкхан доза
+ level3: Регионан доза
+ level4: Штатан доза
+ level5: Регионан доза
+ level6: КIоштан доза
+ level7: Муниципалитетан доза
+ level8: ГIалан доза
+ level9: Йуртан доза
+ level10: ГӀалин йистан доза
+ level11: Лулахойн доза
types:
cities: ГӀаланаш
towns: ГӀаланийн маттигаш
title: Проблемаш
select_status: Харжа статус
select_type: Харжа тайпа
+ select_last_updated_by: ТӀаьххьара карлаваьлига хьаржа
+ reported_user: Декъашхо хаам йуккъехь
+ not_updated: Карлайаккхин йац
search: Лахар
+ search_guidance: 'Проблемаш лахар:'
+ user_not_found: Иштта декъашхо вац
+ issues_not_found: Иштта проблемаш карийна йац
status: Статус
+ reports: Хаамаш
+ last_updated: ТӀаьххьара хийцам
+ last_updated_time_ago_user_html: '%{time_ago} хIокху %{user}'
+ link_to_reports: Хаамашка хьажа
+ reports_count:
+ one: '%{count} хаам'
+ other: '%{count} хаамаш'
+ reported_item: Хаамин тема
states:
ignored: Игнорйина
open: Елина
resolved: Кечйина
show:
+ title: '%{status} проблема #%{issue_id}'
reports:
- zero: Хаам бац
- one: 1 хаам
- other: '%{count} хаам'
+ one: '%{count} хаам'
+ other: '%{count} хаамаш'
+ no_reports: Цхьа хаам бац
+ report_created_at_html: Дуьххьара хаам бина %{datetime}
+ last_resolved_at_html: ТӀаьххьара карладаьккхийна %{datetime}
+ last_updated_at_html: ТӀаьххьара карладаьккхийна %{datetime} декъашхочо %{displayname}
resolve: Кечйан
ignore: Тергал ца дан
reopen: Йуха схьайелла
+ reports_of_this_issue: Цу проблемах лаьцна хаам
+ read_reports: Баьшна хаамаш
+ new_reports: Керла хаамаш
+ other_issues_against_this_user: Кхин йолу проблемаш оцу декъашхочунца
+ no_other_issues: Кхин проблемаш йац оцу декъашхочунца
+ comments_on_this_issue: Эца проблемах лаьцна комментари
+ resolve:
+ resolved: Проблеман статус гIотайира 'ДӀадерзийна' чу.
+ ignore:
+ ignored: Проблеман статус гIотайира 'Таьргал ца йина' чу
+ reopen:
+ reopened: Проблеман статус гIотайира 'Хьайилина' чу
+ comments:
+ comment_from_html: Декъашхочуна коммент %{user_link} йина %{comment_created_at}
+ reassign_param: ДIахьажайай проблем?
+ reports:
+ reported_by_html: Иштта гайта йу %{category} дакъашхочу %{user}кхучохь %{updated_at}
+ helper:
+ reportable_title:
+ diary_comment: '%{entry_title}, коммент #%{comment_id}'
+ note: 'Йаззор #%{note_id}'
+ issue_comments:
+ create:
+ comment_created: Хьан комментарий аьттонца кхоьллина
+ issue_reassigned: Хьан комментарий кхоьллина, проблем йухахьажийна
reports:
new:
title_html: Хаам %{link}
+ missing_params: Керла хаам кхолла йиш яц
+ disclaimer:
+ intro: 'Дехар ду, хьайн рапорт сайтан модераторшка дӀахьажайале, хьажа:'
+ not_just_mistake: Хьо тешна вуй, проблема еккъа цхьа гӀалат ца хиларх.
+ unable_to_fix: Хьан аьтто бац хьайна йа хьайн юкъараллин декъашхойн гӀоьнца
+ и проблема нисъян
+ resolve_with_user: Хьо хӀинцале а хьаьжна цу декъашкочунгар проблема дӀаяккха
categories:
diary_entry:
+ spam_label: ХӀара тептаран йаззам спам йу
+ offensive_label: ХӀокха тептартехь йаздинарг эвхьаза йе сийдоцуш ду
+ threat_label: ХӀокху тептаре йаззамехь кхерам тосуш бу
other_label: Кхийерг
diary_comment:
+ spam_label: ХӀара тептаран комментари спам йу
+ offensive_label: ХӀокха тептартера комментари эвхьаза йе сийдоцуш ду
+ threat_label: ХӀокху тептаран комментарехь кхерам тосуш бу
other_label: Кхийерг
user:
+ spam_label: ХӀара декъашхочуна профиль спам йу
+ offensive_label: ХӀара лелоран профиль эвхьаза йе сийдоцуш йу
+ threat_label: ХӀокху декъашхочун профилехь кхерам бу
+ vandal_label: ХӀара декъашхо вандал ву
other_label: Кхийерг
note:
+ spam_label: ХӀара билгалдаккхар спам ду
+ personal_label: ХӀокху билгалдаккхарехь персональни хаамаш бу
+ abusive_label: ХӀара билгало сийдоцуш ду
other_label: Кхийерг
+ create:
+ successful_report: Хьан хаам кхиамца дӀаязбина
+ provide_details: Дехар ду, оьшуш болу хаамаш схьаалар
layouts:
+ logo:
+ alt_text: OpenStreetMap-ан логотип
+ home: ЦӀа дӀагӀо
logout: Болх дӀаберзор
log_in: ЧугӀо
+ sign_up: ДӀайаздалар
+ start_mapping: Карт дила волаво
edit: Нисдар
history: Истори
export: Экспорт
gps_traces: GPS-трекаш
gps_traces_tooltip: Болхбе GPS-трекашца
user_diaries: Декъашхочун дневник
+ user_diaries_tooltip: Декъашхошна тептаршка хьажа
+ edit_with: Нисайе кхуьнца %{editor}
+ tag_line: Маьрша дуьненан Вики карта
+ intro_header: Марша вогӀийла хьо OpenStreetMap!
+ intro_text: OpenStreetMap — дуьненан карта ду, хьо санна болчу наха кхоьллина,
+ ткъа хIара маьрша лело йиш йу йиллина лицензица.
+ intro_2_create_account: Декъашхочун аккаунт кхолла
+ hosting_partners_2024_html: Хостинг лелош йу %{fastly}, %{corpmembers}, кхин а
+ %{partners}.
+ partners_fastly: Сиха
+ partners_corpmembers: ОСМФ корпорацин декъашхой
+ partners_partners: Партнёраш
+ tou: Лелоран биллам
+ osm_offline: OpenStreetMap база карарчу хенахь хьайалалуш йац, база Ӏалашъяран
+ коьрта белхаш дӀахьош долу дера.
+ osm_read_only: OpenStreetMap база карарчу хенахь ешаран режимехь йу,база Ӏалашъяран
+ белхаш дӀахьош долу дер.
+ donate: Дехар ду, гӀо де OpenStreetMap %{link} аппаратан фонда карлайоккхуш.
help: ГӀо
about: Проектах лаьцна
copyright: Авторийн бакъонаш
+ communities: Тобаш
+ community: Тоба
+ community_blogs: Тобан блог
+ community_blogs_title: OpenStreetMap тобан декъашхошна блогаш
+ make_a_donation:
+ title: ГIо де OpenStreetMap-ан сахана ахчаца
+ text: ГIо де проектан
learn_more: Цул совнаха хаа
more: Кхин а
user_mailer:
+ diary_comment_notification:
+ description: 'OpenStreetMap Тептар Чувалар #%{id}'
+ subject: Декъашхочо OpenStreetMap] %{user} комментари йитан тептар чохь
+ hi: Маршалла ду %{to_user},
+ header: '%{from_user} комментари йина OpenStreetMap тептаран йаззамна %{subject}:'
+ header_html: '%{from_user} комментари йина OpenStreetMap тептаран йаззамна %{subject}:'
+ footer: Иштта комментари еша йиш йу %{readurl} тӀехь а, комментари йазъян а
+ йиш йу %{commenturl} тӀехь я авторе хаам бан йиш йу %{replyurl} тӀехь
+ footer_html: Иштта комментари еша йиш йу %{readurl} тӀехь а, комментари йазъян
+ а йиш йу %{commenturl} тӀехь я авторе хаам бан йиш йу %{replyurl} тӀехь
+ footer_unsubscribe: Хьан йиш йу дискуссера дӀавала %{unsubscribeurl}
+ footer_unsubscribe_html: Хьан йиш йу дискуссера дӀавала %{unsubscribeurl}
+ message_notification:
+ subject: '[OpenStreetMap] %{message_title}'
+ hi: Маршалла ду %{to_user},
+ header: '%{from_user} хьуьга хаам баийтина OpenStreetMap чухула %{subject} темаца:'
+ header_html: '%{from_user} хьуьга хаам баийтина OpenStreetMap чухула %{subject}
+ темаца:'
+ footer: Иштта хьа %{readurl} тӀера хаам еша йиш йу, авторе хаам бахьийта мегар
+ ду %{replyurl} тӀера
+ footer_html: Иштта хьа %{readurl} тӀера хаам еша йиш йу, авторе хаам бахьийта
+ мегар ду %{replyurl} тӀера
+ friendship_notification:
+ hi: Маршалла ду %{to_user},
+ subject: '[OpenStreetMap] %{user} хьо доттагӀ санна тӀетоьхна'
+ had_added_you: '%{user} -о OpenStreetMap чохь хьо доттагӀ санна тӀетоьхна.'
+ see_their_profile: Хьан церан профиль ган йиш йу %{userurl} тӀехь.
+ see_their_profile_html: Хьан церан профиль ган йиш йу %{userurl} тӀехь.
+ befriend_them: Иштта %{befriendurl} чохь доттагӀ санна тӀетоха йиш йу хьан.
+ befriend_them_html: Иштта %{befriendurl} чохь доттагӀ санна тӀетоха йиш йу хьан.
+ gpx_description:
+ description_with_tags_html: 'Иза хьан GPX файлах тера йу %{trace_name} %{trace_description}
+ описаниеца а, хӀара тегашца а: %{tags}'
+ description_with_no_tags_html: Иза хьан GPX файлах тера йу %{trace_name} %%{trace_description}
+ дицарца, цхьа а тег йоцуш
+ gpx_failure:
+ hi: Маршалла ду %{to_user},
+ failed_to_import: 'импорт ян аьтто ца баьлла. Кхузахь гӀалат ду:'
+ more_info_html: GPX импортан кхачамбацарех лаьцна кхин а хаамаш каро йиш йу
+ %{url} тӀехь.
+ subject: '[OpenStreetMap] GPX Импорт ца хилира'
+ gpx_success:
+ hi: Маршалла ду %{to_user},
+ loaded:
+ one: кхиамца дӀатоьхна %{trace_points}хила тарлучу %{count} point. точках.
+ other: loaded successfully with %{trace_points}хила тарлучу %{count} points.
+ точках.
+ all_your_traces_html: Хьан ерриге а кхиамца чуйиллина GPX лараш каро йиш йу
+ %{url} тӀехь.
+ subject: '[OpenStreetMap] GPX Импортан дика хилира'
signup_confirm:
+ subject: '[OpenStreetMap] Марша вогIийла OpenStreetMap чу'
greeting: Маршалла!
+ created: Цхьаммо (сатийсам бу ахь) хӀинцца %{site_url} чохь аккаунт йина.
+ confirm: 'Кхин хӀумма а данле, оха тӀечӀагӀдан деза и дехар хьоьгара хилла хилар,
+ цундела нагахь санна иза хьоьгара хиллехь, лахахь йолчу ссылки тӀе хьажа хьайн
+ аккаунт тӀечӀагӀъян:'
+ welcome: Ахь хьайн аккаунт тӀечӀагӀйинчул тӀаьхьа, оха хьуна кхин а цхьацца
+ хаамаш лур бу, ахь дӀадолорхьама.
email_confirm:
+ subject: '[OpenStreetMap] Хьайн электронан почтан адрес тӀечӀагӀде'
greeting: Маршалла,
+ hopefully_you: Цхьаммо (сатийсам бу ахь) шен электронан почтан адрес хийца лаьа
+ %{server_url} тӀехь %{new_address} хIокхун тIе.
+ click_the_link: Нагахь санна хӀара хьо велахь, лахахь йолчу ссылки тӀе хьажа,
+ хийцам тӀечӀагӀбан.
lost_password:
+ subject: '[OpenStreetMap] Пароль хийцаран дехар'
greeting: Маршалла,
+ hopefully_you: Цхьаммо (хила тарло ахь) оцу электронан почтан адресан openstreetmap.org
+ аккаунтехь пароль йухаметтахӀоттор дехна.
+ click_the_link: Нагахь санна хӀара хьо велахь, лахахь йолчу ссылки тӀе хьажа,
+ хьайн пароль йухаметтахӀотто.
note_comment_notification:
+ description: 'OpenStreetMap Билгалдаккхар #%{id}'
+ anonymous: Анониман декъашхой
greeting: Маршалла,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} комментари йина хьан цхьана тептарна'
+ subject_other: '[OpenStreetMap] %{commenter} комментари хӀотийна хьуна хьашта
+ йол заметкин'
+ your_note: '%{commenter} комментари гIотийна хьа цхьана заметкан герге %{place}.'
+ your_note_html: '%{commenter} комментари йитина хьан картан цхьана билгалонна
+ тӀехь %{place} уллехь.'
+ commented_note: '%{commenter} комментари йитина ахь комментари йина картан
+ билгалдаккхарехь. Билгалдаккхар %{place} уллехь ду.'
+ commented_note_html: '%{commenter} комментари йитина ахьаъ комментари йина
+ картан билгалдаккхарехь. Билгалдаккхар %{place} уллехь ду.'
+ closed:
+ subject_own: '[OpenStreetMap] %{commenter} хьан цхьа билгалдаккхар дӀакъоьвлина'
+ subject_other: '[OpenStreetMap] %{commenter} дӀакъоьвлина хьуна хьашт долу
+ билгалдаккхар'
+ your_note: '%{commenter} хьан картан цхьа билгалдаккхар дӀакъоьвлина %{place}
+ уллехь.'
+ your_note_html: '%{commenter} хьан картан цхьа билгалдаккхар дӀакъоьвлина
+ %{place} гена йоцуш.'
+ commented_note: '%{commenter} ахь йина заметкин комментари дӀайаккхина %{place}
+ гена йоцуш.'
+ commented_note_html: '%{commenter} ахь комментари йина картан билгалдаккхар
+ дӀайаккхина, %%{place} уллера.'
+ reopened:
+ subject_own: '[OpenStreetMap] %{commenter} хьан цхьа билгалдаккхар йуха а
+ дӀахӀоттийна'
+ subject_other: '[OpenStreetMap] %{commenter} йуха а дӀахӀоттийна хьуна хьашт
+ долу билгалдаккхар'
+ your_note: '%{commenter} йуха а дӀахӀоттийна хьан картан цхьа билгалдаккхар
+ %{place} уллехь.'
+ your_note_html: '%{commenter} йуха а дӀахӀоттийна хьан картан цхьа билгалдаккхар
+ %{place} уллехь.'
+ commented_note: '%{commenter} йуха дӀахӀоттийна ахь комментари йина картан
+ билгалдаккхар, %{place} уллехь.'
+ commented_note_html: '%{commenter} йeха дӀахӀоттийна ахь комментари йина картан
+ билгалдаккхар, %{place} уллехь.'
+ details: Жоп ло йа кхин дӀа а довза %{url} тӀехь.
+ details_html: Жоп ло йа кхин дӀа а довза %{url} тӀехь.
changeset_comment_notification:
+ description: 'OpenStreetMap хийцаман гулам #%{id}'
+ hi: Маршалла ду %{to_user},
greeting: Маршалла,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} комментари йина хьан цхьана хийцаман
+ гуламна'
+ subject_other: '[OpenStreetMap] %{commenter} комментари йина хьуна хьашта
+ хетта хийцаман гуламна'
+ your_changeset: '%{commenter} комментари йитина %{time} хьан цхьана хийцамийн
+ гуламех'
+ your_changeset_html: '%{commenter} комментари йитина %{time} хьан цхьана
+ хийцамийн гуламех'
+ commented_changeset: '%{commenter} комментари йитина %{time} ахь хьоьжуш долчу
+ хийцамашна тӀехь, декъашхочо кхоьллина %{changeset_author}'
+ commented_changeset_html: '%{commenter} комментари йитина %{time} ахь хьоьжуш
+ долчу хийцамашна тӀехь, декъашхочо кхоьллина %{changeset_author}'
+ partial_changeset_with_comment: комментарица '%{changeset_comment}'
+ partial_changeset_with_comment_html: комментарица '%{changeset_comment}'
+ partial_changeset_without_comment: комментарица
+ details: Жоп ло йа хийцамех лаьцна кхин дӀа а довза %{url}.
+ details_html: Жоп ло йа хийцамех лаьцна кхин дӀа а довза %{url}.
+ unsubscribe: Хьан йиш йу %{url} тӀехь оцу хийцамийн карладаккхарех дӀавала.
+ unsubscribe_html: Хьан йиш йу %{url} тӀехь оцу хийцамийн карладаккхарех дӀавала.
confirmations:
confirm:
+ heading: Хьайн почте хьажа!
+ introduction_1: Оха хьуна тӀечӀагӀдаран почте хьажийна.
+ introduction_2: Хьайн аккаунт тӀечӀагӀъе, почтехь йолчу ссылки тӀе а ваьла,
+ карта хӀотто дӀадоло аьтто хир бу хьан.
+ press confirm button: Хьайн аккаунт дӀахӀотто лахахь йолу кнопка тӀе а таӀа
+ йе.
button: Бакъдан
+ success: Хьайн аккаунт тӀечӀагӀйина, баркалла хьуна дӀаязвелла хиларна!
+ already active: И аккаунт хӀинцале а тӀечӀагӀйина йу.
+ unknown token: И тӀечӀагӀдаран код чекхъяьлла йа йолуш йац.
+ resend_html: Нагахь санна хьуна оха тӀечӀагӀдаран почта йуха дӀаяхьийта оьшуш
+ делахь, %{reconfirm_link}.
+ click_here: тӀетаӀайе кхузахь
+ confirm_resend:
+ failure: Декъашхо %{name} ца карийна.
confirm_email:
heading: Бакъде электронан поштан адрес хуьйцуш хилар
+ press confirm button: Хьайн керла электронан почтан адрес тӀечӀагӀдан, лахахь
+ йолу тӀечӀагӀдар кнопка тӀе таӀа йе.
button: Бакъдан
+ success: Хьан электронан почтан адрес хийцина!
+ failure: ХӀинцале а цу токенца тӀечӀагӀдина электронан почтан адрес.
+ unknown_token: И тӀечӀагӀдаран код чекхъяьлла йа йолуш йац.
+ resend_success_flash:
+ confirmation_sent: Оха керла тӀечӀагӀдаран кехат даийтина %{email} тӀе, ткъа
+ цкъа хьайн аккаунт тӀечӀагӀйина, хьан аьтто хир бу карта хӀотто.
+ whitelist: Нагахь санна ахь антиспам-система лелош елахь, цо тӀечӀагӀдаран дехарш
+ дохьуьйту, тӀаккха дехар ду ахь %{sender} хьан кӀайн тептаре язде, хӀунда
+ аьлча тхан аьтто бац и санна дехаршна жоп дала.
messages:
inbox:
title: ЧуйогӀурш
+ messages: Хьан %{new_messages} а, %{old_messages} а ду
+ new_messages:
+ one: '%{count} керла хаам'
+ other: '%{count} керла хаамаш'
+ old_messages:
+ one: '%{count} шира хаам'
+ other: '%{count} шира хаамаш'
+ no_messages_yet_html: Цкъачунна цхьа а хаам бац хьан. ХӀокхарца %{people_mapping_nearby_link}
+ къамел да мегар дарий?
+ people_mapping_nearby: Карта хӀоттош нах бу уллехь
messages_table:
from: Хьаьнгара
to: Хьаьнга
subject: Тема
date: Терахь
+ actions: Дар
message_summary:
+ unread_button: Билгалйе ца йешна санна
+ read_button: Билгалйе йешна санна
reply_button: Жоп ло
destroy_button: ДӀайаккха
+ unmute_button: ДӀаяхийта Инбокс чу
new:
+ title: ДӀабахьийта хаам
+ send_message_to_html: Керла хаам кхунга %{name} бахийта
back_to_inbox: ЧубогӀучаьрга йуханехьа
+ create:
+ message_sent: Хаам дӀахьажийна
+ limit_exceeded: ТӀаьххьарчу хенахь дуккха а хаамаш бахьийтина ахь. Кхин дӀасахьажо
+ гӀортале жимма собар дехьа.
+ no_such_message:
+ title: Иштта хаам бац
+ heading: Иштта хаам бац
+ body: Бехк ма билла цу ID-ца цхьа а хаам бац.
outbox:
title: ДӀайохьуьйтурш
+ actions: Дар
+ messages:
+ one: Хьан %{count} дIабахийтина хаам
+ other: Хьан %{count} дIабахийтина хаамаш
+ no_sent_messages_html: Хьан цкъачунна дIакхехийтина хаамаш бац. ХӀокхарца %{people_mapping_nearby_link}
+ къамел да мегар дарий?
+ people_mapping_nearby: Карта хӀоттош нах бу уллехь
+ muted:
+ title: ДӀадаьхна хаамаш
+ messages:
+ one: '%{count} дӀабаькхина хаам'
+ other: You have %{count} дӀадаьхна хаамаш
+ reply:
+ wrong_user: Хьо чуваьлла `%{user}' санна, амма ахь жоп дала дехна хаам цу декъашхочуьнга
+ ца баийтина. Дехар ду, нийса лелош верг санна чу вала, жоп даларна а.
show:
title: Хаамашка хьажар
reply_button: Жоп ло
unread_button: Билгалйе ца-йешна санна
destroy_button: ДӀайаккха
back: Йуха
+ wrong_user: Хьо `%{user}' санна чуваьлла ву, амма ахь деша дехна хаам цу декъашхочо
+ я цуьнга дӀа ца бахьийтина. Дехар ду, нийса лелош верг санна чу вала, иза
+ ешара а.
sent_message_summary:
destroy_button: ДӀайаккха
+ heading:
+ my_inbox: Сан чудохурша
+ my_outbox: Сан дIадохитнарш
+ muted_messages: ДӀадаьхна хаамаш
+ mark:
+ as_read: Хаам баьшна аьлла билгалбаьккхина
+ as_unread: Хаам ца баьшна аьлла билгалбаьккхина
+ unmute:
+ notice: Хаам дӀабаькхна "Чудохурша" чура
+ error: Хаам дӀа ца бахийтина "Чудохурша" чу.
+ destroy:
+ destroyed: Хаам дӀабаьккхина
passwords:
new:
title: Пароль меттахӀоттор
heading: Йицйелла пароль?
- email address: 'Электронан поштан адрес:'
+ email address: Электронан поштан адрес
new password button: Керла пароль кхосса соьга
+ help_text: Ахь дӀаязвелла лелийна электронан почтан адрес йазде, оха цу тӀе
+ ссылка йоуьйтур йу, ахь хьайн пароль йухаметтахӀотто йиш йолуш.
+ create:
+ send_paranoid_instructions: Нагахь санна хьан электронан почтан адрес тхан базехь
+ делахь, масех минот йалча хьан электронан почтан адресе пароль меттахӀотторан
+ ссылка кхачор йу хьуна.
edit:
title: Йуха а йазйе пароль
heading: Йуха а йазйе пароль %{user}
reset: ХӀоттайе пароль
+ flash token bad: Ца карийна и токен, URL хьажа мегар дуй?
update:
flash changed: Хьан пароль хийцина.
+ flash token bad: Ца карийна и токен, URL хьажа мегар дуй?
+ preferences:
+ show:
+ title: Суна хазахеттарш
+ preferred_editor: ГӀоле хеташ волу редактор
+ preferred_languages: ГӀоле хета меттанаш
+ edit_preferences: Хийца хазахеттарш
+ edit:
+ title: Хийца хазахеттарш
+ save: Карладаха хазахеттарш
+ cancel: Цаоьшу
+ update:
+ failure: Хазахеттарш карладаха аьтто ца баьлла.
+ update_success_flash:
+ message: Хазахеттарш карладаьхна.
profiles:
edit:
- image: 'Сурт:'
+ title: Профиль нисйан
+ save: Карлайаккха профиль
+ cancel: Цаоьшу
+ image: Сурт
gravatar:
+ gravatar: Gravatar лелайар
+ what_is_gravatar: Gravatar хIун йу?
disabled: Gravatar дӀайайина.
+ enabled: Хьан Gravatar гайтар дӀахӀоттийна.
+ new image: Сурт тӀетоха
+ keep image: ХӀинцалера сурт дита
+ delete image: ХӀинцалера сурт дӀадаккха
+ replace image: ХӀинцалера сурт хийца
+ image size hint: (квадратан суьрташ лаххара а 100x100 дика болх беш ду)
+ home location: Со волу меттиг
+ no home location: Хьайн цӀера меттиг ца гайтина ахь.
+ update home location on click: Карта тӀе хьаьжча цӀийнан меттиг карлаяккха?
+ show: Гайта
+ delete: ДӀайаккха
+ undelete: Йухадаккха дӀадаккхар
+ update:
+ success: Профиль карлаяьккхина.
+ failure: Профиль карлаяккха аьтто ца баьлла.
sessions:
new:
title: ЧугӀо
tab_title: ЧугӀо
- email or username: 'Эл. пошт йа декъашхочун цӀе:'
- password: 'Пароль:'
+ login_to_authorize_html: OpenStreetMap чу вала, %{client_app_name} чу кхача.
+ email or username: Эл. пошт йа декъашхочун цӀе
+ password: Пароль
remember: Дагалаца со
lost password link: Йицйелла пароль?
login_button: ЧугӀо
register now: ДӀадазло
+ with external: йа кхи сайтан агӀонца чувала
+ or: йа
+ auth failure: Бехк ма билла, цу цIарца йе парольца чувала аьтто ца баьлла.
destroy:
title: Болх дӀаберзор
heading: OpenStreetMap чуьра болх дӀаберзор
logout_button: Болх дӀаберзор
+ suspended_flash:
+ suspended: Бехк ма билла, хьан аккаунт сацийна шеконе гӀуллакх дина бахьана
+ долуш.
+ contact_support_html: Дехар ду %{support_link} зӀене вала, нагахь хьайна хӀара
+ къасто лаахь.
+ support: гӀo дан
+ shared:
+ markdown_help:
+ heading_html: '%{kramdown_link} лелош анализ йина'
+ headings: Коьрта могlнаш
+ heading: Корта
+ subheading: Корталг
+ unordered: Низам боцу къепйоза
+ ordered: Низам болу къепйоза
+ first: Хьалхара элемент
+ second: ШолгIа элемент
+ link: Хьажорг
+ text: Текст
+ image: Сурт
site:
about:
next: Кхин дӀа
helper:
block_duration:
hours:
- one: 1 сахьт
- other: '%{count} сахьт'
+ one: '%{count} сахьт'
+ other: '%{count} сахьташ'
show:
- created: Кхоьллина
+ created: 'Кхоьллина:'
status: 'Статус:'
show: Гайта
edit: Хийца
open_title: 'Кечйина йоцу билгало #%{note_name}'
closed_title: 'Кечйина билгало #%{note_name}'
hidden_title: 'Къайлайаьккхина билгало #%{note_name}'
- report: Хаамбе хӀокху билгалонах
+ report: хаамбе хӀокху билгалонах
hide: Къайлайаккха
resolve: Кечйан
reactivate: Йуха йела
oauth2_authorizations: Autorizace OAuth 2
muted_users: Ztlumení uživatelé
auth_providers:
- openid_logo_alt: Přihlášení pomocí OpenID
openid_login_button: Pokračovat
openid:
title: Přihlásit se pomocí OpenID
introduction: Cliciwch ar y map i ddarganfod nodweddion gerllaw.
nearby: Nodweddion gerllaw
enclosing: Nodweddion amgáu
+ old_ways:
+ not_found:
+ sorry: 'Sori, ni ellir canfod fersiwn %{version} o lwybr #%{id}.'
changesets:
changeset_paging_nav:
showing_page: Tudalen %{page}
fire_extinguisher: Diffoddwr Tân
fire_water_pond: Pwll Dŵr Tân
landing_site: Man Glanio Argyfwng
+ life_ring: Bwi Achub
phone: Ffôn Argyfwng
water_tank: Tanc Dŵr Argyfwng
highway:
title: Sut i Helpu
join_the_community:
title: Ymunwch â'r gymuned
+ explanation_html: Os ydych chi wedi sylwi ar broblem gyda'n data, efallai
+ mae heol ar goll neu eich cyfeiriad chi, gallwch chi ymuno â chymuned
+ OpenStreetMap ac ychwanegu neu atgyweirio'r data eich hun.
other_concerns:
title: Gofidion eraill
copyright: tudalen hawlfraint
oauth2_authorizations: Awdurdodiadau OAuth 2
muted_users: Defnyddwyr ag Anwybyddwyd
auth_providers:
- openid_logo_alt: Mewngofnodi gydag OpenID
openid_login_button: Parhau
openid:
title: Mewngofnodi ag OpenID
retain_edits: Hvis du har foretaget redigeringer af kort-databasen, vil disse
blive gemt.
retain_traces: Hvis du har uploadet spor, vil disse blive gemt.
- retain_diary_entries: Hvis du har dagbogskommentarer, vil disse fortsat blive
- gemt. De vil dog ikke længere blive vist.
+ retain_diary_entries: Dine eventuelle blogindlæg og blogkommentarer vil fortsat
+ bevares, men vil dog ikke længere blive vist.
retain_notes: Dine noter og kommentarer til kortet vil blive gemt, men vil
ikke længere blive vist.
retain_changeset_discussions: Hvis du har bidraget til diskussioner vedrørende
way: vej
relation: relation
start_rjs:
- feature_warning: Henter %{num_features} kortobjekter, dette kan gøre din browser
- langsom eller få den til ikke at svare. Er du sikker på at du ønsker at få
- vist disse data?
+ feature_warning: Indlæser %{num_features} kortobjekter, hvilket kan gøre din
+ browser langsom eller få den til ikke at svare. Er du sikker på, at du ønsker
+ at få vist disse data?
load_data: Indlæs data
loading: Indlæser...
tag_details:
title: OpenStreetMap-blogindlæg
description: Seneste blogindlæg fra brugere af OpenStreetMap
subscribe:
- heading: Abonner på følgende dagbogsindlægsdiskussion?
+ heading: Abonner på følgende blogindlægsdiskussion?
button: Abonner på diskussion
unsubscribe:
- heading: Vil du afmelde følgende dagbogsindlægsdiskussion?
+ heading: Vil du afmelde følgende blogindlægsdiskussion?
button: Afmeld diskussion
diary_comments:
index:
comment: Kommentar
newer_comments: Nyere kommentarer
older_comments: Ældre kommentarer
+ new:
+ heading: Vil du tilføje en kommentar til følgende blogindlægsdiskussion?
doorkeeper:
errors:
messages:
more: Mere
user_mailer:
diary_comment_notification:
- description: 'OpenStreetMap dagbogindlæg #%{id}'
+ description: 'OpenStreetMap blogindlæg #%{id}'
subject: '[OpenStreetMap] %{user} kommenterede på et blogindlæg'
hi: Hej %{to_user},
header: '%{from_user} har kommenteret på OpenStreetMap-blogindlægget med emnet
click_the_link: Hvis dette er dig, så klik på linket nedenfor for at nulstille
din adgangskode.
note_comment_notification:
- description: 'OpenStreetMap-note #%{id}'
+ description: 'OpenStreetMap-bemærkning #%{id}'
anonymous: En anonym bruger
greeting: Hej,
commented:
other: GPX fil med %{count} punkter fra %{user}
description_without_count: GPX fil fra %{user}
application:
- basic_auth_disabled: 'Grundlæggende HTTP-godkendelse er deaktiveret: %{link}'
+ basic_auth_disabled: 'Basal HTTP-godkendelse (Basic Auth) er deaktiveret: %{link}'
oauth_10a_disabled: 'OAuth 1.0 og 1.0a er deaktiveret: %{link}'
permission_denied: Du har ikke rettigheder til at udføre den handling
require_cookies:
oauth2_authorizations: OAuth 2-autorisationer
muted_users: Stillegjorte Brugere
auth_providers:
- openid_logo_alt: Log på med et OpenID
+ openid_url: OpenID-URL
openid_login_button: Fortsæt
openid:
title: Log ind med OpenID
scopes:
openid: Log ind med OpenStreetMap
read_prefs: Læse brugerpræferencer
- write_prefs: Ændre brugeralternativer
+ write_prefs: Ændre brugerpræferencer
write_diary: Udgiv brugerblogs, kommenter og få venner
write_api: Ændre kortet
read_gpx: Læse private GPS-spor
blocks_on_me: Blokeringer af mig
blocks_on_user: Blokeringer af %{user}
blocks_by_me: Blokeringer udført af mig
- blocks_by_user: Blokeringer af %{user}
+ blocks_by_user: Blokeringer udført af %{user}
block: 'Blokering #%{id}'
user_mutes:
index:
reactivate: Genaktiver
comment_and_resolve: Kommentere på og løse
comment: Kommenter
- log_in_to_comment: Log ind for at kommentere på denne note
+ log_in_to_comment: Log ind for at kommentere på denne bemærkning
report_link_html: Hvis denne bemærkning indeholder følsomme oplysninger, der
skal fjernes, kan du %{link}.
other_problems_resolve: For alle andre problemer med bemærkningen, bedes du
intro: Opdaget en fejl eller noget der mangler? Lad andre kortlæggere vide det,
så vi kan ordne det. Flyt markøren til den korrekte position, og skriv en
bemærkning for at forklare problemet.
- anonymous_warning_html: Du er ikke logget ind. %{log_in} eller %{sign_up}, hvis
- du vil modtage opdateringer til din note.
+ anonymous_warning_html: Du er ikke logget ind. Venligst %{log_in} eller %{sign_up},
+ hvis du vil modtage opdateringer til din bemærkning.
anonymous_warning_log_in: Log ind
anonymous_warning_sign_up: tilmeld dig
advice: Dine oplysninger er offentlige og vil måske blive brugt til at opdatere
# Author: Str4nd
# Author: Suriyaa Kudo
# Author: Sushi
+# Author: TMg
# Author: Tehabe
# Author: The Evil IP address
# Author: ThePiscin
way: s Weges
relation: r Relation
start_rjs:
- feature_warning: Laden von %{num_features} Funktionen kann deinen Browser langsamer
- machen oder einfrieren. Sollen diese Daten wirklich angezeigt werden?
+ feature_warning: Lade %{num_features} Funktionen, was deinen Browser verlangsamen
+ oder nicht mehr reagieren lassen könnte. Bist du sicher, dass du diese Daten
+ anzeigen möchtest?
load_data: Daten laden
loading: Lade …
tag_details:
comment: Kommentar
newer_comments: Neuere Kommentare
older_comments: Ältere Kommentare
+ new:
+ heading: Füge einen Kommentar zur folgenden Tagebucheintragsdiskussion hinzu?
doorkeeper:
errors:
messages:
oauth2_authorizations: OAuth 2-Berechtigungen
muted_users: Stummgeschaltete Benutzer
auth_providers:
- openid_logo_alt: Mit einer OpenID anmelden
+ openid_url: OpenID-URL
openid_login_button: Fortfahren
openid:
title: Mit OpenID anmelden
public_traces: Pêron rê akerde rêçê GPS
public_traces_from: '%{user} ra pêron rê akerde rêçê GPS'
tagged_with: '%{tags} ya etiketyayo'
- application:
- auth_providers:
- openid_logo_alt: OpenID ya dekewê de
oauth_clients:
show:
edit: Teferuatan bıvurne
need_to_see_terms: Twój pśistup na API jo nachylu wusajźony. Pšosym pśizjaw
se k webpówjerchoju, aby se wužywarske wuměnjenja woglědał. Njetrjebaš zwóliś
do nich, musyš se je jano woglědaś.
- auth_providers:
- openid_logo_alt: Z OpenID se pśizjawiś
oauth:
authorize:
title: Pśistup na twójo konto awtorizěrowaś
# Author: KATRINE1992
# Author: KATRINE1993
# Author: Kiriakos
+# Author: KonVog
# Author: Kongr43gpen
# Author: Logictheo
# Author: Macofe
issue_comment:
create: Προσθήκη σχολίου
message:
- create: ΣÏ\84είλε
+ create: Î\91Ï\80οÏ\83Ï\84ολή
client_application:
create: Εγγραφή
update: Ενημέρωση
hidden_comment_by_html: Κρυφό σχόλιο από %{user} %{time_ago}
hide_comment: απόκρυψη
unhide_comment: επανεμφάνιση
- comment: Σχολιάζω
+ comment: Σχολιάστε
changesetxml: Ομάδας αλλαγών XML
osmchangexml: osmChange XML
paging_nav:
oauth2_authorizations: Εξουσιοδοτήσεις OAuth 2
muted_users: Χρήστες σε Σίγαση
auth_providers:
- openid_logo_alt: Σύνδεση με ένα OpenID
openid_login_button: Συνέχεια
openid:
title: Σύνδεση με OpenID
to the web interface to view the Contributor Terms. You do not need to agree,
but you must view them.
auth_providers:
- openid_logo_alt: Log in with an OpenID
openid:
title: Login with OpenID
alt: Login with an OpenID URL
way: "way"
relation: "relation"
start_rjs:
- feature_warning: "Loading %{num_features} features, which may make your browser slow or unresponsive. Are sure you want to display this data?"
+ feature_warning: "Loading %{num_features} features, which may make your browser slow or unresponsive. Are you sure you want to display this data?"
load_data: "Load Data"
loading: "Loading..."
tag_details:
comment: Comment
newer_comments: "Newer Comments"
older_comments: "Older Comments"
+ new:
+ heading: Add a comment to the following diary entry discussion?
doorkeeper:
errors:
messages:
oauth2_authorizations: OAuth 2 authorizations
muted_users: Muted Users
auth_providers:
- openid_logo_alt: "Log in with an OpenID"
- openid_html: "%{logo} OpenID"
+ openid_url: "OpenID URL"
openid_login_button: "Continue"
openid:
title: Log in with OpenID
comment: Komento
newer_comments: Pli novaj komentoj
older_comments: Pli malnovaj komentoj
+ new:
+ heading: Ĉu aldoni komenton al la diskuto pri tiu ĉi taglibra afiŝo?
doorkeeper:
errors:
messages:
oauth2_authorizations: Rajtigoj OAuth 2
muted_users: Silentigitaj uzantoj
auth_providers:
- openid_logo_alt: Ensaluti per OpenID
+ openid_url: OpenID-retadreso
openid_login_button: Daŭrigi
openid:
title: Ensaluti per OpenID
way: vía
relation: relación
start_rjs:
- feature_warning: Cargando %{num_features} elementos, lo que puede hacer que
- tu navegador se ralentice o no responda. ¿Estás seguro de que deseas mostrar
- estos datos?
+ feature_warning: Cargando %{num_features} funciones, lo que puede hacer que
+ su navegador sea lento o no responda. ¿Está seguro de que desea mostrar estos
+ datos?
load_data: Cargar datos
loading: Cargando…
tag_details:
comment: Comentario
newer_comments: Comentarios más recientes
older_comments: Comentarios más antiguos
+ new:
+ heading: ¿Agregar un comentario a la siguiente discusión sobre la entrada del
+ diario?
doorkeeper:
errors:
messages:
oauth2_authorizations: Autorizaciones de OAuth 2
muted_users: Usuarios silenciados
auth_providers:
- openid_logo_alt: Inicia sesión con una OpenID
+ openid_url: URL de OpenID
openid_login_button: Continuar
openid:
title: Inicia sesión con OpenID
oauth2_authorizations: OAuth 2 volitused
muted_users: Vaigistatud kasutajad
auth_providers:
- openid_logo_alt: Logi sisse OpenID-ga
openid:
title: Logi sisse OpenID-ga
alt: Logi sisse OpenID URL-iga
oauth2_applications: OAuth 2 aplikazioak
oauth2_authorizations: OAuth 2 baimenak
auth_providers:
- openid_logo_alt: ID irekiarekin saioa hasi
openid:
title: ID irekiarekin saioa hasi
alt: Hasi saioa ID irekia duen URL batekin
oauth2_applications: برنامههای OAuth 2
oauth2_authorizations: مجوزهای OAuth 2
auth_providers:
- openid_logo_alt: ورود با OpenID
openid:
title: ورود با OpenID
alt: ورود با نشانی OpenID
oauth2_authorizations: OAuth 2 -käyttöoikeudet
muted_users: Hiljennetyt käyttäjät
auth_providers:
- openid_logo_alt: Kirjaudu sisään OpenID-tunnuksella
openid:
title: Kirjaudu sisään OpenID:llä
alt: Kirjaudu sisään OpenID-osoitteella
my_traces: Minun GPS-jäljet
application:
auth_providers:
- openid_logo_alt: Lokkaa sisäle OpenID-konttulla
openid:
title: Lokkaa sisäle OpenID:llä
alt: Lokkaa sisäle OpenID-atressilla
oauth2_authorizations: Droits OAuth 2
muted_users: Utilisateurs silencieux
auth_providers:
- openid_logo_alt: Se connecter avec OpenID
openid_login_button: Continuer
openid:
title: Connexion avec OpenID
oauth2_applications: Aplicazions OAuth 2
oauth2_authorizations: Autorizazions OAuth 2
auth_providers:
- openid_logo_alt: Jentre cuntun OpenID
openid:
title: Jentre cun OpenID
alt: Jentre cuntun URL OpenID
oauth2_applications: Applikaasjes OAuth 2
oauth2_authorizations: Autorisaasjes OAuth 2
auth_providers:
- openid_logo_alt: Meld jo oan mei in openID
openid:
title: Oanmelde mei OpenID
alt: Meld jo oan mei in OpenID-URL
isteach ar an gcomhéadan gréasáin le hamharc ar Théarmaí na Rannchuiditheoirí.
Ní gá duit aontú, ach ní mór duit amharc orthu.
auth_providers:
- openid_logo_alt: Logáil isteach le OpenID
openid:
title: Logáil isteach le OpenID
alt: Logáil isteach le URL OpenID
chom-pàirtiche a shealltainn. Cha leig thu leas aontachadh riutha, ach feumaidh
tu an leughadh.
auth_providers:
- openid_logo_alt: Clàraich a-steach le OpenID
openid:
title: Clàraich a-steach le OpenID
alt: Clàraich a-steach le URL OpenID
# Author: Elisardojm
# Author: Fitoschido
# Author: Gallaecio
+# Author: Ignatgg
# Author: Iváns
# Author: MAGHOI
# Author: Macofe
way: vía
relation: relación
start_rjs:
- feature_warning: A carga de %{num_features} elementos pode facer que o teu navegador
- vaia lento ou que non responda. Estás na certeza de querer amosar eses datos?
+ feature_warning: Cargando %{num_features} funcións, que poden facer que o teu
+ navegador sexa lento ou non responda. Estás seguro de que queres mostrar estes
+ datos?
load_data: Cargar os datos
loading: Estase a carregar...
tag_details:
comment: Comentario
newer_comments: Comentarios máis recentes
older_comments: Comentarios máis vellos
+ new:
+ heading: Queres engadir un comentario á seguinte discusión sobre a entrada do
+ diario?
doorkeeper:
errors:
messages:
oauth2_authorizations: Autorizacións OAuth 2
muted_users: Usuarios silenciados
auth_providers:
- openid_logo_alt: Acceder ó sistema cun OpenID
+ openid_url: URL de OpenID
openid_login_button: Continuar
openid:
title: Acceder ó sistema co OpenID
- alt: Acceder ó sistema cun URL do OpenID
+ alt: Logo do OpenID
google:
title: Acceder ó sistema con Google
- alt: Acceder ó sistema cun OpenID de Google
+ alt: Logo de Google
facebook:
title: Acceder ó sistema co Facebook
- alt: Acceder ó sistema cunha conta do Facebook
+ alt: Logo do Facebook
microsoft:
title: Acceder ó sistema con Microsoft
- alt: Acceder ó sistema cunha conta de Microsoft
+ alt: Logo de Microsoft
github:
title: Acceder ó sistema co GitHub
- alt: Acceder ó sistema cunha conta do GitHub
+ alt: Logo do GitHub
wikipedia:
title: Acceder ó sistema coa Wikipedia
- alt: Acceder ó sistema cunha conta da Wikipedia
+ alt: Logo da Wikipedia
oauth:
authorize:
title: Autorizar o acceso á túa conta
oauth2_authorizations: אישורי OAuth 2
muted_users: משתמשים מושתקים
auth_providers:
- openid_logo_alt: כניסה עם OpenID
openid_login_button: המשך
openid:
title: כניסה עם OpenID
blocked: Tvoj pristup API-u je blokiran. Prijavite se na web sučelje da saznate
više.
auth_providers:
- openid_logo_alt: Prijavi se sa OpenID-om
openid:
title: Prijavi se sa OpenID-om
alt: Prijavi se sa URL-om OpenID-a
oauth2_authorizations: Prawa OAUTH 2
muted_users: Zněmjeni wužiwarjo
auth_providers:
- openid_logo_alt: Z OpenID přizjewić
openid:
title: Přizjewjenje z OpenID
alt: Přizjewjenje z OpenID-URL
oauth2_authorizations: OAuth 2 engedélyek
muted_users: Elnémított felhasználók
auth_providers:
- openid_logo_alt: Bejelentkezés egy OpenID-vel
openid:
title: Bejelentkezés OpenID-vel
alt: Bejelentkezés OpenID-URL-lel
college: Edificio de academia
commercial: Edificio commercial
construction: Edificio in construction
+ cowshed: Vaccheria
detached: Casa individual
dormitory: Dormitorio
duplex: Casa duple
shed: Remissa
stable: Stabulo
static_caravan: Caravana
+ sty: Porcheria
temple: Edificio de templo
terrace: Casas in serie
train_station: Edificio de station ferroviari
oauth2_authorizations: Autorisationes OAuth 2
muted_users: Usatores silentiate
auth_providers:
- openid_logo_alt: Aperir session con OpenID
openid_login_button: Continuar
openid:
title: Aperir session con OpenID
- alt: Aperir session con un URL de OpenID
+ alt: Logotypo de OpenID
google:
title: Aperir session con Google
- alt: Aperir session con un OpenID de Google
+ alt: Logotypo de Google
facebook:
title: Aperir session con Facebook
- alt: Aperir session con un conto de Facebook
+ alt: Logotypo de Facebook
microsoft:
title: Aperir session con Microsoft
- alt: Aperir session con un conto Microsoft
+ alt: Logotypo de Microsoft
github:
title: Aperir session con GitHub
- alt: Aperir session con un conto de GitHub
+ alt: Logotypo de GitHub
wikipedia:
title: Aperir session con Wikipedia
- alt: Aperir session con un conto de Wikipedia
+ alt: Logotypo de Wikipedia
oauth:
authorize:
title: Autorisar accesso a tu conto
continue: Crear conto
terms accepted: Gratias pro acceptar le nove conditiones de contributor!
email_help:
+ privacy_policy: politica de confidentialitate
+ privacy_policy_title: Politica de confidentialitate del OSMF con un section
+ sur adresses de e-mail
html: Tu adresse non es monstrate publicamente. Consulta nostre %{privacy_policy_link}
pro plus information.
consider_pd_html: Io considera que mi contributiones es in le %{consider_pd_link}.
# Author: Jagwar
# Author: JakArtisan
# Author: Kenrick95
+# Author: Leapofod
# Author: Macofe
# Author: Mbee-wiki
# Author: Mnam23
oauth2_authorizations: Otorisasi OAuth 2
muted_users: Pengguna yang Dibisukan
auth_providers:
- openid_logo_alt: Login dengan OpenID
+ openid_url: URL OpenID
openid:
title: Masuk log dengan OpenID
alt: Masuk log dengan URL OpenID
oauth2_authorizations: OAuth 2 auðkenningar
muted_users: Þaggaðir notendur
auth_providers:
- openid_logo_alt: Skrá inn með OpenID-aðgangi
openid:
title: Skrá inn með OpenID
alt: Skrá inn með OpenID-slóð
oauth2_authorizations: Autorizzazioni OAuth 2
muted_users: Utenti silenziati
auth_providers:
- openid_logo_alt: Accedi con un OpenID
openid_login_button: Continua
openid:
title: Accedi con OpenID
oauth2_authorizations: OAuth 2 認証
muted_users: ミュートした利用者
auth_providers:
- openid_logo_alt: OpenID でログイン
+ openid_url: OpenID URL
openid_login_button: 次へ
openid:
title: OpenID でログイン
- alt: OpenID URLでログイン
+ alt: OpenID ロゴ
google:
title: Googleでログイン
- alt: Google OpenIDでログイン
+ alt: Google ロゴ
facebook:
title: Facebookでログイン
- alt: Facebook ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92使ç\94¨ã\81\97ã\81¦ã\83ã\82°ã\82¤ã\83³
+ alt: Facebook ã\83ã\82´
microsoft:
title: Microsoftでログイン
- alt: Microsoftアカウントでログイン
+ alt: Microsoft ロゴ
github:
title: GitHubでログイン
- alt: GitHubのアカウントでログイン
+ alt: GitHub ロゴ
wikipedia:
title: ウィキペディアでログイン
- alt: ã\82¦ã\82£ã\82ã\83\9aã\83\87ã\82£ã\82¢ã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81§ã\83ã\82°ã\82¤ã\83³
+ alt: ã\82¦ã\82£ã\82ã\83\9aã\83\87ã\82£ã\82¢ã\83ã\82´
oauth:
authorize:
title: あなたのアカウントへのアクセスの認証
no_auto_account_create: 残念ながら、現在、自動ではアカウントを作成できません。
support: サポート
about:
- header: ã\83\95ã\83ªã\83¼ã\80\81編集可能
+ header: ã\83\95ã\83ªã\83¼ã\81§編集可能
paragraph_1: 他の地図とは異なり、OpenStreetMapは完全に皆さんのような人によって作成されおり、誰でも自由に修正・更新・ダウンロード・利用ができます。
paragraph_2: 投稿を通じて貢献するには、登録が必要です。
welcome: OpenStreetMap へようこそ。
continue: 利用者登録
terms accepted: 新しい協力者規約を承諾していただき、ありがとうございます!
email_help:
+ privacy_policy: プライバシー・ポリシー
+ privacy_policy_title: OSMFのプライバシーポリシー(メールアドレスに関するセクションを含む)
html: あなたのアドレスは公開されません。詳細については、%{privacy_policy_link} をご覧ください。
consider_pd_html: 私の貢献は %{consider_pd_link} にあるとみなします。
consider_pd: パブリックドメイン
identifiable: იდენტიფიცირებადი
private: პირადი
trackable: კონტროლირებადი
- application:
- auth_providers:
- openid_logo_alt: შესვლა OpenID-ის საშუალებით
oauth:
authorize:
allow_write_api: რუკის შეცვლა.
send ad tizmireḍ ad teskelseḍ asnifel-ik.
blocked: Anekcum-ik API yewḥel. Qqen ar ugrudem Web i ugar n isallen.
auth_providers:
- openid_logo_alt: Qqen s OpenID
openid:
title: Qqen s OpenID
alt: Qqen s tensa URL OpenID
oauth2_applications: OAuth 2 애플리케이션
oauth2_authorizations: OAuth 2 인가
auth_providers:
- openid_logo_alt: OpenID로 로그인
openid_login_button: 계속
openid:
title: OpenID로 로그인하기
oauth2_applications: Aplîkasyonên OAuth 2
oauth2_authorizations: Destûrdarkirinên OAuth 2
auth_providers:
- openid_logo_alt: Têketina bi OpenID'yê
openid:
title: Bi OpenID'yê têkeve
alt: Têketina bi URL'yek OpenID'yê
oauth2_applications: OAuth 2 Applikatiounen
oauth2_authorizations: OAuth 2 Autorisatiounen
auth_providers:
- openid_logo_alt: Alogge mat enger OpenID
+ openid_url: OpenID-URL
openid_login_button: Virufueren
openid:
title: Mat OpenID aloggen
oauth2_applications: „OAuth 2“ programos
oauth2_authorizations: „OAuth 2“ prieigos teisės
auth_providers:
- openid_logo_alt: Prisijunkite su OpenID
openid:
title: Prisijunkite su OpenID
alt: Prisijunkite su OpenID URL
mājaslapas interfeisā, lai apskatītu Veidotāju Noteikumus. Tev nevajag piekrist,
bet tev tie ir jāapskata.
auth_providers:
- openid_logo_alt: Pieteikties ar OpenID
openid:
title: Pieslēgties ar OpenID
alt: Pieslēgties ar OpenID saiti
comment: Коментар
newer_comments: Понови коментари
older_comments: Постари коментари
+ new:
+ heading: Ставате коментар во следниов разговор за дневничка ставка?
doorkeeper:
errors:
messages:
oauth2_authorizations: Овластувања за OAuth 2
muted_users: Замолкнати корисници
auth_providers:
- openid_logo_alt: Најава со OpenID
+ openid_url: URL на OpenID
openid_login_button: Продолжи
openid:
title: Најава со OpenID
- alt: Ð\9dаÑ\98ава Ñ\81о URL за OpenID
+ alt: Ð\9bого на OpenID
google:
title: Најава со Google
- alt: Ð\9dаÑ\98ава Ñ\81о OpenID од Google
+ alt: Ð\9bого на Ð\93Ñ\83гл
facebook:
title: Најава со Фејсбук
- alt: Ð\9dаÑ\98ава Ñ\81о пÑ\80оÑ\84ил на Фејсбук
+ alt: Ð\9bого на Фејсбук
microsoft:
title: Најава со Microsoft
- alt: Ð\9dаÑ\98ава Ñ\81о Ñ\81меÑ\82ка на Microsoft
+ alt: Ð\9bого на Microsoft
github:
title: Најава со GitHub
- alt: Ð\9dаÑ\98ава Ñ\81о Ñ\81меÑ\82ка на GitHub
+ alt: Ð\9bого на GitHub
wikipedia:
title: Најава со Википедија
- alt: Ð\9dаÑ\98ава Ñ\81о Ñ\81меÑ\82ка на Википедија
+ alt: Ð\9bого на Википедија
oauth:
authorize:
title: Овластете пристап до вашата сметка
title: Експортаре
application:
auth_providers:
- openid_logo_alt: Ынтраря ку ажуторул OpenID
openid:
title: Ынтраря ку ажуторул OpenID
alt: Ынтраря ку ажуторул OpenID URL
account_settings: Tetapan Akaun
muted_users: Pengguna yang Diredamkan
auth_providers:
- openid_logo_alt: Log masuk dengan OpenID
openid:
title: Log masuk dengan OpenID
alt: Log masuk dengan OpenID URL
nettsiden for å lese bidragsytervilkårene. Du trenger ikke godta vilkårene,
men du må lese dem.
auth_providers:
- openid_logo_alt: Logg inn med en OpenID
openid:
title: Logg inn med OpenID
alt: Logg inn med en OpenID-URL
by_signing_up:
privacy_policy: गोपनीयता नीति
continue: खाता खाेल्नुहाेस्
+ email_help:
+ privacy_policy: गोपनीयता नीति
terms:
title: सर्तहरू
heading: सर्तहरू
college: Schoolgebouw
commercial: Commercieel gebouw
construction: Gebouw in aanbouw
+ cowshed: Koeienstal
detached: Alleenstaande woning
dormitory: Studentenhuis
duplex: Koppelwoning
shed: Schuurtje
stable: Stal
static_caravan: Stacaravan
+ sty: Varkensstal
temple: Tempelgebouw
terrace: Rijhuizen
train_station: Spoorwegstationsgebouw
lost_password:
subject: '[OpenStreetMap] Verzoek wachtwoord opnieuw instellen'
greeting: Hallo,
- hopefully_you: Iemand (mogelijk u) heeft aangevraagd om het wachtwoord opnieuw
+ hopefully_you: Iemand (mogelijk u) heeft gevraagd om het wachtwoord opnieuw
in te laten stellen voor het account met dit e-mailadres op openstreetmap.org.
click_the_link: Als u dit bent, klik dan op de onderstaande koppeling om uw
wachtwoord opnieuw in te stellen.
oauth2_authorizations: OAuth 2 autorisaties
muted_users: Gedempte gebruikers
auth_providers:
- openid_logo_alt: Aanmelden met een OpenID
+ openid_url: OpenID-URL
openid_login_button: Doorgaan
openid:
title: Aanmelden met OpenID
- alt: Aanmelden met een OpenID URL
+ alt: OpenID-logo
google:
title: Aanmelden met Google
- alt: Aanmelden met een Google OpenID
+ alt: Google-logo
facebook:
title: Aanmelden met Facebook
- alt: Aanmelden met een Facebookaccount
+ alt: Facebook-logo
microsoft:
title: Aanmelden met Microsoft
- alt: Aanmelden met een Microsoft-account
+ alt: Microsoft-logo
github:
title: Aanmelden met GitHub
- alt: Aanmelden met een GitHub-account
+ alt: GitHub-logo
wikipedia:
title: Aanmelden met Wikipedia
- alt: Aanmelden met een Wikipedia-account
+ alt: Wikipedia-logo
oauth:
authorize:
title: Geef toegang tot uw account
continue: Registreren
terms accepted: Dank u wel voor het aanvaarden van de nieuwe bijdragersovereenkomst!
email_help:
+ privacy_policy: privacybeleid
+ privacy_policy_title: OSMF-privacybeleid, met een sectie over e-mailadressen
html: Uw adres wordt niet openbaar gemaakt, zie ons %{privacy_policy_link}
voor meer informatie.
consider_pd_html: Ik beschouw mijn bijdragen als onderdeel van het %{consider_pd_link}.
på nettsiden for å lese bidragsytervilkårene. Du treng ikkje godta vilkåra,
men du må lese dei.
auth_providers:
- openid_logo_alt: Logg inn med ein OpenID
openid:
title: Logg inn med OpenID
alt: Logg inn med ein OpenID-URL
oauth2_applications: 0Auth 2 ߟߥߊ߬ߟߌ߬ߟߌ ߟߎ߬
oauth2_authorizations: 0Auth 2 ߖߡߊ߬ߙߌ߬ߦߊ߬ߟߌ
auth_providers:
- openid_logo_alt: ߌ ߜߊ߲߬ߞߎ߲߬ ߏߔߌ߲ ID ߟߊ߫
openid:
title: ߌ ߜߊ߲߬ߞߎ߲߫ ߏߔߌ߲ ID ߘߌ߫
alt: ߌ ߜߊ߲߬ߞߎ߲߫ ߏߔߌ߲ ID URL ߟߊ߫
settings_menu:
account_settings: Configuracion
auth_providers:
- openid_logo_alt: Se connectar amb un OpenID
openid:
title: Se connectar amb OpenID
alt: Se connectar amb una URL OpenID
# Author: Maro21
# Author: Mateon1
# Author: Mikini
+# Author: Mkot
# Author: Nemo bis
# Author: Odie2
# Author: OrlPL
created: Utworzone
closed: Zamknięte
belongs_to: Autor
+ subscribe:
+ heading: Zasubskrybować następującą dyskusję dotyczącą zmian ?
+ button: Zasubskrybuj dyskusję
+ unsubscribe:
+ heading: Wypisać się z poniższej dyskusji na temat zestawu zmian?
+ button: Wypisz się z dyskusji
heading:
title: Zestaw zmian %{id}
+ created_by_html: Utworzony przez %{link_user} w %{created}.
+ no_such_entry:
+ title: Brak takiego zestawu zmian
+ body: Niestety nie odnaleziono zestawu zmian o identyfikatorze %{id}. Sprawdź
+ pisownię. Być może skorzystano z nieprawidłowego odnośnika.
show:
title: 'Zestaw zmian: %{id}'
created: 'Utworzony: %{when}'
title: Dziennik użytkownika %{user} | %{title}
user_title: Dziennik użytkownika %{user}
discussion: Dyskusja
+ subscribe: Obserwuj
+ unsubscribe: Anuluj subskrypcję
leave_a_comment: Zostaw komentarz
login_to_leave_a_comment_html: '%{login_link}, aby dodać komentarz'
login: Zaloguj się
all:
title: Wpisy dzienników OpenStreetMap
description: Ostatnie wpisy dzienników od użytkowników OpenStreetMap
+ subscribe:
+ heading: Zasubskrybować następującą dyskusję dotyczącą wpisu do pamiętnika?
+ unsubscribe:
+ heading: Wypisać się z poniższej dyskusji na temat wpisu dziennika?
+ button: Wypisz się z dyskusji
diary_comments:
index:
title: Komentarze do dzienników dodane przez %{user}
oauth2_applications: Aplikacje OAuth 2
oauth2_authorizations: Autoryzacje OAuth 2
auth_providers:
- openid_logo_alt: Zaloguj się przez OpenID
openid_login_button: Kontynuuj
openid:
title: Zaloguj się przez OpenID
new:
title: Nowa uwaga
intro: Zauważyłeś błąd lub brak czegoś? Daj znać innym mapującym, aby mogli
- to poprawić. Przesuń znacznik do właściwej pozycji i wpisz notatkę opisującą
- problem.
+ to poprawić. Przesuń znacznik do właściwej pozycji i opisz problem. Jeśli
+ podasz źródła lub link do zdjęć, twoja uwaga będzie szybciej rozwiązana.
anonymous_warning_html: Nie jesteś zalogowany. %{log_in} lub %{sign_up}, jeśli
chcesz otrzymywać aktualizacje tej uwagi.
anonymous_warning_log_in: Zaloguj się
oauth2_applications: آوتھ ورژن 2 اَیپ
oauth2_authorizations: آوتھ ورژن 2 ورتݨ
auth_providers:
- openid_logo_alt: اوپن آئی ڈی ورتو
openid:
title: اوپن آئیڈی نال لوگاین کرو
alt: اوپن آئی ڈی یو آر ایل ورتو
oauth2_authorizations: Autorizações OAuth 2
muted_users: Utilizadores Silenciados
auth_providers:
- openid_logo_alt: Iniciar sessão com um OpenID
openid_login_button: Continuar
openid:
title: Iniciar sessão com OpenID
oauth2_authorizations: Autorizações do OAuth 2
muted_users: Usuários silenciados
auth_providers:
- openid_logo_alt: Entrar com um OpenID
openid_login_button: Continuar
openid:
title: Entrar com o OpenID
oauth2_applications: Aplicații OAuth 2
oauth2_authorizations: Autorizări OAuth 2
auth_providers:
- openid_logo_alt: Conectați-vă cu un OpenID
openid:
title: Login with OpenID
alt: Conectați-vă cu un URL OpenID
oauth2_applications: OAuth 2 приложения
oauth2_authorizations: OAuth 2 авторизации
auth_providers:
- openid_logo_alt: Войти с помощью OpenID
openid_login_button: Продолжить
openid:
title: Войти с помощью OpenID
oauth2_applications: Aplicatziones OAuth 2
oauth2_authorizations: Autorizatziones OAuth 2
auth_providers:
- openid_logo_alt: Intra cun un'OpenID
openid:
title: Intra cun OpenID
alt: Intra cun un'URL de OpenID
account_settings: Mpustazzioni cuntu
oauth1_settings: Mpustazzioni OAuth
auth_providers:
- openid_logo_alt: Trasi cu n'OpenID
openid:
title: Trasi cu n'OpenID
alt: Trasi cu n'URL OpenID
oauth2_applications: OAuth 2 prilozi
oauth2_authorizations: OAuth 2 ovlaštenja
auth_providers:
- openid_logo_alt: Prijavi se sa OpenID-om
openid:
title: Prijavi se sa OpenID-om
alt: Prijavi se sa URL-om OpenID-a
halt: Zastávka vlaku
junction: Železničný uzol
level_crossing: Železničný prejazd
- light_rail: Ľahká železnica
+ light_rail: Ľahké metro
miniature: Záhradná železnica
monorail: Jednokoľajka
narrow_gauge: Úzkokoľajná železnica
footway: Chodník pre peších
rail: Železnica
subway: Metro
+ light_rail: Ľahké metro
cable_car: Lanovka
chair_lift: Sedačková lanovka
runway: Letisková dráha
admin: Administratívne hranice
forest: Les (udržiavaný)
wood: Les
+ bare_rock: Holá skala
golf: Golfové ihrisko
park: Park
common: Pastvina
heathland: Vresovisko
lake: Jazero
reservoir: Nádrž
+ intermittent_water: Občasná vodná plocha
farm: Farma
brownfield: Zborenisko
cemetery: Cintorín
summit: Vrchol
peak: Vrchol
tunnel: Čiarkovaný obrys = tunel
- bridge: Čireny obrys = most
+ bridge: Čierny obrys = most
private: Súkromný prístup
destination: Prejazd zakázaný
construction: Cesta vo výstavbe
oauth2_authorizations: Autorizácie OAuth 2
muted_users: Stlmení používatelia
auth_providers:
- openid_logo_alt: Prihlásenie pomocou OpenID
openid_login_button: Pokračovať
openid:
title: Prihlásenie sa pomocou OpenID
revoke: Odobrať prístup
users:
new:
- title: Zaregistrovať sa
- tab_title: Zaregistrovať sa
+ title: Zaregistrujte sa
+ tab_title: Zaregistrujte sa
signup_to_authorize_html: Zaregistrujte sa v OpenStreetMap a získajte prístup
do %{client_app_name}.
no_auto_account_create: Bohužiaľ teraz nie sme schopný vytvoriť pre vás účet
privacy_policy_title: Pravidlá ochrany osobných údajov OSMF vrátane sekcie
o e-mailových adresách
external auth: 'Autentifikácia treťou stranou:'
- continue: Zaregistrovať sa
+ continue: Zaregistrujte sa
terms accepted: Ďakujeme za odsúhlasenie nových podmienok prispievania!
email_help:
html: Vaša adresa sa nezobrazuje verejne, pre ďalšie informácie venujte pozornosť
settings_menu:
account_settings: کھاتہ ترتیباں
auth_providers:
- openid_logo_alt: اوپن آئی ڈی نال لاگ ان تھیوو
openid_login_button: جاری رکھو
openid:
title: اوپن آئی ڈی نال لاگ ان تھیوو
region: Regija
sea: Morje
square: Trg
- state: 'Zvezna država (ZDA):'
+ state: Zvezna država
subdivision: Pododdelek
suburb: Predmestje
town: Mesto
commented_note_html: '%{commenter} je spet aktiviral_a opombo na zemljevidu,
ki ste jo dodali. Opomba je v bližini %{place}.'
details: Več podatkov o opombi lahko najdete na %{url}.
- details_html: Več podatkov o opombi lahko najdete na %{url}.
+ details_html: Na opombo lahko odgovorite ali izveste več o njej na %{url}.
changeset_comment_notification:
description: Nabor sprememb OpenStreetMap št. %{id}
hi: Pozdravljeni, %{to_user},
partial_changeset_with_comment: s komentarjem »%{changeset_comment}«
partial_changeset_with_comment_html: s komentarjem »%{changeset_comment}«
partial_changeset_without_comment: brez komentarja
- details: Več podrobnosti o tem naboru sprememb lahko najdete na %{url}.
- details_html: Več podrobnosti o tem naboru sprememb lahko najdete na %{url}.
+ details: Na nabor sprememb lahko odgovorite ali izveste več o njem na %{url}.
+ details_html: Na nabor sprememb lahko odgovorite ali izveste več o njej na %{url}.
unsubscribe: Od obveščanja o tem naboru sprememb se lahko odnaročite na %{url}.
unsubscribe_html: Od obveščanja o tem naboru sprememb se lahko odnaročite na
%{url}.
title: Vodnik za začetnike
description: Vodnik za začetnike, ki ga vzdržuje skupnost.
community:
- title: Forum skupnosti
+ title: Pomoč in forum skupnosti
description: Skupno mesto za pogovore o OpenStreetMap.
mailing_lists:
title: Dopisni seznami
oauth2_authorizations: Pooblastila OAuth 2
muted_users: Utišani uporabniki
auth_providers:
- openid_logo_alt: Prijavite se z OpenID
+ openid_url: URL OpenID
openid_login_button: Nadaljuj
openid:
title: Prijava z OpenID
title: Prijava z Microsoftom
alt: Logotip Microsoft
github:
- title: Vpis z GitHub-om
+ title: Prijava z GitHubom
alt: Logotip GitHub
wikipedia:
title: Prijavi se z Wikipedijo
option_1: Če ste novi v OpenStreetMapu, prosimo, ustvarite nov račun z uporabo
spodnjega obrazca.
option_2: Če že imate račun, se lahko prijavite s svojim uporabniškim imenom
- in geslom in račun v nastavitvah povežete s svojim ID-jem.
+ in geslom ter račun v nastavitvah povežete s svojim ID-jem.
user_role:
filter:
not_a_role: Besedilo `%{role}' ni pravilna vloga.
require_admin:
not_an_admin: Ju duhet të jeni administrator për të kryer atë veprim.
auth_providers:
- openid_logo_alt: Identifikohu me ndonjë ID të hapur
openid:
title: Identifikohu me OpenID
github:
need_to_see_terms: Vaš pristup API-ju je privremeno ukinut. Prijavite se da
biste pogledali uslove uređivanja. Ne morate da ih prihvatite, već samo da
ih vidite.
- auth_providers:
- openid_logo_alt: Prijavite se s OpenID-jem
oauth:
authorize:
request_access_html: Program %{app_name} zahteva pristup vašem nalogu, %{user}.
account_settings: Подешавња налога
muted_users: Пригушени корисници
auth_providers:
- openid_logo_alt: Пријавите се с OpenID-јем
openid_login_button: Настави
openid:
title: Пријавити се са OpenID
oauth2_authorizations: OAuth 2-auktoriseringar
muted_users: Tystade användare
auth_providers:
- openid_logo_alt: Logga in med ett OpenID
openid_login_button: Fortsätt
openid:
title: Logga in med OpenID
oauth2_applications: OAuth 2 అనువర్తనాలు
oauth2_authorizations: OAuth 2 ఆథరైజేషన్లు
auth_providers:
- openid_logo_alt: ఏదైనా OpenID తో లాగినవండి
openid:
title: OpenID తో లాగినవండి
alt: ఏదైనా OpenID URL తో లాగినవండి
setup_user_auth:
blocked: คุณถูกระงับการเข้าถึง API, กรุณาเข้าระบบทางหน้าเว็บหลักหากต้องการทราบสาเหตุที่ถูกระงับในครั้งนี้
auth_providers:
- openid_logo_alt: เข้าใช้งานด้วย OpenID
openid:
title: เข้าใช้งานด้วย OpenID
alt: เข้าใช้งานด้วยลิงก์ OpenID
account_settings: Mga Katakdaan ng Akawnt
oauth2_authorizations: Mga pahintulot para sa OAuth 2
auth_providers:
- openid_logo_alt: Lumagda sa pamamagitan ng isang OpenID
openid:
title: Lumagda gamit ang OpenID
alt: Lumagda gamit ang isang OpenID URL
oauth2_authorizations: OAuth 2 yetkilendirmeleri
muted_users: Sessize Alınan Kullanıcılar
auth_providers:
- openid_logo_alt: OpenID ile giriş
openid_login_button: Devam et
openid:
title: OpenID ile giriş
oauth2_authorizations: авторизації OAuth 2
muted_users: Стишені учасники
auth_providers:
- openid_logo_alt: Увійти з OpenID
openid_login_button: Продовжити
openid:
title: Увійти за OpenID
messages:
invalid_email_address: hình như không phải là địa chỉ thư điện tử hợp lệ
email_address_not_routable: không thể gửi đến
+ display_name_is_user_n: không thể là user_n trừ khi n là số người dùng của
+ bạn
models:
user_mute:
is_already_muted: đã bị tắt tiếng
title: Nhật ký của %{user} | %{title}
user_title: Nhật ký của %{user}
discussion: Thảo luận
+ subscribe: Theo dõi
+ unsubscribe: Ngừng theo dõi
leave_a_comment: Để lại nhận xét
login_to_leave_a_comment_html: '%{login_link} để nhận xét'
login: Đăng nhập
contact_the_community_html: Xin vui lòng %{contact_link} cộng đồng OpenStreetMap
nếu bạn gặp liên kết hỏng hoặc lỗi phần mềm. Hãy ghi nhớ địa chỉ URL chính
xác của yêu cầu máy chủ.
+ bad_request:
+ title: Yêu cầu hỏng
+ description: Bạn đã yêu cầu tác vụ không hợp lệ trên máy chủ OpenStreetMap (HTTP
+ 400)
forbidden:
title: Cấm
description: Tác vụ đuợc yêu cầu trên máy chủ OpenStreetMap chỉ khả dụng đối
chú gần %{place}.'
commented_note_html: '%{commenter} đã mở lại một ghi chú mà bạn đã bình luận,
ghi chú gần %{place}.'
- details: Xem chi tiết về ghi chú tại %{url}.
- details_html: Xem chi tiết về ghi chú tại %{url}.
+ details: Trả lời hoặc tìm hiểu thêm về ghi chú tại %{url}.
+ details_html: Trả lời hoặc tìm hiểu thêm về ghi chú tại %{url}.
changeset_comment_notification:
description: 'Bộ thay đổi OpenStreetMap #%{id}'
hi: Chào %{to_user},
partial_changeset_with_comment: với lời bình luận “%{changeset_comment}”
partial_changeset_with_comment_html: với lời bình luận “%{changeset_comment}”
partial_changeset_without_comment: không có lời bình luận
- details: Xem chi tiết về bộ thay đổi tại %{url}.
- details_html: Xem chi tiết về bộ thay đổi tại %{url}.
+ details: Trả lời hoặc tìm hiểu thêm về bộ thay đổi tại %{url}.
+ details_html: Trả lời hoặc tìm hiểu thêm về bộ thay đổi tại %{url}.
unsubscribe: Bạn có thể ngừng nhận các thông báo về bộ thay đổi này tại %{url}.
unsubscribe_html: Bạn có thể ngừng nhận các thông báo về bộ thay đổi này tại
%{url}.
new:
title: Đăng nhập
tab_title: Đăng nhập
+ login_to_authorize_html: Đăng nhập vào OpenStreetMap để truy cập %{client_app_name}.
email or username: Địa chỉ Thư điện tử hoặc Tên người dùng
password: Mật khẩu
remember: Nhớ tôi
lost password link: Quên mất Mật khẩu?
login_button: Đăng nhập
register now: Mở tài khoản ngay
- with external: 'Hoặc đăng nhập qua dịch vụ bên thứ ba:'
+ with external: hoặc đăng nhập qua dịch vụ bên thứ ba
+ or: hoặc
auth failure: Rất tiếc, không thể đăng nhập với những chi tiết đó.
destroy:
title: Đăng xuất
contributors_fi_nlsfi_license: Giấy phép NLSFI
contributors_fr_france: Pháp
contributors_hr_croatia: Croatia
+ contributors_hr_dgu: Cơ quan Quản lý Trắc địa Nhà nước Croatia
+ contributors_hr_open_data_portal: Cổng Dữ liệu Mở Quốc gia
contributors_nl_credit_html: '%{netherlands}: Chứa dữ liệu © AND, 2007
(%{and_link})'
contributors_nl_netherlands: Hà Lan
contributors_nz_linz_data_service: Dịch vụ Dữ liệu LINZ
contributors_nz_cc_by: CC BY 4.0
contributors_rs_serbia: Serbia
+ contributors_rs_rgz: Cơ quan Trắc địa Serbia
contributors_rs_open_data_portal: Cổng Dữ liệu Mở Quốc gia
contributors_si_slovenia: Slovenia
contributors_es_spain: Tây Ban Nha
tag: Thẻ
rules:
title: Quy định!
+ para_1_html: OpenStreetMap có ít quy tắc chính thức nhưng yêu cầu mọi người
+ muốn tham gia phải cộng tác và liên lạc với cộng đồng. Nếu bạn đang tính
+ thực hiện tác vụ nào không phải sửa đổi thủ công, xin vui lòng đọc và tuân
+ theo các hướng dẫn tại %{imports_link} và %{automated_edits_link}.
imports: Nhập Dữ liệu
automated_edits: Sửa đổi Tự động
start_mapping: Bắt đầu Đóng góp
other: Tập tin GPX của %{user} có %{count} địa điểm
description_without_count: Tập tin GPX của %{user}
application:
+ basic_auth_disabled: 'Xác thực Cơ bản HTTP đã bị tắt: %{link}'
+ oauth_10a_disabled: 'OAuth 1.0 và 1.0a đã bị tắt: %{link}'
permission_denied: Bạn không có quyền thực hiện tác vụ này
require_cookies:
cookies_needed: Hình như đã tắt cookie. Xin hãy bật lên chức năng cookie trong
oauth2_authorizations: Ủy quyền OAuth 2
muted_users: Người dùng bị Tắt tiếng
auth_providers:
- openid_logo_alt: Đăng nhập dùng OpenID
+ openid_login_button: Tiếp tục
openid:
title: Đăng nhập qua OpenID
- alt: Đăng nhập dùng URL OpenID
+ alt: Biểu trưng OpenID
google:
title: Đăng nhập qua Google
- alt: Đăng nhập dùng OpenID của Google
+ alt: Biểu trưng Google
facebook:
title: Đăng nhập qua Facebook
- alt: Đăng nhập dùng tài khoản Facebook
+ alt: Biểu trưng Facebook
microsoft:
title: Đăng nhập qua Microsoft
- alt: Đăng nhập dùng Tài khoản Microsoft
+ alt: Biểu trưng Microsoft
github:
title: Đăng nhập qua GitHub
- alt: Đăng nhập dùng tài khoản GitHub
+ alt: Biểu trưng GitHub
wikipedia:
title: Đăng nhập qua Wikipedia
- alt: Đăng nhập qua Tài khoản Wikipedia
+ alt: Biểu trưng Wikipedia
oauth:
authorize:
title: Cho phép truy cập tài khoản của bạn
write_redactions: Ẩn dữ liệu bản đồ
read_email: Đọc địa chỉ thư điện tử của người dùng
skip_authorization: Tự động chấp nhận đơn xin
+ for_roles:
+ moderator: Chỉ có điều hành viên có quyền thực hiện tác vụ này
oauth_clients:
new:
title: Đăng ký chương trình mới
new:
title: Mở tài khoản
tab_title: Mở tài khoản
+ signup_to_authorize_html: Mở tài khoản OpenStreetMap để truy cập %{client_app_name}.
no_auto_account_create: Rất tiếc, chúng ta hiện không có khả năng tạo ra tài
khoản tự động cho bạn.
please_contact_support_html: Vui lòng liên hệ với %{support_link} để yêu cầu
tạo tài khoản – chúng tôi sẽ cố gắng giải quyết yêu cầu nhanh nhất có thể.
support: hỗ trợ
about:
- header: Tự do sử dụng và sửa đổi
+ header: Tự do sử dụng và sửa đổi.
paragraph_1: Không giống như với các bản đồ kia, OpenStreetMap được xây dựng
hoàn toàn nhờ những người như bạn, và mọi người có thể tự do sửa chữa, cập
nhật, tải về, và sử dụng miễn phí.
- paragraph_2: Hãy mở tài khoản để bắt đầu đóng góp. Chúng tôi sẽ gửi thư điện
- tử cho bạn để xác nhận tài khoản của bạn.
+ paragraph_2: Hãy mở tài khoản để bắt đầu đóng góp.
+ welcome: Chào mừng đến OpenStreetMap
+ duplicate_social_email: Nếu bạn đã có tài khoản OpenStreetMap và muốn sử dụng
+ nhà cung cấp danh tính bên thứ ba, xin vui lòng đăng nhập dùng mật khẩu của
+ bạn và thay đổi tùy chọn tài khoản.
display name description: Tên người dùng của bạn được hiển thị công khai. Bạn
có thể thay đổi tên này về sau trong tùy chọn.
by_signing_up:
+ html: Bằng cách mở tài khoản, bạn chấp nhận %{tou_link}, %{privacy_policy_link},
+ và %{contributor_terms_link} của chúng tôi.
privacy_policy: quy định về quyền riêng tư
privacy_policy_title: Quy định về quyền riêng tư của OSMF, bao gồm phần về
địa chỉ thư điện tử
+ contributor_terms: các điều kiện đóng góp
+ tou: các điều khoản sử dụng
external auth: 'Xác minh qua Dịch vụ Bên thứ ba:'
continue: Mở tài khoản
terms accepted: Cám ơn bạn đã chấp nhận các điều khoản đóng góp mới!
email_help:
+ privacy_policy: quy định về quyền riêng tư
+ privacy_policy_title: Quy định về quyền riêng tư của OSMF, bao gồm phần về
+ địa chỉ thư điện tử
html: Địa chỉ thư điện tử không được hiển thị công khai, xem thêm thông tin
trong %{privacy_policy_link} của chúng tôi.
- use external auth: Hoặc đăng nhập qua dịch vụ bên thứ ba
+ consider_pd_html: Tôi coi những đóng góp của mình thuộc về %{consider_pd_link}.
+ consider_pd: phạm vi công cộng
+ or: hoặc
+ use external auth: hoặc mở tài khoản qua dịch vụ bên thứ ba
terms:
title: Điều khoản
heading: Điều khoản
remove as friend: Hủy Kết Bạn
add as friend: Kết Bạn
mapper since: 'Tham gia:'
+ last map edit: 'Sửa đổi bản đồ cuối cùng:'
+ no activity yet: Chưa có hoạt động nào
uid: 'Số người dùng:'
ct status: 'Điều khoản đóng góp:'
ct undecided: Chưa quyết định
blocks_on_user: Tác vụ Cấm %{user}
blocks_by_me: Tác vụ Cấm bởi Tôi
blocks_by_user: Tác vụ Cấm bởi %{user}
+ block: Tác vụ cấm số %{id}
user_mutes:
index:
title: Người dùng bị Tắt tiếng
intro: Bản đồ có thiếu gì hay sai lầm không? Hãy báo cho chúng tôi để chúng
tôi sửa chữa bản đồ. Chỉ việc kéo ghim vào vị trí đúng và viết lời giải thích
vấn đề.
+ anonymous_warning_html: Bạn chưa đăng nhập. Để nhận được các thông báo về lời
+ ghi chú của bạn, xin vui lòng %{log_in} hoặc %{sign_up}.
+ anonymous_warning_log_in: đăng nhập
+ anonymous_warning_sign_up: mở tài khoản
advice: Ghi chú của bạn được hiển thị công khai và có thể được sử dụng để cập
nhật bản đồ. Xin đừng ghi thông tin cá nhân hoặc thông tin lấy từ bản đồ hay
danh bạ có bản quyền.
# Author: GuoPC
# Author: Hehua
# Author: Hmgrmb
+# Author: Huajing
# Author: Hudafu
# Author: Hydra
# Author: Hzy980512
way: 路径
relation: 关系
start_rjs:
- feature_warning: 正在加载 %{num_features} 个要素,这可能会使您的浏览器变慢或无响应。确定要显示此数据吗?
+ feature_warning: 正在加载 %{num_features} 个要素,这可能会使您的浏览器变慢或无响应。您确定要显示此数据吗?
load_data: 加载数据
loading: 加载中…
tag_details:
comment: 评论
newer_comments: 较新评论
older_comments: 较旧评论
+ new:
+ heading: 在以下日记条目的讨论中留言吗?
doorkeeper:
errors:
messages:
oauth2_authorizations: OAuth 2授权
muted_users: 已忽视用户
auth_providers:
- openid_logo_alt: 使用 OpenID 登录
+ openid_url: OpenID URL
openid_login_button: 继续
openid:
title: 使用OpenID登录
- alt: 使用OpenID URL登录
+ alt: OpenID 标志
google:
title: 使用Google登录
- alt: 使用Google OpenID登录
+ alt: Google 标志
facebook:
title: 使用Facebook登录
- alt: 使用Facebook账户登录
+ alt: Facebook 标志
microsoft:
title: 使用Microsoft登录
- alt: 使用Microsoft账户登录
+ alt: Microsoft 标志
github:
title: 使用GitHub登录
- alt: 通过GitHub账户登录
+ alt: GitHub 标志
wikipedia:
title: 使用维基百科登录
- alt: 使用维基百科账户登录
+ alt: 维基百科标志
oauth:
authorize:
title: 授权访问您的账户
continue: 注册
terms accepted: 感谢您接受新的贡献条款!
email_help:
+ privacy_policy: 隐私政策
+ privacy_policy_title: OSM基金会隐私政策包括电子邮件地址部分
html: 您的地址不会公开显示,请参阅我们的%{privacy_policy_link}了解更多信息。
consider_pd_html: 我认为我的贡献应在 %{consider_pd_link} 中。
consider_pd: 公有领域
comment: 評論
newer_comments: 較新的評論
older_comments: 較舊的評論
+ new:
+ heading: 在以下日記項目討論添加評論?
doorkeeper:
errors:
messages:
oauth2_authorizations: OAuth 2 授權
muted_users: 已忽視使用者
auth_providers:
- openid_logo_alt: 使用 OpenID 登入
+ openid_url: OpenID URL
openid_login_button: 繼續
openid:
title: 使用 OpenID 登入
- alt: 使用 OpenID 網址登入
+ alt: OpenID 標誌
google:
title: 使用 Google 登入
- alt: 使用 Google OpenID 登入
+ alt: Google 標誌
facebook:
title: 使用臉書登入
- alt: 使用臉書帳號登入
+ alt: 臉書標誌
microsoft:
title: 使用 Microsoft 登入
- alt: 使用 Microsoft 帳號登入
+ alt: 微軟標誌
github:
title: 使用 GitHub 登入
- alt: 使用 GitHub 帳號登入
+ alt: GitHub 標誌
wikipedia:
title: 使用維基百科登入
- alt: 使用維基百科帳號登入
+ alt: 維基百科標誌
oauth:
authorize:
title: 授權使用您的帳號
scope "/user/:display_name" do
resources :diary_entries, :path => "diary", :only => [:edit, :update, :show], :id => /\d+/
end
- post "/user/:display_name/diary/:id/newcomment" => "diary_entries#comment", :id => /\d+/, :as => :comment_diary_entry
+ post "/user/:display_name/diary/:id/newcomment" => "diary_comments#create", :id => /\d+/, :as => :comment_diary_entry
post "/user/:display_name/diary/:id/hide" => "diary_entries#hide", :id => /\d+/, :as => :hide_diary_entry
post "/user/:display_name/diary/:id/unhide" => "diary_entries#unhide", :id => /\d+/, :as => :unhide_diary_entry
post "/user/:display_name/diary/:id/hidecomment/:comment" => "diary_comments#hide", :id => /\d+/, :comment => /\d+/, :as => :hide_diary_comment
url = "#{Settings.nominatim_url}reverse?lat=#{lat}&lon=#{lon}&zoom=#{zoom}&accept-language=#{language}"
begin
- response = Timeout.timeout(4) do
- REXML::Document.new(Net::HTTP.get(URI.parse(url)))
+ response = OSM.http_client.get(URI.parse(url)) do |request|
+ request.options.timeout = 4
end
+
+ results = REXML::Document.new(response.body) if response.success?
rescue StandardError
- response = nil
+ results = nil
end
- if response && result = response.get_text("reversegeocode/result")
+ if results && result = results.get_text("reversegeocode/result")
result.value
else
"#{number_with_precision(lat, :precision => 3)}, #{number_with_precision(lon, :precision => 3)}"
# Return the HTTP client to use
def self.http_client
- @http_client ||= Faraday.new(:request => { :timeout => 15 })
+ @http_client ||= Faraday.new(:request => { :timeout => 15 },
+ :headers => { :user_agent => Settings.server_url })
end
# Return the MaxMindDB database handle
assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
end
- [:create, :edit, :comment, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
+ [:create, :edit, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
assert ability.cannot?(action, DiaryEntry), "should not be able to #{action} DiaryEntries"
end
- [:hide, :unhide].each do |action|
+ [:create, :hide, :unhide].each do |action|
assert ability.cannot?(action, DiaryComment), "should not be able to #{action} DiaryComments"
end
end
test "Diary permissions" do
ability = Ability.new create(:user)
- [:index, :rss, :show, :create, :edit, :comment, :subscribe, :unsubscribe].each do |action|
+ [:index, :rss, :show, :create, :edit, :subscribe, :unsubscribe].each do |action|
assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
end
- [:index].each do |action|
+ [:index, :create].each do |action|
assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
end
class AdministratorAbilityTest < AbilityTest
test "Diary for an administrator" do
ability = Ability.new create(:administrator_user)
- [:index, :rss, :show, :create, :edit, :comment, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
+ [:index, :rss, :show, :create, :edit, :subscribe, :unsubscribe, :hide, :unhide].each do |action|
assert ability.can?(action, DiaryEntry), "should be able to #{action} DiaryEntries"
end
- [:index, :hide, :unhide].each do |action|
+ [:index, :create, :hide, :unhide].each do |action|
assert ability.can?(action, DiaryComment), "should be able to #{action} DiaryComments"
end
end
comment = create(:changeset_comment)
assert comment.visible
- post changeset_comment_hide_path(:id => comment)
+ post changeset_comment_hide_path(comment)
assert_response :unauthorized
assert comment.reload.visible
auth_header = basic_authorization_header create(:user).email, "test"
# not a moderator
- post changeset_comment_hide_path(:id => comment), :headers => auth_header
+ post changeset_comment_hide_path(comment), :headers => auth_header
assert_response :forbidden
assert comment.reload.visible
auth_header = basic_authorization_header create(:moderator_user).email, "test"
# bad comment id
- post changeset_comment_hide_path(:id => 999111), :headers => auth_header
+ post changeset_comment_hide_path(999111), :headers => auth_header
assert_response :not_found
assert comment.reload.visible
end
auth_header = basic_authorization_header create(:moderator_user).email, "test"
- post changeset_comment_hide_path(:id => comment), :headers => auth_header
+ post changeset_comment_hide_path(comment), :headers => auth_header
assert_response :success
assert_not comment.reload.visible
end
comment = create(:changeset_comment, :visible => false)
assert_not comment.visible
- post changeset_comment_unhide_path(:id => comment)
+ post changeset_comment_unhide_path(comment)
assert_response :unauthorized
assert_not comment.reload.visible
auth_header = basic_authorization_header create(:user).email, "test"
# not a moderator
- post changeset_comment_unhide_path(:id => comment), :headers => auth_header
+ post changeset_comment_unhide_path(comment), :headers => auth_header
assert_response :forbidden
assert_not comment.reload.visible
auth_header = basic_authorization_header create(:moderator_user).email, "test"
# bad comment id
- post changeset_comment_unhide_path(:id => 999111), :headers => auth_header
+ post changeset_comment_unhide_path(999111), :headers => auth_header
assert_response :not_found
assert_not comment.reload.visible
end
auth_header = basic_authorization_header create(:moderator_user).email, "test"
- post changeset_comment_unhide_path(:id => comment), :headers => auth_header
+ post changeset_comment_unhide_path(comment), :headers => auth_header
assert_response :success
assert comment.reload.visible
end
# bad changeset id
assert_no_difference "changeset.subscribers.count" do
- post api_changeset_subscribe_path(:id => 999111), :headers => auth_header
+ post api_changeset_subscribe_path(999111), :headers => auth_header
end
assert_response :not_found
get changeset_comments_feed_path(:id => changeset.id, :format => "rss")
assert_response :success
assert_equal "application/rss+xml", @response.media_type
- assert_select "rss", :count => 1 do
- assert_select "channel", :count => 1 do
- assert_select "item", :count => 3
- end
- end
- # Rails::Dom::Testing.html_document_fragment.parse(icons)
- # Gets comment Ids from HTML and checks that they are in descending order
-
last_comment_id = -1
assert_select "rss", :count => 1 do
- assert_select "description", :count => 3 do |descriptions|
- descriptions.children.each do |description|
- changeset_dom = Rails::Dom::Testing.html_document_fragment.parse(description.content)
- comment = changeset_dom.at_css(".changeset-comment-text")
- next unless comment
-
- id = comment.content.split[-1].to_i
- assert_operator id, "<", last_comment_id if last_comment_id != -1
- last_comment_id = id
+ assert_select "channel", :count => 1 do
+ assert_select "item", :count => 3 do |items|
+ items.each do |item|
+ assert_select item, "link", :count => 1 do |link|
+ match = assert_match(/^#{changeset_url changeset}#c(\d+)$/, link.text)
+ comment_id = match[1].to_i
+ assert_operator comment_id, "<", last_comment_id if last_comment_id != -1
+ last_comment_id = comment_id
+ end
+ end
end
end
end
{ :path => "/user/username/diary/comments", :method => :get },
{ :controller => "diary_comments", :action => "index", :display_name => "username" }
)
+ assert_routing(
+ { :path => "/user/username/diary/1/newcomment", :method => :post },
+ { :controller => "diary_comments", :action => "create", :display_name => "username", :id => "1" }
+ )
assert_routing(
{ :path => "/user/username/diary/1/hidecomment/2", :method => :post },
{ :controller => "diary_comments", :action => "hide", :display_name => "username", :id => "1", :comment => "2" }
end
end
+ def test_create
+ user = create(:user)
+ other_user = create(:user)
+ entry = create(:diary_entry, :user => user)
+ create(:diary_entry_subscription, :diary_entry => entry, :user => user)
+
+ # Make sure that you are denied when you are not logged in
+ post comment_diary_entry_path(entry.user, entry)
+ assert_response :forbidden
+
+ session_for(other_user)
+
+ # Verify that you get a not found error, when you pass a bogus id
+ post comment_diary_entry_path(entry.user, :id => 9999)
+ assert_response :not_found
+ assert_select "div.content-heading", :count => 1 do
+ assert_select "h1", :text => "No entry with the id: 9999", :count => 1
+ end
+
+ # Now try an invalid comment with an empty body
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ assert_no_difference "DiaryComment.count" do
+ assert_no_difference "entry.subscribers.count" do
+ perform_enqueued_jobs do
+ post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => "" })
+ end
+ end
+ end
+ end
+ assert_response :success
+ assert_template :new
+
+ # Now try again with the right id
+ assert_difference "ActionMailer::Base.deliveries.size", entry.subscribers.count do
+ assert_difference "DiaryComment.count", 1 do
+ assert_difference "entry.subscribers.count", 1 do
+ perform_enqueued_jobs do
+ post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => "New comment" })
+ end
+ end
+ end
+ end
+ assert_redirected_to diary_entry_path(entry.user, entry)
+ email = ActionMailer::Base.deliveries.first
+ assert_equal [user.email], email.to
+ assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
+ assert_match(/New comment/, email.text_part.decoded)
+ assert_match(/New comment/, email.html_part.decoded)
+ ActionMailer::Base.deliveries.clear
+ comment = DiaryComment.order(:id).last
+ assert_equal entry.id, comment.diary_entry_id
+ assert_equal other_user.id, comment.user_id
+ assert_equal "New comment", comment.body
+
+ # Now show the diary entry, and check the new comment is present
+ get diary_entry_path(entry.user, entry)
+ assert_response :success
+ assert_select ".diary-comment", :count => 1 do
+ assert_select "#comment#{comment.id}", :count => 1 do
+ assert_select "a[href='/user/#{ERB::Util.u(other_user.display_name)}']", :text => other_user.display_name, :count => 1
+ end
+ assert_select ".richtext", :text => /New comment/, :count => 1
+ end
+ end
+
+ def test_create_spammy
+ user = create(:user)
+ other_user = create(:user)
+ entry = create(:diary_entry, :user => user)
+ create(:diary_entry_subscription, :diary_entry => entry, :user => user)
+
+ session_for(other_user)
+
+ # Generate some spammy content
+ spammy_text = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ")
+
+ # Try creating a spammy comment
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ assert_difference "DiaryComment.count", 1 do
+ perform_enqueued_jobs do
+ post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => spammy_text })
+ end
+ end
+ end
+ assert_redirected_to diary_entry_path(entry.user, entry)
+ email = ActionMailer::Base.deliveries.first
+ assert_equal [user.email], email.to
+ assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
+ assert_match %r{http://example.com/spam}, email.text_part.decoded
+ assert_match %r{http://example.com/spam}, email.html_part.decoded
+ ActionMailer::Base.deliveries.clear
+ comment = DiaryComment.order(:id).last
+ assert_equal entry.id, comment.diary_entry_id
+ assert_equal other_user.id, comment.user_id
+ assert_equal spammy_text, comment.body
+ assert_equal "suspended", User.find(other_user.id).status
+
+ # Follow the redirect
+ get diary_entries_path(:display_name => user.display_name)
+ assert_redirected_to :controller => :users, :action => :suspended
+
+ # Now show the diary entry, and check the new comment is not present
+ get diary_entry_path(entry.user, entry)
+ assert_response :success
+ assert_select ".diary-comment", :count => 0
+ end
+
def test_hide
user = create(:user)
diary_entry = create(:diary_entry, :user => user)
{ :path => "/user/username/diary/1", :method => :put },
{ :controller => "diary_entries", :action => "update", :display_name => "username", :id => "1" }
)
- assert_routing(
- { :path => "/user/username/diary/1/newcomment", :method => :post },
- { :controller => "diary_entries", :action => "comment", :display_name => "username", :id => "1" }
- )
assert_routing(
{ :path => "/user/username/diary/1/hide", :method => :post },
{ :controller => "diary_entries", :action => "hide", :display_name => "username", :id => "1" }
assert_select "span[class=translation_missing]", false, "Missing translation in edit diary entry"
end
- def test_comment
- user = create(:user)
- other_user = create(:user)
- entry = create(:diary_entry, :user => user)
- create(:diary_entry_subscription, :diary_entry => entry, :user => user)
-
- # Make sure that you are denied when you are not logged in
- post comment_diary_entry_path(entry.user, entry)
- assert_response :forbidden
-
- session_for(other_user)
-
- # Verify that you get a not found error, when you pass a bogus id
- post comment_diary_entry_path(entry.user, :id => 9999)
- assert_response :not_found
- assert_select "div.content-heading", :count => 1 do
- assert_select "h1", :text => "No entry with the id: 9999", :count => 1
- end
-
- # Now try an invalid comment with an empty body
- assert_no_difference "ActionMailer::Base.deliveries.size" do
- assert_no_difference "DiaryComment.count" do
- assert_no_difference "entry.subscribers.count" do
- perform_enqueued_jobs do
- post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => "" })
- end
- end
- end
- end
- assert_response :success
- assert_template :show
-
- # Now try again with the right id
- assert_difference "ActionMailer::Base.deliveries.size", entry.subscribers.count do
- assert_difference "DiaryComment.count", 1 do
- assert_difference "entry.subscribers.count", 1 do
- perform_enqueued_jobs do
- post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => "New comment" })
- end
- end
- end
- end
- assert_redirected_to :action => :show, :display_name => entry.user.display_name, :id => entry.id
- email = ActionMailer::Base.deliveries.first
- assert_equal [user.email], email.to
- assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
- assert_match(/New comment/, email.text_part.decoded)
- assert_match(/New comment/, email.html_part.decoded)
- ActionMailer::Base.deliveries.clear
- comment = DiaryComment.order(:id).last
- assert_equal entry.id, comment.diary_entry_id
- assert_equal other_user.id, comment.user_id
- assert_equal "New comment", comment.body
-
- # Now show the diary entry, and check the new comment is present
- get diary_entry_path(entry.user, entry)
- assert_response :success
- assert_select ".diary-comment", :count => 1 do
- assert_select "#comment#{comment.id}", :count => 1 do
- assert_select "a[href='/user/#{ERB::Util.u(other_user.display_name)}']", :text => other_user.display_name, :count => 1
- end
- assert_select ".richtext", :text => /New comment/, :count => 1
- end
- end
-
- def test_comment_spammy
- user = create(:user)
- other_user = create(:user)
- entry = create(:diary_entry, :user => user)
- create(:diary_entry_subscription, :diary_entry => entry, :user => user)
-
- session_for(other_user)
-
- # Generate some spammy content
- spammy_text = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ")
-
- # Try creating a spammy comment
- assert_difference "ActionMailer::Base.deliveries.size", 1 do
- assert_difference "DiaryComment.count", 1 do
- perform_enqueued_jobs do
- post comment_diary_entry_path(entry.user, entry, :diary_comment => { :body => spammy_text })
- end
- end
- end
- assert_redirected_to :action => :show, :display_name => entry.user.display_name, :id => entry.id
- email = ActionMailer::Base.deliveries.first
- assert_equal [user.email], email.to
- assert_equal "[OpenStreetMap] #{other_user.display_name} commented on a diary entry", email.subject
- assert_match %r{http://example.com/spam}, email.text_part.decoded
- assert_match %r{http://example.com/spam}, email.html_part.decoded
- ActionMailer::Base.deliveries.clear
- comment = DiaryComment.order(:id).last
- assert_equal entry.id, comment.diary_entry_id
- assert_equal other_user.id, comment.user_id
- assert_equal spammy_text, comment.body
- assert_equal "suspended", User.find(other_user.id).status
-
- # Follow the redirect
- get diary_entries_path(:display_name => user.display_name)
- assert_redirected_to :controller => :users, :action => :suspended
-
- # Now show the diary entry, and check the new comment is not present
- get diary_entry_path(entry.user, entry)
- assert_response :success
- assert_select ".diary-comment", :count => 0
- end
-
def test_index_all
diary_entry = create(:diary_entry)
geo_entry = create(:diary_entry, :latitude => 51.50763, :longitude => -0.10781)
end
end
+ ##
+ # Test identification of integer lat/lon pairs using N/E with degrees
+ def test_identify_latlon_ne_d_int_deg
+ [
+ "N50 E14",
+ "N50° E14°",
+ "50N 14E",
+ "50°N 14°E"
+ ].each do |code|
+ latlon_check code, 50, 14
+ end
+ end
+
##
# Test identification of lat/lon pairs using N/W with degrees
def test_identify_latlon_nw_d
end
end
+ ##
+ # Test identification of lat/lon pairs with missing fractions
+ def test_no_identify_latlon_ne_missing_fraction_part
+ [
+ "N50. E14.",
+ "N50.° E14.°",
+ "50.N 14.E",
+ "50.°N 14.°E",
+ "N50 1.' E14 2.'",
+ "N50° 1.' E14° 2.'",
+ "50N 1.' 14 2.'E",
+ "50° 1.'N 14° 2.'E",
+ "N50 1' 3,\" E14 2' 4.\"",
+ "N50° 1' 3.\" E14° 2' 4.\"",
+ "50N 1' 3.\" 14 2' 4.\"E",
+ "50° 1' 3.\"N 14° 2' 4.\"E"
+ ].each do |code|
+ get search_path(:query => code)
+ assert_response :success
+ assert_template :search
+ assert_template :layout => "map"
+ assert_equal %w[osm_nominatim], assigns(:sources).pluck(:name)
+ end
+ end
+
+ #
+ # Test identification of lat/lon pairs with mixed precision
+ def test_identify_latlon_ne_mixed_precision
+ latlon_check "N1 5 E15", 1.083333, 15
+ latlon_check "N1 5 9 E15", 1.085833, 15
+ latlon_check "N1 5 9 E1 5", 1.085833, 1.083333
+ latlon_check "N15 E1 5", 15, 1.083333
+ latlon_check "N15 E1 5 9", 15, 1.085833
+ latlon_check "N1 5 E1 5 9", 1.083333, 1.085833
+ end
+
+ #
+ # Test identification of lat/lon pairs with values close to zero
+ def test_identify_latlon_close_to_zero
+ [
+ "0.0000123 -0.0000456",
+ "+0.0000123 -0.0000456",
+ "N 0° 0' 0.4428\", W 0° 0' 1.6416\""
+ ].each do |code|
+ latlon_check code, 0.0000123, -0.0000456
+ end
+ end
+
##
# Test identification of US zipcodes
def test_identify_us_postcode
assert_template :layout => "map"
assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
assert_nil @controller.params[:query]
- assert_in_delta lat, @controller.params[:lat]
- assert_in_delta lon, @controller.params[:lon]
+ assert_match(/^[+-]?\d+(?:\.\d+)?$/, @controller.params[:lat])
+ assert_match(/^[+-]?\d+(?:\.\d+)?$/, @controller.params[:lon])
+ assert_in_delta lat, @controller.params[:lat].to_f
+ assert_in_delta lon, @controller.params[:lon].to_f
get search_path(:query => query), :xhr => true
assert_response :success
assert_template :layout => "xhr"
assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
assert_nil @controller.params[:query]
- assert_in_delta lat, @controller.params[:lat]
- assert_in_delta lon, @controller.params[:lon]
+ assert_match(/^[+-]?\d+(?:\.\d+)?$/, @controller.params[:lat])
+ assert_match(/^[+-]?\d+(?:\.\d+)?$/, @controller.params[:lon])
+ assert_in_delta lat, @controller.params[:lat].to_f
+ assert_in_delta lon, @controller.params[:lon].to_f
end
def search_check(query, sources)
assert_match %r{^<img .* width="50" height="50" .* />$}, thumbnail
end
- def test_openid_logo
- logo = openid_logo
- assert_match %r{^<img .* src="/images/openid.svg" .* />$}, logo
- end
-
def test_auth_button
- button = auth_button("google", "google")
+ button = auth_button("google")
img_tag = "<img alt=\"Google logo\" class=\"rounded-1\" src=\"/images/google.svg\" width=\"36\" height=\"36\" />"
- assert_equal("<a class=\"auth_button btn btn-light p-2 d-block\" title=\"Log in with Google\" rel=\"nofollow\" data-method=\"post\" href=\"/auth/google\">#{img_tag}</a>", button)
+ assert_equal("<a class=\"auth_button btn btn-light p-2\" title=\"Log in with Google\" rel=\"nofollow\" data-method=\"post\" href=\"/auth/google\">#{img_tag}</a>", button)
end
private
--- /dev/null
+require "test_helper"
+
+class NominatimTest < ActiveSupport::TestCase
+ def test_describe_location
+ stub_request(:get, %r{^https://nominatim\.example\.com/reverse\?})
+ .to_return(:body => "<reversegeocode><result>Target location</result></reversegeocode>")
+
+ with_settings(:nominatim_url => "https://nominatim.example.com/") do
+ location = Nominatim.describe_location(60, 30, 10, "en")
+ assert_equal "Target location", location
+ end
+
+ assert_requested :get, "https://nominatim.example.com/reverse?lat=60&lon=30&zoom=10&accept-language=en",
+ :headers => { "User-Agent" => Settings.server_url }
+ end
+
+ def test_describe_location_no_result
+ stub_request(:get, %r{^https://nominatim\.example\.com/reverse\?})
+ .to_return(:body => "<reversegeocode><error>Unable to geocode</error></reversegeocode>")
+
+ with_settings(:nominatim_url => "https://nominatim.example.com/") do
+ location = Nominatim.describe_location(1, 2, 14, "en")
+ assert_equal "1.000, 2.000", location
+ end
+
+ assert_requested :get, "https://nominatim.example.com/reverse?lat=1&lon=2&zoom=14&accept-language=en",
+ :headers => { "User-Agent" => Settings.server_url }
+ end
+end
assert_content "Confirm Password"
end
+
+ test "Show OpenID form when OpenID provider button is clicked" do
+ visit login_path
+
+ assert_no_field "OpenID URL"
+ assert_no_button "Continue"
+
+ click_on "Log in with OpenID"
+
+ assert_field "OpenID URL"
+ assert_button "Continue"
+ end
end
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.6.1":
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
- integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
+"@eslint-community/regexpp@^4.11.0":
+ version "4.11.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
+ integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
"@eslint/config-array@^0.17.0":
version "0.17.0"
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@9.6.0":
- version "9.6.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.6.0.tgz#5b0cb058cc13d9c92d4e561d3538807fa5127c95"
- integrity sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==
+"@eslint/js@9.7.0":
+ version "9.7.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.7.0.tgz#b712d802582f02b11cfdf83a85040a296afec3f0"
+ integrity sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-scope@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc"
- integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==
+eslint-scope@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94"
+ integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
eslint@^9.0.0:
- version "9.6.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.6.0.tgz#9f54373afa15e1ba356656a8d96233182027fb49"
- integrity sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==
+ version "9.7.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.7.0.tgz#bedb48e1cdc2362a0caaa106a4c6ed943e8b09e4"
+ integrity sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
- "@eslint-community/regexpp" "^4.6.1"
+ "@eslint-community/regexpp" "^4.11.0"
"@eslint/config-array" "^0.17.0"
"@eslint/eslintrc" "^3.1.0"
- "@eslint/js" "9.6.0"
+ "@eslint/js" "9.7.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.3.0"
"@nodelib/fs.walk" "^1.2.8"
cross-spawn "^7.0.2"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
- eslint-scope "^8.0.1"
+ eslint-scope "^8.0.2"
eslint-visitor-keys "^4.0.0"
espree "^10.1.0"
esquery "^1.5.0"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qs@^6.9.4:
- version "6.12.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.2.tgz#5443b587f3bf73ac68968de491e5b25bafe04478"
- integrity sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==
+ version "6.12.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754"
+ integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==
dependencies:
side-channel "^1.0.6"