bundler-cache: true
- name: Create base branch
run: |
- git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.ref }}:danger_base
+ git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.sha }}:danger_base
- name: Create head branch
run: |
- git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.ref }}:danger_head
+ git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.sha }}:danger_head
- name: Danger
env:
DANGER_GITHUB_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
specs:
aasm (5.5.0)
concurrent-ruby (~> 1.0)
- actioncable (7.2.2)
- actionpack (= 7.2.2)
- activesupport (= 7.2.2)
+ actioncable (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
- actionmailbox (7.2.2)
- actionpack (= 7.2.2)
- activejob (= 7.2.2)
- activerecord (= 7.2.2)
- activestorage (= 7.2.2)
- activesupport (= 7.2.2)
+ actionmailbox (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ activejob (= 7.2.2.1)
+ activerecord (= 7.2.2.1)
+ activestorage (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
mail (>= 2.8.0)
- actionmailer (7.2.2)
- actionpack (= 7.2.2)
- actionview (= 7.2.2)
- activejob (= 7.2.2)
- activesupport (= 7.2.2)
+ actionmailer (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ actionview (= 7.2.2.1)
+ activejob (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
- actionpack (7.2.2)
- actionview (= 7.2.2)
- activesupport (= 7.2.2)
+ actionpack (7.2.2.1)
+ actionview (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4, < 3.2)
useragent (~> 0.16)
actionpack-page_caching (1.2.4)
actionpack (>= 4.0.0)
- actiontext (7.2.2)
- actionpack (= 7.2.2)
- activerecord (= 7.2.2)
- activestorage (= 7.2.2)
- activesupport (= 7.2.2)
+ actiontext (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ activerecord (= 7.2.2.1)
+ activestorage (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.2.2)
- activesupport (= 7.2.2)
+ actionview (7.2.2.1)
+ activesupport (= 7.2.2.1)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
active_record_union (1.3.0)
activerecord (>= 4.0)
- activejob (7.2.2)
- activesupport (= 7.2.2)
+ activejob (7.2.2.1)
+ activesupport (= 7.2.2.1)
globalid (>= 0.3.6)
- activemodel (7.2.2)
- activesupport (= 7.2.2)
- activerecord (7.2.2)
- activemodel (= 7.2.2)
- activesupport (= 7.2.2)
+ activemodel (7.2.2.1)
+ activesupport (= 7.2.2.1)
+ activerecord (7.2.2.1)
+ activemodel (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
timeout (>= 0.4.0)
- activerecord-import (1.8.1)
+ activerecord-import (2.0.0)
activerecord (>= 4.2)
- activestorage (7.2.2)
- actionpack (= 7.2.2)
- activejob (= 7.2.2)
- activerecord (= 7.2.2)
- activesupport (= 7.2.2)
+ activestorage (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ activejob (= 7.2.2.1)
+ activerecord (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
marcel (~> 1.0)
- activesupport (7.2.2)
+ activesupport (7.2.2.1)
base64
benchmark (>= 0.3)
bigdecimal
autoprefixer-rails (10.4.19.0)
execjs (~> 2)
aws-eventstream (1.3.0)
- aws-partitions (1.1013.0)
+ aws-partitions (1.1019.0)
aws-sdk-core (3.214.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sdk-kms (1.96.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5)
- aws-sdk-s3 (1.174.0)
+ aws-sdk-s3 (1.176.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
sprockets (> 3.0)
sprockets-rails
tilt
- date (3.4.0)
+ date (3.4.1)
debug (1.9.2)
irb (~> 1.10)
reline (>= 0.3.8)
activerecord (>= 3.0, < 9.0)
delayed_job (>= 3.0, < 5)
docile (1.4.1)
- doorkeeper (5.7.1)
+ doorkeeper (5.8.1)
railties (>= 5)
doorkeeper-i18n (5.2.7)
doorkeeper (>= 5.2)
- doorkeeper-openid_connect (1.8.9)
- doorkeeper (>= 5.5, < 5.8)
+ doorkeeper-openid_connect (1.8.10)
+ doorkeeper (>= 5.5, < 5.9)
jwt (>= 2.5)
drb (2.2.1)
dry-configurable (1.2.0)
factory_bot_rails (6.4.4)
factory_bot (~> 6.5)
railties (>= 5.0.0)
- faraday (2.12.1)
+ faraday (2.12.2)
faraday-net_http (>= 2.0, < 3.5)
json
logger
image_size (3.4.0)
in_threads (1.6.0)
iniparse (1.5.0)
- io-console (0.7.2)
+ io-console (0.8.0)
irb (1.14.1)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
- json (2.8.2)
+ json (2.9.0)
jwt (2.9.3)
base64
kgio (2.11.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- logger (1.6.1)
+ logger (1.6.2)
logstasher (2.1.5)
activesupport (>= 5.2)
request_store
mini_portile2 (2.8.8)
mini_racer (0.9.0)
libv8-node (~> 18.19.0.0)
- minitest (5.25.2)
+ minitest (5.25.4)
minitest-focus (1.4.0)
minitest (>= 4, < 6)
msgpack (1.7.5)
multi_xml (0.7.1)
bigdecimal (~> 3.1)
nap (1.1.0)
- net-http (0.5.0)
+ net-http (0.6.0)
uri
net-imap (0.5.1)
date
net-smtp (0.5.0)
net-protocol
nio4r (2.7.4)
- nokogiri (1.16.7)
+ nokogiri (1.17.1)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oauth (1.1.0)
pg (1.5.9)
popper_js (2.11.8)
progress (3.6.0)
- pstore (0.1.3)
- psych (5.2.0)
+ pstore (0.1.4)
+ psych (5.2.1)
+ date
stringio
public_suffix (6.0.1)
puma (5.6.9)
rackup (1.0.1)
rack (< 3)
webrick
- rails (7.2.2)
- actioncable (= 7.2.2)
- actionmailbox (= 7.2.2)
- actionmailer (= 7.2.2)
- actionpack (= 7.2.2)
- actiontext (= 7.2.2)
- actionview (= 7.2.2)
- activejob (= 7.2.2)
- activemodel (= 7.2.2)
- activerecord (= 7.2.2)
- activestorage (= 7.2.2)
- activesupport (= 7.2.2)
+ rails (7.2.2.1)
+ actioncable (= 7.2.2.1)
+ actionmailbox (= 7.2.2.1)
+ actionmailer (= 7.2.2.1)
+ actionpack (= 7.2.2.1)
+ actiontext (= 7.2.2.1)
+ actionview (= 7.2.2.1)
+ activejob (= 7.2.2.1)
+ activemodel (= 7.2.2.1)
+ activerecord (= 7.2.2.1)
+ activestorage (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
bundler (>= 1.15.0)
- railties (= 7.2.2)
+ railties (= 7.2.2.1)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
- rails-html-sanitizer (1.6.0)
+ rails-html-sanitizer (1.6.1)
loofah (~> 2.21)
- nokogiri (~> 1.14)
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails-i18n (7.0.10)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
rails_param (1.3.1)
actionpack (>= 3.2.0)
activesupport (>= 3.2.0)
- railties (7.2.2)
- actionpack (= 7.2.2)
- activesupport (= 7.2.2)
+ railties (7.2.2.1)
+ actionpack (= 7.2.2.1)
+ activesupport (= 7.2.2.1)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
rchardet (1.8.0)
rdoc (6.8.1)
psych (>= 4.0.0)
- regexp_parser (2.9.2)
- reline (0.5.11)
+ regexp_parser (2.9.3)
+ reline (0.5.12)
io-console (~> 0.5)
request_store (1.7.0)
rack (>= 1.4)
rouge (4.5.1)
rtlcss (0.2.1)
mini_racer (>= 0.6.3)
- rubocop (1.69.0)
+ rubocop (1.69.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
- regexp_parser (>= 2.4, < 3.0)
- rubocop-ast (>= 1.36.1, < 2.0)
+ regexp_parser (>= 2.9.3, < 3.0)
+ rubocop-ast (>= 1.36.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
- rubocop-ast (1.36.1)
+ rubocop-ast (1.36.2)
parser (>= 3.3.1.0)
rubocop-capybara (2.21.0)
rubocop (~> 1.41)
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
- securerandom (0.3.2)
+ securerandom (0.4.0)
selenium-webdriver (4.23.0)
base64 (~> 0.2)
logger (~> 1.4)
concurrent-ruby (~> 1.0)
unicode-display_width (2.6.0)
uri (0.13.1)
- useragent (0.16.10)
+ useragent (0.16.11)
validates_email_format_of (1.8.2)
i18n (>= 0.8.0)
simpleidn
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
- webrick (1.9.0)
+ webrick (1.9.1)
websocket (1.2.11)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
if user&.active?
can [:comment, :close, :reopen], Note
- can [:create, :show, :update, :destroy, :data], Trace
+ can [:create, :show, :update, :destroy], Trace
can [:details, :gpx_files], User
can [:index, :show, :update, :update_all, :destroy], UserPreference
if (OSM.MATOMO) {
map.on("layeradd", function (e) {
if (e.layer.options) {
- var goal = OSM.MATOMO.goals[e.layer.options.keyid];
+ var goal = OSM.MATOMO.goals[e.layer.options.layerId];
if (goal) {
$("body").trigger("matomogoal", goal);
});
function sendRemoteEditCommand(url, callback) {
- var iframe = $("<iframe>");
- var timeoutId = setTimeout(function () {
- alert(I18n.t("site.index.remote_failed"));
- iframe.remove();
- }, 5000);
-
- iframe
- .hide()
- .appendTo("body")
- .attr("src", url)
- .on("load", function () {
- clearTimeout(timeoutId);
- iframe.remove();
- if (callback) callback();
+ fetch(url, { mode: "no-cors", signal: AbortSignal.timeout(5000) })
+ .then(callback)
+ .catch(function () {
+ alert(I18n.t("site.index.remote_failed"));
});
}
map.whenReady(function () {
var miniMap = L.map(mapContainer[0], { attributionControl: false, zoomControl: false, keyboard: false })
- .addLayer(new layer.constructor({ apikey: layer.options.apikey }));
+ .addLayer(new layer.constructor(layer.options));
miniMap.dragging.disable();
miniMap.touchZoom.disable();
for (const layerDefinition of OSM.LAYER_DEFINITIONS) {
if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue;
- const layerOptions = {
- attribution: makeAttribution(layerDefinition.credit),
- code: layerDefinition.code,
- keyid: layerDefinition.keyId,
- name: I18n.t(`javascripts.map.base.${layerDefinition.nameId}`)
- };
- if (layerDefinition.apiKeyId) {
- layerOptions.apikey = OSM[layerDefinition.apiKeyId];
+ let layerConstructor = L.OSM.TileLayer;
+ const layerOptions = {};
+
+ for (const [property, value] of Object.entries(layerDefinition)) {
+ if (property === "credit") {
+ layerOptions.attribution = makeAttribution(value);
+ } else if (property === "nameId") {
+ layerOptions.name = I18n.t(`javascripts.map.base.${value}`);
+ } else if (property === "apiKeyId") {
+ layerOptions.apikey = OSM[value];
+ } else if (property === "leafletOsmId") {
+ layerConstructor = L.OSM[value];
+ } else {
+ layerOptions[property] = value;
+ }
}
- const layer = new L.OSM[layerDefinition.leafletOsmId](layerOptions);
+ const layer = new layerConstructor(layerOptions);
this.baseLayers.push(layer);
}
getMapBaseLayerId: function () {
var baseLayerId;
this.eachLayer(function (layer) {
- if (layer.options && layer.options.keyid) baseLayerId = layer.options.keyid;
+ if (layer.options && layer.options.layerId) baseLayerId = layer.options.layerId;
});
return baseLayerId;
},
+++ /dev/null
-$map-sidebar-icons: (
-
- /* Nodes (and ways as areas) */
-
- ".aeroway.aerodrome": ("filename": "aerodrome.p.16.png"),
-
- ".amenity.atm": ("filename": "amenity_atm.16.png", "invert": true),
- ".amenity.bank": ("filename": "amenity_bank.16.png", "invert": true),
- ".amenity.bar": ("filename": "amenity_bar.16.png", "invert": true),
- ".amenity.bench": ("filename": "amenity_bench.16.png", "invert": true),
- ".amenity.biergarten": ("filename": "amenity_biergarten.16.png", "invert": true),
- ".amenity.bicycle_parking": ("filename": "amenity_bicycle_parking.16.png"),
- ".amenity.bicycle_rental": ("filename": "transport_rental_bicycle.16.png"),
- ".amenity.bus_station": ("filename": "bus_station.n.16.png"),
- ".amenity.cafe": ("filename": "amenity_cafe.16.png", "invert": true),
- ".amenity.car_rental": ("filename": "transport_rental_car.16.png"),
- ".amenity.car_sharing": ("filename": "car_share.p.16.png"),
- ".amenity.childcare": ("filename": "amenity_childcare.p.16.png"),
- ".amenity.cinema": ("filename": "amenity_cinema.16.png", "invert": true),
- ".amenity.courthouse": ("filename": "amenity_courthouse.16.png", "invert": true),
- ".amenity.dentist": ("filename": "amenity_dentist.16.png"),
- ".amenity.doctors": ("filename": "amenity_doctors.16.png"),
- ".amenity.drinking_water": ("filename": "amenity_drinking_water.16.png", "invert": true),
- ".amenity.fast_food": ("filename": "amenity_fast_food.16.png", "invert": true),
- ".amenity.fire_station": ("filename": "amenity_fire_station.16.png", "invert": true),
- ".amenity.fuel": ("filename": "amenity_fuel.16.png"),
- ".amenity.hospital": ("filename": "amenity_hospital.16.png"),
- ".amenity.kindergarten": ("filename": "amenity_childcare.p.16.png"),
- ".amenity.library": ("filename": "library.p.16.png", "invert": true),
- ".amenity.nightclub": ("filename": "amenity_nightclub.16.png", "invert": true),
- ".amenity.parking": ("filename": "parking.p.16.png"),
- ".amenity.pharmacy": ("filename": "amenity_pharmacy.16.png"),
- ".amenity.place_of_worship": ("filename": "amenity_place_of_worship.16.png", "invert": true),
- ".amenity.police": ("filename": "amenity_police.16.png", "invert": true),
- ".amenity.post_box": ("filename": "post_box.p.16.png", "invert": true),
- ".amenity.post_office": ("filename": "post_office.p.16.png", "invert": true),
- ".amenity.prison": ("filename": "amenity_prison.16.png", "invert": true),
- ".amenity.pub": ("filename": "amenity_pub.16.png", "invert": true),
- ".amenity.restaurant": ("filename": "amenity_restaurant.16.png", "invert": true),
- ".amenity.recycling": ("filename": "amenity_recycling.16.png", "invert": true),
- ".amenity.school": ("filename": "education_school.p.16.png"),
- ".amenity.shelter": ("filename": "shelter2.p.16.png"),
- ".amenity.taxi": ("filename": "amenity_taxi.16.png"),
- ".amenity.telephone": ("filename": "telephone.p.16.png", "invert": true),
- ".amenity.theatre": ("filename": "amenity_theatre.16.png", "invert": true),
- ".amenity.toilets": ("filename": "amenity_toilets.16.png", "invert": true),
- ".amenity.townhall": ("filename": "amenity_townhall.16.png", "invert": true),
- ".amenity.university": ("filename": "education_university.p.16.png"),
- ".amenity.veterinary": ("filename": "health_veterinary.p.16.png"),
- ".amenity.waste_basket": ("filename": "amenity_waste_basket.16.png", "invert": true),
-
- ".barrier.gate": ("filename": "gate2.p.16.png", "invert": true),
-
- ".highway.bus_stop": ("filename": "highway_bus_stop.16.png"),
- ".highway.mini_roundabout": ("filename": "mini_round.p.16.png"),
- ".highway.traffic_signals": ("filename": "traffic_light.png", "invert": true),
- ".highway.turning_circle": ("filename": "turning_circle.p.16.png"),
-
- ".historic.archaeological_site": ("filename": "historic_archaeological_site.16.png", "invert": true),
- ".historic.castle": ("filename": "tourist_castle.p.16.png", "invert": true),
- ".historic.memorial": ("filename": "historic_memorial.16.png", "invert": true),
- ".historic.monument": ("filename": "historic_monument.16.png", "invert": true),
- ".historic.ruins": ("filename": "tourist_ruins.p.16.png", "invert": true),
- ".historic.wreck": ("filename": "tourist_wreck.p.16.png", "invert": true),
-
- ".man_made.lighthouse": ("filename": "man_made_lighthouse.16.png"),
- ".man_made.water_tower": ("filename": "man_made_water_tower.16.png", "invert": true),
- ".man_made.windmill": ("filename": "man_made_windmill.16.png", "invert": true),
-
- ".natural.tree": ("filename": "tree.p.16.png"),
-
- ".office.diplomatic": ("filename": "office_diplomatic.16.png"),
- ".office.estate_agent": ("filename": "shop_estateagent.16.png"),
-
- ".railway.halt": ("filename": "halt.p.16.png"),
- ".railway.station": ("filename": "station.p.16.png"),
- ".railway.level_crossing": ("filename": "level_crossing.p.16.png", "invert": true),
-
- ".shop": ("filename": "shop_convenience.p.16.png"),
- ".shop.alcohol": ("filename": "shop_alcohol.16.png"),
- ".shop.bakery": ("filename": "shop_bakery.16.png"),
- ".shop.bicycle": ("filename": "shop_bicycle.16.png"),
- ".shop.books": ("filename": "shop_books.16.png"),
- ".shop.butcher": ("filename": "shop_butcher.p.16.png"),
- ".shop.clothes": ("filename": "shop_clothes.16.png"),
- ".shop.car_parts": ("filename": "shop_car_parts.16.png"),
- ".shop.car_repair": ("filename": "shop_car_repair.16.png"),
- ".shop.convenience": ("filename": "shop_convenience.p.16.png"),
- ".shop.doityourself": ("filename": "shop_doityourself.16.png"),
- ".shop.electronics": ("filename": "shop_electronics.16.png"),
- ".shop.estate_agent": ("filename": "shop_estateagent.16.png"),
- ".shop.fashion": ("filename": "shop_clothes.16.png"),
- ".shop.florist": ("filename": "shop_florist.16.png"),
- ".shop.furniture": ("filename": "shop_furniture.16.png"),
- ".shop.garden_centre": ("filename": "shop_florist.16.png"),
- ".shop.gift": ("filename": "shop_gift.16.png"),
- ".shop.greengrocer": ("filename": "shop_greengrocer.p.16.png"),
- ".shop.hardware": ("filename": "shop_doityourself.16.png"),
- ".shop.hairdresser": ("filename": "shop_hairdresser.16.png"),
- ".shop.jewelry": ("filename": "shop_jewelry.16.png"),
- ".shop.mobile_phone": ("filename": "shop_mobile_phone.16.png"),
- ".shop.optician": ("filename": "shop_optician.16.png"),
- ".shop.pet": ("filename": "shop_pet.16.png"),
- ".shop.seafood": ("filename": "shop_seafood.16.png"),
- ".shop.shoes": ("filename": "shop_shoes.16.png"),
- ".shop.supermarket": ("filename": "shop_supermarket.p.16.png"),
-
- ".tourism.alpine_hut": ("filename": "tourism_alpine_hut.16.png"),
- ".tourism.camp_site": ("filename": "tourism_camp_site.16.png"),
- ".tourism.caravan_site": ("filename": "tourism_caravan_site.16.png"),
- ".tourism.hostel": ("filename": "tourism_hostel.16.png"),
- ".tourism.hotel": ("filename": "tourism_hotel.16.png"),
- ".tourism.motel": ("filename": "tourism_motel.16.png"),
- ".tourism.museum": ("filename": "tourism_museum.16.png", "invert": true),
- ".tourism.picnic_site": ("filename": "tourism_picnic_site.16.png", "invert": true),
- ".tourism.viewpoint": ("filename": "view_point.p.16.png", "invert": true),
- ".tourism.wilderness_hut": ("filename": "tourism_wilderness_hut.16.png"),
-
- /* Ways */
-
- ".aeroway.runway": ("filename": "runway.20.png"),
- ".aeroway.taxiway": ("filename": "taxiway.20.png"),
-
- ".barrier.wall": ("filename": "wall.20.png"),
-
- ".building": ("filename": "building.png"),
-
- ".highway.bridleway": ("filename": "bridleway.20.png"),
- ".highway.cycleway": ("filename": "cycleway.20.png"),
- ".highway.footway": ("filename": "footway.20.png"),
- ".highway.motorway": ("filename": "motorway.20.png"),
- ".highway.motorway_link": ("filename": "motorway.20.png"),
- ".highway.path": ("filename": "path.20.png"),
- ".highway.pedestrian": ("filename": "service.20.png"),
- ".highway.primary": ("filename": "primary.20.png"),
- ".highway.primary_link": ("filename": "primary.20.png"),
- ".highway.residential": ("filename": "unclassified.20.png"),
- ".highway.secondary": ("filename": "secondary.20.png"),
- ".highway.secondary_link": ("filename": "secondary.20.png"),
- ".highway.service": ("filename": "service.20.png"),
- ".highway.tertiary": ("filename": "tertiary.20.png"),
- ".highway.track": ("filename": "track.20.png"),
- ".highway.trunk": ("filename": "trunk.20.png"),
- ".highway.trunk_link": ("filename": "trunk.20.png"),
- ".highway.unclassified": ("filename": "unclassified.20.png"),
-
- ".landuse.brownfield": ("filename": "brownfield.png"),
- ".landuse.cemetery": ("filename": "cemetery.png"),
- ".landuse.commercial": ("filename": "commercial.png"),
- ".landuse.farmland": ("filename": "farmland.png"),
- ".landuse.farmyard": ("filename": "farmyard.png"),
- ".landuse.forest": ("filename": "forest.png"),
- ".landuse.grass": ("filename": "grass.png"),
- ".landuse.industrial": ("filename": "industrial.png"),
- ".landuse.meadow": ("filename": "meadow.png"),
- ".landuse.military": ("filename": "military.png"),
- ".landuse.residential": ("filename": "residential.png"),
- ".landuse.retail": ("filename": "retail.png"),
- ".landuse.tourism": ("filename": "tourism.png"),
-
- ".leisure.golf_course": ("filename": "golf.png"),
- ".leisure.park": ("filename": "park.png"),
- ".leisure.picnic_table": ("filename": "tourism_picnic_site.16.png", "invert": true),
- ".leisure.playground": ("filename": "leisure_playground.16.png", "invert": true),
- ".leisure.pitch": ("filename": "pitch.png"),
- ".leisure.nature_reserve": ("filename": "reserve.png"),
- ".leisure.water_park": ("filename": "leisure_water_park.16.png", "invert": true),
-
- ".natural.grassland": ("filename": "grassland.png"),
- ".natural.heath": ("filename": "heathland.png"),
- ".natural.scrub": ("filename": "scrub.png"),
- ".natural.water": ("filename": "lake.png"),
- ".natural.wood": ("filename": "wood.png"),
-
- ".railway.light_rail": ("filename": "light_rail.20.png"),
- ".railway.rail": ("filename": "rail.20.png"),
- ".railway.subway": ("filename": "subway.20.png"),
- ".railway.tram": ("filename": "tram.20.png"),
-
-)
@use "sass:map";
@import "parameters";
-@import "browse";
@import "bootstrap";
@import "rails_bootstrap_forms";
.search_forms {
display: block;
}
+
+ .username {
+ max-width: unset;
+ }
}
#sidebar .search_forms {
}
}
-/* Rules for block pages */
+/* Rules for tables with usernames */
+.messages-table .username,
#block_list .username {
max-width: 20em;
}
-/* Rules for tabs inside secondary background sections */
+/* Rules for navigation tabs */
+
+.nav-tabs .username {
+ max-width: 20em;
+}
.bg-body-secondary .nav-tabs {
--bs-border-color: var(--bs-secondary-border-subtle);
/* Rules for map sidebar icons */
-.browse-section {
- .node::before,
- .way::before,
- .relation::before {
- display: inline-block;
- width: 25px;
- margin-left: -25px;
- }
+.browse-section .browse-element-list {
+ line-height: 1.25rem;
- .node, .way, .relation {
- margin-left: 25px;
+ .browse-icon {
+ height: 1.25rem;
}
- .node::before { content: image-url('browse/node.svg'); }
- .way::before { content: image-url('browse/way.svg'); }
- .relation::before { content: image-url('browse/relation.svg'); }
-}
-
-@each $class, $item in $map-sidebar-icons {
- .browse-section #{$class}::before {
- content: image-url('browse/#{map.get($item, "filename")}');
+ .d-flex > .browse-icon {
+ height: max(20px, 1.25rem);
}
- @if map.get($item, "invert") {
- @include color-mode(dark) {
- .browse-section #{$class}::before {
- filter: invert(.8) hue-rotate(180deg);
- }
+ @include color-mode(dark) {
+ .browse-icon-invertible {
+ filter: invert(.8) hue-rotate(180deg);
}
}
}
end
def update
- logger.debug request.raw_post
-
relation = Relation.find(params[:id])
new_relation = Relation.from_xml(request.raw_post)
--- /dev/null
+module Api
+ module Traces
+ class DataController < ApiController
+ before_action :set_locale
+ before_action :authorize
+
+ authorize_resource :trace
+
+ before_action :offline_error
+
+ def show
+ trace = Trace.visible.find(params[:trace_id])
+
+ if trace.public? || trace.user == current_user
+ if request.format == Mime[:xml]
+ send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
+ elsif request.format == Mime[:gpx]
+ send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
+ elsif trace.file.attached?
+ redirect_to rails_blob_path(trace.file, :disposition => "attachment")
+ else
+ send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
+ end
+ else
+ head :forbidden
+ end
+ end
+
+ private
+
+ def offline_error
+ report_error "GPX files offline for maintenance", :service_unavailable if Settings.status == "gpx_offline"
+ end
+ end
+ end
+end
authorize_resource
- before_action :offline_error, :only => [:create, :destroy, :data]
+ before_action :offline_error, :only => [:create, :destroy]
skip_around_action :api_call_timeout, :only => :create
def show
end
end
- def data
- trace = Trace.visible.find(params[:id])
-
- if trace.public? || trace.user == current_user
- if request.format == Mime[:xml]
- send_data(trace.xml_file.read, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
- elsif request.format == Mime[:gpx]
- send_data(trace.xml_file.read, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
- elsif trace.file.attached?
- redirect_to rails_blob_path(trace.file, :disposition => "attachment")
- else
- send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
- end
- else
- head :forbidden
- end
- end
-
private
def do_create(file, tags, description, visibility)
def self.allow_thirdparty_images(**options)
content_security_policy(options) do |policy|
- policy.img_src("*")
+ policy.img_src("*", :data)
end
end
def map_layout
policy = request.content_security_policy.clone
- policy.child_src(*policy.child_src, "http://127.0.0.1:8111", "https://127.0.0.1:8112")
- policy.frame_src(*policy.frame_src, "http://127.0.0.1:8111", "https://127.0.0.1:8112")
- policy.connect_src(*policy.connect_src, Settings.nominatim_url, Settings.overpass_url, Settings.fossgis_osrm_url, Settings.graphhopper_url, Settings.fossgis_valhalla_url)
+ policy.connect_src(*policy.connect_src, "http://127.0.0.1:8111", Settings.nominatim_url, Settings.overpass_url, Settings.fossgis_osrm_url, Settings.graphhopper_url, Settings.fossgis_valhalla_url)
policy.form_action(*policy.form_action, "render.openstreetmap.org")
policy.style_src(*policy.style_src, :unsafe_inline)
@title = t ".title"
@issue_types = []
- @issue_types.push("Note", "User") if current_user.moderator?
- @issue_types.push("DiaryEntry", "DiaryComment", "User") if current_user.administrator?
+ @issue_types |= %w[Note User] if current_user.moderator?
+ @issue_types |= %w[DiaryEntry DiaryComment User] if current_user.administrator?
@users = User.joins(:roles).where(:user_roles => { :role => current_user.roles.map(&:role) }).distinct
@issues = Issue.visible_to(current_user)
end
def show
- @title = t ".title", :status => @issue.status.humanize, :issue_id => @issue.id
+ @title = t ".title.#{@issue.status}", :issue_id => @issue.id
@read_reports = @issue.read_reports
@unread_reports = @issue.unread_reports
@comments = @issue.comments
module BrowseHelper
+ def element_icon(type, object)
+ selected_icon_data = { :filename => "#{type}.svg", :priority => 1 }
+
+ unless object.redacted?
+ target_tags = object.tags.find_all { |k, _v| BROWSE_ICONS.key? k }.sort
+ title = target_tags.map { |k, v| "#{k}=#{v}" }.to_sentence unless target_tags.empty?
+
+ target_tags.each do |k, v|
+ icon_data = BROWSE_ICONS[k][v] || BROWSE_ICONS[k][:*]
+ selected_icon_data = icon_data if icon_data && icon_data[:priority] > selected_icon_data[:priority]
+ end
+ end
+
+ image_tag "browse/#{selected_icon_data[:filename]}",
+ :size => 20,
+ :class => ["align-bottom object-fit-none browse-icon", { "browse-icon-invertible" => selected_icon_data[:invert] }],
+ :title => title
+ end
+
def element_single_current_link(type, object)
- link_to object, { :class => element_class(type, object), :title => element_title(object), :rel => (link_follow(object) if type == "node") } do
+ link_to object, { :rel => (link_follow(object) if type == "node") } do
element_strikethrough object do
printable_element_name object
end
end
end
- def element_list_item(type, object, &block)
- tag.li :class => element_class(type, object), :title => element_title(object) do
- element_strikethrough object, &block
+ def element_list_item(type, object, &)
+ tag.li(tag.div(element_icon(type, object) + tag.div(:class => "align-self-center", &), :class => "d-flex gap-1"))
+ end
+
+ def element_list_item_with_strikethrough(type, object, &)
+ element_list_item type, object do
+ element_strikethrough object, &
end
end
end
end
- def element_class(type, object)
- classes = [type]
- classes += icon_tags(object).flatten.map { |t| h(t) } unless object.redacted?
- classes.join(" ")
- end
-
- def element_title(object)
- if object.redacted?
- ""
- else
- h(icon_tags(object).map { |k, v| "#{k}=#{v}" }.to_sentence)
- end
- end
-
def link_follow(object)
"nofollow" if object.tags.empty?
end
private
- ICON_TAGS = %w[aeroway amenity barrier building highway historic landuse leisure man_made natural office railway shop tourism waterway].freeze
-
- def icon_tags(object)
- object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort
- end
-
def name_locales(object)
object.tags.keys.map { |k| Regexp.last_match(1) if k =~ /^name:(.*)$/ }.flatten
end
if changeset.user.status == "deleted"
t("users.no_such_user.deleted")
elsif changeset.user.data_public?
- link_to changeset.user.display_name, changeset.user
+ link_to changeset.user.display_name, changeset.user, :class => "mw-100 d-inline-block align-bottom text-truncate text-wrap", :dir => "auto"
else
t("browse.anonymous")
end
elsif author.status == "deleted"
t("users.no_such_user.deleted")
else
- link_to h(author.display_name), link_options.merge(:controller => "/users", :action => "show", :display_name => author.display_name)
+ link_to h(author.display_name), link_options.merge(:controller => "/users", :action => "show", :display_name => author.display_name),
+ :class => "mw-100 d-inline-block align-bottom text-truncate text-wrap", :dir => "auto"
end
end
end
end
end
+ def block_short_status(block)
+ if block.active?
+ if block.needs_view?
+ if block.ends_at > Time.now.utc
+ t("user_blocks.helper.short.active_unread")
+ else
+ t("user_blocks.helper.short.expired_unread")
+ end
+ else
+ t("user_blocks.helper.short.active")
+ end
+ else
+ if block.revoker_id.nil?
+ if block.updated_at > block.ends_at
+ t("user_blocks.helper.short.read_html", :time => block_short_time_in_past(block.updated_at))
+ else
+ t("user_blocks.helper.short.ended")
+ end
+ else
+ t("user_blocks.helper.short.revoked_html", :name => link_to(block.revoker.display_name, block.revoker,
+ :class => "username d-inline-block text-truncate text-wrap align-bottom",
+ :dir => "auto"))
+ end
+ end
+ end
+
+ def block_short_time_in_future(time)
+ tag.time l(time.to_date),
+ :datetime => time.xmlschema,
+ :title => t("user_blocks.helper.short.time_in_future_title",
+ :time_absolute => l(time, :format => :friendly),
+ :time_relative => time_ago_in_words(time))
+ end
+
+ def block_short_time_in_past(time)
+ tag.time l(time.to_date),
+ :datetime => time.xmlschema,
+ :title => t("user_blocks.helper.short.time_in_past_title",
+ :time_absolute => l(time, :format => :friendly),
+ :time_relative => time_ago_in_words(time, :scope => :"datetime.distance_in_words_ago"))
+ end
+
def block_duration_in_words(duration)
# Ensure the requested duration isn't negative, even by a millisecond
duration = 0 if duration.negative?
-<li><%= linked_name = link_to printable_element_name(containing_relation.relation), containing_relation.relation
- if containing_relation.member_role.blank?
- t ".entry_html", :relation_name => linked_name
- else
- t ".entry_role_html", :relation_name => linked_name, :relation_role => containing_relation.member_role
- end %>
-</li>
+<%= element_list_item "relation", containing_relation.relation do %>
+ <%= linked_name = link_to printable_element_name(containing_relation.relation), containing_relation.relation
+ if containing_relation.member_role.blank?
+ linked_name
+ else
+ t ".entry_role_html", :relation_name => linked_name, :relation_role => containing_relation.member_role
+ end %>
+<% end %>
<% unless node.ways.empty? %>
<details <%= "open" if node.ways.count < 10 %>>
<summary><%= t "browse.part_of_ways", :count => node.ways.uniq.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<% node.ways.uniq.each do |way| %>
- <li><%= element_single_current_link "way", way %></li>
+ <%= element_list_item "way", way do %>
+ <%= element_single_current_link "way", way %>
+ <% end %>
<% end %>
</ul>
</details>
<% unless node.containing_relation_members.empty? %>
<details <%= "open" if node.containing_relation_members.count < 10 %>>
<summary><%= t "browse.part_of_relations", :count => node.containing_relation_members.uniq.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<%= render :partial => "browse/containing_relation", :collection => node.containing_relation_members.uniq %>
</ul>
</details>
<h4><%= t "browse.part_of" %></h4>
<details <%= "open" if relation.containing_relation_members.count < 10 %>>
<summary><%= t "browse.part_of_relations", :count => relation.containing_relation_members.uniq.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<%= render :partial => "browse/containing_relation", :collection => relation.containing_relation_members.uniq %>
</ul>
</details>
<h4><%= t ".members" %></h4>
<details <%= "open" if relation.relation_members.count < 10 %>>
<summary><%= t ".members_count", :count => relation.relation_members.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<%= render :partial => "browse/relation_member", :collection => relation.relation_members %>
</ul>
</details>
<% linked_name = link_to printable_element_name(relation_member.member), relation_member.member, { :rel => link_follow(relation_member.member) }
type_str = t ".type.#{relation_member.member_type.downcase}" %>
-<%= element_list_item relation_member.member_type.downcase, relation_member.member do %>
+<%= element_list_item_with_strikethrough relation_member.member_type.downcase, relation_member.member do %>
<%= if relation_member.member_role.blank?
t ".entry_html", :type => type_str, :name => linked_name
else
<h4><%= t "browse.part_of" %></h4>
<details <%= "open" if way.containing_relation_members.count < 10 %>>
<summary><%= t "browse.part_of_relations", :count => way.containing_relation_members.uniq.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<%= render :partial => "browse/containing_relation", :collection => way.containing_relation_members.uniq %>
</ul>
</details>
<h4><%= t ".nodes" %></h4>
<details <%= "open" if way.way_nodes.count < 10 %>>
<summary><%= t ".nodes_count", :count => way.way_nodes.count %></summary>
- <ul class="list-unstyled">
+ <ul class="list-unstyled browse-element-list">
<% way.way_nodes.each do |wn| %>
- <li>
+ <%= element_list_item "node", wn.node do %>
<%= element_single_current_link "node", wn.node %>
<% related_ways = wn.node.ways.reject { |w| w.id == wn.way_id } %>
+ <% icon_connector = " " %>
<% if related_ways.size > 0 then %>
(<%= t ".also_part_of_html",
:count => related_ways.size,
- :related_ways => to_sentence(related_ways.map { |w| element_single_current_link "way", w }) %>)
+ :related_ways => to_sentence(related_ways.map { |w| element_icon("way", w) + icon_connector + element_single_current_link("way", w) }) %>)
<% end %>
- </li>
+ <% end %>
<% end %>
</ul>
</details>
<%= turbo_frame_tag "changeset_#{type.pluralize}" do %>
<%= render :partial => "paging_nav", :locals => { :type => type, :pages => pages } %>
- <ul class="list-unstyled" data-turbo="false">
+ <ul class="list-unstyled browse-element-list" data-turbo="false">
<% elements.each do |element| %>
- <%= element_list_item type, element do
- t "printable_name.current_and_old_links_html",
+ <%= element_list_item_with_strikethrough type, element do %>
+ <%= t "printable_name.current_and_old_links_html",
:current_link => link_to(printable_element_name(element), :controller => type.pluralize, :action => :show, :id => element.id[0]),
- :old_link => link_to(printable_element_version(element), :controller => "old_#{type.pluralize}", :action => :show, :id => element.id[0], :version => element.version)
- end %>
+ :old_link => link_to(printable_element_version(element), :controller => "old_#{type.pluralize}", :action => :show, :id => element.id[0], :version => element.version) %>
+ <% end %>
<% end %>
</ul>
<% end %>
</div>
<div class="mb-3 col-md-auto">
<%= select_tag :issue_type,
- options_for_select(@issue_types, params[:issue_type]),
+ options_for_select(@issue_types.map { |issue_type| [issue_type.constantize.model_name.human, issue_type] }, params[:issue_type]),
:include_blank => t(".select_type"),
:data => { :behavior => "category_dropdown" },
:class => "form-select" %>
<% content_for :heading do %>
-<h1><%= t ".title", :status => @issue.status.humanize, :issue_id => @issue.id %></h1>
+<h1><%= @title %></h1>
<p><%= @issue.reportable.model_name.human %> : <%= link_to reportable_title(@issue.reportable), reportable_url(@issue.reportable) %></p>
<p class="text-body-secondary">
<small>
</ul>
<% if current_user && current_user.id %>
<div class='d-inline-flex dropdown user-menu logged-in'>
- <button class='d-flex gap-1 align-items-center justify-content-center dropdown-toggle btn btn-outline-secondary border-secondary-subtle bg-body text-secondary px-2 py-1 flex-grow-1' type='button' data-bs-toggle='dropdown'>
+ <button class='d-flex gap-1 align-items-center justify-content-center dropdown-toggle btn btn-outline-secondary border-secondary-subtle bg-body text-secondary px-2 py-1 flex-grow-1 mw-100' type='button' data-bs-toggle='dropdown'>
<%= user_thumbnail_tiny(current_user, :class => "user_thumbnail_tiny rounded-1 bg-body") %>
<% if current_user.new_messages.size > 0 %>
<span class="badge count-number position-static m-1"><%= current_user.new_messages.size %></span>
<% end %>
- <span class='username align-middle text-truncate'>
+ <span class='username align-middle text-truncate' dir='auto'>
<%= current_user.display_name %>
</span>
</button>
<%= tag.tr(:id => "inbox-#{message.id}", :class => { "table-success" => !message.message_read? }) do %>
- <td><%= link_to message.sender.display_name, user_path(message.sender) %></td>
+ <td><%= link_to message.sender.display_name, user_path(message.sender), :class => "username d-inline-block text-truncate text-wrap align-bottom", :dir => "auto" %></td>
<td><%= link_to message.title, message_path(message) %></td>
<td class="text-nowrap"><%= l message.sent_on, :format => :friendly %></td>
<td class="text-nowrap">
<%= tag.tr(:id => "outbox-#{message.id}") do %>
- <td><%= link_to message.recipient.display_name, user_path(message.recipient) %></td>
+ <td><%= link_to message.recipient.display_name, user_path(message.recipient), :class => "username d-inline-block text-truncate text-wrap align-bottom", :dir => "auto" %></td>
<td><%= link_to message.title, message_path(message) %></td>
<td class="text-nowrap"><%= l message.sent_on, :format => :friendly %></td>
<td class="text-nowrap">
</div>
<div class="details" data-coordinates="<%= @note.lat %>,<%= @note.lon %>" data-status="<%= @note.status %>">
- <ul class="list-unstyled">
- <li><%= note_event("opened", @note.created_at, @note.author) %></li>
- <% if @note.status == "closed" %>
- <li><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></li>
- <% end %>
- <li>
- <%= t "browse.location" %>
- <%= link_to(t(".coordinates_html",
- :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
- :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
- root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}")) %>
- </li>
- </ul>
+ <p class="mb-2"><%= note_event("opened", @note.created_at, @note.author) %></p>
+ <% if @note.status == "closed" %>
+ <p class="mb-2"><%= note_event(@note.status, @note.closed_at, @note.all_comments.last.author) %></p>
+ <% end %>
+ <p>
+ <%= t "browse.location" %>
+ <%= link_to t(".coordinates_html",
+ :latitude => tag.span(number_with_delimiter(@note.lat), :class => "latitude"),
+ :longitude => tag.span(number_with_delimiter(@note.lon), :class => "longitude")),
+ root_path(:anchor => "map=18/#{@note.lat}/#{@note.lon}") %>
+ </p>
</div>
<% if @note_comments.find { |comment| comment.author.nil? } -%>
</li>
<% end %>
<li class="nav-item">
- <%= link_to t(".traces_from", :user => @target_user&.display_name), { :controller => "traces", :action => "index", :display_name => @target_user&.display_name }, { :class => "nav-link active" } %>
+ <%= link_to t(".traces_from_html", :user => tag.span(@target_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
+ { :controller => "traces", :action => "index", :display_name => @target_user.display_name }, { :class => "nav-link active" } %>
</li>
<% end %>
</ul>
<tr>
<% if @show_user_name %>
- <td><%= link_to block.user.display_name, block.user, :class => "username d-inline-block text-truncate text-wrap" %></td>
+ <td><%= link_to block.user.display_name, block.user, :class => "username d-inline-block text-truncate text-wrap", :dir => "auto" %></td>
<% end %>
<% if @show_creator_name %>
- <td><%= link_to block.creator.display_name, block.creator, :class => "username d-inline-block text-truncate text-wrap" %></td>
+ <td><%= link_to block.creator.display_name, block.creator, :class => "username d-inline-block text-truncate text-wrap", :dir => "auto" %></td>
<% end %>
<td><%= h truncate(block.reason) %></td>
- <td><%= h block_status(block) %></td>
- <td>
- <% if block.revoker_id.nil? %>
- <%= t(".not_revoked") %>
- <% else %>
- <%= link_to block.revoker.display_name, block.revoker %>
- <% end %>
- </td>
+ <td><%= block_short_time_in_past(block.created_at) %></td>
+ <% if block.ends_at > Time.now.utc %>
+ <td><%= block_short_time_in_future(block.ends_at) %></td>
+ <% else %>
+ <td><%= block_short_time_in_past(block.ends_at) %></td>
+ <% end %>
+ <td><%= h block_short_status(block) %></td>
<td><%= link_to t(".show"), block %></td>
<td><% if can?(:edit, block) %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %></td>
</tr>
<% on_user = @user || @user_block&.user %>
<% if on_user != current_user && on_user&.blocks&.exists? %>
<li class="nav-item">
- <%= link_to t(".blocks_on_user", :user => on_user.display_name),
+ <%= link_to t(".blocks_on_user_html", :user => tag.span(on_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
user_blocks_on_path(on_user),
:class => ["nav-link", { :active => action_name == "blocks_on" }] %>
</li>
<% by_user = @user || @user_block&.creator %>
<% if by_user != current_user && by_user&.blocks_created&.exists? %>
<li class="nav-item">
- <%= link_to t(".blocks_by_user", :user => by_user.display_name),
+ <%= link_to t(".blocks_by_user_html", :user => tag.span(by_user.display_name, :class => "username text-truncate d-inline-block align-bottom", :dir => "auto")),
user_blocks_by_path(by_user),
:class => ["nav-link", { :active => action_name == "blocks_by" }] %>
</li>
<th><%= t ".creator_name" %></th>
<% end %>
<th><%= t ".reason" %></th>
+ <th><%= t ".start" %></th>
+ <th><%= t ".end" %></th>
<th><%= t ".status" %></th>
- <th><%= t ".revoker_name" %></th>
<th></th>
<th></th>
</tr>
--- /dev/null
+aeroway:
+ aerodrome: { filename: "aerodrome.p.16.png" }
+
+ runway: { filename: "runway.20.png" }
+ taxiway: { filename: "taxiway.20.png" }
+
+amenity:
+ atm: { filename: "amenity_atm.16.png", invert: true }
+ bank: { filename: "amenity_bank.16.png", invert: true }
+ bar: { filename: "amenity_bar.16.png", invert: true }
+ bench: { filename: "amenity_bench.16.png", invert: true }
+ biergarten: { filename: "amenity_biergarten.16.png", invert: true }
+ bicycle_parking: { filename: "amenity_bicycle_parking.16.png" }
+ bicycle_rental: { filename: "transport_rental_bicycle.16.png" }
+ bus_station: { filename: "bus_station.n.16.png" }
+ cafe: { filename: "amenity_cafe.16.png", invert: true }
+ car_rental: { filename: "transport_rental_car.16.png" }
+ car_sharing: { filename: "car_share.p.16.png" }
+ childcare: { filename: "amenity_childcare.p.16.png" }
+ cinema: { filename: "amenity_cinema.16.png", invert: true }
+ courthouse: { filename: "amenity_courthouse.16.png", invert: true }
+ dentist: { filename: "amenity_dentist.16.png" }
+ doctors: { filename: "amenity_doctors.16.png" }
+ drinking_water: { filename: "amenity_drinking_water.16.png", invert: true }
+ fast_food: { filename: "amenity_fast_food.16.png", invert: true }
+ fire_station: { filename: "amenity_fire_station.16.png", invert: true }
+ fuel: { filename: "amenity_fuel.16.png" }
+ hospital: { filename: "amenity_hospital.16.png" }
+ kindergarten: { filename: "amenity_childcare.p.16.png" }
+ library: { filename: "library.p.16.png", invert: true }
+ nightclub: { filename: "amenity_nightclub.16.png", invert: true }
+ parking: { filename: "parking.p.16.png" }
+ pharmacy: { filename: "amenity_pharmacy.16.png" }
+ place_of_worship: { filename: "amenity_place_of_worship.16.png", invert: true }
+ police: { filename: "amenity_police.16.png", invert: true }
+ post_box: { filename: "post_box.p.16.png", invert: true }
+ post_office: { filename: "post_office.p.16.png", invert: true }
+ prison: { filename: "amenity_prison.16.png", invert: true }
+ pub: { filename: "amenity_pub.16.png", invert: true }
+ restaurant: { filename: "amenity_restaurant.16.png", invert: true }
+ recycling: { filename: "amenity_recycling.16.png", invert: true }
+ school: { filename: "education_school.p.16.png" }
+ shelter: { filename: "shelter2.p.16.png" }
+ taxi: { filename: "amenity_taxi.16.png" }
+ telephone: { filename: "telephone.p.16.png", invert: true }
+ theatre: { filename: "amenity_theatre.16.png", invert: true }
+ toilets: { filename: "amenity_toilets.16.png", invert: true }
+ townhall: { filename: "amenity_townhall.16.png", invert: true }
+ university: { filename: "education_university.p.16.png" }
+ veterinary: { filename: "health_veterinary.p.16.png" }
+ waste_basket: { filename: "amenity_waste_basket.16.png", invert: true }
+
+barrier:
+ gate: { filename: "gate2.p.16.png", invert: true }
+
+ wall: { filename: "wall.20.png" }
+
+building:
+ :*: { filename: "building.png" }
+
+highway:
+ bus_stop: { filename: "highway_bus_stop.16.png" }
+ mini_roundabout: { filename: "mini_round.p.16.png" }
+ traffic_signals: { filename: "traffic_light.png", invert: true }
+ turning_circle: { filename: "turning_circle.p.16.png" }
+
+ bridleway: { filename: "bridleway.20.png" }
+ cycleway: { filename: "cycleway.20.png" }
+ footway: { filename: "footway.20.png" }
+ motorway: { filename: "motorway.20.png" }
+ motorway_link: { filename: "motorway.20.png" }
+ path: { filename: "path.20.png" }
+ pedestrian: { filename: "service.20.png" }
+ primary: { filename: "primary.20.png" }
+ primary_link: { filename: "primary.20.png" }
+ residential: { filename: "unclassified.20.png" }
+ secondary: { filename: "secondary.20.png" }
+ secondary_link: { filename: "secondary.20.png" }
+ service: { filename: "service.20.png" }
+ tertiary: { filename: "tertiary.20.png" }
+ track: { filename: "track.20.png" }
+ trunk: { filename: "trunk.20.png" }
+ trunk_link: { filename: "trunk.20.png" }
+ unclassified: { filename: "unclassified.20.png" }
+
+historic:
+ archaeological_site: { filename: "historic_archaeological_site.16.png", invert: true }
+ castle: { filename: "tourist_castle.p.16.png", invert: true }
+ memorial: { filename: "historic_memorial.16.png", invert: true }
+ monument: { filename: "historic_monument.16.png", invert: true }
+ ruins: { filename: "tourist_ruins.p.16.png", invert: true }
+ wreck: { filename: "tourist_wreck.p.16.png", invert: true }
+
+landuse:
+ brownfield: { filename: "brownfield.png" }
+ cemetery: { filename: "cemetery.png" }
+ commercial: { filename: "commercial.png" }
+ farmland: { filename: "farmland.png" }
+ farmyard: { filename: "farmyard.png" }
+ forest: { filename: "forest.png" }
+ grass: { filename: "grass.png" }
+ industrial: { filename: "industrial.png" }
+ meadow: { filename: "meadow.png" }
+ military: { filename: "military.png" }
+ residential: { filename: "residential.png" }
+ retail: { filename: "retail.png" }
+ tourism: { filename: "tourism.png" }
+
+leisure:
+ golf_course: { filename: "golf.png" }
+ park: { filename: "park.png" }
+ picnic_table: { filename: "tourism_picnic_site.16.png", invert: true }
+ playground: { filename: "leisure_playground.16.png", invert: true }
+ pitch: { filename: "pitch.png" }
+ nature_reserve: { filename: "reserve.png" }
+ water_park: { filename: "leisure_water_park.16.png", invert: true }
+
+man_made:
+ lighthouse: { filename: "man_made_lighthouse.16.png" }
+ water_tower: { filename: "man_made_water_tower.16.png", invert: true }
+ windmill: { filename: "man_made_windmill.16.png", invert: true }
+
+natural:
+ tree: { filename: "tree.p.16.png" }
+
+ grassland: { filename: "grassland.png" }
+ heath: { filename: "heathland.png" }
+ scrub: { filename: "scrub.png" }
+ water: { filename: "lake.png" }
+ wood: { filename: "wood.png" }
+
+office:
+ diplomatic: { filename: "office_diplomatic.16.png" }
+ estate_agent: { filename: "shop_estateagent.16.png" }
+
+railway:
+ halt: { filename: "halt.p.16.png" }
+ station: { filename: "station.p.16.png" }
+ level_crossing: { filename: "level_crossing.p.16.png", invert: true }
+
+ light_rail: { filename: "light_rail.20.png" }
+ rail: { filename: "rail.20.png" }
+ subway: { filename: "subway.20.png" }
+ tram: { filename: "tram.20.png" }
+
+shop:
+ :*: { filename: "shop_convenience.p.16.png", priority: 20 }
+ alcohol: { filename: "shop_alcohol.16.png" }
+ bakery: { filename: "shop_bakery.16.png" }
+ bicycle: { filename: "shop_bicycle.16.png" }
+ books: { filename: "shop_books.16.png" }
+ butcher: { filename: "shop_butcher.p.16.png" }
+ clothes: { filename: "shop_clothes.16.png" }
+ car_parts: { filename: "shop_car_parts.16.png" }
+ car_repair: { filename: "shop_car_repair.16.png" }
+ convenience: { filename: "shop_convenience.p.16.png" }
+ doityourself: { filename: "shop_doityourself.16.png" }
+ electronics: { filename: "shop_electronics.16.png" }
+ estate_agent: { filename: "shop_estateagent.16.png" }
+ fashion: { filename: "shop_clothes.16.png" }
+ florist: { filename: "shop_florist.16.png" }
+ furniture: { filename: "shop_furniture.16.png" }
+ garden_centre: { filename: "shop_florist.16.png" }
+ gift: { filename: "shop_gift.16.png" }
+ greengrocer: { filename: "shop_greengrocer.p.16.png" }
+ hardware: { filename: "shop_doityourself.16.png" }
+ hairdresser: { filename: "shop_hairdresser.16.png" }
+ jewelry: { filename: "shop_jewelry.16.png" }
+ mobile_phone: { filename: "shop_mobile_phone.16.png" }
+ optician: { filename: "shop_optician.16.png" }
+ pet: { filename: "shop_pet.16.png" }
+ seafood: { filename: "shop_seafood.16.png" }
+ shoes: { filename: "shop_shoes.16.png" }
+ supermarket: { filename: "shop_supermarket.p.16.png" }
+
+tourism:
+ alpine_hut: { filename: "tourism_alpine_hut.16.png" }
+ camp_site: { filename: "tourism_camp_site.16.png" }
+ caravan_site: { filename: "tourism_caravan_site.16.png" }
+ hostel: { filename: "tourism_hostel.16.png" }
+ hotel: { filename: "tourism_hotel.16.png" }
+ motel: { filename: "tourism_motel.16.png" }
+ museum: { filename: "tourism_museum.16.png", invert: true }
+ picnic_site: { filename: "tourism_picnic_site.16.png", invert: true }
+ viewpoint: { filename: "view_point.p.16.png", invert: true }
+ wilderness_hut: { filename: "tourism_wilderness_hut.16.png" }
--- /dev/null
+begin
+ BROWSE_ICONS = YAML.load_file(Rails.root.join("config/browse_icons.yml")).transform_values do |tag_key_data|
+ transformed_tag_key_data = {}
+ tag_key_data.each do |tag_value, tag_value_data|
+ tag_value_data = tag_value_data.deep_symbolize_keys
+ tag_value_data[:priority] ||= tag_value == :* ? 10 : 100
+ transformed_tag_key_data[tag_value] = tag_value_data
+ end
+ transformed_tag_key_data
+ end
+rescue StandardError
+ BROWSE_ICONS = {}.freeze
+end
- leafletOsmId: "Mapnik"
code: "M"
- keyId: "mapnik"
+ layerId: "mapnik"
nameId: "standard"
credit:
id: "make_a_donation"
- leafletOsmId: "CyclOSM"
code: "Y"
- keyId: "cyclosm"
+ layerId: "cyclosm"
nameId: "cyclosm"
credit:
id: "cyclosm_credit"
- leafletOsmId: "CycleMap"
code: "C"
- keyId: "cyclemap"
+ layerId: "cyclemap"
nameId: "cycle_map"
apiKeyId: "THUNDERFOREST_KEY"
credit:
- leafletOsmId: "TransportMap"
code: "T"
- keyId: "transportmap"
+ layerId: "transportmap"
nameId: "transport_map"
apiKeyId: "THUNDERFOREST_KEY"
credit:
- leafletOsmId: "TracestrackTopo"
code: "P"
- keyId: "tracestracktopo"
+ layerId: "tracestracktopo"
nameId: "tracestracktop_topo"
apiKeyId: "TRACESTRACK_KEY"
credit:
- leafletOsmId: "HOT"
code: "H"
- keyId: "hot"
+ layerId: "hot"
nameId: "hot"
credit:
id: "hotosm_credit"
way: Weg
relation: Verwantskap
containing_relation:
- entry_html: Verwantskap %{relation_name}
entry_role_html: Verwantskap %{relation_name} (as %{relation_role})
not_found:
title: Kon nie gevind word
tagged_with: gemerk met %{tags}
upload_trace: Laai 'n GPS-spoor op
my_traces: My Spore
- traces_from: Openbare spore van %{user}
+ traces_from_html: Openbare spore van %{user}
destroy:
scheduled_for_deletion: Spoor is vir verwydering geoormerk
application:
way: Udhë
relation: Lidhje
containing_relation:
- entry_html: Lidhja %{relation_name}
entry_role_html: Lidhja %{relation_name} (sikur %{relation_role})
not_found:
sorry: Na vjen keq, %{type} me ID %{id}, nuk mujti me u gjetë.
way: طريق
relation: علاقة
containing_relation:
- entry_html: العلاقة %{relation_name}
entry_role_html: العلاقة %{relation_name} (كــ%{relation_role})
not_found:
title: لم يتم العثور عليه
way: طريق
relation: علاقة
containing_relation:
- entry_html: العلاقه %{relation_name}
entry_role_html: العلاقه %{relation_name} (كــ %{relation_role})
not_found:
sorry: عفوًا، لم يتم العثور على %{type} بالمعرّف %{id}.
way: Vía
relation: Rellación
containing_relation:
- entry_html: Rellación %{relation_name}
entry_role_html: Rellación %{relation_name} (como %{relation_role})
not_found:
sorry: Sentímoslo, el/la %{type} númberu %{id} nun pudo alcontrase.
way: Xətt
relation: Əlaqə
containing_relation:
- entry_html: Əlaqəsi %{relation_name}
entry_role_html: Əlaqəsi %{relation_name} (%{relation_role} kimi)
not_found:
sorry: Təəsüf ki, %{id} %{type} tapılmadı.
way: Һыҙат
relation: Мөнәсәбәт
containing_relation:
- entry_html: Мөнәсәбәт %{relation_name}
entry_role_html: Мөнәсәбәт %{relation_name} (ролендә %{relation_role})
not_found:
title: Табылманы
way: Шлях
relation: Адносіны
containing_relation:
- entry_html: Адносіны %{relation_name}
entry_role_html: Адносіны %{relation_name} (як %{relation_role})
not_found:
title: Ня знойдзена
way: Лінія
relation: Дачыненне
containing_relation:
- entry_html: Дачыненне %{relation_name}
entry_role_html: Дачыненне %{relation_name} (як %{relation_role})
not_found:
title: Не знойдзена
way: Път
relation: Релация
containing_relation:
- entry_html: Релация %{relation_name}
entry_role_html: Релация %{relation_name} (като %{relation_role})
not_found:
sorry: Съжаляваме, %{type} № %{id} не е намерен.
way: রাস্তা
relation: সম্পর্ক
containing_relation:
- entry_html: সম্পর্ক %{relation_name}
entry_role_html: সম্পর্ক %{relation_name} (যখন %{relation_role})
not_found:
title: পাওয়া যায়নি
way: Hent
relation: Darempred
containing_relation:
- entry_html: Darempred %{relation_name}
entry_role_html: Darempred %{relation_name} (evel %{relation_role})
not_found:
title: N'eo ket bet kavet
upload_trace: Kas ur roud
all_traces: An holl roudoù
my_traces: Ma roudoù
- traces_from: Roudoù GPS foran gant %{user}
+ traces_from_html: Roudoù GPS foran gant %{user}
remove_tag_filter: Lemel ar sil tikedennoù
destroy:
scheduled_for_deletion: Roudenn da vezañ dilamet
navigation:
all_blocks: An holl stankadurioù
blocks_on_me: Stankadurioù evidon
- blocks_on_user: Stankadurioù evit %{user}
+ blocks_on_user_html: Stankadurioù evit %{user}
blocks_by_me: Stankadurioù graet ganin
- blocks_by_user: Stankadurioù gant %{user}
+ blocks_by_user_html: Stankadurioù gant %{user}
block: 'Stankadur #%{id}'
new_block: Stankadenn nevez
user_mutes:
way: Putanja
relation: Relacija
containing_relation:
- entry_html: Relacija %{relation_name}
entry_role_html: Relacija %{relation_name} (kao %{relation_role})
not_found:
sorry: 'Žao nam je, ali %{type} #%{id} se ne može naći.'
way: Via
relation: Relació
containing_relation:
- entry_html: Relació %{relation_name}
entry_role_html: Relació %{relation_name} (com a %{relation_role})
not_found:
title: No s'ha trobat
upload_trace: Puja una traça
all_traces: Totes les traces
my_traces: Les meves traces
- traces_from: Traces públiques de %{user}
+ traces_from_html: Traces públiques de %{user}
remove_tag_filter: Elimina el filtre d'etiquetes
destroy:
scheduled_for_deletion: Traça programada per a ser suprimida
navigation:
all_blocks: Tots els bloquejos
blocks_on_me: Bloquejos a mi
- blocks_on_user: Bloquejos a %{user}
+ blocks_on_user_html: Bloquejos a %{user}
blocks_by_me: Bloquejos fets per mi
- blocks_by_user: Bloquejos fets per %{user}
+ blocks_by_user_html: Bloquejos fets per %{user}
block: 'Bloqueig #%{id}'
user_mutes:
index:
way: Сиз
relation: Хилар
containing_relation:
- entry_html: Хилар %{relation_name}
entry_role_html: Хилар %{relation_name} (ролехь %{relation_role})
not_found:
title: Цакарийна
upload_trace: Чуйаккха трек
all_traces: Ерриге а трекаш
my_traces: Сан трекаш
- traces_from: '%{user}-ан йукъара трекаш'
+ traces_from_html: '%{user}-ан йукъара трекаш'
remove_tag_filter: ДӀаяккха теган фильтр
destroy:
scheduled_for_deletion: ДӀаяккха лерина трек
navigation:
all_blocks: Ерриге а блокаш
blocks_on_me: Сан блоктохарш
- blocks_on_user: Блокаш йу %{user} тӀехь
+ blocks_on_user_html: Блокаш йу %{user} тӀехь
blocks_by_me: Сан блоктохарш
- blocks_by_user: Блокаш йина %{user}
+ blocks_by_user_html: Блокаш йина %{user}
block: 'Блок #%{id}'
new_block: Керла блок
user_mutes:
way: Cesta
relation: Relace
containing_relation:
- entry_html: Relace %{relation_name}
entry_role_html: Relace %{relation_name} (jako %{relation_role})
not_found:
title: Nenalezeno
upload_trace: Nahrát stopu
all_traces: Všechny stopy
my_traces: Moje stopy
- traces_from: Veřejné stopy uživatele %{user}
+ traces_from_html: Veřejné stopy uživatele %{user}
remove_tag_filter: Vymazat filtr tagů
destroy:
scheduled_for_deletion: Stopa označena ke smazání
navigation:
all_blocks: Všechny bloky
blocks_on_me: Moje zablokování
- blocks_on_user: Bloky uživatele %{user}
+ blocks_on_user_html: Bloky uživatele %{user}
blocks_by_me: Zablokování mnou
- blocks_by_user: Bloky od uživatele %{user}
+ blocks_by_user_html: Bloky od uživatele %{user}
block: 'Blok #%{id}'
new_block: Nové blokování
user_mutes:
way: Llwybr
relation: Perthynas
containing_relation:
- entry_html: Perthynas %{relation_name}
entry_role_html: Perthynas %{relation_name} (fel %{relation_role})
not_found:
title: Heb ei Ganfod
colour_preview: Rhagolwg lliw %{colour_value}
email_link: E-bost %{email}
query:
- title: Nodweddion Ymholiad
- introduction: Cliciwch ar y map i ddarganfod nodweddion gerllaw.
+ title: Ymholiad Nodweddion
+ introduction: Cliciwch ar y map i weld nodweddion gerllaw.
nearby: Nodweddion gerllaw
enclosing: Nodweddion amgáu
nodes:
closed_ago_html: Caëwyd %{time_ago}
created_ago_by_html: Crëwyd %{time_ago} gan %{user}
closed_ago_by_html: Caëwyd %{time_ago} gan %{user}
- discussion: Sgwrs
- join_discussion: Mewngofnodwch i ymuno â'r sgwrs
+ discussion: Trafodaeth
+ join_discussion: Mewngofnodwch i ymuno â'r drafodaeth
still_open: Mae'r grŵp newid dal ar agor - bydd trafodaeth yn agor pan fydd
y grŵp newid wedi cau.
subscribe: Tanysgrifio
show:
title: Dyddiadur %{user} | %{title}
user_title: Dyddiadur %{user}
- discussion: Sgwrs
+ discussion: Trafodaeth
subscribe: Tanysgrifio
unsubscribe: Dad-danysgrifio
leave_a_comment: Sylw
post: Post
when: Pryd
comment: Sylw
+ new:
+ heading: Ychwanegu sylw at y drafodaeth cofnod dyddiadur canlynol?
doorkeeper:
flash:
applications:
upload_trace: Uwchlwytho ôl
all_traces: Pob Ôl
my_traces: Fy Olion
- traces_from: Olion Cyhoeddus gan %{user}
+ traces_from_html: Olion Cyhoeddus gan %{user}
remove_tag_filter: Dileu Hidlydd Tagiau
destroy:
scheduled_for_deletion: Mae'r ôl wedi'i drefnu i'w ddileu
navigation:
all_blocks: Pob Bloc
blocks_on_me: Blociau arnaf i
- blocks_on_user: Blociau ar %{user}
+ blocks_on_user_html: Blociau ar %{user}
blocks_by_me: Blociau gennyf i
- blocks_by_user: Blociau gan %{user}
+ blocks_by_user_html: Blociau gan %{user}
block: 'Bloc #%{id}'
new_block: Bloc Newydd
user_mutes:
few: Rydych chi wedi anwybyddu %{count} defnyddiwr
many: Rydych chi wedi anwybyddu %{count} defnyddiwr
other: Rydych chi wedi anwybyddu %{count} defnyddiwr
+ user_mute_admins_and_moderators: Gallwch anwybyddu'r Gweinyddwyr a Chymedrolwyr
+ ond ni fydd eu negeseuon yn cael eu hanwybyddu.
table:
thead:
muted_user: Defnyddiwr ag Anwybyddwyd
createnote_disabled_tooltip: Chwyddwch mewn i ychwanegu nodyn i'r map
map_notes_zoom_in_tooltip: Chwyddwch mewn i weld nodiadau'r map
map_data_zoom_in_tooltip: Chwyddwch mewn i weld data'r map
- queryfeature_tooltip: Manylion nodweddion
- queryfeature_disabled_tooltip: Chwyddwch i mewn i gael manylion nodweddion
+ queryfeature_tooltip: Ymholiad nodweddion
+ queryfeature_disabled_tooltip: Chwyddwch i mewn i wneud ymholiad nodweddion
embed_html_disabled: Nid yw mewnosod HTML ar gael ar gyfer yr haen fap hon
edit_help: Symudwch y map a chwyddwch i mewn i leoliad rydych chi am ei olygu,
yna cliciwch yma.
directions_to: Cyfarwyddiadau i yma
add_note: Ychwanegu nodyn yma
show_address: Dangos cyfeiriad
- query_features: Manylion nodweddion
+ query_features: Ymholiad nodweddion
centre_map: Canoli'r map yma
redactions:
edit:
way: Vej
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
- entry_role_html: Relation %{relation_name} (som %{relation_role})
+ entry_role_html: '%{relation_name} (som %{relation_role})'
not_found:
title: Ikke fundet
sorry: Beklager, %{type} med id %{id} blev ikke fundet.
upload_trace: Overfør et spor
all_traces: Alle GPS-spor
my_traces: Mine spor
- traces_from: Offentlige GPS-spor fra %{user}
+ traces_from_html: Offentlige GPS-spor fra %{user}
remove_tag_filter: Fjern tag-filter
destroy:
scheduled_for_deletion: Spor planlagt til at blive slettet
navigation:
all_blocks: Alle blokeringer
blocks_on_me: Blokeringer af mig
- blocks_on_user: Blokeringer af %{user}
+ blocks_on_user_html: Blokeringer af %{user}
blocks_by_me: Blokeringer udført af mig
- blocks_by_user: Blokeringer udført af %{user}
+ blocks_by_user_html: Blokeringer udført af %{user}
block: 'Blokering #%{id}'
new_block: Ny blokering
user_mutes:
hide: Skjul
resolve: Løs
reactivate: Genaktiver
- comment_and_resolve: Kommentere på og løse
+ comment_and_resolve: Kommenter og løs
comment: Kommenter
log_in_to_comment: Log ind for at kommentere på denne bemærkning
report_link_html: Hvis denne bemærkning indeholder følsomme oplysninger, der
way: Weg
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (als %{relation_role})
not_found:
title: Nicht gefunden
upload_trace: Lade einen Track hoch
all_traces: Alle Tracks
my_traces: Meine Tracks
- traces_from: Öffentliche Tracks von %{user}
+ traces_from_html: Öffentliche Tracks von %{user}
remove_tag_filter: Tag-Filter entfernen
destroy:
scheduled_for_deletion: Für die Löschung vorgesehener Track
navigation:
all_blocks: Alle Sperren
blocks_on_me: Meine Sperren
- blocks_on_user: Sperren für %{user}
+ blocks_on_user_html: Sperren für %{user}
blocks_by_me: Sperren von mir
- blocks_by_user: Sperren von %{user}
+ blocks_by_user_html: Sperren von %{user}
block: 'Sperre #%{id}'
new_block: Neue Sperre
user_mutes:
way: Ray
relation: Elaqe
containing_relation:
- entry_html: Elaqe %{relation_name}
entry_role_html: Eleqe %{relation_name} (%{relation_role} deye)
not_found:
title: Nêvineya
way: Puś
relation: Relacija
containing_relation:
- entry_html: Relacija %{relation_name}
entry_role_html: Relacija %{relation_name} (ako %{relation_role})
not_found:
sorry: 'Bóžko %{type} #%{id} njejo se dał namakaś.'
way: Γραμμή
relation: Σχέση
containing_relation:
- entry_html: Σχέση %{relation_name}
entry_role_html: Σχέση %{relation_name} (ως %{relation_role})
not_found:
title: Δεν βρέθηκε
upload_trace: Αποστολή ίχνους
all_traces: Όλα τα ίχνη
my_traces: Τα ίχνη μου
- traces_from: Δημόσια ίχνη από %{user}
+ traces_from_html: Δημόσια ίχνη από %{user}
remove_tag_filter: Κατάργηση φίλτρου ετικετών
destroy:
scheduled_for_deletion: Το ίχνος προγραμματίστηκε για διαγραφή
navigation:
all_blocks: Όλες οι φραγές
blocks_on_me: Φραγές σε μένα
- blocks_on_user: Φραγές σε %{user}
+ blocks_on_user_html: Φραγές σε %{user}
blocks_by_me: Φραγές από μένα
- blocks_by_user: Φραγές από %{user}
+ blocks_by_user_html: Φραγές από %{user}
block: 'Φραγή #%{id}'
new_block: Νέα Φραγή
user_mutes:
way: Way
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (as %{relation_role})
not_found:
title: Not Found
message: "Message"
node: "Node"
node_tag: "Node Tag"
+ note: "Note"
old_node: "Old Node"
old_node_tag: "Old Node Tag"
old_relation: "Old Relation"
way: "Way"
relation: "Relation"
containing_relation:
- entry_html: "Relation %{relation_name}"
- entry_role_html: "Relation %{relation_name} (as %{relation_role})"
+ entry_role_html: "%{relation_name} (as %{relation_role})"
not_found:
title: Not Found
sorry: "Sorry, %{type} #%{id} could not be found."
open: Open
resolved: Resolved
show:
- title: "%{status} Issue #%{issue_id}"
+ title:
+ open: "Open Issue #%{issue_id}"
+ ignored: "Ignored Issue #%{issue_id}"
+ resolved: "Resolved Issue #%{issue_id}"
reports:
one: "%{count} report"
other: "%{count} reports"
upload_trace: "Upload a trace"
all_traces: "All Traces"
my_traces: "My Traces"
- traces_from: "Public Traces from %{user}"
+ traces_from_html: "Public Traces from %{user}"
remove_tag_filter: "Remove Tag Filter"
destroy:
scheduled_for_deletion: "Trace scheduled for deletion"
years:
one: "%{count} year"
other: "%{count} years"
+ short:
+ ended: "ended"
+ revoked_html: "revoked by %{name}"
+ active: "active"
+ active_unread: "active unread"
+ expired_unread: "expired unread"
+ read_html: "read at %{time}"
+ time_in_future_title: "%{time_absolute}; in %{time_relative}"
+ time_in_past_title: "%{time_absolute}; %{time_relative}"
blocks_on:
title: "Blocks on %{name}"
heading_html: "List of Blocks on %{name}"
reason: "Reason for block:"
revoker: "Revoker:"
block:
- not_revoked: "(not revoked)"
show: "Show"
edit: "Edit"
page:
display_name: "Blocked User"
creator_name: "Creator"
reason: "Reason for block"
+ start: "Start"
+ end: "End"
status: "Status"
- revoker_name: "Revoked by"
navigation:
all_blocks: "All Blocks"
blocks_on_me: "Blocks on Me"
- blocks_on_user: "Blocks on %{user}"
+ blocks_on_user_html: "Blocks on %{user}"
blocks_by_me: "Blocks by Me"
- blocks_by_user: "Blocks by %{user}"
+ blocks_by_user_html: "Blocks by %{user}"
block: "Block #%{id}"
new_block: "New Block"
user_mutes:
way: Linio
relation: Rilato
containing_relation:
- entry_html: Rilato %{relation_name}
entry_role_html: Rilato %{relation_name} (kiel %{relation_role})
not_found:
title: Ne trovita
upload_trace: Alŝuti spuron
all_traces: Ĉiuj spuroj
my_traces: Miaj spuroj
- traces_from: Publikaj spuroj de %{user}
+ traces_from_html: Publikaj spuroj de %{user}
remove_tag_filter: Forigi filtrilon de etikedoj
destroy:
scheduled_for_deletion: Spuro forviŝota
navigation:
all_blocks: Ĉiuj blokadoj
blocks_on_me: Blokadoj por mi
- blocks_on_user: Blokadoj por %{user}
+ blocks_on_user_html: Blokadoj por %{user}
blocks_by_me: Blokadoj de mi
- blocks_by_user: Blokadoj de %{user}
+ blocks_by_user_html: Blokadoj de %{user}
block: 'Blokado #%{id}'
new_block: Nova blokado
user_mutes:
way: Vía
relation: Relación
containing_relation:
- entry_html: Relación %{relation_name}
entry_role_html: Relación %{relation_name} (como %{relation_role})
not_found:
title: No encontrado
upload_trace: Subir una traza
all_traces: Todas las trazas
my_traces: Mis trazas
- traces_from: Trazas Públicos de %{user}
+ traces_from_html: Trazas Públicos de %{user}
remove_tag_filter: Eliminar Filtro de Etiquetas
destroy:
scheduled_for_deletion: Traza programada para eliminación
navigation:
all_blocks: Todos los bloqueos
blocks_on_me: Bloqueos sobre mí
- blocks_on_user: Bloqueos en %{user}
+ blocks_on_user_html: Bloqueos en %{user}
blocks_by_me: Bloqueados por mí
- blocks_by_user: Bloqueos por %{user}
+ blocks_by_user_html: Bloqueos por %{user}
block: 'Bloqueo #%{id}'
new_block: Nuevo bloqueo
user_mutes:
way: joon
relation: relatsioon
containing_relation:
- entry_html: Relatsioon %{relation_name}
entry_role_html: Relatsioon %{relation_name} (kui %{relation_role})
not_found:
title: Ei leidu
upload_trace: Lisa GPS-rada
all_traces: Kõik rajad
my_traces: Minu rajad
- traces_from: Kasutaja %{user} avalikud rajad
+ traces_from_html: Kasutaja %{user} avalikud rajad
remove_tag_filter: Eemalda sildifilter
destroy:
scheduled_for_deletion: Raja kustutamine kantud tööplaani.
navigation:
all_blocks: Kõik blokeeringud
blocks_on_me: Mulle seatud blokeeringud
- blocks_on_user: Blokeeritava %{user} blokeeringud
+ blocks_on_user_html: Blokeeritava %{user} blokeeringud
blocks_by_me: Minu seatud blokeeringud
- blocks_by_user: Blokeerija %{user} blokeeringud
+ blocks_by_user_html: Blokeerija %{user} blokeeringud
block: 'Blokeering #%{id}'
user_mutes:
index:
way: Bide
relation: Erlazio
containing_relation:
- entry_html: '%{relation_name} erlazioa'
entry_role_html: '%{relation_name} erlazioa (%{relation_role} rolean)'
not_found:
title: Ez da aurkitu
upload_trace: Aztarna bat igo
all_traces: Aztarna guztiak
my_traces: Nire aztarnak
- traces_from: '%{user} erabiltzailearen GPS aztarna publikoak'
+ traces_from_html: '%{user} erabiltzailearen GPS aztarna publikoak'
remove_tag_filter: Kendu etiketa-iragazkia
destroy:
scheduled_for_deletion: Ezabatzear dauden aztarnak
way: راه
relation: رابطه
containing_relation:
- entry_html: رابطهٔ %{relation_name}
entry_role_html: رابطهٔ %{relation_name} (با نقش %{relation_role})
not_found:
title: یافت نشد
upload_trace: بارگذاری یک رد
all_traces: همهٔ ردها
my_traces: ردهای من
- traces_from: ردهای عمومی %{user}
+ traces_from_html: ردهای عمومی %{user}
remove_tag_filter: حذف پالایهٔ برچسب
destroy:
scheduled_for_deletion: این رد در زمانبندی حذف قرار گرفت
navigation:
all_blocks: تمام قطع دسترسیها
blocks_on_me: قطع دسترسیهای من
- blocks_on_user: قطع دسترسیهای %{user}
+ blocks_on_user_html: قطع دسترسیهای %{user}
blocks_by_me: |-
Blocks by Me
بسته شدها یا مسدود شدهها
- blocks_by_user: |-
+ blocks_by_user_html: |-
Blocks by %{user}
بستن توسط یا مسدود شدن توسط
way: Polku
relation: Relaatio
containing_relation:
- entry_html: Relaatio %{relation_name}
entry_role_html: Relaatio %{relation_name} (rooli %{relation_role})
not_found:
title: Ei löytynyt
upload_trace: Lisää GPS-jälki
all_traces: Kaikki jäljet
my_traces: Omat jäljet
- traces_from: Julkiset jäljet käyttäjältä %{user}
+ traces_from_html: Julkiset jäljet käyttäjältä %{user}
remove_tag_filter: Poista tunnistesuodatin
destroy:
scheduled_for_deletion: Jälki on poistojonossa.
way: Polku
relation: Relaatio
containing_relation:
- entry_html: Relaatio %{relation_name}
entry_role_html: Relaatio %{relation_name} (rooli %{relation_role})
not_found:
sorry: 'Pahoittelemme, %{type} #%{id} ei ole olemassa.'
way: Chemin
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (avec le rôle %{relation_role})
not_found:
title: Non trouvé
upload_trace: Téléverser une trace
all_traces: Toutes les traces
my_traces: Mes traces
- traces_from: Traces publiques de %{user}
+ traces_from_html: Traces publiques de %{user}
remove_tag_filter: Retirer le filtre de balises
destroy:
scheduled_for_deletion: Trace planifiée pour suppression
navigation:
all_blocks: Tous les blocages
blocks_on_me: Blocages me concernant
- blocks_on_user: Blocages sur %{user}
+ blocks_on_user_html: Blocages sur %{user}
blocks_by_me: Blocages de ma part
- blocks_by_user: Blocages effectués par %{user}
+ blocks_by_user_html: Blocages effectués par %{user}
block: 'Blocage #%{id}'
new_block: Nouveau blocage
user_mutes:
way: Vie
relation: Relazion
containing_relation:
- entry_html: Relazion %{relation_name}
entry_role_html: Relazion %{relation_name} (come %{relation_role})
not_found:
title: No cjatât
upload_trace: Cjame un percors
all_traces: Ducj i percors
my_traces: I miei percors
- traces_from: Percors publics di %{user}
+ traces_from_html: Percors publics di %{user}
georss:
title: Percors GPS di OpenStreetMap
description:
way: Line
relation: Relaasje
containing_relation:
- entry_html: Relaasje %{relation_name}
entry_role_html: Relaasje %{relation_name} (as %{relation_role})
not_found:
title: Net fûn
upload_trace: Trajekt oplade
all_traces: Alle trajekten
my_traces: Myn trajekten
- traces_from: Iepenbiere trajekten fan %{user}
+ traces_from_html: Iepenbiere trajekten fan %{user}
remove_tag_filter: Lebelfilter weilitte
destroy:
scheduled_for_deletion: Trajekt ynplend om te wiskjen
way: Bealach
relation: Gaol
containing_relation:
- entry_html: Gaol %{relation_name}
entry_role_html: Gaol %{relation_name} (mar %{relation_role})
not_found:
sorry: 'Ár leithscéil, níorbh fhéidir %{type} #%{id} a aimsiú.'
type:
way: Chimen
containing_relation:
- entry_html: Rèlasion %{relation_name}
entry_role_html: Rèlasion %{relation_name} (adan wol %{relation_role})
not_found:
sorry: Désolé, l’objet %{type} nº %{id} n’a pas pu être trouvé.
way: Slighe
relation: Dàimh
containing_relation:
- entry_html: Dàimh %{relation_name}
entry_role_html: Dàimh %{relation_name} ('na %{relation_role})
not_found:
sorry: Duilich ach cha deach %{type} àireamh %{id} a lorg.
way: Vía
relation: Relación
containing_relation:
- entry_html: Relación %{relation_name}
entry_role_html: Relación %{relation_name} (como %{relation_role})
not_found:
title: Non atopado
upload_trace: Subir unha pista
all_traces: Todas as pistas
my_traces: As miñas pistas GPS
- traces_from: Pistas públicas de %{user}
+ traces_from_html: Pistas públicas de %{user}
remove_tag_filter: Eliminar etiqueta do filtro
destroy:
scheduled_for_deletion: Pista agardando a súa eliminación
navigation:
all_blocks: Todos os bloqueos
blocks_on_me: Os meus bloqueos
- blocks_on_user: Bloqueos feitos a %{user}
+ blocks_on_user_html: Bloqueos feitos a %{user}
blocks_by_me: Bloqueos efectuados
- blocks_by_user: Bloqueos feitos por %{user}
+ blocks_by_user_html: Bloqueos feitos por %{user}
block: Bloqueo n.º %{id}
new_block: Novo bloqueo
user_mutes:
way: Wäg
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (as %{relation_role})
not_found:
sorry: '%{type} mit de Nummer %{id} konnt leider net gfunde wärre.'
way: קו
relation: יחס
containing_relation:
- entry_html: יחס %{relation_name}
- entry_role_html: יחס %{relation_name} (בתור %{relation_role})
+ entry_role_html: '%{relation_name} (בתור %{relation_role})'
not_found:
title: לא נמצא
sorry: אנו מתנצלים, אך לא מצאנו %{type} מספר %{id}.
upload_trace: העלאת מסלול
all_traces: כל המסלולים
my_traces: המסלולים שלי
- traces_from: מסלולים ציבוריים מאת %{user}
+ traces_from_html: מסלולים ציבוריים מאת %{user}
remove_tag_filter: הסרת סינון לפי תג
destroy:
scheduled_for_deletion: מסלול מיועד למחיקה
navigation:
all_blocks: כל החסימות
blocks_on_me: חסימות שלי
- blocks_on_user: חסימות של %{user}
+ blocks_on_user_html: חסימות של %{user}
blocks_by_me: חסימות שעשיתי
- blocks_by_user: חסימות שנעשו על־ידי %{user}
+ blocks_by_user_html: חסימות שנעשו על־ידי %{user}
block: חסימה מס׳ %{id}
new_block: חסימה חדשה
user_mutes:
way: रेखा
relation: संबंध
containing_relation:
- entry_html: संबंध %{relation_name}
entry_role_html: संबंध %{relation_name} (as %{relation_role})
not_found:
title: नहीं मिला
way: Put
relation: Relacija
containing_relation:
- entry_html: Relacija %{relation_name}
entry_role_html: Relacija %{relation_name} (kao %{relation_role})
not_found:
sorry: 'Nažalost, %{type} #%{id} nije pronađen.'
way: Puć
relation: Relacija
containing_relation:
- entry_html: Relacija %{relation_name}
entry_role_html: Relacija %{relation_name} (jako %{relation_role})
not_found:
title: Njenamakane
upload_trace: Ćěr nahrać
all_traces: Wšě ćěrje
my_traces: Moje ćěrje
- traces_from: Zjawne ćěrje wot %{user}
+ traces_from_html: Zjawne ćěrje wot %{user}
destroy:
scheduled_for_deletion: Čara předwidźana za zničenje
offline_warning:
is_already_muted: már el van némítva
models:
acl: Hozzáférés-szabályzási lista
- changeset: Módosításkészlet
- changeset_tag: Módosításkészlet címkéje
+ changeset: Módosításcsomag
+ changeset_tag: Módosításcsomag címkéje
country: Ország
diary_comment: Hozzászólás a naplóhoz
diary_entry: Naplóbejegyzés
trace:
tagstring: vesszővel elválasztva
user_block:
- reason: A felhasználó letiltásának oka. Kérjük, légy a lehető legnyugodtabb
- és észszerűbb, adj meg minél több részletet a helyzetről, és ne feledd,
- hogy az üzenet nyilvánosan látható lesz. Gondolj arra, hogy nem minden felhasználó
- érti a közösségi szakzsargont, ezért kérjük, próbálj laikus kifejezéseket
- használni.
+ reason: A felhasználó letiltásának oka. Légy a lehető legnyugodtabb és ésszerűbb,
+ adj meg minél több részletet a helyzetről, és ne feledd, hogy az üzenet
+ nyilvánosan látható lesz. Gondolj arra, hogy nem minden felhasználó érti
+ a közösségi szakzsargont, ezért kérjük, próbálj laikus kifejezéseket használni.
needs_view: Be kell-e jelentkeznie a felhasználónak, mielőtt a blokkolás feloldódik?
user:
new_email: (soha nem jelenik meg nyilvánosan)
reopened_at_by_html: 'Újraaktiválta %{user} ekkor: %{when}'
rss:
title: OpenStreetMap jegyzetek
- description_all: Jelentett, kommentált vagy lezárt feljegyzések listája
+ description_all: Jelentett, kommentált vagy lezárt jegyzetek listája
description_area: Bejelentett, hozzászólással ellátott vagy lezárt jegyzetek
a területeden [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
- description_item: RSS hírcsatorna a %{id} jegyzethez
- opened: új megjegyzés (%{place} közelében)
+ description_item: RSS hírcsatorna a(z) %{id} jegyzethez
+ opened: új jegyzet (%{place} közelében)
commented: új hozzászólás (%{place} közelében)
closed: lezárt jegyzet (%{place} közelében)
reopened: újraaktivált jegyzet (%{place} közelében)
megmaradnak, de nem lesznek láthatóak.
retain_notes: Térképjegyzeteid és jegyzethozzászólásaid (ha vannak) megmaradnak,
de nem lesznek láthatóak.
- retain_changeset_discussions: A módosításkészletekhez fűzött hozzászólásaid
+ retain_changeset_discussions: A módosításcsomagokhoz fűzött hozzászólásaid
(ha vannak) megőrződnek.
retain_email: Az e-mail-címed is megmarad.
recent_editing_html: Mivel nemrégiben szerkesztettél, fiókod jelenleg nem
edited_ago_by_html: Szerkesztette %{user} %{time_ago}
version: Verzió
redacted_version: Szerkesztett verzió
- in_changeset: Módosításkészlet
+ in_changeset: Módosításcsomag
anonymous: névtelen
no_comment: (nincs hozzászólás)
part_of: 'Része ennek:'
view_redaction_message: Adattörlési üzenet megtekintése
location: 'Hely:'
node:
- title_html: '%{name} pont'
+ title_html: 'Pont: %{name}'
history_title_html: '%{name} pont előzményei'
way:
- title_html: '%{name} vonal'
+ title_html: 'Vonal: %{name}'
history_title_html: '%{name} vonal előzményei'
nodes: Pontok
nodes_count:
one: '%{related_ways} vonal része'
other: '%{related_ways} vonalak része'
relation:
- title_html: '%{name} kapcsolat'
+ title_html: 'Kapcsolat: %{name}'
history_title_html: '%{name} kapcsolat előzményei'
members: Tagok
members_count:
way: 'Vonal:'
relation: 'Kapcsolat:'
containing_relation:
- entry_html: '%{relation_name} kapcsolat'
entry_role_html: '%{relation_name} kapcsolat (mint %{relation_role})'
not_found:
title: Nem található
node: pont
way: vonal
relation: kapcsolat
- changeset: módosításkészlet
+ changeset: módosításcsomag
note: jegyzet
timeout:
title: Időtúllépési hiba
node: pont
way: vonal
relation: kapcsolat
- changeset: módosításkészlet
+ changeset: módosításcsomag
note: jegyzet
redacted:
redaction: '%{id} adattörlési művelet'
enclosing: A helyet körülvevő objektumok
nodes:
timeout:
- sorry: Sajnáljuk, a %{id} azonosítójú csomópont adatainak lekérése túl sokáig
+ sorry: Sajnáljuk, a(z) %{id} azonosítójú pont adatainak lekérése túl sokáig
tartott.
old_nodes:
not_found:
sorry: 'Sajnáljuk, nem található meg #%{id} pont %{version} verziója.'
timeout:
- sorry: Sajnáljuk, a %{id} azonosítójú csomópont előzményeinek lekérése túl sokáig
+ sorry: Sajnáljuk, a(z) %{id} azonosítójú pont előzményeinek lekérése túl sokáig
tartott.
ways:
timeout:
changeset_comments:
feeds:
comment:
- comment: 'Új hozzászólás #%{changeset_id} módosításkészlethez %{author} felhasználótól'
+ comment: 'Új hozzászólás #%{changeset_id} módosításcsomaghoz %{author} felhasználótól'
commented_at_by_html: '%{user} frissítette ekkor: %{when}'
show:
- title_all: OpenStreetMap módosításkészlet-megbeszélés
- title_particular: 'A #%{changeset_id} OpenStreetMap módosításkészlethez tartozó
+ title_all: OpenStreetMap módosításcsomag-megbeszélés
+ title_particular: 'A #%{changeset_id} OpenStreetMap módosításcsomaghoz tartozó
megbeszélés'
timeout:
- sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításkészlet-hozzászólások
+ sorry: Sajnáljuk, túl sokáig tartott az általad kért módosításcsomag-hozzászólások
listájának lekérése.
changesets:
changeset:
no_edits: (nincs szerkesztés)
- view_changeset_details: Módosításkészlet részleteinek megtekintése
+ view_changeset_details: Módosításcsomag részleteinek megtekintése
index:
- title: Módosításkészletek
- title_user: '%{user} módosításkészletei'
- title_user_link_html: '%{user_link} módosításkészletei'
- title_friend: Ismerősök módosításkészletei
- title_nearby: Közeli felhasználók módosításkészletei
- empty: Nem található módosításkészlet
- empty_area: Ezen a területen nincs módosításkészlet.
- empty_user: Ettől a felhasználótól nincs módosításkészlet.
- no_more: Nem találtunk több módosításkészletet.
- no_more_area: Ezen a területen nincs több módosításkészlet.
- no_more_user: Ettől a felhasználótól nincs több módosításkészlet.
+ title: Módosításcsomagok
+ title_user: '%{user} módosításcsomagjai'
+ title_user_link_html: '%{user_link} módosításcsomagjai'
+ title_friend: Ismerősök módosításcsomagjai
+ title_nearby: Közeli felhasználók módosításcsomagjai
+ empty: Nem található módosításcsomag.
+ empty_area: Ezen a területen nincs módosításcsomag.
+ empty_user: Ettől a felhasználótól nincs módosításcsomag.
+ no_more: Nem található több módosításcsomag.
+ no_more_area: Ezen a területen nincs több módosításcsomag.
+ no_more_user: Ettől a felhasználótól nincs több módosításcsomag.
load_more: Továbbiak betöltése
feed:
- title: '%{id} módosításkészlet'
- title_comment: '%{id} módosításkészlet - %{comment}'
+ title: '%{id} módosításcsomag'
+ title_comment: '%{id} módosításcsomag – %{comment}'
created: Létrehozva
closed: Lezárva
belongs_to: Szerző
subscribe:
- heading: Feliratkozol a következő módosításkészlet megbeszélésére?
+ heading: Feliratkozol a következő módosításcsomag-megbeszélésére?
button: Feliratkozás a megbeszélésre
unsubscribe:
- heading: Leiratkozol a következő módosításkészlet megbeszéléséről?
+ heading: Leiratkozol a következő módosításcsomag-megbeszéléséről?
button: Leiratkozás a megbeszélésről
heading:
- title: '%{id} számú módosításkészlet'
+ title: '%{id} számú módosításcsomag'
created_by_html: 'Létrehozta: %{link_user} (%{created}).'
no_such_entry:
heading: Nincs %{id} azonosítójú naplóbejegyzés
- body: Sajnáljuk, nincs %{id} azonosítójú módosításkészlet. Ellenőrizd a helyességét.
- Az is lehet, hogy rossz linkre kattintottál.
+ body: Sajnáljuk, nincs %{id} azonosítójú módosításcsomag. Ellenőrizd, hogy jól
+ írtad-e. Az is lehet, hogy rossz linkre kattintottál.
show:
- title: '%{id} módosításkészlet'
+ title: 'Módosításcsomag: %{id}'
created: 'Létrehozva: %{when}'
closed: 'Lezárva: %{when}'
created_ago_html: Létrehozva %{time_ago}
closed_ago_by_html: Lezárta %{user} %{time_ago}
discussion: Megbeszélés
join_discussion: Jelentkezz be, hogy bekapcsolódhass a megbeszélésbe
- still_open: A módosításkészlet még nyitva van – a megbeszélés akkor nyílik meg,
- ha a módosításkészlet lezárul.
+ still_open: A módosításcsomag még nyitva van – a megbeszélés akkor nyílik meg,
+ ha a módosításcsomag lezárul.
subscribe: Feliratkozás
unsubscribe: Leiratkozás
comment_by_html: Hozzászólt %{user} %{time_ago}
hide_comment: elrejtés
unhide_comment: megjelenítés
comment: Hozzászólás
- changesetxml: Módosításkészlet adatai (XML)
- osmchangexml: Módosításkészlet tartalma (osmChange XML)
+ changesetxml: Módosításcsomag XML-ben
+ osmchangexml: osmChange XML
paging_nav:
nodes: Pontok (%{count})
nodes_paginated: 'Pontok (%{x}-%{y} ennyiből: %{count})'
relations: Kapcsolatok (%{count})
relations_paginated: 'Kapcsolatok (%{x}-%{y} ennyiből: %{count})'
timeout:
- sorry: Sajnáljuk, az általad kért módosításkészletek listájának beolvasása túl
+ sorry: Sajnáljuk, az általad kért módosításcsomagok listájának lekérése túl
sokáig tartott.
dashboards:
contact:
nearby users: További közeli felhasználók
no nearby users: Még nincsenek más felhasználók, akik megadták, hogy a közelben
szerkesztenek.
- friends_changesets: ismerősök módosításkészletei
+ friends_changesets: ismerősök módosításcsomagjai
friends_diaries: ismerősök naplóbejegyzései
- nearby_changesets: közeli felhasználók módosításkészletei
+ nearby_changesets: közeli felhasználók módosításcsomagjai
nearby_diaries: közeli felhasználók naplóbejegyzései
diary_entries:
new:
title: Nincs ilyen naplóbejegyzés
heading: 'Nincs naplóbejegyzés ezzel az azonosítóval: %{id}'
body: Sajnáljuk, de nincs %{id} azonosítójú naplóbejegyzés vagy hozzászólás.
- Kérjük, ellenőrizd a kifejezés helyességét. Az is lehet, hogy rossz linkre
- kattintottál.
+ Ellenőrizd, hogy jól írtad-e. Az is lehet, hogy rossz linkre kattintottál.
diary_entry:
posted_by_html: '%{link_user} bejegyzése %{language_link} nyelven ekkor: %{created}'
updated_at_html: 'Utolsó frissítés: %{updated}'
contact_url_title: A különféle kapcsolatfelvételi csatornák magyarázata
contact: kapcsolat
contact_the_community_html: Nyugodtan keresd fel az OpenStreetMap közösséget
- (%{contact_link}), ha hibás linket vagy más hibát találtál. Kérjük, ne felejtsd
- el feljegyezni a hibás oldal pontos URL-jét.
+ (%{contact_link}), ha hibás linket vagy más hibát találtál. Ne felejtsd el
+ feljegyezni a hibás oldal pontos URL-jét.
bad_request:
title: Rossz kérés
description: Az OpenStreetMap szerveren kért művelet nem érvényes (HTTP 400)
helper:
reportable_title:
diary_comment: '%{entry_title} naplóbejegyzés, #%{comment_id} hozzászólás'
- note: 'Megjegyzés #%{note_id}'
+ note: '#%{note_id} jegyzet'
issue_comments:
create:
comment_created: Hozzászólásod sikeresen létrehozva
title_html: '%{link} bejelentése'
missing_params: Nem hozhatsz létre új bejelentést
disclaimer:
- intro: 'Mielőtt elküldöd a bejelentést, kérjük, győződj meg a következőkről:'
+ intro: 'Mielőtt elküldöd a bejelentést, győződj meg a következőkről:'
not_just_mistake: Biztos vagy abban, hogy a probléma nem csupán egy hiba
unable_to_fix: A problémát nem tudod megoldani a sem magad, sem a közösség
tagjainak segítségével
vandal_label: Ez a felhasználó vandál
other_label: Egyéb
note:
- spam_label: A megjegyzés spam
- personal_label: A megjegyzés személyes adatot tartalmaz
- abusive_label: A megjegyzés sértő
+ spam_label: A jegyzet spam
+ personal_label: A jegyzet személyes adatot tartalmaz
+ abusive_label: A jegyzet sértő
other_label: Egyéb
create:
successful_report: Bejelentésedet sikeresen regisztráltuk
%{trace_description} leírású, címke nélküli fájlod
gpx_failure:
hi: Szia %{to_user}!
- failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Kérjük,
- ellenőrizze, hogy a fájl egy érvényes GPX-fájl vagy egy GPX-fájl(oka)t tartalmazó
- archívum a támogatott formátumban (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz,
- .gpx.bz2). . Formátum- vagy szintaktikai probléma lehet a fájllal? Itt van
- az importálási hiba:'
+ failed_to_import: 'nem sikerült GPS nyomkövetési fájlként importálni. Ellenőrizd,
+ hogy a fájl egy érvényes GPX-fájl vagy egy GPX-fájl(oka)t tartalmazó archívum
+ a támogatott formátumban (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2).
+ . Formátum- vagy szintaktikai probléma lehet a fájllal? Itt látható az importálási
+ hiba:'
more_info: 'További információ a GPX importálási hibáiról és azok elkerüléséről
itt található: %{url}.'
more_info_html: 'A GPX importálási hibákról és elkerülésükről további tájékoztatás
click_the_link: Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints
az alábbi hivatkozásra.
note_comment_notification:
- description: 'OpenStreetMap megjegyzés #%{id}'
+ description: 'OpenStreetMap jegyzet #%{id}'
anonymous: Egy névtelen felhasználó
greeting: Szia!
commented:
details: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
details_html: 'Válaszolj, vagy tudj meg többet a jegyzetről itt: %{url}.'
changeset_comment_notification:
- description: 'OpenStreetMap módosításkészlet #%{id}'
+ description: 'OpenStreetMap módosításcsomag #%{id}'
hi: Szia %{to_user}!
commented:
- subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításkészletedhez'
- subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításkészlethez,
+ subject_own: '[OpenStreetMap] %{commenter} hozzászólt az egyik módosításcsomagodhoz'
+ subject_other: '[OpenStreetMap] %{commenter} hozzászólt egy módosításcsomaghoz,
amely téged is érdekel'
- your_changeset: '%{commenter} hozzászólt az egyik módosításkészletedhez ekkor:
+ your_changeset: '%{commenter} hozzászólt az egyik módosításcsomagodhoz ekkor:
%{time}'
- your_changeset_html: '%{commenter} hozzászólt az egyik módosításkészletedhez
+ your_changeset_html: '%{commenter} hozzászólt az egyik módosításcsomagodhoz
ekkor: %{time}'
commented_changeset: '%{commenter} hozzászólt %{changeset_author} általad
- is figyelt módosításkészletéhez ekkor: %{time}'
+ is figyelt módosításcsomagjához ekkor: %{time}'
commented_changeset_html: '%{commenter} hozzászólt %{changeset_author} általad
- is figyelt módosításkészletéhez ekkor: %{time}'
+ is figyelt módosításcsomagjához ekkor: %{time}'
partial_changeset_with_comment: „%{changeset_comment}” hozzászólással
partial_changeset_with_comment_html: '%{changeset_comment} hozzászólással'
partial_changeset_without_comment: hozzászólás nélkül
- details: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
- details_html: 'Válaszolj, vagy tudj meg többet a módosításkészletről itt: %{url}.'
- unsubscribe: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
- unsubscribe_html: 'A módosításkészlet frissüléseiről leiratkozhatsz itt: %{url}.'
+ details: 'Válaszolj, vagy tudj meg többet a módosításcsomagról itt: %{url}.'
+ details_html: 'Válaszolj, vagy tudj meg többet a módosításcsomagról itt: %{url}.'
+ unsubscribe: 'A módosításcsomag frissüléseiről leiratkozhatsz itt: %{url}.'
+ unsubscribe_html: 'A módosításcsomag frissüléseiről leiratkozhatsz itt: %{url}.'
confirmations:
confirm:
heading: Nézd meg az e-mailjeidet!
failure: Ezzel a tokennel már meg lett erősítve egy e-mail cím.
unknown_token: Ez a megerősítő kód lejárt, vagy nem létezik.
resend_success_flash:
- confirmation_sent: Küldtünk egy új megerősítő megjegyzést a(z) %{email} címre.
+ confirmation_sent: Küldtünk egy új megerősítő üzenetet a(z) %{email} címre.
Amint megerősíted fiókodat, kezdhetsz is térképezni.
whitelist: Ha olyan antispam rendszert használsz, amely visszaigazolási kéréseket
küld, akkor kérjük, ellenőrizd, hogy a(z) %{sender} az engedélyezett listán
adatokat tartalmazza, az állam szerzői joga fenntartva.'
contributors_za_south_africa: Dél-Afrika
contributors_za_ngi: 'Chief Directorate: National Geo-Spatial Information'
+ contributors_gb_credit_html: "%{united_kingdom}: Térképészeti Szolgálat adatai
+ © Királyi szerzői és adatbázisjog \n2010-2023."
contributors_gb_united_kingdom: Egyesült Királyság
contributors_2_html: Ezekről és más, az OpenStreetMap fejlesztésére használt
forrásokról további részletekért tekintsd meg a %{contributors_page_link}
trace_uploaded: A GPX-fájl feltöltődött, és várakozik az adatbázisba való beillesztésre.
Ez általában fél órán belül megtörténik, és kapni fogsz egy e-mailt, amint
elkészült.
- upload_failed: A GPX feltöltése meghiúsult. Kérjük, próbáld meg újra.
- traces_waiting: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, fontold
- meg, hogy megvárod, amíg ezek befejeződnek mielőtt feltöltesz továbbiakat,
- hogy így ne tartsd fel a többi felhasználót a sorban.'
+ upload_failed: A GPX feltöltése meghiúsult. A rendszergazda értesítést kapott
+ a hibáról. Próbáld meg újra.
+ traces_waiting:
+ one: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, várd meg, amíg ezek
+ befejeződnek, mielőtt feltöltesz továbbiakat, hogy ne tartsd fel a többi
+ felhasználót a sorban.'
+ other: '%{count} nyomvonalad várakozik feltöltésre. Kérjük, várd meg, amíg
+ ezek befejeződnek, mielőtt feltöltesz továbbiakat, hogy ne tartsd fel a
+ többi felhasználót a sorban.'
edit:
cancel: Mégse
title: 'Nyomvonal szerkesztése: %{name}'
upload_trace: Nyomvonal feltöltése
all_traces: Minden nyomvonal
my_traces: Saját nyomvonalak
- traces_from: '%{user} nyilvános nyomvonalai'
+ traces_from_html: '%{user} nyilvános nyomvonalai'
remove_tag_filter: Címkeszűrő eltávolítása
destroy:
scheduled_for_deletion: A nyomvonal törlésre kijelölve
paragraph_2: Regisztrálj a közreműködés megkezdéséhez.
welcome: Üdvözlünk az OpenStreetMapen
duplicate_social_email: Ha már rendelkezel OpenStreetMap fiókkal, és külső identitásszolgáltatót
- szeretnél használni, kérjük, jelentkezz be jelszavaddal, és módosítsd fiókod
- beállításait.
+ szeretnél használni, jelentkezz be jelszavaddal, és módosítsd fiókod beállításait.
display name description: A nyilvánosan megjelenített felhasználóneved. A beállításaidban
később megváltoztathatod.
by_signing_up:
navigation:
all_blocks: Minden blokk
blocks_on_me: Engem sújtó blokkolások
- blocks_on_user: '%{user} blokkolásai'
+ blocks_on_user_html: '%{user} blokkolásai'
blocks_by_me: Általam kiosztott blokkolások
- blocks_by_user: '%{user} blokkolásai'
+ blocks_by_user_html: '%{user} blokkolásai'
block: '#%{id} blokk'
new_block: Újabb blokkolások
user_mutes:
description: Leírás
created_at: Létrehozva ekkor
last_changed: Utoljára módosítva
+ apply: Alkalmaz
+ all: Összes
+ open: Nyitva
+ closed: Lezárva
+ status: Állapot
show:
- title: '%{id} jegyzet'
+ title: 'Jegyzet: %{id}'
description: Leírás
- open_title: '%{note_name} megoldatlan jegyzet'
- closed_title: '%{note_name} megoldott jegyzet'
- hidden_title: '%{note_name} rejtett jegyzet'
+ open_title: 'Megoldatlan jegyzet: %{note_name}'
+ closed_title: 'Megoldott jegyzet: %{note_name}'
+ hidden_title: Elrejtett jegyzet %{note_name}
event_opened_by_html: Létrehozta %{user} %{time_ago}
event_opened_by_anonymous_html: Létrehozta egy névtelen felhasználó %{time_ago}
event_commented_by_html: Hozzászólt %{user} %{time_ago}
report: jegyzet bejelentése
anonymous_warning: Ez a jegyzet névtelen felhasználók hozzászólásait is tartalmazza,
amelyeket független módon kell ellenőrizni.
+ discussion: Megbeszélés
+ subscribe: Feliratkozás
+ unsubscribe: Leiratkozás
hide: Elrejtés
resolve: Megoldás
reactivate: Újraaktiválás
way: Via
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (como %{relation_role})
not_found:
title: Non trovate
upload_trace: Incargar un tracia
all_traces: Tote le tracias
my_traces: Mi tracias
- traces_from: Tracias public de %{user}
+ traces_from_html: Tracias public de %{user}
remove_tag_filter: Remover filtro de etiquettas
destroy:
scheduled_for_deletion: Tracia programmate pro deletion
navigation:
all_blocks: Tote le blocadas
blocks_on_me: Blocadas sur me
- blocks_on_user: Blocadas sur %{user}
+ blocks_on_user_html: Blocadas sur %{user}
blocks_by_me: Blocadas facite per me
- blocks_by_user: Blocadas facite per %{user}
+ blocks_by_user_html: Blocadas facite per %{user}
block: Blocada №%{id}
new_block: Nove blocada
user_mutes:
way: Way/Garis
relation: Relasi
containing_relation:
- entry_html: Relasi %{relation_name}
entry_role_html: Relasi %{relation_name} (as %{relation_role})
not_found:
title: Tidak Ditemukan
upload_trace: Unggah jejak GPS
all_traces: Semua Jejak
my_traces: Jejak Saya
- traces_from: Jejak Publik dari %{user}
+ traces_from_html: Jejak Publik dari %{user}
remove_tag_filter: Hapus Filter Tag
destroy:
scheduled_for_deletion: Trek yang dijadwalkan untuk dihapus
way: Leið
relation: Vensl
containing_relation:
- entry_html: Venslin %{relation_name}
entry_role_html: Venslin %{relation_name} (sem „%{relation_role}“)
not_found:
title: Fannst ekki
upload_trace: Senda inn feril
all_traces: Allar ferlar
my_traces: Ferlarnir mínir
- traces_from: Opinberir ferlar frá %{user}
+ traces_from_html: Opinberir ferlar frá %{user}
remove_tag_filter: Fjarlægja merkjasíu
destroy:
scheduled_for_deletion: Þessum feril verður eitt
navigation:
all_blocks: Öll bönn
blocks_on_me: Bönn gegn mér
- blocks_on_user: Bönn gegn %{user}
+ blocks_on_user_html: Bönn gegn %{user}
blocks_by_me: Bönn eftir mig
- blocks_by_user: Bönn eftir %{user}
+ blocks_by_user_html: Bönn eftir %{user}
block: 'Bann #%{id}'
user_mutes:
index:
# Author: Fringio
# Author: Frubino
# Author: Gianfranco
+# Author: HaukweKwor
# Author: Isiond
# Author: JackLantern
# Author: Jlrb+
link: https://osmfoundation.org/wiki/Licence/Contributor_Terms/IT
link text: che cos'è questo?
save changes button: Salva modifiche
- delete_account: Elimina account...
+ delete_account: Elimina Utenza...
go_public:
heading: Modifica pubblica
currently_not_public: Attualmente le tue modifiche sono anonime e le persone
way: Percorso
relation: Relazione
containing_relation:
- entry_html: Relazione %{relation_name}
- entry_role_html: Relazione %{relation_name} (come %{relation_role})
+ entry_role_html: '%{relation_name} (come %{relation_role})'
not_found:
title: Non trovato
sorry: 'Impossibile trovare %{type} #%{id}.'
upload_trace: Carica un tracciato
all_traces: Tutti i tracciati
my_traces: I miei tracciati
- traces_from: Tracciati pubblici di %{user}
+ traces_from_html: Tracciati pubblici di %{user}
remove_tag_filter: Rimuovi filtro delle etichette
destroy:
scheduled_for_deletion: Tracciato in attesa di essere eliminato
navigation:
all_blocks: Tutti i blocchi
blocks_on_me: Blocchi su di me
- blocks_on_user: Blocchi su %{user}
+ blocks_on_user_html: Blocchi su %{user}
blocks_by_me: Blocchi applicati da me
- blocks_by_user: Blocchi imposti da %{user}
+ blocks_by_user_html: Blocchi imposti da %{user}
block: 'Blocco #%{id}'
new_block: Nuovo blocco
user_mutes:
way: ウェイ
relation: リレーション
containing_relation:
- entry_html: リレーション %{relation_name}
entry_role_html: リレーション %{relation_name} (%{relation_role} として)
not_found:
title: 見つかりません
upload_trace: トレースをアップロード
all_traces: 全てのトレース
my_traces: 自分のトレース
- traces_from: '%{user}さんによる公開GPSトレース'
+ traces_from_html: '%{user}さんによる公開GPSトレース'
remove_tag_filter: タグフィルターの削除
destroy:
scheduled_for_deletion: トレースの削除準備を行いました
way: გზა
relation: ურთიერთობა
containing_relation:
- entry_html: ურთიერთობა %{relation_name}
entry_role_html: ურთიერთობა %{relation_name} (როგორც %{relation_role})
not_found:
sorry: 'სამწუხაროდ, %{type} #%{id} ვერ მოიძებნა.'
way: Abrid
relation: Assaɣ
containing_relation:
- entry_html: Assaɣ %{relation_name}
entry_role_html: Assaɣ %{relation_name} (am %{relation_role})
not_found:
sorry: 'Suref-aɣ, %{type} #%{id} ulac-it.'
node: Нүкте
way: Сызық
relation: Қатынас
- containing_relation:
- entry_html: Қатынас %{relation_name}
not_found:
title: Табылмады
type:
way: ផ្លូវ
relation: ទំនាក់ទំនង
containing_relation:
- entry_html: ទំនាក់ទំនង %{relation_name}
entry_role_html: ទំនាក់ទំនង %{relation_name} (ជា %{relation_role})
not_found:
sorry: សូមទោស រកមិនឃើញ %{type}%{id} ទេ។
type:
way: ರಸ್ತೆ
relation: ಸಂಬಂಧ
- containing_relation:
- entry_html: ಸಂಬಂಧ %{relation_name}
not_found:
title: ಸಿಗಲಿಲ್ಲ
sorry: 'ಕ್ಷಮಿಸಿ, %{type} #%{id} ಸಿಗುತ್ತಿಲ್ಲ.'
way: 길
relation: 관계
containing_relation:
- entry_html: 관계 %{relation_name}
entry_role_html: (%{relation_role}로서) 관계 %{relation_name}
not_found:
title: 찾을 수 없음
upload_trace: 궤적 올리기
all_traces: 모든 궤적
my_traces: 내 발자취
- traces_from: '%{user}님의 공개 GPS 궤적'
+ traces_from_html: '%{user}님의 공개 GPS 궤적'
remove_tag_filter: 태그 필터 제거
destroy:
scheduled_for_deletion: 삭제 계획중인 궤적
navigation:
all_blocks: 모든 차단
blocks_on_me: 나의 차단내역
- blocks_on_user: '%{user}님의 차단내역'
+ blocks_on_user_html: '%{user}님의 차단내역'
blocks_by_me: 내가 차단한 내역
- blocks_by_user: '%{user}님이 차단한 내역'
+ blocks_by_user_html: '%{user}님이 차단한 내역'
block: '#%{id} 차단'
new_block: 최근 차단
user_mutes:
way: Rê
relation: Eleqe
containing_relation:
- entry_html: Eleqe %{relation_name}
entry_role_html: Eleqe %{relation_name} (wekî %{relation_role})
not_found:
title: Nehate dîtin
upload_trace: Şopek GPSê bar bike
all_traces: Temamê Şopan
my_traces: Şopên min
- traces_from: Şopên Giştî ji %{user}
+ traces_from_html: Şopên Giştî ji %{user}
remove_tag_filter: Parzûna etîketê rake
destroy:
scheduled_for_deletion: Şop ji bo jêbirinê hate plankirin
way: Wee
relation: Relatioun
containing_relation:
- entry_html: Relatioun %{relation_name}
entry_role_html: Relatioun %{relation_name} (als %{relation_role})
not_found:
title: Net fonnt
wiki_page: Wiki-Säit
all_traces: All Spuren
my_traces: Meng Spueren
- traces_from: Ëffentlech Spuere vum %{user}
+ traces_from_html: Ëffentlech Spuere vum %{user}
remove_tag_filter: Tag-Filter ewechhuelen
destroy:
scheduled_for_deletion: Fir d'Läsche bestëmmt Spuer
way: Kelias
relation: Ryšys
containing_relation:
- entry_html: Ryšys %{relation_name}
entry_role_html: Ryšys %{relation_name} (kaip %{relation_role})
not_found:
title: Nerasta
upload_trace: Įkelti pėdsaką
all_traces: Visi pėdsakai
my_traces: Mano GPS pėdsakai
- traces_from: Vieši naudotojo %{user} pėdsakai
+ traces_from_html: Vieši naudotojo %{user} pėdsakai
remove_tag_filter: Pašalinti žymų filtrą
destroy:
scheduled_for_deletion: Trasa, numatyta ištrinimui
navigation:
all_blocks: Visi blokavimai
blocks_on_me: Mano blokavimai
- blocks_on_user: '%{user} blokavimai'
+ blocks_on_user_html: '%{user} blokavimai'
blocks_by_me: Mano sukurti blokavimai
- blocks_by_user: '%{user} sukurti blokavimai'
+ blocks_by_user_html: '%{user} sukurti blokavimai'
block: 'Blokavimas #%{id}'
new_block: Naujas blokavimas
user_mutes:
way: Līnija
relation: Relācija
containing_relation:
- entry_html: Relācija %{relation_name}
entry_role_html: Relācija %{relation_name} (kā %{relation_role})
not_found:
sorry: 'Atvainojiet, %{type} ar id #%{id} nevarējām atrast.'
way: Пат
relation: Однос
containing_relation:
- entry_html: Однос %{relation_name}
entry_role_html: Однос %{relation_name} (како %{relation_role})
not_found:
title: Не е најдено
upload_trace: Подигни трага
all_traces: Сите траги
my_traces: Мои траги
- traces_from: Јавни траги од %{user}
+ traces_from_html: Јавни траги од %{user}
remove_tag_filter: Отстрани филтер за ознаки
destroy:
scheduled_for_deletion: Трагата е закажана за бришење
navigation:
all_blocks: Сите блокови
blocks_on_me: Добиени блокови
- blocks_on_user: Блокови за %{user}
+ blocks_on_user_html: Блокови за %{user}
blocks_by_me: Извршени болокови
- blocks_by_user: Блокови од %{user}
+ blocks_by_user_html: Блокови од %{user}
block: Блок бр. %{id}
new_block: Нов блок
user_mutes:
way: Кале
relation: Релацие
containing_relation:
- entry_html: Релация %{relation_name}
entry_role_html: Релация %{relation_name} (ын ролул %{relation_role})
not_found:
type:
way: मार्ग
relation: संबंध
containing_relation:
- entry_html: संबंध %{relation_name}
entry_role_html: संबंध %{relation_name} (%{relation_role} म्हणून)
not_found:
sorry: 'क्षमा असावी, %{type} #%{id} सापडले नाही.'
way: Jalan
relation: Hubungan
containing_relation:
- entry_html: Hubungan %{relation_name}
entry_role_html: Hubungan %{relation_name} (sebagai %{relation_role})
not_found:
title: Tidak Dijumpai
way: Linje
relation: Relasjon
containing_relation:
- entry_html: Relasjon %{relation_name}
entry_role_html: Relasjon %{relation_name} (som %{relation_role})
not_found:
title: Ikke funnet
way: बाटो
relation: सम्बन्ध
containing_relation:
- entry_html: सम्बन्ध %{relation_name}
entry_role_html: सम्बन्ध %{relation_name} (as %{relation_role})
not_found:
title: फेला परेन
way: Weg
relation: Relatie
containing_relation:
- entry_html: Relatie %{relation_name}
entry_role_html: Relatie %{relation_name} (als %{relation_role})
not_found:
title: Kon niet gevonden worden
latest_edit_html: 'Laatste bewerking (%{ago}):'
popup:
your location: Uw locatie
- nearby mapper: Dichtbijzijnde mapper
+ nearby mapper: Nabije kaartmaker
friend: Vriend
show:
title: Mijn dashboard
edit_your_profile: Pas uw profiel aan
my friends: Mijn vrienden
no friends: U hebt nog geen vrienden toegevoegd.
- nearby users: Andere dichtbijzijnde gebruikers
+ nearby users: Andere nabije gebruikers
no nearby users: Er zijn nog geen andere gebruikers die hebben opgegeven in
de buurt te mappen.
friends_changesets: wijzigingensets van vrienden
other: '%{count} oude berichten'
no_messages_yet_html: U hebt nog geen berichten. Waarom legt u geen contact
met %{people_mapping_nearby_link}?
- people_mapping_nearby: dichtbijzijnde mappers
+ people_mapping_nearby: nabije kaartmakers
messages_table:
from: Van
to: Aan
other: U hebt %{count} verzonden berichten
no_sent_messages_html: U hebt nog geen berichten verzonden. Waarom legt u geen
contact met %{people_mapping_nearby_link}?
- people_mapping_nearby: dichtbijzijnde mappers
+ people_mapping_nearby: nabije kaartmakers
muted:
title: Gedempte berichten
messages:
heading_html: '%{copyright}OpenStreetMap- %{br} bijdragers'
used_by_html: '%{name} levert kaartgegevens aan duizenden websites, mobiele
apps en hardware-apparaten'
- lede_text: OpenStreetMap wordt gemaakt door een gemeenschap van mappers die
- gegevens over wegen, paden, cafés, treinstations en nog veel meer, over de
- hele wereld bijdragen en onderhouden.
+ lede_text: OpenStreetMap wordt gemaakt door een gemeenschap van kaartmakers
+ die gegevens over wegen, paden, cafés, treinstations en nog veel meer, over
+ de hele wereld bijdragen en onderhouden.
local_knowledge_title: Lokale kennis
local_knowledge_html: OpenStreetMap legt de nadruk op lokale kennis. Bijdragers
gebruiken luchtfoto's, gps-apparaten en low-tech veldkaarten om te controleren
instructions_1_html: |-
Klik op %{note_icon} of hetzelfde pictogram op de kaartweergave.
Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen
- door haar te verslepen. Voeg uw bericht toe, klik op "opslaan" en andere mappers zullen uw melding nagaan.
+ door deze te verslepen. Voeg uw bericht toe en klik op “Opslaan”, dan zullen andere kaartmakers uw melding nagaan.
other_concerns:
title: Andere aangelegenheden
concerns_html: |-
toevoegen.
para_2_html: |-
Ga naar %{map_link} en klik op het opmerkingssymbool:
- %{note_icon}. Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen door te slepen. Voeg uw bericht toe en klik dan op Opslaan, zodat andere mappers het kunnen onderzoeken.
+ %{note_icon}. Er wordt een markering toegevoegd aan de kaart die u kunt verplaatsen door te slepen. Voeg uw bericht toe en klik op “Opslaan”, dan zullen andere kaartmakers uw melding nagaan.
the_map: de kaart
communities:
title: Gemeenschappen
local_chapters:
title: Lokale Afdelingen
about_text: |-
- Lokale Afdelingen zijn groepen op land- of regioniveau die de formele stap hebben gezet om juridische entiteiten zonder winstoogmerk op te richten. Ze vertegenwoordigen de kaart en kaartenmakers van het gebied wanneer te maken heeft met de lokale overheid, het bedrijfsleven en de media. Ze hebben ook een affiliatie
- met de OpenStreetMap Foundation (OSMF), waardoor ze een link hebben met de wettelijke en auteursrechtelijke-overheidsinstantie.
+ Lokale Afdelingen zijn groepen op land- of regioniveau die de formele stap hebben gezet om juridische entiteiten zonder winstoogmerk op te richten. Ze vertegenwoordigen de kaart en kaartmakers van het gebied bij het omgaan met de lokale overheid, het bedrijfsleven en de media. Ze hebben ook een affiliatie
+ met de OpenStreetMap Foundation (OSMF), waardoor ze een link hebben met de wettelijke en auteursrechtelijke overheidsinstantie.
list_text: 'De volgende gemeenschappen zijn formeel opgericht als Lokale Afdelingen:'
other_groups:
title: Andere Groepen
upload_trace: Traject uploaden
all_traces: Alle trajecten
my_traces: Mijn trajecten
- traces_from: Openbare trajecten van %{user}
+ traces_from_html: Openbare trajecten van %{user}
remove_tag_filter: Labelfilter verwijderen
destroy:
scheduled_for_deletion: Traject staat op de lijst voor verwijdering
notes: Kaartopmerkingen
remove as friend: Vriend verwijderen
add as friend: Vriend toevoegen
- mapper since: 'Mapper sinds:'
+ mapper since: 'Kaartmaker sinds:'
last map edit: 'Recentste bewerking:'
no activity yet: Nog geen activiteit
uid: 'Gebruikers-ID:'
navigation:
all_blocks: Alle blokkades
blocks_on_me: Blokkades voor u
- blocks_on_user: Blokkades voor %{user}
+ blocks_on_user_html: Blokkades voor %{user}
blocks_by_me: Blokkades door u
- blocks_by_user: Blokkades door %{user}
+ blocks_by_user_html: Blokkades door %{user}
block: 'Blokkade #%{id}'
new_block: Nieuwe blokkade
user_mutes:
%{disappear_in}.
new:
title: Nieuwe opmerking
- intro: Een fout gezien of ontbreekt er iets? Laat het andere mappers weten zodat
- wij het kunnen oplossen. Verplaats de markering naar de correcte positie en
- beschrijf het probleem.
+ intro: Een fout gezien? Ontbreekt er iets? Laat het andere kaartmakers weten
+ zodat wij het kunnen verbeteren. Verplaats de markering naar de juiste positie
+ en beschrijf het probleem.
anonymous_warning_html: U bent niet aangemeld. Als u updates van uw aantekening
wilt ontvangen, kunt u %{log_in} of %{sign_up}.
anonymous_warning_log_in: aanmelden
way: Veg
relation: Relasjon
containing_relation:
- entry_html: Relasjon %{relation_name}
entry_role_html: Relasjon %{relation_name} (som %{relation_role})
not_found:
title: Ikkje funne
way: ߛߌߟߊ
relation: ߕߍߓߊ߯ߦߊ
containing_relation:
- entry_html: ߕߍߓߊ߯ߦߊ %{relation_name}
entry_role_html: ߕߍߓߊ߯ߦߊ %{relation_role} %{relation_name} ߘߌ߫
not_found:
title: ߡߊ߫ ߛߐ߬ߘߐ߲߫
upload_trace: ߜߋ߬ߙߋ ߘߏ߫ ߟߊߦߟߍ߬
all_traces: ߜߋ߬ߙߋ ߟߎ߬ ߓߍ߯
my_traces: ߒ ߝߏ߲߬ߝߏ߲ ߠߎ߬
- traces_from: ߜߍߘߐ߫ ߜߙߋ ߟߎ߬ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
+ traces_from_html: ߜߍߘߐ߫ ߜߙߋ ߟߎ߬ ߞߊ߬ ߝߘߊ߫ %{user} ߟߊ߫
destroy:
scheduled_for_deletion: ߜߋ߬ߙߋ ߟߐ߯ߟߊߟߌ ߖߏ߰ߛߌ߬ ߞߊ߲ߡߊ߬
offline_warning:
way: Linha
relation: Relacion
containing_relation:
- entry_html: Relacion %{relation_name}
entry_role_html: Relacion %{relation_name} (per %{relation_role})
not_found:
title: S'es pas trobat
upload_trace: Mandar una traça
all_traces: Totei lei traças
my_traces: Mei traças GPS
- traces_from: Traças GPS publicas de %{user}
+ traces_from_html: Traças GPS publicas de %{user}
remove_tag_filter: Elimina lo filtre d'etiquetas
destroy:
scheduled_for_deletion: Pista prevista per la supression
way: ਰਾਹ
relation: ਸਬੰਧ
containing_relation:
- entry_html: ਸਬੰਧ %{relation_name}
entry_role_html: ਸਬੰਧ %{relation_name} (%{relation_role} ਵਜੋਂ)
not_found:
title: ਨਹੀਂ ਲੱਭਿਆ
upload_trace: ਕੋਈ ਖੁਰਾ-ਖੋਜ ਚੜ੍ਹਾਉ
all_traces: ਸਾਰੇ ਖੁਰਾ-ਖੋਜ
my_traces: ਮੇਰੇ ਖੁਰਾ-ਖੋਜ
- traces_from: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
+ traces_from_html: '%{user} ਤੋਂ ਜਨਤਕ ਖੁਰਾ-ਖੋਜ'
georss:
title: OpenStreetMap GPS ਖੁਰਾ-ਖੋਜ
description:
way: Linia
relation: Relacja
containing_relation:
- entry_html: Relacja %{relation_name}
entry_role_html: Relacja %{relation_name} (jako %{relation_role})
not_found:
title: Nie znaleziono
upload_trace: Wyślij ślad
all_traces: Wszystkie ślady
my_traces: Moje ślady GPS
- traces_from: Publiczne ślady GPS użytkownika %{user}
+ traces_from_html: Publiczne ślady GPS użytkownika %{user}
remove_tag_filter: Usuń filtr tagów
destroy:
scheduled_for_deletion: Ślad oczekuje na usunięcie
navigation:
all_blocks: Wszystkie blokady
blocks_on_me: Blokady nałożone na mnie
- blocks_on_user: Blokady na %{user}
+ blocks_on_user_html: Blokady na %{user}
blocks_by_me: Blokady nałożone przeze mnie
- blocks_by_user: Blokady nałożone przez %{user}
+ blocks_by_user_html: Blokady nałożone przez %{user}
block: Blokada nr %{id}
new_block: Nowy blok
user_mutes:
description: Opis
created_at: Utworzono w dniu
last_changed: Ostatnio zmieniono
+ apply: Zastosuj
+ all: Wszystkie
+ open: Otwarte
+ closed: Zamknięte
+ status: Status
show:
title: 'Uwaga: %{id}'
description: 'Opis:'
report: ją zgłosić
anonymous_warning: Uwaga zawiera informacje od anonimowych użytkowników, które
należy zweryfikować przed wprowadzeniem zmian na mapie.
+ discussion: Dyskusja
+ subscribe: Obserwuj
+ unsubscribe: Nie obserwuj
hide: Ukryj
resolve: Oznacz jako rozwiązaną
reactivate: Ponownie aktywuj
way: راہ
relation: سمبندھ
containing_relation:
- entry_html: سمبندھ «%{relation_name}»
entry_role_html: سمبندھ «%{relation_name}» وچ «%{relation_role}» رول
not_found:
title: کجھ نہیں لبھیا
upload_trace: کھرا چڑھایو
all_traces: سارے کھرے کھوجاں
my_traces: میرے کھرے
- traces_from: «%{user}» دے عوام کھرے
+ traces_from_html: «%{user}» دے عوام کھرے
remove_tag_filter: فلٹر ہٹاؤ
georss:
title: کھرے کھوجاں
longitude: Longitude
public: Público
description: Descrição
- gpx_file: Enviar ficheiro GPX
+ gpx_file: Escolher ficheiro GPX
visibility: Visibilidade
tagstring: Etiquetas
message:
way: Linha
relation: Relação
containing_relation:
- entry_html: Relação %{relation_name}
entry_role_html: Relação %{relation_name} (como %{relation_role})
not_found:
title: Não encontrado
timeout:
sorry: Lamentamos, mas o histórico do nó com o id %{id} demorou muito para ser
obido.
+ ways:
+ timeout:
+ sorry: Os dados para a linha com o id %{id} levaram demasiado tempo a ser carregados.
old_ways:
not_found:
sorry: 'Desculpe, não foi possível encontrar #%{id} versão %{version}.'
+ timeout:
+ sorry: O histórico da linha com o id %{id} levou demasiado tempo a ser carregado.
+ relations:
+ timeout:
+ sorry: Os dados para a relação com o id %{id} levaram demasiado tempo a ser
+ carregados.
old_relations:
not_found:
sorry: 'Desculpe, a relação #%{id} versão %{version} não foi encontrada.'
+ timeout:
+ sorry: O histórico da relação com o id %{id} levou demasiado tempo a ser carregado.
changeset_comments:
feeds:
comment:
befriend_them: Também podes adicioná-lo como amigo em %{befriendurl}.
befriend_them_html: Também podes adicionar este utilizador como amigo em %{befriendurl}.
gpx_description:
- description_with_tags: 'Parece que o teu ficheiro GPX %{trace_name} com a descrição
- %{trace_description} e as seguintes etiquetas: %{tags}'
- description_with_tags_html: 'Parece que o teu ficheiro GPX %{trace_name} com
- a descrição %{trace_description} e as etiquetas: %{tags}'
- description_with_no_tags: Parece que o teu ficheiro GPX %{trace_name} com a
+ description_with_tags: 'Parece que o teu ficheiro %{trace_name} com a descrição
+ %{trace_description} e as etiquetas: %{tags}'
+ description_with_tags_html: 'Parece que o teu ficheiro %{trace_name} com a descrição
+ %{trace_description} e as etiquetas: %{tags}'
+ description_with_no_tags: Parece que o teu ficheiro %{trace_name} com a descrição
+ %{trace_description} e sem etiquetas
+ description_with_no_tags_html: Parece que o teu ficheiro %{trace_name} com a
descrição %{trace_description} e sem etiquetas
- description_with_no_tags_html: Parece que o teu ficheiro GPX %{trace_name} com
- a descrição %{trace_description} e sem etiquetas
gpx_failure:
hi: Olá, %{to_user}.
- failed_to_import: 'falhou na importação. Eis o erro:'
+ failed_to_import: 'não pôde ser importado como ficheiro de rota GPS. Verifica
+ se o teu ficheiro é um ficheiro GPX válido ou um arquivo com ficheiro(s) GPX
+ no formato suportado (.tar.gz, .tar.bz2, .tar, .zip, .gpx.gz, .gpx.bz2). Será
+ que existe algum problema de formato ou sintaxe com o ficheiro? Este é o erro
+ de importação:'
more_info: Podes encontrar mais informações sobre falhas de importação de ficheiros
GPX e como as evitar em %{url}.
more_info_html: Podes encontrar mais informações sobre falhas de importação
one: '%{count} mensagem silenciada'
other: Tens %{count} mensagens silenciadas
reply:
- wrong_user: Estás autenticado como `%{user}', mas a mensagem a que pretendes
+ wrong_user: Iniciaste sessão como `%{user}', mas a mensagem a que pretendes
responder não foi enviada para esse utilizador. Por favor, entra na conta
correta para poderes responder.
show:
unread_button: Marcar como não lida
destroy_button: Eliminar
back: Voltar
- wrong_user: Estás autenticado como `%{user}', mas a mensagem que pediste para
+ wrong_user: Iniciaste sessão como `%{user}', mas a mensagem que pediste para
ler não foi enviada por ou para esse utilizador. Por favor, entra na conta
correta para poderes ler a mensagem.
sent_message_summary:
hospital: Hospital
building: Edifício importante
station: Estação ferroviária
+ railway_halt: Paragem ferroviária
+ subway_station: Estação de metro
+ tram_stop: Paragem de elétrico
summit: Cume
peak: Pico
tunnel: Linha tracejada = túnel
upload_trace: Enviar rota GPS
all_traces: Todas as Rotas
my_traces: As Minhas Rotas
- traces_from: Rotas Públicas de %{user}
+ traces_from_html: Rotas Públicas de %{user}
remove_tag_filter: Eliminar filtro de etiqueta
destroy:
scheduled_for_deletion: Rota programada para eliminação
informal_translations: traduções informais
continue: Continuar
declined: https://wiki.openstreetmap.org/wiki/Pt:Contributor_Terms_Declined
+ cancel: Cancelar
you need to accept or decline: Por favor, lê e, em seguida, aceita ou recusa
os novos Termos do Contribuidor para continuar.
legale_select: 'País de residência:'
ao teu ID nas tuas definições de utilizador.
user_role:
filter:
- not_a_role: A expressão `%{role}' não é um cargo válido.
+ not_a_role: O texto `%{role}' não corresponde a um cargo válido.
already_has_role: O utilizador já tem o cargo %{role}.
doesnt_have_role: O utilizador não tem o cargo %{role}.
not_revoke_admin_current_user: Não foi possível retirar os direitos de administrador
do atual utilizador.
grant:
- are_you_sure: Tens a certeza de que pretendes conceder o cargo `%{role}' ao
+ are_you_sure: Tens a certeza de que pretendes atribuir o cargo `%{role}' ao
utilizador `%{name}'?
revoke:
are_you_sure: Tens a certeza de que pretendes retirar o cargo `%{role}' ao utilizador
navigation:
all_blocks: Todos os bloqueios
blocks_on_me: Quem me bloqueou
- blocks_on_user: Bloqueios a %{user}
+ blocks_on_user_html: Bloqueios a %{user}
blocks_by_me: Os meus bloqueios
- blocks_by_user: Bloqueios de %{user}
+ blocks_by_user_html: Bloqueios de %{user}
block: 'Bloqueio #%{id}'
new_block: Novo Bloqueio
user_mutes:
description: Descrição
created_at: Criada em
last_changed: Última alteração
+ apply: Aplicar
+ all: Todas
+ open: Abrir
+ closed: Encerrada
+ status: Estado
show:
title: 'Nota: %{id}'
description: Descrição
report: denunciar esta nota
anonymous_warning: Esta nota inclui comentários de utilizadores anónimos que
devem ser confirmados por fonte independente.
+ discussion: Discussão
+ subscribe: Subscrever
+ unsubscribe: Cancelar subscrição
hide: Esconder
resolve: Marcar como resolvida
reactivate: Reabrir
add: Adicionar Nota
notes_paging_nav:
showing_page: Página %{page}
+ next: Próxima
+ previous: Anterior
javascripts:
close: Fechar
share:
empty: Não existem supressões para mostrar.
heading: Lista de supressões
title: Lista de supressões
+ new: Nova redação
new:
heading: Introduza a informação da nova supressão
title: A criar uma nova supressão
way: Linha
relation: Relação
containing_relation:
- entry_html: Relação %{relation_name}
entry_role_html: Relação %{relation_name} (como %{relation_role})
not_found:
title: Não encontrado
upload_trace: Enviar uma trilha
all_traces: Todos os traços
my_traces: Minhas trilhas
- traces_from: Traços públicos de %{user}
+ traces_from_html: Traços públicos de %{user}
remove_tag_filter: Remova o filtro de marcações
destroy:
scheduled_for_deletion: Trilha marcada para ser apagada
navigation:
all_blocks: Todos os bloqueios
blocks_on_me: Bloqueios sobre mim
- blocks_on_user: Bloqueios em %{user}
+ blocks_on_user_html: Bloqueios em %{user}
blocks_by_me: Bloqueios por mim
- blocks_by_user: Bloqueios por %{user}
+ blocks_by_user_html: Bloqueios por %{user}
block: 'Bloqueio #%{id}'
new_block: Novo bloqueio
user_mutes:
way: Cale
relation: Relație
containing_relation:
- entry_html: Relația %{relation_name}
entry_role_html: Relația %{relation_name} (ca %{relation_role})
not_found:
title: Nu a fost găsit
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}
+ traces_from_html: Traseele GPS publice de la %{user}
remove_tag_filter: Eliminați filtrul de etichete
destroy:
scheduled_for_deletion: Traseul este programat pentru ștergere
# Author: Alexey zakharenkov
# Author: Amire80
# Author: Andrewsh
+# Author: Anton Khorev
# Author: Ashed
# Author: Banonotit
# Author: BushmanK
way: Линия
relation: Отношение
containing_relation:
- entry_html: Отношение %{relation_name}
- entry_role_html: Отношение %{relation_name} (в роли %{relation_role})
+ entry_role_html: '%{relation_name} (в роли %{relation_role})'
not_found:
title: Не найдено
sorry: 'К сожалению, %{type} #%{id} не найден.'
traces:
older: Более старые треки
newer: Более новые треки
+ user_blocks:
+ older: Более старые блокировки
+ newer: Более новые блокировки
users:
older: Участники с большим стажем
newer: Новые участники
upload_trace: Загрузить треки
all_traces: Все треки
my_traces: Мои треки
- traces_from: Общедоступные трассировки от %{user}
+ traces_from_html: Общедоступные трассировки от %{user}
remove_tag_filter: Удалить фильтр тегов
destroy:
scheduled_for_deletion: Запланировано к удалению
description: Описание
created_at: Создана
last_changed: Изменена
+ apply: Применить
+ all: Все
+ open: Незакрытые
+ closed: Закрытые
show:
title: 'Заметка: %{id}'
description: Описание
add: Добавить заметку
notes_paging_nav:
showing_page: Страница %{page}
+ next: Следующая
+ previous: Предыдущая
javascripts:
close: Закрыть
share:
way: ᱦᱚᱨ
relation: ᱥᱟᱹᱜᱟᱹᱭ
containing_relation:
- entry_html: ᱥᱟᱹᱜᱟᱹᱭ %{relation_name}
entry_role_html: ᱥᱟᱹᱜᱟᱹᱭ %{relation_name} (as %{relation_role})
not_found:
title: ᱵᱟᱝ ᱧᱟᱢ ᱞᱮᱱᱟ
way: Lìnia
relation: Relata
containing_relation:
- entry_html: Relata %{relation_name}
entry_role_html: Relata %{relation_name} (comente %{relation_role})
not_found:
title: No agatadu
upload_trace: Càrriga una rasta
all_traces: Totu sas rastas
my_traces: Sas rastas meas
- traces_from: Rastas pùblicas de %{user}
+ traces_from_html: Rastas pùblicas de %{user}
remove_tag_filter: Boga su filtru de etichetas
destroy:
scheduled_for_deletion: Rasta programmada pro s'iscantzelladura
way: Caminu
relation: Rilazzioni
containing_relation:
- entry_html: Rilazzioni %{relation_name}
entry_role_html: Rilazzioni %{relation_name} (comu %{relation_role})
not_found:
title: Senza truvatu
way: Wey
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (as %{relation_role})
not_found:
sorry: 'Sorry, %{type} #%{id} could nae be foond.'
way: Cesta
relation: Relácia
containing_relation:
- entry_html: Relácia %{relation_name}
entry_role_html: Relácia %{relation_name} (ako %{relation_role})
not_found:
title: Nenájdené
upload_trace: Nahrať stopu
all_traces: Všetky stopy
my_traces: Moje stopy
- traces_from: Verejné stopy od %{user}
+ traces_from_html: Verejné stopy od %{user}
remove_tag_filter: Odstrániť filter značiek
destroy:
scheduled_for_deletion: Stopa plánovaná na vymazanie
title: Poznámky vytvorené alebo komentované používateľom %{user}
heading: Poznámky používateľa %{user}
subheading_html: Poznámky %{submitted} alebo %{commented}používateľom %{user}
+ subheading_submitted: vytvorené
+ subheading_commented: komentované
no_notes: Žiadne poznámky
id: ID
creator: Autor
description: Popis
created_at: Vytvorené
last_changed: Posledná zmena
+ apply: Použiť
+ all: Všetky
+ open: Otvorené
+ closed: Uzavreté
+ status: Stav
show:
title: 'Poznámka: %{id}'
description: Popis
report: nahlásiť túto poznámku
anonymous_warning: Táto poznámka zahŕňa komentáre anonymných používateľov, ktoré
by sa mali nezávisle preveriť.
+ discussion: Diskusia
+ subscribe: Sledovať
+ unsubscribe: Zrušiť sledovanie
hide: Skryť
resolve: Vyriešiť
reactivate: Opätovne aktivovať
comment_and_resolve: Okomentovať a vyriešiť
comment: Okomentovať
+ log_in_to_comment: Ak chcete komentovať túto poznámku, prihláste sa
report_link_html: Ak táto poznámka obsahuje citlivé údaje, ktoré by mali byť
odstránené, môžete %{link}.
other_problems_resolve: Pre všetky ostatné problémy s poznámkou, prosím vyriešte
intro: Zahliadli ste chybu alebo že niečo chýba? Dajte to vedieť ostatným používateľom,
aby sme to mohli opraviť. Umiestnite značku na správnu pozíciu a zapíšte poznámku
na vysvetlenie problému.
+ anonymous_warning_html: Nie ste prihlásený. Prosím, %{log_in} alebo %{sign_up},
+ ak chcete dostávať aktualizácie vašej poznámky.
+ anonymous_warning_log_in: prihláste sa
+ anonymous_warning_sign_up: zaregistrujte sa
advice: Vaša poznámka je verejná a môže slúžiť na úpravu mapy, preto nevkladajte
žiadne osobné údaje ani informácie z máp alebo databáz chránených autorskými
právami.
way: Pot
relation: Relacija
containing_relation:
- entry_html: Relacija %{relation_name}
entry_role_html: Relacija %{relation_name} (kot %{relation_role})
not_found:
title: Ni najdeno
upload_trace: Naloži sled GPS
all_traces: Vse sledi
my_traces: Moje sledi
- traces_from: Javne sledi uporabnika %{user}
+ traces_from_html: Javne sledi uporabnika %{user}
remove_tag_filter: Odstrani filter oznak
destroy:
scheduled_for_deletion: Sled bo izbrisana
way: Rruga
relation: Lidhja
containing_relation:
- entry_html: Lidhja %{relation_name}
entry_role_html: Lidhja %{relation_name} (sikur %{relation_role})
not_found:
sorry: 'Na vjen keq, %{type} #%{id} nuk mund të gjendet.'
way: Putanja
relation: Odnos
containing_relation:
- entry_html: Odnos %{relation_name}
entry_role_html: Odnos %{relation_name} (kao %{relation_role})
not_found:
sorry: Žao nam je, ali %{type} s IB %{id} nije pronađen.
way: Линија
relation: Однос
containing_relation:
- entry_html: Однос %{relation_name}
- entry_role_html: Однос %{relation_name} (као %{relation_role})
+ entry_role_html: '%{relation_name} (као %{relation_role})'
not_found:
title: Није нађено
sorry: 'Нажалост, %{type} #%{id} није пронађен.'
way: Sträcka
relation: Relation
containing_relation:
- entry_html: Relation %{relation_name}
entry_role_html: Relation %{relation_name} (som %{relation_role})
not_found:
title: Hittades inte
upload_trace: Ladda upp GPS-spår
all_traces: Alla spår
my_traces: Mina spår
- traces_from: Offentliga GPS-spår från %{user}
+ traces_from_html: Offentliga GPS-spår från %{user}
remove_tag_filter: Ta bort taggfilter
destroy:
scheduled_for_deletion: GPS-spår schemalagt för radering
navigation:
all_blocks: Alla blockeringar
blocks_on_me: Blockeringar på mig
- blocks_on_user: Blockeringar på %{user}
+ blocks_on_user_html: Blockeringar på %{user}
blocks_by_me: Blockeringar av mig
- blocks_by_user: Blockeringar av %{user}
+ blocks_by_user_html: Blockeringar av %{user}
block: 'Blockering #%{id}'
new_block: Ny blockering
user_mutes:
way: வழி
relation: தொடர்பு
containing_relation:
- entry_html: தொடர்பு %{relation_name}
entry_role_html: தொடர்பு %{relation_name} (%{relation_role} ஆக)
not_found:
title: காணப்படவில்லை
way: దారి
relation: సంబంధం
containing_relation:
- entry_html: '%{relation_name} సంబంధం'
entry_role_html: '%{relation_name} సంబంధం (%{relation_role} లాగా)'
not_found:
title: కనబడలేదు
upload_trace: ఓ ట్రేసును ఎక్కించండి
all_traces: ట్రేసులన్నీ
my_traces: నా ట్రేసులు
- traces_from: '%{user} గారి బహిరంగ ట్రేసులు'
+ traces_from_html: '%{user} గారి బహిరంగ ట్రేసులు'
remove_tag_filter: ట్యాగు వడపోతను తీసెయ్యి
destroy:
scheduled_for_deletion: ఈ ట్రేసు తొలగింపు కోసం వేచి ఉంది
way: เส้นทาง
relation: ความสัมพันธ์
containing_relation:
- entry_html: ความสัมพันธ์%{relation_name}
entry_role_html: ความสัมพันธ์%{relation_name} (ในฐานะ%{relation_role})
not_found:
title: ไม่พบข้อมูล
way: Daan
relation: Kaugnayan
containing_relation:
- entry_html: Kaugnayan %{relation_name}
entry_role_html: Kaugnayan %{relation_name} (bilang %{relation_role})
not_found:
title: Hindi Matagpuan
tagged_with: tinatakan ng %{tags}
upload_trace: Magkargang paitaas ng isang bakas
all_traces: Lahat ng mga Bakas
- traces_from: Pangmadlang Pagbakas mula kay %{user}
+ traces_from_html: Pangmadlang Pagbakas mula kay %{user}
destroy:
scheduled_for_deletion: Itinakda ang bakas para sa pagtatanggal
offline_warning:
way: Yol
relation: İlişki
containing_relation:
- entry_html: İlişki %{relation_name}
entry_role_html: İlişki %{relation_name} (%{relation_role} olarak)
not_found:
title: Bulunamadı
upload_trace: GPS izi gönder
all_traces: Tüm İzler
my_traces: GPS İzlerim
- traces_from: '%{user} kullanıcısına ait herkese açık izler'
+ traces_from_html: '%{user} kullanıcısına ait herkese açık izler'
remove_tag_filter: Etiket Filtresini Kaldır
destroy:
scheduled_for_deletion: İz, silme işlemi için ayarlandı
navigation:
all_blocks: Tüm Engellemeler
blocks_on_me: Engellendiklerim
- blocks_on_user: '%{user} kişisinin engelleri'
+ blocks_on_user_html: '%{user} kişisinin engelleri'
blocks_by_me: Engellediklerim
- blocks_by_user: '%{user} tarafından engellenenler'
+ blocks_by_user_html: '%{user} tarafından engellenenler'
block: 'Engel #%{id}'
new_block: Yeni Engel
user_mutes:
way: Юл
relation: Мөнәсәбәт
containing_relation:
- entry_html: Мөнәсәбәт %{relation_name}
entry_role_html: Мөнәсәбәт %{relation_name} (%{relation_role} сыйфатында)
not_found:
title: Табылмады
way: Лінія
relation: Зв’язок
containing_relation:
- entry_html: Зв’язок %{relation_name}
entry_role_html: Зв’язок %{relation_name} (як %{relation_role})
not_found:
title: Не знайдено
upload_trace: Надіслати GPS-трек на сервер
all_traces: Всі GPS-треки
my_traces: Мої GPS-треки
- traces_from: Загальнодоступні GPS треки %{user}
+ traces_from_html: Загальнодоступні GPS треки %{user}
remove_tag_filter: Прибрати фільтри
destroy:
scheduled_for_deletion: Заплановано для вилучення
navigation:
all_blocks: Всі блокування
blocks_on_me: Мої блокування
- blocks_on_user: Блокування для %{user}
+ blocks_on_user_html: Блокування для %{user}
blocks_by_me: Заблокований(а) мною
- blocks_by_user: Блокування, що їх наклав %{user}
+ blocks_by_user_html: Блокування, що їх наклав %{user}
block: Блокування №%{id}
new_block: Нове блокування
user_mutes:
description: Опис
created_at: Створено
last_changed: Остання зміна
+ apply: Застосувати
+ all: Всі
+ open: Відкриті
+ closed: Закриті
+ status: Стан
show:
title: 'Нотатка: %{id}'
description: Опис
report: поскаржитися на цю нотатку
anonymous_warning: Ця нотатка містить коментарі від анонімних учасників. Потрібна
додаткова перевірка відомостей.
+ discussion: Обговорення
+ subscribe: Підписатися
+ unsubscribe: Відписатись
hide: Приховати
resolve: Опрацьовано
reactivate: Поновити
way: Lối
relation: Quan hệ
containing_relation:
- entry_html: Quan hệ %{relation_name}
entry_role_html: 'Quan hệ %{relation_name} (vai trò: %{relation_role})'
not_found:
title: Không Tìm thấy
upload_trace: Tải lên tuyến đường
all_traces: Tất cả các Tuyến đường
my_traces: Tuyến đường của Tôi
- traces_from: Tuyến đường Công khai của %{user}
+ traces_from_html: Tuyến đường Công khai của %{user}
remove_tag_filter: Loại bỏ Bộ lọc Thẻ
destroy:
scheduled_for_deletion: Tuyến đường chờ được xóa
navigation:
all_blocks: Tất cả các Tác vụ Cấm
blocks_on_me: Tác vụ Cấm Tôi
- blocks_on_user: Tác vụ Cấm %{user}
+ blocks_on_user_html: Tác vụ Cấm %{user}
blocks_by_me: Tác vụ Cấm bởi Tôi
- blocks_by_user: Tác vụ Cấm bởi %{user}
+ blocks_by_user_html: Tác vụ Cấm bởi %{user}
block: Tác vụ cấm số %{id}
user_mutes:
index:
way: რზა
relation: ურთიართობა
containing_relation:
- entry_html: ურთიართობა %{relation_name}
entry_role_html: ურთიართობა %{relation_name} (მუჭოთ %{relation_role})
not_found:
title: ვეგორჷ
way: 路径
relation: 关系
containing_relation:
- entry_html: 关系 %{relation_name}
entry_role_html: 关系 %{relation_name} (作为 %{relation_role})
not_found:
title: 未找到
upload_trace: 上传轨迹
all_traces: 所有轨迹
my_traces: 我的轨迹
- traces_from: 来自%{user}的公开轨迹
+ traces_from_html: 来自%{user}的公开轨迹
remove_tag_filter: 移除标签过滤器
destroy:
scheduled_for_deletion: 计划删除的轨迹
navigation:
all_blocks: 所有封禁
blocks_on_me: 对我的封禁
- blocks_on_user: 对%{user}的封禁
+ blocks_on_user_html: 对%{user}的封禁
blocks_by_me: 由我做出的封禁
- blocks_by_user: 由%{user}做出的封禁
+ blocks_by_user_html: 由%{user}做出的封禁
block: 封禁#%{id}
new_block: 新封禁
user_mutes:
way: 路徑
relation: 關聯
containing_relation:
- entry_html: 關聯 %{relation_name}
entry_role_html: 關聯 %{relation_name} (作為 %{relation_role})
not_found:
title: 找不到
upload_trace: 上傳軌跡
all_traces: 所有軌跡
my_traces: 我的軌跡
- traces_from: 來自 %{user} 的公開軌跡
+ traces_from_html: 來自 %{user} 的公開軌跡
remove_tag_filter: 移除標籤篩選
destroy:
scheduled_for_deletion: 軌跡已被排程刪除
navigation:
all_blocks: 所有封鎖
blocks_on_me: 對我的封鎖
- blocks_on_user: 對%{user}的封鎖
+ blocks_on_user_html: 對%{user}的封鎖
blocks_by_me: 由我做出的封鎖
- blocks_by_user: 由%{user}做出的封鎖
+ blocks_by_user_html: 由%{user}做出的封鎖
block: 封鎖#%{id}
new_block: 新封鎖
user_mutes:
end
post "/user/messages/:id" => "messages#update", :as => :api_message_update
-
- post "gpx/create" => "traces#create"
- get "gpx/:id" => "traces#show", :as => :api_trace, :id => /\d+/
- put "gpx/:id" => "traces#update", :id => /\d+/
- delete "gpx/:id" => "traces#destroy", :id => /\d+/
- get "gpx/:id/details" => "traces#show", :id => /\d+/
- get "gpx/:id/data" => "traces#data", :as => :api_trace_data
end
namespace :api, :path => "api/0.6" do
+ resources :traces, :path => "gpx", :only => [:create, :show, :update, :destroy], :id => /\d+/ do
+ scope :module => :traces do
+ resource :data, :only => :show
+ end
+ end
+ post "gpx/create" => "traces#create", :id => /\d+/, :as => :trace_create
+ get "gpx/:id/details" => "traces#show", :id => /\d+/, :as => :trace_details
+
# Map notes API
resources :notes, :except => [:new, :edit, :update], :id => /\d+/, :controller => "notes" do
collection do
--- /dev/null
+require "test_helper"
+
+module Api
+ module Traces
+ class DataControllerTest < ActionDispatch::IntegrationTest
+ ##
+ # test all routes which lead to this controller
+ def test_routes
+ assert_routing(
+ { :path => "/api/0.6/gpx/1/data", :method => :get },
+ { :controller => "api/traces/data", :action => "show", :trace_id => "1" }
+ )
+ assert_routing(
+ { :path => "/api/0.6/gpx/1/data.xml", :method => :get },
+ { :controller => "api/traces/data", :action => "show", :trace_id => "1", :format => "xml" }
+ )
+ end
+
+ # Test downloading a trace through the api
+ def test_show
+ public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
+
+ # First with no auth
+ get api_trace_data_path(public_trace_file)
+ assert_response :unauthorized
+
+ # Now with some other user, which should work since the trace is public
+ auth_header = bearer_authorization_header
+ get api_trace_data_path(public_trace_file), :headers => auth_header
+ follow_redirect!
+ follow_redirect!
+ check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+
+ # And finally we should be able to do it with the owner of the trace
+ auth_header = bearer_authorization_header public_trace_file.user
+ get api_trace_data_path(public_trace_file), :headers => auth_header
+ follow_redirect!
+ follow_redirect!
+ check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
+ end
+
+ # Test downloading a compressed trace through the api
+ def test_data_compressed
+ identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
+
+ # Authenticate as the owner of the trace we will be using
+ auth_header = bearer_authorization_header identifiable_trace_file.user
+
+ # First get the data as is
+ get api_trace_data_path(identifiable_trace_file), :headers => auth_header
+ follow_redirect!
+ follow_redirect!
+ check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
+
+ # Now ask explicitly for XML format
+ get api_trace_data_path(identifiable_trace_file, :format => "xml"), :headers => auth_header
+ check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
+
+ # Now ask explicitly for GPX format
+ get api_trace_data_path(identifiable_trace_file, :format => "gpx"), :headers => auth_header
+ check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
+ end
+
+ # Check an anonymous trace can't be downloaded by another user through the api
+ def test_data_anon
+ anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
+
+ # First with no auth
+ get api_trace_data_path(anon_trace_file)
+ assert_response :unauthorized
+
+ # Now with some other user, which shouldn't work since the trace is anon
+ auth_header = bearer_authorization_header
+ get api_trace_data_path(anon_trace_file), :headers => auth_header
+ assert_response :forbidden
+
+ # And finally we should be able to do it with the owner of the trace
+ auth_header = bearer_authorization_header anon_trace_file.user
+ get api_trace_data_path(anon_trace_file), :headers => auth_header
+ follow_redirect!
+ follow_redirect!
+ check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
+ end
+
+ # Test downloading a trace that doesn't exist through the api
+ def test_data_not_found
+ deleted_trace_file = create(:trace, :deleted)
+
+ # Try first with no auth, as it should require it
+ get api_trace_data_path(0)
+ assert_response :unauthorized
+
+ # Login, and try again
+ auth_header = bearer_authorization_header
+ get api_trace_data_path(0), :headers => auth_header
+ assert_response :not_found
+
+ # Now try a trace which did exist but has been deleted
+ auth_header = bearer_authorization_header deleted_trace_file.user
+ get api_trace_data_path(deleted_trace_file), :headers => auth_header
+ assert_response :not_found
+ end
+
+ private
+
+ def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
+ assert_response :success
+ assert_equal digest, Digest::MD5.hexdigest(response.body)
+ assert_equal content_type, response.media_type
+ assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
+ end
+ end
+ end
+end
# test all routes which lead to this controller
def test_routes
assert_routing(
- { :path => "/api/0.6/gpx/create", :method => :post },
+ { :path => "/api/0.6/gpx", :method => :post },
{ :controller => "api/traces", :action => "create" }
)
+ assert_recognizes(
+ { :controller => "api/traces", :action => "create" },
+ { :path => "/api/0.6/gpx/create", :method => :post }
+ )
assert_routing(
{ :path => "/api/0.6/gpx/1", :method => :get },
{ :controller => "api/traces", :action => "show", :id => "1" }
{ :controller => "api/traces", :action => "show", :id => "1" },
{ :path => "/api/0.6/gpx/1/details", :method => :get }
)
- assert_routing(
- { :path => "/api/0.6/gpx/1/data", :method => :get },
- { :controller => "api/traces", :action => "data", :id => "1" }
- )
- assert_routing(
- { :path => "/api/0.6/gpx/1/data.xml", :method => :get },
- { :controller => "api/traces", :action => "data", :id => "1", :format => "xml" }
- )
end
# Check getting a specific trace through the api
assert_response :not_found
end
- # Test downloading a trace through the api
- def test_data
- public_trace_file = create(:trace, :visibility => "public", :fixture => "a")
-
- # First with no auth
- get api_trace_data_path(public_trace_file)
- assert_response :unauthorized
-
- # Now with some other user, which should work since the trace is public
- auth_header = bearer_authorization_header
- get api_trace_data_path(public_trace_file), :headers => auth_header
- follow_redirect!
- follow_redirect!
- check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
-
- # And finally we should be able to do it with the owner of the trace
- auth_header = bearer_authorization_header public_trace_file.user
- get api_trace_data_path(public_trace_file), :headers => auth_header
- follow_redirect!
- follow_redirect!
- check_trace_data public_trace_file, "848caa72f2f456d1bd6a0fdf228aa1b9"
- end
-
- # Test downloading a compressed trace through the api
- def test_data_compressed
- identifiable_trace_file = create(:trace, :visibility => "identifiable", :fixture => "d")
-
- # Authenticate as the owner of the trace we will be using
- auth_header = bearer_authorization_header identifiable_trace_file.user
-
- # First get the data as is
- get api_trace_data_path(identifiable_trace_file), :headers => auth_header
- follow_redirect!
- follow_redirect!
- check_trace_data identifiable_trace_file, "c6422a3d8750faae49ed70e7e8a51b93", "application/gzip", "gpx.gz"
-
- # Now ask explicitly for XML format
- get api_trace_data_path(identifiable_trace_file, :format => "xml"), :headers => auth_header
- check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d", "application/xml", "xml"
-
- # Now ask explicitly for GPX format
- get api_trace_data_path(identifiable_trace_file, :format => "gpx"), :headers => auth_header
- check_trace_data identifiable_trace_file, "abd6675fdf3024a84fc0a1deac147c0d"
- end
-
- # Check an anonymous trace can't be downloaded by another user through the api
- def test_data_anon
- anon_trace_file = create(:trace, :visibility => "private", :fixture => "b")
-
- # First with no auth
- get api_trace_data_path(anon_trace_file)
- assert_response :unauthorized
-
- # Now with some other user, which shouldn't work since the trace is anon
- auth_header = bearer_authorization_header
- get api_trace_data_path(anon_trace_file), :headers => auth_header
- assert_response :forbidden
-
- # And finally we should be able to do it with the owner of the trace
- auth_header = bearer_authorization_header anon_trace_file.user
- get api_trace_data_path(anon_trace_file), :headers => auth_header
- follow_redirect!
- follow_redirect!
- check_trace_data anon_trace_file, "db4cb5ed2d7d2b627b3b504296c4f701"
- end
-
- # Test downloading a trace that doesn't exist through the api
- def test_data_not_found
- deleted_trace_file = create(:trace, :deleted)
-
- # Try first with no auth, as it should require it
- get api_trace_data_path(:id => 0)
- assert_response :unauthorized
-
- # Login, and try again
- auth_header = bearer_authorization_header
- get api_trace_data_path(:id => 0), :headers => auth_header
- assert_response :not_found
-
- # Now try a trace which did exist but has been deleted
- auth_header = bearer_authorization_header deleted_trace_file.user
- get api_trace_data_path(deleted_trace_file), :headers => auth_header
- assert_response :not_found
- end
-
# Test creating a trace through the api
def test_create
# Get file to use
user = create(:user)
# First with no auth
- post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }
+ post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }
assert_response :unauthorized
# Rewind the file
# Create trace and import tracepoints in background job
perform_enqueued_jobs do
- post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }, :headers => auth_header
+ post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable" }, :headers => auth_header
end
assert_response :success
# Now authenticated, with the legacy public flag
assert_not_equal "public", user.preferences.find_by(:k => "gps.trace.visibility").v
auth_header = bearer_authorization_header user
- post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 1 }, :headers => auth_header
+ post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 1 }, :headers => auth_header
assert_response :success
trace = Trace.find(response.body.to_i)
assert_equal "a.gpx", trace.name
second_user = create(:user)
assert_nil second_user.preferences.find_by(:k => "gps.trace.visibility")
auth_header = bearer_authorization_header second_user
- post gpx_create_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 0 }, :headers => auth_header
+ post api_traces_path, :params => { :file => file, :description => "New Trace", :tags => "new,trace", :public => 0 }, :headers => auth_header
assert_response :success
trace = Trace.find(response.body.to_i)
assert_equal "a.gpx", trace.name
private
- def check_trace_data(trace, digest, content_type = "application/gpx+xml", extension = "gpx")
- assert_response :success
- assert_equal digest, Digest::MD5.hexdigest(response.body)
- assert_equal content_type, response.media_type
- assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"; filename*=UTF-8''#{trace.id}.#{extension}", @response.header["Content-Disposition"]
- end
-
##
# build XML for traces
# this builds a minimum viable XML for the tests in this suite
assert_equal "<s>test</s>", deleted_output
end
- def test_element_class
+ def test_element_icon
node = create(:node, :with_history, :version => 2)
node_v1 = node.old_nodes.find_by(:version => 1)
node_v2 = node.old_nodes.find_by(:version => 2)
add_old_tags_selection(node_v2)
add_old_tags_selection(node_v1)
- assert_equal "node", element_class("node", create(:node))
- assert_equal "node", element_class("node", create(:node, :deleted))
-
- assert_equal "node building yes shop gift tourism museum", element_class("node", node)
- assert_equal "node building yes shop gift tourism museum", element_class("node", node_v2)
- assert_equal "node", element_class("node", node_v1)
- end
-
- def test_element_title
- node = create(:node, :with_history, :version => 2)
- node_v1 = node.old_nodes.find_by(:version => 1)
- node_v2 = node.old_nodes.find_by(:version => 2)
- node_v1.redact!(create(:redaction))
-
- add_tags_selection(node)
- add_old_tags_selection(node_v2)
- add_old_tags_selection(node_v1)
-
- assert_equal "", element_title(create(:node))
- assert_equal "", element_title(create(:node, :deleted))
-
- assert_equal "building=yes, shop=gift, and tourism=museum", element_title(node)
- assert_equal "building=yes, shop=gift, and tourism=museum", element_title(node_v2)
- assert_equal "", element_title(node_v1)
- end
-
- def test_icon_tags
- node = create(:node, :with_history, :version => 2)
- node_v1 = node.old_nodes.find_by(:version => 1)
- node_v2 = node.old_nodes.find_by(:version => 2)
- node_v1.redact!(create(:redaction))
+ icon = element_icon("node", create(:node))
+ icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+ assert_dom icon_dom, "img:root", :count => 1 do
+ assert_dom "> @title", 0
+ end
- add_tags_selection(node)
+ icon = element_icon("node", create(:node, :deleted))
+ icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+ assert_dom icon_dom, "img:root", :count => 1 do
+ assert_dom "> @title", 0
+ end
- tags = icon_tags(node)
- assert_equal 3, tags.count
- assert_includes tags, %w[building yes]
- assert_includes tags, %w[tourism museum]
- assert_includes tags, %w[shop gift]
+ icon = element_icon("node", node)
+ icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+ assert_dom icon_dom, "img:root", :count => 1 do
+ assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
+ end
- add_old_tags_selection(node_v2)
- add_old_tags_selection(node_v1)
+ icon = element_icon("node", node_v2)
+ icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+ assert_dom icon_dom, "img:root", :count => 1 do
+ assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
+ end
- tags = icon_tags(node_v2)
- assert_equal 3, tags.count
- assert_includes tags, %w[building yes]
- assert_includes tags, %w[tourism museum]
- assert_includes tags, %w[shop gift]
-
- tags = icon_tags(node_v1)
- assert_equal 3, tags.count
- assert_includes tags, %w[building yes]
- assert_includes tags, %w[tourism museum]
- assert_includes tags, %w[shop gift]
+ icon = element_icon("node", node_v1)
+ icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
+ assert_dom icon_dom, "img:root", :count => 1 do
+ assert_dom "> @title", 0
+ end
end
private
class ChangesetsHelperTest < ActionView::TestCase
def test_changeset_user_link
changeset = create(:changeset)
- assert_equal %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>), changeset_user_link(changeset)
+ changeset_user_link_dom = Rails::Dom::Testing.html_document_fragment.parse changeset_user_link(changeset)
+ assert_dom changeset_user_link_dom, "a:root", :text => changeset.user.display_name do
+ assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+ end
changeset = create(:changeset, :user => create(:user, :data_public => false))
assert_equal "anonymous", changeset_user_link(changeset)
changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :user => create(:user, :data_public => false))
# We need to explicitly reset the closed_at to some point in the future, and avoid the before_save callback
changeset.update_column(:closed_at, Time.now.utc + 1.day) # rubocop:disable Rails/SkipsModelValidations
-
- assert_match %r{^Created <time title="Mon, 01 Jan 2007 00:00:00 \+0000" datetime="2007-01-01T00:00:00Z">.*</time> by anonymous$}, changeset_details(changeset)
+ changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+ assert_dom changeset_details_dom, ":root", :text => /^Created .* by anonymous$/ do
+ assert_dom "> time", :count => 1 do
+ assert_dom "> @title", "Mon, 01 Jan 2007 00:00:00 +0000"
+ assert_dom "> @datetime", "2007-01-01T00:00:00Z"
+ end
+ assert_dom "> a", :count => 0
+ end
changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :closed_at => Time.utc(2007, 1, 2, 0, 0, 0))
- user_link = %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>)
-
- assert_match %r{^Closed <time title="Created: Mon, 01 Jan 2007 00:00:00 \+0000 Closed: Tue, 02 Jan 2007 00:00:00 \+0000" datetime="2007-01-02T00:00:00Z">.*</time> by #{user_link}$}, changeset_details(changeset)
+ changeset_details_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{changeset_details(changeset)}</div>"
+ assert_dom changeset_details_dom, ":root", :text => /^Closed .* by #{changeset.user.display_name}$/ do
+ assert_dom "> time", :count => 1 do
+ assert_dom "> @title", "Created: Mon, 01 Jan 2007 00:00:00 +0000\nClosed: Tue, 02 Jan 2007 00:00:00 +0000"
+ assert_dom "> @datetime", "2007-01-02T00:00:00Z"
+ end
+ assert_dom "> a", :count => 1, :text => changeset.user.display_name do
+ assert_dom "> @href", "/user/#{ERB::Util.u(changeset.user.display_name)}"
+ end
+ end
end
end
date = Time.utc(2014, 3, 5, 21, 37, 45)
user = create(:user)
- assert_match %r{^Created by anonymous <time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time>$}, note_event("opened", date, nil)
- assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time>$}, note_event("closed", date, user)
+ note_event_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{note_event('opened', date, nil)}</div>"
+ assert_dom note_event_dom, ":root", :text => /^Created by anonymous .* ago$/ do
+ assert_dom "> a", :count => 0
+ assert_dom "> time", :count => 1 do
+ assert_dom "> @title", "5 March 2014 at 21:37"
+ assert_dom "> @datetime", "2014-03-05T21:37:45Z"
+ end
+ end
+
+ note_event_dom = Rails::Dom::Testing.html_document_fragment.parse "<div>#{note_event('closed', date, user)}</div>"
+ assert_dom note_event_dom, ":root", :text => /^Resolved by #{user.display_name} .* ago$/ do
+ assert_dom "> a", :count => 1, :text => user.display_name do
+ assert_dom "> @href", "/user/#{ERB::Util.u(user.display_name)}"
+ end
+ assert_dom "> time", :count => 1 do
+ assert_dom "> @title", "5 March 2014 at 21:37"
+ assert_dom "> @datetime", "2014-03-05T21:37:45Z"
+ end
+ end
end
def test_note_author
user = create(:user)
assert_equal "", note_author(nil)
+
assert_equal "deleted", note_author(deleted_user)
- assert_equal "<a href=\"/user/#{ERB::Util.u(user.display_name)}\">#{user.display_name}</a>", note_author(user)
- assert_equal "<a href=\"http://test.host/user/#{ERB::Util.u(user.display_name)}\">#{user.display_name}</a>", note_author(user, :only_path => false)
+
+ note_author_dom = Rails::Dom::Testing.html_document_fragment.parse note_author(user)
+ assert_dom note_author_dom, "a:root", :text => user.display_name do
+ assert_dom "> @href", "/user/#{ERB::Util.u(user.display_name)}"
+ end
+
+ note_author_dom = Rails::Dom::Testing.html_document_fragment.parse note_author(user, :only_path => false)
+ assert_dom note_author_dom, "a:root", :text => user.display_name do
+ assert_dom "> @href", "http://test.host/user/#{ERB::Util.u(user.display_name)}"
+ end
end
end
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@9.15.0":
- version "9.15.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5"
- integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==
+"@eslint/js@9.16.0":
+ version "9.16.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4"
+ integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
eslint@^9.0.0:
- version "9.15.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.15.0.tgz#77c684a4e980e82135ebff8ee8f0a9106ce6b8a6"
- integrity sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==
+ version "9.16.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.16.0.tgz#66832e66258922ac0a626f803a9273e37747f2a6"
+ integrity sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.12.1"
"@eslint/config-array" "^0.19.0"
"@eslint/core" "^0.9.0"
"@eslint/eslintrc" "^3.2.0"
- "@eslint/js" "9.15.0"
+ "@eslint/js" "9.16.0"
"@eslint/plugin-kit" "^0.2.3"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"