Merge branch 'master' into openstreetbugs

Conflicts:
	Gemfile
	app/helpers/application_helper.rb
	app/views/site/index.html.erb
This commit is contained in:
Tom Hughes 2012-09-20 16:01:24 +01:00
commit 4d91fe3dd9
177 changed files with 4914 additions and 3062 deletions

View file

@ -24,14 +24,12 @@ gem 'composite_primary_keys', '>= 5.0.8'
gem 'http_accept_language', '>= 1.0.2' gem 'http_accept_language', '>= 1.0.2'
gem 'paperclip', '~> 2.0' gem 'paperclip', '~> 2.0'
gem 'deadlock_retry', '>= 1.2.0' gem 'deadlock_retry', '>= 1.2.0'
gem 'i18n-js', '>= 3.0.0.rc2'
gem 'jsonify-rails' gem 'jsonify-rails'
# We need ruby-openid 2.2.0 or later for ruby 1.9 support # We need ruby-openid 2.2.0 or later for ruby 1.9 support
gem 'ruby-openid', '>= 2.2.0' gem 'ruby-openid', '>= 2.2.0'
# Browser detection support
gem 'browser'
# Markdown formatting support # Markdown formatting support
gem 'redcarpet' gem 'redcarpet'

View file

@ -31,9 +31,8 @@ GEM
multi_json (~> 1.0) multi_json (~> 1.0)
arel (3.0.2) arel (3.0.2)
bigdecimal (1.1.0) bigdecimal (1.1.0)
browser (0.1.4) builder (3.0.3)
builder (3.0.0) cocaine (0.3.0)
cocaine (0.2.1)
coffee-rails (3.2.2) coffee-rails (3.2.2)
coffee-script (>= 2.2.0) coffee-script (>= 2.2.0)
railties (~> 3.2.0) railties (~> 3.2.0)
@ -55,10 +54,12 @@ GEM
http_accept_language (1.0.2) http_accept_language (1.0.2)
httpauth (0.1) httpauth (0.1)
httpclient (2.2.7) httpclient (2.2.7)
i18n (0.6.0) i18n (0.6.1)
i18n-js (3.0.0.rc2)
i18n
iconv (0.1) iconv (0.1)
journey (1.0.4) journey (1.0.4)
jquery-rails (2.1.1) jquery-rails (2.1.2)
railties (>= 3.1.0, < 5.0) railties (>= 3.1.0, < 5.0)
thor (~> 0.14) thor (~> 0.14)
json (1.7.5) json (1.7.5)
@ -75,13 +76,13 @@ GEM
i18n (>= 0.4.0) i18n (>= 0.4.0)
mime-types (~> 1.16) mime-types (~> 1.16)
treetop (~> 1.4.8) treetop (~> 1.4.8)
memcached (1.4.3) memcached (1.4.5)
mime-types (1.19) mime-types (1.19)
minitest (3.3.0) minitest (3.4.0)
multi_json (1.3.6) multi_json (1.3.6)
multipart-post (1.1.5) multipart-post (1.1.5)
nokogiri (1.5.5) nokogiri (1.5.5)
oauth (0.4.6) oauth (0.4.7)
oauth-plugin (0.4.1) oauth-plugin (0.4.1)
multi_json multi_json
oauth (~> 0.4.4) oauth (~> 0.4.4)
@ -100,7 +101,7 @@ GEM
activesupport (>= 2.3.2) activesupport (>= 2.3.2)
cocaine (>= 0.0.2) cocaine (>= 0.0.2)
mime-types mime-types
pg (0.14.0) pg (0.14.1)
polyglot (0.3.3) polyglot (0.3.3)
rack (1.4.1) rack (1.4.1)
rack-cache (1.2) rack-cache (1.2)
@ -120,7 +121,7 @@ GEM
activesupport (= 3.2.8) activesupport (= 3.2.8)
bundler (~> 1.0) bundler (~> 1.0)
railties (= 3.2.8) railties (= 3.2.8)
rails-i18n (0.6.5) rails-i18n (0.6.6)
i18n (~> 0.5) i18n (~> 0.5)
railties (3.2.8) railties (3.2.8)
actionpack (= 3.2.8) actionpack (= 3.2.8)
@ -150,14 +151,14 @@ GEM
libv8 (~> 3.3.10) libv8 (~> 3.3.10)
thor (0.16.0) thor (0.16.0)
tilt (1.3.3) tilt (1.3.3)
timecop (0.4.5) timecop (0.5.1)
treetop (1.4.10) treetop (1.4.10)
polyglot polyglot
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
tzinfo (0.3.33) tzinfo (0.3.33)
uglifier (1.2.7) uglifier (1.3.0)
execjs (>= 0.3.0) execjs (>= 0.3.0)
multi_json (~> 1.3) multi_json (~> 1.0, >= 1.0.2)
validates_email_format_of (1.5.3) validates_email_format_of (1.5.3)
PLATFORMS PLATFORMS
@ -166,7 +167,6 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
SystemTimer (>= 1.1.3) SystemTimer (>= 1.1.3)
bigdecimal bigdecimal
browser
coffee-rails (~> 3.2.1) coffee-rails (~> 3.2.1)
composite_primary_keys (>= 5.0.8) composite_primary_keys (>= 5.0.8)
deadlock_retry (>= 1.2.0) deadlock_retry (>= 1.2.0)
@ -174,6 +174,7 @@ DEPENDENCIES
htmlentities htmlentities
http_accept_language (>= 1.0.2) http_accept_language (>= 1.0.2)
httpclient httpclient
i18n-js (>= 3.0.0.rc2)
iconv iconv
jquery-rails jquery-rails
jsonify-rails jsonify-rails

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
app/assets/images/sotmpdx.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View file

@ -2,23 +2,46 @@
//= require jquery_ujs //= require jquery_ujs
//= require jquery.autogrowtextarea //= require jquery.autogrowtextarea
//= require jquery.timers //= require jquery.timers
//= require jquery.cookie
//= require augment
//= require openlayers
//= require i18n/translations
//= require globals
//= require params
//= require piwik
//= require browse
//= require export
//= require map
//= require key
//= require menu
//= require sidebar
//= require richtext
//= require resize
//= require notes
function zoomPrecision(zoom) {
var decimals = Math.pow(10, Math.floor(zoom/3));
return function(x) {
return Math.round(x * decimals) / decimals;
};
}
/* /*
* Called as the user scrolls/zooms around to aniplate hrefs of the * Called as the user scrolls/zooms around to aniplate hrefs of the
* view tab and various other links * view tab and various other links
*/ */
function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,objid) { function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,objid) {
var decimals = Math.pow(10, Math.floor(zoom/3)); var toPrecision = zoomPrecision(zoom);
var node; var node;
lat = Math.round(lat * decimals) / decimals; lat = toPrecision(lat);
lon = Math.round(lon * decimals) / decimals; lon = toPrecision(lon);
if (minlon) { if (minlon) {
minlon = Math.round(minlon * decimals) / decimals; minlon = toPrecision(minlon);
minlat = Math.round(minlat * decimals) / decimals; minlat = toPrecision(minlat);
maxlon = Math.round(maxlon * decimals) / decimals; maxlon = toPrecision(maxlon);
maxlat = Math.round(maxlat * decimals) / decimals; maxlat = toPrecision(maxlat);
} }
$(".geolink").each(function (index, link) { $(".geolink").each(function (index, link) {
@ -40,25 +63,21 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat,objtype,obj
args[objtype] = objid; args[objtype] = objid;
} }
var classes = $(link).attr("class").split(" "); var minzoom = $(link).data("minzoom");
if (minzoom) {
$(classes).each(function (index, classname) {
if (match = classname.match(/^minzoom([0-9]+)$/)) {
var minzoom = match[1];
var name = link.id.replace(/anchor$/, ""); var name = link.id.replace(/anchor$/, "");
$(link).off("click.minzoom"); $(link).off("click.minzoom");
if (zoom >= minzoom) { if (zoom >= minzoom) {
$(link).attr("title", i18n("javascripts.site." + name + "_tooltip")); $(link).attr("title", I18n.t("javascripts.site." + name + "_tooltip"));
$(link).removeClass("disabled"); $(link).removeClass("disabled");
} else { } else {
$(link).on("click.minzoom", function () { alert(i18n("javascripts.site." + name + "_zoom_alert")); return false; }); $(link).on("click.minzoom", function () { alert(I18n.t("javascripts.site." + name + "_zoom_alert")); return false; });
$(link).attr("title", i18n("javascripts.site." + name + "_disabled_tooltip")); $(link).attr("title", I18n.t("javascripts.site." + name + "_disabled_tooltip"));
$(link).addClass("disabled"); $(link).addClass("disabled");
} }
} }
});
link.href = setArgs(link.href, args); link.href = setArgs(link.href, args);
}); });
@ -144,26 +163,6 @@ function setArgs(url, args) {
return url.replace(/\?.*$/, "") + "?" + queryitems.join("&"); return url.replace(/\?.*$/, "") + "?" + queryitems.join("&");
} }
/*
* Called to interpolate JavaScript variables in strings using a
* similar syntax to rails I18n string interpolation - the only
* difference is that [[foo]] is the placeholder syntax instead
* of {{foo}} which allows the same string to be processed by both
* rails and then later by javascript.
*/
function i18n(string, keys) {
string = i18n_strings[string] || string;
for (var key in keys) {
var re_key = '\\[\\[' + key + '\\]\\]';
var re = new RegExp(re_key, "g");
string = string.replace(re, keys[key]);
}
return string;
}
/* /*
* Called to interlace the bits in x and y, making a Morton code. * Called to interlace the bits in x and y, making a Morton code.
*/ */
@ -208,62 +207,18 @@ function makeShortCode(lat, lon, zoom) {
} }
/* /*
* Click handler to switch a rich text control to preview mode * Forms which have been cached by rails may have he wrong
*/ * authenticity token, so patch up any forms with the correct
function previewRichtext(event) { * token taken from the page header.
var editor = $(this).parents(".richtext_container").find("textarea");
var preview = $(this).parents(".richtext_container").find(".richtext_preview");
var width = editor.outerWidth() - preview.outerWidth() + preview.innerWidth();
var minHeight = editor.outerHeight() - preview.outerHeight() + preview.innerHeight();
if (preview.contents().length == 0) {
preview.oneTime(500, "loading", function () {
preview.addClass("loading");
});
preview.load(editor.attr("data-preview-url"), { text: editor.val() }, function () {
preview.stopTime("loading");
preview.removeClass("loading");
});
}
editor.hide();
preview.width(width);
preview.css("min-height", minHeight + "px");
preview.show();
$(this).siblings(".richtext_doedit").prop("disabled", false);
$(this).prop("disabled", true);
event.preventDefault();
}
/*
* Click handler to switch a rich text control to edit mode
*/
function editRichtext(event) {
var editor = $(this).parents(".richtext_container").find("textarea");
var preview = $(this).parents(".richtext_container").find(".richtext_preview");
preview.hide();
editor.show();
$(this).siblings(".richtext_dopreview").prop("disabled", false);
$(this).prop("disabled", true);
event.preventDefault();
}
/*
* Setup any rich text controls
*/ */
$(document).ready(function () { $(document).ready(function () {
$(".richtext_preview").hide(); var auth_token = $("meta[name=csrf-token]").attr("content");
$(".richtext_content textarea").change(function () { $("form input[name=authenticity_token]").val(auth_token);
$(this).parents(".richtext_container").find(".richtext_preview").empty(); });
});
$(".richtext_doedit").prop("disabled", true); /*
$(".richtext_dopreview").prop("disabled", false); * Enable auto expansion for all text areas
$(".richtext_doedit").click(editRichtext); */
$(".richtext_dopreview").click(previewRichtext); $(document).ready(function () {
$("textarea").autoGrow();
}); });

View file

@ -0,0 +1,549 @@
function startBrowse(sidebarHtml) {
var browseBoxControl;
var browseMode = "auto";
var browseBounds;
var browseFeatureList;
var browseActiveFeature;
var browseDataLayer;
var browseSelectControl;
var browseObjectList;
var areasHidden = false;
OpenLayers.Feature.Vector.style['default'].strokeWidth = 3;
OpenLayers.Feature.Vector.style['default'].cursor = "pointer";
map.dataLayer.active = true;
$("#sidebar_title").html(I18n.t('browse.start_rjs.data_frame_title'));
$("#sidebar_content").html(sidebarHtml);
openSidebar();
var vectors = new OpenLayers.Layer.Vector();
browseBoxControl = new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
snapAngle: 90,
irregular: true,
persist: true
}
});
browseBoxControl.handler.callbacks.done = endDrag;
map.addControl(browseBoxControl);
map.events.register("moveend", map, updateData);
map.events.triggerEvent("moveend");
$("#browse_select_view").click(useMap);
$("#browse_select_box").click(startDrag);
$("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
function updateData() {
if (browseMode == "auto") {
if (map.getZoom() >= 15) {
useMap(false);
} else {
setStatus(I18n.t('browse.start_rjs.zoom_or_select'));
}
}
}
$("#sidebar").one("closed", function () {
if (map.dataLayer.active) {
map.dataLayer.active = false;
if (browseSelectControl) {
browseSelectControl.destroy();
browseSelectControl = null;
}
if (browseBoxControl) {
browseBoxControl.destroy();
browseBoxControl = null;
}
if (browseActiveFeature) {
browseActiveFeature.destroy();
browseActiveFeature = null;
}
if (browseDataLayer) {
browseDataLayer.destroy();
browseDataLayer = null;
}
map.dataLayer.setVisibility(false);
map.events.unregister("moveend", map, updateData);
}
});
function startDrag() {
$("#browse_select_box").html(I18n.t('browse.start_rjs.drag_a_box'));
browseBoxControl.activate();
return false;
}
function useMap(reload) {
var bounds = map.getExtent();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
if (!browseBounds || !browseBounds.containsBounds(projected)) {
var center = bounds.getCenterLonLat();
var tileWidth = bounds.getWidth() * 1.2;
var tileHeight = bounds.getHeight() * 1.2;
var tileBounds = new OpenLayers.Bounds(center.lon - (tileWidth / 2),
center.lat - (tileHeight / 2),
center.lon + (tileWidth / 2),
center.lat + (tileHeight / 2));
browseBounds = tileBounds;
getData(tileBounds, reload);
browseMode = "auto";
$("#browse_select_view").hide();
}
return false;
}
function hideAreas() {
$("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.show_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(showAreas);
areasHidden = true;
useMap(true);
}
function showAreas() {
$("#browse_hide_areas_box").html(I18n.t('browse.start_rjs.hide_areas'));
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
areasHidden = false;
useMap(true);
}
function endDrag(bbox) {
var bounds = bbox.getBounds();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
browseBoxControl.deactivate();
browseBounds = projected;
getData(bounds);
browseMode = "manual";
$("#browse_select_box").html(I18n.t('browse.start_rjs.manually_select'));
$("#browse_select_view").show();
}
function displayFeatureWarning(count, limit, callback) {
clearStatus();
var div = document.createElement("div");
var p = document.createElement("p");
p.appendChild(document.createTextNode(I18n.t("browse.start_rjs.loaded_an_area_with_num_features", { num_features: count, max_features: limit })));
div.appendChild(p);
var input = document.createElement("input");
input.type = "submit";
input.value = I18n.t('browse.start_rjs.load_data');
input.onclick = callback;
div.appendChild(input);
$("#browse_content").html("");
$("#browse_content").append(div);
}
function customDataLoader(resp, options) {
if (map.dataLayer.active) {
var request = resp.priv;
var doc = request.responseXML;
if (!doc || !doc.documentElement) {
doc = request.responseText;
}
resp.features = this.format.read(doc);
if (!this.maxFeatures || resp.features.length <= this.maxFeatures) {
options.callback.call(options.scope, resp);
} else {
displayFeatureWarning(resp.features.length, this.maxFeatures, function () {
options.callback.call(options.scope, resp);
});
}
}
}
function getData(bounds, reload) {
var projected = bounds.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
var size = projected.getWidth() * projected.getHeight();
if (size > OSM.MAX_REQUEST_AREA) {
setStatus(I18n.t("browse.start_rjs.unable_to_load_size", { max_bbox_size: OSM.MAX_REQUEST_AREA, bbox_size: size }));
} else {
loadData("/api/" + OSM.API_VERSION + "/map?bbox=" + projected.toBBOX(), reload);
}
}
function loadData(url, reload) {
setStatus(I18n.t('browse.start_rjs.loading'));
$("#browse_content").empty();
var formatOptions = {
checkTags: true,
interestingTagsExclude: ['source','source_ref','source:ref','history','attribution','created_by','tiger:county','tiger:tlid','tiger:upload_uuid']
};
if (areasHidden) formatOptions.areaTags = [];
if (!browseDataLayer || reload) {
var style = new OpenLayers.Style();
style.addRules([new OpenLayers.Rule({
symbolizer: {
Polygon: { fillColor: '#ff0000', strokeColor: '#ff0000' },
Line: { fillColor: '#ffff00', strokeColor: '#000000', strokeOpacity: '0.4' },
Point: { fillColor: '#00ff00', strokeColor: '#00ff00' }
}
})]);
if (browseDataLayer) browseDataLayer.destroyFeatures();
/*
* Modern browsers are quite happy showing far more than 100 features in
* the data browser, so increase the limit to 2000 by default, but keep
* it restricted to 500 for IE8 and 100 for older IEs.
*/
var maxFeatures = 2000;
/*@cc_on
if (navigator.appVersion < 8) {
maxFeatures = 100;
} else if (navigator.appVersion < 9) {
maxFeatures = 500;
}
@*/
browseDataLayer = new OpenLayers.Layer.Vector("Data", {
strategies: [
new OpenLayers.Strategy.Fixed()
],
protocol: new OpenLayers.Protocol.HTTP({
url: url,
format: new OpenLayers.Format.OSM(formatOptions),
maxFeatures: maxFeatures,
handleRead: customDataLoader
}),
projection: new OpenLayers.Projection("EPSG:4326"),
displayInLayerSwitcher: false,
styleMap: new OpenLayers.StyleMap({
'default': style,
'select': { strokeColor: '#0000ff', strokeWidth: 8 }
})
});
browseDataLayer.events.register("loadend", browseDataLayer, dataLoaded );
map.addLayer(browseDataLayer);
browseSelectControl = new OpenLayers.Control.SelectFeature(browseDataLayer, { onSelect: onFeatureSelect });
browseSelectControl.handlers.feature.stopDown = false;
browseSelectControl.handlers.feature.stopUp = false;
map.addControl(browseSelectControl);
browseSelectControl.activate();
} else {
browseDataLayer.destroyFeatures();
browseDataLayer.refresh({ url: url });
}
browseActiveFeature = null;
}
function dataLoaded() {
if (this.map.dataLayer.active) {
clearStatus();
browseObjectList = document.createElement("div");
var heading = document.createElement("p");
heading.className = "browse_heading";
heading.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.heading')));
browseObjectList.appendChild(heading);
var list = document.createElement("ul");
for (var i = 0; i < this.features.length; i++) {
var feature = this.features[i];
// Type, for linking
var type = featureType(feature);
var typeName = featureTypeName(feature);
var li = document.createElement("li");
li.appendChild(document.createTextNode(typeName + " "));
// Link, for viewing in the tab
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id;
var name = featureName(feature);
link.appendChild(document.createTextNode(name));
link.feature = feature;
link.onclick = OpenLayers.Function.bind(viewFeatureLink, link);
li.appendChild(link);
list.appendChild(li);
}
browseObjectList.appendChild(list);
var link = document.createElement("a");
link.href = this.protocol.url;
link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.api')));
browseObjectList.appendChild(link);
$("#browse_content").html(browseObjectList);
}
}
function viewFeatureLink() {
var layer = this.feature.layer;
for (var i = 0; i < layer.selectedFeatures.length; i++) {
var f = layer.selectedFeatures[i];
layer.drawFeature(f, layer.styleMap.createSymbolizer(f, "default"));
}
onFeatureSelect(this.feature);
if (browseMode != "auto") {
map.setCenter(this.feature.geometry.getBounds().getCenterLonLat());
}
return false;
}
function loadObjectList() {
$("#browse_content").empty();
$("#browse_content").append(browseObjectList);
return false;
}
function onFeatureSelect(feature) {
// Unselect previously selected feature
if (browseActiveFeature) {
browseActiveFeature.layer.drawFeature(
browseActiveFeature,
browseActiveFeature.layer.styleMap.createSymbolizer(browseActiveFeature, "default")
);
}
// Redraw in selected style
feature.layer.drawFeature(
feature, feature.layer.styleMap.createSymbolizer(feature, "select")
);
// If the current object is the list, don't innerHTML="", since that could clear it.
if ($("#browse_content").firstChild == browseObjectList) {
$("#browse_content").removeChild(browseObjectList);
} else {
$("#browse_content").empty();
}
// Create a link back to the object list
var div = document.createElement("div");
div.style.textAlign = "center";
div.style.marginBottom = "20px";
$("#browse_content").append(div);
var link = document.createElement("a");
link.href = "#";
link.onclick = loadObjectList;
link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.back')));
div.appendChild(link);
var table = document.createElement("table");
table.width = "100%";
table.className = "browse_heading";
$("#browse_content").append(table);
var tr = document.createElement("tr");
table.appendChild(tr);
var heading = document.createElement("td");
heading.appendChild(document.createTextNode(featureNameSelect(feature)));
tr.appendChild(heading);
var td = document.createElement("td");
td.align = "right";
tr.appendChild(td);
var type = featureType(feature);
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id;
link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.object_list.details')));
td.appendChild(link);
var div = document.createElement("div");
div.className = "browse_details";
$("#browse_content").append(div);
// Now the list of attributes
var ul = document.createElement("ul");
for (var key in feature.attributes) {
var li = document.createElement("li");
var b = document.createElement("b");
b.appendChild(document.createTextNode(key));
li.appendChild(b);
li.appendChild(document.createTextNode(": " + feature.attributes[key]));
ul.appendChild(li);
}
div.appendChild(ul);
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id + "/history";
link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.show_history')));
link.onclick = OpenLayers.Function.bind(loadHistory, {
type: type, feature: feature, link: link
});
div.appendChild(link);
// Stash the currently drawn feature
browseActiveFeature = feature;
}
function loadHistory() {
this.link.href = "";
this.link.innerHTML = I18n.t('browse.start_rjs.wait');
$.ajax("/api/" + OSM.API_VERSION + "/" + this.type + "/" + this.feature.osm_id + "/history", {
complete: OpenLayers.Function.bind(displayHistory, this)
});
return false;
}
function displayHistory(request) {
if (browseActiveFeature.osm_id != this.feature.osm_id || $("#browse_content").firstChild == browseObjectList) {
return false;
}
this.link.parentNode.removeChild(this.link);
var doc = request.responseXML;
var table = document.createElement("table");
table.width = "100%";
table.className = "browse_heading";
$("#browse_content").append(table);
var tr = document.createElement("tr");
table.appendChild(tr);
var heading = document.createElement("td");
heading.appendChild(document.createTextNode(I18n.t("browse.start_rjs.history_for_feature", { feature: featureNameHistory(this.feature) })));
tr.appendChild(heading);
var td = document.createElement("td");
td.align = "right";
tr.appendChild(td);
var link = document.createElement("a");
link.href = "/browse/" + this.type + "/" + this.feature.osm_id + "/history";
link.appendChild(document.createTextNode(I18n.t('browse.start_rjs.details')));
td.appendChild(link);
var div = document.createElement("div");
div.className = "browse_details";
var nodes = doc.getElementsByTagName(this.type);
var history = document.createElement("ul");
for (var i = nodes.length - 1; i >= 0; i--) {
var user = nodes[i].getAttribute("user") || I18n.t('browse.start_rjs.private_user');
var timestamp = nodes[i].getAttribute("timestamp");
var item = document.createElement("li");
item.appendChild(document.createTextNode(I18n.t("browse.start_rjs.edited_by_user_at_timestamp", { user: user, timestamp: timestamp })));
history.appendChild(item);
}
div.appendChild(history);
$("#browse_content").append(div);
}
function featureType(feature) {
if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
return "node";
} else {
return "way";
}
}
function featureTypeName(feature) {
if (featureType(feature) == "node") {
return I18n.t('browse.start_rjs.object_list.type.node');
} else if (featureType(feature) == "way") {
return I18n.t('browse.start_rjs.object_list.type.way');
}
}
function featureName(feature) {
var lang = $('html').attr('lang');
if (feature.attributes['name:' + lang]) {
return feature.attributes['name:' + lang];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else {
return feature.osm_id;
}
}
function featureNameSelect(feature) {
var lang = $('html').attr('lang');
if (feature.attributes['name:' + lang]) {
return feature.attributes['name:' + lang];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else if (featureType(feature) == "node") {
return I18n.t("browse.start_rjs.object_list.selected.type.node", { id: feature.osm_id });
} else if (featureType(feature) == "way") {
return I18n.t("browse.start_rjs.object_list.selected.type.way", { id: feature.osm_id });
}
}
function featureNameHistory(feature) {
var lang = $('html').attr('lang');
if (feature.attributes['name:' + lang]) {
return feature.attributes['name:' + lang];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else if (featureType(feature) == "node") {
return I18n.t("browse.start_rjs.object_list.history.type.node", { id: feature.osm_id });
} else if (featureType(feature) == "way") {
return I18n.t("browse.start_rjs.object_list.history.type.way", { id: feature.osm_id });
}
}
function setStatus(status) {
$("#browse_status").html(status);
$("#browse_status").show();
}
function clearStatus() {
$("#browse_status").html("");
$("#browse_status").hide();
}
}

View file

@ -0,0 +1,318 @@
function startExport(sidebarHtml) {
var vectors,
box,
transform,
markerLayer,
markerControl,
epsg4326 = new OpenLayers.Projection("EPSG:4326"),
epsg900913 = new OpenLayers.Projection("EPSG:900913");
vectors = new OpenLayers.Layer.Vector("Vector Layer", {
displayInLayerSwitcher: false
});
map.addLayer(vectors);
box = new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
snapAngle: 90,
irregular: true,
persist: true
}
});
box.handler.callbacks.done = endDrag;
map.addControl(box);
transform = new OpenLayers.Control.TransformFeature(vectors, {
rotate: false,
irregular: true
});
transform.events.register("transformcomplete", transform, transformComplete);
map.addControl(transform);
map.events.register("moveend", map, mapMoved);
map.events.register("changebaselayer", map, htmlUrlChanged);
$("#sidebar_title").html(I18n.t('export.start_rjs.export'));
$("#sidebar_content").html(sidebarHtml);
$("#maxlat,#minlon,#maxlon,#minlat").change(boundsChanged);
$("#drag_box").click(startDrag);
$("#add_marker").click(startMarker);
$("#format_osm,#format_mapnik,#format_html").click(formatChanged);
$("#mapnik_scale").change(mapnikSizeChanged);
openSidebar();
if (map.baseLayer.name == "Mapnik") {
$("#format_mapnik").prop("checked", true);
}
formatChanged();
setBounds(map.getExtent());
$("body").removeClass("site-index").addClass("site-export");
$("#sidebar").one("closed", function () {
$("body").removeClass("site-export").addClass("site-index");
clearBox();
clearMarker();
map.events.unregister("moveend", map, mapMoved);
map.events.unregister("changebaselayer", map, htmlUrlChanged);
map.removeLayer(vectors);
});
function getMercatorBounds() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(),
$("#maxlon").val(), $("#maxlat").val());
return bounds.transform(epsg4326, epsg900913);
}
function boundsChanged() {
var bounds = getMercatorBounds();
map.events.unregister("moveend", map, mapMoved);
map.zoomToExtent(bounds);
clearBox();
drawBox(bounds);
validateControls();
mapnikSizeChanged();
}
function startDrag() {
$("#drag_box").html(I18n.t('export.start_rjs.drag_a_box'));
clearBox();
box.activate();
};
function endDrag(bbox) {
var bounds = bbox.getBounds();
map.events.unregister("moveend", map, mapMoved);
setBounds(bounds);
drawBox(bounds);
box.deactivate();
validateControls();
$("#drag_box").html(I18n.t('export.start_rjs.manually_select'));
}
function transformComplete(event) {
setBounds(event.feature.geometry.bounds);
validateControls();
}
function startMarker() {
$("#add_marker").html(I18n.t('export.start_rjs.click_add_marker'));
if (!markerLayer) {
markerLayer = new OpenLayers.Layer.Vector("",{
displayInLayerSwitcher: false,
style: {
externalGraphic: OpenLayers.Util.getImageLocation("marker.png"),
graphicXOffset: -10.5,
graphicYOffset: -25,
graphicWidth: 21,
graphicHeight: 25
}
});
map.addLayer(markerLayer);
markerControl = new OpenLayers.Control.DrawFeature(markerLayer, OpenLayers.Handler.Point);
map.addControl(markerControl);
markerLayer.events.on({ "featureadded": endMarker });
}
markerLayer.destroyFeatures();
markerControl.activate();
return false;
}
function endMarker(event) {
markerControl.deactivate();
$("#add_marker").html(I18n.t('export.start_rjs.change_marker'));
$("#marker_inputs").show();
var geom = event.feature.geometry.clone().transform(epsg900913, epsg4326);
$("#marker_lon").val(geom.x.toFixed(5));
$("#marker_lat").val(geom.y.toFixed(5));
htmlUrlChanged();
}
function clearMarker() {
$("#marker_lon,#marker_lat").val("");
$("#marker_inputs").hide();
$("#add_marker").html(I18n.t('export.start_rjs.add_marker'));
if (markerLayer) {
markerControl.destroy();
markerLayer.destroy();
markerLayer = null;
markerControl = null;
}
}
function mapMoved() {
setBounds(map.getExtent());
validateControls();
}
function setBounds(bounds) {
var toPrecision = zoomPrecision(map.getZoom());
bounds = bounds.clone().transform(map.getProjectionObject(), epsg4326);
$("#minlon").val(toPrecision(bounds.left));
$("#minlat").val(toPrecision(bounds.bottom));
$("#maxlon").val(toPrecision(bounds.right));
$("#maxlat").val(toPrecision(bounds.top));
mapnikSizeChanged();
htmlUrlChanged();
}
function clearBox() {
transform.deactivate();
vectors.destroyFeatures();
}
function drawBox(bounds) {
var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
vectors.addFeatures(feature);
transform.setFeature(feature);
}
function validateControls() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
if (bounds.getWidth() * bounds.getHeight() > OSM.MAX_REQUEST_AREA) {
$("#export_osm_too_large").show();
} else {
$("#export_osm_too_large").hide();
}
var max_scale = maxMapnikScale();
var disabled = true;
if ($("#format_osm").prop("checked")) {
disabled = bounds.getWidth() * bounds.getHeight() > OSM.MAX_REQUEST_AREA;
} else if ($("#format_mapnik").prop("checked")) {
disabled = $("#mapnik_scale").val() < max_scale;
}
$("#export_commit").prop("disabled", disabled);
$("#mapnik_max_scale").html(roundScale(max_scale));
}
function htmlUrlChanged() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
var layerName = map.baseLayer.keyid;
var url = "http://" + OSM.SERVER_URL + "/export/embed.html?bbox=" + bounds.toBBOX() + "&amp;layer=" + layerName;
var markerUrl = "";
if ($("#marker_lat").val() && $("#marker_lon").val()) {
markerUrl = "&amp;mlat=" + $("#marker_lat").val() + "&amp;mlon=" + $("#marker_lon").val();
url += "&amp;marker=" + $("#marker_lat").val() + "," + $("#marker_lon").val();
}
var html = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'+url+'" style="border: 1px solid black"></iframe>';
// Create "larger map" link
var center = bounds.getCenterLonLat();
bounds.transform(epsg4326, epsg900913);
var zoom = map.getZoomForExtent(bounds);
var layers = getMapLayers();
var text = I18n.t('export.start_rjs.view_larger_map');
var escaped = [];
for (var i = 0; i < text.length; ++i) {
var c = text.charCodeAt(i);
escaped.push(c < 127 ? text.charAt(i) : "&#" + c + ";");
}
html += '<br /><small><a href="http://' + OSM.SERVER_URL + '/?lat='+center.lat+'&amp;lon='+center.lon+'&amp;zoom='+zoom+'&amp;layers='+layers+markerUrl+'">'+escaped.join("")+'</a></small>';
$("#export_html_text").val(html);
if ($("#format_html").prop("checked")) {
$("#export_html_text").prop("selected", true);
}
}
function formatChanged() {
$("#export_commit").show();
if ($("#format_osm").prop("checked")) {
$("#export_osm").show();
} else {
$("#export_osm").hide();
}
if ($("#format_mapnik").prop("checked")) {
$("#mapnik_scale").val(roundScale(map.getScale()));
$("#export_mapnik").show();
mapnikSizeChanged();
} else {
$("#export_mapnik").hide();
}
if ($("#format_html").prop("checked")) {
$("#export_html").show();
$("#export_commit").hide();
$("#export_html_text").prop("selected", true);
} else {
$("#export_html").hide();
clearMarker();
}
validateControls();
}
function maxMapnikScale() {
var bounds = getMercatorBounds();
return Math.floor(Math.sqrt(bounds.getWidth() * bounds.getHeight() / 0.3136));
}
function mapnikImageSize(scale) {
var bounds = getMercatorBounds();
return new OpenLayers.Size(Math.round(bounds.getWidth() / scale / 0.00028),
Math.round(bounds.getHeight() / scale / 0.00028));
}
function roundScale(scale) {
var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2);
return precision * Math.ceil(scale / precision);
}
function mapnikSizeChanged() {
var size = mapnikImageSize($("#mapnik_scale").val());
$("#mapnik_image_width").html(size.w);
$("#mapnik_image_height").html(size.h);
validateControls();
}
}

View file

@ -0,0 +1,9 @@
OSM = {
<% if defined?(PIWIK_LOCATION) and defined?(PIWIK_SITE) %>
PIWIK_LOCATION: <%= PIWIK_LOCATION.to_json %>,
PIWIK_SITE: <%= PIWIK_SITE.to_json %>,
<% end %>
MAX_REQUEST_AREA: <%= MAX_REQUEST_AREA.to_json %>,
SERVER_URL: <%= SERVER_URL.to_json %>,
API_VERSION: <%= API_VERSION.to_json %>
};

View file

@ -0,0 +1,36 @@
$(document).ready(function () {
$("#open_map_key").click(function (e) {
var url = $(this).attr('href'),
title = $(this).text();
function updateMapKey() {
var mapLayer = map.baseLayer.keyid,
mapZoom = map.getZoom();
$(".mapkey-table-entry").each(function () {
var data = $(this).data();
if (mapLayer == data.layer &&
mapZoom >= data.zoomMin && mapZoom <= data.zoomMax) {
$(this).show();
} else {
$(this).hide();
}
});
}
$("#sidebar_content").load(url, updateMapKey);
openSidebar({ title: title });
$("#sidebar").one("closed", function () {
map.events.unregister("zoomend", map, updateMapKey);
map.events.unregister("changelayer", map, updateMapKey);
});
map.events.register("zoomend", map, updateMapKey);
map.events.register("changelayer", map, updateMapKey);
e.preventDefault();
});
});

View file

@ -22,7 +22,7 @@ function createMap(divName, options) {
theme: "<%= asset_path 'theme/openstreetmap/style.css' %>" theme: "<%= asset_path 'theme/openstreetmap/style.css' %>"
}); });
var mapnik = new OpenLayers.Layer.OSM.Mapnik(i18n("javascripts.map.base.standard"), { var mapnik = new OpenLayers.Layer.OSM.Mapnik(I18n.t("javascripts.map.base.standard"), {
attribution: "", attribution: "",
keyid: "mapnik", keyid: "mapnik",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
@ -31,7 +31,7 @@ function createMap(divName, options) {
}); });
map.addLayer(mapnik); map.addLayer(mapnik);
var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), { var cyclemap = new OpenLayers.Layer.OSM.CycleMap(I18n.t("javascripts.map.base.cycle_map"), {
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>", attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
keyid: "cyclemap", keyid: "cyclemap",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
@ -40,7 +40,7 @@ function createMap(divName, options) {
}); });
map.addLayer(cyclemap); map.addLayer(cyclemap);
var transportmap = new OpenLayers.Layer.OSM.TransportMap(i18n("javascripts.map.base.transport_map"), { var transportmap = new OpenLayers.Layer.OSM.TransportMap(I18n.t("javascripts.map.base.transport_map"), {
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>", attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
keyid: "transportmap", keyid: "transportmap",
displayOutsideMaxExtent: true, displayOutsideMaxExtent: true,
@ -49,7 +49,7 @@ function createMap(divName, options) {
}); });
map.addLayer(transportmap); map.addLayer(transportmap);
var mapquest = new OpenLayers.Layer.OSM(i18n("javascripts.map.base.mapquest"), [ var mapquest = new OpenLayers.Layer.OSM(I18n.t("javascripts.map.base.mapquest"), [
"http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", "http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
"http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", "http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
"http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png", "http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
@ -71,6 +71,16 @@ function createMap(divName, options) {
}); });
map.addLayer(markers); map.addLayer(markers);
map.dataLayer = new OpenLayers.Layer(I18n.t('browse.start_rjs.data_layer_name'), {
visibility: false,
displayInLayerSwitcher: false
});
map.addLayer(map.dataLayer);
$("#" + divName).on("resized", function () {
map.updateSize();
});
return map; return map;
} }

View file

@ -35,3 +35,5 @@ OpenLayers.Util.origGetImageLocation = OpenLayers.Util.getImageLocation;
OpenLayers.Util.getImageLocation = function(image) { OpenLayers.Util.getImageLocation = function(image) {
return OpenLayers.Util.imageURLs[image] || OpenLayers.Util.origGetImageLocation(image); return OpenLayers.Util.imageURLs[image] || OpenLayers.Util.origGetImageLocation(image);
}; };
OpenLayers.Lang.setCode($('html').attr('lang'));

View file

@ -0,0 +1,100 @@
OSM.mapParams = function (search) {
var params = {}, mapParams = {}, loc;
search = (search || window.location.search).replace('?', '').split('&');
for (var i = 0; i < search.length; ++i) {
var pair = search[i],
j = pair.indexOf('='),
key = pair.slice(0, j),
val = pair.slice(++j);
params[key] = decodeURIComponent(val);
}
if (params.mlon && params.mlat) {
mapParams.marker = true;
mapParams.mlon = parseFloat(params.mlon);
mapParams.mlat = parseFloat(params.mlat);
}
if (params.layers) {
mapParams.layers = params.layers;
}
if (params.node || params.way || params.relation) {
mapParams.object = true;
mapParams.object_zoom = true;
if (params.node) {
mapParams.object_type = 'node';
mapParams.object_id = parseInt(params.node);
} else if (params.way) {
mapParams.object_type = 'way';
mapParams.object_id = parseInt(params.way);
} else if (params.relation) {
mapParams.object_type = 'relation';
mapParams.object_id = parseInt(params.relation);
}
}
// Decide on a lat lon to initialise the map with. Various ways of doing this
if (params.bbox) {
var bbox = params.bbox.split(",");
mapParams.bbox = true;
mapParams.minlon = parseFloat(bbox[0]);
mapParams.minlat = parseFloat(bbox[1]);
mapParams.maxlon = parseFloat(bbox[2]);
mapParams.maxlat = parseFloat(bbox[3]);
mapParams.object_zoom = false;
} else if (params.minlon && params.minlat && params.maxlon && params.maxlat) {
mapParams.bbox = true;
mapParams.minlon = parseFloat(params.minlon);
mapParams.minlat = parseFloat(params.minlat);
mapParams.maxlon = parseFloat(params.maxlon);
mapParams.maxlat = parseFloat(params.maxlat);
mapParams.object_zoom = false;
} else if (params.lon && params.lat) {
mapParams.lon = parseFloat(params.lon);
mapParams.lat = parseFloat(params.lat);
mapParams.zoom = parseInt(params.zoom || 5);
mapParams.object_zoom = false;
} else if (params.mlon && params.mlat) {
mapParams.lon = parseFloat(params.mlon);
mapParams.lat = parseFloat(params.mlat);
mapParams.zoom = parseInt(params.zoom || 12);
mapParams.object_zoom = false;
} else if (loc = $.cookie('_osm_location')) {
loc = loc.split("|");
mapParams.lon = parseFloat(loc[0]);
mapParams.lat = parseFloat(loc[1]);
mapParams.zoom = parseInt(loc[2]);
mapParams.layers = loc[3];
} else if (OSM.home) {
mapParams.lon = OSM.home.lon;
mapParams.lat = OSM.home.lat;
mapParams.zoom = 10;
} else if (OSM.location) {
mapParams.bbox = true;
mapParams.minlon = OSM.location.minlon;
mapParams.minlat = OSM.location.minlat;
mapParams.maxlon = OSM.location.maxlon;
mapParams.maxlat = OSM.location.maxlat;
} else {
mapParams.lon = -0.1;
mapParams.lat = 51.5;
mapParams.zoom = parseInt(params.zoom || 5);
}
if (mapParams.bbox) {
mapParams.box = params.box == "yes";
mapParams.lon = (mapParams.minlon + mapParams.maxlon) / 2;
mapParams.lat = (mapParams.minlat + mapParams.maxlat) / 2;
}
var scale = parseFloat(params.scale);
if (scale > 0) {
mapParams.zoom = Math.log(360.0 / (scale * 512.0)) / Math.log(2.0);
}
return mapParams;
};

View file

@ -0,0 +1,21 @@
if (OSM.PIWIK_LOCATION && OSM.PIWIK_SITE) {
$(document).ready(function () {
var base = document.location.protocol + "//" + OSM.PIWIK_LOCATION + "/";
$.ajax({
url: base + "piwik.js",
dataType: "script",
cache: true,
success: function () {
var piwikTracker = Piwik.getTracker(base + "piwik.php", OSM.PIWIK_SITE);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
$("meta[name=piwik-goal]").each(function () {
piwikTracker.trackGoal($(this).attr("content"));
});
}
});
});
}

View file

@ -0,0 +1,53 @@
function resizeContent() {
var content = $("#content");
var leftMargin = parseInt(content.css("left"));
var rightMargin = parseInt(content.css("right"));
var bottomMargin = parseInt(content.css("bottom"));
if ($("html").attr("dir") == "ltr") {
content.width($(window).width() - content.prop("offsetLeft") - rightMargin);
} else {
content.width($(window).width() - content.prop("offsetRight") - leftMargin);
}
content.height($(window).height() - content.prop("offsetTop") - bottomMargin);
}
function resizeMap() {
var content_width = $("#content").width();
var content_height = $("#content").height();
var sidebar_width = 0;
var left_border = parseFloat($("#map").css("border-left-width"));
var right_border = parseFloat($("#map").css("border-right-width"));
var top_border = parseFloat($("#map").css("border-top-width"));
var bottom_border = parseFloat($("#map").css("border-bottom-width"));
$("#sidebar:visible").each(function () {
sidebar_width = sidebar_width + $(this).outerWidth(true);
});
if ($("html").attr("dir") == "ltr") {
$("#map").css("left", (sidebar_width) + "px");
} else {
$("#map").css("right", (sidebar_width) + "px");
}
$("#map").width(content_width - sidebar_width - left_border - right_border);
$("#map").height(content_height - top_border - bottom_border);
$("#map").trigger("resized");
}
function handleResize() {
var brokenContentSize = $("#content").prop("offsetWidth") == 0;
if (brokenContentSize) {
resizeContent();
}
resizeMap();
}
$(document).ready(function () {
$("#sidebar").on("opened", resizeMap);
$("#sidebar").on("closed", resizeMap);
});

View file

@ -0,0 +1,68 @@
$(document).ready(function () {
/* Hide the preview panes */
$(".richtext_preview").hide();
/*
* When the text in an edit pane is changed, clear the contents of
* the associated preview pne so that it will be regenerated when
* the user next switches to it.
*/
$(".richtext_content textarea").change(function () {
$(this).parents(".richtext_container").find(".richtext_preview").empty();
});
/* Disable all the edit buttons */
$(".richtext_doedit").prop("disabled", true);
/* Enable the preview buttons */
$(".richtext_dopreview").prop("disabled", false);
/*
* Install a click handler to switch to edit mode when the
* edit button is pressed.
*/
$(".richtext_doedit").click(function (event) {
var editor = $(this).parents(".richtext_container").find("textarea");
var preview = $(this).parents(".richtext_container").find(".richtext_preview");
preview.hide();
editor.show();
$(this).siblings(".richtext_dopreview").prop("disabled", false);
$(this).prop("disabled", true);
event.preventDefault();
});
/*
* Install a click handler to switch to preview mode when the
* preview button is pressed.
*/
$(".richtext_dopreview").click(function (event) {
var editor = $(this).parents(".richtext_container").find("textarea");
var preview = $(this).parents(".richtext_container").find(".richtext_preview");
var width = editor.outerWidth() - preview.outerWidth() + preview.innerWidth();
var minHeight = editor.outerHeight() - preview.outerHeight() + preview.innerHeight();
if (preview.contents().length == 0) {
preview.oneTime(500, "loading", function () {
preview.addClass("loading");
});
preview.load(editor.data("previewUrl"), { text: editor.val() }, function () {
preview.stopTime("loading");
preview.removeClass("loading");
});
}
editor.hide();
preview.width(width);
preview.css("min-height", minHeight + "px");
preview.show();
$(this).siblings(".richtext_doedit").prop("disabled", false);
$(this).prop("disabled", true);
event.preventDefault();
});
});

View file

@ -0,0 +1,24 @@
function openSidebar(options) {
options = options || {};
$("#sidebar").trigger("closed");
if (options.title) { $("#sidebar_title").html(options.title); }
if (options.width) { $("#sidebar").width(options.width); }
else { $("#sidebar").width("30%"); }
$("#sidebar").css("display", "block");
$("#sidebar").trigger("opened");
};
$(document).ready(function () {
$(".sidebar_close").click(function (e) {
$("#sidebar").css("display", "none");
$("#sidebar").trigger("closed");
e.preventDefault();
});
});

View file

@ -64,6 +64,10 @@ h2 {
margin: 25px 0 5px 0; margin: 25px 0 5px 0;
} }
#logo img {
border: 0px;
}
#logo h1 { #logo h1 {
font-size: 18px; font-size: 18px;
line-height: 20px; line-height: 20px;
@ -83,6 +87,10 @@ h2 {
display: none; display: none;
} }
#small-title img {
border: 0px;
}
/* Rules for the introductory text displayed in the left sidebar to new users */ /* Rules for the introductory text displayed in the left sidebar to new users */
.sidebar-copy { .sidebar-copy {
@ -322,9 +330,16 @@ h2 {
padding: 5px 10px; padding: 5px 10px;
text-decoration: none; text-decoration: none;
color: #333; color: #333;
-webkit-transition: color 200ms ease-in;
-moz-transition: color 200ms ease-in;
-o-transition: color 200ms ease-in;
transition: color 200ms ease-in;
} }
#tabnav a:link.active, #tabnav a:visited.active { body.site-index #tabnav a#viewanchor,
body.site-edit #tabnav a#editanchor,
body.changeset-list #tabnav a#historyanchor,
body.site-export #tabnav a#exportanchor {
border-bottom: 1px solid #aaa; border-bottom: 1px solid #aaa;
background: #9ed485; background: #9ed485;
color: #000; color: #000;
@ -383,6 +398,7 @@ h2 {
#map { #map {
margin: 0px; margin: 0px;
border: 0px;
padding: 0px; padding: 0px;
} }
@ -496,7 +512,10 @@ h2 {
padding-right: 5px; padding-right: 5px;
} }
#mapkey .mapkey-table-key { #mapkey .mapkey-table-key img {
display: block;
margin-left: auto;
margin-right: auto;
} }
#mapkey .mapkey-table-value { #mapkey .mapkey-table-value {
@ -595,9 +614,9 @@ h2 {
bottom: 0px; bottom: 0px;
} }
#content.site_index, .site-index #content,
#content.site_edit, .site-edit #content,
#content.site_export { .site-export #content {
border: 0px; border: 0px;
padding: 0px; padding: 0px;
} }
@ -635,7 +654,7 @@ h2 {
/* Rules for the home page */ /* Rules for the home page */
.site_index #map { .site-index #map {
position: absolute; position: absolute;
top: 0px; top: 0px;
bottom: 0px; bottom: 0px;
@ -643,7 +662,7 @@ h2 {
right: 0px; right: 0px;
} }
.site_export #map { .site-export #map {
position: absolute; position: absolute;
top: 0px; top: 0px;
bottom: 0px; bottom: 0px;
@ -653,12 +672,13 @@ h2 {
/* Rules for the edit page */ /* Rules for the edit page */
.site_edit #map { .site-edit #map {
position: absolute; position: absolute;
top: 0px; top: 0px;
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;
right: 0px; right: 0px;
overflow: hidden;
} }
/* Rules for the changeset list shown by the history tab etc */ /* Rules for the changeset list shown by the history tab etc */
@ -941,14 +961,14 @@ p#contributorGuidance {
/* Rules for the user view */ /* Rules for the user view */
.user_view .user_map { .user-view .user_map {
position: relative; position: relative;
width: 400px; width: 400px;
height: 400px; height: 400px;
border: 1px solid #ccc; border: 1px solid #ccc;
} }
.user_view .user_map p#no_home_location { .user-view .user_map p#no_home_location {
position: absolute; position: absolute;
top: 0px; top: 0px;
bottom: 0px; bottom: 0px;

View file

@ -148,17 +148,21 @@ html body {
/* Rules for the diary list */ /* Rules for the diary list */
.diary_entry_list img.user_thumbnail { .diary_entry-list img.user_image {
float: right;
}
.diary_entry-list img.user_thumbnail {
float: right; float: right;
} }
/* Rules for the diary entry view */ /* Rules for the diary entry view */
.diary_entry_view img.user_image { .diary_entry-view img.user_image {
float: right; float: right;
} }
.diary_entry_view img.user_thumbnail { .diary_entry-view img.user_thumbnail {
float: right; float: right;
} }
@ -180,11 +184,11 @@ form#termsForm input#agree {
/* Rules for the user view */ /* Rules for the user view */
.user_view img.user_image { .user-view img.user_image {
float: right; float: right;
} }
.user_view .user_map { .user-view .user_map {
float: right; float: right;
} }

View file

@ -148,17 +148,21 @@ html body {
/* Rules for the diary list */ /* Rules for the diary list */
.diary_entry_list img.user_thumbnail { .diary_entry-list img.user_image {
float: left;
}
.diary_entry-list img.user_thumnbail {
float: left; float: left;
} }
/* Rules for the diary entry view */ /* Rules for the diary entry view */
.diary_entry_view img.user_image { .diary_entry-view img.user_image {
float: left; float: left;
} }
.diary_entry_view img.user_thumbnail { .diary_entry-view img.user_thumbnail {
float: left; float: left;
} }
@ -180,11 +184,11 @@ form#termsForm input#agree {
/* Rules for the user view */ /* Rules for the user view */
.user_view img.user_image { .user-view img.user_image {
float: left; float: left;
} }
.user_view .user_map { .user-view .user_map {
float: left; float: left;
} }

View file

@ -107,7 +107,7 @@ h1 {
border-right: 0px; border-right: 0px;
} }
#content.site_index { .site-index #content {
left: 0px; left: 0px;
right: 0px; right: 0px;
top: 38px; top: 38px;

View file

@ -1,5 +1,5 @@
class BrowseController < ApplicationController class BrowseController < ApplicationController
layout 'site' layout 'site', :except => [ :start ]
before_filter :authorize_web before_filter :authorize_web
before_filter :set_locale before_filter :set_locale
@ -7,11 +7,6 @@ class BrowseController < ApplicationController
around_filter :web_timeout, :except => [:start] around_filter :web_timeout, :except => [:start]
def start def start
@max_features = case
when browser.ie? && browser.version.to_i < 8 then 100
when browser.ie? && browser.version.to_i < 9 then 500
else 2000
end
end end
def relation def relation

View file

@ -37,6 +37,7 @@ class DiaryEntryController < ApplicationController
default_lang = @user.preferences.where(:k => "diary.default_language").first default_lang = @user.preferences.where(:k => "diary.default_language").first
lang_code = default_lang ? default_lang.v : @user.preferred_language lang_code = default_lang ? default_lang.v : @user.preferred_language
@diary_entry = DiaryEntry.new(:language_code => lang_code) @diary_entry = DiaryEntry.new(:language_code => lang_code)
set_map_location
render :action => 'edit' render :action => 'edit'
end end
end end
@ -47,11 +48,11 @@ class DiaryEntryController < ApplicationController
if @user != @diary_entry.user if @user != @diary_entry.user
redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id] redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id]
elsif params[:diary_entry] elsif params[:diary_entry] and @diary_entry.update_attributes(params[:diary_entry])
if @diary_entry.update_attributes(params[:diary_entry]) redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id]
redirect_to :controller => 'diary_entry', :action => 'view', :id => params[:id]
end
end end
set_map_location
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
render :action => "no_such_entry", :status => :not_found render :action => "no_such_entry", :status => :not_found
end end
@ -212,4 +213,22 @@ private
def user_specific_list? def user_specific_list?
params[:friends] or params[:nearby] params[:friends] or params[:nearby]
end end
##
# decide on a location for the diary entry map
def set_map_location
if @diary_entry.latitude and @diary_entry.longitude
@lon = @diary_entry.longitude
@lat = @diary_entry.latitude
@zoom = 12
elsif @user.home_lat.nil? or @user.home_lon.nil?
@lon = params[:lon] || -0.1
@lat = params[:lat] || 51.5
@zoom = params[:zoom] || 4
else
@lon = @user.home_lon
@lat = @user.home_lat
@zoom = 12
end
end
end end

View file

@ -132,84 +132,6 @@ class GeocoderController < ApplicationController
render :action => "error" render :action => "error"
end end
def search_osm_namefinder
# get query parameters
query = params[:query]
# create result array
@results = Array.new
# ask OSM namefinder
response = fetch_xml("http://gazetteer.openstreetmap.org/namefinder/search.xml?find=#{escape_query(query)}")
# parse the response
response.elements.each("searchresults/named") do |named|
lat = named.attributes["lat"].to_s
lon = named.attributes["lon"].to_s
zoom = named.attributes["zoom"].to_s
place = named.elements["place/named"] || named.elements["nearestplaces/named"]
type = named.attributes["info"].to_s.capitalize
name = named.attributes["name"].to_s
description = named.elements["description"].to_s
if name.empty?
prefix = ""
name = type
else
prefix = t "geocoder.search_osm_namefinder.prefix", :type => type
end
if place
distance = format_distance(place.attributes["approxdistance"].to_i)
direction = format_direction(place.attributes["direction"].to_i)
placename = format_name(place.attributes["name"].to_s)
suffix = t "geocoder.search_osm_namefinder.suffix_place", :distance => distance, :direction => direction, :placename => placename
if place.attributes["rank"].to_i <= 30
parent = nil
parentrank = 0
parentscore = 0
place.elements.each("nearestplaces/named") do |nearest|
nearestrank = nearest.attributes["rank"].to_i
nearestscore = nearestrank / nearest.attributes["distance"].to_f
if nearestrank > 30 and
( nearestscore > parentscore or
( nearestscore == parentscore and nearestrank > parentrank ) )
parent = nearest
parentrank = nearestrank
parentscore = nearestscore
end
end
if parent
parentname = format_name(parent.attributes["name"].to_s)
if place.attributes["info"].to_s == "suburb"
suffix = t "geocoder.search_osm_namefinder.suffix_suburb", :suffix => suffix, :parentname => parentname
else
parentdistance = format_distance(parent.attributes["approxdistance"].to_i)
parentdirection = format_direction(parent.attributes["direction"].to_i)
suffix = t "geocoder.search_osm_namefinder.suffix_parent", :suffix => suffix, :parentdistance => parentdistance, :parentdirection => parentdirection, :parentname => parentname
end
end
end
else
suffix = ""
end
@results.push({:lat => lat, :lon => lon, :zoom => zoom,
:prefix => prefix, :name => name, :suffix => suffix,
:description => description})
end
render :action => "results"
rescue Exception => ex
@error = "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}"
render :action => "error"
end
def search_osm_nominatim def search_osm_nominatim
# get query parameters # get query parameters
query = params[:query] query = params[:query]
@ -299,42 +221,6 @@ class GeocoderController < ApplicationController
@sources.push({ :name => "geonames" }) @sources.push({ :name => "geonames" })
end end
def description_osm_namefinder
# get query parameters
lat = params[:lat]
lon = params[:lon]
types = params[:types]
max = params[:max]
# create result array
@results = Array.new
# ask OSM namefinder
response = fetch_xml("http://gazetteer.openstreetmap.org/namefinder/search.xml?find=#{types}+near+#{lat},#{lon}&max=#{max}")
# parse the response
response.elements.each("searchresults/named") do |named|
lat = named.attributes["lat"].to_s
lon = named.attributes["lon"].to_s
zoom = named.attributes["zoom"].to_s
place = named.elements["place/named"] || named.elements["nearestplaces/named"]
type = named.attributes["info"].to_s
name = named.attributes["name"].to_s
description = named.elements["description"].to_s
distance = format_distance(place.attributes["approxdistance"].to_i)
direction = format_direction((place.attributes["direction"].to_i - 180) % 360)
prefix = t "geocoder.description_osm_namefinder.prefix", :distance => distance, :direction => direction, :type => type
@results.push({:lat => lat, :lon => lon, :zoom => zoom,
:prefix => prefix.capitalize, :name => name,
:description => description})
end
render :action => "results"
rescue Exception => ex
@error = "Error contacting gazetteer.openstreetmap.org: #{ex.to_s}"
render :action => "error"
end
def description_osm_nominatim def description_osm_nominatim
# get query parameters # get query parameters
lat = params[:lat] lat = params[:lat]
@ -344,7 +230,7 @@ class GeocoderController < ApplicationController
# create result array # create result array
@results = Array.new @results = Array.new
# ask OSM namefinder # ask nominatim
response = fetch_xml("#{NOMINATIM_URL}reverse?lat=#{lat}&lon=#{lon}&zoom=#{zoom}&accept-language=#{request.user_preferred_languages.join(',')}") response = fetch_xml("#{NOMINATIM_URL}reverse?lat=#{lat}&lon=#{lon}&zoom=#{zoom}&accept-language=#{request.user_preferred_languages.join(',')}")
# parse the response # parse the response

View file

@ -38,6 +38,8 @@ class MessageController < ApplicationController
message = Message.find(params[:message_id]) message = Message.find(params[:message_id])
if message.to_user_id == @user.id then if message.to_user_id == @user.id then
message.update_attribute(:message_read, true)
@body = "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}" @body = "On #{message.sent_on} #{message.sender.display_name} wrote:\n\n#{message.body.gsub(/^/, '> ')}"
@title = @subject = "Re: #{message.title.sub(/^Re:\s*/, '')}" @title = @subject = "Re: #{message.title.sub(/^Re:\s*/, '')}"
@this_user = User.find(message.from_user_id) @this_user = User.find(message.from_user_id)

View file

@ -6,8 +6,10 @@ class SiteController < ApplicationController
before_filter :set_locale before_filter :set_locale
before_filter :require_user, :only => [:edit] before_filter :require_user, :only => [:edit]
def export def index
render :action => 'index' unless STATUS == :database_readonly or STATUS == :database_offline
session[:location] ||= OSM::IPLocation(request.env['REMOTE_ADDR'])
end
end end
def permalink def permalink
@ -37,48 +39,6 @@ class SiteController < ApplicationController
if editor == "remote" if editor == "remote"
render :action => :index render :action => :index
else
# Decide on a lat lon to initialise potlatch with. Various ways of doing this
if params['lon'] and params['lat']
@lon = params['lon'].to_f
@lat = params['lat'].to_f
@zoom = params['zoom'].to_i
elsif params['mlon'] and params['mlat']
@lon = params['mlon'].to_f
@lat = params['mlat'].to_f
@zoom = params['zoom'].to_i
elsif params['bbox']
bbox = BoundingBox.from_bbox_params(params)
@lon = bbox.centre_lon
@lat = bbox.centre_lat
@zoom = 16
elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
bbox = BoundingBox.from_lon_lat_params(params)
@lon = bbox.centre_lon
@lat = bbox.centre_lat
@zoom = 16
elsif params['gpx']
@lon = Trace.find(params['gpx']).longitude
@lat = Trace.find(params['gpx']).latitude
elsif cookies.key?("_osm_location")
@lon, @lat, @zoom, layers = cookies["_osm_location"].split("|")
elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil?
@lon = @user.home_lon
@lat = @user.home_lat
else
#catch all. Do nothing. lat=nil, lon=nil
#Currently this results in potlatch starting up at 0,0 (Atlantic ocean).
end
@zoom = '17' if @zoom.nil?
end end
end end

View file

@ -259,10 +259,6 @@ class UserController < ApplicationController
else else
password_authentication(params[:username], params[:password]) password_authentication(params[:username], params[:password])
end end
elsif params[:notice]
flash.now[:notice] = t "user.login.notice_#{params[:notice]}"
elsif flash[:notice].nil?
flash.now[:notice] = t 'user.login.notice'
end end
end end

View file

@ -9,14 +9,6 @@ module ApplicationHelper
end end
end end
def html_escape_unicode(text)
chars = ActiveSupport::Multibyte::Unicode.u_unpack(text).map do |c|
c < 127 ? c.chr : "&##{c.to_s};"
end
return chars.join("")
end
def rss_link_to(*args) def rss_link_to(*args)
return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" }); return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" });
end end
@ -25,17 +17,6 @@ module ApplicationHelper
return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" }); return link_to(image_tag("RSS.gif", :size => "16x16", :border => 0), Hash[*args], { :class => "rsssmall" });
end end
def javascript_strings
js = ""
js << "<script type='text/javascript'>\n"
js << "i18n_strings = new Array();\n"
js << javascript_strings_for_key("javascripts")
js << "</script>\n"
return raw(js)
end
def style_rules def style_rules
css = "" css = ""
@ -118,21 +99,4 @@ module ApplicationHelper
link_to h(object.author_name), link_options.merge({:controller => "user", :action => "view", :display_name => object.author_name}) link_to h(object.author_name), link_options.merge({:controller => "user", :action => "view", :display_name => object.author_name})
end end
end end
private
def javascript_strings_for_key(key)
js = ""
value = I18n.t(key, :locale => "en")
if value.is_a?(String)
js << "i18n_strings['#{key}'] = '" << escape_javascript(t(key)) << "';\n"
else
value.each_key do |k|
js << javascript_strings_for_key("#{key}.#{k}")
end
end
return js
end
end end

View file

@ -200,6 +200,7 @@ class User < ActiveRecord::Base
self.image = nil self.image = nil
self.email_valid = false self.email_valid = false
self.new_email = nil self.new_email = nil
self.openid_url = nil
self.status = "deleted" self.status = "deleted"
self.save self.save
end end

View file

@ -1,6 +1,3 @@
<%= javascript_include_tag 'openlayers.js' %>
<%= javascript_include_tag 'map.js' %>
<iframe id="linkloader" style="display: none"> <iframe id="linkloader" style="display: none">
</iframe> </iframe>
@ -45,8 +42,6 @@
<% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible? %> <% if map.instance_of? Changeset or (map.instance_of? Node and map.version > 1) or map.visible? %>
<script type="text/javascript"> <script type="text/javascript">
OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
function remoteEditHandler(event, bbox, select) { function remoteEditHandler(event, bbox, select) {
var left = bbox.left - 0.0001; var left = bbox.left - 0.0001;
var top = bbox.top + 0.0001; var top = bbox.top + 0.0001;

View file

@ -1,533 +0,0 @@
var browseBoxControl;
var browseMode = "auto";
var browseBounds;
var browseFeatureList;
var browseActiveFeature;
var browseDataLayer;
var browseSelectControl;
var browseObjectList;
var areasHidden = false;
OpenLayers.Feature.Vector.style['default'].strokeWidth = 3;
OpenLayers.Feature.Vector.style['default'].cursor = "pointer";
function startBrowse() {
map.dataLayer.active = true;
$("#sidebar_title").html("<%=j t 'browse.start_rjs.data_frame_title' %>");
$("#sidebar_content").html("<%=j render :partial => "sidebar" %>");
openSidebar({ onclose: stopBrowse });
var vectors = new OpenLayers.Layer.Vector();
browseBoxControl = new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
snapAngle: 90,
irregular: true,
persist: true
}
});
browseBoxControl.handler.callbacks.done = endDrag;
map.addControl(browseBoxControl);
map.events.register("moveend", map, updateData);
map.events.triggerEvent("moveend");
$("#browse_select_view").click(useMap);
$("#browse_select_box").click(startDrag);
$("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.hide_areas' %>");
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
}
function updateData() {
if (browseMode == "auto") {
if (map.getZoom() >= 15) {
useMap(false);
} else {
setStatus("<%=j t 'browse.start_rjs.zoom_or_select' %>");
}
}
}
function stopBrowse() {
if (map.dataLayer.active) {
map.dataLayer.active = false;
if (browseSelectControl) {
browseSelectControl.destroy();
browseSelectControl = null;
}
if (browseBoxControl) {
browseBoxControl.destroy();
browseBoxControl = null;
}
if (browseActiveFeature) {
browseActiveFeature.destroy();
browseActiveFeature = null;
}
if (browseDataLayer) {
browseDataLayer.destroy();
browseDataLayer = null;
}
map.dataLayer.setVisibility(false);
map.events.unregister("moveend", map, updateData);
}
}
function startDrag() {
$("#browse_select_box").html("<%=j t 'browse.start_rjs.drag_a_box' %>");
browseBoxControl.activate();
return false;
}
function useMap(reload) {
var bounds = map.getExtent();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
if (!browseBounds || !browseBounds.containsBounds(projected)) {
var center = bounds.getCenterLonLat();
var tileWidth = bounds.getWidth() * 1.2;
var tileHeight = bounds.getHeight() * 1.2;
var tileBounds = new OpenLayers.Bounds(center.lon - (tileWidth / 2),
center.lat - (tileHeight / 2),
center.lon + (tileWidth / 2),
center.lat + (tileHeight / 2));
browseBounds = tileBounds;
getData(tileBounds, reload);
browseMode = "auto";
$("#browse_select_view").hide();
}
return false;
}
function hideAreas() {
$("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.show_areas' %>");
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(showAreas);
areasHidden = true;
useMap(true);
}
function showAreas() {
$("#browse_hide_areas_box").html("<%=j t 'browse.start_rjs.hide_areas' %>");
$("#browse_hide_areas_box").show();
$("#browse_hide_areas_box").click(hideAreas);
areasHidden = false;
useMap(true);
}
function endDrag(bbox) {
var bounds = bbox.getBounds();
var projected = bounds.clone().transform(map.getProjectionObject(), epsg4326);
browseBoxControl.deactivate();
browseBounds = projected;
getData(bounds);
browseMode = "manual";
$("#browse_select_box").html("<%=j t 'browse.start_rjs.manually_select' %>");
$("#browse_select_view").show();
}
function displayFeatureWarning(count, limit, callback) {
clearStatus();
var div = document.createElement("div");
var p = document.createElement("p");
p.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.loaded_an_area_with_num_features' %>", { num_features: count, max_features: limit })));
div.appendChild(p);
var input = document.createElement("input");
input.type = "submit";
input.value = "<%=j t 'browse.start_rjs.load_data' %>";
input.onclick = callback;
div.appendChild(input);
$("#browse_content").html("");
$("#browse_content").append(div);
}
function customDataLoader(resp, options) {
if (map.dataLayer.active) {
var request = resp.priv;
var doc = request.responseXML;
if (!doc || !doc.documentElement) {
doc = request.responseText;
}
resp.features = this.format.read(doc);
if (!this.maxFeatures || resp.features.length <= this.maxFeatures) {
options.callback.call(options.scope, resp);
} else {
displayFeatureWarning(resp.features.length, this.maxFeatures, function () {
options.callback.call(options.scope, resp);
});
}
}
}
function getData(bounds, reload) {
var projected = bounds.clone().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
var size = projected.getWidth() * projected.getHeight();
if (size > <%= MAX_REQUEST_AREA %>) {
setStatus(i18n("<%=j t 'browse.start_rjs.unable_to_load_size', :max_bbox_size => MAX_REQUEST_AREA %>", { bbox_size: size }));
} else {
loadData("/api/<%= API_VERSION %>/map?bbox=" + projected.toBBOX(), reload);
}
}
function loadData(url, reload) {
setStatus("<%=j t 'browse.start_rjs.loading' %>");
$("#browse_content").empty();
var formatOptions = {
checkTags: true,
interestingTagsExclude: ['source','source_ref','source:ref','history','attribution','created_by','tiger:county','tiger:tlid','tiger:upload_uuid']
};
if (areasHidden) formatOptions.areaTags = [];
if (!browseDataLayer || reload) {
var style = new OpenLayers.Style();
style.addRules([new OpenLayers.Rule({
symbolizer: {
Polygon: { fillColor: '#ff0000', strokeColor: '#ff0000' },
Line: { fillColor: '#ffff00', strokeColor: '#000000', strokeOpacity: '0.4' },
Point: { fillColor: '#00ff00', strokeColor: '#00ff00' }
}
})]);
if (browseDataLayer) browseDataLayer.destroyFeatures();
browseDataLayer = new OpenLayers.Layer.Vector("Data", {
strategies: [
new OpenLayers.Strategy.Fixed()
],
protocol: new OpenLayers.Protocol.HTTP({
url: url,
format: new OpenLayers.Format.OSM(formatOptions),
maxFeatures: <%= @max_features %>,
handleRead: customDataLoader
}),
projection: new OpenLayers.Projection("EPSG:4326"),
displayInLayerSwitcher: false,
styleMap: new OpenLayers.StyleMap({
'default': style,
'select': { strokeColor: '#0000ff', strokeWidth: 8 }
})
});
browseDataLayer.events.register("loadend", browseDataLayer, dataLoaded );
map.addLayer(browseDataLayer);
browseSelectControl = new OpenLayers.Control.SelectFeature(browseDataLayer, { onSelect: onFeatureSelect });
browseSelectControl.handlers.feature.stopDown = false;
browseSelectControl.handlers.feature.stopUp = false;
map.addControl(browseSelectControl);
browseSelectControl.activate();
} else {
browseDataLayer.destroyFeatures();
browseDataLayer.refresh({ url: url });
}
browseActiveFeature = null;
}
function dataLoaded() {
if (this.map.dataLayer.active) {
clearStatus();
browseObjectList = document.createElement("div");
var heading = document.createElement("p");
heading.className = "browse_heading";
heading.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.heading' %>"));
browseObjectList.appendChild(heading);
var list = document.createElement("ul");
for (var i = 0; i < this.features.length; i++) {
var feature = this.features[i];
// Type, for linking
var type = featureType(feature);
var typeName = featureTypeName(feature);
var li = document.createElement("li");
li.appendChild(document.createTextNode(typeName + " "));
// Link, for viewing in the tab
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id;
var name = featureName(feature);
link.appendChild(document.createTextNode(name));
link.feature = feature;
link.onclick = OpenLayers.Function.bind(viewFeatureLink, link);
li.appendChild(link);
list.appendChild(li);
}
browseObjectList.appendChild(list);
var link = document.createElement("a");
link.href = this.protocol.url;
link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.api' %>"));
browseObjectList.appendChild(link);
$("#browse_content").html(browseObjectList);
}
}
function viewFeatureLink() {
var layer = this.feature.layer;
for (var i = 0; i < layer.selectedFeatures.length; i++) {
var f = layer.selectedFeatures[i];
layer.drawFeature(f, layer.styleMap.createSymbolizer(f, "default"));
}
onFeatureSelect(this.feature);
if (browseMode != "auto") {
map.setCenter(this.feature.geometry.getBounds().getCenterLonLat());
}
return false;
}
function loadObjectList() {
$("#browse_content").empty();
$("#browse_content").append(browseObjectList);
return false;
}
function onFeatureSelect(feature) {
// Unselect previously selected feature
if (browseActiveFeature) {
browseActiveFeature.layer.drawFeature(
browseActiveFeature,
browseActiveFeature.layer.styleMap.createSymbolizer(browseActiveFeature, "default")
);
}
// Redraw in selected style
feature.layer.drawFeature(
feature, feature.layer.styleMap.createSymbolizer(feature, "select")
);
// If the current object is the list, don't innerHTML="", since that could clear it.
if ($("#browse_content").firstChild == browseObjectList) {
$("#browse_content").removeChild(browseObjectList);
} else {
$("#browse_content").empty();
}
// Create a link back to the object list
var div = document.createElement("div");
div.style.textAlign = "center";
div.style.marginBottom = "20px";
$("#browse_content").append(div);
var link = document.createElement("a");
link.href = "#";
link.onclick = loadObjectList;
link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.back' %>"));
div.appendChild(link);
var table = document.createElement("table");
table.width = "100%";
table.className = "browse_heading";
$("#browse_content").append(table);
var tr = document.createElement("tr");
table.appendChild(tr);
var heading = document.createElement("td");
heading.appendChild(document.createTextNode(featureNameSelect(feature)));
tr.appendChild(heading);
var td = document.createElement("td");
td.align = "right";
tr.appendChild(td);
var type = featureType(feature);
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id;
link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.object_list.details' %>"));
td.appendChild(link);
var div = document.createElement("div");
div.className = "browse_details";
$("#browse_content").append(div);
// Now the list of attributes
var ul = document.createElement("ul");
for (var key in feature.attributes) {
var li = document.createElement("li");
var b = document.createElement("b");
b.appendChild(document.createTextNode(key));
li.appendChild(b);
li.appendChild(document.createTextNode(": " + feature.attributes[key]));
ul.appendChild(li);
}
div.appendChild(ul);
var link = document.createElement("a");
link.href = "/browse/" + type + "/" + feature.osm_id + "/history";
link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.show_history' %>"));
link.onclick = OpenLayers.Function.bind(loadHistory, {
type: type, feature: feature, link: link
});
div.appendChild(link);
// Stash the currently drawn feature
browseActiveFeature = feature;
}
function loadHistory() {
this.link.href = "";
this.link.innerHTML = "<%=j t 'browse.start_rjs.wait' %>";
$.ajax("/api/<%= API_VERSION %>/" + this.type + "/" + this.feature.osm_id + "/history", {
complete: OpenLayers.Function.bind(displayHistory, this)
});
return false;
}
function displayHistory(request) {
if (browseActiveFeature.osm_id != this.feature.osm_id || $("#browse_content").firstChild == browseObjectList) {
return false;
}
this.link.parentNode.removeChild(this.link);
var doc = request.responseXML;
var table = document.createElement("table");
table.width = "100%";
table.className = "browse_heading";
$("#browse_content").append(table);
var tr = document.createElement("tr");
table.appendChild(tr);
var heading = document.createElement("td");
heading.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.history_for_feature' %>", { feature: featureNameHistory(this.feature) })));
tr.appendChild(heading);
var td = document.createElement("td");
td.align = "right";
tr.appendChild(td);
var link = document.createElement("a");
link.href = "/browse/" + this.type + "/" + this.feature.osm_id + "/history";
link.appendChild(document.createTextNode("<%=j t 'browse.start_rjs.details' %>"));
td.appendChild(link);
var div = document.createElement("div");
div.className = "browse_details";
var nodes = doc.getElementsByTagName(this.type);
var history = document.createElement("ul");
for (var i = nodes.length - 1; i >= 0; i--) {
var user = nodes[i].getAttribute("user") || "<%=j t 'browse.start_rjs.private_user' %>";
var timestamp = nodes[i].getAttribute("timestamp");
var item = document.createElement("li");
item.appendChild(document.createTextNode(i18n("<%=j t 'browse.start_rjs.edited_by_user_at_timestamp' %>", { user: user, timestamp: timestamp })));
history.appendChild(item);
}
div.appendChild(history);
$("#browse_content").append(div);
}
function featureType(feature) {
if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
return "node";
} else {
return "way";
}
}
function featureTypeName(feature) {
if (featureType(feature) == "node") {
return "<%=j t 'browse.start_rjs.object_list.type.node' %>";
} else if (featureType(feature) == "way") {
return "<%=j t 'browse.start_rjs.object_list.type.way' %>";
}
}
function featureName(feature) {
if (feature.attributes['name:<%= I18n.locale %>']) {
return feature.attributes['name:<%= I18n.locale %>'];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else {
return feature.osm_id;
}
}
function featureNameSelect(feature) {
if (feature.attributes['name:<%= I18n.locale %>']) {
return feature.attributes['name:<%= I18n.locale %>'];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else if (featureType(feature) == "node") {
return i18n("<%=j t 'browse.start_rjs.object_list.selected.type.node' %>", { id: feature.osm_id });
} else if (featureType(feature) == "way") {
return i18n("<%=j t 'browse.start_rjs.object_list.selected.type.way' %>", { id: feature.osm_id });
}
}
function featureNameHistory(feature) {
if (feature.attributes['name:<%= I18n.locale %>']) {
return feature.attributes['name:<%= I18n.locale %>'];
} else if (feature.attributes.name) {
return feature.attributes.name;
} else if (featureType(feature) == "node") {
return i18n("<%=j t 'browse.start_rjs.object_list.history.type.node' %>", { id: feature.osm_id });
} else if (featureType(feature) == "way") {
return i18n("<%=j t 'browse.start_rjs.object_list.history.type.way' %>", { id: feature.osm_id });
}
}
function setStatus(status) {
$("#browse_status").html(status);
$("#browse_status").show();
}
function clearStatus() {
$("#browse_status").html("");
$("#browse_status").hide();
}
startBrowse();

View file

@ -1,12 +1,7 @@
<%= javascript_include_tag 'openlayers.js' %>
<%= javascript_include_tag 'map.js' %>
<div id="changeset_list_map"> <div id="changeset_list_map">
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
var highlight; var highlight;
function highlightChangeset(id) { function highlightChangeset(id) {

View file

@ -35,30 +35,11 @@
</table> </table>
<% end %> <% end %>
<% if @diary_entry.latitude and @diary_entry.longitude %>
<% lon = @diary_entry.longitude %>
<% lat = @diary_entry.latitude %>
<% zoom = '12' %>
<% elsif @user.home_lat.nil? or @user.home_lon.nil? %>
<% lon = h(params['lon'] || '-0.1') %>
<% lat = h(params['lat'] || '51.5') %>
<% zoom = h(params['zoom'] || '4') %>
<% else %>
<% lon = @user.home_lon %>
<% lat = @user.home_lat %>
<% zoom = '12' %>
<% end %>
<%= javascript_include_tag 'openlayers.js' %>
<%= javascript_include_tag 'map.js' %>
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
var marker; var marker;
OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>"); function setLocation( e ) {
function setLocation( e ) {
closeMapPopup(); closeMapPopup();
var lonlat = getEventPosition(e); var lonlat = getEventPosition(e);
@ -77,8 +58,8 @@
$("#map").show(); $("#map").show();
$("#usemap").hide(); $("#usemap").hide();
var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var centre = new OpenLayers.LonLat(<%= @lon %>, <%= @lat %>);
var zoom = <%= zoom %>; var zoom = <%= @zoom %>;
var map = createMap("map"); var map = createMap("map");

View file

@ -1,326 +0,0 @@
var vectors;
var box;
var transform;
var markerLayer;
var markerControl;
function startExport() {
vectors = new OpenLayers.Layer.Vector("Vector Layer", {
displayInLayerSwitcher: false
});
map.addLayer(vectors);
box = new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
snapAngle: 90,
irregular: true,
persist: true
}
});
box.handler.callbacks.done = endDrag;
map.addControl(box);
transform = new OpenLayers.Control.TransformFeature(vectors, {
rotate: false,
irregular: true
});
transform.events.register("transformcomplete", transform, transformComplete);
map.addControl(transform);
map.events.register("moveend", map, mapMoved);
map.events.register("changebaselayer", map, htmlUrlChanged);
$("#sidebar_title").html("<%=j t 'export.start_rjs.export' %>");
$("#sidebar_content").html("<%=j render :partial => "sidebar" %>");
$("#maxlat").change(boundsChanged);
$("#minlon").change(boundsChanged);
$("#maxlon").change(boundsChanged);
$("#minlat").change(boundsChanged);
$("#drag_box").click(startDrag);
$("#add_marker").click(startMarker);
$("#format_osm").click(formatChanged);
$("#format_mapnik").click(formatChanged);
$("#format_html").click(formatChanged);
$("#mapnik_scale").change(mapnikSizeChanged);
openSidebar({ onclose: stopExport });
if (map.baseLayer.name == "Mapnik") {
$("#format_mapnik").prop("checked", true);
}
formatChanged();
setBounds(map.getExtent());
$("#viewanchor").removeClass("active");
$("#exportanchor").addClass("active");
}
function stopExport() {
$("#viewanchor").addClass("active");
$("#exportanchor").removeClass("active");
clearBox();
clearMarker();
map.events.unregister("moveend", map, mapMoved);
map.events.unregister("changebaselayer", map, htmlUrlChanged);
map.removeLayer(vectors);
}
function boundsChanged() {
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(),
$("#maxlon").val(), $("#maxlat").val());
bounds.transform(epsg4326, map.getProjectionObject());
map.events.unregister("moveend", map, mapMoved);
map.zoomToExtent(bounds);
clearBox();
drawBox(bounds);
validateControls();
mapnikSizeChanged();
}
function startDrag() {
$("#drag_box").html("<%=j t 'export.start_rjs.drag_a_box' %>");
clearBox();
box.activate();
};
function endDrag(bbox) {
var bounds = bbox.getBounds();
map.events.unregister("moveend", map, mapMoved);
setBounds(bounds);
drawBox(bounds);
box.deactivate();
validateControls();
$("#drag_box").html("<%=j t 'export.start_rjs.manually_select' %>");
}
function transformComplete(event) {
setBounds(event.feature.geometry.bounds);
validateControls();
}
function startMarker() {
$("#add_marker").html("<%=j t 'export.start_rjs.click_add_marker' %>");
if (!markerLayer) {
markerLayer = new OpenLayers.Layer.Vector("",{
displayInLayerSwitcher: false,
style: {
externalGraphic: OpenLayers.Util.getImageLocation("marker.png"),
graphicXOffset: -10.5,
graphicYOffset: -25,
graphicWidth: 21,
graphicHeight: 25
}
});
map.addLayer(markerLayer);
markerControl = new OpenLayers.Control.DrawFeature(markerLayer, OpenLayers.Handler.Point);
map.addControl(markerControl);
markerLayer.events.on({ "featureadded": endMarker });
}
markerLayer.destroyFeatures();
markerControl.activate();
return false;
}
function endMarker(event) {
markerControl.deactivate();
$("#add_marker").html("<%=j t 'export.start_rjs.change_marker' %>");
$("#marker_inputs").show();
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
var geom = event.feature.geometry.clone().transform(epsg900913, epsg4326);
$("#marker_lon").val(geom.x.toFixed(5));
$("#marker_lat").val(geom.y.toFixed(5));
htmlUrlChanged();
}
function clearMarker() {
$("#marker_lon").val("");
$("#marker_lat").val("");
$("#marker_inputs").hide();
$("#add_marker").html("<%=j t 'export.start_rjs.add_marker' %>");
if (markerLayer) {
markerControl.destroy();
markerLayer.destroy();
markerLayer = null;
markerControl = null;
}
}
function mapMoved() {
setBounds(map.getExtent());
validateControls();
}
function setBounds(bounds) {
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var decimals = Math.pow(10, Math.floor(map.getZoom() / 3));
bounds = bounds.clone().transform(map.getProjectionObject(), epsg4326);
$("#minlon").val(Math.round(bounds.left * decimals) / decimals);
$("#minlat").val(Math.round(bounds.bottom * decimals) / decimals);
$("#maxlon").val(Math.round(bounds.right * decimals) / decimals);
$("#maxlat").val(Math.round(bounds.top * decimals) / decimals);
mapnikSizeChanged();
htmlUrlChanged();
}
function clearBox() {
transform.deactivate();
vectors.destroyFeatures();
}
function drawBox(bounds) {
var feature = new OpenLayers.Feature.Vector(bounds.toGeometry());
vectors.addFeatures(feature);
transform.setFeature(feature);
}
function validateControls() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
if (bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>) {
$("#export_osm_too_large").show();
} else {
$("#export_osm_too_large").hide();
}
var max_scale = maxMapnikScale();
var disabled = true;
if ($("#format_osm").prop("checked")) {
disabled = bounds.getWidth() * bounds.getHeight() > <%= MAX_REQUEST_AREA %>;
} else if ($("#format_mapnik").prop("checked")) {
disabled = $("#mapnik_scale").val() < max_scale;
}
$("#export_commit").prop("disabled", disabled);
$("#mapnik_max_scale").html(roundScale(max_scale));
}
function htmlUrlChanged() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
var layerName = map.baseLayer.keyid;
var url = "http://<%= SERVER_URL %>/export/embed.html?bbox=" + bounds.toBBOX() + "&amp;layer=" + layerName;
var markerUrl = "";
if ($("#marker_lat").val() && $("#marker_lon").val()) {
markerUrl = "&amp;mlat=" + $("#marker_lat").val() + "&amp;mlon=" + $("#marker_lon").val();
url += "&amp;marker=" + $("#marker_lat").val() + "," + $("#marker_lon").val();
}
var html = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'+url+'" style="border: 1px solid black"></iframe>';
// Create "larger map" link
var center = bounds.getCenterLonLat();
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
bounds.transform(epsg4326, epsg900913);
var zoom = map.getZoomForExtent(bounds);
var layers = getMapLayers();
html += '<br /><small><a href="http://<%= SERVER_URL %>/?lat='+center.lat+'&amp;lon='+center.lon+'&amp;zoom='+zoom+'&amp;layers='+layers+markerUrl+'">'+"<%= html_escape_unicode(I18n.t('export.start_rjs.view_larger_map')) %>"+'</a></small>';
$("#export_html_text").val(html);
if ($("#format_html").prop("checked")) {
$("#export_html_text").prop("selected", true);
}
}
function formatChanged() {
$("#export_commit").show();
if ($("#format_osm").prop("checked")) {
$("#export_osm").show();
} else {
$("#export_osm").hide();
}
if ($("#format_mapnik").prop("checked")) {
$("#mapnik_scale").val(roundScale(map.getScale()));
$("#export_mapnik").show();
} else {
$("#export_mapnik").hide();
}
if ($("#format_html").prop("checked")) {
$("#export_html").show();
$("#export_commit").hide();
$("#export_html_text").prop("selected", true);
} else {
$("#export_html").hide();
clearMarker();
}
validateControls();
}
function maxMapnikScale() {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
bounds.transform(epsg4326, epsg900913);
return Math.floor(Math.sqrt(bounds.getWidth() * bounds.getHeight() / 0.3136));
}
function mapnikImageSize(scale) {
var bounds = new OpenLayers.Bounds($("#minlon").val(), $("#minlat").val(), $("#maxlon").val(), $("#maxlat").val());
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
bounds.transform(epsg4326, epsg900913);
return new OpenLayers.Size(Math.round(bounds.getWidth() / scale / 0.00028),
Math.round(bounds.getHeight() / scale / 0.00028));
}
function roundScale(scale) {
var precision = 5 * Math.pow(10, Math.floor(Math.LOG10E * Math.log(scale)) - 2);
return precision * Math.ceil(scale / precision);
}
function mapnikSizeChanged() {
var size = mapnikImageSize($("#mapnik_scale").val());
$("#mapnik_image_width").html(size.w);
$("#mapnik_image_height").html(size.h);
validateControls();
}
startExport();

View file

@ -1,8 +1,6 @@
<head> <head>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"/> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"/>
<%= javascript_strings %> <%= javascript_include_tag "application" %>
<%= javascript_include_tag "site" %>
<%= javascript_include_tag "menu" %>
<!--[if lt IE 7]><%= javascript_include_tag "pngfix" %><![endif]--> <!-- thanks, microsoft! --> <!--[if lt IE 7]><%= javascript_include_tag "pngfix" %><![endif]--> <!-- thanks, microsoft! -->
<%= stylesheet_link_tag "small-#{t 'html.dir'}", :media => "only screen and (max-width:641px)" %> <%= stylesheet_link_tag "small-#{t 'html.dir'}", :media => "only screen and (max-width:641px)" %>
<%= stylesheet_link_tag "large-#{t 'html.dir'}", :media => "screen and (min-width: 642px)" %> <%= stylesheet_link_tag "large-#{t 'html.dir'}", :media => "screen and (min-width: 642px)" %>
@ -13,8 +11,24 @@
<%= tag("link", { :rel => "publisher", :href => "https://plus.google.com/111953119785824514010" }) %> <%= tag("link", { :rel => "publisher", :href => "https://plus.google.com/111953119785824514010" }) %>
<%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => asset_path("osm.xml") }) %> <%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => asset_path("osm.xml") }) %>
<%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %> <%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %>
<% if flash[:piwik_goal] -%>
<%= tag("meta", :name => "piwik-goal", :content => flash[:piwik_goal]) %>
<% end -%>
<%= style_rules %> <%= style_rules %>
<%= yield :head %> <%= yield :head %>
<%= csrf_meta_tag %> <%= csrf_meta_tag %>
<script type="text/javascript">
I18n.defaultLocale = "<%= I18n.default_locale %>";
I18n.locale = "<%= I18n.locale %>";
I18n.fallbacks = true;
<% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %>
OSM.home = <%= { :lat => @user.home_lat, :lon => @user.home_lon }.to_json.html_safe %>;
<% end %>
<% if session[:location] %>
OSM.location = <%= session[:location].to_json.html_safe %>;
<% end %>
</script>
<title><%= t 'layouts.project_name.title' %><%= ' | '+ @title if @title %></title> <title><%= t 'layouts.project_name.title' %><%= ' | '+ @title if @title %></title>
</head> </head>

View file

@ -1,14 +0,0 @@
<script type="text/javascript">
var _paq = _paq || [];
(function(){ var u="<%= request.protocol %><%= PIWIK_LOCATION %>/";
_paq.push(['setSiteId', <%= PIWIK_SITE %>]);
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
<% if flash[:piwik_goal] -%>
_paq.push(['setSiteId', <%= flash[:piwik_goal] %>);
<% end -%>
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js';
s.parentNode.insertBefore(g,s); })();
</script>
<noscript><p><img src="<%= request.protocol %><%= PIWIK_LOCATION %>/piwik.php?idsite=<%= PIWIK_SITE %>" style="border:0" alt="" /></p></noscript>

View file

@ -1,88 +1,92 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= I18n.locale %>" lang="<%= I18n.locale %>" dir="<%= t'html.dir' %>"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= I18n.locale %>" lang="<%= I18n.locale %>" dir="<%= t'html.dir' %>">
<%= render :partial => "layouts/head" %> <%= render :partial => "layouts/head" %>
<body class="<%= params[:controller] %>"> <body class="<%= params[:controller] %> <%= params[:controller] %>-<%= params[:action] %>">
<div id="small-title"> <div id="small-title">
<%= link_to(image_tag("osm_logo.png", :size => "16x16", :border => 0, :alt => t('layouts.logo.alt_text')), :controller => 'site', :action => 'index') %> <%= link_to(image_tag("osm_logo.png", :size => "16x16", :alt => t('layouts.logo.alt_text')), root_path) %>
<h1><%= t 'layouts.project_name.h1' %></h1> <h1><%= t 'layouts.project_name.h1' %></h1>
</div> </div>
<div id="content" class="<%= params[:controller] %>_<%= params[:action] %>"> <div id="content">
<%= render :partial => "layouts/flash", :locals => { :flash => flash } %> <%= render :partial => "layouts/flash", :locals => { :flash => flash } %>
<%= yield %> <%= yield %>
</div> </div>
<div id='top-bar'> <div id='top-bar'>
<span id="greeting"> <span id="greeting">
<% if @user and @user.id %> <% if @user and @user.id %>
<span id="full-greeting"><%= raw(t 'layouts.welcome_user', :user_link => (link_to h(@user.display_name), {:controller => 'user', :action => 'view', :display_name => @user.display_name}, :title => t('layouts.welcome_user_link_tooltip'))) %></span> <span id="full-greeting"><%= raw(t 'layouts.welcome_user', :user_link => (link_to h(@user.display_name), user_path(:display_name => @user.display_name), :title => t('layouts.welcome_user_link_tooltip'))) %></span>
<span id="small-greeting"><%= link_to t('layouts.welcome_user_link_tooltip'), {:controller => 'user', :action => 'view', :display_name => @user.display_name} %></span> | <span id="small-greeting"><%= link_to t('layouts.welcome_user_link_tooltip'), user_path(:display_name => @user.display_name) %></span> |
<%= yield :greeting %> <%= yield :greeting %>
<%= render :partial => "layouts/inbox" %> | <%= render :partial => "layouts/inbox" %> |
<%= link_to t('layouts.logout'), {:controller => 'user', :action => 'logout', :session => request.session_options[:id], :referer => request.fullpath}, {:id => 'logoutanchor', :title => t('layouts.logout_tooltip')}%> <%= link_to t('layouts.logout'), logout_path(:session => request.session_options[:id], :referer => request.fullpath), {:id => 'logoutanchor', :title => t('layouts.logout_tooltip')}%>
<% else %> <% else %>
<%= link_to t('layouts.log_in'), {:controller => 'user', :action => 'login', :referer => request.fullpath}, {:id => 'loginanchor', :title => t('layouts.log_in_tooltip')} %> | <%= link_to t('layouts.log_in'), login_path(:referer => request.fullpath), {:id => 'loginanchor', :title => t('layouts.log_in_tooltip')} %> |
<%= link_to t('layouts.sign_up'), {:controller => 'user', :action => 'new'}, {:id => 'registeranchor', :title => t('layouts.sign_up_tooltip')} %> <%= link_to t('layouts.sign_up'), user_new_path, {:id => 'registeranchor', :title => t('layouts.sign_up_tooltip')} %>
<% end %> <% end %>
</span> </span>
<ul id="tabnav"> <ul id="tabnav">
<% <li><%= link_to t('layouts.view'), root_path, {
viewclass = 'geolink llz layers' :id => 'viewanchor',
editclass = 'geolink llz object minzoom13 disabled' :title => t('layouts.view_tooltip'),
historyclass = 'geolink bbox minzoom11' :class => 'geolink llz layers'
exportclass = 'geolink llz layers' } %></li>
viewclass += ' active' if params['controller'] == 'site' and params['action'] == 'index' <li><%= link_to h(t('layouts.edit')) + content_tag(:span, "▾", :class => "menuicon"), edit_path, {
editclass += ' active' if params['controller'] == 'site' and params['action'] == 'edit' :id => 'editanchor',
historyclass += ' active' if params['controller'] == 'changeset' and params['action'] == 'list' :title => t('javascripts.site.edit_tooltip'),
exportclass += ' active' if params['controller'] == 'site' and params['action'] == 'export' :data => { :minzoom => 13 },
%> :class => 'geolink llz object disabled'
<li><%= link_to t('layouts.view'), {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => t('layouts.view_tooltip'), :class => viewclass} %></li> } %></li>
<li><%= link_to h(t('layouts.edit')) + content_tag(:span, "▾", :class => "menuicon"), {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => t('javascripts.site.edit_tooltip'), :class => editclass} %></li> <li><%= link_to t('layouts.history'), browse_changesets_path, {
<li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list' }, {:id => 'historyanchor', :title => t('javascripts.site.history_tooltip'), :class => historyclass} %></li> :id => 'historyanchor',
<li><%= link_to t('layouts.export'), {:controller => 'site', :action => 'export'}, {:id => 'exportanchor', :title => t('layouts.export_tooltip'), :class => exportclass} %></li> :data => { :minzoom => 11 },
:title => t('javascripts.site.history_tooltip'),
:class => 'geolink bbox'
} %></li>
<li><%= link_to t('layouts.export'), export_path, {
:id => 'exportanchor',
:title => t('layouts.export_tooltip'),
:class => 'geolink llz layers'
} %></li>
</ul> </ul>
</div> </div>
<div id="editmenu" class="menu"> <div id="editmenu" class="menu">
<ul> <ul>
<% Editors::ALL_EDITORS.each do |editor| %> <% Editors::ALL_EDITORS.each do |editor| %>
<li><%= link_to t('layouts.edit_with', :editor => t("editor.#{editor}.description")), {:controller => 'site', :action => 'edit', :editor => editor}, {:id => editor + 'anchor', :class => "geolink llz object"} %></li> <li><%= link_to t('layouts.edit_with',
:editor => t("editor.#{editor}.description")),
edit_path(:editor => editor), {
:id => editor + 'anchor',
:class => "geolink llz object"
} %></li>
<% end %> <% end %>
<%= yield :editmenu %> <%= yield :editmenu %>
</ul> </ul>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
createMenu("editanchor", "editmenu", "left"); createMenu("editanchor", "editmenu", "left");
</script> </script>
<div id="left"> <div id="left">
<div id="logo"> <div id="logo">
<%= link_to(image_tag("osm_logo.png", :size => "120x120", :border => 0, :alt => t('layouts.logo.alt_text')), :controller => 'site', :action => 'index') %><br/> <%= link_to(image_tag("osm_logo.png",
:size => "120x120",
:alt => t('layouts.logo.alt_text')),
root_path) %><br/>
<h1><%= t 'layouts.project_name.h1' %></h1> <h1><%= t 'layouts.project_name.h1' %></h1>
<h2 class="nowrap"><%= t('layouts.tag_line') %></h2> <h2 class="nowrap"><%= t('layouts.tag_line') %></h2>
</div> </div>
<%= yield :optionals %> <%= yield :optionals %>
<% unless @user %> <% unless @user %>
<div class="sidebar-copy intro"> <div class="sidebar-copy intro">
<p> <p><%= t 'layouts.intro_1' %></p>
<%= t 'layouts.intro_1' %>
</p>
<p> <p>
<%= t 'layouts.intro_2_html', <%= t 'layouts.intro_2_html',
:download => link_to(t('layouts.intro_2_download'), "http://planet.openstreetmap.org/"), :download => link_to(t('layouts.intro_2_download'), "http://planet.openstreetmap.org/"),
:use => link_to(t('layouts.intro_2_use'), t('layouts.intro_2_use_url')), :use => link_to(t('layouts.intro_2_use'), t('layouts.intro_2_use_url')),
:license => link_to(t('layouts.intro_2_license'), :license => link_to(t('layouts.intro_2_license'), copyright_path),
url_for({:controller => 'site', :action => 'copyright'})), :create_account => link_to(t('layouts.intro_2_create_account'), user_new_path)
:create_account => link_to(t('layouts.intro_2_create_account'),
url_for({:controller => 'user', :action => 'new'}))
%> %>
</p> </p>
</div> </div>
<% end %> <% end %>
<% if STATUS == :database_offline or STATUS == :api_offline %> <% if STATUS == :database_offline or STATUS == :api_offline %>
<div class="sidebar-alert"> <div class="sidebar-alert">
<p><%= t 'layouts.osm_offline' %></p> <p><%= t 'layouts.osm_offline' %></p>
@ -92,68 +96,56 @@
<p><%= t 'layouts.osm_read_only' %></p> <p><%= t 'layouts.osm_read_only' %></p>
</div> </div>
<% end %> <% end %>
<% if false %> <% if false %>
<div class="sidebar-notice"> <div class="sidebar-notice">
<p><%= raw t 'layouts.donate', :link => "<a href=\"http://donate.openstreetmap.org/\">#{t('layouts.donate_link_text')}</a>" %></p> <p><%= raw t 'layouts.donate', :link => "<a href=\"http://donate.openstreetmap.org/\">#{t('layouts.donate_link_text')}</a>" %></p>
</div> </div>
<% end %> <% end %>
<div id="left_menu" class="left_menu"> <div id="left_menu" class="left_menu">
<ul> <ul>
<li><%= t'layouts.help' %> <li><%= t'layouts.help' %>
<ul> <ul>
<li><%= link_to(t('layouts.help_centre'), t('layouts.help_url'), :title => t('layouts.help_title')) %></li> <li><%= link_to(t('layouts.help_centre'), t('layouts.help_url'), :title => t('layouts.help_title')) %></li>
<li><%= link_to(t('layouts.documentation'), t('layouts.wiki_url'), :title => t('layouts.documentation_title')) %></li> <li><%= link_to(t('layouts.documentation'), t('layouts.wiki_url'), :title => t('layouts.documentation_title')) %></li>
<li><%= link_to t('layouts.copyright'), {:controller => 'site', :action => 'copyright'} %></li> <li><%= link_to t('layouts.copyright'), copyright_path %></li>
</ul> </ul>
</li> </li>
<li><%= t'layouts.community' %> <li><%= t'layouts.community' %>
<ul> <ul>
<li><a href="http://blogs.openstreetmap.org/" title="<%= t 'layouts.community_blogs_title' %>"><%= t 'layouts.community_blogs' %></a></li> <li><a href="http://blogs.openstreetmap.org/" title="<%= t 'layouts.community_blogs_title' %>"><%= t 'layouts.community_blogs' %></a></li>
<li><a href="http://www.osmfoundation.org" title="<%= t 'layouts.foundation_title' %>"><%= t 'layouts.foundation' %></a></li> <li><a href="http://www.osmfoundation.org" title="<%= t 'layouts.foundation_title' %>"><%= t 'layouts.foundation' %></a></li>
<li><%= link_to(t('layouts.user_diaries'), { <li><%= link_to(t('layouts.user_diaries'), diary_path, {
:controller => 'diary_entry', :title => t('layouts.user_diaries_tooltip')
:action => 'list', }) %></li>
:display_name => nil </ul>
}, {
:title => t('layouts.user_diaries_tooltip')
}) %></li>
</ul>
</li> </li>
<li><%= link_to t('layouts.gps_traces'), {:controller => 'trace', :action => 'list', :display_name => nil, :tag => nil, :page => nil}, {:id => 'traceanchor', :title => t('layouts.gps_traces_tooltip') } %></li> <li><%= link_to t('layouts.gps_traces'), traces_path, {
:id => 'traceanchor',
:title => t('layouts.gps_traces_tooltip')
} %></li>
<%= yield :left_menu %> <%= yield :left_menu %>
</ul> </ul>
</div> </div>
<div id="sotm"> <div id="sotm">
<%= link_to image_tag("sotm.png", :alt => t('layouts.sotm2012'), :title => t('layouts.sotm2012'), :border => "0"), "http://stateofthemap.org/register-now/" %> <%= link_to image_tag("sotmpdx.png",
:alt => t('layouts.sotm2012'),
:title => t('layouts.sotm2012'),
:border => "0"), "http://stateofthemap.us/" %>
</div> </div>
<div class="donate"> <div class="donate">
<a href="http://donate.openstreetmap.org/" title="<%= h(t('layouts.make_a_donation.title')) %>"><%= h(t('layouts.make_a_donation.text')) %></a> <a href="http://donate.openstreetmap.org/" title="<%= h(t('layouts.make_a_donation.title')) %>"><%= h(t('layouts.make_a_donation.text')) %></a>
</div> </div>
<div class='sidebar-copy'> <div class='sidebar-copy'>
<p class='deemphasize'><%= t 'layouts.partners_html', <p class='deemphasize'><%= t 'layouts.partners_html',
:ucl => link_to(t('layouts.partners_ucl'), "http://www.vr.ucl.ac.uk"), :ucl => link_to(t('layouts.partners_ucl'), "http://www.vr.ucl.ac.uk"),
:ic => link_to(t('layouts.partners_ic'), "http://www.imperial.ac.uk/"), :ic => link_to(t('layouts.partners_ic'), "http://www.imperial.ac.uk/"),
:bytemark => link_to(t('layouts.partners_bytemark'), "http://www.bytemark.co.uk"), :bytemark => link_to(t('layouts.partners_bytemark'), "http://www.bytemark.co.uk"),
:partners => link_to(t('layouts.partners_partners'), t('layouts.partners_url')) %> :partners => link_to(t('layouts.partners_partners'), t('layouts.partners_url')) %>
</p> </p>
</div> </div>
</div> </div>
<script type="text/javascript">
$(document).ready(function () {
var auth_token = $("meta[name=csrf-token]").attr("content");
$("form input[name=authenticity_token]").val(auth_token);
$("textarea").autoGrow();
});
</script>
<% if defined?(PIWIK_LOCATION) and defined?(PIWIK_SITE) -%> <% if defined?(PIWIK_LOCATION) and defined?(PIWIK_SITE) -%>
<%= render :partial => "layouts/piwik" %> <noscript><p><img src="<%= request.protocol %><%= PIWIK_LOCATION %>/piwik.php?idsite=<%= PIWIK_SITE %>" style="border:0" alt="" /></p></noscript>
<% end -%> <% end -%>
</body> </body>
</html> </html>

View file

@ -1,31 +1,3 @@
<script type="text/javascript">
$(document).ready(function () {
var updateMapKey = function () {
$("#sidebar_content").load("<%= url_for :action => :key %>", {
layer: map.baseLayer.keyid,
zoom: map.getZoom()
});
}
var closeMapKey = function () {
map.events.unregister("zoomend", map, updateMapKey);
map.events.unregister("changelayer", map, updateMapKey);
}
$("#open_map_key").click(function () {
updateMapKey();
openSidebar({
title: "<%= t('site.key.map_key') %>",
onclose: closeMapKey
});
map.events.register("zoomend", map, updateMapKey);
map.events.register("changelayer", map, updateMapKey);
});
});
</script>
<% content_for :left_menu do %> <% content_for :left_menu do %>
<li><%= link_to t("site.key.map_key"), "#", :id => "open_map_key", :title => t("site.key.map_key_tooltip") %></li> <li><%= link_to t("site.key.map_key"), {:action => :key}, :id => "open_map_key", :title => t("site.key.map_key_tooltip") %></li>
<% end %> <% end %>

View file

@ -42,7 +42,8 @@
// 700,600 for fixed size, 100%,100% for resizable // 700,600 for fixed size, 100%,100% for resizable
} }
doSWF(<%= @lat || 'null' %>,<%= @lon || 'null' %>,<%= @zoom %>); var params = OSM.mapParams();
doSWF(params.lat, params.lon, params.zoom || 17);
$(document).ready(function () { $(document).ready(function () {
$("body").on("click", "a.set_position", function () { $("body").on("click", "a.set_position", function () {

View file

@ -69,8 +69,12 @@
<% elsif params[:way] -%> <% elsif params[:way] -%>
<% bbox = Way.find(params[:way]).bbox.to_unscaled -%> <% bbox = Way.find(params[:way]).bbox.to_unscaled -%>
doSWF(<%= bbox.centre_lat %>,<%= bbox.centre_lon %>,16); doSWF(<%= bbox.centre_lat %>,<%= bbox.centre_lon %>,16);
<% elsif params[:gpx] -%>
<% trace = Trace.find(params[:gpx]) -%>
doSWF(<%= trace.latitude %>,<%= trace.longitude %>,16);
<% else -%> <% else -%>
doSWF(<%= @lat || 'null' %>,<%= @lon || 'null' %>,<%= @zoom %>); var params = OSM.mapParams();
doSWF(params.lat, params.lon, params.zoom || 17);
<% end -%> <% end -%>
$(document).ready(function () { $(document).ready(function () {

View file

@ -1,51 +0,0 @@
<script type="text/javascript">
var brokenContentSize = $("#content").prop("offsetWidth") == 0;
function resizeContent() {
var content = $("#content");
var leftMargin = parseInt(content.css("left"));
var rightMargin = parseInt(content.css("right"));
var bottomMargin = parseInt(content.css("bottom"));
<% if t('html.dir') == "ltr" -%>
content.width($(window).width() - content.prop("offsetLeft") - rightMargin);
<% else -%>
content.width($(window).width() - content.prop("offsetRight") - leftMargin);
<% end -%>
content.height($(window).height() - content.prop("offsetTop") - bottomMargin);
}
function resizeMap() {
var content_width = $("#content").width();
var content_height = $("#content").height();
var sidebar_width = 0;
var left_border = parseFloat($("#map").css("border-left-width"));
var right_border = parseFloat($("#map").css("border-right-width"));
var top_border = parseFloat($("#map").css("border-top-width"));
var bottom_border = parseFloat($("#map").css("border-bottom-width"));
$("#sidebar:visible").each(function () {
sidebar_width = sidebar_width + $(this).outerWidth(true);
});
<% if t('html.dir') == "ltr" -%>
$("#map").css("left", (sidebar_width) + "px");
<% else -%>
$("#map").css("right", (sidebar_width) + "px");
<% end -%>
$("#map").width(content_width - sidebar_width - left_border - right_border);
$("#map").height(content_height - top_border - bottom_border);
<% if params[:controller] == "site" and params[:action] == "index" -%>
map.updateSize();
<% end -%>
}
function handleResize() {
if (brokenContentSize) {
resizeContent();
}
resizeMap();
}
</script>

View file

@ -2,51 +2,9 @@
<table class="sidebar_title" width="100%"> <table class="sidebar_title" width="100%">
<tr> <tr>
<td id="sidebar_title"><% t 'site.sidebar.search_results' %></td> <td id="sidebar_title"><% t 'site.sidebar.search_results' %></td>
<td id="sidebar_close"><a href="javascript:closeSidebar()"><%= t 'site.sidebar.close' %></a></td> <td id="sidebar_close"><a class="sidebar_close" href="#"><%= t 'site.sidebar.close' %></a></td>
</tr> </tr>
</table> </table>
<div id="sidebar_content"> <div id="sidebar_content">
</div> </div>
</div> </div>
<script type="text/javascript">
<!--
var onclose;
function openSidebar(options) {
options = options || {};
if (onclose) {
onclose();
onclose = null;
}
if (options.title) { $("#sidebar_title").html(options.title); }
if (options.width) { $("#sidebar").width(options.width); }
else { $("#sidebar").width("30%"); }
$("#sidebar").css("display", "block");
<%= onopen %>
onclose = options.onclose;
}
function closeSidebar() {
$("#sidebar").css("display", "none");
<%= onclose %>
if (onclose) {
onclose();
onclose = null;
}
}
function updateSidebar(title, content) {
$("#sidebar_title").html(title);
$("#sidebar_content").html(content);
}
// -->
</script>

View file

@ -1,15 +1,3 @@
<p id="cc_logo">
<%= link_to(
image_tag("cc_button.png",
:alt => t('layouts.license.alt'),
:border => 0,
:width => 88,
:height => 31,
:title => t('layouts.license.title')),
"http://creativecommons.org/licenses/by-sa/2.0/",
{ :rel => "license" }) %>
</p>
<% if @locale == 'en' %> <% if @locale == 'en' %>
<!-- Maybe ease foreigners back to their native page --> <!-- Maybe ease foreigners back to their native page -->
<% if t('license_page.legal_babble', :locale => I18n.locale) != t('license_page.legal_babble', :locale => :en) %> <% if t('license_page.legal_babble', :locale => I18n.locale) != t('license_page.legal_babble', :locale => :en) %>
@ -45,6 +33,7 @@
<p><%= t "license_page.legal_babble.intro_1_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.intro_1_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.intro_2_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.intro_2_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.intro_3_html", :locale => @locale %></p>
<h3><%= t "license_page.legal_babble.credit_title_html", :locale => @locale %></h3> <h3><%= t "license_page.legal_babble.credit_title_html", :locale => @locale %></h3>
<p><%= t "license_page.legal_babble.credit_1_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.credit_1_html", :locale => @locale %></p>
@ -53,20 +42,21 @@
<h3><%= t "license_page.legal_babble.more_title_html", :locale => @locale %></h3> <h3><%= t "license_page.legal_babble.more_title_html", :locale => @locale %></h3>
<p><%= t "license_page.legal_babble.more_1_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.more_1_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.more_2_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.more_2_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.more_3_html", :locale => @locale %></p>
<h3><%= t "license_page.legal_babble.contributors_title_html", :locale => @locale %></h3> <h3><%= t "license_page.legal_babble.contributors_title_html", :locale => @locale %></h3>
<p><%= t "license_page.legal_babble.contributors_intro_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.contributors_intro_html", :locale => @locale %></p>
<ul id="contributors"> <ul id="contributors">
<li><%= t "license_page.legal_babble.contributors_au_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_at_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_at_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_ca_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_ca_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_fr_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_fr_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_nl_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_nl_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_nz_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_nz_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_pl_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_za_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_za_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_gb_html", :locale => @locale %></li> <li><%= t "license_page.legal_babble.contributors_gb_html", :locale => @locale %></li>
</ul> </ul>
<p><%= t "license_page.legal_babble.contributors_footer_1_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.contributors_footer_1_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.contributors_footer_2_html", :locale => @locale %></p> <p><%= t "license_page.legal_babble.contributors_footer_2_html", :locale => @locale %></p>
<h3><%= t "license_page.legal_babble.infringement_title_html", :locale => @locale %></h3>
<p><%= t "license_page.legal_babble.infringement_1_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.infringement_2_html", :locale => @locale %></p>

View file

@ -15,9 +15,8 @@
<% end %> <% end %>
<% end %> <% end %>
<%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> <%= render :partial => 'sidebar' %>
<%= render :partial => 'search' %> <%= render :partial => 'search' %>
<%= render :partial => 'resize' %>
<%= render :partial => preferred_editor %> <%= render :partial => preferred_editor %>
@ -27,11 +26,11 @@
$("#greeting").hide(); $("#greeting").hide();
$("#tabnav").hide(); $("#tabnav").hide();
$("#content").css("top", "10px"); $("#content").css("top", "0px");
<% if t('html.dir') == "ltr" -%> <% if t('html.dir') == "ltr" -%>
$("#content").css("left", "10px"); $("#content").css("left", "0px");
<% else -%> <% else -%>
$("#content").css("right", "10px"); $("#content").css("right", "0px");
<% end -%> <% end -%>
handleResize(); handleResize();
@ -42,11 +41,11 @@
$("#greeting").show(); $("#greeting").show();
$("#tabnav").show(); $("#tabnav").show();
$("#content").css("top", "35px"); $("#content").css("top", "30px");
<% if t('html.dir') == "ltr" -%> <% if t('html.dir') == "ltr" -%>
$("#content").css("left", "192px"); $("#content").css("left", "185px");
<% else -%> <% else -%>
$("#content").css("right", "192px"); $("#content").css("right", "185px");
<% end -%> <% end -%>
handleResize(); handleResize();

View file

@ -7,11 +7,11 @@
<% unless STATUS == :api_offline or STATUS == :database_offline -%> <% unless STATUS == :api_offline or STATUS == :database_offline -%>
<% content_for :editmenu do -%> <% content_for :editmenu do -%>
<li><%= link_to t("browse.start_rjs.notes_layer_name"), "#", :id => "show_notes" %></li> <li><%= link_to t("browse.start_rjs.notes_layer_name"), "#", :id => "show_notes" %></li>
<li><%= link_to t("browse.start_rjs.data_layer_name"), "#", :id => "show_data" %></li> <li><%= link_to t("browse.start_rjs.data_layer_name"), { :controller => :browse, :action => :start }, :id => "show_data" %></li>
<% end -%> <% end -%>
<% end -%> <% end -%>
<%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> <%= render :partial => 'sidebar' %>
<%= render :partial => 'key' %> <%= render :partial => 'key' %>
<%= render :partial => 'search' %> <%= render :partial => 'search' %>
@ -40,104 +40,15 @@
<td class="attribution_project"><%= t'site.index.license.project_url' %></td> <td class="attribution_project"><%= t'site.index.license.project_url' %></td>
</tr> </tr>
<tr> <tr>
<td colspan="2" class="attribution_notice"><%= <td colspan="2" class="attribution_notice"><%= t'site.index.license.copyright' %></td>
t'site.index.license.notice',
:license_name => t('site.index.license.license_name'),
:project_name => t('site.index.license.project_name')
%></td>
</tr> </tr>
</table> </table>
</div> </div>
<%
if params[:mlon] and params[:mlat]
marker = true
mlon = params[:mlon].to_f
mlat = params[:mlat].to_f
end
if params[:node] or params[:way] or params[:relation]
object = true
object_zoom = true
if params[:node]
object_type = 'node'
object_id = params[:node].to_i
elsif params[:way]
object_type = 'way'
object_id = params[:way].to_i
elsif params[:relation]
object_type = 'relation'
object_id = params[:relation].to_i
end
end
# Decide on a lat lon to initialise the map with. Various ways of doing this
if params[:bbox]
bbox = true
minlon, minlat, maxlon, maxlat = params[:bbox].split(",").collect { |c| c.to_f }
layers = params[:layers]
box = true if params[:box] == "yes"
object_zoom = false
elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat]
bbox = true
minlon = params[:minlon].to_f
minlat = params[:minlat].to_f
maxlon = params[:maxlon].to_f
maxlat = params[:maxlat].to_f
layers = params[:layers]
box = true if params[:box]=="yes"
object_zoom = false
elsif params[:lon] and params[:lat]
lon = params[:lon].to_f
lat = params[:lat].to_f
zoom = params.fetch(:zoom, 5).to_i
layers = params[:layers]
object_zoom = false
elsif params[:mlon] and params[:mlat]
lon = params[:mlon].to_f
lat = params[:mlat].to_f
zoom = params.fetch(:zoom, 12).to_i
layers = params[:layers]
object_zoom = false
elsif cookies.key?("_osm_location")
lon,lat,zoom,layers = cookies["_osm_location"].split("|")
elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil?
lon = @user.home_lon
lat = @user.home_lat
zoom = 10
else
unless STATUS == :database_readonly or STATUS == :database_offline
session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location]
end
if session[:location]
bbox = true
minlon = session[:location][:minlon]
minlat = session[:location][:minlat]
maxlon = session[:location][:maxlon]
maxlat = session[:location][:maxlat]
else
lon = -0.1
lat = 51.5
zoom = params.fetch(:zoom, 5).to_i
end
layers = params[:layers]
end
%>
<%= javascript_include_tag 'openlayers.js' %>
<%= javascript_include_tag 'map.js' %>
<%= javascript_include_tag 'notes.js' %>
<%= render :partial => 'resize' %>
<script type="text/javascript"> <script type="text/javascript">
var marker; var marker;
var map; var map;
var params = OSM.mapParams();
OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
<% if @user %> <% if @user %>
var loginName = "<%= @user.display_name %>" var loginName = "<%= @user.display_name %>"
@ -160,44 +71,37 @@ end
<% end -%> <% end -%>
<% end %> <% end %>
<% unless object_zoom %> if (!params.object_zoom) {
<% if bbox %> if (params.bbox) {
var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>); var bbox = new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat);
map.zoomToExtent(proj(bbox)); map.zoomToExtent(proj(bbox));
<% if box %> if (params.box) {
$(window).load(function() { addBoxToMap(bbox) }); $(window).load(function() { addBoxToMap(bbox) });
<% end %> }
<% else %> } else {
var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); setMapCenter(new OpenLayers.LonLat(params.lon, params.lat), params.zoom);
<% if params[:scale].to_f > 0 then -%> }
var zoom = <%= scale_to_zoom params[:scale] %>; }
<% else -%>
var zoom = <%= zoom %>;
<% end -%>
setMapCenter(centre, zoom); if (params.layers) {
<% end %> setMapLayers(params.layers);
<% end %> }
<% if !layers.nil? and !layers.empty? %> if (params.marker) {
setMapLayers("<%= layers %>"); marker = addMarkerToMap(new OpenLayers.LonLat(params.mlon, params.mlat));
<% end %> }
<% if marker %> if (params.object) {
marker = addMarkerToMap(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)); var url = "/api/" + OSM.API_VERSION + "/" + params.object_type + "/" + params.object_id;
<% end %>
<% if object %> if (params.object_type != "node") {
var url = "/api/<%= "#{API_VERSION}" %>/<%= object_type %>/<%= object_id %>";
<% if object_type != "node" %>
url += "/full"; url += "/full";
<% end %> }
$(window).load(function() { addObjectToMap(url, <%= object_zoom %>) }); $(window).load(function() { addObjectToMap(url, params.object_zoom) });
<% end %> }
map.events.register("moveend", map, updateLocation); map.events.register("moveend", map, updateLocation);
map.events.register("changelayer", map, updateLocation); map.events.register("changelayer", map, updateLocation);
@ -211,8 +115,11 @@ end
map.noteLayer.setVisibility(true); map.noteLayer.setVisibility(true);
}); });
$("#show_data").click(function () { $("#show_data").click(function (e) {
$.ajax({ url: "<%= url_for :controller => :browse, :action => :start %>" }); $.ajax({ url: $(this).attr('href'), success: function (sidebarHtml) {
startBrowse(sidebarHtml);
}});
e.preventDefault();
}); });
$("body").on("click", "a.set_position", function () { $("body").on("click", "a.set_position", function () {
@ -249,18 +156,11 @@ end
var layers = getMapLayers(); var layers = getMapLayers();
var extents = unproj(map.getExtent()); var extents = unproj(map.getExtent());
var expiry = new Date(); var expiry = new Date();
var objtype;
var objid;
<% if object %> updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, params.object_type, params.object_id);
objtype = "<%= object_type %>";
objid = <%= object_id %>;
<% end %>
updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, objtype, objid);
expiry.setYear(expiry.getFullYear() + 10); expiry.setYear(expiry.getFullYear() + 10);
document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString(); $.cookie("_osm_location", [lonlat.lon, lonlat.lat, zoom, layers].join("|"), {expires: expiry});
} }
function remoteEditHandler(event) { function remoteEditHandler(event) {
@ -304,12 +204,14 @@ end
$(document).ready(function () { $(document).ready(function () {
$("#exportanchor").click(function (e) { $("#exportanchor").click(function (e) {
$.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); $.ajax({ url: "<%= url_for :controller => :export, :action => :start %>", success: function (sidebarHtml) {
startExport(sidebarHtml);
}});
e.preventDefault(); e.preventDefault();
}); });
<% if params[:action] == 'export' -%> <% if params[:export] -%>
$.ajax({ url: "<%= url_for :controller => :export, :action => :start %>" }); $("#exportanchor").click();
<% end -%> <% end -%>
<% if params[:query] -%> <% if params[:query] -%>

View file

@ -1,19 +1,15 @@
<div id="mapkey"> <div id="mapkey">
<table class="mapkey-table"> <table class="mapkey-table">
<% YAML.load_file("#{Rails.root}/config/key.yml").each do |name,data| %> <% YAML.load_file("#{Rails.root}/config/key.yml").each do |name,data| %>
<% if params[:layer] == name %> <% data.each do |entry| %>
<% data.each do |entry| %> <tr class="mapkey-table-entry" data-layer="<%= name %>" data-zoom-min="<%= entry['min_zoom'] %>" data-zoom-max="<%= entry['max_zoom'] %>">
<% if params[:zoom].to_i >= entry['min_zoom'] && params[:zoom].to_i <= entry['max_zoom'] %> <td class="mapkey-table-key">
<tr> <%= image_tag "key/#{name}/#{entry['image']}" %>
<td class="mapkey-table-key" align="center"> </td>
<%= image_tag "key/#{name}/#{entry['image']}" %> <td class="mapkey-table-value">
</td> <%= [*t("site.key.table.entry.#{entry['name']}")].to_sentence %>
<td class="mapkey-table-value"> </td>
<%= [*t("site.key.table.entry.#{entry['name']}")].to_sentence %> </tr>
</td>
</tr>
<% end %>
<% end %>
<% end %> <% end %>
<% end %> <% end %>
</table> </table>

View file

@ -13,15 +13,10 @@ else
end end
%> %>
<%= javascript_include_tag 'openlayers.js' %>
<%= javascript_include_tag 'map.js' %>
<script type="text/javascript"> <script type="text/javascript">
<!-- <!--
var marker; var marker;
OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
function init(){ function init(){
var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>); var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
<% if params[:scale].to_f > 0 then -%> <% if params[:scale].to_f > 0 then -%>

View file

@ -82,16 +82,20 @@
<% end %> <% end %>
</div> </div>
<p><b><%= t 'user.view.mapper since' %></b> <%= l @this_user.creation_time, :format => :friendly %> <%= t 'user.view.ago', :time_in_words_ago => time_ago_in_words(@this_user.creation_time) %></p> <div id="description"><%= @this_user.description.to_html %></div>
<p><b><%= t 'user.view.ct status' %></b> <p class='deemphasize'><small>
<%= t 'user.view.mapper since' %> <%= l @this_user.creation_time.to_date, :format => :long %>
/
<%= t 'user.view.ct status' %>
<% if not @this_user.terms_agreed.nil? -%> <% if not @this_user.terms_agreed.nil? -%>
<%= t 'user.view.ct accepted', :ago =>time_ago_in_words(@this_user.terms_agreed) %> <%= t 'user.view.ct accepted', :ago =>time_ago_in_words(@this_user.terms_agreed) %>
<% elsif not @this_user.terms_seen? -%> <% elsif not @this_user.terms_seen? -%>
<%= t 'user.view.ct undecided' %> <%= t 'user.view.ct undecided' %>
<% else -%> <% else -%>
<%= t 'user.view.ct declined' %> <%= t 'user.view.ct declined' %>
<% end -%> <% end -%>
</small>
</p> </p>
<% if @user and @user.administrator? -%> <% if @user and @user.administrator? -%>
@ -103,10 +107,6 @@
<p><b><%= t 'user.view.spam score' %></b> <%= @this_user.spam_score %></p> <p><b><%= t 'user.view.spam score' %></b> <%= @this_user.spam_score %></p>
<% end -%> <% end -%>
<h3><%= t 'user.view.description' %></h3>
<div id="description"><%= @this_user.description.to_html %></div>
<% if @user and @this_user.id == @user.id %> <% if @user and @this_user.id == @user.id %>
<div id="map" class="user_map"> <div id="map" class="user_map">
<% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %> <% if @this_user.home_lat.nil? or @this_user.home_lon.nil? %>

View file

@ -56,8 +56,7 @@ OpenStreetMap::Application.configure do
# config.action_controller.asset_host = "http://assets.example.com" # config.action_controller.asset_host = "http://assets.example.com"
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( map.js menu.js pngfix.js site.js swfobject.js ) config.assets.precompile += %w( pngfix.js swfobject.js )
config.assets.precompile += %w( openlayers.js )
config.assets.precompile += %w( large-ltr.css small-ltr.css print-ltr.css ) config.assets.precompile += %w( large-ltr.css small-ltr.css print-ltr.css )
config.assets.precompile += %w( large-rtl.css small-rtl.css print-rtl.css ) config.assets.precompile += %w( large-rtl.css small-rtl.css print-rtl.css )
config.assets.precompile += %w( browse.css theme/openstreetmap/style.css ) config.assets.precompile += %w( browse.css theme/openstreetmap/style.css )

View file

@ -3,6 +3,9 @@ defaults: &defaults
server_url: "www.openstreetmap.org" server_url: "www.openstreetmap.org"
# The generator # The generator
generator: "OpenStreetMap server" generator: "OpenStreetMap server"
copyright_owner: "OpenStreetMap and contributors"
attribution_url: "http://www.openstreetmap.org/copyright"
license_url: "http://opendatacommons.org/licenses/odbl/1-0/"
# Sender addresses for emails # Sender addresses for emails
email_from: "OpenStreetMap <webmaster@openstreetmap.org>" email_from: "OpenStreetMap <webmaster@openstreetmap.org>"
email_return_path: "bounces@openstreetmap.org" email_return_path: "bounces@openstreetmap.org"

28
config/i18n-js.yml Normal file
View file

@ -0,0 +1,28 @@
# Split context in several files.
# By default only one file with all translations is exported and
# no configuration is required. Your settings for asset pipeline
# are automatically recognized.
#
# If you want to split translations into several files or specify
# locale contexts that will be exported, just use this file to do
# so.
#
# If you're going to use the Rails 3.1 asset pipeline, change
# the following configuration to something like this:
#
# translations:
# - file: "app/assets/javascripts/i18n/translations.js"
#
# If you're running an old version, you can use something
# like this:
#
# translations:
# - file: "public/javascripts/translations.js"
# only: "*"
#
translations:
- file: "app/assets/javascripts/i18n/translations.js"
only:
- "*.browse.start_rjs.*"
- "*.export.start_rjs.*"
- "*.javascripts.*"

View file

@ -16,6 +16,32 @@ module I18n
end end
end end
end end
module JS
class << self
def make_ordered(unordered)
ordered = ActiveSupport::OrderedHash.new
unordered.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
value = unordered[key]
if value.is_a?(Hash)
ordered[key] = make_ordered(value)
else
ordered[key] = value
end
end
ordered
end
def filtered_translations_with_order
make_ordered(filtered_translations_without_order)
end
alias_method_chain :filtered_translations, :order
end
end
end end
I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback) I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback)

View file

@ -50,42 +50,3 @@ mapnik:
- { min_zoom: 15, max_zoom: 18, name: permissive, image: permissive.png } - { min_zoom: 15, max_zoom: 18, name: permissive, image: permissive.png }
- { min_zoom: 15, max_zoom: 18, name: destination, image: destination.png } - { min_zoom: 15, max_zoom: 18, name: destination, image: destination.png }
- { min_zoom: 12, max_zoom: 18, name: construction, image: construction.png } - { min_zoom: 12, max_zoom: 18, name: construction, image: construction.png }
osmarender:
- { min_zoom: 0, max_zoom: 18, name: motorway, image: motorway.png }
- { min_zoom: 0, max_zoom: 18, name: trunk, image: trunk.png }
- { min_zoom: 7, max_zoom: 18, name: primary, image: primary.png }
- { min_zoom: 9, max_zoom: 18, name: secondary, image: secondary.png }
- { min_zoom: 13, max_zoom: 18, name: unsurfaced, image: unsurfaced.png }
- { min_zoom: 13, max_zoom: 18, name: track, image: track.png }
- { min_zoom: 13, max_zoom: 18, name: byway, image: byway.png }
- { min_zoom: 13, max_zoom: 18, name: bridleway, image: bridleway.png }
- { min_zoom: 13, max_zoom: 18, name: cycleway, image: cycleway.png }
- { min_zoom: 13, max_zoom: 18, name: footway, image: footway.png }
- { min_zoom: 8, max_zoom: 18, name: rail, image: rail.png }
- { min_zoom: 13, max_zoom: 18, name: subway, image: subway.png }
- { min_zoom: 13, max_zoom: 18, name: tram, image: tram.png }
- { min_zoom: 0, max_zoom: 18, name: admin, image: admin.png }
- { min_zoom: 9, max_zoom: 18, name: forest, image: forest.png }
- { min_zoom: 10, max_zoom: 18, name: wood, image: wood.png }
- { min_zoom: 10, max_zoom: 18, name: park, image: park.png }
- { min_zoom: 8, max_zoom: 18, name: resident, image: resident.png }
- { min_zoom: 10, max_zoom: 18, name: tourist, image: tourist.png }
- { min_zoom: 10, max_zoom: 18, name: common, image: common.png }
- { min_zoom: 10, max_zoom: 18, name: retail, image: retail.png }
- { min_zoom: 10, max_zoom: 18, name: industrial, image: industrial.png }
- { min_zoom: 10, max_zoom: 18, name: commercial, image: commercial.png }
- { min_zoom: 10, max_zoom: 18, name: heathland, image: heathland.png }
- { min_zoom: 7, max_zoom: 18, name: lake, image: lake.png }
- { min_zoom: 10, max_zoom: 18, name: farm, image: farm.png }
- { min_zoom: 10, max_zoom: 18, name: brownfield, image: brownfield.png }
- { min_zoom: 11, max_zoom: 18, name: cemetery, image: cemetery.png }
- { min_zoom: 11, max_zoom: 18, name: allotments, image: allotments.png }
- { min_zoom: 11, max_zoom: 18, name: pitch, image: pitch.png }
- { min_zoom: 11, max_zoom: 18, name: centre, image: centre.png }
- { min_zoom: 11, max_zoom: 18, name: reserve, image: reserve.png }
- { min_zoom: 11, max_zoom: 18, name: military, image: military.png }
- { min_zoom: 12, max_zoom: 18, name: school, image: school.png }
- { min_zoom: 12, max_zoom: 18, name: building, image: building.png }
- { min_zoom: 12, max_zoom: 18, name: station, image: station.png }
- { min_zoom: 12, max_zoom: 18, name: summit, image: summit.png }

View file

@ -140,10 +140,10 @@ af:
data_layer_name: Data data_layer_name: Data
details: Details details: Details
drag_a_box: Trek 'n boks op die kaart om 'n gebied te kies drag_a_box: Trek 'n boks op die kaart om 'n gebied te kies
edited_by_user_at_timestamp: Verander deur [[user]] om [[timestamp]] edited_by_user_at_timestamp: Verander deur %{user} om %{timestamp}
history_for_feature: Geskiedenis van [[feature]] history_for_feature: Geskiedenis van %{feature}
load_data: Laai data load_data: Laai data
loaded_an_area_with_num_features: Hierdie area het [[num_features]] items. Party webblaaiers mag stadig raak wanneer hulle om soveel data te vertoon. Om nietemin aan te gaan, kies die skakel hier onder. loaded_an_area_with_num_features: Hierdie area het %{num_features} items. Party webblaaiers mag stadig raak wanneer hulle om soveel data te vertoon. Om nietemin aan te gaan, kies die skakel hier onder.
loading: Laai... loading: Laai...
manually_select: Kies 'n ander gebied handmatig manually_select: Kies 'n ander gebied handmatig
object_list: object_list:
@ -153,18 +153,18 @@ af:
heading: Objeklys heading: Objeklys
history: history:
type: type:
node: Node [[id]] node: Node %{id}
way: Weg [[id]] way: Weg %{id}
selected: selected:
type: type:
node: Node [[id]] node: Node %{id}
way: Weg [[id]] way: Weg %{id}
type: type:
node: Node node: Node
way: Weg way: Weg
private_user: private gebruiker private_user: private gebruiker
show_history: Wys Geskiedenis show_history: Wys Geskiedenis
unable_to_load_size: Aflaai van data onmoontlik. Area van grootte [[bbox_size]] is te groot. Moet kleiner as %{max_bbox_size} wees unable_to_load_size: Aflaai van data onmoontlik. Area van grootte %{bbox_size} is te groot. Moet kleiner as %{max_bbox_size} wees
wait: Wag asseblief... wait: Wag asseblief...
zoom_or_select: Zoom in of kies 'n gebied op die kaart om te besigtig zoom_or_select: Zoom in of kies 'n gebied op die kaart om te besigtig
tag_details: tag_details:
@ -893,10 +893,6 @@ af:
anon_edits_link_text: Lees waarom dit die geval is. anon_edits_link_text: Lees waarom dit die geval is.
user_page_link: gebruikersbladsy user_page_link: gebruikersbladsy
index: index:
license:
license_name: Creative Commons Naamsvermelding 2.0
notice: Gelisensieer onder die %{license_name} lisensie deur die %{project_name} en sy bydraers.
project_name: OpenStreetMap-projek
permalink: Permanente skakel permalink: Permanente skakel
shortlink: Kort skakel shortlink: Kort skakel
key: key:

View file

@ -100,12 +100,14 @@ aln:
closed_at: "U mshel në:" closed_at: "U mshel në:"
created_at: "U krijue en:" created_at: "U krijue en:"
has_nodes: has_nodes:
other: one= one: "Has the following %{count} node:"
other: "Has the following %{count} nodes:"
has_relations: has_relations:
one: "Ka pas %{count} lidhje:" one: "Ka pas %{count} lidhje:"
other: "Ka pas marrëdhënieve %{count} :" other: "Ka pas marrëdhënieve %{count} :"
has_ways: has_ways:
other: one= one: "Has the following %{count} way:"
other: "Has the following %{count} ways:"
no_bounding_box: Nuk ka barok qe osht kon vnu n'kto ndrryshime. no_bounding_box: Nuk ka barok qe osht kon vnu n'kto ndrryshime.
show_area_box: Tregoje kutinë e fushës show_area_box: Tregoje kutinë e fushës
common_details: common_details:
@ -190,10 +192,10 @@ aln:
data_layer_name: Të dhanunat data_layer_name: Të dhanunat
details: Detajet details: Detajet
drag_a_box: Tërhjeke nji kuti n'hartë për me e zgjedhë zonën drag_a_box: Tërhjeke nji kuti n'hartë për me e zgjedhë zonën
edited_by_user_at_timestamp: E ka ndryshue [[user]] në [[timestamp]] edited_by_user_at_timestamp: E ka ndryshue %{user} në %{timestamp}
history_for_feature: Historia për [[feature]] history_for_feature: Historia për %{feature}
load_data: Ngarkoji të dhanunat load_data: Ngarkoji të dhanunat
loaded_an_area_with_num_features: "Ti e ke marrë ni zonë që ka [[num_features]] . E do browsera nuk e qesin fort mirë kualitetin e t'dhanunave me ta. Browseri duhet me i kallxue ma pak se 100 t'dhanuna në t'njejtin vakt: me bo diqka tjetër munet me ta ngadalsue browserin. Nëse je i/e sigurtë, nësë don mi pa t'dhanunat, duhesh me klikue ktë pullë." loaded_an_area_with_num_features: "Ti e ke marrë ni zonë që ka %{num_features} . E do browsera nuk e qesin fort mirë kualitetin e t'dhanunave me ta. Browseri duhet me i kallxue ma pak se 100 t'dhanuna në t'njejtin vakt: me bo diqka tjetër munet me ta ngadalsue browserin. Nëse je i/e sigurtë, nësë don mi pa t'dhanunat, duhesh me klikue ktë pullë."
loading: Tu u ngarkue... loading: Tu u ngarkue...
manually_select: Zgjidhe nji fushë tjetër manually_select: Zgjidhe nji fushë tjetër
object_list: object_list:
@ -203,18 +205,18 @@ aln:
heading: Lista e t'dhanunave heading: Lista e t'dhanunave
history: history:
type: type:
node: Pika [[id]] node: Pika %{id}
way: Udha [[id]] way: Udha %{id}
selected: selected:
type: type:
node: Pika [[id]] node: Pika %{id}
way: Rruga [[id]] way: Rruga %{id}
type: type:
node: Pikë node: Pikë
way: Udhë way: Udhë
private_user: Përdorues privat private_user: Përdorues privat
show_history: Kqyre Historinë show_history: Kqyre Historinë
unable_to_load_size: "Nuk kemi muejt me e shfaqë: madhësinë e kutisë [[bbox_size]] asht shum e madhe (duhet me kenë ma e vogël se %{max_bbox_size})" unable_to_load_size: "Nuk kemi muejt me e shfaqë: madhësinë e kutisë %{bbox_size} asht shum e madhe (duhet me kenë ma e vogël se %{max_bbox_size})"
wait: Pritni... wait: Pritni...
zoom_or_select: Afroje ose zgedhe zonën n'hartë qe po don me e pa. zoom_or_select: Afroje ose zgedhe zonën n'hartë qe po don me e pa.
tag_details: tag_details:
@ -840,8 +842,6 @@ aln:
other: Kutia jote ka %{count} mesazhe të palexume other: Kutia jote ka %{count} mesazhe të palexume
zero: Kutia jote nuk ka asnjë mesazh të palexume zero: Kutia jote nuk ka asnjë mesazh të palexume
intro_1: OpenStreetMap është një hartë e lirë editable e tërë botës. Kjo është bërë nga njerëzit si ju. intro_1: OpenStreetMap është një hartë e lirë editable e tërë botës. Kjo është bërë nga njerëzit si ju.
license:
title: Të dhënat OpenStreetMap është i liçensuar nën Creative Commons Attribution-Share njësoj License 2,0 Generic
log_in: log in log_in: log in
log_in_tooltip: Hyni që me një llogari ekzistuese log_in_tooltip: Hyni që me një llogari ekzistuese
logo: logo:
@ -868,7 +868,6 @@ aln:
text: Në ni ngjarje të ni konflikti me faqen e përkthyme dhe %{english_original_link}, faqja anglisht ka përparsi text: Në ni ngjarje të ni konflikti me faqen e përkthyme dhe %{english_original_link}, faqja anglisht ka përparsi
title: Rreth kti përkthimi title: Rreth kti përkthimi
legal_babble: legal_babble:
contributors_au_html: "<strong> Australi </ strong>: Përmban të dhëna të bazuara periferi\n në Zyra Australiane e Statistikave të dhënave."
contributors_ca_html: "<strong> Kanada </ strong>: Përmban të dhëna nga\n GeoBase ®, GeoGratis (© Departamenti i Natyrore\n Burimet Kanada), CanVec (Departamenti i Natyrore ©\n Burimet Kanada), dhe StatCan (Divizioni Gjeografia,\n Statistika Kanada)." contributors_ca_html: "<strong> Kanada </ strong>: Përmban të dhëna nga\n GeoBase ®, GeoGratis (© Departamenti i Natyrore\n Burimet Kanada), CanVec (Departamenti i Natyrore ©\n Burimet Kanada), dhe StatCan (Divizioni Gjeografia,\n Statistika Kanada)."
contributors_footer_2_html: " Përfshirja e të dhënave në OpenStreetMap nuk do të thotë që origjinal\n dhënave miraton ofrues OpenStreetMap, ofron çdo garanci ose\n pranon ndonjë përgjegjësi." contributors_footer_2_html: " Përfshirja e të dhënave në OpenStreetMap nuk do të thotë që origjinal\n dhënave miraton ofrues OpenStreetMap, ofron çdo garanci ose\n pranon ndonjë përgjegjësi."
contributors_gb_html: "<strong> Mbretëria e Bashkuar </ strong>: Përmban të pajisjeve\n Anketa të dhënat © Crown copyright bazës së të dhënave dhe të drejtë\n 2010." contributors_gb_html: "<strong> Mbretëria e Bashkuar </ strong>: Përmban të pajisjeve\n Anketa të dhënat © Crown copyright bazës së të dhënave dhe të drejtë\n 2010."
@ -882,7 +881,6 @@ aln:
intro_2_html: "Ju jeni të lirë ta kopjoni, shpërndani, përcjell dhe përshtatur hartat tona\n dhe të dhënat, për aq kohë sa ju e kreditit OpenStreetMap e saj\n kontribuesve. Nëse ju ndryshoni ose me ndërtimin e hartave tona ose të dhëna, ju\n mund të shpërndani rezultat vetëm në bazë të licencës të njëjtën.\n <Plotë një\n href = \"http://creativecommons.org/licenses/by-sa/2.0/legalcode\"> ligjore\n <Kod / a> shpjegon të drejtat tuaja dhe të përgjegjësive." intro_2_html: "Ju jeni të lirë ta kopjoni, shpërndani, përcjell dhe përshtatur hartat tona\n dhe të dhënat, për aq kohë sa ju e kreditit OpenStreetMap e saj\n kontribuesve. Nëse ju ndryshoni ose me ndërtimin e hartave tona ose të dhëna, ju\n mund të shpërndani rezultat vetëm në bazë të licencës të njëjtën.\n <Plotë një\n href = \"http://creativecommons.org/licenses/by-sa/2.0/legalcode\"> ligjore\n <Kod / a> shpjegon të drejtat tuaja dhe të përgjegjësive."
more_1_html: "Lexo më shumë lidhje me përdorimin e të dhënave tona në <a\n href = \"http://wiki.openstreetmap.org/wiki/Legal_FAQ\"> Ligjore\n FAQ </ a>." more_1_html: "Lexo më shumë lidhje me përdorimin e të dhënave tona në <a\n href = \"http://wiki.openstreetmap.org/wiki/Legal_FAQ\"> Ligjore\n FAQ </ a>."
more_2_html: "OSM janë kontribuesit kujtoi kurrë për të shtuar të dhënat nga ndonjë\n Burime copyright (p.sh. Google Maps apo të shtypura harta) pa\n lejen shprehimisht nga mbajtësit të drejtën e autorit." more_2_html: "OSM janë kontribuesit kujtoi kurrë për të shtuar të dhënat nga ndonjë\n Burime copyright (p.sh. Google Maps apo të shtypura harta) pa\n lejen shprehimisht nga mbajtësit të drejtën e autorit."
more_3_html: "Edhe pse OpenStreetMap është e hapur të dhëna, ne nuk mund të sigurojë një\n pa-e-ngarkuar hartë API për zhvilluesit e palëve të treta.\n\n Shiko <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\"> tonë API Perdorimi Politika </ a>,\n <a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\"> tjegull Perdorimi Politika </ a>\n dhe <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\"> Nominatim Perdorimi Politika </ a>."
more_title_html: Gjetja më shumë more_title_html: Gjetja më shumë
title_html: Copyright title_html: Copyright
native: native:
@ -1109,10 +1107,6 @@ aln:
index: index:
js_1: Ju jeni tuj e përdor naj shfletues që nuk e përkrah JavaScript, ose ju e keni ndalu JavaScript. js_1: Ju jeni tuj e përdor naj shfletues që nuk e përkrah JavaScript, ose ju e keni ndalu JavaScript.
js_2: OpenStreetMap përdor Java skriptet për planet e saj të rrëshqitshëm. js_2: OpenStreetMap përdor Java skriptet për planet e saj të rrëshqitshëm.
license:
license_name: Creative Commons Attribution-Share Alike 2.0
notice: E licencume nëpërmjet %{license_name} licenca prej %{project_name} dhe kontribuuesve të tij.
project_name: Projekti OpenStreetMap
permalink: Permalink permalink: Permalink
shortlink: Shortlink shortlink: Shortlink
key: key:

View file

@ -83,6 +83,8 @@ ar:
application: application:
require_cookies: require_cookies:
cookies_needed: يبدو أن الكوكيز عندك معطلة - يرجى تفعيل الكوكيز في متصفحك قبل المتابعة. cookies_needed: يبدو أن الكوكيز عندك معطلة - يرجى تفعيل الكوكيز في متصفحك قبل المتابعة.
require_moderator:
not_a_moderator: عليك أن تكون وسيط لتنفيذ هذا الإجراء
setup_user_auth: setup_user_auth:
blocked: لقد تم عرقلة وصولك إلى الـ API. يرجى تسجيل الدخول من صفحة الموقع لمعرفة المزيد. blocked: لقد تم عرقلة وصولك إلى الـ API. يرجى تسجيل الدخول من صفحة الموقع لمعرفة المزيد.
browse: browse:
@ -118,6 +120,7 @@ ar:
common_details: common_details:
changeset_comment: "التعليق:" changeset_comment: "التعليق:"
deleted_at: "حذف في:" deleted_at: "حذف في:"
deleted_by: "تم الحذف من:"
edited_at: "عُدّل في:" edited_at: "عُدّل في:"
edited_by: "عُدّل بواسطة:" edited_by: "عُدّل بواسطة:"
in_changeset: "في حزمة التغييرات:" in_changeset: "في حزمة التغييرات:"
@ -127,6 +130,11 @@ ar:
entry_role: العلاقة %{relation_name} (كــ %{relation_role}) entry_role: العلاقة %{relation_name} (كــ %{relation_role})
map: map:
deleted: تم الحذف deleted: تم الحذف
edit:
area: حرّر مساحة
node: حرّر عقدة
relation: حرّر علاقة
way: حرّر طريق
larger: larger:
area: اعرض المنطقة على خريطة أكبر area: اعرض المنطقة على خريطة أكبر
node: اعرض العقدة على خريطة أكبر node: اعرض العقدة على خريطة أكبر
@ -152,7 +160,7 @@ ar:
edit: تعديل العقدة edit: تعديل العقدة
node: عقدة node: عقدة
node_title: "عقدة: %{node_name}" node_title: "عقدة: %{node_name}"
view_history: اعرض التاريخ view_history: شاهد الخط الزمني
node_details: node_details:
coordinates: "إحداثيات:" coordinates: "إحداثيات:"
part_of: "جزء من:" part_of: "جزء من:"
@ -160,7 +168,7 @@ ar:
download_xml: نزّل إكس إم أل download_xml: نزّل إكس إم أل
node_history: تاريخ العقدة node_history: تاريخ العقدة
node_history_title: "تاريخ العقدة: %{node_name}" node_history_title: "تاريخ العقدة: %{node_name}"
view_details: اعرض التفاصيل view_details: شاهد التفاصيل
not_found: not_found:
sorry: عفوًا، لم يتم العثور على %{type} بالمعرّف %{id}. sorry: عفوًا، لم يتم العثور على %{type} بالمعرّف %{id}.
type: type:
@ -171,11 +179,17 @@ ar:
paging_nav: paging_nav:
of: من of: من
showing_page: إظهار الصفحة showing_page: إظهار الصفحة
redacted:
redaction: التنقيح %{id}
type:
node: العقدة
relation: علاقة
way: طريق
relation: relation:
download_xml: نزّل إكس إم إل download_xml: نزّل إكس إم إل
relation: العلاقة relation: العلاقة
relation_title: "العلاقة: %{relation_name}" relation_title: "العلاقة: %{relation_name}"
view_history: اعرض التاريخ view_history: شاهد الخط الزمني
relation_details: relation_details:
members: "الأعضاء:" members: "الأعضاء:"
part_of: "جزء من:" part_of: "جزء من:"
@ -183,7 +197,7 @@ ar:
download_xml: نزّل إكس إم أل download_xml: نزّل إكس إم أل
relation_history: تاريخ العلاقة relation_history: تاريخ العلاقة
relation_history_title: "تاريخ العلاقة: %{relation_name}" relation_history_title: "تاريخ العلاقة: %{relation_name}"
view_details: اعرض التفاصيل view_details: شاهد التفاصيل
relation_member: relation_member:
entry_role: "%{type} %{name} كــ %{role}" entry_role: "%{type} %{name} كــ %{role}"
type: type:
@ -198,11 +212,11 @@ ar:
data_layer_name: تصفح بيانات الخريطة data_layer_name: تصفح بيانات الخريطة
details: التفاصيل details: التفاصيل
drag_a_box: اسحب مربع على الخريطة لاختيار منطقة drag_a_box: اسحب مربع على الخريطة لاختيار منطقة
edited_by_user_at_timestamp: عُدّل بواسطة [[user]] في [[timestamp]] edited_by_user_at_timestamp: عُدّل بواسطة %{user} في %{timestamp}
hide_areas: إخفاء المناطق hide_areas: إخفاء المناطق
history_for_feature: تاريخ الــ[[feature]] history_for_feature: تاريخ الــ%{feature}
load_data: تحميل البيانات load_data: تحميل البيانات
loaded_an_area_with_num_features: "لقد قمت بتحميل منطقة تحتوي على [[num_features]] ميّزة. بصفة عامّة، بعض المتصفحات قد لا تتوافق بشكل جيد مع عرض هذه الكمية من البيانات. عمومًا، تعمل المتصفحات بشكل أفضل في عرض أقل من 100 ميّزة في وقت واحد: القيام بأي شيء آخر قد يجعل المتصفح بطيء أو لن يستجيب. إن كنت متأكدًا من أنك ترغب في عرض هذه البيانات، يمكنك القيام بذلك عن طريق النقر على الزر أدناه." loaded_an_area_with_num_features: "لقد قمت بتحميل منطقة تحتوي على %{num_features} ميّزة. بصفة عامّة، بعض المتصفحات قد لا تتوافق بشكل جيد مع عرض هذه الكمية من البيانات. عمومًا، تعمل المتصفحات بشكل أفضل في عرض أقل من 100 ميّزة في وقت واحد: القيام بأي شيء آخر قد يجعل المتصفح بطيء أو لن يستجيب. إن كنت متأكدًا من أنك ترغب في عرض هذه البيانات، يمكنك القيام بذلك عن طريق النقر على الزر أدناه."
loading: جاري التحميل... loading: جاري التحميل...
manually_select: اختر يدويًا منطقة أخرى manually_select: اختر يدويًا منطقة أخرى
object_list: object_list:
@ -212,23 +226,24 @@ ar:
heading: قائمة الكائنات heading: قائمة الكائنات
history: history:
type: type:
node: عقدة [[id]] node: عقدة %{id}
way: طريق [[id]] way: طريق %{id}
selected: selected:
type: type:
node: عقدة [[id]] node: عقدة %{id}
way: طريق [[id]] way: طريق %{id}
type: type:
node: عقدة node: عقدة
way: طريق way: طريق
private_user: مستخدم الخاص private_user: مستخدم الخاص
show_areas: أظهر المناطق show_areas: أظهر المناطق
show_history: أظهر التاريخ show_history: أظهر التاريخ
unable_to_load_size: "غير قادر على التحميل: حجم مربع الإحاطة [[bbox_size]] كبير جدًا (يجب أن يكون أصغر من %{max_bbox_size})" unable_to_load_size: "غير قادر على التحميل: حجم مربع الإحاطة %{bbox_size} كبير جدًا (يجب أن يكون أصغر من %{max_bbox_size})"
wait: انتظر... wait: انتظر...
zoom_or_select: قم بالتكبير أو اختر منطقة من الخريطة لعرضها zoom_or_select: قم بالتكبير أو اختر منطقة من الخريطة لعرضها
tag_details: tag_details:
tags: "الوسوم:" tags: "الوسوم:"
wikipedia_link: الـ%{page} مقالة على ويكيبيديا
timeout: timeout:
sorry: عذرًا، بيانات %{type} بالمعرّف %{id} استغرقت وقتًا طويلا للاسترداد. sorry: عذرًا، بيانات %{type} بالمعرّف %{id} استغرقت وقتًا طويلا للاسترداد.
type: type:
@ -239,7 +254,7 @@ ar:
way: way:
download_xml: نزّل إكس إم إل download_xml: نزّل إكس إم إل
edit: تعديل الطريق edit: تعديل الطريق
view_history: اعرض التاريخ view_history: شاهد الخط الزمني
way: طريق way: طريق
way_title: "طريق: %{way_name}" way_title: "طريق: %{way_name}"
way_details: way_details:
@ -251,7 +266,7 @@ ar:
part_of: "جزء من:" part_of: "جزء من:"
way_history: way_history:
download_xml: نزّل إكس إم إل download_xml: نزّل إكس إم إل
view_details: اعرض التفاصيل view_details: شاهد التفاصيل
way_history: تاريخ الطريق way_history: تاريخ الطريق
way_history_title: "تاريخ الطريق: %{way_name}" way_history_title: "تاريخ الطريق: %{way_name}"
changeset: changeset:
@ -276,17 +291,33 @@ ar:
list: list:
description: التغييرات الحديثة description: التغييرات الحديثة
description_bbox: حزم التغييرات داخل %{bbox} description_bbox: حزم التغييرات داخل %{bbox}
description_friend: حزم التغييرات من قبل أصدقائك
description_nearby: حزم التغييرات من قبل المسخدمين في المقربة
description_user: حزم التغييرات بواسطة %{user} description_user: حزم التغييرات بواسطة %{user}
description_user_bbox: حزم التغييرات بواسطة %{user} داخل %{bbox} description_user_bbox: حزم التغييرات بواسطة %{user} داخل %{bbox}
empty_anon_html: لا يوجد تغييرات حتى الآن
empty_user_html: يبدو أنك لم تقم بأي تغييرات حتى الآن. للبدء بالعمل، أنظر إلى <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.3'>دليل المبتدئين</a>.
heading: حزم التغييرات heading: حزم التغييرات
heading_bbox: حزم التغييرات heading_bbox: حزم التغييرات
heading_friend: حزم التغييرات
heading_nearby: حزم التغييرات
heading_user: حزم التغييرات heading_user: حزم التغييرات
heading_user_bbox: حزم التغييرات heading_user_bbox: حزم التغييرات
title: حزم التغييرات title: حزم التغييرات
title_bbox: حزم التغييرات داخل %{bbox} title_bbox: حزم التغييرات داخل %{bbox}
title_friend: حزم التغييرات بواسطة أصدقائك
title_user: حزم التغييرات بواسطة %{user} title_user: حزم التغييرات بواسطة %{user}
title_user_bbox: حزم التغييرات بواسطة %{user} داخل %{bbox} title_user_bbox: حزم التغييرات بواسطة %{user} داخل %{bbox}
timeout:
sorry: عذراً، لقد إستمرت لائحة حزم التغييرات اللتي طلبتها وقتاً طويلاً للسحب.
diary_entry: diary_entry:
comments:
ago: "%{ago} سابقاً"
comment: التعليق
has_commented_on: "%{display_name} علّق على مدخلات اليومية التالية"
newer_comments: التعليقات الجديدة
older_comments: التعليقات القديمة
when: متى
diary_comment: diary_comment:
comment_from: تعليق من %{link_user} في %{comment_created_at} comment_from: تعليق من %{link_user} في %{comment_created_at}
confirm: أكّد confirm: أكّد
@ -334,6 +365,8 @@ ar:
older_entries: المدخلات الأقدم older_entries: المدخلات الأقدم
recent_entries: "المدخلات اليومية الحديثة:" recent_entries: "المدخلات اليومية الحديثة:"
title: يوميات المستخدمين title: يوميات المستخدمين
title_friends: يوميات الأصدقاء
title_nearby: يوميات/مفكرات المستخدمين في المقبرة
user_title: يومية %{user} user_title: يومية %{user}
location: location:
edit: تعديل edit: تعديل
@ -353,6 +386,13 @@ ar:
title: يوميات %{user} | %{title} title: يوميات %{user} | %{title}
user_title: يومية %{user} user_title: يومية %{user}
editor: editor:
default: الغيابي (حالياً %{name})
potlatch:
description: Potlatch 1 (محرّر ضمن المتصفح)
name: Potlatch 1
potlatch2:
description: Potlatch 2 (محرّر ضمن المتصفح)
name: Potlatch 2
remote: remote:
description: تحكم عن بعد (JOSM أو Merkaartor) description: تحكم عن بعد (JOSM أو Merkaartor)
name: تحكم عن بعد name: تحكم عن بعد
@ -430,16 +470,27 @@ ar:
suffix_place: ، %{distance} %{direction} من %{placename} suffix_place: ، %{distance} %{direction} من %{placename}
search_osm_nominatim: search_osm_nominatim:
prefix: prefix:
aeroway:
aerodrome: المطار
gate: البوابة
helipad: منصة مروحية
runway: مدرج إقلاع
taxiway: مدرج المناورات
terminal: صالة مطار
amenity: amenity:
WLAN: نقطة إتصال لاسلكية
airport: مطار airport: مطار
arts_centre: مركز فني/ثقافي arts_centre: مركز فني/ثقافي
artwork: عمل فني
atm: صراف آلي atm: صراف آلي
auditorium: قاعة محاضرات auditorium: قاعة محاضرات
bank: مصرف bank: مصرف
bar: حانة bar: حانة
bbq: مشوى
bench: مقعد bench: مقعد
bicycle_parking: موقف دراجات bicycle_parking: موقف دراجات
bicycle_rental: تأجير دراجة bicycle_rental: تأجير دراجة
biergarten: حديقة البيرة
brothel: بيت دعارة brothel: بيت دعارة
bureau_de_change: مكتب صرافة bureau_de_change: مكتب صرافة
bus_station: محطة حافلات bus_station: محطة حافلات
@ -448,6 +499,7 @@ ar:
car_sharing: مشاركة سيارات car_sharing: مشاركة سيارات
car_wash: غسيل سيارات car_wash: غسيل سيارات
casino: نادي قمار casino: نادي قمار
charging_station: محطة تعبئة
cinema: سينما cinema: سينما
clinic: عيادة clinic: عيادة
club: نادي club: نادي
@ -506,9 +558,12 @@ ar:
shelter: ملجأ shelter: ملجأ
shop: متجر/دكان/حانوت shop: متجر/دكان/حانوت
shopping: التسوق shopping: التسوق
shower: غسيل بالدش
social_centre: مركز إجتماعي
social_club: نادي اجتماعي social_club: نادي اجتماعي
studio: ستوديو studio: ستوديو
supermarket: سوبرماركت supermarket: سوبرماركت
swimming_pool: مسبح
taxi: سيارة أجرة taxi: سيارة أجرة
telephone: هاتف عمومي telephone: هاتف عمومي
theatre: مسرح theatre: مسرح
@ -519,10 +574,15 @@ ar:
veterinary: جراحة بيطرية veterinary: جراحة بيطرية
village_hall: مبنى/دار القرية village_hall: مبنى/دار القرية
waste_basket: سلة نفايات waste_basket: سلة نفايات
wifi: نقطة اتصال لاسلكية واي فاي wifi: نقطة إتصال لاسلكية
youth_centre: مركز نشاطات للشباب youth_centre: مركز نشاطات للشباب
boundary: boundary:
administrative: حدود إدارية administrative: حدود إدارية
national_park: محمية وطنية
protected_area: منطقة محمية
bridge:
suspension: جسر معلق
"yes": جسر
building: building:
"yes": مبنى "yes": مبنى
highway: highway:
@ -547,11 +607,13 @@ ar:
primary_link: طريق أولي primary_link: طريق أولي
raceway: حلبة سباق raceway: حلبة سباق
residential: طريق سكني residential: طريق سكني
rest_area: منطقة إستراحة
road: طريق road: طريق
secondary: طريق ثانوي secondary: طريق ثانوي
secondary_link: طريق ثانوي secondary_link: طريق ثانوي
service: طريق خدمة service: طريق خدمة
services: خدمات الطرق السريعة services: خدمات الطرق السريعة
speed_camera: كاميرا كشف السرعة
steps: درج steps: درج
stile: مرقى لعبور جدار stile: مرقى لعبور جدار
tertiary: طريق فرعي tertiary: طريق فرعي
@ -568,6 +630,7 @@ ar:
building: مبنى building: مبنى
castle: قلعة castle: قلعة
church: كنيسة church: كنيسة
fort: حصن
house: منزل house: منزل
icon: أيقونة icon: أيقونة
manor: عزبة manor: عزبة
@ -592,6 +655,7 @@ ar:
farmland: أرض زراعية farmland: أرض زراعية
farmyard: فناء مزرعة farmyard: فناء مزرعة
forest: غابة forest: غابة
garages: مرائب
grass: عشب grass: عشب
greenfield: حقول خضراء greenfield: حقول خضراء
industrial: منطقة صناعية industrial: منطقة صناعية
@ -600,6 +664,7 @@ ar:
military: منطقة عسكرية military: منطقة عسكرية
mine: منجم mine: منجم
nature_reserve: محمية طبيعية nature_reserve: محمية طبيعية
orchard: بستان
park: منتزه park: منتزه
piste: منطقة تزحلق piste: منطقة تزحلق
quarry: كسّارة quarry: كسّارة
@ -614,8 +679,10 @@ ar:
wood: حرج wood: حرج
leisure: leisure:
beach_resort: شاطئ منتجع beach_resort: شاطئ منتجع
bird_hide: مخبئ طيور
common: أرض مشاع common: أرض مشاع
fishing: منطقة صيد سمك fishing: منطقة صيد سمك
fitness_station: مركز اللياقة البدنية
garden: حديقة garden: حديقة
golf_course: ملعب غولف golf_course: ملعب غولف
ice_rink: حلبة تزلج على الجليد ice_rink: حلبة تزلج على الجليد
@ -626,12 +693,17 @@ ar:
pitch: ملعب رياضي pitch: ملعب رياضي
playground: ملعب playground: ملعب
recreation_ground: ميدان ألعاب recreation_ground: ميدان ألعاب
sauna: حمّام بخاري حار
slipway: مزلقة slipway: مزلقة
sports_centre: مركز رياضي sports_centre: مركز رياضي
stadium: مدرج ألعاب رياضية stadium: مدرج ألعاب رياضية
swimming_pool: بركة سباحة swimming_pool: بركة سباحة
track: مضمار سباق track: مضمار سباق
water_park: منتزه ألعاب مائية water_park: منتزه ألعاب مائية
military:
airfield: منطقة عسكرية
barracks: ثكنات
bunker: دشمة
natural: natural:
bay: خليج bay: خليج
beach: شاطئ beach: شاطئ
@ -640,9 +712,11 @@ ar:
channel: قناة channel: قناة
cliff: جرف cliff: جرف
crater: فوهة بركان crater: فوهة بركان
dune: كثيب
feature: ميزة feature: ميزة
fell: منحدر fell: منحدر
fjord: مضيق بحري fjord: مضيق بحري
forest: غابة
geyser: نافورة ماء حار geyser: نافورة ماء حار
glacier: نهر/بحر جليدي glacier: نهر/بحر جليدي
heath: أرض بور heath: أرض بور
@ -662,6 +736,7 @@ ar:
scrub: أشجار منخفضة scrub: أشجار منخفضة
shoal: مياه ضحلة shoal: مياه ضحلة
spring: نبع spring: نبع
stone: حجر
strait: مضيق جبلي strait: مضيق جبلي
tree: شجرة tree: شجرة
valley: وادي valley: وادي
@ -670,6 +745,19 @@ ar:
wetland: أرض رطبة wetland: أرض رطبة
wetlands: أراضي رطبة wetlands: أراضي رطبة
wood: حرج wood: حرج
office:
accountant: محاسب
architect: مهندس معماري
company: شركة
employment_agency: وكالة توظيف
estate_agent: سمسار مباني
government: دائرة حكومية
insurance: مكتب شركة تأمين
lawyer: محامي
ngo: مكتب منظمة غير حكومية
telecommunication: مكتب شركة إتصالات
travel_agent: وكيل سفريات
"yes": مكتب
place: place:
airport: مطار airport: مطار
city: مدينة city: مدينة
@ -681,6 +769,7 @@ ar:
houses: منازل houses: منازل
island: جزيرة island: جزيرة
islet: جزيرة صغيرة islet: جزيرة صغيرة
isolated_dwelling: سكن منعزل
locality: محلة locality: محلة
moor: أرض جرداء moor: أرض جرداء
municipality: البلدية municipality: البلدية
@ -697,7 +786,7 @@ ar:
abandoned: سكة حديد مهجورة abandoned: سكة حديد مهجورة
construction: سكة حديدية تحت الإنشاء construction: سكة حديدية تحت الإنشاء
disused: سكة حديد مهجورة disused: سكة حديد مهجورة
disused_station: محطة سكة حديد مهجورة disused_station: محطة سكة حديدية مهجورة
funicular: سكة حديدية معلقة funicular: سكة حديدية معلقة
halt: موقف قطار halt: موقف قطار
historic_station: محطة سكة حديد تاريخية historic_station: محطة سكة حديد تاريخية
@ -805,7 +894,10 @@ ar:
valley: وادي valley: وادي
viewpoint: موقع كاشف viewpoint: موقع كاشف
zoo: حديقة حيوانات zoo: حديقة حيوانات
tunnel:
"yes": نفق
waterway: waterway:
artificial: مجرى ماء إصطناعي
boatyard: حوض سفن boatyard: حوض سفن
canal: قناة canal: قناة
connector: قناة مائية connector: قناة مائية
@ -832,11 +924,12 @@ ar:
map: map:
base: base:
cycle_map: خريطة للدراجات cycle_map: خريطة للدراجات
transport_map: خريطة تنقلات
site: site:
edit_disabled_tooltip: قم بالتكبير لتحرير الخريطة edit_disabled_tooltip: قم بالتكبير لتحرير الخريطة
edit_tooltip: عدّل الخريطة edit_tooltip: عدّل الخريطة
edit_zoom_alert: يجب عليك التكبير لتعديل الخريطة edit_zoom_alert: يجب عليك التكبير لتعديل الخريطة
history_disabled_tooltip: قم بالتكبير لعرض التعديلات في هذه المنطقة history_disabled_tooltip: إستعمل المقربة لعرض التغييرات في هذه المساحة
history_tooltip: اعرض التعديلات في هذه المنطقة history_tooltip: اعرض التعديلات في هذه المنطقة
history_zoom_alert: يجب التكبير لرؤية تاريخ التعديل history_zoom_alert: يجب التكبير لرؤية تاريخ التعديل
layouts: layouts:
@ -861,6 +954,7 @@ ar:
history: تاريخ history: تاريخ
home: الصفحة الرئيسية home: الصفحة الرئيسية
home_tooltip: اذهب إلى الصفحة الرئيسية home_tooltip: اذهب إلى الصفحة الرئيسية
inbox_html: البريد الوارد
inbox_tooltip: inbox_tooltip:
few: صندوق بريدك يحوي %{count} رسائل غير مقروءة few: صندوق بريدك يحوي %{count} رسائل غير مقروءة
one: صندوق بريدك يحوي رسالة واحدة غير مقروءة one: صندوق بريدك يحوي رسالة واحدة غير مقروءة
@ -868,8 +962,9 @@ ar:
two: صندوق بريدك يحوي رسالتين غير مقروءتين two: صندوق بريدك يحوي رسالتين غير مقروءتين
zero: صندوق بريدك لا يحوي رسائل غير مقروءة zero: صندوق بريدك لا يحوي رسائل غير مقروءة
intro_1: خريطة الشارع المفتوحة هي خريطة للعالم كله قابلة للتحرير حرة ومجانية. قام بإنشائها أشخاص مثلك. intro_1: خريطة الشارع المفتوحة هي خريطة للعالم كله قابلة للتحرير حرة ومجانية. قام بإنشائها أشخاص مثلك.
license: intro_2_create_account: أنشئ حساب مستخدم
title: بيانات خريطة الشارع المفتوحة مرخصة تحت رخصة المشاع الإبداعي، النسبة، نسخة 2.0 intro_2_download: نزّل
intro_2_use: إستعمل
log_in: تسجيل الدخول log_in: تسجيل الدخول
log_in_tooltip: سجّل الدخول مع حساب موجود log_in_tooltip: سجّل الدخول مع حساب موجود
logo: logo:
@ -881,6 +976,8 @@ ar:
title: ادعم خريطة الشارع المفتوحة بهبة نقدية title: ادعم خريطة الشارع المفتوحة بهبة نقدية
osm_offline: حاليًا قاعدة بيانات خريطة الشارع المفتوحة مغلقة بينما يتم الانتهاء من أعمال الصيانة الأساسية لقاعدة البيانات. osm_offline: حاليًا قاعدة بيانات خريطة الشارع المفتوحة مغلقة بينما يتم الانتهاء من أعمال الصيانة الأساسية لقاعدة البيانات.
osm_read_only: حاليًا قاعدة بيانات خريطة الشارع المفتوحة في وضع القراءة بينما يتم الانتهاء من أعمال الصيانة الأساسية لقاعدة البيانات. osm_read_only: حاليًا قاعدة بيانات خريطة الشارع المفتوحة في وضع القراءة بينما يتم الانتهاء من أعمال الصيانة الأساسية لقاعدة البيانات.
partners_html: الضيافة مدعومة من %{ucl}, %{ic} و %{bytemark}, و %{partners} آخرون.
partners_partners: الشركاء
sign_up: أنشئ حسابًا sign_up: أنشئ حسابًا
sign_up_tooltip: أنشئ حسابًا كي تستطيع المساهمة sign_up_tooltip: أنشئ حسابًا كي تستطيع المساهمة
tag_line: ويكي خريطة العالم الحرة tag_line: ويكي خريطة العالم الحرة
@ -896,6 +993,8 @@ ar:
foreign: foreign:
english_link: النص الإنجليزي الأصلي english_link: النص الإنجليزي الأصلي
title: حول هذه الترجمة title: حول هذه الترجمة
legal_babble:
title_html: حقوق النشر والترخيص
native: native:
mapping_link: إبدأ التخطيط mapping_link: إبدأ التخطيط
native_link: النسخة العربية native_link: النسخة العربية
@ -906,6 +1005,7 @@ ar:
inbox: inbox:
date: التاريخ date: التاريخ
from: من from: من
messages: لديك %{new_messages} و %{old_messages}
my_inbox: الوارد my_inbox: الوارد
no_messages_yet: لا يوجد لديك رسائل بعد. لماذا لا تقوم بالاتصال مع بعض %{people_mapping_nearby_link}؟ no_messages_yet: لا يوجد لديك رسائل بعد. لماذا لا تقوم بالاتصال مع بعض %{people_mapping_nearby_link}؟
outbox: الصادر outbox: الصادر
@ -1099,6 +1199,8 @@ ar:
allow_write_gpx: ارفع آثار جي بي إس. allow_write_gpx: ارفع آثار جي بي إس.
allow_write_prefs: تعديل تفضيلاته. allow_write_prefs: تعديل تفضيلاته.
authorize_url: "رابط التصريح:" authorize_url: "رابط التصريح:"
confirm: هل أنت متأكد؟
delete: أمحي الزبون
edit: عدّل التفاصيل edit: عدّل التفاصيل
key: "مفتاح المستهلك:" key: "مفتاح المستهلك:"
requests: "طلب الصلاحيات التالية من المستخدم:" requests: "طلب الصلاحيات التالية من المستخدم:"
@ -1108,6 +1210,17 @@ ar:
url: "رابط طلب النموذج:" url: "رابط طلب النموذج:"
update: update:
flash: تم تحديث معلومات العميل بنجاح flash: تم تحديث معلومات العميل بنجاح
redaction:
edit:
description: الوصف
new:
description: الوصف
show:
confirm: هل أنت متأكد؟
description: "الوصف:"
user: "المنشئ:"
update:
flash: تمّ حفظ التغييرات.
site: site:
edit: edit:
anon_edits_link_text: ابحث عن السبب لماذا هو هذا الحال. anon_edits_link_text: ابحث عن السبب لماذا هو هذا الحال.
@ -1119,10 +1232,6 @@ ar:
index: index:
js_1: أنت إما تستخدم متصفح لا يدعم جافا سكريبت، أو أنك عطلت استعمال جافا سكريبت. js_1: أنت إما تستخدم متصفح لا يدعم جافا سكريبت، أو أنك عطلت استعمال جافا سكريبت.
js_2: خريطة الشارع المفتوحة تستخدم جافا سكريبت لخريطتها المنزلقة. js_2: خريطة الشارع المفتوحة تستخدم جافا سكريبت لخريطتها المنزلقة.
license:
license_name: المشاع الإبداعي، النسبة، نسخة 2.0
notice: مرخص بموجب رخصة %{license_name} بواسطة %{project_name} ومساهميه.
project_name: مشروع خريطة الشارع المفتوحة
permalink: وصلة دائمة permalink: وصلة دائمة
shortlink: وصلة قصيرة shortlink: وصلة قصيرة
key: key:
@ -1194,6 +1303,18 @@ ar:
unclassified: طريق غير مصنّف unclassified: طريق غير مصنّف
unsurfaced: طريق غير معبد unsurfaced: طريق غير معبد
wood: غابة wood: غابة
markdown_help:
alt: النص البديل
first: البند الأول
image: الصورة
link: الوصلة
ordered: لائحة مرتبة
second: البند الثاني
text: النص
unordered: لائحة غير مرتبة
richtext_area:
edit: حرّر
preview: شاهد
search: search:
search: بحث search: بحث
search_help: "أمثلة: 'الحرية'، 'شارع الحمراء, بيروت'، 'مدرسة, القاهرة' <a href='http://http://wiki.openstreetmap.org/wiki/Ar:Search?uselang=ar'>المزيد من الأمثلة...</a>" search_help: "أمثلة: 'الحرية'، 'شارع الحمراء, بيروت'، 'مدرسة, القاهرة' <a href='http://http://wiki.openstreetmap.org/wiki/Ar:Search?uselang=ar'>المزيد من الأمثلة...</a>"
@ -1274,6 +1395,8 @@ ar:
trace_optionals: trace_optionals:
tags: الوسوم tags: الوسوم
trace_paging_nav: trace_paging_nav:
newer: الآثار الحديثة
older: الآثار القديمة
showing_page: إظهار الصفحة %{page} showing_page: إظهار الصفحة %{page}
view: view:
delete_track: احذف هذا الأثر delete_track: احذف هذا الأثر
@ -1323,6 +1446,10 @@ ar:
new email address: "عنوان البريد الإلكتروني الجديد:" new email address: "عنوان البريد الإلكتروني الجديد:"
new image: أضف صورة new image: أضف صورة
no home location: لم تدخل موقع منزلك. no home location: لم تدخل موقع منزلك.
openid:
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ما هذا ؟
openid: "OpenID:"
preferred editor: "المحرر المفضل:" preferred editor: "المحرر المفضل:"
preferred languages: "اللغات المفضّلة:" preferred languages: "اللغات المفضّلة:"
profile description: "وصف الملف الشخصي:" profile description: "وصف الملف الشخصي:"
@ -1359,6 +1486,7 @@ ar:
list: list:
empty: لا سجلات مطابقة تم العثور عليها! empty: لا سجلات مطابقة تم العثور عليها!
heading: المستخدمون heading: المستخدمون
hide: إخفاء المستخدمين المحددين
title: المستخدمون title: المستخدمون
login: login:
auth failure: آسف، لا يمكن الدخول بتلك التفاصيل. auth failure: آسف، لا يمكن الدخول بتلك التفاصيل.
@ -1368,6 +1496,7 @@ ar:
login_button: تسجيل الدخول login_button: تسجيل الدخول
lost password link: أنسيت كلمة المرور؟ lost password link: أنسيت كلمة المرور؟
new to osm: جديد لخريطة الشارع المفتوحة ؟ new to osm: جديد لخريطة الشارع المفتوحة ؟
no account: ليس لديك حسابا ؟
password: "كلمة السر:" password: "كلمة السر:"
register now: تسجل الآن register now: تسجل الآن
remember: "تذكرني:" remember: "تذكرني:"
@ -1386,6 +1515,7 @@ ar:
title: نسيان كلمة المرور title: نسيان كلمة المرور
make_friend: make_friend:
already_a_friend: حاليًا أنت و %{name} أصدقاء. already_a_friend: حاليًا أنت و %{name} أصدقاء.
button: أضف كصديق
failed: عفوًا، تعذر إضافة %{name} كصديق. failed: عفوًا، تعذر إضافة %{name} كصديق.
success: "%{name} الآن صديقك." success: "%{name} الآن صديقك."
new: new:
@ -1443,6 +1573,7 @@ ar:
rest_of_world: بقية العالم rest_of_world: بقية العالم
legale_select: "الرجاء اختيار بلد الإقامة:" legale_select: "الرجاء اختيار بلد الإقامة:"
read and accept: يرجى قراءة الاتفاقية أدناه والضغط على زر الموافقة لتأكيد قبول شروط هذا الاتفاق على مشاركاتك الموجودة حاليًا والمستقبلية. read and accept: يرجى قراءة الاتفاقية أدناه والضغط على زر الموافقة لتأكيد قبول شروط هذا الاتفاق على مشاركاتك الموجودة حاليًا والمستقبلية.
title: "شروط المساهم:"
view: view:
activate_user: نشّط هذا المستخدم activate_user: نشّط هذا المستخدم
add as friend: أضف كصديق add as friend: أضف كصديق
@ -1450,27 +1581,38 @@ ar:
block_history: اعرض العرقلات الواصلة block_history: اعرض العرقلات الواصلة
blocks by me: العرقلات بواسطتي blocks by me: العرقلات بواسطتي
blocks on me: العرقلات علي blocks on me: العرقلات علي
comments: التعليقات
confirm: أكّد confirm: أكّد
confirm_user: تأكيد هذا المستخدم confirm_user: تأكيد هذا المستخدم
create_block: امنع هذا المستخدم create_block: امنع هذا المستخدم
created from: "أُنشىء من:" created from: "أُنشىء من:"
ct accepted: مقبول %{ago} سابقاً
ct declined: مرفوض
ct status: "شروط المساهم:"
ct undecided: متردد
deactivate_user: احذف هذا المستخدم deactivate_user: احذف هذا المستخدم
delete_user: احذف هذا المستخدم delete_user: احذف هذا المستخدم
description: الوصف description: الوصف
diary: يومية diary: يومية
edits: مساهمات edits: مساهمات
email address: "عنوان البريد الإلكتروني:" email address: "عنوان البريد الإلكتروني:"
friends_changesets: تصفح كل حزم التغييرات من قبل الأصدقاء
friends_diaries: تصفح جميع مدخلات مدونات الأصدقاء
hide_user: اخفِ هذا المستخدم hide_user: اخفِ هذا المستخدم
if set location: إن قمت بتعيين موقعك، خريطة وأشياء جميلة سوف تظهر أدناه. يمكنك تحديد موقع منزلك من صفحة %{settings_link}. if set location: إن قمت بتعيين موقعك، خريطة وأشياء جميلة سوف تظهر أدناه. يمكنك تحديد موقع منزلك من صفحة %{settings_link}.
km away: على بعد %{count}كم km away: على بعد %{count}كم
latest edit: "آخر تغيير %{ago}:"
m away: على بعد %{count}متر m away: على بعد %{count}متر
mapper since: "مُخطط منذ:" mapper since: "مُخطط منذ:"
moderator_history: اعرض العرقلات المعطاة moderator_history: اعرض العرقلات المعطاة
my comments: تعليقاتي
my diary: يوميتي my diary: يوميتي
my edits: مساهماتي my edits: مساهماتي
my settings: إعداداتي my settings: إعداداتي
my traces: آثاري my traces: آثاري
nearby users: "مستخدمين أيضًا بالجوار:" nearby users: "مستخدمين أيضًا بالجوار:"
nearby_changesets: تصفح كل حزم التغييرات من قبل المستخدمين في المقربة
nearby_diaries: تصفح جميع مدخلات مدونات المستخدمين في المقربة
new diary entry: مدخلة يومية جديدة new diary entry: مدخلة يومية جديدة
no friends: لم تقم بإضافة أي أصدقاء بعد. no friends: لم تقم بإضافة أي أصدقاء بعد.
no nearby users: لا يوجد بعد المزيد من المستخدمين أفصحوا عن تخطيطهم بالجوار. no nearby users: لا يوجد بعد المزيد من المستخدمين أفصحوا عن تخطيطهم بالجوار.
@ -1546,11 +1688,14 @@ ar:
creator_name: المنشئ creator_name: المنشئ
display_name: مستخدم مُعرقل display_name: مستخدم مُعرقل
edit: تعديل edit: تعديل
next: التالي »
not_revoked: (لم تلغ) not_revoked: (لم تلغ)
previous: « السابق
reason: السبب العرقلة reason: السبب العرقلة
revoke: ابطل! revoke: ابطل!
revoker_name: مُبطل بواسطة revoker_name: مُبطل بواسطة
show: اعرض show: اعرض
showing_page: جاري عرض الصفحة %{page}
status: الحالة status: الحالة
period: period:
few: "%{count} ساعات" few: "%{count} ساعات"

View file

@ -183,10 +183,10 @@ arz:
data_layer_name: البيانات data_layer_name: البيانات
details: التفاصيل details: التفاصيل
drag_a_box: اسحب مربع على الخريطه لاختيار منطقة drag_a_box: اسحب مربع على الخريطه لاختيار منطقة
edited_by_user_at_timestamp: عُدّل بواسطه [[user]] فى [[timestamp]] edited_by_user_at_timestamp: عُدّل بواسطه %{user} فى %{timestamp}
history_for_feature: تاريخ الــ[[feature]] history_for_feature: تاريخ الــ%{feature}
load_data: تحميل البيانات load_data: تحميل البيانات
loaded_an_area_with_num_features: "لقد قمت بتحميل منطقه تحتوى على [[num_features]] ميّزه. بصفه عامّه، بعض المتصفحات قد لا تتوافق بشكل جيد مع عرض هذه الكميه من البيانات. عمومًا، تعمل المتصفحات بشكل أفضل فى عرض أقل من 100 ميّزه فى وقت واحد: القيام بأى شيء آخر قد يجعل المتصفح بطيء أو لن يستجيب. إن كنت متأكدًا من أنك ترغب فى عرض هذه البيانات، يمكنك القيام بذلك عن طريق النقر على الزر أدناه." loaded_an_area_with_num_features: "لقد قمت بتحميل منطقه تحتوى على %{num_features} ميّزه. بصفه عامّه، بعض المتصفحات قد لا تتوافق بشكل جيد مع عرض هذه الكميه من البيانات. عمومًا، تعمل المتصفحات بشكل أفضل فى عرض أقل من 100 ميّزه فى وقت واحد: القيام بأى شيء آخر قد يجعل المتصفح بطيء أو لن يستجيب. إن كنت متأكدًا من أنك ترغب فى عرض هذه البيانات، يمكنك القيام بذلك عن طريق النقر على الزر أدناه."
loading: تحميل... loading: تحميل...
manually_select: اختر يدويًا منطقه أخرى manually_select: اختر يدويًا منطقه أخرى
object_list: object_list:
@ -196,18 +196,18 @@ arz:
heading: قائمه الكائنات heading: قائمه الكائنات
history: history:
type: type:
node: عقده [[id]] node: عقده %{id}
way: طريق [[id]] way: طريق %{id}
selected: selected:
type: type:
node: عقده [[id]] node: عقده %{id}
way: طريق [[id]] way: طريق %{id}
type: type:
node: عقدة node: عقدة
way: طريق way: طريق
private_user: مستخدم الخاص private_user: مستخدم الخاص
show_history: أظهر التاريخ show_history: أظهر التاريخ
unable_to_load_size: "غير قادر على التحميل: حجم مربع الإحاطه [[bbox_size]] كبير جدًا (يجب أن يكون أصغر من %{max_bbox_size})" unable_to_load_size: "غير قادر على التحميل: حجم مربع الإحاطه %{bbox_size} كبير جدًا (يجب أن يكون أصغر من %{max_bbox_size})"
wait: انتظر... wait: انتظر...
zoom_or_select: قم بالتكبير أو اختر منطقه من الخريطه لعرضها zoom_or_select: قم بالتكبير أو اختر منطقه من الخريطه لعرضها
tag_details: tag_details:
@ -781,8 +781,6 @@ arz:
two: صندوق بريدك يحوى رسالتين غير مقروءتين two: صندوق بريدك يحوى رسالتين غير مقروءتين
zero: صندوق بريدك لا يحوى رسائل غير مقروءة zero: صندوق بريدك لا يحوى رسائل غير مقروءة
intro_1: خريطه الشارع المفتوحه هى خريطه للعالم كله قابله للتحرير حره ومجانيه. قام بإنشائها أشخاص مثلك. intro_1: خريطه الشارع المفتوحه هى خريطه للعالم كله قابله للتحرير حره ومجانيه. قام بإنشائها أشخاص مثلك.
license:
title: بيانات خريطه الشارع المفتوحه مرخصه تحت رخصه المشاع الإبداعى، النسبه، نسخه 2.0
log_in: دخول log_in: دخول
log_in_tooltip: سجّل الدخول مع حساب موجود log_in_tooltip: سجّل الدخول مع حساب موجود
logo: logo:
@ -1004,10 +1002,6 @@ arz:
index: index:
js_1: أنت إما تستخدم متصفح لا يدعم جافا سكريبت، أو أنك عطلت استعمال جافا سكريبت. js_1: أنت إما تستخدم متصفح لا يدعم جافا سكريبت، أو أنك عطلت استعمال جافا سكريبت.
js_2: خريطه الشارع المفتوحه تستخدم جافا سكريبت لخريطتها المنزلقه. js_2: خريطه الشارع المفتوحه تستخدم جافا سكريبت لخريطتها المنزلقه.
license:
license_name: المشاع الإبداعى، النسبه، نسخه 2.0
notice: مرخص بموجب رخصه %{license_name} بواسطه %{project_name} ومساهميه.
project_name: مشروع خريطه الشارع المفتوحة
permalink: وصله دائمة permalink: وصله دائمة
shortlink: وصله قصيرة shortlink: وصله قصيرة
key: key:

View file

@ -201,11 +201,11 @@ ast:
data_layer_name: Ver datos del mapa data_layer_name: Ver datos del mapa
details: Detalles details: Detalles
drag_a_box: Arrastra un cuadru nel mapa pa seleicionar un área drag_a_box: Arrastra un cuadru nel mapa pa seleicionar un área
edited_by_user_at_timestamp: Editao por [[user]] el [[timestamp]] edited_by_user_at_timestamp: Editao por %{user} el %{timestamp}
hide_areas: Anubrir árees hide_areas: Anubrir árees
history_for_feature: Historial de [[feature]] history_for_feature: Historial de %{feature}
load_data: Cargar datos load_data: Cargar datos
loaded_an_area_with_num_features: "Cargasti un área que contién [[num_features]] carauterístiques. Polo xeneral, dellos restoladores nun pueden amosar bien esta cantidá de datos. Normalmente los restoladores funcionen meyor amosando menos de [[max_features]] carauterístiques al tiempu: d'otra miente se tornen lentos/dexen de responder. Si tas seguru d'amosar los datos, pues facelo calcando nel botón d'abaxo." loaded_an_area_with_num_features: "Cargasti un área que contién %{num_features} carauterístiques. Polo xeneral, dellos restoladores nun pueden amosar bien esta cantidá de datos. Normalmente los restoladores funcionen meyor amosando menos de %{max_features} carauterístiques al tiempu: d'otra miente se tornen lentos/dexen de responder. Si tas seguru d'amosar los datos, pues facelo calcando nel botón d'abaxo."
loading: Cargando... loading: Cargando...
manually_select: Seleiciona manualmente un área distinta manually_select: Seleiciona manualmente un área distinta
object_list: object_list:
@ -215,19 +215,19 @@ ast:
heading: Llista d'oxetos heading: Llista d'oxetos
history: history:
type: type:
node: Nodiu [[id]] node: Nodiu %{id}
way: Vía [[id]] way: Vía %{id}
selected: selected:
type: type:
node: Nodiu [[id]] node: Nodiu %{id}
way: Vía [[id]] way: Vía %{id}
type: type:
node: Nodiu node: Nodiu
way: Vía way: Vía
private_user: usuariu priváu private_user: usuariu priváu
show_areas: Amosar árees show_areas: Amosar árees
show_history: Ver historial show_history: Ver historial
unable_to_load_size: "Nun se pue cargar: El tamañu del cuadru de llende [[bbox_size]] ye demasiao grande (tien de ser menor de %{max_bbox_size})" unable_to_load_size: "Nun se pue cargar: El tamañu del cuadru de llende %{bbox_size} ye demasiao grande (tien de ser menor de %{max_bbox_size})"
wait: Espera... wait: Espera...
zoom_or_select: Amplía o seleiciona un área del mapa pa velu zoom_or_select: Amplía o seleiciona un área del mapa pa velu
tag_details: tag_details:
@ -969,8 +969,6 @@ ast:
intro_2_html: Los datos son llibres pa %{download} y %{use} baxo la so %{license}. %{create_account} p'ameyorar el mapa. intro_2_html: Los datos son llibres pa %{download} y %{use} baxo la so %{license}. %{create_account} p'ameyorar el mapa.
intro_2_license: llicencia abierta intro_2_license: llicencia abierta
intro_2_use: usar intro_2_use: usar
license:
title: Los datos d'OpenStreetMap tan llicenciaos baxo la Llicencia Xenérica Creative Commons Attribution-Share Alike 2.0
log_in: identificase log_in: identificase
log_in_tooltip: Entrar nuna cuenta esistente log_in_tooltip: Entrar nuna cuenta esistente
logo: logo:
@ -989,7 +987,6 @@ ast:
partners_ucl: el Centru de RV de la UCL partners_ucl: el Centru de RV de la UCL
sign_up: dase d'alta sign_up: dase d'alta
sign_up_tooltip: Crear una cuenta pa editar sign_up_tooltip: Crear una cuenta pa editar
sotm2012: ¡Ven a la Conferencia OpenStreetMap 2012, L'Estáu del Mapa, del 6 al 8 de setiembre en Tokio!
tag_line: El wikimapamundi llibre tag_line: El wikimapamundi llibre
user_diaries: Diarios d'usuariu user_diaries: Diarios d'usuariu
user_diaries_tooltip: Ver los diarios d'usuariu user_diaries_tooltip: Ver los diarios d'usuariu
@ -1006,7 +1003,6 @@ ast:
title: Tocante a esta traducción title: Tocante a esta traducción
legal_babble: legal_babble:
contributors_at_html: "<strong>Austria</strong>: Contien datos de\n<a href=\"http://data.wien.gv.at/\">Stadt Wien</a> (baxo\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>),\n<a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">Land Vorarlberg</a> y\nLand Tirol (baxo <a href=\"http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/\">CC-BY AT con enmiendes</a>)." contributors_at_html: "<strong>Austria</strong>: Contien datos de\n<a href=\"http://data.wien.gv.at/\">Stadt Wien</a> (baxo\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>),\n<a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">Land Vorarlberg</a> y\nLand Tirol (baxo <a href=\"http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/\">CC-BY AT con enmiendes</a>)."
contributors_au_html: "<strong>Australia</strong>: Contien datos de barrios basaos en datos de Australian Bureau of\nStatistics."
contributors_ca_html: "<strong>Canadá</strong>: Contien datos de GeoBase&reg;, GeoGratis (&copy; Department of Natural\nResources Canada), CanVec (&copy; Department of Natural\nResources Canada), y StatCan (Geography Division,\nStatistics Canada)." contributors_ca_html: "<strong>Canadá</strong>: Contien datos de GeoBase&reg;, GeoGratis (&copy; Department of Natural\nResources Canada), CanVec (&copy; Department of Natural\nResources Canada), y StatCan (Geography Division,\nStatistics Canada)."
contributors_footer_1_html: "Pa más detalles d'estes, y otres fontes que s'usaron p'ayudar a\nameyorar OpenStreetMap, por favor, llei la <a\nhref=\"http://wiki.openstreetmap.org/wiki/Contributors\">Páxina\nde los collaboradores</a> na Wiki d'OpenStreetMap." contributors_footer_1_html: "Pa más detalles d'estes, y otres fontes que s'usaron p'ayudar a\nameyorar OpenStreetMap, por favor, llei la <a\nhref=\"http://wiki.openstreetmap.org/wiki/Contributors\">Páxina\nde los collaboradores</a> na Wiki d'OpenStreetMap."
contributors_footer_2_html: La inclusión de datos n'OpenStreetMap nun significa que'l fornidor de los datos orixinales sofite OpenStreetMap, ufra garantía dala o aceute dalguna responsabilidá. contributors_footer_2_html: La inclusión de datos n'OpenStreetMap nun significa que'l fornidor de los datos orixinales sofite OpenStreetMap, ufra garantía dala o aceute dalguna responsabilidá.
@ -1015,7 +1011,6 @@ ast:
contributors_intro_html: La nuesa llicencia CC BY-SA requier &ldquo;reconocer al autor orixinal, de manera razonable pal mediu o los medios que teas utilizando&rdquo;. Los mapeadores individuales d'OSM nun piden más créditu que &ldquo;Collaboradores d'OpenStreetMap&rdquo;, pero cuando s'incluye n'OpenStreetMap información d'un organismu nacional de cartografía o d'otra fuente importante, ye razonable reproducir el so créditu direutamente o enllazar al mesmu nesta páxina. contributors_intro_html: La nuesa llicencia CC BY-SA requier &ldquo;reconocer al autor orixinal, de manera razonable pal mediu o los medios que teas utilizando&rdquo;. Los mapeadores individuales d'OSM nun piden más créditu que &ldquo;Collaboradores d'OpenStreetMap&rdquo;, pero cuando s'incluye n'OpenStreetMap información d'un organismu nacional de cartografía o d'otra fuente importante, ye razonable reproducir el so créditu direutamente o enllazar al mesmu nesta páxina.
contributors_nl_html: "<strong>Holanda</strong>: Contien datos &copy; AND, 2007\n(<a href=\"http://www.and.com\">www.and.com</a>)" contributors_nl_html: "<strong>Holanda</strong>: Contien datos &copy; AND, 2007\n(<a href=\"http://www.and.com\">www.and.com</a>)"
contributors_nz_html: "<strong>Nueva Zelanda</strong>: Contien datos sacaos de Land Information New Zealand. Crown Copyright reserved." contributors_nz_html: "<strong>Nueva Zelanda</strong>: Contien datos sacaos de Land Information New Zealand. Crown Copyright reserved."
contributors_pl_html: "<strong>Polonia</strong>: Contien datos de <a\nhref=\"http://ump.waw.pl/\">mapes UMP-pcPL</a>. Copyright collaboradores de\nUMP-pcPL.\n<a href=\"http://wiki.openstreetmap.org/wiki/UMP2OSM_Importing\">\nMás tocante al usu n&apos;OSM de datos UMP</a>"
contributors_title_html: Los nuesos collaboradores contributors_title_html: Los nuesos collaboradores
contributors_za_html: "<strong>Sudáfrica</strong>: Contién datos sacaos de\n<a href=\"http://www.ngi.gov.za/\">Chief Directorate:\nNational Geo-Spatial Information</a>, State copyright reserved." contributors_za_html: "<strong>Sudáfrica</strong>: Contién datos sacaos de\n<a href=\"http://www.ngi.gov.za/\">Chief Directorate:\nNational Geo-Spatial Information</a>, State copyright reserved."
credit_1_html: Si uses les imaxes de mapes d'OpenStreetMap, te pidimos que'l testu de reconocimientu ponga polo menos &ldquo;&copy; Collaboradores d'OpenStreetMap, CC BY-SA&rdquo;. Si sólo vas usar datos del mapa, lo que pidimos ye &ldquo;Datos del mapa &copy; Collaboradores d'OpenstreetMap, CC BY-SA&rdquo;. credit_1_html: Si uses les imaxes de mapes d'OpenStreetMap, te pidimos que'l testu de reconocimientu ponga polo menos &ldquo;&copy; Collaboradores d'OpenStreetMap, CC BY-SA&rdquo;. Si sólo vas usar datos del mapa, lo que pidimos ye &ldquo;Datos del mapa &copy; Collaboradores d'OpenstreetMap, CC BY-SA&rdquo;.
@ -1025,7 +1020,6 @@ ast:
intro_2_html: Pues copiar, distribuir, tresmitir y adautar los nuesos mapes y datos de mou llibre, mentanto des reconocimientu a OpenStreetMap y a los sos collaboradores. Si camudes o creas conteníu sobre los nuesos mapes o datos, podrás distribuir el resultáu baxo la mesma llicencia. El <a href="http://creativecommons.org/licenses/by-sa/2.0/legalcode">códigu llegal completu</a> t'esplica los tos drechos y obligaciones. intro_2_html: Pues copiar, distribuir, tresmitir y adautar los nuesos mapes y datos de mou llibre, mentanto des reconocimientu a OpenStreetMap y a los sos collaboradores. Si camudes o creas conteníu sobre los nuesos mapes o datos, podrás distribuir el resultáu baxo la mesma llicencia. El <a href="http://creativecommons.org/licenses/by-sa/2.0/legalcode">códigu llegal completu</a> t'esplica los tos drechos y obligaciones.
more_1_html: "Llei más tocante a cómo utilizar los nuesos datos en <a\nhref=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">Entrugues y rempuestes llegales</a> (n'inglés)." more_1_html: "Llei más tocante a cómo utilizar los nuesos datos en <a\nhref=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">Entrugues y rempuestes llegales</a> (n'inglés)."
more_2_html: Recordamos a los collaboradores d'OSM qu'enxamás amiesten datos que vengan d'una fonte con drechos d'autor acutaos (p. ex. de Google Maps o mapes impresos) ensin el permisu esplícitu de los dueños de los drechos d'autor. more_2_html: Recordamos a los collaboradores d'OSM qu'enxamás amiesten datos que vengan d'una fonte con drechos d'autor acutaos (p. ex. de Google Maps o mapes impresos) ensin el permisu esplícitu de los dueños de los drechos d'autor.
more_3_html: "Anque OpenStreetMap son datos abiertos, nun podemos ufrir una API de mapes de baldre pa desendolcadores d'aplicaciones pa terceros.\nLlee la nuesa <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">Política d'usu de la API</a> (n'inglés),\n<a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">Política d'usu d'imaxes</a> (n'inglés)\ny <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\">Política d'usu de Nominatim</a> (n'inglés tamién)."
more_title_html: Pa saber más more_title_html: Pa saber más
title_html: Drechos d'autor y llicencia title_html: Drechos d'autor y llicencia
native: native:
@ -1300,10 +1294,6 @@ ast:
index: index:
js_1: O tas usando un restolador ensin sofitu pa JavaScript, o tienes JavaScript desactiváu. js_1: O tas usando un restolador ensin sofitu pa JavaScript, o tienes JavaScript desactiváu.
js_2: OpenStreetMap usa JavaScript pal so mapa eslizante. js_2: OpenStreetMap usa JavaScript pal so mapa eslizante.
license:
license_name: Creative Commons Attribution-Share Alike 2.0
notice: Llicenciao baxo llicencia %{license_name} pol %{project_name} y los sos collaboradores.
project_name: Proyeutu OpenStreetMap
permalink: Enllaz permanente permalink: Enllaz permanente
remote_failed: Falló la edición - asegúrate de tener cargáu JOSM o Merkaartor y de que tea activada la opción de control remotu remote_failed: Falló la edición - asegúrate de tener cargáu JOSM o Merkaartor y de que tea activada la opción de control remotu
shortlink: Enllaz curtiu shortlink: Enllaz curtiu
@ -1592,8 +1582,6 @@ ast:
lost password link: ¿Perdisti la conseña? lost password link: ¿Perdisti la conseña?
new to osm: ¿Yes nuevu con OpenStreetMap? new to osm: ¿Yes nuevu con OpenStreetMap?
no account: ¿Nun tienes una cuenta? no account: ¿Nun tienes una cuenta?
notice: <a href="http://www.osmfoundation.org/wiki/License/We_Are_Changing_The_License">Saber más tocante al próximu cambiu de llicencia d'OpenStreetMap</a> (<a href="http://wiki.openstreetmap.org/wiki/ODbL/We_Are_Changing_The_License">traducciones</a>) (<a href="http://wiki.openstreetmap.org/wiki/Talk:ODbL/Upcoming">alderique</a>)
notice_terms: OpenStreetMap va movese a una llicencia nueva dende'l 1 d'abril de 2012. Ye igual d'abierta que l'actual, pero les partes llegales s'acomoden meyor a la nuesa base de datos del mapa. Gustaría-nos caltener les tos collaboraciones n'OpenStreetMap, pero namái podemos facelo si aceutes que les distribuyamos baxo la nueva llicencia. D'otra miente, tendremos que desaniciales de la base de datos.<br /><br />Por favor, entra na to cuenta y toma dellos segundos pa revisar y aceutar los nuevos términos. ¡Gracies!
openid: "%{logo} OpenID:" openid: "%{logo} OpenID:"
openid invalid: Sentímoslo, la to OpenID paez que ta mal formada openid invalid: Sentímoslo, la to OpenID paez que ta mal formada
openid missing provider: Sentímoslo, nun pudimos ponenos en contautu col to sirvidor d'OpenID openid missing provider: Sentímoslo, nun pudimos ponenos en contautu col to sirvidor d'OpenID
@ -1638,7 +1626,9 @@ ast:
title: Conseña perdida title: Conseña perdida
make_friend: make_friend:
already_a_friend: Yá yes collaciu de %{name}. already_a_friend: Yá yes collaciu de %{name}.
button: Amestar como amigu
failed: Lo sentimos, hebo un fallu al amestar a %{name} como collaciu. failed: Lo sentimos, hebo un fallu al amestar a %{name} como collaciu.
heading: ¿Amestar a %{user} a los amigos?
success: "%{name} agora ye amigu tuyu." success: "%{name} agora ye amigu tuyu."
new: new:
confirm email address: "Confirmar direición de corréu:" confirm email address: "Confirmar direición de corréu:"
@ -1671,6 +1661,8 @@ ast:
nearby mapper: Mapeador próximu nearby mapper: Mapeador próximu
your location: El to allugamientu your location: El to allugamientu
remove_friend: remove_friend:
button: Desaniciar como amigu
heading: ¿Desaniciar a %{user} de los amigos?
not_a_friend: "%{name} nun ye un de los tos amigos." not_a_friend: "%{name} nun ye un de los tos amigos."
success: "%{name} se desanició de los tos amigos." success: "%{name} se desanició de los tos amigos."
reset_password: reset_password:

View file

@ -168,6 +168,11 @@ be-Tarask:
paging_nav: paging_nav:
of: з of: з
showing_page: Паказ старонкі showing_page: Паказ старонкі
redacted:
type:
node: вузел
relation: адносіны
way: дарога
relation: relation:
download_xml: Загрузіць XML download_xml: Загрузіць XML
relation: Адносіны relation: Адносіны
@ -195,11 +200,11 @@ be-Tarask:
data_layer_name: Праглядзець зьвесткі мапы data_layer_name: Праглядзець зьвесткі мапы
details: Падрабязнасьці details: Падрабязнасьці
drag_a_box: Расьцягніце рамку для выбару абшару drag_a_box: Расьцягніце рамку для выбару абшару
edited_by_user_at_timestamp: Рэдагаваны [[user]] у [[timestamp]] edited_by_user_at_timestamp: Рэдагаваны %{user} у %{timestamp}
hide_areas: Схаваць вобласьці hide_areas: Схаваць вобласьці
history_for_feature: Гісторыя [[feature]] history_for_feature: Гісторыя %{feature}
load_data: Загрузіць зьвесткі load_data: Загрузіць зьвесткі
loaded_an_area_with_num_features: Вы загрузілі мясцовасьць, якая ўтрымлівае [[num_features]] аб'ектаў. Увогуле, некаторыя браўзэры ня змогуць апрацаваць такую колькасьць зьвестак. Звычайна, найлепшы вынік назіраецца, калі аб'ектаў менш за 100, пры большай колькасьці браўзэр можа страціць хуткасьць. Калі Вы ўпэўненыя, што жадаеце паказаць гэтыя зьвесткі, націсьніце кнопку ніжэй. loaded_an_area_with_num_features: Вы загрузілі мясцовасьць, якая ўтрымлівае %{num_features} аб'ектаў. Увогуле, некаторыя браўзэры ня змогуць апрацаваць такую колькасьць зьвестак. Звычайна, найлепшы вынік назіраецца, калі аб'ектаў менш за 100, пры большай колькасьці браўзэр можа страціць хуткасьць. Калі Вы ўпэўненыя, што жадаеце паказаць гэтыя зьвесткі, націсьніце кнопку ніжэй.
loading: Загрузка… loading: Загрузка…
manually_select: Выбраць іншы абшар manually_select: Выбраць іншы абшар
object_list: object_list:
@ -209,19 +214,19 @@ be-Tarask:
heading: Сьпіс аб'ектаў heading: Сьпіс аб'ектаў
history: history:
type: type:
node: Вузел [[id]] node: Вузел %{id}
way: Шлях [[id]] way: Шлях %{id}
selected: selected:
type: type:
node: Вузел [[id]] node: Вузел %{id}
way: Шлях [[id]] way: Шлях %{id}
type: type:
node: Вузел node: Вузел
way: Шлях way: Шлях
private_user: прыватны карыстальнік private_user: прыватны карыстальнік
show_areas: Паказаць вобласьці show_areas: Паказаць вобласьці
show_history: Паказаць гісторыю show_history: Паказаць гісторыю
unable_to_load_size: "Немагчыма загрузіць: памер абшару [[bbox_size]] занадта вялікі (павінен быць меней чым %{max_bbox_size})" unable_to_load_size: "Немагчыма загрузіць: памер абшару %{bbox_size} занадта вялікі (павінен быць меней чым %{max_bbox_size})"
wait: Пачакайце… wait: Пачакайце…
zoom_or_select: Павялічце маштаб ці выберыце абшар на мапе для прагляду zoom_or_select: Павялічце маштаб ці выберыце абшар на мапе для прагляду
tag_details: tag_details:
@ -239,8 +244,8 @@ be-Tarask:
way: дарога way: дарога
way: way:
download_xml: Загрузіць XML download_xml: Загрузіць XML
edit: рэдагаваць edit: Рэдагаваць дарогу
view_history: паказаць гісторыю view_history: Праглядзець гісторыю
way: Шлях way: Шлях
way_title: "Шлях: %{way_name}" way_title: "Шлях: %{way_name}"
way_details: way_details:
@ -251,7 +256,7 @@ be-Tarask:
part_of: "Частка:" part_of: "Частка:"
way_history: way_history:
download_xml: Загрузіць XML download_xml: Загрузіць XML
view_details: паказаць падрабязнасьці view_details: Праглядзець падрабязнасьці
way_history: Гісторыя зьменаў дарогі way_history: Гісторыя зьменаў дарогі
way_history_title: "Гісторыя зьменаў шляху: %{way_name}" way_history_title: "Гісторыя зьменаў шляху: %{way_name}"
changeset: changeset:
@ -295,6 +300,8 @@ be-Tarask:
timeout: timeout:
sorry: Прабачце, сьпіс набораў зьменаў, які Вы запыталі, занадта вялікі для атрыманьня. sorry: Прабачце, сьпіс набораў зьменаў, які Вы запыталі, занадта вялікі для атрыманьня.
diary_entry: diary_entry:
comments:
post: Запіс
diary_comment: diary_comment:
comment_from: Камэнтар %{link_user} ад %{comment_created_at} comment_from: Камэнтар %{link_user} ад %{comment_created_at}
confirm: Пацьвердзіць confirm: Пацьвердзіць
@ -385,6 +392,7 @@ be-Tarask:
licence: Ліцэнзія licence: Ліцэнзія
longitude: "Даўгата:" longitude: "Даўгата:"
manually_select: Выбраць іншы абшар manually_select: Выбраць іншы абшар
map_image: Выява мапы (паказвае стандартны слой)
max: максымум max: максымум
options: Устаноўкі options: Устаноўкі
osm_xml_data: Зьвесткі OpenStreetMap у фармаце XML osm_xml_data: Зьвесткі OpenStreetMap у фармаце XML
@ -424,6 +432,12 @@ be-Tarask:
south_east: паўднёвы ўсход south_east: паўднёвы ўсход
south_west: паўднёвы захад south_west: паўднёвы захад
west: захад west: захад
distance:
few: каля %{count} км
many: каля %{count} км
one: каля %{count} км
other: каля %{count} км
zero: меней 1 км
results: results:
more_results: Больш вынікаў more_results: Больш вынікаў
no_results: Нічога ня знойдзена no_results: Нічога ня знойдзена
@ -441,6 +455,11 @@ be-Tarask:
suffix_place: ", %{distance} %{direction} %{placename}" suffix_place: ", %{distance} %{direction} %{placename}"
search_osm_nominatim: search_osm_nominatim:
prefix: prefix:
aeroway:
gate: Выхад на пасадку
helipad: Верталётная пляцоўка
runway: Узлётна-пасадачная паласа
taxiway: Рулёжная дарога
amenity: amenity:
WLAN: Доступ да WiFi WLAN: Доступ да WiFi
airport: Аэрапорт airport: Аэрапорт
@ -892,14 +911,18 @@ be-Tarask:
history: Гісторыя history: Гісторыя
home: дамоў home: дамоў
home_tooltip: Паказаць маё месцазнаходжаньне home_tooltip: Паказаць маё месцазнаходжаньне
inbox_tooltip:
few: Вы маеце %{count} непрачытаныя паведамленьні
many: Вы маеце %{count} непрачытаных паведамленьняў
one: Вы маеце адно непрачытанае паведамленьне
other: Вы маеце %{count} непрачытаных паведамленьняў
zero: У Вас няма непрачытаных паведамленьняў
intro_1: OpenStreetMap — вольная мапа ўсяго сьвету, якую магчыма рэдагаваць. Яе ствараюць такія ж людзі, як Вы. intro_1: OpenStreetMap — вольная мапа ўсяго сьвету, якую магчыма рэдагаваць. Яе ствараюць такія ж людзі, як Вы.
intro_2_create_account: Стварыце рахунак intro_2_create_account: Стварыце рахунак
intro_2_download: загрузіць intro_2_download: загрузіць
intro_2_html: Зьвесткі зьяўляюцца вольнымі для %{download} і %{use} на ўмовах %{license}. %{create_account} каб зьмяняць мапу. intro_2_html: Зьвесткі зьяўляюцца вольнымі для %{download} і %{use} на ўмовах %{license}. %{create_account} каб зьмяняць мапу.
intro_2_license: вольнай ліцэнзіі intro_2_license: вольнай ліцэнзіі
intro_2_use: выкарыстаньні intro_2_use: выкарыстаньні
license:
title: Зьвесткі OpenStreetMap даступныя на ўмовах ліцэнзіі Creative Commons Attribution-Share Alike 2.0 Generic
log_in: увайсьці log_in: увайсьці
log_in_tooltip: Увайсьці з існуючым рахункам log_in_tooltip: Увайсьці з існуючым рахункам
logo: logo:
@ -932,14 +955,12 @@ be-Tarask:
title: Пра гэты пераклад title: Пра гэты пераклад
legal_babble: legal_babble:
contributors_at_html: "<strong>Аўстрыя</strong>: Утрымлівае зьвесткі\n<a href=\"http://data.wien.gv.at/\">горада Вены</a> на ўмовах\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>." contributors_at_html: "<strong>Аўстрыя</strong>: Утрымлівае зьвесткі\n<a href=\"http://data.wien.gv.at/\">горада Вены</a> на ўмовах\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>."
contributors_au_html: "<strong>Аўстралія</strong>: Утрымлівае зьвесткі пра прыгарады ад\nАўстралійскага бюро статыстыкі."
contributors_ca_html: "<strong>Канада</strong>: Утрымлівае зьвесткі\nGeoBase&reg;, GeoGratis (&copy; Дэпартамэнта прыродных рэсурсаў\nКанады), CanVec (&copy; Дэпартамэнта прыродных рэсурсаў\nКанады), і StatCan (Статыстычнага падразьдзяленьня Канады)." contributors_ca_html: "<strong>Канада</strong>: Утрымлівае зьвесткі\nGeoBase&reg;, GeoGratis (&copy; Дэпартамэнта прыродных рэсурсаў\nКанады), CanVec (&copy; Дэпартамэнта прыродных рэсурсаў\nКанады), і StatCan (Статыстычнага падразьдзяленьня Канады)."
contributors_footer_2_html: "Уключэньне зьвестак у OpenStreetMap не азначае, што пастаўшчыкі пачатковых зьвестак\nякім-небудзь чынам падтрымліваюць OpenStreetMap, прадстаўляюць гарантыі, ці\nпрымаюць на сябе якую-небудзь адказнасьць." contributors_footer_2_html: "Уключэньне зьвестак у OpenStreetMap не азначае, што пастаўшчыкі пачатковых зьвестак\nякім-небудзь чынам падтрымліваюць OpenStreetMap, прадстаўляюць гарантыі, ці\nпрымаюць на сябе якую-небудзь адказнасьць."
contributors_fr_html: "<strong>Францыя</strong>: Утрымлівае зьвесткі\nГалоўнага падатковага ўпраўленьня." contributors_fr_html: "<strong>Францыя</strong>: Утрымлівае зьвесткі\nГалоўнага падатковага ўпраўленьня."
contributors_gb_html: "<strong>Вялікабрытанія</strong>: Утрымлівае зьвесткі Ordnance\nSurvey &copy; Crown copyright and database right\n2010." contributors_gb_html: "<strong>Вялікабрытанія</strong>: Утрымлівае зьвесткі Ordnance\nSurvey &copy; Crown copyright and database right\n2010."
contributors_intro_html: "Нашая ліцэнзія CC BY-SA патрабуе ад Вас &ldquo;падаць арыгінальнага аўтара\nу адпаведнасьці з асаблівасьцямі носьбітаў інфармацыі ці іншых выкарыстоўваемых сродкаў\n&rdquo;. Звычайныя ўдзельнікі OSM не патрабуюць пазначэньня аўтарства\nболей чым &ldquo;удзельнікі OpenStreetMap\n&rdquo;, але ў OpenStreetMap ёсьць зьвесткі з нацыянальных\nкартаграфічных агенцтваў ці іншых падобных крыніцаў,\nтаму, магчыма, мае сэнс спасылацца непасрэдна на іх\nяк на крыніцу, ці дадаць спасылку на гэтую старонку." contributors_intro_html: "Нашая ліцэнзія CC BY-SA патрабуе ад Вас &ldquo;падаць арыгінальнага аўтара\nу адпаведнасьці з асаблівасьцямі носьбітаў інфармацыі ці іншых выкарыстоўваемых сродкаў\n&rdquo;. Звычайныя ўдзельнікі OSM не патрабуюць пазначэньня аўтарства\nболей чым &ldquo;удзельнікі OpenStreetMap\n&rdquo;, але ў OpenStreetMap ёсьць зьвесткі з нацыянальных\nкартаграфічных агенцтваў ці іншых падобных крыніцаў,\nтаму, магчыма, мае сэнс спасылацца непасрэдна на іх\nяк на крыніцу, ці дадаць спасылку на гэтую старонку."
contributors_nz_html: "<strong>Новая Зэляндыя</strong>: Утрымлівае зьвесткі пра\nзямельныя рэсурсы Новай Зэляндыі. Crown Copyright reserved." contributors_nz_html: "<strong>Новая Зэляндыя</strong>: Утрымлівае зьвесткі пра\nзямельныя рэсурсы Новай Зэляндыі. Crown Copyright reserved."
contributors_pl_html: "<strong>Польшча</strong>: Утрымлівае зьвесткі з <a\nhref=\"http://ump.waw.pl/\">мапы UMP-pcPL</a>. Copyright\nудзельнікі UMP-pcPL."
contributors_title_html: Нашыя ўдзельнікі contributors_title_html: Нашыя ўдзельнікі
credit_1_html: "Калі Вы выкарыстоўваеце выявы мапаў OpenStreetMap, мы патрабуем, каб\nВы рабілі спасылку хаця б &ldquo;&copy; удзельнікі OpenStreetMap\n, CC BY-SA&rdquo;. Калі Вы выкарыстоўваеце толькі картаграфічныя зьвесткі,\nмы патрабуем наяўнасьць &ldquo;Картаграфічныя зьвесткі &copy; Удзельнікі OpenStreetMap,\nCC BY-SA&rdquo;." credit_1_html: "Калі Вы выкарыстоўваеце выявы мапаў OpenStreetMap, мы патрабуем, каб\nВы рабілі спасылку хаця б &ldquo;&copy; удзельнікі OpenStreetMap\n, CC BY-SA&rdquo;. Калі Вы выкарыстоўваеце толькі картаграфічныя зьвесткі,\nмы патрабуем наяўнасьць &ldquo;Картаграфічныя зьвесткі &copy; Удзельнікі OpenStreetMap,\nCC BY-SA&rdquo;."
credit_2_html: "Дзе магчыма, павінна быць гіпэр-спасылка на OpenStreetMap <a\nhref=\"http://www.openstreetmap.org/\">http://www.openstreetmap.org/</a>\nі на CC BY-SA <a\nhref=\"http://creativecommons.org/licenses/by-sa/2.0/\">http://creativecommons.org/licenses/by-sa/2.0/</a>. Калі\nВы выкарыстоўваеце носьбіты, дзе выкарыстаньне спасылак немагчымае (напр.\nдрукаваныя працы), мы прапануем накіроўваць Вашым чытачоў на\nwww.openstreetmap.org (магчымае выкарыстаньне поўнага адрасу\n&lsquo;OpenStreetMap&rsquo;) і на\nwww.creativecommons.org." credit_2_html: "Дзе магчыма, павінна быць гіпэр-спасылка на OpenStreetMap <a\nhref=\"http://www.openstreetmap.org/\">http://www.openstreetmap.org/</a>\nі на CC BY-SA <a\nhref=\"http://creativecommons.org/licenses/by-sa/2.0/\">http://creativecommons.org/licenses/by-sa/2.0/</a>. Калі\nВы выкарыстоўваеце носьбіты, дзе выкарыстаньне спасылак немагчымае (напр.\nдрукаваныя працы), мы прапануем накіроўваць Вашым чытачоў на\nwww.openstreetmap.org (магчымае выкарыстаньне поўнага адрасу\n&lsquo;OpenStreetMap&rsquo;) і на\nwww.creativecommons.org."
@ -948,7 +969,6 @@ be-Tarask:
intro_2_html: "Вы можаце капіяваць, распаўсюджваць, перадаваць і зьмяняць нашыя мапы\nі зьвесткі, да той пары, пакуль Вы спасылаецеся на OpenStreetMap і яе\nўдзельнікаў. Калі Вы зьмяняеце ці выкарыстоўваеце нашыя мапы і зьвесткі, Вы можаце\nраспаўсюджваць вынікі толькі на ўмовах такой жа ліцэнзіі. Поўны тэкст ліцэнзіі\n<a\nhref=\"http://creativecommons.org/licenses/by-sa/2.0/legalcode\">legal\ncode</a> растлумачыць Вам правы і адказнасьці." intro_2_html: "Вы можаце капіяваць, распаўсюджваць, перадаваць і зьмяняць нашыя мапы\nі зьвесткі, да той пары, пакуль Вы спасылаецеся на OpenStreetMap і яе\nўдзельнікаў. Калі Вы зьмяняеце ці выкарыстоўваеце нашыя мапы і зьвесткі, Вы можаце\nраспаўсюджваць вынікі толькі на ўмовах такой жа ліцэнзіі. Поўны тэкст ліцэнзіі\n<a\nhref=\"http://creativecommons.org/licenses/by-sa/2.0/legalcode\">legal\ncode</a> растлумачыць Вам правы і адказнасьці."
more_1_html: "Даведайцеся болей пра выкарыстаньне нашых зьвестак на <a\nhref=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">старонцы адказаў\nі пытаньняў</a>." more_1_html: "Даведайцеся болей пра выкарыстаньне нашых зьвестак на <a\nhref=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">старонцы адказаў\nі пытаньняў</a>."
more_2_html: "Удзельнікі OSM павінны памятаць пра тое, што забаронена дадаваць зьвесткі\nз любых крыніцаў абароненых аўтарскім правам (напрыклад, Google Maps ці друкаваных мапаў)\nбез папярэдняга дазволу ўладальнікаў аўтарскіх правоў." more_2_html: "Удзельнікі OSM павінны памятаць пра тое, што забаронена дадаваць зьвесткі\nз любых крыніцаў абароненых аўтарскім правам (напрыклад, Google Maps ці друкаваных мапаў)\nбез папярэдняга дазволу ўладальнікаў аўтарскіх правоў."
more_3_html: "Ня гледзячы на тое, што OpenStreetMap утрымлівае вольныя зьвесткі, мы ня можам\nдазволіць бясплатны API да нашых мапаў для староньніх распрацоўшчыкаў.\nГлядзіце нашыя <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">Умовы выкарыстаньня</a>,\n<a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">Умовы выкарыстаньня частак мапаў</a>\nі <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\">Умовы выкарыстаньня Nominatim</a>."
more_title_html: Даведацца болей more_title_html: Даведацца болей
title_html: Аўтарскія правы і ліцэнзія title_html: Аўтарскія правы і ліцэнзія
native: native:
@ -964,7 +984,17 @@ be-Tarask:
from: Ад from: Ад
messages: Вы маеце %{new_messages} і %{old_messages} messages: Вы маеце %{new_messages} і %{old_messages}
my_inbox: Мае ўваходзячыя my_inbox: Мае ўваходзячыя
new_messages:
few: "%{count} новыя паведамленьні"
many: "%{count} новых паведамленьняў"
one: "%{count} новае паведамленьне"
other: "%{count} новых паведамленьняў"
no_messages_yet: Вы яшчэ ня маеце паведамленьняў. Чаму б не зьвязацца з %{people_mapping_nearby_link}? no_messages_yet: Вы яшчэ ня маеце паведамленьняў. Чаму б не зьвязацца з %{people_mapping_nearby_link}?
old_messages:
few: "%{count} старыя паведамленьня"
many: "%{count} старых паведамленьняў"
one: "%{count} старое паведамленьне"
other: "%{count} старых паведамленьняў"
outbox: зыходзячыя outbox: зыходзячыя
people_mapping_nearby: людзьмі, якія жывуць каля Вас people_mapping_nearby: людзьмі, якія жывуць каля Вас
subject: Тэма subject: Тэма
@ -993,6 +1023,11 @@ be-Tarask:
outbox: outbox:
date: Дата date: Дата
inbox: уваходзячыя inbox: уваходзячыя
messages:
few: Вы маеце %{count} дасланыя паведамленьня
many: Вы маеце %{count} дасланых паведамленьняў
one: Вы маеце %{count} дасланае паведамленьне
other: Вы маеце %{count} дасланых паведамленьняў
my_inbox: Мае %{inbox_link} my_inbox: Мае %{inbox_link}
no_sent_messages: Вы яшчэ не даслалі паведамленьне. Чаму б не зьвязацца з %{people_mapping_nearby_link}? no_sent_messages: Вы яшчэ не даслалі паведамленьне. Чаму б не зьвязацца з %{people_mapping_nearby_link}?
outbox: зыходзячыя outbox: зыходзячыя
@ -1181,10 +1216,6 @@ be-Tarask:
index: index:
js_1: Вы карыстаецеся браўзэрам, які не падтрымлівае ці мае забаронены JavaScript. js_1: Вы карыстаецеся браўзэрам, які не падтрымлівае ці мае забаронены JavaScript.
js_2: OpenStreetMap выкарыстоўвае JavaScript для паказу мапы. js_2: OpenStreetMap выкарыстоўвае JavaScript для паказу мапы.
license:
license_name: Creative Commons Attribution-Share Alike 2.0
notice: Даступна на ўмовах ліцэнзіі %{license_name}, аўтарскія правы належаць %{project_name} і яго ўдзельнікам.
project_name: OpenStreetMap
permalink: Сталая спасылка permalink: Сталая спасылка
remote_failed: Памылка рэдагаваньня. Упэўніцеся, што JOSM ці Merkaartor загружаныя і дазволеная магчымасьць аддаленага кіраваньня remote_failed: Памылка рэдагаваньня. Упэўніцеся, што JOSM ці Merkaartor загружаныя і дазволеная магчымасьць аддаленага кіраваньня
shortlink: Кароткая спасылка shortlink: Кароткая спасылка
@ -1257,6 +1288,17 @@ be-Tarask:
unclassified: Дарога раённага значэньня unclassified: Дарога раённага значэньня
unsurfaced: Дарога без пакрыцьця unsurfaced: Дарога без пакрыцьця
wood: Пушча wood: Пушча
markdown_help:
first: Першы элемэнт
heading: Загаловак
headings: Загалоўкі
ordered: Упарадкаваны сьпіс
subheading: Падзагаловак
title_html: Апрацавана з дапамогай <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
unordered: Неўпарадкаваны сьпіс
richtext_area:
edit: Рэдагаваць
preview: Папярэдні прагляд
search: search:
search: Пошук search: Пошук
search_help: "прыклады: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', ці 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>больш прыкладаў…</a>" search_help: "прыклады: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', ці 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>больш прыкладаў…</a>"
@ -1452,8 +1494,6 @@ be-Tarask:
login_button: Увайсьці login_button: Увайсьці
lost password link: Забылі пароль? lost password link: Забылі пароль?
new to osm: Упершыню на OpenStreetMap? new to osm: Упершыню на OpenStreetMap?
notice: <a href="http://www.osmfoundation.org/wiki/License/We_Are_Changing_The_License">Даведайцеся болей пра плянуемыя зьмены ліцэнзіі OpenStreetMap</a> (<a href="http://wiki.openstreetmap.org/wiki/ODbL/We_Are_Changing_The_License">пераклады</a>) (<a href="http://wiki.openstreetmap.org/wiki/Talk:ODbL/Upcoming">абмеркаваньні</a>)
notice_terms: OpenStreetMap перайшоў на новую ліцэнзію з 1 красавіка 2012 году. Яна такая ж адкрытая як папярэдняя, але больш пасуе для нашай базы зьвестак мапы. Мы жадаем, каб Вы засталіся працаваць з OpenStreetMap, але гэта можа адбыцца толькі пасьля таго, калі Вы пагадзіцеся працаваць на ўмовах новай ліцэнзіі. У адваротным выпадку мы выдалім Ваш унёсак з базы зьвестак.<br /><br />Калі ласка, увайдзіце ў сыстэму, потым прачытайце і прыміце новыя ўмовы. Дзякуй!
openid: "%{logo} OpenID:" openid: "%{logo} OpenID:"
openid invalid: Прабачце, здаецца Ваш OpenID уведзены няслушна openid invalid: Прабачце, здаецца Ваш OpenID уведзены няслушна
openid missing provider: Прабачце, немагчыма зьвязацца з Вашым правайдэрам OpenID openid missing provider: Прабачце, немагчыма зьвязацца з Вашым правайдэрам OpenID
@ -1682,6 +1722,11 @@ be-Tarask:
revoker_name: Адкліканае revoker_name: Адкліканае
show: Паказаць show: Паказаць
status: Статус status: Статус
period:
few: "%{count} гадзіны"
many: "%{count} гадзінаў"
one: "%{count} гадзіна"
other: "%{count} гадзінаў"
revoke: revoke:
confirm: Вы ўпэўнены, што жадаеце адклікаць гэтае блякаваньне? confirm: Вы ўпэўнены, што жадаеце адклікаць гэтае блякаваньне?
flash: Гэтае блякаваньне было адкліканае. flash: Гэтае блякаваньне было адкліканае.

View file

@ -138,10 +138,10 @@ be:
data_layer_name: Дадзеныя data_layer_name: Дадзеныя
details: Падрабязней details: Падрабязней
drag_a_box: Расцягніце рамку на карце для выбара іншай мясцовасці drag_a_box: Расцягніце рамку на карце для выбара іншай мясцовасці
edited_by_user_at_timestamp: Зменена [[user]] у [[timestamp]] edited_by_user_at_timestamp: Зменена %{user} у %{timestamp}
history_for_feature: Гісторыя [[feature]] history_for_feature: Гісторыя %{feature}
load_data: Загрузіць дадзеныя load_data: Загрузіць дадзеныя
loaded_an_area_with_num_features: Вы загрузілі мясцовасць, што змяшчае [[num_features]] элементаў. Увогуле, некаторыя вандроўнікі могуць не здолець апрацаваць гэтакую колькасць дадзеных. Звычайна, найлепшы рэзультат назіраецца, калі элементаў менш за 100, пры большай колькасці вандроўнік можа згубіць хуткасць. Калі вы ўпэўненыя, што хочаце паглядзець на гэтыя дадзеныя, націсніце кнопку ніжэй. loaded_an_area_with_num_features: Вы загрузілі мясцовасць, што змяшчае %{num_features} элементаў. Увогуле, некаторыя вандроўнікі могуць не здолець апрацаваць гэтакую колькасць дадзеных. Звычайна, найлепшы рэзультат назіраецца, калі элементаў менш за 100, пры большай колькасці вандроўнік можа згубіць хуткасць. Калі вы ўпэўненыя, што хочаце паглядзець на гэтыя дадзеныя, націсніце кнопку ніжэй.
loading: Загрузка... loading: Загрузка...
manually_select: Выбраць іншую мясцовасць manually_select: Выбраць іншую мясцовасць
object_list: object_list:
@ -151,14 +151,14 @@ be:
heading: Спіс аб'ектаў heading: Спіс аб'ектаў
selected: selected:
type: type:
node: Вузел [[id]] node: Вузел %{id}
way: Лінія [[id]] way: Лінія %{id}
type: type:
node: Вузел node: Вузел
way: Лінія way: Лінія
private_user: таемны карыстальнік private_user: таемны карыстальнік
show_history: Паказаць гісторыю show_history: Паказаць гісторыю
unable_to_load_size: "Нельга загрузіць: парем мяжы [[bbox_size]] занадта вялікі (павінен быць не больш як %{max_bbox_size})" unable_to_load_size: "Нельга загрузіць: парем мяжы %{bbox_size} занадта вялікі (павінен быць не больш як %{max_bbox_size})"
wait: Пачакайце... wait: Пачакайце...
zoom_or_select: Наблізьцеся ці выберыце іншую мясцовасць для агляду zoom_or_select: Наблізьцеся ці выберыце іншую мясцовасць для агляду
tag_details: tag_details:

View file

@ -3,6 +3,7 @@
# Export driver: syck-pecl # Export driver: syck-pecl
# Author: Fohanno # Author: Fohanno
# Author: Fulup # Author: Fulup
# Author: Gwenn-Ael
# Author: Nemo bis # Author: Nemo bis
# Author: Y-M D # Author: Y-M D
br: br:
@ -148,10 +149,10 @@ br:
prev_changeset_tooltip: Aozadenn gent gant %{user} prev_changeset_tooltip: Aozadenn gent gant %{user}
node: node:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
edit: aozañ edit: ↓Aozañ ar skoulm
node: Skoulm node: Skoulm
node_title: "Skoulm : %{node_name}" node_title: "Skoulm : %{node_name}"
view_history: gwelet an istor view_history: ↓Gwelet an istor
node_details: node_details:
coordinates: "Daveennoù :" coordinates: "Daveennoù :"
part_of: "Lodenn eus :" part_of: "Lodenn eus :"
@ -159,7 +160,7 @@ br:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
node_history: Istor ar skoulmoù node_history: Istor ar skoulmoù
node_history_title: "Istor ar skoulm : %{node_name}" node_history_title: "Istor ar skoulm : %{node_name}"
view_details: gwelet ar munudoù view_details: ↓Gwelet ar munudoù
not_found: not_found:
sorry: Ho tigarez, an %{type} gant an id %{id} n'eo ket bet kavet. sorry: Ho tigarez, an %{type} gant an id %{id} n'eo ket bet kavet.
type: type:
@ -171,6 +172,8 @@ br:
of: eus of: eus
showing_page: O tiskouez ar bajenn showing_page: O tiskouez ar bajenn
redacted: redacted:
message_html: ↓Stumm %{version} eus an %{type}-mañ na c'hall ket bezañ diskouezet evel m"eo bet aozet. Sellit ouzh %{redaction_link} evit gouzout hiroc'h, mar plij.
redaction: ↓Aozañ %{id}
type: type:
node: skoulm node: skoulm
relation: darempred relation: darempred
@ -179,7 +182,7 @@ br:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
relation: Darempred relation: Darempred
relation_title: "Darempred : %{relation_name}" relation_title: "Darempred : %{relation_name}"
view_history: gwelet an istor view_history: ↓Gwelet an istor
relation_details: relation_details:
members: "Izili :" members: "Izili :"
part_of: "Lodenn eus :" part_of: "Lodenn eus :"
@ -187,7 +190,7 @@ br:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
relation_history: Istor an darempred relation_history: Istor an darempred
relation_history_title: "Istor an darempred : %{relation_name}" relation_history_title: "Istor an darempred : %{relation_name}"
view_details: gwelet ar munudoù view_details: ↓Gwelet ar munudoù
relation_member: relation_member:
entry_role: "%{type} %{name} evel %{role}" entry_role: "%{type} %{name} evel %{role}"
type: type:
@ -202,11 +205,11 @@ br:
data_layer_name: Furchal e roadennoù ar gartenn data_layer_name: Furchal e roadennoù ar gartenn
details: Munudoù details: Munudoù
drag_a_box: Tresit ur voest war ar gartenn evit diuzañ un takad drag_a_box: Tresit ur voest war ar gartenn evit diuzañ un takad
edited_by_user_at_timestamp: Aozet gant [[user]] da [[timestamp]] edited_by_user_at_timestamp: Aozet gant %{user} da %{timestamp}
hide_areas: Kuzhat an takadoù hide_areas: Kuzhat an takadoù
history_for_feature: Istor evit [[feature]] history_for_feature: Istor evit %{feature}
load_data: Kargañ ar roadennoù load_data: Kargañ ar roadennoù
loaded_an_area_with_num_features: Karget hoc'h eus un takad zo ennañ [[num_features]] elfenn. Peurliesañ o devez poan ar merdeerioù o tiskwel kemend-all a roadennoù, ha labourat a reont gwelloc'h pa vez nebeutoc'h a 100 elfenn da ziskwel, a-hend-all e c'hall ho merdeer bezañ gorrek pe chom hep respont. Ma'z oc'h sur hoc'h eus c'hoant da ziskwel ar roadennoù-mañ, e c'hallit ober dre glikañ war ar bouton amañ dindan. loaded_an_area_with_num_features: ↓Karget hoc'h eus un takad zo ennañ %{num_features} elfenn. Peurliesañ o devez poan ar merdeerioù o tiskwel kemend-all a roadennoù, ha labourat a reont gwelloc'h pa vez nebeutoc'h a 100 elfenn da ziskwel, a-hend-all e c'hall ho merdeer bezañ gorrek pe chom hep respont. Ma'z oc'h sur hoc'h eus c'hoant da ziskwel ar roadennoù-mañ, e c'hallit ober dre glikañ war ar bouton amañ dindan.
loading: O kargañ... loading: O kargañ...
manually_select: Diuzañ un takad disheñvel gant an dorn manually_select: Diuzañ un takad disheñvel gant an dorn
object_list: object_list:
@ -216,19 +219,19 @@ br:
heading: Roll traezoù heading: Roll traezoù
history: history:
type: type:
node: Skoulm [[id]] node: Skoulm %{id}
way: Hent [[id]] way: Hent %{id}
selected: selected:
type: type:
node: Skoulm [[id]] node: Skoulm %{id}
way: hent [[id]] way: hent %{id}
type: type:
node: Skoulm node: Skoulm
way: Hent way: Hent
private_user: implijer prevez private_user: implijer prevez
show_areas: Diskouez an takadoù show_areas: Diskouez an takadoù
show_history: Diskouez an istor show_history: Diskouez an istor
unable_to_load_size: "Ne c'haller ket kargañ : re vras eo ment ar voest bevenniñ ([[bbox_size]]). Ret eo dezhi bezañ bihanoc'h eget %{max_bbox_size})" unable_to_load_size: "Ne c'haller ket kargañ : re vras eo ment ar voest bevenniñ (%{bbox_size}). Ret eo dezhi bezañ bihanoc'h eget %{max_bbox_size})"
wait: Gortozit... wait: Gortozit...
zoom_or_select: Zoumañ pe diuzañ un takad eus ar gartenn da welet zoom_or_select: Zoumañ pe diuzañ un takad eus ar gartenn da welet
tag_details: tag_details:
@ -246,8 +249,8 @@ br:
way: hent way: hent
way: way:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
edit: aozañ edit: ↓Aozañ an hent
view_history: gwelet an istor view_history: ↓Gwelet an istor
way: Hent way: Hent
way_title: "Hent : %{way_name}" way_title: "Hent : %{way_name}"
way_details: way_details:
@ -258,7 +261,7 @@ br:
part_of: "Lodenn eus :" part_of: "Lodenn eus :"
way_history: way_history:
download_xml: Pellgargañ XML download_xml: Pellgargañ XML
view_details: gwelet ar munudoù view_details: ↓Gwelet ar munudoù
way_history: Istor an hent way_history: Istor an hent
way_history_title: "Istor an hent : %{way_name}" way_history_title: "Istor an hent : %{way_name}"
changeset: changeset:
@ -287,6 +290,8 @@ br:
description_nearby: Hollad kemmoù deuet gant an implijerien a-dost description_nearby: Hollad kemmoù deuet gant an implijerien a-dost
description_user: Strolladoù kemmoù gant %{user} description_user: Strolladoù kemmoù gant %{user}
description_user_bbox: Strolladoù kemmoù gant %{user} e-barzh %{bbox} description_user_bbox: Strolladoù kemmoù gant %{user} e-barzh %{bbox}
empty_anon_html: ↓N'eo ket bet aozet c'hoazh
empty_user_html: Hañvalout a ra n'ho peus graet kemm ebet. Evit kregiñ ganti, sellit ouzh <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.3'>Sturlevr an deraouidi</a>.
heading: Hollad kemmoù heading: Hollad kemmoù
heading_bbox: Hollad kemmoù heading_bbox: Hollad kemmoù
heading_friend: Hollad ar c'hemmoù heading_friend: Hollad ar c'hemmoù
@ -305,6 +310,7 @@ br:
comments: comments:
ago: "%{ago} zo" ago: "%{ago} zo"
comment: Evezhiadenn comment: Evezhiadenn
has_commented_on: ↓%{display_name} en deus graet evezhiadennoù diwar-benn ar pennadoù deizlevr-mañ
newer_comments: Evezhiadennoù nevesañ newer_comments: Evezhiadennoù nevesañ
older_comments: Evezhiadennoù koshañ older_comments: Evezhiadennoù koshañ
post: Postañ post: Postañ
@ -461,6 +467,7 @@ br:
prefix: prefix:
aeroway: aeroway:
aerodrome: Nijva aerodrome: Nijva
apron: ↓Parklec'h nijerezioù
gate: Dor gate: Dor
helipad: biñsporzh helipad: biñsporzh
runway: Pistenn runway: Pistenn
@ -507,6 +514,7 @@ br:
ferry_terminal: Porzh karrlistri ferry_terminal: Porzh karrlistri
fire_hydrant: Dour evit an tan fire_hydrant: Dour evit an tan
fire_station: Kazarn pomperien fire_station: Kazarn pomperien
food_court: ↓Predva
fountain: Feunteun fountain: Feunteun
fuel: Trelosk fuel: Trelosk
grave_yard: Bered grave_yard: Bered
@ -567,6 +575,7 @@ br:
youth_centre: Kreizenn evit ar re yaouank youth_centre: Kreizenn evit ar re yaouank
boundary: boundary:
administrative: Bevennoù melestradurel administrative: Bevennoù melestradurel
census: ↓Bevenn stadeg
national_park: Park broadel national_park: Park broadel
protected_area: Takad gwarezet protected_area: Takad gwarezet
bridge: bridge:
@ -588,6 +597,7 @@ br:
footway: Gwenodenn evit an droadeien footway: Gwenodenn evit an droadeien
ford: Roudour ford: Roudour
living_street: Straed annez living_street: Straed annez
milestone: ↓Maen-bonn
minor: Hent dister minor: Hent dister
motorway: Gourhent motorway: Gourhent
motorway_junction: Kengej gourhent motorway_junction: Kengej gourhent
@ -664,6 +674,7 @@ br:
railway: Hent-houarn railway: Hent-houarn
recreation_ground: Leur c'hoari recreation_ground: Leur c'hoari
reservoir: Mirlenn reservoir: Mirlenn
reservoir_watershed: ↓Mirlec'h dour
residential: Takad annez residential: Takad annez
retail: Kenwerzhioù retail: Kenwerzhioù
road: Takad hent road: Takad hent
@ -676,6 +687,7 @@ br:
bird_hide: Bod evned bird_hide: Bod evned
common: Tachennoù foran common: Tachennoù foran
fishing: Takad pesketa fishing: Takad pesketa
fitness_station: ↓Atalier da embreger ar c'horf
garden: Liorzh garden: Liorzh
golf_course: Tachenn golf golf_course: Tachenn golf
ice_rink: Poull-ruzikat ice_rink: Poull-ruzikat
@ -950,6 +962,7 @@ br:
history: Istor history: Istor
home: degemer home: degemer
home_tooltip: Mont da lec'h ar gêr home_tooltip: Mont da lec'h ar gêr
inbox_html: ↓boest resev %{count}
inbox_tooltip: inbox_tooltip:
one: 1 gemennadenn anlennet zo en ho poest resev one: 1 gemennadenn anlennet zo en ho poest resev
other: E-barzh ho poest resev ez eus %{count} kemennadenn anlennet other: E-barzh ho poest resev ez eus %{count} kemennadenn anlennet
@ -957,11 +970,10 @@ br:
intro_1: OpenStreetMap zo ur gartenn digoust eus ar bed a-bezh, a c'haller kemmañ. Graet eo gant tud eveldoc'h. intro_1: OpenStreetMap zo ur gartenn digoust eus ar bed a-bezh, a c'haller kemmañ. Graet eo gant tud eveldoc'h.
intro_2_create_account: Krouiñ ur gont implijer intro_2_create_account: Krouiñ ur gont implijer
intro_2_download: pellgargañ intro_2_download: pellgargañ
intro_2_html: Frank eo ar roadennoù evit bezañ %{download} ha %{use} dindan e %{license}. %{create_account} evit gwellaat ar gartenn.
intro_2_license: Aotre digor intro_2_license: Aotre digor
intro_2_use: implijout intro_2_use: implijout
intro_2_use_url: http://wiki.openstreetmap.org/wiki/Using_OpenStreetMap intro_2_use_url: http://wiki.openstreetmap.org/wiki/Using_OpenStreetMap
license:
title: OpenStreetMap data zo dindan an aotre-implijout Creative Commons Attribution-Share Alike 2.0
log_in: kevreañ log_in: kevreañ
log_in_tooltip: Kevreañ gant ur gont zo anezhi dija log_in_tooltip: Kevreañ gant ur gont zo anezhi dija
logo: logo:
@ -973,9 +985,11 @@ br:
title: Skoazellañ OpenStreetMap gant ur road arc'hant title: Skoazellañ OpenStreetMap gant ur road arc'hant
osm_offline: Ezlinenn eo diaz roadennoù OpenStreetMap evit bremañ e-pad ma pleder gant ul labour kempenn bras. osm_offline: Ezlinenn eo diaz roadennoù OpenStreetMap evit bremañ e-pad ma pleder gant ul labour kempenn bras.
osm_read_only: Diaz roadennoù OpenStreetMap zo da lenn hepken evit bremañ evit bremañ abalamour da labourioù kempenn bras. osm_read_only: Diaz roadennoù OpenStreetMap zo da lenn hepken evit bremañ evit bremañ abalamour da labourioù kempenn bras.
partners_bytemark: ↓Herberc'hiañ Bytemark
partners_html: "%{ucl}, %{ic}, %{bytemark}, ha %{partners} all a ra war-dro an herberc'hiañ." partners_html: "%{ucl}, %{ic}, %{bytemark}, ha %{partners} all a ra war-dro an herberc'hiañ."
partners_ic: Skolaj impalaerel Londrez partners_ic: Skolaj impalaerel Londrez
partners_partners: Kevelourien partners_partners: Kevelourien
partners_ucl: ↓Kreizenn VR an UCL
sign_up: En em enskrivañ sign_up: En em enskrivañ
sign_up_tooltip: Krouiñ ur gont evit aozañ sign_up_tooltip: Krouiñ ur gont evit aozañ
tag_line: Kartenn digoust eus ar bed Wiki tag_line: Kartenn digoust eus ar bed Wiki
@ -994,15 +1008,14 @@ br:
title: Diwar-benn an droidigezh-mañ title: Diwar-benn an droidigezh-mañ
legal_babble: legal_babble:
contributors_at_html: "<strong>Aostria</strong> : Ennañ roadennoù eus\n<a href=\"http://data.wien.gv.at/\">Stadt Wien</a> (dindan\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>.</li> \t\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>), \n<a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">Land Vorarlberg</a> ha\nLand Tirol (dindan <a href=\"http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/\">CC-BY AT gant enkemmadoù</a>)." contributors_at_html: "<strong>Aostria</strong> : Ennañ roadennoù eus\n<a href=\"http://data.wien.gv.at/\">Stadt Wien</a> (dindan\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>.</li> \t\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC BY</a>), \n<a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">Land Vorarlberg</a> ha\nLand Tirol (dindan <a href=\"http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/\">CC-BY AT gant enkemmadoù</a>)."
contributors_au_html: "<strong>Australia</strong>: Ennañ ar roadennoù diwar-benn an bannlevioù\n diazezet war roadennoù Australian Bureau of Statistics."
contributors_ca_html: "<strong>Kanada</strong> : Ennañ roadennoù eus\n GeoBase&reg;, GeoGratis (&copy; Department of Natural\n Resources Canada), CanVec (&copy; Department of Natural\n Resources Canada), ha StatCan (Geography Division,\n Statistics Canada)." contributors_ca_html: "<strong>Kanada</strong> : Ennañ roadennoù eus\n GeoBase&reg;, GeoGratis (&copy; Department of Natural\n Resources Canada), CanVec (&copy; Department of Natural\n Resources Canada), ha StatCan (Geography Division,\n Statistics Canada)."
contributors_footer_1_html: Ebarzhiñ roadennoù en OpenStreetMap ne dalvez ket eo aprouet OpenStreetMap gant ar bourchaserien orin na zegasont tamm gwarant, atebegezh pe asant ebet. contributors_footer_1_html: "↓Evit muioc'h a vunudoù diwar-benn ar re-se, hag ar mammennoù all a zo bet implijet da sikour da wellaat OpenStreetMap, sellit ouzh ar <a\nhref=\"http://wiki.openstreetmap.org/wiki/Contributors\">Bajenn Skoazellerien</a> e Wiki OpenStreetMap."
contributors_footer_2_html: Enlakaat roadennoù e OpenStreetMap ne empleg ket ez aprou ar bourchaserien orin a endalc'had OpenStreetMap, na ne bourchasont, na ne waratomp pe na ne zegemeront ne vern pe atebegezh e vefe.
contributors_fr_html: "<strong>Frañs</strong> : Ennañ roadennoù eus Renerezh Hollek an Tailhoù." contributors_fr_html: "<strong>Frañs</strong> : Ennañ roadennoù eus Renerezh Hollek an Tailhoù."
contributors_gb_html: "<strong>Rouantelezh-Unanet</strong> : Ennañ roadennoù eus Ordnance\n Survey data &copy; Crown copyright and database right 2010." contributors_gb_html: "<strong>Rouantelezh-Unanet</strong> : Ennañ roadennoù eus Ordnance\n Survey data &copy; Crown copyright and database right 2010."
contributors_intro_html: "Hervez hon aotre-implijout CC BY-SA e tleit &ldquo;reiñ kred a-walc'h \n d'an aozer orin diouzh ar media a implijit&rdquo;.\n Kartennourien hiniennel OSM ne c'houlennont ket\n kred panevet &ldquo;kenlabourerien OpenStreetMap&rdquo;,\n met pa vez ebarzhet roadennoù eus un ajañs kartennañ broadel\n pe ur vammenn veur all en OpenStreetMap,\n e c'hall bezañ fur reiñ kred dezho war-eeun\n en doare a c'houlennont pe dre ul liamm war-du ar bajenn-mañ." contributors_intro_html: "Hervez hon aotre-implijout CC BY-SA e tleit &ldquo;reiñ kred a-walc'h \n d'an aozer orin diouzh ar media a implijit&rdquo;.\n Kartennourien hiniennel OSM ne c'houlennont ket\n kred panevet &ldquo;kenlabourerien OpenStreetMap&rdquo;,\n met pa vez ebarzhet roadennoù eus un ajañs kartennañ broadel\n pe ur vammenn veur all en OpenStreetMap,\n e c'hall bezañ fur reiñ kred dezho war-eeun\n en doare a c'houlennont pe dre ul liamm war-du ar bajenn-mañ."
contributors_nl_html: "<strong>Netherlands</strong> : Contains &copy; AND data, 2007\n (<a href=\"http://www.and.com\">www.and.com</a>)" contributors_nl_html: "<strong>Netherlands</strong> : Contains &copy; AND data, 2007\n (<a href=\"http://www.and.com\">www.and.com</a>)"
contributors_nz_html: "<strong>Zeland-Nevez</strong> : Ennañ roadennoù eus\n Land Information New Zealand. Crown Copyright reserved." contributors_nz_html: "<strong>Zeland-Nevez</strong> : Ennañ roadennoù eus\n Land Information New Zealand. Crown Copyright reserved."
contributors_pl_html: "<strong>Polonia</strong> : Ennañ roadennoù eus <a\n href=\"http://ump.waw.pl/\">kartennoù UMP-pcPL</a>. Copyright\nUMP-pcPL kenlabourerien.\n<a href=\"http://wiki.openstreetmap.org/wiki/UMP2OSM_Importing\">\nMuioc'h diwar-benn OSM&apos;s use of UMP data</a>"
contributors_title_html: Hor c'henlabourerien contributors_title_html: Hor c'henlabourerien
contributors_za_html: "<strong>Afrika ar Su</strong> : Ennañ roadennoù eus\n<a href=\"http://www.ngi.gov.za/\">Chief Directorate:\nNational Geo-Spatial Information</a>, State copyright reserved." contributors_za_html: "<strong>Afrika ar Su</strong> : Ennañ roadennoù eus\n<a href=\"http://www.ngi.gov.za/\">Chief Directorate:\nNational Geo-Spatial Information</a>, State copyright reserved."
credit_1_html: "Ma'z implijit skeudennoù OpenStreetMap, e c'houlennomp diganeoc'h\n lakaat en ho kred ar meneg &ldquo;&copy; kenlabourerien OpenStreetMap\n CC BY-SA&rdquo;. Ma ne implijit nemet roadennoù ar c'hartennoù,\n e c'houlennomp diganeoc'h lakaat &ldquo;Roadennoù ar gartenn &copy; kenlabourerien OpenStreetMap,\n CC BY-SA&rdquo;." credit_1_html: "Ma'z implijit skeudennoù OpenStreetMap, e c'houlennomp diganeoc'h\n lakaat en ho kred ar meneg &ldquo;&copy; kenlabourerien OpenStreetMap\n CC BY-SA&rdquo;. Ma ne implijit nemet roadennoù ar c'hartennoù,\n e c'houlennomp diganeoc'h lakaat &ldquo;Roadennoù ar gartenn &copy; kenlabourerien OpenStreetMap,\n CC BY-SA&rdquo;."
@ -1012,7 +1025,6 @@ br:
intro_2_html: " Dieub oc'h da eilañ, da skignañ, da gas ha da azasaat hor c'hartennoù\n hag hor roadennoù, gant ma root kred da OpenStreetMap ha d'e\n genlabourerien. Ma kemmit pe ma implijit hor c'hartennoù pe hor roadennoù e labourioù all,\n ne c'hallit ket skignañ ar re-se dindan un aotre-implijout all. En \n <a href=\"http://creativecommons.org/licenses/by-sa/2.0/legalcode\">destenn reolennoù\n klok</a> e kavot munudoù ho kwirioù hag ho teverioù." intro_2_html: " Dieub oc'h da eilañ, da skignañ, da gas ha da azasaat hor c'hartennoù\n hag hor roadennoù, gant ma root kred da OpenStreetMap ha d'e\n genlabourerien. Ma kemmit pe ma implijit hor c'hartennoù pe hor roadennoù e labourioù all,\n ne c'hallit ket skignañ ar re-se dindan un aotre-implijout all. En \n <a href=\"http://creativecommons.org/licenses/by-sa/2.0/legalcode\">destenn reolennoù\n klok</a> e kavot munudoù ho kwirioù hag ho teverioù."
more_1_html: "Ma fell deoc'h kaout muioc'h a ditouroù diwar-benn adimplij hor roadennoù, lennit <a\n href=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">FAG ar reolennoù</a>." more_1_html: "Ma fell deoc'h kaout muioc'h a ditouroù diwar-benn adimplij hor roadennoù, lennit <a\n href=\"http://wiki.openstreetmap.org/wiki/Legal_FAQ\">FAG ar reolennoù</a>."
more_2_html: " Degas a reomp da soñj da genlabourerien OSM ne zleont morse lakaat roadennoù a zeu\n eus mammennoù dindan wirioù (da sk. : Google Maps pe kartennoù moullet) hep aotre\n ezpleg ar re zo ar gwirioù-azer ganto." more_2_html: " Degas a reomp da soñj da genlabourerien OSM ne zleont morse lakaat roadennoù a zeu\n eus mammennoù dindan wirioù (da sk. : Google Maps pe kartennoù moullet) hep aotre\n ezpleg ar re zo ar gwirioù-azer ganto."
more_3_html: " Daoust da OpenStreetMap bezañ un hollad roadennoù digor, n'omp ket evit pourchas\n un API digoust evit an diorroerien diavaez.\n\n Sellit ouzh hor <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">reolennoù evit implijout an API</a>,\n <a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">reolennoù evit implijout ar gartenn</a>\n ha <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\">reolennoù evit implijout Nominatim</a>."
more_title_html: Titouroù ouzhpenn more_title_html: Titouroù ouzhpenn
title_html: Copyright hag aotre-implijout title_html: Copyright hag aotre-implijout
native: native:
@ -1287,10 +1299,6 @@ br:
index: index:
js_1: Pe emaoc'h oc'h implijout ur merdeer ha ne skor ket JavaScript, pe hoc'h eus diweredekaet JavaScript. js_1: Pe emaoc'h oc'h implijout ur merdeer ha ne skor ket JavaScript, pe hoc'h eus diweredekaet JavaScript.
js_2: OpenStreetMap a implij JavaScript evit e gartenn risklus. js_2: OpenStreetMap a implij JavaScript evit e gartenn risklus.
license:
license_name: Creative Commons Deroadenn Kenrannañ heñvel 2.0
notice: Dindan aotre-implijout %{license_name} gant an %{project_name} hag e genobererien.
project_name: raktres OpenStreetMap
permalink: Peurliamm permalink: Peurliamm
remote_failed: C'hwitet eo ar c'hemm - gwiriit hag-eñ eo karget JOSM or Merkaartor ha gweredekaet an dibarzh kontroll a-bell remote_failed: C'hwitet eo ar c'hemm - gwiriit hag-eñ eo karget JOSM or Merkaartor ha gweredekaet an dibarzh kontroll a-bell
shortlink: Liamm berr shortlink: Liamm berr
@ -1416,6 +1424,7 @@ br:
visibility: "Gwelusted :" visibility: "Gwelusted :"
visibility_help: Petra a dalvez an dra-mañ ? visibility_help: Petra a dalvez an dra-mañ ?
list: list:
empty_html: N'eus netra da welet amañ. <a href='%{upload_link}'>Pellgargit ur roudenn nevez</a> evit gouzout hiroc'h diwar-benn an tresañ GPS, sellit ouzh ar <abajenn wiki>href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2i</a>.
public_traces: Roudoù GPS foran public_traces: Roudoù GPS foran
public_traces_from: Roudoù GPS foran gant %{user} public_traces_from: Roudoù GPS foran gant %{user}
tagged_with: " balizennet gant %{tags}" tagged_with: " balizennet gant %{tags}"
@ -1460,6 +1469,8 @@ br:
trace_optionals: trace_optionals:
tags: Balizennoù tags: Balizennoù
trace_paging_nav: trace_paging_nav:
newer: ↓Roudoù nevez
older: ↓Roudoù kozh
showing_page: O tiskouez ar bajenn %{page} showing_page: O tiskouez ar bajenn %{page}
view: view:
delete_track: Dilemel ar roudenn-mañ delete_track: Dilemel ar roudenn-mañ
@ -1576,8 +1587,6 @@ br:
lost password link: Ankouaet ho ker-tremen ganeoc'h ? lost password link: Ankouaet ho ker-tremen ganeoc'h ?
new to osm: Nevez war OpenStreetMap ? new to osm: Nevez war OpenStreetMap ?
no account: N'hoc'h eus kont ebet ? no account: N'hoc'h eus kont ebet ?
notice: <a href="http://www.osmfoundation.org/wiki/License/We_Are_Changing_The_License">Gouzout hiroc'h diwar-benn ar cheñchamant aotre-implijout da zont gant OpenStreetMap</a> (<a href="http://wiki.openstreetmap.org/wiki/ODbL/We_Are_Changing_The_License">troidigezhioù</a>) (<a href="http://wiki.openstreetmap.org/wiki/Talk:ODbL/Upcoming">kendiviz</a>)
notice_terms: Embannet e vo OpenStreetMap dindan un aotre-implijout nevez adalek ar 1añ a viz Ebrel 2012. Ken frank a wirioù e vo hag an hini zo bremañ nemet e tegouezho gwelloc'h an termenoù gwir ouzh hon diaz roadennoù kartennaouel. Plijet e vefemp o virout ho tegasadennoù da OpenStreetMap, met n'hallimp en ober nemet mard embannit bezañ a-du d'hor lezel o skignañ diouzh termenoù an aotre nevez. A-hend-all e rankimp lemel anezho kuit eus an diaz.<br /><br />Kevreit evit gwelet an termenoù nevez hag asantiñ dezho. Ne dap nemet un un nebeud eilennoù. Ho trugarekaat !
openid: "%{logo} OpenID :" openid: "%{logo} OpenID :"
openid invalid: Ho tigarez, Evit doare eo stummet fall hoc'h OpenID openid invalid: Ho tigarez, Evit doare eo stummet fall hoc'h OpenID
openid missing provider: Ho tigarez, n'eus ket bet gallet mont e darempred gant ho pourvezer OpenID openid missing provider: Ho tigarez, n'eus ket bet gallet mont e darempred gant ho pourvezer OpenID
@ -1622,7 +1631,9 @@ br:
title: Ger-tremen kollet title: Ger-tremen kollet
make_friend: make_friend:
already_a_friend: Mignon oc'h gant %{name} dija. already_a_friend: Mignon oc'h gant %{name} dija.
button: Ozhpennañ evel mignon
failed: Ho tigarez, n'eus ket bet gallet ouzhpennañ %{name} evel mignon. failed: Ho tigarez, n'eus ket bet gallet ouzhpennañ %{name} evel mignon.
heading: ↓Ouzhpennañ %{user} evel mignon ?
success: "%{name} zo ho mignon bremañ." success: "%{name} zo ho mignon bremañ."
new: new:
confirm email address: "Kadarnaat ar chomlec'h postel :" confirm email address: "Kadarnaat ar chomlec'h postel :"
@ -1655,6 +1666,8 @@ br:
nearby mapper: Kartennour en ardremez nearby mapper: Kartennour en ardremez
your location: Ho lec'hiadur your location: Ho lec'hiadur
remove_friend: remove_friend:
button: ↓Lemel eus ar vignoned
heading: ↓Lemel %{user} eus ar vignoned ?
not_a_friend: "%{name} n'eo ket unan eus ho mignoned." not_a_friend: "%{name} n'eo ket unan eus ho mignoned."
success: "%{name} zo bet lamet eus ho mignoned." success: "%{name} zo bet lamet eus ho mignoned."
reset_password: reset_password:
@ -1691,7 +1704,7 @@ br:
activate_user: gweredekaat an implijer-mañ activate_user: gweredekaat an implijer-mañ
add as friend: Ouzhpennañ evel mignon add as friend: Ouzhpennañ evel mignon
ago: (%{time_in_words_ago} zo) ago: (%{time_in_words_ago} zo)
block_history: gwelet ar stankadurioù resevet block_history: stankadurioù resevet
blocks by me: stankadurioù graet ganin blocks by me: stankadurioù graet ganin
blocks on me: Stankadurioù evidon blocks on me: Stankadurioù evidon
comments: evezhiadennoù comments: evezhiadennoù
@ -1717,7 +1730,7 @@ br:
latest edit: "Kemm ziwezhañ %{ago} :" latest edit: "Kemm ziwezhañ %{ago} :"
m away: war-hed %{count} m m away: war-hed %{count} m
mapper since: "Kartennour abaoe :" mapper since: "Kartennour abaoe :"
moderator_history: gwelet ar stankadurioù roet moderator_history: stankadurioù roet
my comments: ma evezhiadennoù my comments: ma evezhiadennoù
my diary: ma deizlevr my diary: ma deizlevr
my edits: ma aozadennoù my edits: ma aozadennoù
@ -1802,11 +1815,14 @@ br:
creator_name: Krouer creator_name: Krouer
display_name: Implijer stanket display_name: Implijer stanket
edit: Aozañ edit: Aozañ
next: ↓War-lerc'h »
not_revoked: (n'eo ket torret) not_revoked: (n'eo ket torret)
previous: ↓« Previous
reason: Abeg evit stankañ reason: Abeg evit stankañ
revoke: Terriñ ! revoke: Terriñ !
revoker_name: Torret gant revoker_name: Torret gant
show: Diskouez show: Diskouez
showing_page: ↓O tiskouez ar bajenn %{page}
status: Statud status: Statud
period: period:
one: 1 eurvezh one: 1 eurvezh

Some files were not shown because too many files have changed in this diff Show more