specs:
aasm (5.5.0)
concurrent-ruby (~> 1.0)
- actioncable (7.0.7)
- actionpack (= 7.0.7)
- activesupport (= 7.0.7)
+ actioncable (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (7.0.7)
- actionpack (= 7.0.7)
- activejob (= 7.0.7)
- activerecord (= 7.0.7)
- activestorage (= 7.0.7)
- activesupport (= 7.0.7)
+ actionmailbox (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ activejob (= 7.0.7.2)
+ activerecord (= 7.0.7.2)
+ activestorage (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
- actionmailer (7.0.7)
- actionpack (= 7.0.7)
- actionview (= 7.0.7)
- activejob (= 7.0.7)
- activesupport (= 7.0.7)
+ actionmailer (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ actionview (= 7.0.7.2)
+ activejob (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
- actionpack (7.0.7)
- actionview (= 7.0.7)
- activesupport (= 7.0.7)
+ actionpack (7.0.7.2)
+ actionview (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actionpack-page_caching (1.2.4)
actionpack (>= 4.0.0)
- actiontext (7.0.7)
- actionpack (= 7.0.7)
- activerecord (= 7.0.7)
- activestorage (= 7.0.7)
- activesupport (= 7.0.7)
+ actiontext (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ activerecord (= 7.0.7.2)
+ activestorage (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.0.7)
- activesupport (= 7.0.7)
+ actionview (7.0.7.2)
+ activesupport (= 7.0.7.2)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_record_union (1.3.0)
activerecord (>= 4.0)
- activejob (7.0.7)
- activesupport (= 7.0.7)
+ activejob (7.0.7.2)
+ activesupport (= 7.0.7.2)
globalid (>= 0.3.6)
- activemodel (7.0.7)
- activesupport (= 7.0.7)
- activerecord (7.0.7)
- activemodel (= 7.0.7)
- activesupport (= 7.0.7)
- activerecord-import (1.4.1)
+ activemodel (7.0.7.2)
+ activesupport (= 7.0.7.2)
+ activerecord (7.0.7.2)
+ activemodel (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
+ activerecord-import (1.5.0)
activerecord (>= 4.2)
- activestorage (7.0.7)
- actionpack (= 7.0.7)
- activejob (= 7.0.7)
- activerecord (= 7.0.7)
- activesupport (= 7.0.7)
+ activestorage (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ activejob (= 7.0.7.2)
+ activerecord (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (7.0.7)
+ activesupport (7.0.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
autoprefixer-rails (10.4.13.0)
execjs (~> 2)
aws-eventstream (1.2.0)
- aws-partitions (1.804.0)
- aws-sdk-core (3.180.3)
+ aws-partitions (1.813.0)
+ aws-sdk-core (3.181.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
- aws-sdk-s3 (1.132.1)
- aws-sdk-core (~> 3, >= 3.179.0)
+ aws-sdk-s3 (1.134.0)
+ aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
- dry-schema (1.13.2)
+ dry-schema (1.13.3)
concurrent-ruby (~> 1.0)
dry-configurable (~> 1.0, >= 1.0.1)
dry-core (~> 1.0, < 2)
dry-initializer (~> 3.0)
dry-schema (>= 1.12, < 2)
zeitwerk (~> 2.6)
- erb_lint (0.4.0)
+ erb_lint (0.5.0)
activesupport
better_html (>= 2.0.1)
parser (>= 2.7.1.4)
rack-test (2.1.0)
rack (>= 1.3)
rack-uri_sanitizer (0.0.2)
- rails (7.0.7)
- actioncable (= 7.0.7)
- actionmailbox (= 7.0.7)
- actionmailer (= 7.0.7)
- actionpack (= 7.0.7)
- actiontext (= 7.0.7)
- actionview (= 7.0.7)
- activejob (= 7.0.7)
- activemodel (= 7.0.7)
- activerecord (= 7.0.7)
- activestorage (= 7.0.7)
- activesupport (= 7.0.7)
+ rails (7.0.7.2)
+ actioncable (= 7.0.7.2)
+ actionmailbox (= 7.0.7.2)
+ actionmailer (= 7.0.7.2)
+ actionpack (= 7.0.7.2)
+ actiontext (= 7.0.7.2)
+ actionview (= 7.0.7.2)
+ activejob (= 7.0.7.2)
+ activemodel (= 7.0.7.2)
+ activerecord (= 7.0.7.2)
+ activestorage (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
bundler (>= 1.15.0)
- railties (= 7.0.7)
+ railties (= 7.0.7.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
- railties (7.0.7)
- actionpack (= 7.0.7)
- activesupport (= 7.0.7)
+ railties (7.0.7.2)
+ actionpack (= 7.0.7.2)
+ activesupport (= 7.0.7.2)
method_source
rake (>= 12.2)
thor (~> 1.0)
rinku (2.0.6)
rotp (6.2.2)
rouge (4.1.3)
- rubocop (1.56.0)
+ rubocop (1.56.2)
base64 (~> 0.1.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
i18n
vendorer (0.2.0)
version_gem (1.1.3)
- webmock (3.18.1)
+ webmock (3.19.0)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
function updateChangeset(form, method, url, include_data) {
var data;
+ $(form).find("#comment-error").prop("hidden", true);
$(form).find("input[type=submit]").prop("disabled", true);
if (include_data) {
data: data,
success: function () {
OSM.loadSidebarContent(window.location.pathname, page.load);
+ },
+ error: function (xhr, xhr_status, http_status) {
+ $(form).find("#comment-error").text(http_status);
+ $(form).find("#comment-error").prop("hidden", false);
+ $(form).find("input[type=submit]").prop("disabled", false);
}
});
}
# Check the arguments are sane
raise OSM::APIBadUserInput, "No id was given" unless params[:id]
raise OSM::APIBadUserInput, "No text was given" if params[:text].blank?
+ raise OSM::APIRateLimitExceeded if current_user.changeset_comments.where("created_at >= ?", Time.now.utc - 1.hour).count >= current_user.max_changeset_comments_per_hour
# Extract the arguments
id = params[:id].to_i
raise OSM::APIBadUserInput, "No users were given to search for" if ids.empty?
- @users = User.visible.find(ids)
+ @users = User.visible.where(:id => ids).in_order_of(:id, ids)
# Render the result
respond_to do |format|
end
if current_user.save
+ SIGNUP_IP_LIMITER&.update(request.remote_ip)
+ SIGNUP_EMAIL_LIMITER&.update(canonical_email(current_user.email))
+
flash[:matomo_goal] = Settings.matomo["goals"]["signup"] if defined?(Settings.matomo)
referer = welcome_path
domain_mx_servers(domain)
end
- if blocked = Acl.no_account_creation(request.remote_ip, :domain => domain, :mx => mx_servers)
+ blocked = Acl.no_account_creation(request.remote_ip, :domain => domain, :mx => mx_servers)
+
+ blocked ||= SIGNUP_IP_LIMITER && !SIGNUP_IP_LIMITER.allow?(request.remote_ip)
+
+ blocked ||= email && SIGNUP_EMAIL_LIMITER && !SIGNUP_EMAIL_LIMITER.allow?(canonical_email(email))
+
+ if blocked
logger.info "Blocked signup from #{request.remote_ip} for #{email}"
render :action => "blocked"
!blocked
end
+ def canonical_email(email)
+ local_part, domain = if email.nil?
+ nil
+ else
+ email.split("@")
+ end
+
+ local_part.sub!(/\+.*$/, "")
+
+ local_part.delete!(".") if %w[gmail.com googlemail.com].include?(domain)
+
+ "#{local_part}@#{domain}"
+ end
+
##
# get list of MX servers for a domains
def domain_mx_servers(domain)
max_friends.clamp(0, Settings.max_friends_per_hour)
end
+ def max_changeset_comments_per_hour
+ if moderator?
+ 36000
+ else
+ previous_comments = changeset_comments.limit(200).count
+ active_reports = issues.with_status(:open).sum(:reports_count)
+ max_comments = previous_comments / 200.0 * Settings.max_changeset_comments_per_hour
+ max_comments = max_comments.floor.clamp(Settings.min_changeset_comments_per_hour, Settings.max_changeset_comments_per_hour)
+ max_comments /= 2**active_reports
+ max_comments.floor.clamp(1, Settings.max_changeset_comments_per_hour)
+ end
+ end
+
private
def encrypt_password
xml.instruct! :xml, :version => "1.0"
xml.osm(OSM::API.new.xml_root_attributes) do |osm|
- osm << render(@users)
+ osm << (render(@users) || "")
end
<div class="mb-3">
<textarea class="form-control" name="text" cols="40" rows="5"></textarea>
</div>
+ <div id="comment-error" class="alert-danger p-2 mb-3" hidden>
+ </div>
<div>
<input type="submit" name="comment" value="<%= t("javascripts.changesets.show.comment") %>" data-changeset-id="<%= @changeset.id %>" data-method="POST" data-url="<%= changeset_comment_url(@changeset) %>" disabled="1" class="btn btn-sm btn-primary" />
</div>
--- /dev/null
+require "rate_limiter"
+
+SIGNUP_IP_LIMITER = if Settings.memcache_servers && Settings.signup_ip_per_day && Settings.signup_ip_max_burst
+ RateLimiter.new(
+ Dalli::Client.new(Settings.memcache_servers, :namespace => "rails:signup:ip"),
+ 86400, Settings.signup_ip_per_day, Settings.signup_ip_max_burst
+ )
+ end
+
+SIGNUP_EMAIL_LIMITER = if Settings.memcache_servers && Settings.signup_email_per_day && Settings.signup_email_max_burst
+ RateLimiter.new(
+ Dalli::Client.new(Settings.memcache_servers, :namespace => "rails:signup:email"),
+ 86400, Settings.signup_email_per_day, Settings.signup_email_max_burst
+ )
+ end
csp_policy[:report_uri] << Settings.csp_report_url if Settings.key?(:csp_report_url)
cookie_policy = {
- :httponly => { :only => ["_osm_session"] }
+ :httponly => { :only => %w[_osm_session _osm_totp_token] }
}
SecureHeaders::Configuration.default do |config|
facebook:
title: Meld aan met Facebook
alt: Meld aan met ’n Facebook-rekening
- windowslive:
+ microsoft:
title: Meld aan met Windows Live
alt: Meld aan met ’n Windows Live-rekening
github:
openid: هوية مفتوحة
google: جوجل
facebook: فيسبوك
- windowslive: مايكروسوفت
+ microsoft: مايكروسوفت
github: جيت هب
wikipedia: ويكيبيديا
api:
facebook:
title: تسجيل الدخول باستخدام فيس بوك
alt: تسجيل الدخول بحساب فيسبوك
- windowslive:
+ microsoft:
title: تسجيل الدخول مع مايكروسوفت
alt: تسجيل الدخول بحساب مايكروسوفت
github:
facebook:
title: Anicia sesión con Facebook
alt: Anicia sesión con una cuenta de Facebook
- windowslive:
+ microsoft:
title: Anicia sesión con Windows Live
alt: Anicia sesión con una cuenta de Windows Live
github:
openid: OpenID
google: Google
facebook: Facebook
- windowslive: Майкрософт
+ microsoft: Майкрософт
github: GitHub
wikipedia: Википедия
api:
facebook:
title: Увайсці праз Facebook
alt: Увайсці праз уліковы запіс Facebook
- windowslive:
+ microsoft:
title: Увайсці праз Windows live
alt: Увайсці праз уліковы запіс Windows Live
github:
openid: OpenID
google: Google
facebook: Facebook
- windowslive: Майкрософт
+ microsoft: Майкрософт
github: GitHub
wikipedia: Уикипедия
api:
facebook:
title: Влизане с Facebook
alt: Влизане със сметка на Facebook
- windowslive:
+ microsoft:
title: Влизане с Майкрософт
alt: Влизане със сметка на Майкрософт
github:
openid: ওপেনআইডি
google: গুগল
facebook: ফেসবুক
- windowslive: মাইক্রোসফট
+ microsoft: মাইক্রোসফট
github: গিটহাব
wikipedia: উইকিপিডিয়া
api:
facebook:
title: ফেসবুক দিয়ে প্রবেশ
alt: ফেসবুক অ্যাকাউন্ট দিয়ে প্রবেশ করুন
- windowslive:
+ microsoft:
title: মাইক্রোসফট দিয়ে লগইন করুন
alt: একটি মাইক্রোসফট অ্যাকাউন্ট দিয়ে লগইন করুন
github:
facebook:
title: Kevreañ ouzh Facebook
alt: Kevreañ ouzh ur gont facebook
- windowslive:
+ microsoft:
title: Kevreañ ouzh Microsoft
alt: Kevreañ ouzh ur gont Microsoft
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Viquipèdia
api:
facebook:
title: Inicieu la sessió amb Facebook
alt: Inicieu la sessió amb un compte de Facebook
- windowslive:
+ microsoft:
title: Inicieu la sessió amb Windows
alt: Inicieu de sessió amb un compte de Windows
github:
index:
title: Notes enviades o comentades per %{user}
heading: notes de %{user}
- subheading_html: Notes enviades o comentades per %{user}
+ subheading_html: Notes %{submitted} o %{commented} per %{user}
+ subheading_submitted: enviades
+ subheading_commented: comentades
no_notes: Sense notes
id: Id
creator: Creador
facebook:
title: Přihlásit se přes Facebook
alt: Přihlášení pomocí účtu na Facebooku
- windowslive:
+ microsoft:
title: Přihlásit se přes Microsoft
alt: Přihlášení pomocí účtu Microsoft
github:
facebook:
title: Mewngofnodi â Facebook
alt: Mewngofnodi â Chyfrif Facebook
- windowslive:
+ microsoft:
title: Mewngofnodi gyda Microsoft
alt: Mewngofnodi gyda Chyfrif Microsoft
github:
facebook:
title: Log på med Facebook
alt: Log på med en Facebook-konto
- windowslive:
+ microsoft:
title: Log på med Windows Live
alt: Log på med en Windows Live-konto
github:
facebook:
title: Mit Facebook anmelden
alt: Mit einem Facebook-Konto anmelden
- windowslive:
+ microsoft:
title: Mit Microsoft anmelden
alt: Mit einem Microsoft-Konto anmelden
github:
user:
auth_provider: Πάροχος αυθεντικοποίησης
auth_uid: UID αυθεντικοποίησης
- email: Î\97λεκÏ\84Ï\81ονικÏ\8c Ï\84αÏ\87Ï\85δÏ\81ομείο
+ email: Î\94ιεÏ\8dθÏ\85νÏ\83η ηλεκÏ\84Ï\81ονικοÏ\8d Ï\84αÏ\87Ï\85δÏ\81ομείοÏ\85
email_confirmation: Επιβεβαίωση διεύθυνσης email
new_email: Νέα διεύθυνση email
active: Ενεργό
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Βικιπαίδεια
api:
zero: Χωρίς σχόλια
one: '%{count} σχόλιο'
other: '%{count} σχόλια'
+ no_comments: Κανένα σχόλιο
edit_link: Επεξεργασία καταχώρησης
hide_link: Απόκρυψη καταχώρησης
unhide_link: Επανεμφάνιση καταχώρησης
street_lamp: Λάμπα δρόμου
tertiary: Τριτεύων δρόμος
tertiary_link: Τριτεύων δρόμος
- track: ΧÏ\89μαÏ\84Ï\8cδÏ\81ομος
+ track: Î\91γÏ\81οÏ\84ικÏ\8cÏ\82 / Î\94αÏ\83ικÏ\8cÏ\82 δÏ\81Ï\8cμος
traffic_mirror: Καθρέφτης κυκλοφορίας
traffic_signals: Σήματα κυκλοφορίας
trailhead: Άκρη μονοπατιού
zero: Καμία αναφορά
one: 1 αναφορά
other: '%{count} αναφορές'
+ no_reports: Καμία αναφορά
report_created_at: Αναφέρθηκε για πρώτη φορά στις %{datetime}
last_resolved_at: Επιλύθηκε για τελευταία φορά στις %{datetime}
last_updated_at: Ενημερώθηκε για τελευταία φορά στις %{datetime} από τον %{displayname}
no home location: Δεν έχετε εισάγει την τοποθεσία του σπιτιού σας.
update home location on click: Ενημέρωση τοποθεσίας σπιτιού όταν κάνω κλικ στον
χάρτη;
+ show: Εμφάνιση
+ delete: Διαγραφή
+ undelete: Αναίρεση διαγραφής
update:
success: Το προφίλ ενημερώθηκε.
failure: Δεν μπόρεσε να ενημερωθεί το προφίλ.
facebook:
title: Σύνδεση με το Facebook
alt: Σύνδεση με έναν Λογαριασμό Facebook
- windowslive:
+ microsoft:
title: Σύνδεση μέσω της Microsoft
alt: Σύνδεση με ένα Λογαριασμό Microsoft
github:
community_driven_osm_foundation: Ίδρυμα OSM
open_data_title: Ανοικτά Δεδομένα
open_data_open_data: ανοιχτά δεδομένα
+ open_data_copyright_license: Σελίδα Πνευματικών Δικαιωμάτων και Άδειας Χρήσης
legal_title: Νομικό
legal_1_1_openstreetmap_foundation: Ίδρυμα OpenStreetMap
legal_1_1_terms_of_use: Όροι Χρήσης
legal_1_1_aup: Αποδεκτές Πολιτικές Χρήσης
legal_1_1_privacy_policy: Πολιτική Απορρήτου
legal_2_1_contact_the_osmf: επικοινωνήστε με το OSMF
+ legal_2_2_registered_trademarks: εγγεγραμμένα εμπορικά σήματα του OSMF
partners_title: Συνεργάτες
copyright:
foreign:
introduction_1_open_data: ανοιχτά δεδομένα
introduction_1_osm_foundation: Ίδρυμα OpenStreetMap
introduction_2_legal_code: νομικός κώδικας
+ introduction_3_creative_commons: Creative Commons Αναφορά Δημιουργού-Παρόμοια
+ Διανομή 2.0
credit_title_html: Πως να κάνετε αναφορά στο OpenStreetMap
credit_1_html: 'Όπου χρησιμοποιήσετε δεδομένα του OpenStreetMap, χρειάζεται
από σας να κάνετε τα παρακάτω πράγματα:'
+ credit_3_attribution_guidelines: Οδηγίες Αναφοράς
+ credit_4_1_this_copyright_page: αυτή τη σελίδα πνευματικών δικαιωμάτων
attribution_example:
alt: Παράδειγμα του πως αναφέρεται το OpenStreetMap σε μια ιστοσελίδα
title: Παράδειγμα αναφοράς δημιουργού
more_title_html: Μαθαίνοντας περισσότερα
+ more_1_1_osmf_licence_page: Σελίδα Άδειας Χρήσης OSMF
more_2_1_api_usage_policy: Πολιτική Χρήσης API
more_2_1_tile_usage_policy: Πολιτική Χρήσης Πλακιδίων
more_2_1_nominatim_usage_policy: Πολιτική Χρήσης Nominatim
έχουμε περιλάβει δεδομένα ανοικτής άδειας από εθνικές υπηρεσίες χαρτογράφησης
και άλλες πηγές, μεταξύ αυτών:'
contributors_at_austria: Αυστρία
+ contributors_at_stadt_wien: Stadt Wien
contributors_at_cc_by: CC BY
+ contributors_at_land_vorarlberg: Land Vorarlberg
+ contributors_at_cc_by_at_with_amendments: CC BY AT με τροποποιήσεις
contributors_au_australia: Αυστραλία
+ contributors_au_geoscape_australia: Geoscape Australia
contributors_ca_canada: Καναδάς
contributors_fi_finland: Φινλανδία
contributors_fi_nlsfi_license: Άδεια NLSFI
contributors_rs_serbia: Σερβία
contributors_rs_rgz: Σερβική Γεωδαιτική Αρχή
contributors_rs_open_data_portal: Εθνική Πύλη Ανοικτών Δεδομένων
+ contributors_si_credit_html: |-
+ %{slovenia}: Περιέχει δεδομένα από την %{gu_link} και το %{mkgp_link}
+ (δημόσιες πληροφορίες της Σλοβενίας).
contributors_si_slovenia: Σλοβενία
+ contributors_si_gu: Αρχή Χωρομέτρησης και Χαρτογράφησης
contributors_si_mkgp: Υπουργείο Γεωργίας, Δασών και Τροφίμων
contributors_es_spain: Ισπανία
contributors_es_ign: IGN
infringement_1_html: Υπενθυμίζουμε στους συνεισφέροντες του OSM να μην προσθέτουν
δεδομένα από πηγές με πνευματικά δικαιώματα (π.χ. Google Maps η έντυπους
χάρτες) χωρίς την προηγούμενη άδεια από τους ιδιοκτήτες των δικαιωμάτων.
+ trademarks_title: Εμπορικά σήματα
+ trademarks_1_1_trademark_policy: Πολιτική Εμπορικών Σημάτων
index:
js_1: Είτε χρησιμοποιείτε πρόγραμμα περιήγησης που δεν υποστηρίζει JavaScript
ή έχετε απενεργοποιήσει την JavaScript.
στην αποθήκευση και άλλοι χαρτογράφοι θα το ερευνήσουν.
other_concerns:
title: Άλλες ανησυχίες
+ copyright: σελίδα πνευματικών δικαιωμάτων
+ working_group: Ομάδα εργασίας OSMF
help:
title: Βοήθεια
introduction: Το OpenStreetMap έχει πολλαπλούς πόρους για να μάθετε για το εγχείρημα,
primary: Κύρια Οδός
secondary: Δευτερεύουσα Οδός
unclassified: Αταξινόμητη Οδός
- track: ΧÏ\89μαÏ\84Ï\8cδÏ\81ομος
+ track: Î\91γÏ\81οÏ\84ικÏ\8cÏ\82 / Î\94αÏ\83ικÏ\8cÏ\82 δÏ\81Ï\8cμος
bridleway: Μονοπάτι για Άλογα
cycleway: Ποδηλατόδρομος
cycleway_national: Εθνικός ποδηλατόδρομος
heading_html: Κατάλογος φραγών στον %{name}
empty: Ο %{name} δεν έχει φραχτεί ακόμα.
blocks_by:
- title: Φραγές από τον %{name}
- heading_html: Κατάλογος φραγών από τον %{name}
- empty: Ο %{name} δεν έχει κάνει φραγή ακόμα.
+ title: Φραγές από %{name}
+ heading_html: Κατάλογος φραγών από %{name}
+ empty: Ο/Η %{name} δεν έχει κάνει φραγή ακόμα.
show:
- title: Ο %{block_on} έχει φραχτεί από τον %{block_by}
- heading_html: Ο %{block_on} έχει φραχτεί από τον %{block_by}
+ title: Ο/Η %{block_on} έχει φραχτεί από τον/την %{block_by}
+ heading_html: Ο/Η %{block_on} έχει φραχτεί από τον/την %{block_by}
created: 'Δημιουργήθηκε:'
duration: 'Διάρκεια:'
status: 'Κατάσταση:'
facebook:
title: Login with Facebook
alt: Login with a Facebook Account
- windowslive:
+ microsoft:
title: Login with Windows Live
alt: Login with a Windows Live Account
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Vikipedio
api:
no home location: Vi ne enigis vian hejmlokon.
update home location on click: Ĉu freŝigi la hejmlokon kiam mi alklakas sur
la mapo?
+ show: Montri
+ delete: Forigi
+ undelete: Malforigi
update:
success: Aktualigis profilon.
failure: Ne povis aktualigi la profilon.
facebook:
title: Ensaluti per Fejsbuko
alt: Ensaluti per konto je Fejsbuko
- windowslive:
+ microsoft:
title: Ensaluti per Microsoft
alt: Ensaluti per konto Microsoft
github:
index:
title: Rimarkoj kreitaj aŭ komentitaj de %{user}
heading: Rimarkoj de %{user}
- subheading_html: Rimarkoj kreitaj aŭ komentitaj de %{user}
+ subheading_html: Rimarkoj %{submitted} aŭ %{commented} de %{user}
+ subheading_submitted: kreitaj
+ subheading_commented: komentitaj
no_notes: Neniu rimarko
id: Identigilo
creator: Aŭtoro
# Author: Nancystodd
# Author: Nelthal
# Author: Nemo bis
+# Author: No se
# Author: Nunte
# Author: Ovruni
# Author: Pantareje
openid: OpenID
google: Google
facebook: Facebook
- windowslive: Microsoft
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
login: Iniciar sesión
no_such_entry:
title: No existe esta entrada de diario
- heading: No hay ninguna entrada con el identificador %{id}
+ heading: No hay ninguna entrada con el identificador "%{id}"
body: No hay alguna entrada de diario o comentario con el identificador %{id}.
Revisa la ortografía, o tal vez el enlace en el que hiciste clic es incorrecto.
diary_entry:
facebook:
title: Iniciar sesión con Facebook
alt: Iniciar sesión con una cuenta de Facebook
- windowslive:
+ microsoft:
title: Iniciar sesión con Microsoft
alt: Iniciar sesión con una cuenta Microsoft
github:
facebook:
title: Logi sisse Facebooki kaudu
alt: Logi sisse Facebooki kontoga
- windowslive:
+ microsoft:
title: Logi sisse Windows Live'i kaudu
alt: Logi sisse Windows Live'i kontoga
github:
facebook:
title: Saioa hasi Facebookekin
alt: Saioa hasi Facebookekin
- windowslive:
+ microsoft:
title: Saioa hasi Windows Livekin
alt: Windows Live kontu batekin saioa hasi
github:
openid: OpenID
google: گوگل
facebook: فیسبوک
- windowslive: مایکروسافت
+ microsoft: مایکروسافت
github: گیتهاب
wikipedia: ویکیپدیا
api:
facebook:
title: ورود با فیسبوک
alt: ورود با حساب فیسبوک
- windowslive:
+ microsoft:
title: ورود با مایکروسافت
alt: ورود با حساب مایکروسافت
github:
financial: Rahoitusalan toimisto
government: Virasto
insurance: Vakuutusyhtiö
- it: IT toimisto
+ it: IT-toimisto
lawyer: Asianajotoimisto
logistics: Logistiikkatoimisto
newspaper: Sanomalehtitoimisto
home location: Kotipaikka
no home location: Kotipaikkaa ei ole vielä määritetty.
update home location on click: Päivitä kotipaikka karttaa napsauttaessa
+ show: Näytä
+ delete: Poista
+ undelete: Peruuta poistaminen
update:
success: Profiili päivitetty.
failure: Profiilia ei voitu päivittää.
facebook:
title: Kirjaudu Facebookin avulla
alt: Kirjaudu käyttämällä Facebook-tunnustasi
- windowslive:
+ microsoft:
title: Kirjaudu Microsoft-tilin avulla
alt: Kirjaudu sisään Microsoft-tililläsi
github:
index:
title: Käyttäjän %{user} kommentoimat ja luomat huomautukset
heading: Käyttäjän %{user} karttailmoitukset
- subheading_html: Käyttäjän %{user} kommentoimat ja luomat karttailmoitukset
+ subheading_html: Käyttäjän %{user} %{commented} ja %{submitted} karttailmoitukset
+ subheading_submitted: luomat
+ subheading_commented: kommentoimat
no_notes: Ei muistiinpanoja
id: Tunniste
creator: Tekijä
# Author: JenyxGym
# Author: Jiremek
# Author: Jlrb+
+# Author: Koreller
# Author: Linedwell
# Author: Litlok
# Author: Ljubinka
# Author: Ltrlg
# Author: Lucky
+# Author: Lulucmy
# Author: Macofe
# Author: Manaviko
# Author: Mathieu
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipédia
api:
notes:
comment:
- opened_at_html: Créé le %{when}
+ opened_at_html: Créé %{when}
opened_at_by_html: Créée %{when} par %{user}
commented_at_html: Mis à jour le %{when}
commented_at_by_html: Mis à jour le %{when} par %{user}
show:
title: Supprimer mon compte
warning: Avertissement ! Le processus de suppression de compte est définitif
- et ne pourra pas être annulé.
+ et ne peut pas être annulé.
delete_account: Supprimer un compte
delete_introduction: 'Vous pouvez supprimer votre compte OpenStreetMap en
utilisant le bouton ci-dessous. Veuillez prendre note des détails suivants :'
- delete_profile: Vos informations de profil, y compris votre avatar, votre
- description et votre emplacement de domicile seront retirés.
+ delete_profile: Les informations de votre profil, y compris votre avatar,
+ votre description et votre lieu de résidence seront supprimées.
delete_display_name: Votre nom affiché sera supprimé et pourra être réutilisé
pour d’autres comptes.
retain_caveats: 'Cependant, quelques informations vous concernant seront conservées
external auth: Authentification externe
openid:
link: https://wiki.openstreetmap.org/wiki/FR:OpenID
- link text: qu’est-ce que ceci ?
+ link text: qu’est-ce que cela ?
public editing:
heading: Modification publique
enabled: Activée. Non anonyme et peut modifier les données.
link: https://wiki.osmfoundation.org/wiki/Licence/Contributor_Terms/FR
link text: qu’est-ce que ceci ?
save changes button: Enregistrer les modifications
- delete_account: Suppression du compte...
+ delete_account: Supprimer le compte...
go_public:
heading: Modification publique
currently_not_public: Actuellement, vos modifications sont anonymes et les utilisateurs
facebook:
title: Connexion avec Facebook
alt: Se connecter avec un compte de Facebook
- windowslive:
+ microsoft:
title: Connexion avec Microsoft
alt: Se connecter avec un compte Microsoft
github:
index:
title: Notes soumises ou commentées par « %{user} »
heading: Notes de « %{user} »
- subheading_html: Notes soumises ou commentées par « %{user} »
+ subheading_html: Notes %{submitted} ou %{commented} par %{user}
+ subheading_submitted: soumis
+ subheading_commented: commenté
no_notes: Aucune note
id: Identifiant
creator: Créateur
facebook:
title: Jentre cun Facebook
alt: Jentre cuntun un cont Facebook
- windowslive:
+ microsoft:
title: Jentre cun Windows Live
alt: Jentre cuntun cont di Windows Live
github:
facebook:
title: Oanmelde mei Facebook
alt: Meld jo oan mei in Facebook-akkount
- windowslive:
+ microsoft:
title: Oanmelde mei Windows Live
alt: Meld jo oan mei in Windows Live-akkount
github:
facebook:
title: Logáil isteach le Facebook
alt: Logáil isteach le Cuntas Facebook
- windowslive:
+ microsoft:
title: Logáil isteach le Windows Live
alt: Logáil isteach le Cuntas Windows Live
github:
facebook:
title: Clàraich a-steach le Facebook
alt: Clàraich a-steach le cunntas Facebook
- windowslive:
+ microsoft:
title: Clàraich a-steach le Windows Live
alt: Clàraich a-steach le cunntas Windows Live
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
no home location: Non inseriches o teu lugar de orixe.
update home location on click: Desexas actualizar a túa localización ó premer
sobre o mapa?
+ show: Amosar
+ delete: Borrar
+ undelete: Desfacer o borrado
update:
success: Perfil actualizado.
failure: Non foi posíbel actualizar o perfil.
facebook:
title: Iniciar a sesión co Facebook
alt: Iniciar a sesión cunha conta do Facebook
- windowslive:
+ microsoft:
title: Iniciar a sesión con Microsoft
alt: Iniciar a sesión cunha conta de Microsoft
github:
index:
title: Notas enviadas ou comentadas por %{user}
heading: Notas de %{user}
- subheading_html: Notas enviadas ou comentadas por %{user}
+ subheading_html: Notas %{submitted} ou %{commented} por %{user}
+ subheading_submitted: enviadas
+ subheading_commented: comentadas
no_notes: Sen notas
id: ID
creator: Creador
prompt: בחירת קובץ
submit:
diary_comment:
- create: הערה
+ create: פרס×\95×\9d ×\94ער×\94
diary_entry:
create: פרסום
update: עדכון
language: שפה
message: הודעה
node: נקודה
- node_tag: ת×\92 צ×\95×\9eת
- old_node: צ×\95×\9eת ×\99ש×\9f
+ node_tag: ת×\92 × ×§×\95×\93×\94
+ old_node: × ×§×\95×\93×\94 ×\99×©× ×\94
old_node_tag: תג צומת ישן
old_relation: יחס ישן
old_relation_member: איבר יחס ישן
attributes:
client_application:
name: שם (נדרש)
- url: כתובת יישום ראשית (נדרש)
+ url: כתובת יישום ראשית (נדרשת)
callback_url: כתובת קריאה חוזרת (callback)
support_url: כתובת לתמיכה
allow_read_prefs: לקרוא את העדפות המשתמש שלהם
openid: OpenID
google: גוגל
facebook: פייסבוק
- windowslive: מיקרוסופט
+ microsoft: מיקרוסופט
github: גיטהאב
wikipedia: ויקיפדיה
api:
facebook:
title: כניסה עם פייסבוק
alt: כניסה עם חשבון פייסבוק
- windowslive:
+ microsoft:
title: כניסה עם מיקרוסופט
alt: כניסה עם חשבון מיקרוסופט
github:
index:
title: הערות ותגובות של %{user}
heading: הערות של %{user}
- subheading_html: הערות ותגובות של %{user}
+ subheading_html: הערות ש%{submitted} על־ידי %{user} או %{commented} מאת %{user}
+ subheading_submitted: שנשלחו
+ subheading_commented: קיבלו תגובות
no_notes: אין הערות
id: מזהה
creator: יוצר
openid: OpenID
google: गूगल
facebook: फेसबुक
- windowslive: विन्डोज़ लाइव
+ microsoft: विन्डोज़ लाइव
github: गिट्हब
wikipedia: विकिपीडिया
api:
delete image: इस तस्वीर को हटाएं
replace image: इस तस्वीर की जगह दूसरी लगाएं
home location: घर का स्थान
+ show: दिखाएँ
+ delete: हटाएँ
site:
about:
legal_1_1_terms_of_use: उपयोग की शर्तें
facebook:
title: Prijavi se sa Facebook-om
alt: Prijavi se sa računom Facebook-a
- windowslive:
+ microsoft:
title: Prijavi se sa Windows Live-om
alt: Prijavi se sa računom Windows Live-a
github:
facebook:
title: Přizjewjenje z Facebook
alt: Přizjewjenje z facebookowym kontom
- windowslive:
+ microsoft:
title: Přizjewjenje z Windows Live
alt: Přizjewjenje z kontom Windows Live
github:
# Author: Tacsipacsi
# Author: Uno20001
# Author: Urbalazs
+# Author: Zalán Hári
# Author: Zizzerus
---
hu:
facebook:
title: Bejelentkezés Facebook-kal
alt: Bejelentkezés Facebook fiókkal
- windowslive:
+ microsoft:
title: Bejelentkezés Microsofttal.
alt: Bejelentkezés Microsoft fiókkal
github:
szerzői jogi vagy egyéb jogi kérdései vannak.
legal_2_1_contact_the_osmf: lépj kapcsolatba az OSM Alapítvánnyal
legal_2_2_html: Az OpenStreetMap, a nagyító logó és a State of the Map %{registered_trademarks_link}.
- legal_2_2_registered_trademarks: az OSMF bejegyzett védjegye
+ legal_2_2_registered_trademarks: az OSMF bejegyzett védjegyei
partners_title: Partnerek
copyright:
foreign:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
facebook:
title: Aperir session con Facebook
alt: Aperir session con un conto de Facebook
- windowslive:
+ microsoft:
title: Aperir session con Microsoft
alt: Aperir session con un conto Microsoft
github:
index:
title: Notas submittite o commentate per %{user}
heading: Notas de %{user}
- subheading_html: Notas submittite o commentate per %{user}
+ subheading_html: Notas %{submitted} o %{commented} per %{user}
+ subheading_submitted: submittite
+ subheading_commented: commentate
no_notes: Sin notas
id: ID
creator: Creator
facebook:
title: Masuk dengan Facebook
alt: Masuk dengan akun Facebook
- windowslive:
+ microsoft:
title: Masuk dengan Windows Live
alt: Masuk dengan akun Windows Live
github:
home location: Upphafsstaðsetning
no home location: Þú hefur ekki stillt staðsetningu þína.
update home location on click: Uppfæra staðsetninguna þegar ég smelli á kortið
+ show: Birta
+ delete: Eyða
+ undelete: Afturkalla eyðingu
update:
success: Notandasíða uppfært.
failure: Gat ekki uppfært kjörstillingar.
facebook:
title: Skrá inn með Facebook
alt: Skrá inn með Facebook-aðgangi
- windowslive:
+ microsoft:
title: Skrá inn með Microsoft
alt: Skrá inn með Microsoft-aðgangi
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
update home location on click: Aggiorna la posizione quando clicco sulla mappa?
show: Mostra
delete: Cancella
+ undelete: Annulla eliminazione
update:
success: Il profilo è stato aggiornato.
failure: Impossibile aggiornare il profilo.
facebook:
title: Accedi con Facebook
alt: Accedi con un account Facebook
- windowslive:
+ microsoft:
title: Accedi con Microsoft
alt: Accedi con un account Microsoft
github:
index:
title: Note inserite o commentate da %{user}
heading: Note dell'utente %{user}
- subheading_html: Note inserite o commentate da %{user}
+ subheading_html: Note %{submitted} o %{commented} da %{user}
+ subheading_submitted: inviate
+ subheading_commented: commentate
no_notes: Nessuna nota
id: Identificativo
creator: Autore
openid: OpenID
google: Google
facebook: Facebook
- windowslive: マイクロソフト
+ microsoft: マイクロソフト
github: GitHub
wikipedia: ウィキペディア
api:
browse:
created: 作成
closed: クローズ
- created_ago_html: '%{time_ago} に作成されました'
+ created_ago_html: '%{time_ago} に作成'
closed_ago_html: '%{time_ago}に閉じられました'
- created_ago_by_html: '%{user}ã\81«ã\82\88ã\81£ã\81¦%{time_ago}ã\81«ä½\9cæ\88\90ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9f'
- closed_ago_by_html: '%{time_ago}に%{user}によって閉じられました'
- deleted_ago_by_html: '%{time_ago}に%{user}によって削除されました'
- edited_ago_by_html: '%{time_ago}に%{user}によって編集されました'
+ created_ago_by_html: '%{user}ã\81\8c%{time_ago}ã\81«ä½\9cæ\88\90'
+ closed_ago_by_html: '%{user}が%{time_ago}に閉じました'
+ deleted_ago_by_html: '%{user}が%{time_ago}に削除'
+ edited_ago_by_html: '%{user}が%{time_ago}に編集'
version: バージョン
in_changeset: 変更セット
anonymous: 匿名
facebook:
title: Facebookでログイン
alt: Facebook アカウントを使用してログイン
- windowslive:
+ microsoft:
title: Microsoftでログイン
alt: Microsoftアカウントでログイン
github:
facebook:
title: Qqen s Facebook
alt: Qqen s umidan Facebook
- windowslive:
+ microsoft:
title: Qqen s Windows Live
alt: Qqen s umiḍan Windows Live
github:
title: កត់ឈ្មោះចូលដោយប្រើ Google
facebook:
title: កត់ឈ្មោះចូលដោយប្រើ Facebook
- windowslive:
+ microsoft:
title: កត់ឈ្មោះចូលដោយប្រើ Windows Live
github:
title: កត់ឈ្មោះចូលដោយប្រើ GitHub
none: ಯಾವುದೂ ಇಲ್ಲ
google: ಗೂಗಲ್
facebook: ಫೇಸ್ಬುಕ್
- windowslive: ವಿಂಡೋಸ್ ಲೈವ್
+ microsoft: ವಿಂಡೋಸ್ ಲೈವ್
github: ಗಿಟ್ಹಬ್
wikipedia: ವಿಕಿಪೀಡಿಯ
api:
facebook:
title: 페이스북으로 로그인
alt: 페이스북 계정으로 로그인하기
- windowslive:
+ microsoft:
title: 윈도 라이브로 로그인하기
alt: 윈도 라이브 계정으로 로그인하기
github:
facebook:
title: Donn övver ene Zohjang op Facebook ennlogge
alt: Donn övver ene Zohjang op Facebook ennlogge
- windowslive:
+ microsoft:
title: Donn medd enem Zohjang op Windows Live ennlogge
alt: Donn medd enem Zohjang op Windows Live ennlogge
github:
facebook:
title: Bi Facebookê têkeve
alt: Bi hesabekî Facebookê têkeve
- windowslive:
+ microsoft:
title: Bi Windows Live'ê têkeve
alt: Bi hesabê xwe yê Windows Liveê têkeve
github:
facebook:
title: Mat Facebook aloggen
alt: Mat engem Facebook Benotzerkont aloggen
- windowslive:
+ microsoft:
title: Mat Microsoft aloggen
alt: Mat engem Microsoft-Benotzerkont aloggen
github:
home location: Pradinė lokacija
no home location: Jūs neįvedėte savo namų pozicijos
update home location on click: Atnaujinti namų poziciją paspaudus ant žemėlapio?
+ show: Rodyti
+ delete: Trinti
+ undelete: Anuliuoti trynimą
update:
success: Profilis atnaujintas.
failure: Nepavyko atnaujinti profilio.
facebook:
title: Prisijungti su Facebook
alt: Prisijungti su Facebook paskyra
- windowslive:
+ microsoft:
title: Prisijungti su Windows Live
alt: Prisijungti su Windows Live paskyra
github:
facebook:
title: Pieslēgties ar Facebook
alt: Pieslēgties ar Facebook kontu
- windowslive:
+ microsoft:
title: Pieslēgties ar Microsoft
alt: Pieslēgties ar Microsoft kontu
github:
facebook:
title: Најава со Фејсбук
alt: Најава со профил на Фејсбук
- windowslive:
+ microsoft:
title: Најава со Microsoft
alt: Најава со сметка на Microsoft
github:
facebook:
title: Ынтраря ку ажуторул Facebook
alt: Ынтраря ку ажуторул контулуй де Facebook
- windowslive:
+ microsoft:
title: Ынтраря ку ажуторул Windows Live
alt: Ынтраря ку ажуторул контулуй де Windows Live
github:
facebook:
title: Log masuk dengan Facebook
alt: Log masuk dengan Akuan Facebook
- windowslive:
+ microsoft:
title: Log masuk dengan Window Live
alt: Log masuk dengan Akaun Windows Live
github:
facebook:
title: Logg inn med Facebook
alt: Logg inn med en Facebook-konto
- windowslive:
+ microsoft:
title: Logg inn med Microsoft
alt: Logg inn med en Microsoft-konto
github:
facebook:
title: Aanmelden met Facebook
alt: Aanmelden met een Facebookaccount
- windowslive:
+ microsoft:
title: Aanmelden met Microsoft
alt: Aanmelden met een Microsoft-account
github:
facebook:
title: Logg inn med Facebook
alt: Logg inn med ein Facebook-konto
- windowslive:
+ microsoft:
title: Logg inn med Windows Live
alt: Logg inn med ein Windows Live-konto
github:
openid: ߏߔߌ߲ ID
google: ߜ߭ߎߜ߭ߏߟ
facebook: ߝߋߛߑߓߎߞ
- windowslive: ߡߌߞߙߏߛߐߝߕ
+ microsoft: ߡߌߞߙߏߛߐߝߕ
github: GitHub
wikipedia: ߥߞߌߔߋߘߌߦߊ
api:
facebook:
title: ߌ ߜߊ߲߬ߞߎ߲߫ ߝߋߛߑߓߎߞ ߟߊ߫
alt: ߌ ߜߊ߲߬ߞߎ߲߫ ߝߋߛߑߓߎߞ ߖߊ߬ߕߋ߬ߘߊ ߘߏ߫ ߟߊ߫
- windowslive:
+ microsoft:
title: ߌ ߜ߭ߊ߲߬ߞߎ߲߫ ߥߌ߲ߘߏߥߛ ߟߊߌߝ߭ ߟߊ߫
alt: ߌ ߜߊ߲߬ߞߎ߲߫ ߥߌ߲ߘߏߥߛ ߟߊߌߝ߭ ߖߊ߬ߕߋ߬ߘߊ ߟߊ߫
github:
facebook:
title: Se connectar amb Facebook
alt: Se connectar amb un commpte Facebook
- windowslive:
+ microsoft:
title: Se connectar amb Windows Live
alt: Se connectar amb un compte Windows Live
github:
none: ਕੋਈ ਨਹੀਂ
google: ਗੂਗਲ
facebook: ਫੇਸਬੁੱਕ
- windowslive: ਵਿੰਡੋਜ਼ ਲਾਈਵ
+ microsoft: ਵਿੰਡੋਜ਼ ਲਾਈਵ
github: ਗਿੱਟਹੱਬ
wikipedia: ਵਿਕੀਪੀਡੀਆ
api:
facebook:
title: Zaloguj się przez Facebooka
alt: Zaloguj się przez konto Facebook
- windowslive:
+ microsoft:
title: Zaloguj się przez Microsoft
alt: Zaloguj się kontem Microsoft
github:
openid: اوپن آئی ڈی
google: گوگل
facebook: فیسبوک
- windowslive: وِنڈوز لائیو
+ microsoft: وِنڈوز لائیو
github: گِٹ ہب
wikipedia: وِکیپیدیا
api:
facebook:
title: فیسبوک نال لوگاین کرو
alt: فیسبوک ورتو
- windowslive:
+ microsoft:
title: وینڈوز لائیو نال لوگاین کرو
alt: وینڈوز لائیو ورتو
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipédia
api:
history_title_html: 'Histórico da Linha: %{name}'
nodes: Nós
nodes_count:
- one: 1 nó
+ one: '%{count} nó'
other: '%{count} nós'
also_part_of_html:
one: parte da linha %{related_ways}
reply_link: Enviar mensagem ao autor
comment_count:
one: '%{count} comentário'
- zero: Sem comentários
other: '%{count} comentários'
+ no_comments: Sem comentários
edit_link: Editar
hide_link: Ocultar
unhide_link: Mostrar
stable: Estábulo
static_caravan: Caravana
temple: Edíficio de templo
- terrace: Edifício terraçado
+ terrace: Edifício geminado
train_station: Edifício de estação dos comboios
university: Edifício universitário
warehouse: Armazém
"yes": Desfiladeiro
natural:
atoll: Atol
- bare_rock: Rocha visível
+ bare_rock: Rocha exposta
bay: Baía
beach: Praia
cape: Cabo
cave_entrance: Entrada de gruta
cliff: Precipício
- coastline: Litoral
+ coastline: Linha costeira
crater: Cratera
dune: Duna
fell: Encosta desflorestada
show:
title: '%{status} Denúncia #%{issue_id}'
reports:
- zero: Sem denúncias
- one: 1 denúncia
+ one: '%{count} denúncia'
other: '%{count} denúncias'
+ no_reports: Sem denúncias
report_created_at: Denunciado pela primeira vez em %{datetime}
last_resolved_at: Resolvido pela última vez em %{datetime}
last_updated_at: Atualizado pela última vez em %{datetime} por %{displayname}
home location: Localização principal
no home location: Não definiste a tua localização principal.
update home location on click: Atualizar a localização ao clicar no mapa?
+ show: Mostrar
+ delete: Eliminar
+ undelete: Desfazer eliminação
update:
success: Perfil atualizado.
failure: Não foi possível atualizar o perfil.
facebook:
title: Iniciar sessão com o Facebook
alt: Iniciar sessão com uma conta do Facebook
- windowslive:
+ microsoft:
title: Iniciar sessão com Microsoft
alt: Iniciar sessão com uma conta Microsoft
github:
index:
title: Notas submetidas ou comentadas por %{user}
heading: Notas de %{user}
- subheading_html: Notas submetidas ou comentadas por %{user}
+ subheading_html: Notas %{submitted} ou %{commented} por %{user}
+ subheading_submitted: enviada
+ subheading_commented: comentada em
no_notes: Sem notas
id: Id
creator: Criador
anonymous_warning: Esta nota inclui comentários de utilizadores anónimos que
devem ser confirmados por fonte independente.
hide: Esconder
- resolve: Marcar como resolvido
+ resolve: Marcar como resolvida
reactivate: Reabrir
comment_and_resolve: Comentar e resolver
comment: Comentar
facebook:
title: Entrar com o Facebook
alt: Entrar com uma conta do Facebook
- windowslive:
+ microsoft:
title: Entrar com o Windows Live
alt: Entrar com uma conta do Windows Live
github:
few: aproximativ %{count} ore în urmă}}
other: …}}
about_x_months:
- one: aproximativ 1 lună în urmă
- other: aproximativ %{count} luni în urmă
+ one: aproximativ o lună în urmă
+ few: aproximativ %{count} luni în urmă
+ other: aproximativ %{count} de luni în urmă
about_x_years:
- one: aproximativ 1 an în urmă
- other: aproximativ %{count} ani în urmă
+ one: aproximativ un an în urmă
+ few: aproximativ %{count} ani în urmă
+ other: aproximativ %{count} de ani în urmă
almost_x_years:
- one: aproape 1 an în urmă
- few: acum câțiva ani
- other: aproape %{count} ani în urmă
+ one: aproape un an în urmă
+ few: aproape %{count} ani în urmă
+ other: aproape %{count} de ani în urmă
half_a_minute: o jumătate de minut în urmă
less_than_x_seconds:
- one: mai puțin de 1 secundă în urmă
- other: aproximativ acum %{count} luni în urmă
+ one: mai puțin de o secundă în urmă
+ few: mai puțin de %{count} secunde în urmă
+ other: mai puțin de %{count} de secunde în urmă
less_than_x_minutes:
one: mai puțin de un minut în urmă
- other: mai puțin de %{count} minute în urmă
+ few: mai puțin de %{count} minute în urmă
+ other: mai puțin de %{count} de minute în urmă
over_x_years:
- one: acum peste 1 an
- other: peste %{count} ani în urmă
+ one: mai mult de un an în urmă
+ few: mai mult de %{count} ani în urmă
+ other: mai mult de %{count} de ani în urmă
x_seconds:
- one: acum 1 secundă
- other: cu %{count} secunde în urmă
+ one: acum o secundă
+ few: cu %{count} secunde în urmă
+ other: cu %{count} de secunde în urmă
x_minutes:
- one: acum 1 minut
- other: cu %{count} minute în urmă
+ one: acum un minut
+ few: cu %{count} minute în urmă
+ other: cu %{count} de minute în urmă
x_days:
- one: acum 1 zi
- other: cu %{count} zile în urmă
+ one: acum o zi
+ few: cu %{count} zile în urmă
+ other: cu %{count} de zile în urmă
x_months:
- one: acum 1 lună
- other: cu %{count} luni în urmă
+ one: acum o lună
+ few: cu %{count} luni în urmă
+ other: cu %{count} de luni în urmă
x_years:
- one: acum 1 an
- other: cu %{count} ani în urmă
+ one: acum un an
+ few: cu %{count} ani în urmă
+ other: cu %{count} de ani în urmă
editor:
default: Implicit (în prezent %{name})
id:
openid: OpenID
google: OpenID
facebook: OpenID
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
de alte conturi.
retain_caveats: 'Cu toate acestea, unele informații despre dvs. vor fi păstrate
pe OpenStreetMap, chiar și după ștergerea contului:'
+ retain_edits: Editările dvs. la baza de date a hărții, dacă există, vor fi
+ păstrate.
+ retain_traces: Înregistrările încărcate, dacă există, vor fi păstrate.
+ retain_diary_entries: Înregistrările și comentariile din jurnal, dacă există,
+ vor fi păstrate, dar ascunse.
+ retain_notes: Notele dvs. de hartă și comentariile notelor, dacă există, vor
+ fi reținute, dar ascunse pentru vedere.
+ retain_changeset_discussions: Discuțiile dvs. privind setul de modificări,
+ dacă există, vor fi păstrate.
retain_email: Adresa dvs. de e-mail va fi păstrată.
confirm_delete: Sunteți sigur(ă)?
cancel: Anulează
relation: Comunicații (%{count})
relation_paginated: Comunicații (%{x}-%{y} din %{count})
comment: Comentarii (%{count})
+ hidden_comment_by_html: Comentariu ascuns de la %{user} %{time_ago}
+ comment_by_html: Comentariu de la %{user} %{time_ago}
changesetxml: Set de modificări XML
osmchangexml: XML osmChange
feed:
history_title_html: 'Istoricul căii: %{name}'
nodes: Noduri
nodes_count:
- one: 1 nod
+ one: un nod
few: '%{count} noduri'
- other: ""
+ other: '%{count} de noduri'
also_part_of_html:
one: parte a liniei de %{related_ways}
other: parte din liniile de %{related_ways}
history_title_html: 'Istoricul relației: %{name}'
members: Membri
members_count:
- one: 1 membru
+ one: un membru
few: '%{count} membri'
- other: ""
+ other: '%{count} de membri'
relation_member:
entry_role_html: '%{type} %{name} ca %{role}'
type:
friend: Prieten
show:
title: Dashboardul meu
+ no_home_location_html: '%{edit_profile_link} și setați locația de acasă pentru
+ a vedea utilizatorii din apropiere.'
edit_your_profile: Editați-vă profilul
my friends: Prietenii mei
no friends: Nu ați adăugat încă niciun prieten.
comment_link: Comentează la această înregistrare
reply_link: Trimite un mesaj autorului
comment_count:
- zero: Niciun comentariu
- one: '%{count} comentariu'
- other: '%{count} comentarii'
+ one: Un comentariu
+ few: '%{count} comentarii'
+ other: '%{count} de comentarii'
no_comments: Fără comentarii
edit_link: Editează această înregistrare
hide_link: Ascunde această înregistrare
title: Înregistrări în jurnalul OpenStreetMap
description: Înregistrări recente în jurnale de la utilizatorii OpenStreetMap
comments:
+ title: Comentarii din jurnal adăugate de %{user}
+ heading: Comentariile la jurnal a lui %{user}
+ subheading_html: Comentarii din jurnal adăugate de %{user}
no_comments: Fără comentarii din jurnal
post: Postează
when: Când
create:
notice: Aplicație înregistrată.
errors:
+ contact:
+ contact_url_title: Diferite metode de contact explicate
+ contact: contact
+ contact_the_community_html: Simțiți-vă liber să %{contact_link} comunitatea
+ OpenStreetMap dacă ați găsit un link invalid/o eroare. Notați adresa URL exactă
+ a solicitării dvs.
forbidden:
title: Interzis
+ description: Operația pe care ați solicitat-o pe serverul OpenStreetMap este
+ disponibilă numai pentru administratori (HTTP 403)
internal_server_error:
title: Eroare aplicație
description: Serverul OpenStreetMap a întâlnit o condiție neașteptată care l-a
no home location: Nu ați introdus locația dvs. de domiciliu.
update home location on click: Actualizați locația locuinței dvs. când faceți
click pe hartă?
+ show: Arată
+ delete: Șterge
+ undelete: Anulează ștergerea
update:
success: Profil actualizat.
failure: Nu s-a putut actualiza profilul.
facebook:
title: Autentificare cu Facebook
alt: Conectați-vă cu un cont Facebook
- windowslive:
+ microsoft:
title: Conectare cu Microsoft
alt: Conectare cu un Cont Microsoft
github:
%{france}: Conține date provenite din
Direction Générale des Impôts.
contributors_fr_france: Franța
+ contributors_nl_credit_html: '%{netherlands}: Conține © AND data, 2007
+ (%{and_link})'
+ contributors_nl_netherlands: Țările de Jos
+ contributors_nz_credit_html: |-
+ %{new_zealand}: Conține date provenite din %{linz_data_service_link}
+ și licențiate pentru reutilizare sub %{cc_by_link}.
contributors_nz_new_zealand: Noua Zeelandă
contributors_nz_linz_data_service: Serviciul de date LINZ
contributors_nz_cc_by: CC BY 4.0
removed: Editorul dvs. implicit OpenStreetMap este setat ca Potlatch. Deoarece
Adobe Flash Player a fost retras, Potlatch nu mai este disponibil pentru utilizare
într-un browser web.
+ desktop_application_html: Puteți utiliza în continuare Potlatch %{download_link}.
+ download: descărcând aplicația desktop pentru Mac și Windows
+ id_editor_html: Alternativ, puteți seta editorul implicit la iD, care rulează
+ în browserul dvs. web așa cum a făcut anterior Potlatch. %{change_preferences_link}.
+ change_preferences: Schimbați-vă preferințele aici
any_questions:
title: Întrebări?
+ paragraph_1_html: |-
+ OpenStreetMap vă pune la dispoziție resurse pentru a afla despre proiect, pentru a pune și a răspunde la
+ întrebări și pentru a discuta și a documenta colaborativ despre cartografiere.
+ %{help_link}. Ești o organizație care are planuri pentru OpenStreetMap? %{welcome_mat_link}.
+ get_help_here: Obțineți ajutor aici
+ welcome_mat: Consultați Pagina de Bun Venit
sidebar:
search_results: Rezultatele căutării
close: Închide
common:
- Comun
- luncă
+ - grădină
retail: Spațiul de retail
industrial: Zonă industrială
commercial: Zonă comercială
lucruri pe care trebuie să le cunoașteți.
whats_on_the_map:
title: Ce este pe Hartă
+ on_the_map_html: |-
+ OpenStreetMap este un loc pentru cartografierea lucrurilor care sunt %{real_and_current} -
+ include milioane de clădiri, drumuri și alte detalii despre locații. Puteți pune pe hartă orice caracteristici ale limii reale de care sunteți interesați.
+ real_and_current: reale și curente
+ off_the_map_html: Ce %{doesnt} include sunt date subiective cum ar fi recenzii,
+ date istorice sau ipotetice și date provenite din surse protejate prin drepturi
+ de autor. Dacă nu aveți permisiune, nu copiați de pe hărți online sau hărți
+ clasice.
+ doesnt: nu
basic_terms:
title: Termeni de bază pentru cartografiere
paragraph_1: OpenStreetMap are propriul jargon. Iată câteva cuvinte cheie
care vă vor veni în ajutor.
+ an_editor_html: Un %{editor} este un program sau un website pe care îl puteți
+ utiliza pentru a edita harta.
+ a_node_html: Un %{node} este un punct de pe hartă, de exemplu un singur restaurant
+ sau copac.
+ a_way_html: O %{way} este o linie sau o zonă, cum ar fi un drum, un curs de
+ apă, un lac sau o clădire.
+ a_tag_html: O %{tag} este un atribut al unui nod sau a unei căi, de exemplu
+ numele restaurantului sau limita de viteză a unui drum.
+ editor: editor
+ node: nod
+ way: cale
+ tag: etichetă
rules:
title: Reguli!
+ para_1_html: |-
+ OpenStreetMap are puține reguli formale, dar ne așteptăm ca toți participanții să colaboreze și să comunice cu comunitatea. Dacă vă gândiți la
+ orice activități, altele decât editarea manuală, vă rugăm să citiți și să urmați instrucțiunile de pe
+ %{imports_link} și %{automated_edits_link}.
+ imports: Importurile
+ automated_edits: Editări automate
start_mapping: Începeți să cartografiați
add_a_note:
title: Nu aveți timp pentru editare? Adaugați o notă!
para_1: |-
Dacă doriți doar ceva îndreptați o eroare minoră și nu aveți timp să vă înscrieți și să învățați cum să editați, este
ușor să adăugați o notă.
+ para_2_html: |-
+ Accesați %{map_link} și faceți clic pe pictograma notă: %{note_icon}.
+ Acest lucru va adăuga un marcator pe hartă, pe care îl puteți muta prin glisare.
+ Adăugați mesajul dvs., apoi faceți clic pe Salvare și alți cartografi vor investiga.
+ the_map: harta
+ communities:
+ title: Comunitățile
+ lede_text: "Oameni din întreaga lume contribuie sau folosesc OpenStreetMap.\nÎn
+ timp ce mulți participă ca indivizi, alții au format comunități.\nAceste grupuri
+ au o gamă largă de dimensiuni și reprezintă zone geografice de la orașe mici
+ până la regiuni mari cu mai multe țări. \nDe asemenea, pot fi formale sau
+ informale."
+ local_chapters:
+ title: Capitolele locale
+ about_text: |-
+ Capitolele locale sunt grupuri la nivel de țară sau la nivel de regiune care au făcut pasul oficial de
+ înființarea de entități juridice non-profit. Ele reprezintă harta și cartografii zonei atunci când au de-a face cu administrația locală, firme și mass-media. Ei și-au format, de asemenea, o afiliere
+ cu Fundația OpenStreetMap (OSMF), oferindu-le o legăturăa către organismul de conducere legal și de drepturi de autor.
+ list_text: 'Următoarele comunități sunt înființate oficial drept capitole
+ locale:'
+ other_groups:
+ title: Alte Grupuri
+ other_groups_html: |-
+ Nu este nevoie să se înființeze în mod oficial un grup în aceeași măsură ca și Capitolele locale.
+ Într-adevăr, multe grupuri există cu mare succes ca o adunare informală de oameni sau ca un grup comunitar. Oricine le poate configura sau se poate alătura. Citiți mai multe pe %{communities_wiki_link}.
+ communities_wiki: Pagina wiki comunități
traces:
visibility:
private: Privat (partajat ca puncte anonime, neordonate)
trace:
pending: ÎN AȘTEPTARE
count_points:
- one: 1 punct
+ one: un punct
few: '%{count} puncte'
- other: ""
+ other: '%{count} de puncte'
more: mai multe
trace_details: Vezi detaliile urmei
view_map: Vezi hartă
in: în
index:
public_traces: Trasee GPS publice
+ my_gps_traces: Track-uri GPS
public_traces_from: Traseele GPS publice de la %{user}
description: Căutați încărcări recente din traseul GPS
tagged_with: etichetat cu %{tags}
+ empty_title: Nimic aici încă
+ empty_upload_html: '%{upload_link} sau aflați mai multe despre înregistrările
+ GPS pe %{wiki_link}.'
+ upload_new: Încărcați un track nou
+ wiki_page: pagina wiki
upload_trace: Încărcați urma
+ all_traces: Toate track-urile
my_traces: Înregistrările mele GPS
+ traces_from: Traseele GPS publice de la %{user}
+ remove_tag_filter: Eliminați filtrul de etichete
destroy:
scheduled_for_deletion: Traseul este programat pentru ștergere
make_public:
de acord, dar trebuie să le vizualizați.
settings_menu:
account_settings: Setările contului
+ oauth1_settings: Setări OAuth 1
+ oauth2_applications: Aplicații OAuth 2
+ oauth2_authorizations: Autorizări OAuth 2
oauth:
authorize:
title: Autorizați accesul la contul dvs.
flash: Ați revocat tokenul pentru %{application}
permissions:
missing: Nu ați permis accesul aplicației la această facilitate
+ scopes:
+ read_prefs: Citiți preferințele utilizatorului
+ write_prefs: Modificați preferințele utilizatorului
+ write_diary: Creează înregistrări în jurnal, comentarii și fă-ți prieteni
+ write_api: Modificați harta
+ read_gpx: Citiți track-urile GPS private
+ write_gpx: Încărcați track-uri GPS
+ write_notes: Modificați notele
+ read_email: Citiți adresa de e-mail a utilizatorului
+ skip_authorization: Aprobare automată a cererii
oauth_clients:
new:
title: Înregistrare aplicație nouă
flash: Actualizarea informațiilor despre client cu succes
destroy:
flash: A distrus înregistrarea aplicației clientului
+ oauth2_applications:
+ index:
+ title: Aplicațiile mele client
+ no_applications_html: Aveți o aplicație pe care doriți să o înregistrați pentru
+ a fi utilizată la noi folosind standardul %{oauth2}? Trebuie să vă înregistrați
+ aplicația înainte ca aceasta să poată face solicitări OAuth către acest serviciu.
+ new: Înregistrați o nouă aplicație
+ name: Nume
+ permissions: Permisiuni
+ application:
+ edit: Editați
+ delete: Șterge
+ confirm_delete: Ștergeți această aplicație?
+ new:
+ title: Înregistrați o nouă aplicație
+ edit:
+ title: Editați-vă aplicația
+ show:
+ edit: Editați
+ delete: Șterge
+ confirm_delete: Ștergeți această aplicație?
+ client_id: ID client
+ client_secret: Secretul clientului
+ client_secret_warning: Asigurați-vă că salvați acest secret - nu va fi accesibil
+ din nou
+ permissions: Permisiuni
+ redirect_uris: Redirecționați URI-uri
+ not_found:
+ sorry: Ne pare rău, acea aplicație nu a putut fi găsită.
oauth2_authorizations:
new:
+ title: Este necesară autorizarea
+ introduction: Autorizați %{application} să vă acceseze contul cu următoarele
+ permisiuni?
authorize: Autorizează
deny: Respinge
error:
title: Code de autorizare
oauth2_authorized_applications:
index:
+ title: Aplicațiile mele autorizate
application: Aplicație
permissions: Permisiuni
+ no_applications_html: Nu ați autorizat încă nicio aplicație %{oauth2}.
application:
revoke: Revocă accesul
confirm_revoke: Revocați accesul acestei aplicații?
title: Înregistrare
no_auto_account_create: Din păcate, în prezent nu putem crea automat un cont
pentru dvs.
+ please_contact_support_html: Vă rugăm să contactați %{support_link} pentru a
+ aranja crearea unui cont - vom încerca să rezolvăm solicitarea cât mai repede
+ posibil.
+ support: suport
about:
header: Liberă și editabilă
+ paragraph_1: Spre deosebire de alte hărți, OpenStreetMap este creat complet
+ de oameni ca tine și este gratuit pentru oricine să repare, să actualizeze,
+ să descarce și să folosească.
+ paragraph_2: Înscrie-te pentru a începe să contribui. Vă vom trimite un e-mail
+ pentru a vă confirma contul.
display name description: Numele dvs. de utilizator afișat public. Puteți schimba
acest lucru mai târziu în preferințe.
external auth: 'Verificarea terță parte:'
dar unele instrumente suplimentare sau serverul pot avea nevoie de una.
continue: Înregistrare
terms accepted: Vă mulțumim pentru acceptarea noilor termeni de contribuire!
+ email_confirmation_help_html: Adresa dvs. nu este afișată public, consultați
+ %{privacy_policy_link} pentru mai multe informații.
+ privacy_policy: Politica de confidențialitate
+ privacy_policy_title: Politica de confidențialitate OSMF, inclusiv secțiunea
+ privind adresele de e-mail
terms:
title: Termeni
heading: Termeni
în Domeniul Public
consider_pd_why: Ce este aceasta?
consider_pd_why_url: https://www.osmfoundation.org/wiki/License/Why_would_I_want_my_contributions_to_be_public_domain
+ guidance_info_html: 'Informații pentru a ajuta la înțelegerea acestor termeni:
+ un %{readable_summary_link} și câteva %{informal_translations_link}'
+ readable_summary: rezumat care poate fi citit de om
+ informal_translations: traduceri informale
continue: Continuă
decline: Declină
you need to accept or decline: Citiți și apoi acceptați sau refuzați continuarea
my_dashboard: Dashboardul meu
blocks on me: Blochează pe mine
blocks by me: Blochează de mine
+ edit_profile: Editează profilul
send message: Trimite mesajul
diary: Jurnal
edits: Modificare
create_block: Blochează acest utilizator
activate_user: Activează acest utilizator
confirm_user: Confirmă acest utilizator
+ unconfirm_user: Deconfirmați acest utilizator
+ unsuspend_user: Anulați suspendarea acestui utilizator
hide_user: Ascunde acest utilizator
unhide_user: Descoperă acest utilizator
delete_user: Șterge acest utilizator
suspended:
title: Cont Suspendat
heading: Cont Suspendat
+ support: suport
+ automatically_suspended: Ne pare rău, contul dvs. a fost suspendat automat din
+ cauza activității suspecte.
+ contact_support_html: Această decizie va fi examinată de un administrator în
+ curând sau puteți contacta %{support_link} dacă doriți să discutați despre
+ acest lucru.
auth_failure:
connection_failed: Conectarea la furnizorul de autentificare a eșuat
invalid_credentials: Autentificări nevalide de autentificare
no_authorization_code: Nu există cod de autorizare
unknown_signature_algorithm: Algoritm de semnătură necunoscut
invalid_scope: Domeniu nevalid
+ unknown_error: Autentificare eșuată
auth_association:
heading: ID-ul dvs. nu este încă asociat cu un cont OpenStreetMap.
option_1: |-
time_past_html: Terminat în urmă cu %{time}.
block_duration:
hours:
- one: 1 oră
- other: '%{count} ore'
+ one: o oră
+ few: '%{count} ore'
+ other: '%{count} de ore'
days:
- one: 1 zi
- other: '%{count} zile'
+ one: o zi
+ few: '%{count} zile'
+ other: '%{count} de zile'
weeks:
- one: 1 săptămână
- other: '%{count} săptămâni'
+ one: o săptămână
+ few: '%{count} săptămâni'
+ other: '%{count} de săptămâni'
months:
- one: 1 lună
- other: '%{count} luni'
+ one: o lună
+ few: '%{count} luni'
+ other: '%{count} de luni'
years:
- one: 1 an
- other: '%{count} ani'
+ one: un an
+ few: '%{count} ani'
+ other: '%{count} de ani'
blocks_on:
title: Blocări pe %{name}
heading_html: Lista blocărilor pe %{name}
index:
title: Notele trimise sau comentate de %{user}
heading: Notele %{user}
- subheading_html: Notele trimise sau comentate de %{user}
+ subheading_html: Note %{submitted} sau %{commented} de %{user}
+ subheading_submitted: trimise
+ subheading_commented: comentate
no_notes: Nicio notă
id: Id
creator: Creator
open_title: 'Notă nerezolvată #%{note_name}'
closed_title: 'Notă rezolvată #%{note_name}'
hidden_title: 'Notă ascunsă #%{note_name}'
+ event_opened_by_html: Creat de %{user} %{time_ago}
+ event_opened_by_anonymous_html: Creat anonim %{time_ago}
+ event_commented_by_html: Comentariu de la %{user} %{time_ago}
+ event_commented_by_anonymous_html: Comentariu anonim %{time_ago}
+ event_closed_by_html: Rezolvată de %{user} %{time_ago}
+ event_closed_by_anonymous_html: Rezolvată anonim %{time_ago}
+ event_reopened_by_html: Reactivată de %{user} %{time_ago}
+ event_reopened_by_anonymous_html: Reactivată anonim %{time_ago}
+ event_hidden_by_html: Ascunsă de %{user} %{time_ago}
report: Raportează această notă
anonymous_warning: Această notă include comentarii de la utilizatori anonimi,
care ar trebui verificați independent.
reactivate: Reactivează
comment_and_resolve: Comentariu & Rezolvare
comment: Comentariu
+ report_link_html: Dacă această notă conține informații sensibile care trebuie
+ eliminate, puteți %{link}.
+ other_problems_resolve: Pentru toate celelalte probleme legate de notă, vă rugăm
+ să o rezolvați singur printr-un comentariu.
+ other_problems_resolved: Pentru toate celelalte probleme, rezolvarea este suficientă.
+ disappear_date_html: Această notă rezolvată va dispărea de pe hartă în %{disappear_in}.
new:
title: Notă nouă
intro: A apărut o greșeală sau lipsește ceva? Lăsați alți cartografi să știe
metersPopup:
one: Sunteți la un metru de acest punct
few: Sunteți la %{count} metri de acest punct
- other: ""
+ other: Sunteți la %{count} de metri de acest punct
feetPopup:
- one: Sunteți la un picior unitate de măsură de acest punct
- few: Sunteți la %{count} picioare unitate de măsură de acest punct
- other: ""
+ one: Sunteți la un picior de acest punct
+ few: Sunteți la %{count} picioare de acest punct
+ other: Sunteți la %{count} de picioare de acest punct
base:
standard: Standard
cyclosm: CyclOSM
osm_france: OpenStreetMap Franța
thunderforest_credit: Plăci prin amabilitatea lui %{thunderforest_link}
andy_allan: Andy Allan
+ opnvkarte_credit: Tile-uri prin amabilitatea lui %{memomaps_link}
+ memomaps: MeMoMaps
+ hotosm_credit: Stilul tile-urilor creat de %{hotosm_link} găzduit de %{osm_france_link}
hotosm_name: Echipa Umanitară OpenStreetMap
site:
edit_tooltip: Modifică harta
closed: Закрыто
created_ago_html: Создано %{time_ago}
closed_ago_html: Закрыто %{time_ago}
+ created_ago_by_html: Создал %{time_ago} %{user}
edited_ago_by_html: Редактировал %{time_ago} %{user}
version: Версия
in_changeset: Пакет правок
relation: Отношения (%{count})
relation_paginated: Отношения (%{x}-%{y} из %{count})
comment: Комментарии (%{count})
+ comment_by_html: Комментарий от %{user} %{time_ago}
changesetxml: XML пакета правок
osmchangexml: osmChange XML
feed:
one: '%{count} комментарий'
zero: Нет комментариев
other: '%{count} комментариев'
+ no_comments: Нет комментариев
edit_link: Изменить запись
hide_link: Скрыть эту запись
unhide_link: Отобразить эту запись
search:
title:
results_from_html: Результаты из %{results_link}
+ latlon: Внутренний
search_osm_nominatim:
prefix:
aerialway:
ambulance_station: Станция скорой медицинской помощи
assembly_point: Место сбора
defibrillator: Дефибриллятор
+ fire_water_pond: Пожарный водоём
landing_site: Место аварийной посадки
phone: Телефон экстренной связи
water_tank: Пожарный водоём/резервуар
trailhead: Тропа
trunk: Трасса
trunk_link: Развязка
+ turning_circle: Разворотное кольцо
turning_loop: Дорога для разворота
unclassified: Дорога местного значения
"yes": Дорога
pier: Пирс
pipeline: Трубопровод
pumping_station: Насосная станция
+ reservoir_covered: Крытый резервуар
silo: Силос
snow_cannon: Снежная пушка
snow_fence: Снегозащитное заграждение
surveillance: Камера наблюдения
telescope: Телескоп
tower: Башня
+ utility_pole: Электрический столб
wastewater_plant: Станция очистки сточных вод
watermill: Водяная мельница
water_tap: Водопроводный кран
water: Водоём
wetland: Заболоченная территория
wood: Лес
+ "yes": Природный объект
office:
accountant: Бухгалтер
administrative: Администрация
funeral_directors: Похоронное бюро
furniture: Мебель
garden_centre: Садовый центр
+ gas: Магазин газового оборудования
general: Магазин
gift: Магазин подарков
greengrocer: Овощной магазин
status: Статус
reports: Сообщения
last_updated: Последнее изменение
+ last_updated_time_ago_user_html: '%{time_ago} %{user}'
link_to_reports: Просмотр сообщений
reports_count:
one: 1 сообщение
no home location: Вы не обозначили свое домашнее местоположение.
update home location on click: Обновлять моё местоположение, когда я нажимаю
на карту?
+ show: Показать
+ delete: Удалить
+ undelete: Отменить удаление
update:
success: Профиль обновлён.
failure: Не удалось обновить профиль.
facebook:
title: Войти с помощью Facebook
alt: Войти с помощью учётной записи в Facebook
- windowslive:
- title: Войти с помощью Windows Live
- alt: Войти с помощью учётной записи Windows Live
+ microsoft:
+ title: Войти с помощью Microsoft
+ alt: Войти с помощью учётной записи Microsoft
github:
title: Войти с GitHub
alt: Войти с учётной записи на GitHub
legal_babble:
title_html: Авторские права и лицензирование
introduction_1_open_data: открытые данные
+ introduction_2_html: Вы можете свободно копировать, распространять, передавать
+ и дорабатывать наши данные до тех пор, пока вы ссылаетесь на OpenStreetMap
+ и его участников. Если вы изменяете или берёте наши данные за основу, то
+ вы должны распространять результат только по такой же лицензии. Полный %{legal_code_link}
+ юридический текст лицензии разъясняет ваши права и обязанности.
credit_title_html: Как сослаться на OpenStreetMap
credit_1_html: 'Если вы используете данные OpenStreetMap, вы должны выполнить
следующие два условия:'
+ credit_2_1: Отдайте должное OpenStreetMap, поместив наше уведомление об авторских
+ правах.
+ credit_2_2: Дайте понять, что данные доступны по лицензии открытой базы данных.
+ credit_3_html: 'У нас есть различные требования к тому, как должно отображаться
+ наше уведомление об авторских правах: всё зависит от того, как вы используете
+ наши данные. Например, действуют разные правила при отображении уведомления
+ об авторских правах в разных случаях: создали ли вы просматриваемую карту,
+ печатную карту или статичное изображение. Полную информацию о требованиях
+ можно найти в %{attribution_guidelines_link}.'
credit_3_attribution_guidelines: Руководство по атрибуции
+ credit_4_1_html: |-
+ Чтобы явно указать, что данные доступны по лицензии Open Database License, вы можете сослаться на %{this_copyright_page_link}.
+ В качестве альтернативы, а также в качестве требования, если вы распространяете OSM в виде набора данных, вы можете назвать лицензию(и) и дать на неё(них) прямую ссылку.
+ В СМИ, где ссылки физически невозможны (например, в печатных изданиях), мы предлагаем вам направлять читателей на сайт openstreetmap.org (возможно, расширив написание «OpenStreetMap» до полного веб-адреса) и на opendatacommons.org.
+ В этом примере, упоминание находится в углу карты.
attribution_example:
alt: Пример того, как сослаться на OpenStreetMap с веб-страницы
title: Пример указания авторства
contributors_2_html: |-
Для получения дополнительной информации об этих и других источниках, которые использовались
для улучшения OpenStreetMap, см. %{contributors_page_link} на OpenStreetMap Wiki.
+ contributors_2_contributors_page: Страница авторов
contributors_footer_2_html: Включение данных в OpenStreetMap не означает,
что поставщик первичных данных каким-либо образом поддерживает OpenStreetMap,
предоставляет гарантии или принимает на себя какую-любую ответственность.
с сообществом и общаться с ним. Если вы планируете
какие-либо действия, кроме редактирования вручную, прочтите и следуйте инструкциям:
%{imports_link} и %{automated_edits_link}.
+ imports: Импорты
automated_edits: Автоматические правки
start_mapping: Начать картографировать
add_a_note:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Wikipedia
api:
history_title_html: 'Istòria de sa lìnia: %{name}'
nodes: Nodos
nodes_count:
- one: 1 nodu
+ one: '%{count} nodu'
other: '%{count} nodos'
also_part_of_html:
one: parte de sa lìnia %{related_ways}
comment_count:
one: '%{count} cummentu'
other: '%{count} cummentos'
+ no_comments: Perunu cummentu
edit_link: Modìfica custa intrada
hide_link: Cua custa intrada
unhide_link: Ammustra custa intrada
reports:
one: '%{count} sinnalatzione'
other: '%{count} sinnalatziones'
+ no_reports: Perunu informe
report_created_at: Sinnaladu pro sa prima borta su %{datetime}
last_resolved_at: Risoltu pro s'ùrtima borta su %{datetime}
last_updated_at: Ùrtima atualizatzione de %{displayname} su %{datetime}
no home location: No as insertadu sa positzione de incumintzu tua.
update home location on click: Atualizare sa positzione de incumintzu incarchende
in sa mapa?
+ show: Ammustra
+ delete: Iscantzella
+ undelete: Annulla s'iscantzellamentu
update:
success: Profilu atualizadu.
failure: Non s'est pòdidu atualizare su profilu.
facebook:
title: Intra cun Facebook
alt: Intra cun unu contu de Facebook
- windowslive:
+ microsoft:
title: Intra cun Microsoft
alt: Intra cun unu contu de Microsoft
github:
index:
title: Notas insertadas o cummentadas dae %{user}
heading: Notas de %{user}
- subheading_html: Notas imbiadas o cummentadas dae %{user}
+ subheading_html: Notas %{submitted} o %{commented} dae %{user}
+ subheading_submitted: imbiadas
+ subheading_commented: cummentadas
no_notes: Peruna nota
id: Id
creator: Creadore
facebook:
title: Trasi cu Facebook
alt: Trasi cûn cuntu di Facebook
- windowslive:
+ microsoft:
title: Trasi cu Windows Live
alt: Trasi cûn cuntu di Windows Live
github:
facebook:
title: Login wi Facebook
alt: Login wi a Facebook Accoont
- windowslive:
+ microsoft:
title: Login wi Windows Live
alt: Login wi a Windows Live Accoont
github:
facebook:
title: Prihlásenie sa pomocou Facebooku
alt: Prihlásenie sa pomocou účtu na Facebooku
- windowslive:
+ microsoft:
title: Prihlásenie sa pomocou Windows Live
alt: Prihlásenie sa pomocou účtu Windows Live
github:
openid: کھلی آئی ڈی
google: گوگل
facebook: فیسبوک
- windowslive: مائیکروسافٹ
+ microsoft: مائیکروسافٹ
github: گِٹ ہب
wikipedia: وکیپیڈیا
api:
alt: گوگل اوپن آئی ڈی نال لاگ ان تھیوو
facebook:
title: فیس بک نال لاگ ان تھیوو
- windowslive:
+ microsoft:
title: مائیکروسافٹ نال لاگ ان تھیوو
alt: مائیکروسافٹ کھاتے نال لاگ ان تھیوو
github:
show: ݙِکھاؤ
edit: تبدیلی کرو
notes:
+ index:
+ subheading_submitted: جمع تھی ڳیا
show:
title: نوٹ:%{id}
description: تفصیل
facebook:
title: Prijavi se s Facebookom
alt: Prijavi se z računom Facebook
- windowslive:
+ microsoft:
title: Prijava z Microsoftom
alt: Prijava z računom Microsoft
github:
index:
title: Opombe, ki jih je posredoval_a ali komentiral_a %{user}
heading: Opombe uporabnika %{user}
- subheading_html: Opombe, ki jih je posredoval_a ali komentiral_a %{user}
+ subheading_html: Opombe, ki jih je %{submitted} ali %{commented} %{user}
+ subheading_submitted: posredoval_a
+ subheading_commented: komentiral_a
no_notes: Ni opomb
id: Id
creator: Ustvarjalec
facebook:
title: Пријавити се са Facebook-ом
alt: Пријава преко Facebook налога
- windowslive:
+ microsoft:
title: Пријава преко Microsoft-а
alt: Пријава преко Microsoft налога
github:
facebook:
title: Logga in med Facebook
alt: Logga in med ett Facebook-konto
- windowslive:
+ microsoft:
title: Logga in med Microsoft
alt: Logga in med ett Microsoft-konto
github:
facebook:
title: Facebook తో లాగినవండి
alt: Facebook ఖాతాతో లాగినవండి
- windowslive:
+ microsoft:
title: Windows Live తో లాగినవండి
alt: Windows Live ఖాతాతో లాగినవండి
github:
facebook:
title: เข้าใช้งานด้วย Facebook
alt: เข้าใช้งานด้วยบัญชี Facebook
- windowslive:
+ microsoft:
title: เข้าใช้งานด้วย Windows Live
alt: เข้าใช้งานด้วยบัญชี Windows Live
github:
facebook:
title: Lumagda gamit ang Facebook
alt: Lumagda gamit ang isang akawnt sa Facebook
- windowslive:
+ microsoft:
title: Lumagda gamit ang Windows Live
alt: Lumagda gamit ang isang akawnt sa Windows Live
github:
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Vikipedi
api:
history_title_html: 'Yol geçmişi: %{name}'
nodes: Noktalar
nodes_count:
+ one: '%{count} düğüm'
other: '%{count} düğüm'
also_part_of_html:
one: yol parçası %{related_ways}
comment_link: Bu girdiyi yorumla
reply_link: Yazara mesaj gönder
comment_count:
- zero: Yorum yok
one: '%{count} yorum'
other: '%{count} yorum'
no_comments: Yorum yok
show:
title: '%{status} Sorun #%{issue_id}'
reports:
- zero: Rapor yok
- one: 1 rapor
+ one: '%{count} rapor'
other: '%{count} rapor'
no_reports: Rapor yok
report_created_at: İlk defa %{datetime} tarihinde bildirildi
facebook:
title: Facebook ile giriş
alt: Facebook Hesabı ile giriş
- windowslive:
+ microsoft:
title: Microsoft ile giriş
alt: Microsoft Hesabı ile giriş
github:
credit_title_html: OpenStreetMap'e nasıl atıfta bulunulur
credit_1_html: 'OpenStreetMap verilerini kullandığınız yerde aşağıdaki iki
şeyi yapmanız gerekiyor:'
+ credit_2_1: Telif hakkı bildirimimizi görüntüleyerek OpenStreetMap'e atıfta
+ bulunun.
credit_2_2: Verilerin Açık Veritabanı Lisansı kapsamında mevcut olduğunu açıkça
belirtin.
credit_4_1_this_copyright_page: bu telif hakkı sayfası
contributors_nz_new_zealand: Yeni Zelanda
contributors_nz_linz_data_service: LINZ Veri Hizmeti
contributors_nz_cc_by: CC BY 4.0
+ contributors_rs_serbia: Sırbistan
+ contributors_rs_rgz: Sırp Jeodezi Kurumu
+ contributors_rs_open_data_portal: Ulusal Açık Veri Portalı
+ contributors_si_credit_html: |-
+ %{slovenia}: %{gu_link} ve %{mkgp_link}
+ (Slovenya'nın kamuya açık bilgileri) verilerini içerir.
contributors_si_slovenia: Slovenya
contributors_si_mkgp: Tarım, Orman ve Gıda Bakanlığı
contributors_es_spain: İspanya
openid: OpenID
google: Google
facebook: Facebook
+ microsoft: Microsoft
github: GitHub
wikipedia: Вікіпедія
api:
no home location: Ви не позначили своє основне місце розташування.
update home location on click: Оновлювати моє місце розташування, коли я клацаю
на мапу?
+ show: Показати
+ delete: Вилучити
+ undelete: Скасувати вилучення
update:
success: Профіль збережено.
failure: Неможливо зберегти оновлення профілю.
facebook:
title: Увійти з Facebook
alt: Увійти з облікового запису Facebook
- windowslive:
+ microsoft:
title: Увійти з Microsoft
alt: Увійти з облікового запису Microsoft
github:
index:
title: Нотатки створені чи прокоментовані %{user}
heading: Нотатки %{user}
- subheading_html: Нотатки, створені чи прокоментовані %{user}
+ subheading_html: Нотатки, %{submitted} чи %{commented} %{user}
+ subheading_submitted: створені
+ subheading_commented: прокоментовані
no_notes: Нотаток немає
id: Номер
creator: Автор
facebook:
title: Đăng nhập qua Facebook
alt: Đăng nhập dùng tài khoản Facebook
- windowslive:
- title: Đăng nhập qua Windows Live
- alt: Đăng nhập dùng tài khoản Windows Live
+ microsoft:
+ title: Đăng nhập qua Microsoft
+ alt: Đăng nhập dùng Tài khoản Microsoft
github:
title: Đăng nhập qua GitHub
alt: Đăng nhập dùng tài khoản GitHub
facebook:
title: 使用脸书登录
alt: 使用Facebook账户登录
- windowslive:
+ microsoft:
title: 使用Microsoft登录
alt: 使用Microsoft账户登录
github:
openid: OpenID
google: Google
facebook: 臉書
+ microsoft: 微軟
github: GitHub
wikipedia: 維基百科
api:
facebook:
title: 使用臉書登入
alt: 使用臉書帳號登入
- windowslive:
+ microsoft:
title: 使用 Microsoft 帳號登入
alt: 使用 Microsoft 帳號登入
github:
index:
title: 由 %{user} 送出或評論的註記
heading: '%{user} 的註記'
- subheading_html: '%{user} 送出或評論的註記'
+ subheading_html: 由%{user}%{submitted}或%{commented}的註記
+ subheading_submitted: 已提交
+ subheading_commented: 已評論
no_notes: 沒有註記
id: ID
creator: 建立者
max_messages_per_hour: 60
# Rate limit for friending
max_friends_per_hour: 60
+# Rate limit for changeset comments
+min_changeset_comments_per_hour: 6
+max_changeset_comments_per_hour: 60
# Domain for handling message replies
#messages_domain: "messages.openstreetmap.org"
# MaxMind GeoIPv2 database
smtp_password: null
# Matomo settings for analytics
#matomo:
+# Signup rate limits
+#signup_ip_per_day:
+#signup_ip_max_burst:
+#signup_email_per_day:
+#signup_email_max_burst:
--- /dev/null
+class RestoreAuthorIndexToChangesetComments < ActiveRecord::Migration[7.0]
+ disable_ddl_transaction!
+
+ def change
+ add_index :changeset_comments, [:author_id, :created_at], :algorithm => :concurrently
+ end
+end
CREATE UNIQUE INDEX index_active_storage_variant_records_uniqueness ON public.active_storage_variant_records USING btree (blob_id, variation_digest);
+--
+-- Name: index_changeset_comments_on_author_id_and_created_at; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX index_changeset_comments_on_author_id_and_created_at ON public.changeset_comments USING btree (author_id, created_at);
+
+
--
-- Name: index_changeset_comments_on_changeset_id_and_created_at; Type: INDEX; Schema: public; Owner: -
--
('20220201183346'),
('20220223140543'),
('20230816135800'),
+('20230825162137'),
('21'),
('22'),
('23'),
end
end
+ # Raised when a rate limit is exceeded
+ class APIRateLimitExceeded < APIError
+ def status
+ :too_many_requests
+ end
+ end
+
# Helper methods for going to/from mercator and lat/lng.
class Mercator
include Math
--- /dev/null
+class RateLimiter
+ def initialize(cache, interval, limit, max_burst)
+ @cache = cache
+ @requests_per_second = limit.to_f / interval
+ @burst_limit = max_burst
+ end
+
+ def allow?(key)
+ last_update, requests = @cache.get(key)
+
+ if last_update
+ elapsed = Time.now.to_i - last_update
+
+ requests -= elapsed * @requests_per_second
+ else
+ requests = 0.0
+ end
+
+ requests < @burst_limit
+ end
+
+ def update(key)
+ now = Time.now.to_i
+
+ last_update, requests = @cache.get(key)
+
+ if last_update
+ elapsed = now - last_update
+
+ requests -= elapsed * @requests_per_second
+ requests += 1.0
+ else
+ requests = 1.0
+ end
+
+ @cache.set(key, [now, [requests, 1.0].max])
+ end
+end
assert_response :bad_request
end
+ ##
+ # create comment rate limit
+ def test_create_comment_rate_limit
+ changeset = create(:changeset, :closed)
+ user = create(:user)
+
+ auth_header = basic_authorization_header user.email, "test"
+
+ assert_difference "ChangesetComment.count", Settings.min_changeset_comments_per_hour do
+ 1.upto(Settings.min_changeset_comments_per_hour) do |count|
+ post changeset_comment_path(:id => changeset, :text => "Comment #{count}"), :headers => auth_header
+ assert_response :success
+ end
+ end
+
+ assert_no_difference "ChangesetComment.count" do
+ post changeset_comment_path(:id => changeset, :text => "One comment too many"), :headers => auth_header
+ assert_response :too_many_requests
+ end
+ end
+
##
# test hide comment fail
def test_destroy_comment_fail
check_json_details(js["users"][1], user3, false, false)
get api_users_path, :params => { :users => create(:user, :suspended).id }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
get api_users_path, :params => { :users => create(:user, :deleted).id }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
get api_users_path, :params => { :users => 0 }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
end
def test_index_oauth1
check_json_details(js["users"][1], user3, false, false)
signed_get api_users_path, :params => { :users => create(:user, :suspended).id }, :oauth => { :token => good_token }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
signed_get api_users_path, :params => { :users => create(:user, :deleted).id }, :oauth => { :token => good_token }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
signed_get api_users_path, :params => { :users => 0 }, :oauth => { :token => good_token }
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
end
def test_index_oauth2
check_json_details(js["users"][1], user3, false, false)
get api_users_path, :params => { :users => create(:user, :suspended).id }, :headers => bearer_authorization_header(good_token.token)
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
get api_users_path, :params => { :users => create(:user, :deleted).id }, :headers => bearer_authorization_header(good_token.token)
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
get api_users_path, :params => { :users => 0 }, :headers => bearer_authorization_header(good_token.token)
- assert_response :not_found
+ assert_response :success
+ assert_equal "application/xml", response.media_type
+ assert_select "user", :count => 0
end
def test_gpx_files
class OAuth2Test < ActionDispatch::IntegrationTest
def test_oauth2
+ user = create(:user)
client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx")
state = SecureRandom.urlsafe_base64(16)
- authorize_client(client, :state => state)
+ authorize_client(user, client, :state => state)
assert_response :redirect
code = validate_redirect(client, state)
token = request_token(client, code)
- test_token(token, client)
+ test_token(token, user, client)
end
def test_oauth2_oob
+ user = create(:user)
client = create(:oauth_application, :redirect_uri => "urn:ietf:wg:oauth:2.0:oob", :scopes => "read_prefs write_api read_gpx")
- authorize_client(client)
+ authorize_client(user, client)
assert_response :redirect
follow_redirect!
assert_response :success
token = request_token(client, code)
- test_token(token, client)
+ test_token(token, user, client)
end
def test_oauth2_pkce_plain
+ user = create(:user)
client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx")
state = SecureRandom.urlsafe_base64(16)
verifier = SecureRandom.urlsafe_base64(48)
challenge = verifier
- authorize_client(client, :state => state, :code_challenge => challenge, :code_challenge_method => "plain")
+ authorize_client(user, client, :state => state, :code_challenge => challenge, :code_challenge_method => "plain")
assert_response :redirect
code = validate_redirect(client, state)
token = request_token(client, code, verifier)
- test_token(token, client)
+ test_token(token, user, client)
end
def test_oauth2_pkce_s256
+ user = create(:user)
client = create(:oauth_application, :redirect_uri => "https://some.web.app.example.org/callback", :scopes => "read_prefs write_api read_gpx")
state = SecureRandom.urlsafe_base64(16)
verifier = SecureRandom.urlsafe_base64(48)
challenge = Base64.urlsafe_encode64(Digest::SHA256.digest(verifier), :padding => false)
- authorize_client(client, :state => state, :code_challenge => challenge, :code_challenge_method => "S256")
+ authorize_client(user, client, :state => state, :code_challenge => challenge, :code_challenge_method => "S256")
assert_response :redirect
code = validate_redirect(client, state)
token = request_token(client, code, verifier)
- test_token(token, client)
+ test_token(token, user, client)
end
private
- def authorize_client(client, options = {})
+ def authorize_client(user, client, options = {})
options = options.merge(:client_id => client.uid,
:redirect_uri => client.redirect_uri,
:response_type => "code",
assert_response :redirect
assert_redirected_to login_path(:referer => request.fullpath)
- user = create(:user)
-
post login_path(:username => user.email, :password => "test")
follow_redirect!
assert_response :success
token["access_token"]
end
- def test_token(token, client)
+ def test_token(token, user, client)
get user_preferences_path
assert_response :unauthorized
get api_trace_path(:id => 2), :headers => auth_header
assert_response :forbidden
+ user.suspend!
+
+ get user_preferences_path, :headers => auth_header
+ assert_response :forbidden
+
+ user.hide!
+
+ get user_preferences_path, :headers => auth_header
+ assert_response :forbidden
+
+ user.unhide!
+
+ get user_preferences_path, :headers => auth_header
+ assert_response :success
+
post oauth_revoke_path(:token => token)
assert_response :forbidden
def test_oauth10_web_app
client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
+ user = create(:user)
- get "/login"
- follow_redirect!
- post "/login", :params => { :username => client.user.email, :password => "test" }
- follow_redirect!
- assert_response :success
+ session_for(user)
oauth10_without_callback(client)
oauth10_with_callback(client, "http://another.web.app.example.org/callback")
def test_oauth10_desktop_app
client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
+ user = create(:user)
- get "/login"
- follow_redirect!
- post "/login", :params => { :username => client.user.email, :password => "test" }
- follow_redirect!
- assert_response :success
+ session_for(user)
oauth10_without_callback(client)
oauth10_refused(client)
def test_oauth10a_web_app
client = create(:client_application, :callback_url => "http://some.web.app.example.org/callback", :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
+ user = create(:user)
- get "/login"
- follow_redirect!
- post "/login", :params => { :username => client.user.email, :password => "test" }
- follow_redirect!
- assert_response :success
+ session_for(user)
oauth10a_without_callback(client)
oauth10a_with_callback(client, "http://another.web.app.example.org/callback")
def test_oauth10a_desktop_app
client = create(:client_application, :allow_read_prefs => true, :allow_write_api => true, :allow_read_gpx => true)
+ user = create(:user)
- get "/login"
- follow_redirect!
- post "/login", :params => { :username => client.user.email, :password => "test" }
- follow_redirect!
- assert_response :success
+ session_for(user)
oauth10a_without_callback(client)
oauth10a_refused(client)
assert_nil token.invalidated_at
assert_allowed token, [:allow_read_prefs]
+ post logout_path
+
signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
assert_response :success
signed_get "/api/0.6/gpx/2", :oauth => { :token => token }
assert_response :forbidden
+ token.user.suspend!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.hide!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.unhide!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :success
+
+ session_for(token.user)
+
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
assert_nil token.invalidated_at
assert_allowed token, [:allow_write_api, :allow_read_gpx]
- trace = create(:trace, :user => client.user)
+ post logout_path
+
+ trace = create(:trace, :user => token.user)
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :success
signed_get "/api/0.6/user/details", :oauth => { :token => token }
assert_response :forbidden
+ token.user.suspend!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.hide!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.unhide!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :success
+
+ session_for(token.user)
+
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
assert_nil token.invalidated_at
assert_allowed token, [:allow_read_prefs]
+ post logout_path
+
signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
assert_response :success
- trace = create(:trace, :user => client.user)
+ trace = create(:trace, :user => token.user)
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :forbidden
+ token.user.suspend!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.hide!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.unhide!
+ signed_get "/api/0.6/user/preferences", :oauth => { :token => token }
+ assert_response :success
+
+ session_for(token.user)
+
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
assert_nil token.invalidated_at
assert_allowed token, [:allow_write_api, :allow_read_gpx]
- trace = create(:trace, :user => client.user)
+ post logout_path
+
+ trace = create(:trace, :user => token.user)
signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
assert_response :success
signed_get "/api/0.6/user/details", :oauth => { :token => token }
assert_response :forbidden
+ token.user.suspend!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.hide!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :forbidden
+
+ token.user.unhide!
+ signed_get "/api/0.6/gpx/#{trace.id}", :oauth => { :token => token }
+ assert_response :success
+
+ session_for(token.user)
+
post "/oauth/revoke", :params => { :token => token.token }
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by(:token => token.token)
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@^8.47.0":
- version "8.47.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d"
- integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==
+"@eslint/js@8.48.0":
+ version "8.48.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb"
+ integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==
"@humanwhocodes/config-array@^0.11.10":
version "0.11.10"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8.0.0:
- version "8.47.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806"
- integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==
+ version "8.48.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155"
+ integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.2"
- "@eslint/js" "^8.47.0"
+ "@eslint/js" "8.48.0"
"@humanwhocodes/config-array" "^0.11.10"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
type-check "^0.4.0"
osm-community-index@^5.2.0:
- version "5.5.5"
- resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.5.5.tgz#dd7a4d333d01dc83ac1b5cf83c3f0f99f4339ec4"
- integrity sha512-bGl9WqkfPhIsAkv62QW2erlTQolSjMODmiH0Dp7ld2k1bTUz1D3ZRKRyjGi7fFuUwlrkE1MrbP0mRFezmPbaww==
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.6.0.tgz#b2361fce7ded723844b0ed68d47bddfc4a8cb240"
+ integrity sha512-C5AqEWidBIgKeaJKQwuPWvDqSzm9CpZgDbHDi+k4+ZCHBazRQjnl7TpWVv2/fQWMqsJL3I5qzh19rXBTWMWL1A==
dependencies:
diacritics "^1.3.0"