# Load rails plugins
gem "actionpack-page_caching"
+gem "active_record_union"
gem "cancancan"
gem "composite_primary_keys", "~> 11.0.0"
gem "delayed_job_active_record"
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
+ active_record_union (1.3.0)
+ activerecord (>= 4.0)
activejob (5.2.0)
activesupport (= 5.2.0)
globalid (>= 0.3.6)
bootsnap (1.3.2)
msgpack (~> 1.0)
builder (3.2.3)
- cancancan (2.1.3)
+ cancancan (2.3.0)
canonical-rails (0.2.4)
rails (>= 4.1, < 5.3)
capybara (2.18.0)
coffee-script-source (1.12.2)
composite_primary_keys (11.0.3)
activerecord (~> 5.2.0)
- concurrent-ruby (1.0.5)
+ concurrent-ruby (1.1.3)
coveralls (0.8.22)
json (>= 1.8, < 3)
simplecov (~> 0.16.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
- method_source (0.9.0)
+ method_source (0.9.1)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2018.0812)
puma (3.12.0)
quad_tile (1.0.1)
r2 (0.2.7)
- rack (2.0.5)
+ rack (2.0.6)
rack-cors (1.0.2)
rack-openid (1.3.1)
rack (>= 1.1.0)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
- term-ansicolor (1.6.0)
+ term-ansicolor (1.7.0)
tins (~> 1.0)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
thor (0.19.4)
thread_safe (0.3.6)
tilt (2.0.8)
- tins (1.17.0)
+ tins (1.18.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.19)
SystemTimer (>= 1.1.3)
aasm
actionpack-page_caching
+ active_record_union
annotate
autoprefixer-rails (~> 8.6.3)
better_errors
folder 'img', 'src/img'
end
- from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.62.0' do
+ from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.64.0' do
file 'leaflet.locate.js', 'src/L.Control.Locate.js'
end
end
# get all the points
- points = Tracepoint.bbox(bbox).offset(offset).limit(TRACEPOINTS_PER_PAGE).order("gpx_id DESC, trackid ASC, timestamp ASC")
+ ordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[trackable identifiable] }).order("gpx_id DESC, trackid ASC, timestamp ASC")
+ unordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[public private] }).order("gps_points.latitude", "gps_points.longitude", "gps_points.timestamp")
+ points = ordered_points.union_all(unordered_points).offset(offset).limit(TRACEPOINTS_PER_PAGE)
doc = XML::Document.new
doc.encoding = XML::Encoding::UTF_8
SCALE = 10000000
included do
- scope :bbox, ->(bbox) { where(OSM.sql_for_area(bbox)) }
+ scope :bbox, ->(bbox) { where(OSM.sql_for_area(bbox, "#{table_name}.")) }
before_save :update_tile
end
هذا التنقيح قبل تدميره.
flash: التنقيح تم تدميره.
error: حدث خطأ في تدمير هذا التنقيح.
+ validations:
+ leading_whitespace: لديه مسافة بيضاء أمامية
+ trailing_whitespace: لديه مسافة بيضاء زائدة
+ invalid_characters: يحتوي على أحرف غير صالحة
+ url_characters: يحتوي على أحرف يو آر إل خاصة (%{characters})
...
# Author: Bodhisattwa
# Author: Ehsanulhb
# Author: Elias Ahmmad
+# Author: Gronthokeet
# Author: Kayser Ahmad
# Author: Nasir8891
# Author: R4bb1
edit_link: এই ভুক্তি সম্পাদনা করুন
hide_link: এই ভুক্তি লুকান
confirm: নিশ্চিত করুন
+ report: এই ভুক্তির বিরুদ্ধে অভিযোগ করুন
diary_comment:
comment_from: '%{comment_created_at}-এ %{link_user} কর্তৃক মন্তব্য'
hide_link: এই মন্তব্যটি লুকান
confirm: নিশ্চিত করুন
+ report: এই মন্তব্যের বিরুদ্ধে অভিযোগ করুন
location:
location: 'অবস্থান:'
view: দেখাও
aerodrome: বিমানশালা
apron: বর্হিবাস
gate: প্রবেশপথ
+ hangar: বিমান রাখার স্থান
helipad: হেলিপ্যাড
parking_position: পার্কিং-এর স্থান
runway: রানওয়ে
office: দপ্তর
parking: পার্কিং
parking_entrance: পার্কিং প্রবেশপথ
+ parking_space: গাড়ি রাখার স্থান
pharmacy: ঔষধালয়
place_of_worship: উপাসনালয়
police: পুলিশ
youth_centre: যুব কেন্দ্র
boundary:
administrative: প্রশাসনিক সীমানা
+ census: আদমশুমারি এলাকা
national_park: জাতীয় উদ্যান
protected_area: সুরক্ষিত এলাকা
bridge:
"yes": কারুকাজ দোকান
emergency:
ambulance_station: রুগ্নবাহিকা স্টেশন
+ defibrillator: ডিফাইব্রিলেটর
landing_site: জরুরি অবতরণ ক্ষেত্র
phone: জরুরি ফোন
+ water_tank: জরুরি পানির ট্যাংক
"yes": জরুরী
highway:
abandoned: পরিত্যক্ত মহাসড়ক
emergency_access_point: জরুরি প্রবেশ স্থল
footway: ফুটপাথ
milestone: মাইলফলক
+ motorway: মোটরপথ
path: পাথ
pedestrian: পাদচারী পথ
platform: প্লাটফর্ম
service: পার্শ্ব সড়ক
speed_camera: গতিমাপক ক্যামেরা
steps: ধাপ
- stop: থাà¦\95ার চিহ্ন
+ stop: থামার চিহ্ন
street_lamp: রাস্তার বাতি
tertiary: প্রশাখা সড়ক
tertiary_link: প্রশাখা সড়ক
track: নির্ধারিত পথ
traffic_signals: ট্রাফিক সংকেত
+ trail: চলাচলের নিশানা
trunk: মূল সড়ক
trunk_link: মূল সড়ক
unclassified: অশ্রেণীকৃত সড়ক
battlefield: যুদ্ধক্ষেত্র
boundary_stone: সীমানাজ্ঞাপক পাথর
building: ঐতিহাসিক ভবন
+ bunker: আপদকালীন ভূগর্ভস্থ আশ্রয়স্থল
castle: কেল্লা
church: গির্জা
city_gate: নগর দ্বার
stone: প্রস্তর
tomb: সমাধি
tower: মিনার
+ wreck: ভগ্নাবশেষ
+ "yes": ঐতিহাসিক স্থান
junction:
"yes": জংশন
landuse:
"yes": ব্যবহার্য ভূমি
leisure:
beach_resort: সৈকতীয় রিসোর্ট
+ bird_hide: পক্ষীদর্শন স্থান
common: সাধারণ ভূমি
dog_park: কুকুর উদ্যান
fishing: মৎস শিকারের এলাকা
+ fitness_centre: শরীরচর্চা কেন্দ্র
garden: বাগান
golf_course: গল্ফ মাঠ
+ horse_riding: অশ্বারোহণ
+ miniature_golf: ক্ষুদ্রাকৃতির গল্ফ
nature_reserve: সংরক্ষিত প্রাকৃতিক ভূমি
park: উদ্যান
+ pitch: খেলার পিচ
playground: খেলার মাঠ
recreation_ground: চিত্তবিনোদন মাঠ
resort: রিসোর্ট
+ sauna: বাষ্পস্নান
+ slipway: নৌকা ছাড়ার পথ
sports_centre: ক্রীড়া কেন্দ্র
stadium: ক্রিড়াঙ্গন
swimming_pool: সুইমিং পুল
water_park: বারি উদ্যান
"yes": অবসর
man_made:
+ adit: খনি সুড়ঙ্গ
+ beehive: মৌমাছির কৃত্রিম বাসা
+ breakwater: বেড়িবাঁধ
bridge: সেতু
+ bunker_silo: গাড়ি ভর্তি ও খালি করার জায়গা
+ chimney: চিম্নী
+ crane: কপিকল
+ dyke: বাঁধ
+ flagpole: সতর্কীকরণ পতাকা
lighthouse: বাতিঘর
+ mast: টাওয়ার
mine: খনি
+ monitoring_station: আবহাওয়া পর্যবেক্ষ্ণ কেন্দ্র
+ petroleum_well: তেলের খনি
pipeline: পাইপলাইন
+ silo: সিলো
+ surveillance: নজরদারী ক্যামেরা
tower: টাওয়ার
+ water_tower: পানির ট্যাংক
+ water_well: পানির কূপ
works: কারখানা
"yes": মনুষ্য-নির্মিত
military:
rest_of_world: অন্যান্য দেশসমূহ
show:
my edits: আমার সম্পাদনা
+ my messages: আমার বার্তাসমূহ
my profile: আমার প্রোফাইল
my settings: আমার সেটিংস
+ my comments: আমার মন্তব্যস্মূহ
oauth settings: OAuth সেটিংস
+ send message: বার্তা পাঠান
+ diary: দিনলিপি
edits: সম্পাদনাসমূহ
+ remove as friend: আনফ্রেন্ড
+ add as friend: বন্ধু যোগ করুন
+ mapper since: থেকে ম্যাপ বানাচ্ছেন
+ ct undecided: সিদ্ধান্তহীন
+ ct declined: বাতিলকৃত
email address: 'ই-মেইল ঠিকানা:'
description: বিবরণ
+ user location: ব্যবহারকারীর অবস্থান
settings_link_text: সেটিংস
my friends: আমার বন্ধুগণ
no friends: আপনি বন্ধুতালিকায় কাউকে যুক্ত করেননি।
+ nearby users: কাছাকাছি অন্য ব্যবহারকারী
block_history: সক্রিয় বাধাসমূহ
moderator_history: প্রদত্ত বাধাগুলি
comments: মন্তব্যসমূহ
reopened_by_anonymous: Adweredekaet gant un den dianv <abbr title='%{exact_time}'>%{when}
zo</abbr>
hidden_by: Kuzhet gant %{user} <abbr title='%{exact_time}'>%{when} zo</abbr>
+ report: Disklêriañ an notenn-mañ
query:
title: Arc'hweladurioù enklask
introduction: Klikit war ar gartenn evit kavout arc'hweladurioù e-kichen.
update:
new_report: Enrollet mat eo bet ho tanevell
successful_update: Hizivaet mat eo bet ho tanevell
+ provide_details: Reiñ ar munudoù goulennet
show:
title: '%{status} Kudenn #%{issue_id}'
reports:
issue_comments:
create:
comment_created: Krouet mat eo bet hoc'h evezhiadenn.
+ reports:
+ new:
+ title_html: Danevell %{link}
+ missing_params: N'haller ket krouiñ un danevell nevez
+ details: Roit muioc'h a vunudoù diwar-benn ar gudenn (dre ret)
+ disclaimer:
+ not_just_mistake: Sur oc'h n'eo ket ar gudenn-se ur fazi hepken.
+ categories:
+ diary_entry:
+ other_label: All
+ diary_comment:
+ other_label: All
+ user:
+ other_label: All
+ note:
+ other_label: All
+ create:
+ successful_report: Enrollet mat eo bet ho tanevell
+ provide_details: Roit ar munudoù goulennet mar plij
layouts:
logo:
alt_text: Logo OpenStreetMap
edit: Aozañ
history: Istor
export: Ezporzhiañ
+ issues: Kudennoù
data: Roadennoù
export_data: Ezporzhiañ roadennoù
gps_traces: Roudoù GPS
tags_help: bevennet gant virgulennoù
visibility: 'Gwelusted :'
visibility_help: Petra a dalvez ?
+ visibility_help_url: https://wiki.openstreetmap.org/wiki/FR:Visibilit%C3%A9_des_traces_GPS
upload_button: Enporzhiañ
help: Skoazell
+ help_url: https://wiki.openstreetmap.org/wiki/FR:Upload
create:
upload_trace: Kas ar roud GPS
trace_uploaded: Kaset eo bet ho restr GPX hag emañ en gortoz a vezañ ensoc'het
delete_trace: Dilemel ar roudenn-mañ
trace_not_found: N'eo ket bet kavet ar roud !
visibility: 'Gwelusted :'
+ confirm_delete: Diverkañ ar roudenn-mañ
trace_paging_nav:
- showing_page: Page %{page}
+ showing_page: Pajenn %{page}
older: ↓Roudoù kozh
newer: ↓Roudoù nevez
trace:
map: kartenn
index:
public_traces: Roudoù GPS foran
+ my_traces: Ma roudennoù GPS
public_traces_from: Roudoù GPS foran gant %{user}
description: Furchal ar roud GPS pellgarget nevez zo
tagged_with: ' balizennet gant %{tags}'
ar <abajenn wiki>href='https://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2i</a>.
upload_trace: Kas ur roud
see_all_traces: Gwelet an holl roudoù
+ see_my_traces: Gwelet ma roudennoù
delete:
scheduled_for_deletion: Roudenn da vezañ dilamet
make_public:
require_cookies:
cookies_needed: Diweredekaet eo an toupinoù ganeoc'h war a seblant - gweredekait
an toupinoù en ho merdeer a-raok mont pelloc'h, mar plij.
+ require_admin:
+ not_an_admin: Ret eo deoc'h bezañ merour evit kas an ober-mañ da benn.
require_moderator:
not_a_moderator: Ret eo deoc'h bezañ habaskaer evit kas an ober-mañ da benn.
+ require_moderator_or_admin:
+ not_a_moderator_or_admin: Ret eo deoc'h bezañ habaskaer pe merour evit kas an
+ ober-mañ da benn.
setup_user_auth:
blocked_zero_hour: Ur gemennadenn vallus zo war lec'hienn OpenStreetMap evidoc'h.
Ret eo deoc'h lenn ar gemennadenn-se a-raok gallout enrollañ ho kemmoù.
consider_pd: Ouzhpenn an asant amañ a-us, ez anavezan emañ ma zegasadennoù en
domani foran
consider_pd_why: petra eo se ?
+ consider_pd_why_url: https://www.osmfoundation.org/wiki/License/Why_would_I_want_my_contributions_to_be_public_domain
guidance: 'Titouroù da skoazellañ kompren an termenoù-mañ : a <a href="%{summary}">diverradenn
lennus gant mab-den</a> hag un nebeud <a href="%{translations}">troidigezhioù
anfurmel</a>'
agree: Mat eo din
+ declined: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
decline: Nac'h
you need to accept or decline: Lennit da gentañ Termenoù ar berzhidi nevez ha
goude-se nac'hit pe asantit evit gallout kenderc'hel.
if set location: Lakait ho lec'h-annez war ar bajenn %{settings_link} da welet
an implijerien war-dro.
settings_link_text: arventennoù
+ my friends: Ma mignoned
no friends: N'hoc'h eus ouzhpennet mignon ebet c'hoazh.
km away: war-hed %{count} km
m away: war-hed %{count} m
review link text: Heuilhit al liamm-mañ evel ma karot evit sellet ouzh diferadennoù
nevez ar c'henlabourer hag asantiñ dezho.
agreed_with_pd: Disklêriet hoc'h eus ivez emañ ho tegasadennoù en domani foran.
+ link: https://www.osmfoundation.org/wiki/License/Contributor_Terms
link text: Petra eo se ?
profile description: 'Deskrivadur ar profil :'
preferred languages: 'Yezhoù gwellañ karet :'
distance: Hed
errors:
no_route: Ne c'haller ket kavout un hent etre an daou lec'h-mañ.
- no_place: Ho tigarez, ne c'haller ket kavout al lec'h-mañ.
+ no_place: 'Ho tigarez, ne c''haller ket kavout al lec''h-mañ : %{place}.'
instructions:
continue_without_exit: Kenderc'hel war%{name}
slight_right_without_exit: Troit un tammig a-zehoù war %{name}
offramp_right_with_name: Kemer ar vretell dehou %{name}
+ offramp_right_with_directions: Kemer ar vretell dehou war-zu %{directions}
+ offramp_right_with_name_directions: Kemer ar vretell dehou war %{name}, war-zu
+ %{directions}
onramp_right_without_exit: Troit a-zehoù war ar bretell war %{name}
+ onramp_right_with_directions: Troit a-zehoù war ar vretell war-zu %{directions}
+ onramp_right_with_name_directions: Troit a-zehou war ar vretell war %{name},
+ war-zu %{directions}
+ onramp_right_without_directions: Treiñ a-zehou war ar vretell
+ onramp_right: Troit a gleiz war ar vretell
endofroad_right_without_exit: E penn an hent, troit a-zezhoù war %{name}
merge_right_without_exit: Mont a-zehoù war %{name}
fork_right_without_exit: Er forc'h-hent, troit a-zehoù war %{name}
uturn_without_exit: Grit hanter dro war %{name}
sharp_left_without_exit: Troit prim a-gleiz war %{name}
turn_left_without_exit: Treiñ a-gleiz war %{name}
+ offramp_left: Troit a gleiz war ar vretell
offramp_left_with_name: Kemer ar vretell gleiz betek %{name}
+ offramp_left_with_directions: Troit a-gleiz war ar vretell war-zu %{directions}
+ offramp_left_with_name_directions: Troit a-gleiz war ar vretell war %{name},
+ war-zu %{directions}
onramp_left_without_exit: Troit a-gleiz war ar vretell war %{name}
+ onramp_left_with_directions: Troit a-gleiz war ar vretell war-zu %{directions}
+ onramp_left_with_name_directions: Troit a-gleiz war ar vretell war %{name},
+ war-zu %{directions}
+ onramp_left_without_directions: Troit a-gleiz war ar vretell
+ onramp_left: Troit a-gleiz war ar vretell
endofroad_left_without_exit: E penn an hent, troit a-gleiz war %{name}
merge_left_without_exit: Mont a-gleiz war %{name}
fork_left_without_exit: Er forc'h-hent, troit a-gleiz war %{name}
roundabout_without_exit: Er c'hroashent-tro, troit %{name}
leave_roundabout_without_exit: Kuitaat ar c'roashent-tro - %{name}
stay_roundabout_without_exit: Chom war ar c'hroashent-tro -%{name}
- start_without_exit: Loc'hañ e dibenn %{name}
+ start_without_exit: Loc'hañ war %{name}
destination_without_exit: Tizhout al lec'h
against_oneway_without_exit: Mont gant ar straed untu war %{name}
end_oneway_without_exit: Dibenn an tremen untun war %{name}
reported_user: Rapporteret bruger
not_updated: Ikke opdateret
search: Søg
+ search_guidance: 'Søgning blandt sager:'
user_not_found: Brugeren findes ikke
status: Status
reports: Rapporter
der tilhører denne omarbejdelse, før du sletter den.
flash: Omarbejdelse slettet.
error: Der opstod en fejl under sletning af denne omarbejdelse.
+ validations:
+ invalid_characters: indholder ugyldige tegn
...
zugehörigen Versionen zurück, bevor du die Redaction löschst.
flash: Redaction wurde gelöscht.
error: Beim Löschen dieser Redaction ist ein Fehler aufgetreten.
+ validations:
+ leading_whitespace: hat anführendes Leerzeichen
+ trailing_whitespace: hat anhängendes Leerzeichen
+ invalid_characters: enthält ungültige Zeichen
+ url_characters: enthält besondere URL-Zeichen (%{characters})
...
σε αυτή τη σύνταξη πριν την καταστρέψετε.
flash: Η παράληψη καταστραφεί.
error: Εμφανίστηκε ένα σφάλμα που καταστρέφει αυτή τη σύνταξη.
+ validations:
+ invalid_characters: περιέχει μη έγκυρους χαρακτήρες
...
monitoring_station: Observada stacio
petroleum_well: Naftoŝakto
pier: Marponto
- pipeline: Tubolinio
+ pipeline: Konduktubo
silo: Tur-stokejo
storage_tank: Rezervujo
surveillance: Supergardo
previas pertenecientes a esta redacción antes de destruirla.
flash: Redacción destruida.
error: Se produjo un error al destruir esta redacción
+ validations:
+ invalid_characters: contiene caracteres no válidos
...
english_link: اصل انگلیسی
native:
title: درباره این صفحه
- text: شما در حال مشاهده ویرایش انگلیسی قانون کپیرایت هستید. برای دیدن %{native_link} می
- توانید به عقب باز گردید یا خواندن متن کپی رایت و %{mapping_link} را متوقف
+ text: شما در حال مشاهدهٔ ویرایش انگلیسی قانون کپیرایت هستید. برای دیدن %{native_link}
+ میتوانید به عقب بازگردید یا مطالعه دربارهٔ کپیرایت را رها و %{mapping_link}
کنید.
native_link: نسخهٔ فارسی
mapping_link: شروع به نقشهکشی
owner: 'مالک:'
description: 'شرح:'
tags: 'برچسبها:'
- none: هیچ کدام
+ none: هیچ
edit_trace: ویرایش این رد
delete_trace: حذف این رد
trace_not_found: رد یافت نشد!
appartenant à ce masquage avant de le supprimer.
flash: Masquage supprimé.
error: Une erreur est survenue lors de la suppression de ce masquage.
+ validations:
+ leading_whitespace: a des espaces au début
+ trailing_whitespace: a des espaces à la fin
+ invalid_characters: contient des caractères non valides
+ url_characters: contient des caractères d’URL spéciaux (%{characters})
...
# Author: Tacsipacsi
# Author: Uno20001
# Author: Urbalazs
+# Author: Zizzerus
---
hu:
time:
mielőtt törlöd ezt a módosítást.
flash: Módosítás törölve.
error: Hiba történt a művelet végrehajtása során.
+ validations:
+ invalid_characters: érvénytelen karaktereket tartalmaz
...
other: File GPX con %{count} punti da %{user}
description_without_count: File GPX da %{user}
application:
+ permission_denied: Non disponi dei permessi necessari per eseguire questa azione
require_cookies:
cookies_needed: Pare che tu abbia i cookie non abilitati - abilita i cookie
nel tuo browser prima di continuare.
appartenenti a questa revisione prima di eliminarla.
flash: Revisione eliminata.
error: Si è verificato un errore durante l'eliminazione.
+ validations:
+ invalid_characters: contiene caratteri non validi
+ url_characters: contiene caratteri URL speciali (%{characters})
...
not_empty: 교정이 비어 있지 않습니다. 파기하기 전에 이 교정에 속하는 모든 판을 교정 취소하세요.
flash: 교정을 파기했습니다.
error: 이 교정을 파기하는 중에 오류가 발생했습니다.
+ validations:
+ invalid_characters: 유효하지 않은 문자가 포함됨
+ url_characters: 특정 URL 문자 포함 (%{characters})
...
на оваа редакција пред да ја поништите.
flash: Редакцијата е поништена.
error: Се појави грешка при поништувањето на редакцијата.
+ validations:
+ leading_whitespace: има почетна белина
+ trailing_whitespace: има завршна белина
+ invalid_characters: содржи неважечки знаци
+ url_characters: содржи посебни знаци во URL-то (%{characters})
...
site:
export:
title: Експортаре
+ traces:
+ edit:
+ save_button: Апликаря модификэрилор
users:
login:
title: Презентаци-вэ
openid:
link text: че май есте ши аста?
public editing:
+ heading: 'Редактаря публикэ:'
enabled link text: че май есте ши аста?
contributor terms:
link text: че май есте ши аста?
+ profile description: 'Дескриеря профилулуй:'
+ preferred languages: 'Лимбиле преферате:'
preferred editor: 'Редактор преферат:'
+ image: 'Имаӂине:'
gravatar:
+ gravatar: Фолосиря Граватарулуй
link text: че май есте ши аста?
+ new image: Адэугаря имаӂиний
+ home location: 'Локул де решединцэ:'
+ latitude: 'Латитудине:'
+ longitude: 'Лонӂитудине:'
+ save changes button: Апликаря модификэрилор
...
"yes": Ambachtswinkel
emergency:
ambulance_station: Ambulancepost
+ assembly_point: Verzamelplaats
defibrillator: Defibrillator
landing_site: Noodlandingsbaan
phone: Noodtelefoon
stationery: Kantoorartikelenwinkel
supermarket: Supermarkt
tailor: Kleermaker
+ ticket: Ticketwinkel
tobacco: Tabakswinkel
toys: Speelgoedwinkel
travel_agency: Reisbureau
map: kaart
index:
public_traces: Openbare GPS-traces
+ my_traces: Mijn GPS-tracks
public_traces_from: Openbare GPS-traces van %{user}
description: Recente GPS-trackuploads bekijken
tagged_with: ' gelabeld met %{tags}'
trace</a> of kom meer te weten over GPS tracen op de <a href='https://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>wikipagina</a>.
upload_trace: Trace uploaden
see_all_traces: Alle traces bekijken
+ see_my_traces: Weergeef mijn tracks
delete:
scheduled_for_deletion: Trace staat op de lijst voor verwijdering
make_public:
betrokken zijn voordat u die vernietigt.
flash: De redigering is vernietigd.
error: Er is een fout opgetreden tijdens het verwijderen van de redigering.
+ validations:
+ invalid_characters: bevat ongeldige karakters
+ url_characters: bevat speciale URL karakters (%{characters})
...
a esta anulação antes de destruí-la.
flash: Redação destruída.
error: Houve um erro ao destruir esta anulação.
+ validations:
+ leading_whitespace: tem espaço em branco líder
+ trailing_whitespace: tem espaço em branco à direita
+ invalid_characters: contém caracteres inválidos
+ url_characters: contém caracteres de URL especiais (%{characters})
...
as versões pertencentes a esta supressão antes de a eliminar
flash: Supressão eliminada.
error: Ocorreu um erro ao tentar eliminar esta supressão.
+ validations:
+ leading_whitespace: tem espaços no início
+ trailing_whitespace: tem espaços no fim
+ invalid_characters: contém caracteres inválidos
+ url_characters: contém caracteres especiais dos URL (%{characters})
...
# Author: Irus
# Author: Kaganer
# Author: Komzpa
+# Author: Link2xt
# Author: Lockal
# Author: Macofe
# Author: Mavl
other: GPX-файл с %{count} точками от %{user}
description_without_count: GPX-файл от %{user}
application:
+ permission_denied: У вас нет прав для выполнения этого действия
require_cookies:
cookies_needed: Похоже, что у вас выключены куки. Пожалуйста, включите куки
в вашем браузере, прежде чем продолжить.
принадлежащих к этому исправлению перед удалением.
flash: Исправление уничтожено.
error: Произошла ошибка при уничтожении этого исправления.
+ validations:
+ invalid_characters: содержит недопустимые символы
+ url_characters: содержит специальные символы в URL (%{characters})
...
other: '%{user} tarafından %{count} noktalı GPX dosyası'
description_without_count: '%{user} tarafından GPX dosyası'
application:
+ permission_denied: Bu eyleme erişme izniniz yok
require_cookies:
cookies_needed: Çerezleri devre dışı bırakmış görünüyorsunuz - devam etmeden
önce lütfen tarayıcınızda çerezleri etkinleştirin.
against_oneway_without_exit: '%{name}X üzerinde tek yönlü git'
end_oneway_without_exit: '%{name} için tek yönün sonu'
roundabout_with_exit: Dönel kavşakta %{exit}. çıkışı kullanarak %{name} üzerine
+ roundabout_with_exit_ordinal: Dönel kavşakta %{exit} çıkışı kullanarak %{name}
+ üzerine
+ exit_roundabout: '%{name} giden kavşaktan çıkın'
unnamed: adsız yol
courtesy: Yolculuğun izniyle %{link}x
exit_counts:
sürümlerini tekrar düzenleyin.
flash: Redaksiyon kaldırıldı.
error: Bu redaksiyon kaldırılırken bir hata oluştu.
+ validations:
+ invalid_characters: geçersiz karakterler içeriyor
+ url_characters: özel URL karakterleri içerir (%{characters})
...
not_empty: 修訂尚未清空。請在銷毀前清除所有此修訂的版本。
flash: 修訂已銷毀。
error: 銷毀此修訂時發生錯誤。
+ validations:
+ leading_whitespace: 前頭有空白
+ trailing_whitespace: 後端有空白
+ invalid_characters: 包含無效字元
+ url_characters: 包含特定 URL 字元(%{characters})
...
require "test_helper"
-require "api_controller"
class ApiControllerTest < ActionController::TestCase
def setup
require "test_helper"
-require "browse_controller"
class BrowseControllerTest < ActionController::TestCase
##
require "test_helper"
-require "geocoder_controller"
class GeocoderControllerTest < ActionController::TestCase
##
require "test_helper"
-require "redactions_controller"
class RedactionsControllerTest < ActionController::TestCase
##
require "test_helper"
-require "osm"
class RedactionTest < ActiveSupport::TestCase
def test_cannot_redact_current
var addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); };
var removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); };
+ /**
+ * Compatible with L.Circle but a true marker instead of a path
+ */
+ var LocationMarker = L.Marker.extend({
+ initialize: function (latlng, options) {
+ L.Util.setOptions(this, options);
+ this._latlng = latlng;
+ this.createIcon();
+ },
+
+ /**
+ * Create a styled circle location marker
+ */
+ createIcon: function() {
+ var opt = this.options;
+
+ var style = '';
+
+ if (opt.color !== undefined) {
+ style += 'stroke:'+opt.color+';';
+ }
+ if (opt.weight !== undefined) {
+ style += 'stroke-width:'+opt.weight+';';
+ }
+ if (opt.fillColor !== undefined) {
+ style += 'fill:'+opt.fillColor+';';
+ }
+ if (opt.fillOpacity !== undefined) {
+ style += 'fill-opacity:'+opt.fillOpacity+';';
+ }
+ if (opt.opacity !== undefined) {
+ style += 'opacity:'+opt.opacity+';';
+ }
+
+ var icon = this._getIconSVG(opt, style);
+
+ this._locationIcon = L.divIcon({
+ className: icon.className,
+ html: icon.svg,
+ iconSize: [icon.w,icon.h],
+ });
+
+ this.setIcon(this._locationIcon);
+ },
+
+ /**
+ * Return the raw svg for the shape
+ *
+ * Split so can be easily overridden
+ */
+ _getIconSVG: function(options, style) {
+ var r = options.radius;
+ var w = options.weight;
+ var s = r + w;
+ var s2 = s * 2;
+ var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+s2+'" height="'+s2+'" version="1.1" viewBox="-'+s+' -'+s+' '+s2+' '+s2+'">' +
+ '<circle r="'+r+'" style="'+style+'" />' +
+ '</svg>';
+ return {
+ className: 'leafet-control-locate-location',
+ svg: svg,
+ w: s2,
+ h: s2
+ };
+ },
+
+ setStyle: function(style) {
+ L.Util.setOptions(this, style);
+ this.createIcon();
+ }
+ });
+
+ var CompassMarker = LocationMarker.extend({
+ initialize: function (latlng, heading, options) {
+ L.Util.setOptions(this, options);
+ this._latlng = latlng;
+ this._heading = heading;
+ this.createIcon();
+ },
+
+ setHeading: function(heading) {
+ this._heading = heading;
+ },
+
+ /**
+ * Create a styled arrow compass marker
+ */
+ _getIconSVG: function(options, style) {
+ var r = options.radius;
+ var w = (options.width + options.weight);
+ var h = (r+options.depth + options.weight)*2;
+ var path = 'M0,0 l'+(options.width/2)+','+options.depth+' l-'+(w)+',0 z';
+ var svgstyle = 'transform: rotate('+this._heading+'deg)';
+ var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+(w)+'" height="'+h+'" version="1.1" viewBox="-'+(w/2)+' 0 '+w+' '+h+'" style="'+svgstyle+'">'+
+ '<path d="'+path+'" style="'+style+'" />'+
+ '</svg>';
+ return {
+ className: 'leafet-control-locate-heading',
+ svg: svg,
+ w: w,
+ h: h
+ };
+ },
+ });
+
+
var LocateControl = L.Control.extend({
options: {
/** Position of the control */
* - false: never updates the map view when location changes.
* - 'once': set the view when the location is first determined
* - 'always': always updates the map view when location changes.
- * The map view follows the users location.
- * - 'untilPan': (default) like 'always', except stops updating the
+ * The map view follows the user's location.
+ * - 'untilPan': like 'always', except stops updating the
+ * view if the user has manually panned the map.
+ * The map view follows the user's location until she pans.
+ * - 'untilPanOrZoom': (default) like 'always', except stops updating the
* view if the user has manually panned the map.
- * The map view follows the users location until she pans.
+ * The map view follows the user's location until she pans.
*/
- setView: 'untilPan',
+ setView: 'untilPanOrZoom',
/** Keep the current map zoom level when setting the view and only pan. */
keepCurrentZoomLevel: false,
/** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */
drawCircle: true,
/** If set, the marker at the users' location is drawn. */
drawMarker: true,
+ /** If set and supported then show the compass heading */
+ showCompass: true,
/** The class to be used to create the marker. For example L.CircleMarker or L.Marker */
- markerClass: L.CircleMarker,
- /** Accuracy circle style properties. */
+ markerClass: LocationMarker,
+ /** The class us be used to create the compass bearing arrow */
+ compassClass: CompassMarker,
+ /** Accuracy circle style properties. NOTE these styles should match the css animations styles */
circleStyle: {
- color: '#136AEC',
- fillColor: '#136AEC',
+ className: 'leaflet-control-locate-circle',
+ color: '#136AEC',
+ fillColor: '#136AEC',
fillOpacity: 0.15,
- weight: 2,
- opacity: 0.5
+ weight: 0
},
/** Inner marker style properties. Only works if your marker class supports `setStyle`. */
markerStyle: {
- color: '#136AEC',
- fillColor: '#2A93EE',
- fillOpacity: 0.7,
- weight: 2,
- opacity: 0.9,
- radius: 5
+ className: 'leaflet-control-locate-marker',
+ color: '#fff',
+ fillColor: '#2A93EE',
+ fillOpacity: 1,
+ weight: 3,
+ opacity: 1,
+ radius: 9
+ },
+ /** Compass */
+ compassStyle: {
+ fillColor: '#2A93EE',
+ fillOpacity: 1,
+ weight: 0,
+ color: '#fff',
+ opacity: 1,
+ radius: 9, // How far is the arrow is from the center of of the marker
+ width: 9, // Width of the arrow
+ depth: 6 // Length of the arrow
},
/**
* Changes to accuracy circle and inner marker while following.
// color: '#FFA500',
// fillColor: '#FFB000'
},
+ followCompassStyle: {},
/** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */
icon: 'fa fa-map-marker',
iconLoading: 'fa fa-spinner fa-spin',
alert(err.message);
},
/**
- * This even is called when the user's location is outside the bounds set on the map.
+ * This event is called when the user's location is outside the bounds set on the map.
* The event is called repeatedly when the location changes.
*/
onLocationOutsideMapBounds: function(control) {
// extend the follow marker style and circle from the normal style
this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle);
this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle);
+ this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle);
},
/**
this._layer = this.options.layer || new L.LayerGroup();
this._layer.addTo(map);
this._event = undefined;
+ this._compassHeading = null;
this._prevBounds = null;
var linkAndIcon = this.options.createButtonCallback(container, this.options);
_onClick: function() {
this._justClicked = true;
this._userPanned = false;
+ this._userZoomed = false;
if (this._active && !this._event) {
// click while requesting
this._map.on('locationfound', this._onLocationFound, this);
this._map.on('locationerror', this._onLocationError, this);
this._map.on('dragstart', this._onDrag, this);
+ this._map.on('zoomstart', this._onZoom, this);
+ this._map.on('zoomend', this._onZoomEnd, this);
+ if (this.options.showCompass) {
+ if ('ondeviceorientationabsolute' in window) {
+ L.DomEvent.on(window, 'deviceorientationabsolute', this._onDeviceOrientation, this);
+ } else if ('ondeviceorientation' in window) {
+ L.DomEvent.on(window, 'deviceorientation', this._onDeviceOrientation, this);
+ }
+ }
}
},
this._map.off('locationfound', this._onLocationFound, this);
this._map.off('locationerror', this._onLocationError, this);
this._map.off('dragstart', this._onDrag, this);
+ this._map.off('zoomstart', this._onZoom, this);
+ this._map.off('zoomend', this._onZoomEnd, this);
+ if (this.options.showCompass) {
+ this._compassHeading = null;
+ if ('ondeviceorientationabsolute' in window) {
+ L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this);
+ } else if ('ondeviceorientation' in window) {
+ L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this);
+ }
+ }
},
/**
}
},
+ /**
+ *
+ */
+ _drawCompass: function() {
+ var latlng = this._event.latlng;
+
+ if (this.options.showCompass && latlng && this._compassHeading !== null) {
+ var cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle;
+ if (!this._compass) {
+ this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer);
+ } else {
+ this._compass.setLatLng(latlng);
+ this._compass.setHeading(this._compassHeading);
+ // If the compassClass can be updated with setStyle, update it.
+ if (this._compass.setStyle) {
+ this._compass.setStyle(cStyle);
+ }
+ }
+ //
+ }
+ if (this._compass && (!this.options.showCompass || this._compassHeading === null)) {
+ this._compass.removeFrom(this._layer);
+ this._compass = null;
+ }
+ },
+
/**
* Draw the marker and accuracy circle on the map.
*
}
}
+ this._drawCompass();
+
var t = this.options.strings.popup;
if (this.options.showPopup && t && this._marker) {
this._marker
.bindPopup(L.Util.template(t, {distance: distance, unit: unit}))
._popup.setLatLng(latlng);
}
+ if (this.options.showPopup && t && this._compass) {
+ this._compass
+ .bindPopup(L.Util.template(t, {distance: distance, unit: unit}))
+ ._popup.setLatLng(latlng);
+ }
},
/**
this._map.off('unload', this._unload, this);
},
+ /**
+ * Sets the compass heading
+ */
+ _setCompassHeading: function(angle) {
+ if (!isNaN(parseFloat(angle)) && isFinite(angle)) {
+ angle = Math.round(angle);
+
+ this._compassHeading = angle;
+ L.Util.requestAnimFrame(this._drawCompass, this);
+ } else {
+ this._compassHeading = null;
+ }
+ },
+
+ /**
+ * If the compass fails calibration just fail safely and remove the compass
+ */
+ _onCompassNeedsCalibration: function() {
+ this._setCompassHeading();
+ },
+
+ /**
+ * Process and normalise compass events
+ */
+ _onDeviceOrientation: function(e) {
+ if (!this._active) {
+ return;
+ }
+
+ if (e.webkitCompassHeading) {
+ // iOS
+ this._setCompassHeading(e.webkitCompassHeading);
+ } else if (e.absolute && e.alpha) {
+ // Android
+ this._setCompassHeading(360 - e.alpha)
+ }
+ },
+
/**
* Calls deactivate and dispatches an error.
*/
this.setView();
}
break;
+ case 'untilPanOrZoom':
+ if (!this._userPanned && !this._userZoomed) {
+ this.setView();
+ }
+ break;
case 'always':
this.setView();
break;
},
/**
- * When the user drags. Need a separate even so we can bind and unbind even listeners.
+ * When the user drags. Need a separate event so we can bind and unbind event listeners.
*/
_onDrag: function() {
// only react to drags once we have a location
}
},
+ /**
+ * When the user zooms. Need a separate event so we can bind and unbind event listeners.
+ */
+ _onZoom: function() {
+ // only react to drags once we have a location
+ if (this._event) {
+ this._userZoomed = true;
+ this._updateContainerStyle();
+ this._drawMarker();
+ }
+ },
+
+ /**
+ * After a zoom ends update the compass
+ */
+ _onZoomEnd: function() {
+ if (this._event) {
+ this._drawCompass();
+ }
+ },
+
/**
* Compute whether the map is following the user location with pan and zoom.
*/
return true;
} else if (this.options.setView === 'untilPan') {
return !this._userPanned;
+ } else if (this.options.setView === 'untilPanOrZoom') {
+ return !this._userPanned && !this._userZoomed;
}
},
// true if the user has panned the map after clicking the control
this._userPanned = false;
+
+ // true if the user has zoomed the map after clicking the control
+ this._userZoomed = false;
}
});