Merge branch 'master' into overpass

This commit is contained in:
Tom Hughes 2014-11-01 12:46:42 +00:00
commit 501d13e1c0
307 changed files with 127030 additions and 89142 deletions

3
.gitignore vendored
View file

@ -8,3 +8,6 @@ tmp
*~
doc
.vagrant
.ruby-gemset
.ruby-version
.idea

View file

@ -6,7 +6,17 @@ After [installing](INSTALL.md) this software, you may need to carry out some of
Your installation comes with no geographic data loaded. You can either create new data using one of the editors (Potlatch 2, iD, JOSM etc) or by loading an OSM extract.
* Use this [yet-to-be-written script](https://github.com/openstreetmap/openstreetmap-website/issues/282)
After installing but before creating any users or data, import an extract with [Osmosis](http://wiki.openstreetmap.org/wiki/Osmosis) and the [``--write-apidb``](http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--write-apidb_.28--wd.29) task.
```
osmosis --read-pbf greater-london-latest.osm.pbf \
--write-apidb host="localhost" database="openstreetmap" \
user="openstreetmap" password="" validateSchemaVersion="no"
```
Loading an apidb database with Osmosis is about **twenty** times slower than loading the equivalent data with osm2pgsql into a rendering database. [``--log-progress``](http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage#--log-progress_.28--lp.29) may be desirable for status updates.
To be able to edit the data you have loaded, you will need to use this [yet-to-be-written script](https://github.com/openstreetmap/openstreetmap-website/issues/282).
## Managing Users
@ -115,3 +125,5 @@ If you want to deploy The Rails Port for production use, you'll need to make a f
* Your production database will also need the extensions and functions installed - see [INSTALL.md](INSTALL.md)
* The included version of the map call is quite slow and eats a lot of memory. You should consider using [CGIMap](https://github.com/zerebubuth/openstreetmap-cgimap) instead.
* The included version of the GPX importer is slow and/or completely inoperable. You should consider using [the high-speed GPX importer](http://git.openstreetmap.org/gpx-import.git/).
* Make sure you precompile the production assets: `RAILS_ENV=production rake assets:precompile`
* Make sure the web server user as well as the rails user can read, write and create directories in `tmp/`.

13
Gemfile
View file

@ -1,7 +1,7 @@
source 'http://rubygems.org'
source 'https://rubygems.org'
# Require rails
gem 'rails', '4.0.5'
gem 'rails', '4.1.6'
# Require things which have moved to gems in ruby 1.9
gem 'bigdecimal', "~> 1.1.0", :platforms => :ruby_19
@ -16,7 +16,7 @@ gem 'json'
gem 'pg'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
@ -34,6 +34,9 @@ gem 'jsonify-rails'
# Use R2 for RTL conversion
gem 'r2'
# Use autoprefixer to generate CSS prefixes
gem 'autoprefixer-rails'
# Load rails plugins
gem 'rails-i18n', "~> 4.0.0"
gem 'dynamic_form'
@ -41,7 +44,7 @@ gem 'rinku', '>= 1.2.2', :require => 'rails_rinku'
gem 'oauth-plugin', '>= 0.5.1'
gem 'open_id_authentication', '>= 1.1.0'
gem 'validates_email_format_of', '>= 1.5.1'
gem 'composite_primary_keys', '>= 6.0.1'
gem 'composite_primary_keys', '~> 7.0.11'
gem 'http_accept_language', '~> 2.0.0'
gem 'paperclip', '~> 4.0'
gem 'deadlock_retry', '>= 1.2.0'
@ -84,7 +87,7 @@ end
# Gems needed for running tests
group :test do
gem 'timecop'
gem 'minitest', '~> 4.7.0', :platforms => [:ruby_19, :ruby_20]
gem 'minitest', '~> 5.1', :platforms => [:ruby_19, :ruby_20]
end
# Needed in development as well so rake can see konacha tasks

View file

@ -1,37 +1,41 @@
GEM
remote: http://rubygems.org/
remote: https://rubygems.org/
specs:
SystemTimer (1.2.3)
actionmailer (4.0.5)
actionpack (= 4.0.5)
mail (~> 2.5.4)
actionpack (4.0.5)
activesupport (= 4.0.5)
builder (~> 3.1.0)
erubis (~> 2.7.0)
actionmailer (4.1.6)
actionpack (= 4.1.6)
actionview (= 4.1.6)
mail (~> 2.5, >= 2.5.4)
actionpack (4.1.6)
actionview (= 4.1.6)
activesupport (= 4.1.6)
rack (~> 1.5.2)
rack-test (~> 0.6.2)
actionpack-page_caching (1.0.2)
actionpack (>= 4.0.0, < 5)
activemodel (4.0.5)
activesupport (= 4.0.5)
builder (~> 3.1.0)
activerecord (4.0.5)
activemodel (= 4.0.5)
activerecord-deprecated_finders (~> 1.0.2)
activesupport (= 4.0.5)
arel (~> 4.0.0)
activerecord-deprecated_finders (1.0.3)
activesupport (4.0.5)
actionview (4.1.6)
activesupport (= 4.1.6)
builder (~> 3.1)
erubis (~> 2.7.0)
activemodel (4.1.6)
activesupport (= 4.1.6)
builder (~> 3.1)
activerecord (4.1.6)
activemodel (= 4.1.6)
activesupport (= 4.1.6)
arel (~> 5.0.0)
activesupport (4.1.6)
i18n (~> 0.6, >= 0.6.9)
minitest (~> 4.2)
multi_json (~> 1.3)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.1)
tzinfo (~> 0.3.37)
arel (4.0.2)
tzinfo (~> 1.1)
arel (5.0.1.20140414130214)
autoprefixer-rails (3.1.1.20141001)
execjs
bigdecimal (1.1.0)
builder (3.1.4)
capybara (2.2.1)
builder (3.2.2)
capybara (2.4.3)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
@ -45,27 +49,28 @@ GEM
coffee-rails (4.0.1)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
coffee-script (2.2.0)
coffee-script (2.3.0)
coffee-script-source
execjs
coffee-script-source (1.7.0)
colorize (0.7.2)
composite_primary_keys (6.0.3)
activerecord (>= 4.0.0)
dalli (2.7.1)
coffee-script-source (1.8.0)
colorize (0.7.3)
composite_primary_keys (7.0.11)
activerecord (= 4.1.6)
crass (0.2.1)
dalli (2.7.2)
deadlock_retry (1.2.0)
dynamic_form (1.1.4)
erubis (2.7.0)
execjs (2.0.2)
execjs (2.2.1)
faraday (0.9.0)
multipart-post (>= 1.2, < 3)
hike (1.2.3)
htmlentities (4.3.1)
http_accept_language (2.0.1)
httpclient (2.3.4.1)
i18n (0.6.9)
htmlentities (4.3.2)
http_accept_language (2.0.2)
httpclient (2.4.0)
i18n (0.6.11)
iconv (0.1)
jquery-rails (3.1.0)
jquery-rails (3.1.2)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.1)
@ -74,36 +79,36 @@ GEM
jsonify-rails (0.3.2)
actionpack
jsonify (< 0.4.0)
jwt (0.1.13)
multi_json (>= 1.5)
jwt (1.0.0)
kgio (2.9.2)
konacha (3.2.2)
konacha (3.2.4)
actionpack (>= 3.1, < 5)
capybara
colorize
railties (>= 3.1, < 5)
sprockets
libxml-ruby (2.7.0)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.25.1)
mini_portile (0.5.3)
minitest (4.7.5)
multi_json (1.10.0)
mail (2.6.1)
mime-types (>= 1.16, < 3)
mime-types (2.4.1)
mini_portile (0.6.0)
minitest (5.4.2)
multi_json (1.10.1)
multi_xml (0.5.5)
multipart-post (2.0.0)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
nokogiri (1.6.3.1)
mini_portile (= 0.6.0)
nokogumbo (1.1.12)
nokogiri
oauth (0.4.7)
oauth-plugin (0.5.1)
multi_json
oauth (~> 0.4.4)
oauth2 (>= 0.5.0)
rack
oauth2 (0.9.3)
oauth2 (1.0.0)
faraday (>= 0.8, < 0.10)
jwt (~> 0.1.8)
jwt (~> 1.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (~> 1.2)
@ -111,20 +116,19 @@ GEM
rack-openid (~> 1.3)
openstreetmap-i18n-js (3.0.0.rc5.3)
i18n
paperclip (4.1.1)
paperclip (4.2.0)
activemodel (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.3)
mime-types
pg (0.17.1)
poltergeist (1.5.0)
poltergeist (1.5.1)
capybara (~> 2.1)
cliver (~> 0.3.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0)
polyglot (0.3.4)
psych (2.0.5)
r2 (0.2.3)
psych (2.0.6)
r2 (0.2.5)
rack (1.5.2)
rack-cors (0.2.9)
rack-openid (1.4.2)
@ -132,28 +136,32 @@ GEM
ruby-openid (>= 2.1.8)
rack-test (0.6.2)
rack (>= 1.0)
rails (4.0.5)
actionmailer (= 4.0.5)
actionpack (= 4.0.5)
activerecord (= 4.0.5)
activesupport (= 4.0.5)
rails (4.1.6)
actionmailer (= 4.1.6)
actionpack (= 4.1.6)
actionview (= 4.1.6)
activemodel (= 4.1.6)
activerecord (= 4.1.6)
activesupport (= 4.1.6)
bundler (>= 1.3.0, < 2.0)
railties (= 4.0.5)
sprockets-rails (~> 2.0.0)
rails-i18n (4.0.2)
railties (= 4.1.6)
sprockets-rails (~> 2.0)
rails-i18n (4.0.3)
i18n (~> 0.6)
rails (>= 4.0)
railties (4.0.5)
actionpack (= 4.0.5)
activesupport (= 4.0.5)
railties (~> 4.0)
railties (4.1.6)
actionpack (= 4.1.6)
activesupport (= 4.1.6)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
rake (10.3.1)
redcarpet (3.1.1)
rake (10.3.2)
redcarpet (3.1.2)
rinku (1.7.3)
ruby-openid (2.5.0)
sanitize (2.1.0)
sanitize (3.0.2)
crass (~> 0.2.0)
nokogiri (>= 1.4.4)
nokogumbo (= 1.1.12)
sass (3.2.19)
sass-rails (4.0.3)
railties (>= 4.0.0, < 5.0)
@ -166,24 +174,23 @@ GEM
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.0.1)
sprockets-rails (2.1.4)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (~> 2.8)
thor (0.19.1)
thread_safe (0.3.3)
thread_safe (0.3.4)
tilt (1.4.1)
timecop (0.7.1)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.39)
uglifier (2.5.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (2.5.3)
execjs (>= 0.3.0)
json (>= 1.8.0)
validates_email_format_of (1.5.3)
vendorer (0.1.15)
websocket-driver (0.3.3)
validates_email_format_of (1.6.1)
i18n
vendorer (0.1.16)
websocket-driver (0.3.5)
xpath (2.0.0)
nokogiri (~> 1.3)
@ -193,9 +200,10 @@ PLATFORMS
DEPENDENCIES
SystemTimer (>= 1.1.3)
actionpack-page_caching
autoprefixer-rails
bigdecimal (~> 1.1.0)
coffee-rails (~> 4.0.0)
composite_primary_keys (>= 6.0.1)
composite_primary_keys (~> 7.0.11)
dalli
deadlock_retry (>= 1.2.0)
dynamic_form
@ -209,7 +217,7 @@ DEPENDENCIES
kgio
konacha
libxml-ruby (>= 2.0.5)
minitest (~> 4.7.0)
minitest (~> 5.1)
oauth-plugin (>= 0.5.1)
open_id_authentication (>= 1.1.0)
openstreetmap-i18n-js (>= 3.0.0.rc5.3)
@ -219,13 +227,13 @@ DEPENDENCIES
psych
r2
rack-cors
rails (= 4.0.5)
rails (= 4.1.6)
rails-i18n (~> 4.0.0)
redcarpet
rinku (>= 1.2.2)
ruby-openid (>= 2.2.0)
sanitize
sass-rails (~> 4.0.0)
sass-rails (~> 4.0.3)
soap4r-ruby1.9
timecop
uglifier (>= 1.3.0)

View file

@ -33,7 +33,7 @@ sudo apt-get install ruby1.9.1 libruby1.9.1 ruby1.9.1-dev ri1.9.1 \
apache2 apache2-threaded-dev build-essential git-core \
postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
libsasl2-dev
gem1.9.1 install bundle
sudo gem1.9.1 install bundler
```
Note that the "1.9.1" Ubuntu packages do in fact contain ruby 1.9.3.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 222 B

Before After
Before After

BIN
app/assets/images/sotm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -13,6 +13,7 @@
//= require index/history
//= require index/note
//= require index/new_note
//= require index/changeset
//= require index/query
//= require router
@ -161,6 +162,15 @@ $(document).ready(function () {
$.cookie("_osm_location", OSM.locationCookie(map), { expires: expiry, path: "/" });
});
if ($.cookie('_osm_sotm') == 'hide') {
$('#sotm').hide();
}
$('#sotm .close').on('click', function() {
$('#sotm').hide();
$.cookie("_osm_sotm", 'hide', { expires: expiry });
});
if ($.cookie('_osm_welcome') == 'hide') {
$('.welcome').hide();
}
@ -302,7 +312,7 @@ $(document).ready(function () {
"/node/:id(/history)": OSM.Browse(map, 'node'),
"/way/:id(/history)": OSM.Browse(map, 'way'),
"/relation/:id(/history)": OSM.Browse(map, 'relation'),
"/changeset/:id": OSM.Browse(map, 'changeset'),
"/changeset/:id": OSM.Changeset(map),
"/query": OSM.Query(map)
});
@ -336,7 +346,7 @@ $(document).ready(function () {
if (query) {
OSM.router.route("/search?query=" + encodeURIComponent(query) + OSM.formatHash(map));
} else {
OSM.router.route("/" + OSM.formatHash(map));
OSM.router.route("/");
}
});

View file

@ -0,0 +1,80 @@
OSM.Changeset = function (map) {
var page = {},
content = $('#sidebar_content'),
currentChangesetId;
page.pushstate = page.popstate = function(path, id) {
OSM.loadSidebarContent(path, function() {
page.load(path, id);
});
};
page.load = function(path, id) {
if(id)
currentChangesetId = id;
initialize();
addChangeset(currentChangesetId, true);
};
function addChangeset(id, center) {
var bounds = map.addObject({type: 'changeset', id: parseInt(id)}, function(bounds) {
if (!window.location.hash && bounds.isValid() &&
(center || !map.getBounds().contains(bounds))) {
OSM.router.withoutMoveListener(function () {
map.fitBounds(bounds);
});
}
});
}
function updateChangeset(form, method, url, include_data) {
$(form).find("input[type=submit]").prop("disabled", true);
if(include_data) {
data = {text: $(form.text).val()};
} else {
data = {};
}
$.ajax({
url: url,
type: method,
oauth: true,
data: data,
success: function () {
OSM.loadSidebarContent(window.location.pathname, page.load);
}
});
}
function initialize() {
content.find("input[name=comment]").on("click", function (e) {
e.preventDefault();
var data = $(e.target).data();
updateChangeset(e.target.form, data.method, data.url, true);
});
content.find(".action-button").on("click", function (e) {
e.preventDefault();
var data = $(e.target).data();
updateChangeset(e.target.form, data.method, data.url);
});
content.find("textarea").on("input", function (e) {
var form = e.target.form;
if ($(e.target).val() == "") {
$(form.comment).prop("disabled", true);
} else {
$(form.comment).prop("disabled", false);
}
});
content.find("textarea").val('').trigger("input");
};
page.unload = function() {
map.removeObject();
};
return page;
};

View file

@ -12,13 +12,14 @@ OSM.Search = function(map) {
$("#sidebar_content")
.on("click", ".search_more a", clickSearchMore)
.on("click", ".search_results_entry a.set_position", clickSearchResult)
.on("mouseover", "p.search_results_entry:has(a.set_position)", showSearchResult)
.on("mouseout", "p.search_results_entry:has(a.set_position)", hideSearchResult)
.on("mousedown", "p.search_results_entry:has(a.set_position)", function () {
var moved = false;
$(this).one("click", function (e) {
if (!moved && !$(e.target).is('a')) {
clickSearchResult(this, e);
$(this).find("a.set_position").simulate("click", e);
}
}).one("mousemove", function () {
moved = true;
@ -45,12 +46,12 @@ OSM.Search = function(map) {
if (!marker) {
var data = $(this).find("a.set_position").data();
marker = L.marker([data.lat, data.lon]);
marker = L.marker([data.lat, data.lon], {icon: getUserIcon()});
$(this).data("marker", marker);
}
map.addLayer(marker);
markers.addLayer(marker);
$(this).closest("li").addClass("selected");
}
@ -59,15 +60,14 @@ OSM.Search = function(map) {
var marker = $(this).data("marker");
if (marker) {
map.removeLayer(marker);
markers.removeLayer(marker);
}
$(this).closest("li").removeClass("selected");
}
function clickSearchResult(result, e) {
var link = $(result).find("a.set_position"),
data = link.data(),
function clickSearchResult(e) {
var data = $(this).data(),
center = L.latLng(data.lat, data.lon);
if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
@ -76,18 +76,14 @@ OSM.Search = function(map) {
map.setView(center, data.zoom);
}
// Let clicks to object browser links propagate.
if (data.type && data.id) return;
e.preventDefault();
e.stopPropagation();
// Let clicks to object browser links propagate.
if (data.type && data.id) {
link.simulate("click", e);
} else {
marker.setLatLng(center).addTo(map);
}
}
var marker = L.marker([0, 0], {icon: getUserIcon()});
var markers = L.layerGroup().addTo(map);
var page = {};
@ -120,8 +116,7 @@ OSM.Search = function(map) {
};
page.unload = function() {
map.removeLayer(marker);
map.removeObject();
markers.clearLayers();
$(".search_form input[name=query]").val("");
$(".describe_location").fadeIn(100);
};

View file

@ -24,13 +24,13 @@ L.OSM.Map = L.Map.extend({
name: I18n.t("javascripts.map.base.standard")
}),
new L.OSM.CycleMap({
attribution: copyright + ". Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
attribution: copyright + ". Tiles courtesy of <a href='http://www.thunderforest.com/' target='_blank'>Andy Allan</a>",
code: "C",
keyid: "cyclemap",
name: I18n.t("javascripts.map.base.cycle_map")
}),
new L.OSM.TransportMap({
attribution: copyright + ". Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
attribution: copyright + ". Tiles courtesy of <a href='http://www.thunderforest.com/' target='_blank'>Andy Allan</a>",
code: "T",
keyid: "transportmap",
name: I18n.t("javascripts.map.base.transport_map")

View file

@ -87,9 +87,7 @@ strong {
/* Default rules for the body of every page */
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
box-sizing: border-box;
}
body {
@ -464,9 +462,8 @@ nav.secondary {
#noscript {
z-index: 20000000;
position: absolute;
top: 15px;
left: 15px;
margin-left: 400px;
margin-top: 50px;
}
/* Rules for bootstrap tooltips */
@ -854,7 +851,6 @@ nav.secondary {
.leaflet-popup-content-wrapper {
border-radius: 4px !important;
-webkit-border-radius: 4px !important;
}
/* Rules for attribution text under the main map shown on printouts */
@ -934,8 +930,6 @@ header .search_form {
border-right: none;
transition: 300ms linear;
-webkit-transition: 300ms linear;
-moz-transition: 300ms linear;
}
input:focus {
@ -1117,7 +1111,7 @@ header .search_form {
font-size: 90%;
}
.note-comments li {
.note-comments li, .changeset-comments li {
margin: $lineheight/2 0;
p {
@ -1125,6 +1119,27 @@ header .search_form {
}
}
.comments-header {
float: left;
}
.subscribe-buttons {
float: left;
margin: 18px 10px 10px;
min-width: 80px;
}
.subscribe-buttons input {
font-size: 90%;
line-height: 15px;
min-height: 20px;
}
span.action-button:hover {
cursor: pointer;
text-decoration: underline;
}
.note-description {
overflow: hidden;
margin: 0 0 10px 10px;
@ -1361,6 +1376,30 @@ header .search_form {
}
}
/* Rules for the new trace form */
#new_trace {
input[type=text] {
width: 50%;
width: calc(100% - 150px);
max-width: 500px;
}
}
/* Rules for the edit trace form */
.edit_trace {
.form-row p {
margin-bottom: 0px;
}
input[type=text] {
width: 50%;
width: calc(100% - 150px);
max-width: 500px;
}
}
/* Rules for the user profile page */
#userinformation {
@ -1943,7 +1982,6 @@ a.button {
cursor: pointer;
border: 0;
display: inline-block;
line-height: 20px;
padding: $lineheight/4 $lineheight/2;
min-height: 20px + $lineheight/2;
min-width: 120px;
@ -1952,7 +1990,6 @@ a.button {
background: $blue;
text-align: center;
border-radius: 2px;
-moz-border-radius: 2px;
&:hover {
background: darken($blue, $hovercolor);
text-decoration: none;
@ -1974,6 +2011,16 @@ a.button {
}
}
input[type="button"],
input[type="submit"],
input[type="reset"] {
line-height: normal;
}
a.button {
line-height: 20px;
}
.buttons {
min-width: 200px;
input[type="submit"],
@ -2121,8 +2168,6 @@ a.button {
input.richtext_title[type="text"] {
width: 50%;
width: -moz-calc(100% - 235px);
width: -webkit-calc(100% - 235px);
width: calc(100% - 235px);
@media only screen and (max-width:768px) {
@ -2135,8 +2180,6 @@ input.richtext_title[type="text"] {
.richtext_content {
width: 50%;
width: -moz-calc(100% - 235px);
width: -webkit-calc(100% - 235px);
width: calc(100% - 235px);
display: inline-block;
vertical-align: top;
@ -2271,12 +2314,8 @@ input.richtext_title[type="text"] {
border-radius: 0 3px 3px;
*border-right-width: 2px;
*border-bottom-width: 2px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
background-clip: padding-box;
}
.dropdown-menu.pull-right {
@ -2566,6 +2605,36 @@ input.richtext_title[type="text"] {
}
}
#sidebar #sotm {
padding: 10px;
min-height: 120px;
img {
float: left;
width: 100px;
height: 100px;
}
h2 {
margin-left: 100px;
padding: 7px 10px 6px 15px;
}
p {
margin-left: 100px;
padding: 6px 10px 7px 15px;
}
a {
color: $darkgrey;
}
:hover {
text-decoration: none;
color: darken($darkgrey, 25%);
}
}
@import 'browse';
@media only screen and (max-width:960px) {

View file

@ -321,12 +321,12 @@ class AmfController < ApplicationController
# Ideally we would do ":include => :nodes" here but if we do that
# then rails only seems to return the first copy of a node when a
# way includes a node more than once
way = Way.where(:id => wayid).preload(:nodes => :node_tags).first
way = Way.where(:id => wayid).first
# check case where way has been deleted or doesn't exist
return [-4, 'way', wayid] if way.nil? or !way.visible
points = way.nodes.collect do |node|
points = way.nodes.preload(:node_tags).collect do |node|
nodetags=node.tags
nodetags.delete('created_by')
[node.lon, node.lat, node.id, nodetags, node.version]
@ -551,7 +551,7 @@ class AmfController < ApplicationController
mid = renumberedways[mid] if m[0] == 'Way'
end
if mid
typedmembers << [m[0], mid, m[2]]
typedmembers << [m[0], mid, m[2].delete("\000-\037\ufffe\uffff", "^\011\012\015")]
end
end
@ -886,8 +886,8 @@ class AmfController < ApplicationController
new_tags = Hash.new
unless tags.nil?
tags.each do |k, v|
new_k = k.delete "\000-\037", "^\011\012\015"
new_v = v.delete "\000-\037", "^\011\012\015"
new_k = k.delete "\000-\037\ufffe\uffff", "^\011\012\015"
new_v = v.delete "\000-\037\ufffe\uffff", "^\011\012\015"
new_tags[new_k] = new_v
end
end

View file

@ -287,8 +287,16 @@ class ApiController < ApplicationController
status['api'] = api_status.to_s
status['gpx'] = gpx_status.to_s
api << status
doc.root << api
policy = XML::Node.new 'policy'
blacklist = XML::Node.new 'imagery'
IMAGERY_BLACKLIST.each do |url_regex|
xnd = XML::Node.new 'blacklist'
xnd['regex'] = url_regex.to_s
blacklist << xnd
end
policy << blacklist
doc.root << policy
render :text => doc.to_s, :content_type => "text/xml"
end

View file

@ -73,7 +73,7 @@ class ApplicationController < ActionController::Base
if request.cookies["_osm_session"].to_s == ""
if params[:cookie_test].nil?
session[:cookie_test] = true
redirect_to params.merge(:cookie_test => "true")
redirect_to Hash[params].merge(:cookie_test => "true")
return false
else
flash.now[:warning] = t 'application.require_cookies.cookies_needed'

View file

@ -58,6 +58,11 @@ class BrowseController < ApplicationController
def changeset
@type = "changeset"
@changeset = Changeset.find(params[:id])
if @user and @user.moderator?
@comments = @changeset.comments.unscope(:where => :visible).includes(:author)
else
@comments = @changeset.comments.includes(:author)
end
@node_pages, @nodes = paginate(:old_nodes, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'node_page')
@way_pages, @ways = paginate(:old_ways, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'way_page')
@relation_pages, @relations = paginate(:old_relations, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'relation_page')

View file

@ -7,11 +7,12 @@ class ChangesetController < ApplicationController
skip_before_filter :verify_authenticity_token, :except => [:list]
before_filter :authorize_web, :only => [:list, :feed]
before_filter :set_locale, :only => [:list, :feed]
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close]
before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include]
before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed]
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_filter :require_moderator, :only => [:hide_comment, :unhide_comment]
before_filter :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe]
before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
before_filter(:only => [:list, :feed]) { |c| c.check_database_readable(true) }
after_filter :compress_output
around_filter :api_call_handle_error, :except => [:list, :feed]
@ -29,6 +30,10 @@ class ChangesetController < ApplicationController
# Assume that Changeset.from_xml has thrown an exception if there is an error parsing the xml
cs.user_id = @user.id
cs.save_with_tags!
# Subscribe user to changeset comments
cs.subscribers << @user
render :text => cs.id.to_s, :content_type => "text/plain"
end
@ -37,7 +42,8 @@ class ChangesetController < ApplicationController
# return anything about the nodes, ways and relations in the changeset.
def read
changeset = Changeset.find(params[:id])
render :text => changeset.to_xml.to_s, :content_type => "text/xml"
render :text => changeset.to_xml(params[:include_discussion].presence).to_s, :content_type => "text/xml"
end
##
@ -284,7 +290,7 @@ class ChangesetController < ApplicationController
elsif params[:bbox]
changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params))
elsif params[:friends] && @user
changesets = changesets.where(:user_id => @user.friend_users.public)
changesets = changesets.where(:user_id => @user.friend_users.identifiable)
elsif params[:nearby] && @user
changesets = changesets.where(:user_id => @user.nearby)
end
@ -305,6 +311,145 @@ class ChangesetController < ApplicationController
list
end
##
# Add a comment to a changeset
def comment
# Check the arguments are sane
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
raise OSM::APIBadUserInput.new("No text was given") if params[:text].blank?
# Extract the arguments
id = params[:id].to_i
body = params[:text]
# Find the changeset and check it is valid
changeset = Changeset.find(id)
raise OSM::APIChangesetNotYetClosedError.new(changeset) if changeset.is_open?
# Add a comment to the changeset
comment = changeset.comments.create({
:changeset => changeset,
:body => body,
:author => @user
})
# Notify current subscribers of the new comment
changeset.subscribers.each do |user|
if @user != user
Notifier.changeset_comment_notification(comment, user).deliver
end
end
# Add the commenter to the subscribers if necessary
changeset.subscribers << @user unless changeset.subscribers.exists?(@user)
# Return a copy of the updated changeset
render :text => changeset.to_xml.to_s, :content_type => "text/xml"
end
##
# Adds a subscriber to the changeset
def subscribe
# Check the arguments are sane
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset and check it is valid
changeset = Changeset.find(id)
raise OSM::APIChangesetNotYetClosedError.new(changeset) if changeset.is_open?
raise OSM::APIChangesetAlreadySubscribedError.new(changeset) if changeset.subscribers.exists?(@user)
# Add the subscriber
changeset.subscribers << @user
# Return a copy of the updated changeset
render :text => changeset.to_xml.to_s, :content_type => "text/xml"
end
##
# Removes a subscriber from the changeset
def unsubscribe
# Check the arguments are sane
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset and check it is valid
changeset = Changeset.find(id)
raise OSM::APIChangesetNotYetClosedError.new(changeset) if changeset.is_open?
raise OSM::APIChangesetNotSubscribedError.new(changeset) unless changeset.subscribers.exists?(@user)
# Remove the subscriber
changeset.subscribers.delete(@user)
# Return a copy of the updated changeset
render :text => changeset.to_xml.to_s, :content_type => "text/xml"
end
##
# Sets visible flag on comment to false
def hide_comment
# Check the arguments are sane
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset
comment = ChangesetComment.find(id)
# Hide the comment
comment.update(:visible => false)
# Return a copy of the updated changeset
render :text => comment.changeset.to_xml.to_s, :content_type => "text/xml"
end
##
# Sets visible flag on comment to true
def unhide_comment
# Check the arguments are sane
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset
comment = ChangesetComment.find(id)
# Unhide the comment
comment.update(:visible => true)
# Return a copy of the updated changeset
render :text => comment.changeset.to_xml.to_s, :content_type => "text/xml"
end
##
# Get a feed of recent changeset comments
def comments_feed
if params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset
changeset = Changeset.find(id)
# Return comments for this changeset only
@comments = changeset.comments.includes(:author, :changeset).limit(comments_limit)
else
# Return comments
@comments = ChangesetComment.includes(:author, :changeset).where(:visible => :true).order("created_at DESC").limit(comments_limit).preload(:changeset)
end
# Render the result
respond_to do |format|
format.rss
end
end
private
#------------------------------------------------------------
# utility functions below.
@ -435,4 +580,17 @@ private
return changesets.where("num_changes > 0")
end
##
# Get the maximum number of comments to return
def comments_limit
if params[:limit]
if params[:limit].to_i > 0 and params[:limit].to_i <= 10000
params[:limit].to_i
else
raise OSM::APIBadUserInput.new("Comments limit must be between 1 and 10000")
end
else
100
end
end
end

View file

@ -1,6 +1,7 @@
# coding: utf-8
class GeocoderController < ApplicationController
require 'cgi'
require 'uri'
require 'net/http'
require 'rexml/document'
@ -140,20 +141,25 @@ class GeocoderController < ApplicationController
# get objects to excude
if params[:exclude]
exclude = "&exclude_place_ids=#{params[:exclude].join(',')}"
exclude = "&exclude_place_ids=#{params[:exclude]}"
end
# ask nominatim
response = fetch_xml("#{NOMINATIM_URL}search?format=xml&q=#{escape_query(query)}#{viewbox}#{exclude}&accept-language=#{http_accept_language.user_preferred_languages.join(',')}")
# extract the results from the response
results = response.elements["searchresults"]
# extract parameters from more_url
more_url_params = CGI.parse(URI.parse(results.attributes["more_url"]).query)
# create result array
@results = Array.new
# create parameter hash for "more results" link
@more_params = params.reverse_merge({ :exclude => [] })
# extract the results from the response
results = response.elements["searchresults"]
@more_params = params.merge({
:exclude => more_url_params["exclude_place_ids"].first
})
# parse the response
results.elements.each("place") do |place|
@ -181,7 +187,6 @@ class GeocoderController < ApplicationController
:min_lon => min_lon, :max_lon => max_lon,
:prefix => prefix, :name => name,
:type => object_type, :id => object_id})
@more_params[:exclude].push(place.attributes["place_id"].to_s)
end
render :action => "results"

View file

@ -17,7 +17,7 @@ class SiteController < ApplicationController
def permalink
lon, lat, zoom = ShortLink::decode(params[:code])
new_params = params.except(:code, :lon, :lat, :zoom, :node, :way, :relation, :changeset)
new_params = params.except(:code, :lon, :lat, :zoom, :layers, :node, :way, :relation, :changeset)
if new_params.has_key? :m
new_params.delete :m
@ -48,7 +48,11 @@ class SiteController < ApplicationController
new_params[:anchor] = "map=#{zoom}/#{lat}/#{lon}"
redirect_to new_params
if params.has_key? :layers
new_params[:anchor] += "&layers=#{params[:layers]}"
end
redirect_to Hash[new_params]
end
def key
@ -147,7 +151,7 @@ class SiteController < ApplicationController
end
if anchor.present?
redirect_to params.merge(:anchor => anchor.join('&'))
redirect_to Hash[params].merge(:anchor => anchor.join('&'))
end
end
end

View file

@ -49,13 +49,13 @@ class TraceController < ApplicationController
if @user
@traces = Trace.visible_to(@user) #1
else
@traces = Trace.public #2
@traces = Trace.visible_to_all #2
end
else
if @user and @user == target_user
@traces = @user.traces #3 (check vs user id, so no join + can't pick up non-public traces by changing name)
else
@traces = target_user.traces.public #4
@traces = target_user.traces.visible_to_all #4
end
end
@ -206,7 +206,7 @@ class TraceController < ApplicationController
end
def georss
@traces = Trace.public.visible
@traces = Trace.visible_to_all.visible
if params[:display_name]
@traces = @traces.joins(:user).where(:users => {:display_name => params[:display_name]})

View file

@ -26,7 +26,7 @@ class UserPreferenceController < ApplicationController
##
# return the value for a single preference
def read_one
pref = UserPreference.find(@user.id, params[:preference_key])
pref = UserPreference.find([@user.id, params[:preference_key]])
render :text => pref.v.to_s, :content_type => "text/plain"
end
@ -69,7 +69,7 @@ class UserPreferenceController < ApplicationController
# update the value of a single preference
def update_one
begin
pref = UserPreference.find(@user.id, params[:preference_key])
pref = UserPreference.find([@user.id, params[:preference_key]])
rescue ActiveRecord::RecordNotFound
pref = UserPreference.new
pref.user = @user
@ -85,7 +85,7 @@ class UserPreferenceController < ApplicationController
##
# delete a single preference
def delete_one
UserPreference.find(@user.id, params[:preference_key]).delete
UserPreference.find([@user.id, params[:preference_key]]).delete
render :text => "", :content_type => "text/plain"
end

View file

@ -61,6 +61,8 @@ module BrowseHelper
def format_value(key, value)
if wp = wikipedia_link(key, value)
link_to h(wp[:title]), wp[:url], :title => t('browse.tag_details.wikipedia_link', :page => wp[:title])
elsif wdt = wikidata_link(key, value)
link_to h(wdt[:title]), wdt[:url], :title => t('browse.tag_details.wikidata_link', :page => wdt[:title])
elsif url = wiki_link("tag", "#{key}=#{value}")
link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value)
elsif url = telephone_link(key, value)
@ -90,7 +92,7 @@ private
]
def icon_tags(object)
object.tags.find_all { |k,v| ICON_TAGS.include? k }
object.tags.find_all { |k,v| ICON_TAGS.include? k }.sort
end
def wiki_link(type, lookup)
@ -149,6 +151,16 @@ private
}
end
def wikidata_link(key, value)
if key == "wikidata" and value =~ /^[Qq][1-9][0-9]*$/
return {
:url => "//www.wikidata.org/wiki/#{value}?uselang=#{I18n.locale}",
:title => value
}
end
return nil
end
def telephone_link(key, value)
# does it look like a phone number? eg "+1 (234) 567-8901 " ?
return nil unless value =~ /^\s*\+[\d\s\(\)\/\.-]{6,25}\s*$/

View file

@ -1,7 +1,11 @@
require 'htmlentities'
module TitleHelper
@@coder = HTMLEntities.new
def set_title(title = false)
if title
@title = title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c")
@title = @@coder.decode(title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c"))
response.headers["X-Page-Title"] = t('layouts.project_name.title') + ' | ' + @title
else
@title = title

View file

@ -11,6 +11,9 @@ class Changeset < ActiveRecord::Base
has_many :old_nodes
has_many :old_ways
has_many :old_relations
has_many :comments, -> { where(:visible => true).order(:created_at) }, :class_name => "ChangesetComment"
has_and_belongs_to_many :subscribers, :class_name => 'User', :join_table => 'changesets_subscribers', :association_foreign_key => 'subscriber_id'
validates_presence_of :id, :on => :update
validates_presence_of :user_id, :created_at, :closed_at, :num_changes
@ -179,13 +182,13 @@ class Changeset < ActiveRecord::Base
end
end
def to_xml
def to_xml(include_discussion = false)
doc = OSM::API.new.get_xml_doc
doc.root << to_xml_node()
doc.root << to_xml_node(nil, include_discussion)
return doc
end
def to_xml_node(user_display_name_cache = nil)
def to_xml_node(user_display_name_cache = nil, include_discussion = false)
el1 = XML::Node.new 'changeset'
el1['id'] = self.id.to_s
@ -217,6 +220,23 @@ class Changeset < ActiveRecord::Base
bbox.to_unscaled.add_bounds_to(el1, '_')
end
el1['comments_count'] = self.comments.count.to_s
if include_discussion
el2 = XML::Node.new('discussion')
self.comments.includes(:author).each do |comment|
el3 = XML::Node.new('comment')
el3['date'] = comment.created_at.xmlschema
el3['uid'] = comment.author.id.to_s if comment.author.data_public?
el3['user'] = comment.author.display_name.to_s if comment.author.data_public?
el4 = XML::Node.new('text')
el4.content = comment.body.to_s
el3 << el4
el2 << el3
end
el1 << el2
end
# NOTE: changesets don't include the XML of the changes within them,
# they are just structures for tagging. to get the osmChange of a
# changeset, see the download method of the controller.

View file

@ -0,0 +1,17 @@
class ChangesetComment < ActiveRecord::Base
belongs_to :changeset
belongs_to :author, :class_name => "User"
validates_presence_of :id, :on => :update # is it necessary?
validates_uniqueness_of :id
validates_presence_of :changeset
validates_associated :changeset
validates_presence_of :author
validates_associated :author
validates :visible, :inclusion => { :in => [true,false] }
# Return the comment text
def body
RichText.new("text", read_attribute(:body))
end
end

View file

@ -9,6 +9,7 @@ class NoteComment < ActiveRecord::Base
validates_presence_of :visible
validates_associated :author
validates_inclusion_of :event, :in => [ "opened", "closed", "reopened", "commented", "hidden" ]
validates_format_of :body, :with => /\A[^\x00-\x08\x0b-\x0c\x0e-\x1f\x7f\ufffe\uffff]*\z/
# Return the comment text
def body

View file

@ -146,6 +146,26 @@ class Notifier < ActionMailer::Base
end
end
def changeset_comment_notification(comment, recipient)
with_recipient_locale recipient do
@changeset_url = changeset_url(comment.changeset, :host => SERVER_URL)
@comment = comment.body
@owner = recipient == comment.changeset.user
@commenter = comment.author.display_name
@changeset_comment = comment.changeset.tags['comment'].presence
@time = comment.created_at
@changeset_author = comment.changeset.user.display_name
if @owner
subject = I18n.t("notifier.changeset_comment_notification.commented.subject_own", :commenter => @commenter)
else
subject = I18n.t("notifier.changeset_comment_notification.commented.subject_other", :commenter => @commenter)
end
mail :to => recipient.email, :subject => subject
end
end
private
def with_recipient_locale(recipient)

View file

@ -2,6 +2,6 @@ class RelationMember < ActiveRecord::Base
self.table_name = "current_relation_members"
self.primary_keys = "relation_id", "sequence_id"
belongs_to :relation
belongs_to :relation, :foreign_key => :relation_id
belongs_to :member, :polymorphic => true
end

View file

@ -7,7 +7,7 @@ class Trace < ActiveRecord::Base
scope :visible, -> { where(:visible => true) }
scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
scope :public, -> { where(:visibility => ["public", "identifiable"]) }
scope :visible_to_all, -> { where(:visibility => ["public", "identifiable"]) }
scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
validates_presence_of :user_id, :name, :timestamp

View file

@ -12,6 +12,8 @@ class User < ActiveRecord::Base
has_many :tokens, :class_name => "UserToken"
has_many :preferences, :class_name => "UserPreference"
has_many :changesets, -> { order(:created_at => :desc) }
has_many :changeset_comments, :foreign_key => :author_id
has_and_belongs_to_many :changeset_subscriptions, :class_name => 'Changeset', :join_table => 'changesets_subscribers', :foreign_key => 'subscriber_id'
has_many :note_comments, :foreign_key => :author_id
has_many :notes, :through => :note_comments
@ -26,7 +28,7 @@ class User < ActiveRecord::Base
scope :visible, -> { where(:status => ["pending", "active", "confirmed"]) }
scope :active, -> { where(:status => ["active", "confirmed"]) }
scope :public, -> { where(:data_public => true) }
scope :identifiable, -> { where(:data_public => true) }
has_attached_file :image,
:default_url => "/assets/:class/:attachment/:style.png",
@ -42,9 +44,10 @@ class User < ActiveRecord::Base
validates_length_of :display_name, :within => 3..255, :allow_nil => true
validates_email_format_of :email, :if => Proc.new { |u| u.email_changed? }
validates_email_format_of :new_email, :allow_blank => true, :if => Proc.new { |u| u.new_email_changed? }
validates_format_of :display_name, :with => /\A[^\/;.,?%#]*\z/, :if => Proc.new { |u| u.display_name_changed? }
validates_format_of :display_name, :with => /\A[^\x00-\x1f\x7f\ufffe\uffff\/;.,?%#]*\z/, :if => Proc.new { |u| u.display_name_changed? }
validates_format_of :display_name, :with => /\A\S/, :message => "has leading whitespace", :if => Proc.new { |u| u.display_name_changed? }
validates_format_of :display_name, :with => /\S\z/, :message => "has trailing whitespace", :if => Proc.new { |u| u.display_name_changed? }
validates_exclusion_of :display_name, :in => %w(new terms save confirm confirm-email go_public reset-password forgot-password suspended)
validates_numericality_of :home_lat, :allow_nil => true
validates_numericality_of :home_lon, :allow_nil => true
validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true

View file

@ -11,6 +11,69 @@
<%= render :partial => "tag_details", :object => @changeset.tags.except('comment') %>
<h4 class="comments-header"><%= t('browse.changeset.discussion') %></h4>
<div class="buttons clearfix subscribe-buttons">
<form action="#" class="hide_unless_logged_in">
<% if @changeset.subscribers.exists?(@user) %>
<input class="action-button" type="submit" name="unsubscribe" value="<%= t('javascripts.changesets.show.unsubscribe') %>" data-method="POST" data-url="<%= changeset_unsubscribe_url(@changeset) %>" />
<% else %>
<input class="action-button" type="submit" name="subscribe" value="<%= t('javascripts.changesets.show.subscribe') %>" data-method="POST" data-url="<%= changeset_subscribe_url(@changeset) %>" />
<% end %>
</form>
</div>
<div class="clearfix"></div>
<% if @comments.length > 0 %>
<div class='changeset-comments'>
<form action="#">
<ul>
<% @comments.each do |comment| %>
<% if comment.visible %>
<li id="c<%= comment.id %>">
<small class='deemphasize'>
<%= t("browse.changeset.commented_by",
:when => friendly_date(comment.created_at), :exact_time => l(comment.created_at),
:user => link_to(h(comment.author.display_name), {:controller => "user", :action => "view",
:display_name => comment.author.display_name})).html_safe %>
<% if @user and @user.moderator? %>
— <span class="action-button deemphasize" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_hide_url(comment.id) %>"><%= t('javascripts.changesets.show.hide_comment') %></span>
<% end %>
</small>
<%= comment.body.to_html %>
</li>
<% elsif @user and @user.moderator? %>
<li id="c<%= comment.id %>">
<small class='deemphasize'>
<%= t("browse.changeset.hidden_commented_by",
:when => friendly_date(comment.created_at), :exact_time => l(comment.created_at),
:user => link_to(h(comment.author.display_name), {:controller => "user", :action => "view",
:display_name => comment.author.display_name})).html_safe %>
— <span class="action-button deemphasize" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_unhide_url(comment.id) %>"><%= t('javascripts.changesets.show.unhide_comment') %></span>
</small>
<%= comment.body.to_html %>
</li>
<% end %>
<% end %>
</ul>
</form>
</div>
<% end %>
<div class="notice hide_if_logged_in">
<%= link_to(t("browse.changeset.join_discussion"), :controller => 'user', :action => 'login', :referer => request.fullpath) %>
</div>
<% unless @changeset.is_open? %>
<form action="#" class="hide_unless_logged_in">
<textarea class="comment" name="text" cols="40" rows="5"></textarea>
<div class="buttons clearfix">
<input type="submit" name="comment" value="<%= t('javascripts.changesets.show.comment') %>" data-changeset-id="<%= @changeset.id %>" data-method="POST" data-url="<%= changeset_comment_url(@changeset) %>" disabled="1"/>
</div>
</form>
<% end %>
<% unless @ways.empty? %>
<h4>
<%= type_and_paginated_count('way', @way_pages) %>

View file

@ -0,0 +1,6 @@
<h2><%= t "changeset.rss.comment", :author => comment.author.display_name,
:changeset_id => comment.changeset.id.to_s %></h2>
<div class="changeset-comment" style="margin-top: 5px">
<div class="changeset-comment-description" style="font-size: smaller; color: #999999"><%= t "changeset.rss.commented_at_by_html", :when => friendly_date(comment.created_at), :user => comment.author.display_name %></div>
<div class="changeset-comment-text"><%= comment.body %></div>
</div>

View file

@ -0,0 +1,18 @@
comments.each do |comment|
xml.item do
xml.title t("changeset.rss.comment", :author => comment.author.display_name, :changeset_id => comment.changeset.id.to_s)
xml.link url_for(:controller => "browse", :action => "changeset", :id => comment.changeset.id, :anchor => "c#{comment.id}", :only_path => false)
xml.guid url_for(:controller => "browse", :action => "changeset", :id => comment.changeset.id, :anchor => "c#{comment.id}", :only_path => false)
xml.description do
xml.cdata! render(:partial => "comment", :object => comment, :formats => [ :html ])
end
if comment.author
xml.dc :creator, comment.author.display_name
end
xml.pubDate comment.created_at.to_s(:rfc822)
end
end

View file

@ -0,0 +1,14 @@
xml.rss("version" => "2.0",
"xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
xml.channel do
if @changeset
xml.title t('changeset.rss.title_particular', :changeset_id => @changeset.id)
else
xml.title t('changeset.rss.title_all')
end
xml.link url_for(:controller => "site", :action => "index", :only_path => false)
xml << render(:partial => "comments", :object => @comments)
end
end

View file

@ -9,8 +9,8 @@
<%= stylesheet_link_tag "leaflet-all", :media => "screen, print" %>
<!--[if IE]>
<%= stylesheet_link_tag "large-#{dir}", :media => "screen" %>
<%= favicon_link_tag "favicon.ico" %>
<![endif]-->
<%= favicon_link_tag "favicon.ico" %>
<%= favicon_link_tag "osm_logo_57.png", :rel => "apple-touch-icon", :sizes => "57x57", :type => "image/png" %>
<%= favicon_link_tag "osm_logo_72.png", :rel => "apple-touch-icon", :sizes => "72x72", :type => "image/png" %>
<%= favicon_link_tag "osm_logo_114.png", :rel => "apple-touch-icon", :sizes => "114x114", :type => "image/png" %>

View file

@ -30,6 +30,21 @@
<p class="error"><%= t 'layouts.osm_read_only' %></p>
<% end %>
<div id="sotm">
<a href="http://www.stateofthemap.org/?l=en"><%= image_tag "sotm.png" %></a>
<h2>
<a><span class="icon close"></span></a>
<a href="http://www.stateofthemap.org/?l=en"><%= t 'layouts.sotm_header' %></a>
</h2>
<p><a href="http://www.stateofthemap.org/?l=en">
<%= t 'layouts.sotm_line_1' %>
<br />
<%= t 'layouts.sotm_line_2' %>
<br />
<%= t 'layouts.sotm_line_3' %>
</a></p>
</div>
<div id="flash">
<%= render :partial => "layouts/flash" %>
</div>

View file

@ -16,7 +16,7 @@
</div>
<div class='buttons'>
<%= submit_tag t('message.new.send_button') %>
<%= link_to t('message.new.back'), { :controller => 'message', :action => 'inbox', :display_name => @user.display_name }, :class => 'deemphasize button' %>
<%= link_to t('message.new.back_to_inbox'), { :controller => 'message', :action => 'inbox', :display_name => @user.display_name }, :class => 'deemphasize button' %>
</div>
</fieldset>
<% end %>

View file

@ -0,0 +1,20 @@
<p><%= t 'notifier.changeset_comment_notification.greeting' %></p>
<p>
<% if @owner %>
<%= t "notifier.changeset_comment_notification.commented.your_changeset", :commenter => @commenter, :time => @time %>
<% else %>
<%= t "notifier.changeset_comment_notification.commented.commented_changeset", :commenter => @commenter, :time => @time, :changeset_author => @changeset_author %>
<% end %>
<% if @changeset_comment %>
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_with_comment", :changeset_comment => @changeset_comment %>
<% else %>
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_without_comment" %>
<% end %>
</p>
==
<%= @comment.to_html %>
==
<p><%= raw t 'notifier.changeset_comment_notification.details', :url => link_to(@changeset_url, @changeset_url) %></p>

View file

@ -0,0 +1,18 @@
<%= t 'notifier.changeset_comment_notification.greeting' %>
<% if @owner %>
<%= t "notifier.changeset_comment_notification.commented.your_changeset", :commenter => @commenter, :time => @time %>
<% else %>
<%= t "notifier.changeset_comment_notification.commented.commented_changeset", :commenter => @commenter, :time => @time, :changeset_author => @changeset_author %>
<% end %>
<% if @changeset_comment %>
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_with_comment", :changeset_comment => @changeset_comment %>
<% else %>
<%= t "notifier.changeset_comment_notification.commented.partial_changeset_without_comment" %>
<% end %>
==
<%= @comment.to_text %>
==
<%= t 'notifier.changeset_comment_notification.details', :url => @changeset_url %>

View file

@ -26,6 +26,10 @@
params.background = hashParams.background;
}
if (hashParams.comment) {
params.comment = hashParams.comment;
}
<% if params[:gpx] -%>
params.gpx = '<%= trace_data_url(params[:gpx]) %>';
<% else -%>

View file

@ -47,7 +47,7 @@
<dt><a href="http://download.geofabrik.de/"><%= t'export.start.too_large.geofabrik.title' %></a></dt>
<dd><%= t'export.start.too_large.geofabrik.description' %></dd>
<dt><a href="http://metro.teczno.com/"><%= t'export.start.too_large.metro.title' %></a></dt>
<dt><a href="https://mapzen.com/metro-extracts/"><%= t'export.start.too_large.metro.title' %></a></dt>
<dd><%= t'export.start.too_large.metro.description' %></dd>
<dt><a href="http://wiki.openstreetmap.org/wiki/Download"><%= t'export.start.too_large.other.title' %></a></dt>

View file

@ -9,49 +9,41 @@
<div id='edit-trace-form' class='standard-form'>
<fieldset>
<div class='form-row'>
<label><%= t'trace.edit.filename' %></label>
<label class='standard-label'><%= t'trace.edit.filename' %></label>
<p class='deemphasize'><%= @trace.name %> (<%= link_to t('trace.edit.download'), :controller => 'trace', :action => 'data', :id => @trace.id %>)</p>
</div>
<div class='form-row'>
<label><%= t'trace.edit.uploaded_at' %></label>
<label class='standard-label'><%= t'trace.edit.uploaded_at' %></label>
<p class='deemphasize'><%= l @trace.timestamp, :format => :friendly %></p>
</div>
</fieldset>
<% if @trace.inserted? %>
<fieldset>
<div class='form-row'>
<label><%= t'trace.edit.points' %></label>
<label class='standard-label'><%= t'trace.edit.points' %></label>
<p class='deemphasize'><%= @trace.size.to_s.gsub(/(\d)(?=(\d{3})+$)/,'\1,') %></p>
</div>
<div class='form-row'>
<label><%= t'trace.edit.start_coord' %></label>
<label class='standard-label'><%= t'trace.edit.start_coord' %></label>
</div>
<div class="geo">
<span class="latitude"><%= @trace.latitude %></span>;
<span class="longitude"><%= @trace.longitude %></span>
</div>
(<%=link_to t('trace.edit.map'), :controller => 'site', :action => 'index', :anchor => "map=14/#{@trace.latitude}/#{@trace.longitude}" %> / <%=link_to t('trace.edit.edit'), :controller => 'site', :action => 'edit', :gpx=> @trace.id, :anchor => "map=14/#{@trace.latitude}/#{@trace.longitude}" %>)
</fieldset>
<% end %>
<fieldset>
<div class='form-row'>
<label><%= t'trace.edit.owner' %></label>
<label class='standard-label'><%= t'trace.edit.owner' %></label>
<p class='deemphasize'><%= link_to h(@trace.user.display_name), {:controller => 'user', :action => 'view', :display_name => @trace.user.display_name} %></p>
</div>
<div class='form-row'>
<label><%= t'trace.edit.description' %></label>
<label class='standard-label'><%= t'trace.edit.description' %></label>
<%= f.text_field :description %>
</div>
<div class='form-row'>
<label><%= t'trace.edit.tags' %></label>
<label class='standard-label'><%= t'trace.edit.tags' %></label>
<%= f.text_field :tagstring %> (<%= t'trace.edit.tags_help' %>)
</div>
<div class='form-row'>
<label><%= t'trace.edit.visibility' %></label>
<label class='standard-label'><%= t'trace.edit.visibility' %></label>
<%= f.select :visibility, [[t('trace.visibility.private'),"private"],[t('trace.visibility.public'),"public"],[t('trace.visibility.trackable'),"trackable"],[t('trace.visibility.identifiable'),"identifiable"]] %> (<a href="<%= t'trace.edit.visibility_help_url' %>"><%= t'trace.edit.visibility_help' %></a>)
</div>
</fieldset>

View file

@ -44,7 +44,6 @@
<li><%= link_to image_tag("openid.png", :alt => t("user.login.openid_providers.openid.title")), "#", :id => "openid_open_url", :title => t("user.login.openid_providers.openid.title") %></li>
<li><%= openid_button "google", "gmail.com" %></li>
<li><%= openid_button "yahoo", "me.yahoo.com" %></li>
<li><%= openid_button "myopenid", "myopenid.com" %></li>
<li><%= openid_button "wordpress", "wordpress.com" %></li>
<li><%= openid_button "aol", "aol.com" %></li>
</ul>

View file

@ -1,4 +1,4 @@
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run OpenStreetMap::Application
run Rails.application

View file

@ -5,7 +5,7 @@ require File.expand_path('../preinitializer', __FILE__)
if STATUS == :database_offline
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "active_model/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
else
@ -14,7 +14,7 @@ end
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env)
Bundler.require(*Rails.groups)
module OpenStreetMap
class Application < Rails::Application
@ -33,9 +33,6 @@ module OpenStreetMap
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
# Configure the default encoding used in templates for Ruby 1.9.
config.encoding = "utf-8"
# Use SQL instead of Active Record's schema dumper when creating the database.
# This is necessary if your schema can't be completely dumped by the schema dumper,
# like if you have constraints or database-specific column types
@ -43,12 +40,6 @@ module OpenStreetMap
config.active_record.schema_format = :sql
end
# Enable the asset pipeline
config.assets.enabled = true
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
# Don't eager load models when the database is offline
if STATUS == :database_offline
config.paths["app/models"].skip_eager_load!

View file

@ -1,6 +1,4 @@
require 'rubygems'
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])

View file

@ -1,5 +1,5 @@
# Load the rails application
# Load the Rails application.
require File.expand_path('../application', __FILE__)
# Initialize the rails application
OpenStreetMap::Application.initialize!
# Initialize the Rails application.
Rails.application.initialize!

View file

@ -19,11 +19,19 @@ OpenStreetMap::Application.configure do
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end

View file

@ -5,7 +5,7 @@ OpenStreetMap::Application.configure do
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# your application in memory, allowing both threaded web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
@ -32,9 +32,6 @@ OpenStreetMap::Application.configure do
# Generate digests for assets URLs.
config.assets.digest = true
# Version of your assets, change this if you want to expire all your assets.
config.assets.version = '1.0'
# Specifies the header that your server uses for sending files.
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
@ -67,24 +64,7 @@ OpenStreetMap::Application.configure do
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = "http://assets.example.com"
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
config.assets.precompile += %w( index.js browse.js welcome.js fixthemap.js )
config.assets.precompile += %w( user.js diary_entry.js swfobject.js )
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( leaflet-all.css leaflet.ie.css )
config.assets.precompile += %w( embed.js embed.css )
config.assets.precompile += %w( html5shiv.js )
config.assets.precompile += %w( images/marker-*.png img/*-handle.png )
config.assets.precompile += %w( potlatch2.swf )
config.assets.precompile += %w( potlatch2/assets.zip )
config.assets.precompile += %w( potlatch2/FontLibrary.swf )
config.assets.precompile += %w( potlatch2/locales/*.swf )
config.assets.precompile += %w( help/introduction.* )
config.assets.precompile += %w( iD.js iD.css )
config.assets.precompile += %w( iD/img/*.svg iD/img/*.png iD/img/*.gif )
config.assets.precompile += %w( iD/img/pattern/*.png )
# `config.assets.precompile` has moved to config/initializers/assets.rb
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
@ -102,4 +82,9 @@ OpenStreetMap::Application.configure do
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
# Do not dump schema after migrations.
unless STATUS == :database_offline
config.active_record.dump_schema_after_migration = false
end
end

View file

@ -14,7 +14,7 @@ OpenStreetMap::Application.configure do
# Configure static asset server for tests with Cache-Control for performance.
config.serve_static_assets = true
config.static_cache_control = "public, max-age=3600"
config.static_cache_control = 'public, max-age=3600'
# Show full error reports and disable caching.
config.consider_all_requests_local = true
@ -33,4 +33,7 @@ OpenStreetMap::Application.configure do
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end

View file

@ -84,6 +84,11 @@ defaults: &defaults
require_terms_seen: false
# Whether to require users to agree to the CTs before editing
require_terms_agreed: false
# Imagery to return in capabilities as blacklisted
imagery_blacklist:
- ".*\\.googleapis\\.com/.*"
- ".*\\.google\\.com/.*"
- ".*\\.google\\.ru/.*"
# URL of Overpass instance to use for feature queries
overpass_url: "//overpass-api.de/api/interpreter"

View file

@ -0,0 +1,25 @@
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( index.js browse.js welcome.js fixthemap.js )
Rails.application.config.assets.precompile += %w( user.js diary_entry.js )
Rails.application.config.assets.precompile += %w( large-ltr.css small-ltr.css print-ltr.css )
Rails.application.config.assets.precompile += %w( large-rtl.css small-rtl.css print-rtl.css )
Rails.application.config.assets.precompile += %w( leaflet-all.css leaflet.ie.css )
Rails.application.config.assets.precompile += %w( embed.js embed.css )
Rails.application.config.assets.precompile += %w( html5shiv.js )
Rails.application.config.assets.precompile += %w( images/marker-*.png img/*-handle.png )
Rails.application.config.assets.precompile += %w( swfobject.js expressInstall.swf )
Rails.application.config.assets.precompile += %w( potlatch2.swf )
Rails.application.config.assets.precompile += %w( potlatch2/assets.zip )
Rails.application.config.assets.precompile += %w( potlatch2/FontLibrary.swf )
Rails.application.config.assets.precompile += %w( potlatch2/locales/*.swf )
Rails.application.config.assets.precompile += %w( help/introduction.* )
Rails.application.config.assets.precompile += %w( iD.js iD.css )
Rails.application.config.assets.precompile += %w( iD/img/*.svg iD/img/*.png iD/img/*.gif )
Rails.application.config.assets.precompile += %w( iD/img/pattern/*.png )
Rails.application.config.assets.precompile += %w( iD/locales/*.json )

View file

@ -0,0 +1,3 @@
# Be sure to restart your server when you modify this file.
Rails.application.config.action_dispatch.cookies_serializer = :json

View file

@ -2,7 +2,7 @@ if defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapter
def initialize_type_map_with_enums
def initialize_type_map_with_enums(type_map)
OID.alias_type "format_enum", "text"
OID.alias_type "gpx_visibility_enum", "text"
OID.alias_type "note_status_enum", "text"
@ -11,7 +11,7 @@ if defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
OID.alias_type "user_role_enum", "text"
OID.alias_type "user_status_enum", "text"
initialize_type_map_without_enums
initialize_type_map_without_enums(type_map)
end
alias_method_chain :initialize_type_map, :enums

View file

@ -0,0 +1,18 @@
# Some versions of ruby seem to accidentally force the encoding
# as part of normalize_path and some don't
module ActionDispatch
module Journey
class Router
class Utils
def self.normalize_path_with_encoding(path)
self.normalize_path_without_encoding(path).force_encoding("UTF-8")
end
class << self
alias_method_chain :normalize_path, :encoding
end
end
end
end
end

View file

@ -1,12 +0,0 @@
# Be sure to restart your server when you modify this file.
# Your secret key is used for verifying the integrity of signed cookies.
# If you change this key, all old signed cookies will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
# You can use `rake secret` to generate a secure secret key.
# Make sure your secret_key_base is kept private
# if you're sharing your code publicly.
OpenStreetMap::Application.config.secret_key_base = '8be565e2e25831d88231f4bcfd83dfc3ab33957c4f33bb3cff7a279f7820ec4d0c1111f246bb347c68859c0b46b4e591be9179a53a5a7165a9936000d6d2be41'

View file

@ -1,7 +1,7 @@
# Be sure to restart your server when you modify this file.
if defined?(MEMCACHE_SERVERS)
OpenStreetMap::Application.config.session_store :mem_cache_store, :memcache_server => MEMCACHE_SERVERS, :namespace => "rails:session", :key => "_osm_session"
Rails.application.config.session_store :mem_cache_store, :memcache_server => MEMCACHE_SERVERS, :namespace => "rails:session", :key => "_osm_session"
else
OpenStreetMap::Application.config.session_store :cache_store, :key => '_osm_session'
Rails.application.config.session_store :cache_store, :key => '_osm_session'
end

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,155 +1,485 @@
# Messages for Bulgarian (Български)
# Messages for Bulgarian (български)
# Exported from translatewiki.net
# Export driver: syck-pecl
# Export driver: spyc
# Author: DCLXVI
bg:
activerecord:
attributes:
diary_entry:
language: Език
user: Потребител
friend:
user: Потребител
trace:
name: Име
size: Размер
user: Потребител
user:
languages: Езици
pass_crypt: Парола
models:
# Author: MrPanyGoff
---
bg:
activerecord:
models:
language: Език
message: Съобщение
session: Сесия
user: Потребител
browse:
changeset_details:
belongs_to: "Принадлежи към:"
common_details:
changeset_comment: "Коментар:"
version: "Версия:"
containing_relation:
entry: Релация %{relation_name}
entry_role: Релация %{relation_name} (като %{relation_role})
map:
loading: Зареждане...
node:
download: "%{download_xml_link}, %{view_history_link} или %{edit_link}"
download_xml: Изтегляне на XML
edit: редактиране
node: Възел
node_title: "Възел: %{node_name}"
view_history: преглед на историята
node_details:
coordinates: "Координати:"
part_of: "Част от:"
node_history:
download: "%{download_xml_link} или %{view_details_link}"
download_xml: Изтегляне на XML
view_details: преглед на детайлите
not_found:
type:
node: възел
relation: релация
way: път
paging_nav:
of: от
showing_page: Показване на страница
relation:
download_xml: Изтегляне на XML
relation_details:
members: "Членове:"
relation_history:
download: "%{download_xml_link} или %{view_details_link}"
download_xml: Изтегляне на XML
view_details: преглед на детайлите
relation_member:
type:
attributes:
diary_entry:
user: Потребител
language: Език
friend:
user: Потребител
friend: Приятел
trace:
user: Потребител
name: Име
size: Размер
user:
description: Описание
languages: Езици
pass_crypt: Парола
browse:
relation_member:
type:
node: Възел
relation: Релация
start_rjs:
details: Подробности
containing_relation:
entry: 'Релация %{relation_name}'
entry_role: 'Релация %{relation_name} (като %{relation_role})'
not_found:
type:
node: възел
way: път
relation: релация
redacted:
type:
node: възел
start_rjs:
loading: Зареждане...
object_list:
details: Подробности
way:
download: "%{download_xml_link}, %{view_history_link} или %{edit_link}"
download_xml: Изтегляне на XML
edit: редактиране
view_history: преглед на историята
way: Път
way_details:
part_of: "Част от:"
way_history:
download: "%{download_xml_link} или %{view_details_link}"
download_xml: Изтегляне на XML
view_details: преглед на детайлите
changeset:
changesets:
comment: Коментар
note:
description: 'Описание:'
changeset:
changeset:
anonymous: Анонимен
changesets:
id: Номер
user: Потребител
diary_entry:
diary_entry:
comment_count:
one: 1 коментар
other: "%{count} коментара"
view:
comment: Коментар
diary_entry:
edit:
language: 'Език:'
location: 'Местоположение:'
latitude: 'Географска ширина:'
longitude: 'Географска дължина:'
save_button: Запази
view:
leave_a_comment: Оставете коментар
login: Влизане
save_button: Съхраняване
export:
start:
diary_entry:
comment_count:
one: 1 коментар
other: '%{count} коментара'
confirm: Потвърди
comments:
newer_comments: По-нови коментари
older_comments: По-стари коментари
export:
start:
licence: Лиценз
too_large:
other:
title: Други източници
options: Настройки
message:
new:
geocoder:
search_osm_nominatim:
prefix:
amenity:
airport: Летище
arts_centre: Арт център
bank: Банка
bar: Бар
bbq: Барбекю
bench: Пейка
bicycle_parking: Паркинг за велосипеди
bus_station: Автобусна спирка
cafe: Кафене
car_rental: Коли под наем
car_wash: Автомивка
casino: Казино
cinema: Кино
clinic: Поликлиника
club: Клуб
college: Колеж
community_centre: Обществен център
courthouse: Съд
crematorium: Крематориум
dentist: Стоматолог
dormitory: Пансион
drinking_water: Питейна вода
embassy: Посолство
emergency_phone: >
Телефон за спешни
повиквания
fast_food: >
Заведения за бързо
хранене
fire_hydrant: Пожарен кран
fire_station: Пожарна станция
fountain: Фонтан
grave_yard: Гробище
gym: Фитнес зала
hall: Зала
hospital: Болница
hotel: Хотел
ice_cream: Сладолед
kindergarten: Детска градина
library: Библиотека
market: Пазар
marketplace: Пазар
mountain_rescue: >
Планинска спасителна
служба
nightclub: Нощен клуб
office: Офис
park: Парк
parking: Паркинг
pharmacy: Аптека
place_of_worship: Място за поклонение
police: Полиция
post_box: Пощенска кутия
post_office: Поща
prison: Затвор
pub: Кръчма
public_building: Обществена сграда
public_market: Общински пазар
reception_area: Рецепция
restaurant: Ресторант
sauna: Сауна
school: Училище
shelter: Подслон
shop: Магазин
shower: Душ
studio: Студио
supermarket: Супэрмаркет
swimming_pool: Плувен басейн
taxi: Такси
telephone: Телефон
theatre: Театър
toilets: Тоалетна
townhall: Кметство
university: Университет
veterinary: Ветеринарна клиника
village_hall: Кметство
wifi: Достъп до WiFi
WLAN: Достъп до WiFi
youth_centre: Младежки център
boundary:
administrative: >
Административна
граница
national_park: Национален парк
protected_area: Защитена зона
bridge:
aqueduct: Акведукт
suspension: Висящ мост
viaduct: Виадукт
yes: Мост
building:
yes: Сграда
emergency:
fire_hydrant: Пожарен кран
phone: >
Телефон за спешна
връзка
highway:
bus_stop: Автобусна спирка
construction: Магистрала в строеж
cycleway: Велосипедна пътека
footway: Пешеходна пътека
minor: Второстепенен път
motorway: Магистрала
motorway_link: Скоростен път
path: Пътека
pedestrian: Пешеходна пътека
platform: Платформа
primary: Главен път
primary_link: Главен път
raceway: Състезателна писта
residential: Жилищен
rest_area: Зона за почивка
road: Път
secondary: Второстепенен път
secondary_link: Второстепенен път
service: Сервизен път
speed_camera: >
Камера за контрол на
скоростта
steps: Стълбище
street_lamp: Улична лампа
unsurfaced: Път без настилка
historic:
archaeological_site: Археологическа зона
battlefield: Бойно поле
boundary_stone: Граничен камък
building: Сграда
castle: Замък
church: Църква
citywalls: Градски стени
fort: Форт
house: Къща
icon: Икона
mine: Мина
monument: Паметник
museum: Музей
ruins: Руини
tomb: Гробница
tower: Кула
landuse:
basin: Басейн
cemetery: Гробище
construction: Строителство
farm: Ферма
farmland: Обработваема земя
forest: Гора
grass: Трева
industrial: Промишлена зона
military: Военна зона
mine: Мина
orchard: Овощна градина
nature_reserve: Природен резерват
park: Парк
reservoir: Язовир
residential: Жилищна зона
vineyard: Лозя
leisure:
beach_resort: Морски курорт
fishing: Място за риболов
garden: Градина
golf_course: Голф игрище
ice_rink: Ледена пързалка
miniature_golf: Мини-голф
nature_reserve: Природен резерват
park: Парк
sauna: Сауна
sports_centre: Спортен център
stadium: Стадион
swimming_pool: Плувен басейн
water_park: Аква парк
military:
airfield: Военен летище
barracks: Казарма
bunker: Бункер
mountain_pass:
yes: Планински проход
natural:
bay: Залив
beach: Плаж
cape: Нос
channel: Канал
cliff: Скала
crater: Кратер
dune: Дюна
fjord: Фиорд
forest: Гора
geyser: Гейзер
glacier: Ледник
heath: Здраве
hill: Хълм
island: Остров
land: Земя
peak: Връх
river: Река
rock: Скала
tree: Дърво
valley: Долина
volcano: Вулкан
water: Вода
office:
accountant: Счетоводител
architect: Архитект
employment_agency: >
Агенцията по
заетостта
insurance: Застрахователно бюро
lawyer: Адвокат
travel_agent: Туристическа агенция
yes: Офис
place:
airport: Летище
city: Град
country: Страна
county: Област
farm: Ферма
hamlet: Селце
house: Къща
houses: Къщи
island: Остров
islet: островче
moor: тресавище
municipality: община
neighbourhood: квартал
postcode: пощенски код
region: Регион
sea: море
suburb: предградие
town: град
village: село
railway:
abandoned: >
изоставена
железопътна линия
construction: >
железопътна линия в
строеж
disused_station: изоставена гара
halt: железопътна спирка
historic_station: >
гара с историческо
значение
junction: железопътен възел
level_crossing: прелез
monorail: монорелсов
narrow_gauge: Теснолинейка
platform: >
Железопътната
платформа
station: Жп-гара
stop: Железопътна спирка
subway: Метростанция
subway_entrance: вход към метростанция
tram: Трамвай
tram_stop: Трамвайна спирка
shop:
antiques: Антики
art: Арт Магазин
bakery: пекарна
beauty: Салон за красота
beverages: Магазин за напитки
bicycle: Магазин за велосипеди
books: Книжарница
boutique: Бутик
butcher: месар
department_store: универсален магазин
dry_cleaning: химическо чистене
fish: рибен магазин
food: хранителни стоки
furniture: мебели
gallery: Галерия
garden_centre: градински център
gift: магазин за подаръци
greengrocer: плод и зеленчук
grocery: бакалия
hairdresser: фризьор
insurance: застраховане
jewelry: Бижутериен магазин
laundry: Пералня
mall: търговски център
market: Пазар
mobile_phone: >
Магазин за мобилни
телефони
music: Музикален магазин
optician: Оптика
pet: >
Магазин за домашни
любимци
pharmacy: Аптека
photo: Фотомагазин
shoes: Магазин за обувки
shopping_centre: Търговски център
sports: Спортен магазин
stationery: >
Канцеларски
материали
supermarket: Супермаркет
tailor: Шивач
toys: Магазин за играчки
travel_agency: Туристическа агенция
tourism:
guest_house: Къща за гости
hostel: Хостел
hotel: Хотел
information: Информация
motel: Мотел
museum: Музей
picnic_site: Място за пикник
theme_park: Увеселителен парк
valley: Долина
zoo: зологическа градина
tunnel:
yes: Тунел
waterway:
canal: Канал
dam: язовирна стена
mineral_spring: Минерален извор
river: Река
waterfall: Водопад
admin_levels:
level2: Държавна граница
level5: Граница на региона
level6: Държавна граница
level8: граница на града
level9: Граница на селото
level10: >
Граница на
предградията
results:
no_results: >
Не бяха открити
резултати
more_results: Повече резултати
direction:
south_west: югозапад
south: юг
south_east: югоизток
east: изток
north_east: североизток
north: север
north_west: северозапад
west: запад
layouts:
logout: Излизане
log_in: влизане
notifier:
diary_comment_notification:
hi: Здравейте ((to_user)),
email_confirm:
subject: '[OpenStreetMap] Потвърждаване на вашия адрес за е-поща'
message:
new:
send_button: Изпращане
read:
date: Дата
read:
from: От
subject: Тема
date: Дата
unread_button: >
Отбелязване като
непрочетено
to: До
unread_button: Отбелязване като непрочетено
notifier:
diary_comment_notification:
hi: Здравейте ((to_user)),
email_confirm:
subject: "[OpenStreetMap] Потвърждаване на вашия адрес за е-поща"
oauth_clients:
edit:
submit: Редактиране
form:
name: Име
new:
submit: Регистриране
trace:
edit:
description: "Описание:"
trace:
edit:
filename: 'Име на файл:'
edit: редактиране
filename: "Име на файл:"
save_button: Съхраняване на промените
no_such_user:
title: Няма такъв потребител
trace:
description: 'Описание:'
save_button: >
Съхраняване на
промените
trace_form:
help: Помощ
view:
filename: 'Име на файл:'
edit: редактиране
trace:
edit: редактиране
in: в
trace_form:
help: Помощ
view:
edit: редактиране
filename: "Име на файл:"
user:
reset_password:
password: "Парола:"
user_block:
partial:
creator_name: Създател
display_name: Блокиран потребител
oauth_clients:
new:
submit: Регистриране
edit:
submit: Редактиране
form:
name: Име
user:
reset_password:
password: 'Парола:'
user_role:
grant:
confirm: Потвърждаване
revoke:
confirm: Потвърждаване
user_block:
partial:
edit: Редактиране
display_name: Блокиран потребител
creator_name: Създател
reason: Причина за блокиране
status: Статут
user_role:
grant:
confirm: Потвърждаване
revoke:
confirm: Потвърждаване

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -121,11 +121,16 @@ en:
way_paginated: "Ways (%{x}-%{y} of %{count})"
relation: "Relations (%{count})"
relation_paginated: "Relations (%{x}-%{y} of %{count})"
comment: "Comments (%{count})"
hidden_commented_by: "Hidden comment from %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
commented_by: "Comment from %{user} <abbr title='%{exact_time}'>%{when} ago</abbr>"
changesetxml: "Changeset XML"
osmchangexml: "osmChange XML"
feed:
title: "Changeset %{id}"
title_comment: "Changeset %{id} - %{comment}"
join_discussion: "Log in to join the discussion"
discussion: Discussion
node:
title: "Node: %{name}"
history_title: "Node History: %{name}"
@ -180,6 +185,7 @@ en:
wiki_link:
key: "The wiki description page for the %{key} tag"
tag: "The wiki description page for the %{key}=%{value} tag"
wikidata_link: "The %{page} item on Wikidata"
wikipedia_link: "The %{page} article on Wikipedia"
telephone_link: "Call %{phone_number}"
note:
@ -232,6 +238,13 @@ en:
load_more: "Load more"
timeout:
sorry: "Sorry, the list of changesets you requested took too long to retrieve."
rss:
title_all: OpenStreetMap changeset discussion
title_particular: "OpenStreetMap changeset #%{changeset_id} discussion"
comment: "New comment on changeset #%{changeset_id} by %{author}"
commented_at_html: "Updated %{when} ago"
commented_at_by_html: "Updated %{when} ago by %{user}"
full: Full discussion
diary_entry:
new:
title: New Diary Entry
@ -931,6 +944,10 @@ en:
text: Make a Donation
learn_more: "Learn More"
more: More
sotm_header: State of the Map 2014
sotm_line_1: 8th Annual Conference
sotm_line_2: November 7th-9th 2014
sotm_line_3: Buenos Aires, Argentina
license_page:
foreign:
title: About this translation
@ -1236,6 +1253,16 @@ en:
your_note: "%{commenter} has reactivated one of your map notes near %{place}."
commented_note: "%{commenter} has reactivated a map note you have commented on. The note is near %{place}."
details: "More details about the note can be found at %{url}."
changeset_comment_notification:
greeting: "Hi,"
commented:
subject_own: "[OpenStreetMap] %{commenter} has commented on one of your changesets"
subject_other: "[OpenStreetMap] %{commenter} has commented on a changeset you are interested in"
your_changeset: "%{commenter} has left a comment on one of your changesets created at %{time}"
commented_changeset: "%{commenter} has left a comment on a map changeset you are watching created by %{changeset_author} at %{time}"
partial_changeset_with_comment: "with comment '%{changeset_comment}'"
partial_changeset_without_comment: "without comment"
details: "More details about the changeset can be found at %{url}."
message:
inbox:
title: "Inbox"
@ -1651,9 +1678,6 @@ en:
yahoo:
title: Login with Yahoo
alt: Login with a Yahoo OpenID
myopenid:
title: Login with myOpenID
alt: Login with a myOpenID OpenID
wordpress:
title: Login with Wordpress
alt: Login with a Wordpress OpenID
@ -2111,6 +2135,13 @@ en:
map_data_zoom_in_tooltip: Zoom in to see map data
queryfeature_tooltip: Query features
queryfeature_disabled_tooltip: Zoom in to query features
changesets:
show:
comment: "Comment"
subscribe: "Subscribe"
unsubscribe: "Unsubscribe"
hide_comment: "hide"
unhide_comment: "unhide"
notes:
new:
intro: "Spotted a mistake or something missing? Let other mappers know so we can fix it. Move the marker to the correct position and type a note to explain the problem. (Please don't enter personal information or information from copyrighted maps or directory listings.)"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,242 +1,204 @@
# Messages for Guadeloupean Creole French (Guadeloupean Creole French)
# Exported from translatewiki.net
# Export driver: syck-pecl
gcf:
browse:
changeset:
changeset: "Niméwo chanjeman : %{id}"
# Export driver: spyc
---
gcf:
browse:
changeset:
changesetxml: Niméwo Chanjeman XML
download: Téléchajé %{changeset_xml_link} ouben %{osmchange_xml_link}
osmchangexml: osmChanjeman XML
changeset_details:
belongs_to: "Sé ta :"
bounding_box: "karé limit :"
box: bwet
closed_at: "Fini lè :"
created_at: "Kréyé lè :"
has_nodes: "Ti ni sé %{count} pwen la sa :"
has_relations: "Ti ni sé %{count} rèlasion la sa:"
has_ways: "Ti ni sé %{count} lin la sa :"
no_bounding_box: Pa ti ni karé limit pou niméwo chanjeman la sa.
show_area_box: Montré karé limit la
common_details:
edited_at: "Édité lè :"
edited_by: "Édité pa :"
in_changeset: "Adan niméwo chanjeman :"
version: "Vèsion :"
containing_relation:
entry: Rèlasion %{relation_name}
entry_role: Rèlasion %{relation_name} (adan wol %{relation_role})
map:
deleted: Fasé
loading: Ka Chajé...
node:
download: Chajé %{download_xml_link} ouben %{view_history_link}
download_xml: Chajé XML
node: Pwen
node_title: "Pwen : %{node_name}"
view_history: Vwè istwa la
node_details:
part_of: "Adan:"
node_history:
download: Chajé %{download_xml_link} ouben %{view_details_link}
download_xml: Chajé XML
node_history: istwa Pwen
view_details: Vwè plis biten
not_found:
sorry: Woy, pa ti ni %{type} èvè niméwo %{id}.
paging_nav:
of: a
showing_page: Paj la ka vin
relation_details:
members: "Manm :"
part_of: "Adan :"
relation_history:
relation_history: Istwa rèlasion
relation_history_title: "Istwa rèlasion: %{relation_name}"
start:
manually_select: Chwazi manielman on dôt zonn
view_data: Vwè sé doné la asi dènié kat la
start_rjs:
data_frame_title: Doné
details: Plis bitin
drag_a_box: Désiné on rektang asi kat la pou chwazi on zonn
edited_by_user_at_timestamp: Édité pa %{user} lè %{timestamp}
history_for_feature: Istwa a %{feature}
containing_relation:
entry: 'Rèlasion %{relation_name}'
entry_role: 'Rèlasion %{relation_name} (adan wol %{relation_role})'
not_found:
sorry: 'Woy, pa ti ni %{type} èvè niméwo %{id}.'
start_rjs:
load_data: Chajé sé doné la
loaded_an_area_with_num_features: "Ou chwazi on zonn ki ti ni %{num_features} éléman adan. Ti ni onlo navigatè ki pa ka sipòté tou sa zafè. Yo ka travay mié lè yo ti ni mwens ki 100 zéléman pou vwè: Si ou di wi navigatè aw ka riské vini mòlòkoy ouben pwan pann. Si ou sèten ou vlé vwè sé doné la ou pé pijé bouton la ki an ba."
loading: Y ka chajé...
manually_select: Chwazi manielman on dot zonn
private_user: Itilizatè privé
show_history: Vwè listwa la
unable_to_load_size: "Pa ni moyen chajé sé doné la: karé limit la ka mèziré %{bbox_size} y tro gran (y dwèt pli piti ki %{max_bbox_size})"
wait: Atann...
zoom_or_select: Gwosi ouben chwazi on zonn asi kat la pou vwèy
diary_entry:
diary_comment:
comment_from: Komantè a %{link_user} koté %{comment_created_at}
diary_entry:
comment_count:
one: On Komantè
other: "%{count} Komantè"
comment_link: Palé asi nouvel la sa
edit_link: Modifié nouvel la sa
posted_by: Sé %{link_user} ki voyé sa , koté %{created} i maké an %{language_link}
reply_link: Réponn nouvel la sa
edit:
body: "Mésaj:"
language: "Lang:"
latitude: "Latitid:"
location: "Ki koté:"
longitude: "Longitid:"
marker_text: Ola jounal la ka koumansé
save_button: Enrèjistré
subject: "Sijè:"
use_map_link: Sèvi èvè kat la
list:
diary_entry:
new:
title: Nouvel nèf an jounal la
list:
new: Nouvel nèf an jounal la
new_title: Mèt on nouvel nèf an jounal aw
newer_entries: Nouvel pi fré
no_entries: Pa ni nouvel an jounal aw
recent_entries: 'Nouvel fré:'
older_entries: Nouvel rasi
recent_entries: "Nouvel fré:"
new:
title: Nouvel nèf an jounal la
no_such_entry:
body: Woy, pa ti ni pon nouvel adan jounal la ouben komantè èvè niméwo la sa %{id}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.
heading: "Pa ti ni nouvel èvè niméwo la sa : %{id}"
no_such_user:
body: Woy, Pa ti ni pon itilizatè non ay sé %{user}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.
layouts:
donate: Ba OpenStreetMap on Fòs, %{link} Pou fè matériel la vansé.
donate_link_text: Bay Chabon
newer_entries: Nouvel pi fré
edit:
subject: 'Sijè:'
body: 'Mésaj:'
language: 'Lang:'
location: 'Ki koté:'
latitude: 'Latitid:'
longitude: 'Longitid:'
use_map_link: Sèvi èvè kat la
save_button: Enrèjistré
marker_text: Ola jounal la ka koumansé
no_such_entry:
heading: 'Pa ti ni nouvel èvè niméwo la sa : %{id}'
body: 'Woy, pa ti ni pon nouvel adan jounal la ouben komantè èvè niméwo la sa %{id}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.'
diary_entry:
posted_by: 'Sé %{link_user} ki voyé sa , koté %{created} i maké an %{language_link}'
comment_link: Palé asi nouvel la sa
reply_link: Réponn nouvel la sa
comment_count:
one: On Komantè
other: '%{count} Komantè'
edit_link: Modifié nouvel la sa
diary_comment:
comment_from: 'Komantè a %{link_user} koté %{comment_created_at}'
layouts:
logout: Chapé
log_in: Rantré
sign_up: Enskriw
edit: Modifié
history: Istwa sa ou fè
export: Voyé déwò
gps_traces: Chimen GPS
history: Istwa sa ou fè
inbox: Bwet a let (%{count})
intro_1: OpenStreetMap sé on lyannaj a moun kon vou pou fè on Kat lib tou pa tou asi la Tè.
intro_2: OpenStreetMap ka pewmèt vou vwè, modifié, itilizé doné jéografik tou pa tou asi la Tè.
intro_3: OpenStreetMap ka rété pou ayen aka %{ucl} épi %{bytemark}.
log_in: Rantré
logout: Chapé
make_a_donation:
text: Ba OpenStreetMap On Fòs
osm_offline: Base a doné a OpenStreetMap dékonekté atchelman ; Yo ka fè on gwo travay enpòtan asi-y pou-y maché bien.
osm_read_only: Atchelman ou pé li selamn base a doné a OpenStreetMap ; Yo ka fè on gwo travay enpòtan asi-y pou-y maché bien.
sign_up: Enskriw
tag_line: Lyannaj pou kat lib
user_diaries: Jounal
view: Vwè
welcome_user: Bienvini, %{user_link}
site:
edit:
anon_edits_link_text: Ka y ni la.
flash_player_required: Ou bizwen on lektè Flash pou itilizé Potlatch ki sé éditè Flash a OpenStreetMap. Ou pé<a href='http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'>télécharjé Flash Player asi site a Adobe</a>. <a href='http://wiki.openstreetmap.org/wiki/Editing'>Ni dot opsion</a> pour modifié OpenStreetMap.
not_public: Ou pé pa réglé édision aw pou yo piblik.
not_public_description: Pou modifié kat la fok édision aw piblik. Ou pé rann édision aw piblik asi %{user_page}.
potlatch_unsaved_changes: Ou ti ni modifikasion ou pa anrègistré. (Pou anrègistré adan Potlatch, fow déséleksioné lin la ou pwen ou asiy la,si ou ka édité an mod list. Ouben kliké asi Anregistré si ou ti ni bouton la sa.)
user_page_link: paj_itilizatè
index:
js_1: Ou ka sèvi èvè on navigatè ki pa ka sipòté Javascript ouben Javascript éten.
js_2: OpenStreetMap ka sèvi èvè Javascript pou kat glisad.
js_3: Si ou pé pa sèvi èvè Javascript, eséyé sèvi èvè<a href='http://tah.openstreetmap.org/Browse/'>navigatè fix a Tiles@Home</a>.
license:
license_name: Creative Commons Attribution-Share Alike 2.0
notice: Asi lisans %{license_name} pou %{project_name} èvè moun ay.
project_name: projè OpenStreetMap
tag_line: Lyannaj pou kat lib
osm_offline: >
Base a doné a OpenStreetMap dékonekté
atchelman ; Yo ka fè on gwo travay
enpòtan asi-y pou-y maché bien.
osm_read_only: >
Atchelman ou pé li selamn base a doné
a OpenStreetMap ; Yo ka fè on gwo
travay enpòtan asi-y pou-y maché bien.
donate: 'Ba OpenStreetMap on Fòs, %{link} Pou fè matériel la vansé.'
make_a_donation:
text: Ba OpenStreetMap On Fòs
site:
index:
js_1: >
Ou ka sèvi èvè on navigatè ki pa ka
sipòté Javascript ouben Javascript
éten.
js_2: >
OpenStreetMap ka sèvi èvè Javascript
pou kat glisad.
permalink: Permalink
key:
map_key: Léjann a kat la
search:
search: Chèché
search_help: "Egzanp : 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', ouben 'biwo la poste owa Fodfrans' <a href='http://wiki.openstreetmap.org/wiki/Search'>Lòt Egzanp ...</a>"
submit_text: Voyé
where_am_i: Ki moun an yé?
sidebar:
close: Fèmé
edit:
not_public: >
Ou pé pa réglé édision aw pou yo
piblik.
not_public_description: 'Pou modifié kat la fok édision aw piblik. Ou pé rann édision aw piblik asi %{user_page}.'
user_page_link: paj_itilizatè
anon_edits_link_text: Ka y ni la.
flash_player_required: "Ou bizwen on lektè Flash pou itilizé Potlatch ki sé éditè Flash a OpenStreetMap. Ou pé<a href='http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'>télécharjé Flash Player asi site a Adobe</a>. <a href='http://wiki.openstreetmap.org/wiki/Editing'>Ni dot opsion</a> pour modifié OpenStreetMap."
potlatch_unsaved_changes: >
Ou ti ni modifikasion ou pa
anrègistré. (Pou anrègistré adan
Potlatch, fow déséleksioné lin la ou
pwen ou asiy la,si ou ka édité an mod
list. Ouben kliké asi Anregistré si ou
ti ni bouton la sa.)
sidebar:
search_results: Rézilta a chèché aw
user:
account:
email never displayed publicly: (Pa janmen maké piblikman)
flash update success: Efowmasion asi itilisatè la bien anrejistré.
flash update success confirm needed: Enfowmasion asi itilisatè la bien anrèjistré. Gadé bwet imél aw pou konfirmé adres nouvo imél aw
home location: "La ou ka rété :"
latitude: "Latitid:"
longitude: "Longitid:"
make edits public button: Mèt tou sa an fè piblik
my settings: Mes options
no home location: Ou po ko mèt la ou ka rété.
profile description: "Deskripsion a profil la :"
public editing:
disabled: Inaktif y pé pa édité doné ; tout édision pasé anonim.
disabled link text: Poukwa an pé pa édité?
enabled: Aktif. Y pa anonnim, y pé édité doné.
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
enabled link text: Ka sa yé?
heading: "Édision piblik:"
return to profile: Rouvin' asi pwofil la
save changes button: Enrèjisré tout chanjman
update home location on click: Eskè y fo modifié la ou ka rété lè ou ka kliké asi kat la?
confirm:
button: Konfirmé
heading: Konfirmé kont a itilizatè la
press confirm button: Apiyé asi bouton la ki an ba pou konfirmé kont aw aktif menm.
confirm_email:
button: Konfirmé
heading: Konfirmé chanjman a adres imél aw
press confirm button: Apiyé asi bouton la ki an ba pou konfirmé nouvo adres imél aw.
go_public:
flash success: Tou sa ou fè jis alè ki lé piblik ou pa otorizé édité.
login:
email or username: "Adres imél ouben nom itilizaté aw :"
close: Fèmé
search:
search: Chèché
where_am_i: Ki moun an yé?
submit_text: Voyé
user:
login:
heading: Konekté
login_button: Konektéw
email or username: 'Adres imél ouben nom itilizaté aw :'
password: 'Kòd aw:'
lost password link: Ou pèd kòd aw?
password: "Kòd aw:"
lost_password:
email address: "Adres imél aw :"
login_button: Konektéw
lost_password:
heading: Ou pèd kòd aw?
email address: 'Adres imél aw :'
new password button: Voyé on nouvo kòd
new:
confirm email address: "konfimé adres imél :"
confirm password: "Konfirmé kòd aw:"
contact_webmaster: Kontakté <a href='mailto:webmaster@openstreetmap.org'>mèt web la</a> pou y ouvè an kont baw - nou ké éséyé travay pli vit posib.
display name: "Non aw afiché :"
email address: "Adres imél :"
fill_form: Ranpli fòmilè la aprè sa nou ké voyé an imél pou activé kont aw.
flash create success message: "Itilizatè bien kréyé. Ay gadé imél konfirmasion, ou kay pé travay asi kat la adan on ti moman:-)<br /><br />Ou pé ké pé konektéw si ou pa konfirmé imél aw apré ou risivrè imél konfirmasion. <br /><br />Si ou ka itilizé on lojiciel kont spanm ka voyé kestion pou konfirmé si sé on moun aw, mété adan list a moun aw adres la sa: webmaster@openstreetmap.org paskè nou pé pa réponn tou sé imél la sa."
heading: Ouvè on kont itilizatè
license_agreement: Lè ou ka kréyé kont aw, ou ka aksepté kè tout travay aw voyé asi Openstreetmap.org evè tout doné kréyé èvè zouti konekté asi Openstreetmap.org asi lisans (y pa esklisif) <a href='http://creativecommons.org/licenses/by-sa/2.0/'>Creative Commons license (by-sa)</a>.
no_auto_account_create: Malérezman, alè kilé, nou pé pa ouvè kont automatikman.
not displayed publicly: Sa pa vizib piblikman (Ay vwè<a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="wiki privacy policy including section an email addresses">prencip an nou asi konfidansialité</a>)
password: "Kòd :"
no_such_user:
body: Malérezman, pa ti ni pon itilisatè èvè non la sa %{user}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.
popup:
nearby mapper: Arpantè owa aw
your location: Koté ou yé
set_home:
flash success: La ou ka rété la bien anrèjistré
view:
add as friend: Ajouté on zanmi
description: Deskription
new:
no_auto_account_create: >
Malérezman, alè kilé, nou pé pa
ouvè kont automatikman.
contact_webmaster: "Kontakté <a href='mailto:webmaster@openstreetmap.org'>mèt web la</a> pou y ouvè an kont baw - nou ké éséyé travay pli vit posib."
license_agreement: "Lè ou ka kréyé kont aw, ou ka aksepté kè tout travay aw voyé asi Openstreetmap.org evè tout doné kréyé èvè zouti konekté asi Openstreetmap.org asi lisans (y pa esklisif) <a href='http://creativecommons.org/licenses/by-sa/2.0/'>Creative Commons license (by-sa)</a>."
email address: 'Adres imél :'
confirm email address: 'konfimé adres imél :'
not displayed publicly: 'Sa pa vizib piblikman (Ay vwè<a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="wiki privacy policy including section an email addresses">prencip an nou asi konfidansialité</a>)'
display name: 'Non aw afiché :'
password: 'Kòd :'
confirm password: 'Konfirmé kòd aw:'
no_such_user:
body: 'Malérezman, pa ti ni pon itilisatè èvè non la sa %{user}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.'
view:
my diary: Jounal an mwen
new diary entry: On dot nouvel an jounal la
my edits: Édision an mwen
my traces: Chimen an mwen
my settings: Opsion an mwen
send message: Voyé on mésaj
diary: Jounal
edits: Édision
if set location: Si ou ka ba on koté ou yé, On bel ti kat ké aprarèt. Ou pé défini koté la ou yé la asi paj aw %{settings_link}.
km away: "%{count} km"
mapper since: "Arpantè dèpi:"
my diary: Jounal an mwen
my edits: Édision an mwen
my settings: Opsion an mwen
my traces: Chimen an mwen
nearby users: "Itilizatè owa aw :"
new diary entry: On dot nouvel an jounal la
no friends: Ou poko ni pon zanmi
no nearby users: Ou poko ni itilizatè owa aw.
remove as friend: Woté on zanmi
send message: Voyé on mésaj
settings_link_text: Opsion
traces: Chimen
remove as friend: Woté on zanmi
add as friend: Ajouté on zanmi
mapper since: 'Arpantè dèpi:'
description: Deskription
user location: Ola itilizatè yé
if set location: 'Si ou ka ba on koté ou yé, On bel ti kat ké aprarèt. Ou pé défini koté la ou yé la asi paj aw %{settings_link}.'
settings_link_text: Opsion
your friends: Kanmarad aw
no friends: Ou poko ni pon zanmi
km away: '%{count} km'
nearby users: 'Itilizatè owa aw :'
no nearby users: Ou poko ni itilizatè owa aw.
popup:
your location: Koté ou yé
nearby mapper: Arpantè owa aw
account:
my settings: Mes options
email never displayed publicly: (Pa janmen maké piblikman)
public editing:
heading: 'Édision piblik:'
enabled: >
Aktif. Y pa anonnim, y pé édité
doné.
enabled link: >
http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
enabled link text: Ka sa yé?
disabled: >
Inaktif y pé pa édité doné ; tout
édision pasé anonim.
disabled link text: Poukwa an pé pa édité?
profile description: 'Deskripsion a profil la :'
home location: 'La ou ka rété :'
no home location: Ou po ko mèt la ou ka rété.
latitude: 'Latitid:'
longitude: 'Longitid:'
update home location on click: >
Eskè y fo modifié la ou ka rété lè
ou ka kliké asi kat la?
save changes button: Enrèjisré tout chanjman
make edits public button: Mèt tou sa an fè piblik
return to profile: "Rouvin' asi pwofil la"
flash update success confirm needed: >
Enfowmasion asi itilisatè la bien
anrèjistré. Gadé bwet imél aw pou
konfirmé adres nouvo imél aw
flash update success: >
Efowmasion asi itilisatè la bien
anrejistré.
confirm:
heading: Konfirmé kont a itilizatè la
press confirm button: >
Apiyé asi bouton la ki an ba pou
konfirmé kont aw aktif menm.
button: Konfirmé
confirm_email:
heading: Konfirmé chanjman a adres imél aw
press confirm button: >
Apiyé asi bouton la ki an ba pou
konfirmé nouvo adres imél aw.
button: Konfirmé
set_home:
flash success: La ou ka rété la bien anrèjistré
go_public:
flash success: >
Tou sa ou fè jis alè ki lé piblik ou
pa otorizé édité.

File diff suppressed because it is too large Load diff

View file

@ -1,290 +1,194 @@
# Messages for Swiss German (Alemannisch)
# Exported from translatewiki.net
# Export driver: syck-pecl
# Export driver: spyc
# Author: Als-Chlämens
# Author: Als-Holder
gsw:
browse:
changeset:
changeset: "Changeset: %{id}"
changesetxml: Changeset-XML
download: "%{changeset_xml_link} oder %{osmchange_xml_link} abelade"
feed:
title: Changeset %{id}
title_comment: Changeset %{id} - %{comment}
osmchangexml: osmChange XML
---
gsw:
browse:
changeset:
title: Changeset
changeset_details:
belongs_to: "Aagleit vu:"
bounding_box: "Beryych:"
box: Chaschte
closed_at: "Zuegmacht am:"
created_at: "Aagleit am:"
has_nodes:
one: "Do het s die %{count} Chnote din:"
other: "Do het s die %{count} Chnote din:"
has_relations:
one: "Het die %{count} Relation:"
other: "Het die %{count} Relatione:"
has_ways:
one: "Het dää %{count} Wäg:"
other: "Het die %{count} Wäg:"
no_bounding_box: Fir des Changeset isch kei Beryych gspycheret.
show_area_box: Beryychsgränzen aazeige
common_details:
changeset_comment: "Kommentar:"
edited_at: "Bearbeitet am:"
edited_by: "Bearbeitet vu:"
in_changeset: "Im Changeset:"
version: "Version:"
containing_relation:
entry: Relation %{relation_name}
entry_role: Relation %{relation_name} (as %{relation_role})
map:
deleted: Glescht
larger:
area: Beryych uf ere greßere Charten aaluege
node: Chnoten uf ere greßere Charten aaluege
relation: Relation uf ere greßere Charten aaluege
way: Wäg uf ere greßere Charten aaluege
loading: Am Lade ...
navigation:
all:
next_changeset_tooltip: Negscht Changeset
prev_changeset_tooltip: Vorig Changeset
user:
name_changeset_tooltip: Änderige vu %{user} aazeige
next_changeset_tooltip: Negschti Änderig vu %{user}
prev_changeset_tooltip: Vorigi Änderig vu %{user}
node:
download: "%{download_xml_link}, %{view_history_link} oder %{edit_link}"
download_xml: XML abelade
edit: Bearbeite
node: Chnote
node_title: "Chnote: %{node_name}"
view_history: Gschicht aazeige
node_details:
coordinates: "Koordinate:"
part_of: "Teil vu:"
node_history:
download: "%{download_xml_link} oder %{view_details_link}"
download_xml: XML abelade
node_history: Chnote-Chronik
node_history_title: "Chnote-Chronik: %{node_name}"
view_details: Einzelheite aaluege
not_found:
sorry: Mir hän dr %{type} mit dr Nummere %{id} leider nit chenne finde. Du hesch Di villicht verschribe oder Du bisch eme nit giltige Gleich (Link) nogange.
type:
changesetxml: Changeset-XML
osmchangexml: osmChange XML
feed:
title: 'Changeset %{id}'
title_comment: 'Changeset %{id} - %{comment}'
relation_member:
entry_role: '%{type} %{name} as %{role}'
type:
node: Chnote
way: Wäg
relation: Relation
containing_relation:
entry: 'Relation %{relation_name}'
entry_role: 'Relation %{relation_name} (as %{relation_role})'
not_found:
sorry: 'Mir hän dr %{type} mit dr Nummere %{id} leider nit chenne finde. Du hesch Di villicht verschribe oder Du bisch eme nit giltige Link nogange.'
type:
node: Chnote
way: Wäg
relation: Relation
changeset: Mängi vu Änderige
node: Chnote
relation: Relation
way: Wäg
paging_nav:
of: vu
showing_page: Syte zeige
relation:
download: "%{download_xml_link} oder %{view_history_link}"
download_xml: XML abelade
relation: Relation
relation_title: "Relation: %{relation_name}"
view_history: Chronik aazeige
relation_details:
members: "Mitglider:"
part_of: "Mitglid vu:"
relation_history:
download: "%{download_xml_link} oder %{view_details_link}"
download_xml: XML abelade
relation_history: Relations-Chronik
relation_history_title: "Relations-Chronik: %{relation_name}"
view_details: Einzelheite aaluege
relation_member:
entry_role: "%{type} %{name} as %{role}"
type:
node: Chnote
relation: Relation
way: Wäg
start:
manually_select: En andere Chartenuusschnitt vu Hand uuswehle
view_data: Date vum aktuälle Chartenuusschnitt aazeige
start_rjs:
data_frame_title: Date
data_layer_name: Date
details: Einzelheite
drag_a_box: E Rammen iber d Charten ufzie go ne Beryych uuswehle
edited_by_user_at_timestamp: Bearbeitet vu %{user} am %{timestamp}
history_for_feature: Chronik fir %{feature}
start_rjs:
load_data: Date lade
loaded_an_area_with_num_features: Du hesch e Beryych glade, wu s %{num_features} Elemänt din het. E Teil Browser hän Probläm bi dr Darstellig vun ere so große Datenmängi. Normalerwyys isch s am beschte, nume weniger wie 100 Elemänt z bschaue; alles ander macht Dyy Browser langsam bzw. losst e nimmi uf Yygabe reagiere. Wänn Du sicher bisch, ass Du die Daten witt darstelle, no druck unten uf „Date lade“.
loading: Am Lade ...
manually_select: En andere Chartenuusschnitt manuäll uuswehle
object_list:
api: Dää Beryych vu dr API abfroge
back: Objäktlischt aazeige
details: Einzelheite
heading: Objäktlischt
history:
type:
node: Chnote %{id}
way: Wäg %{id}
selected:
type:
node: Chnote %{id}
way: Wäg %{id}
type:
node: Chnote
way: Wäg
private_user: Anonyme Benutzer
show_history: Chronik
unable_to_load_size: "Het nit chenne glade wäre: Beryych vu dr Greßi %{bbox_size} isch z groß (sott chleiner syy wie %{max_bbox_size})"
wait: E Momänt bitte ...
zoom_or_select: Charte vergreßere oder e Beryych uf dr Charten uuswehle
tag_details:
tags: "Tags:"
way:
download: "%{download_xml_link}, %{view_history_link} oder %{edit_link}"
download_xml: XML abelade
edit: Bearbeite
view_history: Gschicht aazeige
way: Wäg
way_title: "Wäg: %{way_name}"
way_details:
also_part_of:
one: Au Teil vum Wäg %{related_ways}
other: Au Teil vu dr Wäg %{related_ways}
nodes: "Chnote:"
part_of: "Teil vu:"
way_history:
download: "%{download_xml_link} oder %{view_details_link}"
download_xml: XML abelade
view_details: Einzelheite aazeige
way_history: Wäg-Gschicht
way_history_title: "Gschicht vum Wäg: %{way_name}"
trace:
create:
trace_uploaded: Dyy GPX-Datei isch uffeglade wore un wartet uf d Ufnahm in d Datebank. Des gschiht normalerwyys innerhalb vun ere halbe Stund, derno wird Dir e Bstetigungs-E-Mail gschickt.
tag_details:
tags: 'Tags:'
trace:
visibility:
private: >
Privat (nume as anonymi, nit sortierti
Pinkt ohni Zytstämpfel aazeigt)
public: >
Effentlig (wird in dr Tracklischt
aazeigt, aber numen as anonymi, nit
sortierti Punktfolg ohni Zytstämpfel)
trackable: >
Track (wird in dr Tracklischt as
anonymi, sortierti Punktfolg mit
Zytstämpfel aazeigt)
identifiable: >
Identifizierbar (wird in dr Tracklischt
as anonymi, sortierti Punktfolg mit
Zytstämpfel aazeigt)
create:
upload_trace: E GPS-Track uffelade
delete:
scheduled_for_deletion: Track, wu zum Lesche vorgsäh isch
edit:
description: "Bschryybig:"
trace_uploaded: >
Dyy GPX-Datei isch uffeglade wore un
wartet uf d Ufnahm in d Datebank. Des
gschiht normalerwyys innerhalb vun ere
halbe Stund, derno wird Dir e
Bstetigungs-E-Mail gschickt.
edit:
title: 'Am Bearbeite vum Track %{name}'
heading: 'Track %{name} bearbeite'
filename: 'Dateiname:'
download: abelade
edit: bearbeite
filename: "Dateiname:"
heading: Track %{name} bearbeite
uploaded_at: 'Uffegladen am:'
points: 'Pinkt:'
start_coord: 'Aafangskoordinate:'
map: Charte
owner: "Bsitzer:"
points: "Pinkt:"
save_button: Änderige spychere
start_coord: "Aafangskoordinate:"
tags: "Tags:"
edit: bearbeite
owner: 'Bsitzer:'
description: 'Bschryybig:'
tags: 'Tags:'
tags_help: Trännig dur Komma
title: Am Bearbeite vum Track %{name}
uploaded_at: "Uffegladen am:"
visibility: "Sichtbarkeit:"
save_button: Änderige spychere
visibility: 'Sichtbarkeit:'
visibility_help: Was heißt des?
list:
public_traces: Effetligi GPS-Track
public_traces_from: Effetligi GPS-Track vu %{user}
tagged_with: Gchännzeichnet mit %{tags}
your_traces: Dyy GPS-Track
make_public:
made_public: Track, wu vereffetligt isch
no_such_user:
body: Äxgisi, s git kei Benutzer mit em Name %{user}. Bitte iberprief Dyy Schryybwyys, oder villicht isch s Gleich, wu Du nogange bisch, falsch.
heading: Dr Benutzer %{user} git s nit
title: Benutzer nit gfunde
trace:
ago: "%{time_in_words_ago} här"
by: vu
count_points: "%{count} Pinkt"
edit: bearbeite
edit_map: Charte bearbeite
in: in
map: Charte
more: meh
pending: HÄNGIG
private: PRIVAT
public: EFFETLI
trace_details: Track-Einzelheite aaluege
view_map: Charten aazeige
trace_form:
trace_form:
upload_gpx: GPX-Datei uffelade
description: Bschryybig
help: Hilf
tags: Markierige
tags_help: Trännig dur Komma
upload_button: Uffelade
upload_gpx: GPX-Datei uffelade
visibility: Sichtbarkeit
visibility_help: Was heißt des?
trace_header:
upload_button: Uffelade
help: Hilf
trace_header:
see_all_traces: Alli Tracks aaluege
see_your_traces: Eigeni GPS-Tracks aazeige
traces_waiting: "%{count} vu Dyyne Tracks sin zur Zyt in dr Warteschlang. Bitte wart, bis die fertig sin go d Verarbeitig nit fir anderi Nutzer blockiere."
trace_optionals:
traces_waiting: '%{count} vu Dyyne Tracks sin zur Zyt in dr Warteschlang. Bitte wart, bis die fertig sin go d Verarbeitig nit fir anderi Nutzer blockiere.'
trace_optionals:
tags: Markierige
view:
delete_track: Dää Track lesche
description: "Bschryybig:"
download: abelade
edit: bearbeite
edit_track: Dää Track bearbeite
filename: "Dateiname:"
heading: Am Bschaue vum Track %{name}
map: Charte
none: Keini
owner: "Bsitzer:"
view:
title: 'Am Aaluege vum Track %{name}'
heading: 'Am Bschaue vum Track %{name}'
pending: HÄNGIG
points: "Pinkt:"
start_coordinates: "Startkoordinate:"
tags: "Markierige:"
title: Am Aaluege vum Track %{name}
filename: 'Dateiname:'
download: abelade
uploaded: 'Uffegladen am:'
points: 'Pinkt:'
start_coordinates: 'Startkoordinate:'
map: Charte
edit: bearbeite
owner: 'Bsitzer:'
description: 'Bschryybig:'
tags: 'Markierige:'
none: Keini
edit_track: Dää Track bearbeite
delete_track: Dää Track lesche
trace_not_found: Track nit gfunde!
uploaded: "Uffegladen am:"
visibility: "Sichtbarkeit:"
visibility:
identifiable: Identifizierbar (wird in dr Tracklischt as anonymi, sortierti Punktfolg mit Zytstämpfel aazeigt)
private: Privat (nume as anonymi, nit sortierti Pinkt ohni Zytstämpfel aazeigt)
public: Effentlig (wird in dr Tracklischt aazeigt, aber numen as anonymi, nit sortierti Punktfolg ohni Zytstämpfel)
trackable: Track (wird in dr Tracklischt as anonymi, sortierti Punktfolg mit Zytstämpfel aazeigt)
user:
confirm_email:
button: Bstetige
failure: E E-Mail-Adräss isch scho mit däm Gleich bstetigt wore.
heading: Änderig vu dr E-Mail-Adräss bstetige
press confirm button: Druck unte uf dr „Bstetige“-Chnopf go Dyy nej E-Mail-Adräss bstetige.
success: Dyy E-Mail-Adräss isch bstetigt wore, dankschen fir s Regischtriere!
filter:
not_an_administrator: Du muesch e Administrator syy go die Aktion uusfiere.
go_public:
flash success: Alli Dyyni Bearbeitige sion jetz effetlig, un Du derfsch jetz Bearbeitige mache.
make_friend:
already_a_friend: Du bisch scho ne Frynd vu %{name}.
failed: Excusez, %{name} het nit as Frynd chenne zuegfiegt wäre.
success: "%{name} isch jetz Dyy Frynd."
popup:
nearby mapper: Mapper in dr Nechi
your location: Dyy Standort
reset_password:
confirm password: "Passwort bstetige:"
flash changed: Dyy Passwort isch gänderet wore.
flash token bad: Mir hän des Chirzel leider nit chenne finde. Iberprief d URL.
heading: Passwort fir %{user} zrucksetze
reset: Passwort zrucksetze
visibility: 'Sichtbarkeit:'
trace:
pending: HÄNGIG
count_points: '%{count} Pinkt'
ago: '%{time_in_words_ago} här'
more: meh
trace_details: Track-Einzelheite aaluege
view_map: Charten aazeige
edit: bearbeite
edit_map: Charte bearbeite
public: EFFETLI
private: PRIVAT
by: vu
in: in
map: Charte
list:
public_traces: Effetligi GPS-Track
your_traces: Dyy GPS-Track
public_traces_from: 'Effetligi GPS-Track vu %{user}'
tagged_with: 'Gchännzeichnet mit %{tags}'
delete:
scheduled_for_deletion: Track, wu zum Lesche vorgsäh isch
make_public:
made_public: Track, wu vereffetligt isch
user:
reset_password:
title: Passwort zrucksetze
user_role:
filter:
already_has_role: Dr Nutzer ghert scho zue dr Rolle %{role}.
doesnt_have_role: Dr Nutzer het kei Roll %{role}.
not_a_role: D Zeichechette „%{role}“ bezeichnet kei giltigi Rolle.
not_an_administrator: Benutzerrolle chenne nume vu Adminischtratore verwaltet wäre, un Du bisch kei Adminischtrator.
grant:
are_you_sure: Bisch sicher, ass Du dr Benutzer „%{name}“ dr Rolle „%{role}“ witt zueordne?
confirm: Bstetige
fail: Dr Benutzer „%{name}“ het dr Rolle „%{role}“ nit chenne zuegordnet wären. Bitte iberprief, eb s sich um e giltige Benutzer un e giltigi Rolle handlet.
heading: Rollezueornig bstetige
heading: 'Passwort fir %{user} zrucksetze'
confirm password: 'Passwort bstetige:'
reset: Passwort zrucksetze
flash changed: Dyy Passwort isch gänderet wore.
flash token bad: >
Mir hän des Chirzel leider nit chenne
finde. Iberprief d URL.
popup:
your location: Dyy Standort
nearby mapper: Mapper in dr Nechi
confirm_email:
heading: Änderig vu dr E-Mail-Adräss bstetige
press confirm button: >
Druck unte uf dr „Bstetige“-Chnopf
go Dyy nej E-Mail-Adräss bstetige.
button: Bstetige
success: >
Dyy E-Mail-Adräss isch bstetigt wore,
dankschen fir s Regischtriere!
failure: >
E E-Mail-Adräss isch scho mit däm Link
bstetigt wore.
go_public:
flash success: >
Alli Dyyni Bearbeitige sion jetz
effetlig, un Du derfsch jetz Bearbeitige
mache.
make_friend:
success: '%{name} isch jetz Dyy Frynd.'
failed: 'Excusez, %{name} het nit as Frynd chenne zuegfiegt wäre.'
already_a_friend: 'Du bisch scho ne Frynd vu %{name}.'
filter:
not_an_administrator: >
Du muesch e Administrator syy go die
Aktion uusfiere.
user_role:
filter:
not_an_administrator: >
Benutzerrolle chenne nume vu
Adminischtratore verwaltet wäre, un Du
bisch kei Adminischtrator.
not_a_role: 'D Zeichechette „%{role}“ bezeichnet kei giltigi Rolle.'
already_has_role: 'Dr Nutzer ghert scho zue dr Rolle %{role}.'
doesnt_have_role: 'Dr Nutzer het kei Roll %{role}.'
grant:
title: Rollezueornig bstetige
revoke:
are_you_sure: Bisch sicher, ass Du d Zueornig vum Benutzer „%{name}“ zue dr Rolle „%{role}“ witt ufhebe?
heading: Rollezueornig bstetige
are_you_sure: 'Bisch sicher, ass Du dr Benutzer „%{name}“ dr Rolle „%{role}“ witt zueordne?'
confirm: Bstetige
fail: Het d Zueornig vum Benutzer „%{name}“ zue dr Rolle „%{role}“ nit chenne ufhebe. Bitte iberprief, eb s sich um e giltige Benutzer un e giltigi Rolle handlet.
heading: D Ufhebig vu dr Rollezueornig bstetige
fail: 'Dr Benutzer „%{name}“ het dr Rolle „%{role}“ nit chenne zuegordnet wären. Bitte iberprief, eb s sich um e giltige Benutzer un e giltigi Rolle handlet.'
revoke:
title: Ufhebig vu dr Rollezueornig bstetige
heading: D Ufhebig vu dr Rollezueornig bstetige
are_you_sure: 'Bisch sicher, ass Du d Zueornig vum Benutzer „%{name}“ zue dr Rolle „%{role}“ witt ufhebe?'
confirm: Bstetige
fail: 'Het d Zueornig vum Benutzer „%{name}“ zue dr Rolle „%{role}“ nit chenne ufhebe. Bitte iberprief, eb s sich um e giltige Benutzer un e giltigi Rolle handlet.'

File diff suppressed because it is too large Load diff

View file

@ -1,49 +1,30 @@
# Messages for Hindi (हिन्दी)
# Exported from translatewiki.net
# Export driver: syck-pecl
# Export driver: phpyaml
# Author: Ansumang
# Author: Charu
hi:
activerecord:
attributes:
diary_comment:
body: शरीर
diary_entry:
language: भाशा
latitude: अक्षांश
longitude: देशांतर
title: शीर्षक
user: उपयोगकर्ता
friend:
friend: दोस्त
user: उपयोगकर्ता
message:
body: संदेश का शारीर
recipient: प्राप्तकर्ता
sender: प्रेषक
title: शीर्षक
trace:
description: वर्णन
latitude: अक्षांश
longitude: देशांतर
name: नाम
public: सार्वजनिक
size: आकार
user: उपयोगकर्ता
visible: दृश्य
user:
active: सक्रिय
description: वर्णन
display_name: प्रदर्शन नाम
email: ई-मेल
languages: भाषाओं
pass_crypt: पासवर्ड
models:
# Author: Shubhamkanodia
# Author: Siddhartha Ghai
# Author: Vdhatterwal
---
hi:
time:
formats:
friendly: '%e %B %Y को %H:%M पर'
activerecord:
models:
acl: अभिगम नियंत्रण सूची
changeset: बदलाव
changeset_tag: बदलाव टैग
country: देश
diary_comment: डायरी टिप्पणी
diary_entry: डायरी प्रविष्टि
friend: दोस्त
language: भाशा
language: भाषा
message: संदेश
node: आसंधि
node_tag: आसंधि का अंकितक
notifier: सूचनाकार
old_node: पुराने आसंधि
old_node_tag: पुराने आसंधि का अंकितक
old_relation: पुराना संबंध
@ -55,286 +36,239 @@ hi:
relation: संबंध
relation_member: संबंध का सदस्य
relation_tag: संबंध का अंकितक
user: उपयोगकर्ता
session: सत्र
trace: अनुरेख
tracepoint: अनुरेखण बिंदु
tracetag: अनुरेखन टैग
user: सदस्य
user_preference: उपयोगकर्ता के वरीयता
user_token: उपयोगकर्ता के अंकितक
way: रस्ता
way_node: रस्ता का आसंधि
way_tag: रस्ता का अंकितक
browse:
changeset_details:
closed_at: "समापन के समय:"
created_at: "निर्माण के समय:"
has_nodes: "निम्नलिखित %{count} आसंधि है:"
has_relations: "निम्नलिखित %{count} संबंध है:"
has_ways: "निम्नलिखित %{count} रस्ते है:"
common_details:
changeset_comment: "टिप्पणी:"
edited_at: "समय, जिस पर संपादित:"
edited_by: "संपादक:"
in_changeset: "इस changeset का अंग:"
version: "संस्करण:"
containing_relation:
attributes:
diary_comment:
body: शरीर
diary_entry:
user: सदस्य
title: शीर्षक
latitude: अक्षांश
longitude: देशांतर
language: भाषा
friend:
user: सदस्य
friend: दोस्त
trace:
user: सदस्य
visible: दृश्य
name: नाम
size: आकार
latitude: अक्षांश
longitude: देशांतर
public: सार्वजनिक
description: वर्णन
message:
sender: प्रेषक
title: शीर्षक
body: संदेश का शारीर
recipient: प्राप्तकर्ता
user:
email: ई-मेल
active: सक्रिय
display_name: प्रदर्शन नाम
description: वर्णन
languages: भाषाओं
pass_crypt: पासवर्ड
editor:
default: डिफ़ॉल्ट (currently %{name})
browse:
relation_member:
type:
node: नोड
way: ओर
relation: संबंध
containing_relation:
entry: संबंध %{relation_name}
entry_role: संबंध %{relation_name} (as %{relation_role})
map:
deleted: मिटा दिया गया है
navigation:
user:
prev_changeset_tooltip: "%{user} द्वारा पूर्व संपादित"
node:
download: "%{download_xml_link} या %{view_history_link}"
edit: संपादन
node: आसंधि
node_title: "आसंधि: %{node_name}"
view_history: इतिहास देखें
node_details:
coordinates: "निर्देशांक:"
part_of: "इन रास्तो का हिस्सा:"
node_history:
download: "%{download_xml_link} या %{view_details_link}"
node_history: आसंधि का इतिहास
node_history_title: "नोड इतिहास: %{node_name}"
view_details: विवरण देखें
not_found:
not_found:
sorry: क्षमा करें, ये %{type} इस आईडी %{id } के साथ, पाया नहीं जा सका
type:
type:
node: आसंधि
relation: संबंध
way: रास्ता
paging_nav:
of: "पृष्ठ गिनती:"
showing_page: "इस पृष्ठ का प्रदर्शन:"
relation:
download: "%{download_xml_link} या %{view_history_link}"
relation: संबंध
relation_title: "संबंध: %{relation_name}"
view_history: इतिहास देखें
relation_details:
members: "सदस्य:"
part_of: "इन संबंधो का हिस्सा:"
relation_history:
relation_history: संबंध का इतिहास
relation_history_title: "इस संबंध का इतिहास: %{relation_name}"
relation_member:
type:
node: नोड
relation: संबंध
way: ओर
start:
manually_select: कृपया, आप एक अलग क्षेत्र चुनें
view_data: इस मानचित्र के तथ्यों देखें
start_rjs:
data_frame_title: तथ्य
data_layer_name: तथ्य
details: "विवरण:"
drag_a_box: मानचित्र पर एक बॉक्स खींचें एक क्षेत्र का चयन करने के लिए
edited_by_user_at_timestamp: "%{user} द्वारा %{timestamp} पर संपादित"
loaded_an_area_with_num_features: "इस क्षेत्र में %{num_features} विशेषताओं शामिल है| सामान्य तौर पर, कुछ ब्राउज़रों इस मात्रा के तथ्यों प्रदर्शित करने में सक्षम नहीं हो सकता है| वे सबसे अच्छा काम करते है जब एक बार में १०० से कम सुविधाओं को प्रदर्शन करते है: कुछ और करने पर आपके ब्राउजर कम तेज़ हो सकती है| यदि आप इस तथ्यों को प्रदर्शित करना चाहते हैं, तो आप नीचे दिए गए बटन पर क्लिक करे|"
manually_select: कृपया, आप एक अलग क्षेत्र चुनिए
object_list:
details: विवरण
history:
type:
node: आसंधि %{id}
way: रस्ता %{id}
selected:
type:
node: आसंधि %{id}
way: रस्ता %{id}
type:
node: आसंधि
way: रस्ता
private_user: असार्वजनिक उपयोगकर्ता
show_history: इतहास दिखाइए
unable_to_load_size: "भरण करने में असमर्थ: इस आकार %{bbox_size} के बॉक्स बहुत बड़ी है:"
wait: कृपया प्रतीक्षा करें...
zoom_or_select: कृपया ज़ूम करे या नक्शे के एक क्षेत्र देखने के लिए चुनें
tag_details:
tags: "अंकितक:"
way:
download: "%{download_xml_link} या %{view_history_link}"
edit: संपादन
view_history: इतिहास देखें
way: रस्ता
way_title: "रास्ते का नाम: %{way_name}"
way_details:
nodes: "आसंधि:"
part_of: "इनका हिस्सा:"
way_history:
download: "%{download_xml_link} या %{view_details_link}"
view_details: विवरण देखें
way_history: रास्ते का इतिहास
way_history_title: "इस रास्ता का इतिहास: %{way_name}"
changeset:
changeset:
tag_details:
tags: 'अंकितक:'
changeset:
changeset_paging_nav:
showing_page: 'इस पृष्ठ का प्रदर्शन:'
changeset:
anonymous: अनाम
big_area: (बड़ा क्षेत्र)
no_comment: (कोई टिप्पणी नहीं है)
no_edits: (कोई संपादित नहीं है)
still_editing: (संपादित किया जा रहा है)
view_changeset_details: इस changeset के विवरण देखे
changeset_paging_nav:
showing_page: "इस पृष्ठ का प्रदर्शन:"
changesets:
area: क्षेत्र
comment: टिप्पणी
changesets:
id: आईडी
saved_at: समय जब सुरक्षित किया गया
user: उप्योगिकर्ता
diary_entry:
edit:
body: "दैनिकी प्रविष्टि का शारीर:"
language: "भाषा:"
latitude: अक्षांश
location: "स्थान:"
longitude: देशांतर
marker_text: दैनिकी प्रविष्टि के स्थान
save_button: सहेजने
subject: "विषय:"
title: दैनिकी प्रविष्टि संपादित करें
use_map_link: नक्शा का इस्तेमाल
list:
user: सदस्य
comment: टिप्पणी
area: क्षेत्र
diary_entry:
new:
title: नई दैनिकी प्रविष्टि
list:
title: उपयोगकर्ताओं के दैनिकी
user_title: '%{user}'' के दैनिकी'
new: नई दैनिकी प्रविष्टि
new_title: अपने दैनिकी मैं, एक नई प्रविष्टि लिखें
no_entries: कोई दैनिकी प्रविष्टियों नहीं है
recent_entries: 'नई दैनिकी प्रविष्टियों:'
older_entries: पुराने प्रविष्टियों
recent_entries: "नई दैनिकी प्रविष्टियों:"
title: उपयोगकर्ताओं के दैनिकी
user_title: "%{user}' के दैनिकी"
new:
title: नई दैनिकी प्रविष्टि
no_such_entry:
body: क्षमा करें, इस आईडी %{id} के लिया कोई प्रविष्टि या टिप्पणी नहीं है| कृपया अपनी वर्तनी की जाँच करें, or maybe the link you clicked is wrong|
heading: इस आईडी %{id} के लिया कोई प्रविष्टि नहीं है
view:
leave_a_comment: टिप्पणी लिखिए
login: सत्रारंभ
login_to_leave_a_comment: सत्रारंभ यहाँ %{login_link}, एक टिप्पणी लिखिने के लिए
edit:
title: दैनिकी प्रविष्टि संपादित करें
subject: 'विषय:'
body: 'दैनिकी प्रविष्टि का शारीर:'
language: 'भाषा:'
location: 'स्थान:'
latitude: अक्षांश
longitude: देशांतर
use_map_link: नक्शा का इस्तेमाल
save_button: सहेजने
marker_text: दैनिकी प्रविष्टि के स्थान
view:
title: उप्योगिकर्ताओ के दैनिकी | %{user}
user_title: "%{user}'s के दैनिकीं"
export:
start:
user_title: '%{user}''s के दैनिकीं'
leave_a_comment: टिप्पणी लिखिए
login_to_leave_a_comment: सत्रारंभ यहाँ %{login_link}, एक टिप्पणी लिखिने के
लिए
login: सत्रारंभ
save_button: सहेजने
no_such_entry:
heading: इस आईडी %{id} के लिया कोई प्रविष्टि नहीं है
body: क्षमा करें, इस आईडी %{id} के लिया कोई प्रविष्टि या टिप्पणी नहीं है| कृपया
अपनी वर्तनी की जाँच करें, or maybe the link you clicked is wrong|
export:
start:
area_to_export: क्षेत्र निर्यात करने के लिए
format_to_export: स्वरूप निर्यात करने के लिए
manually_select: कृपया, आप एक अलग क्षेत्र चुनिए
mapnik_image: Mapnik छवि
osmarender_image: Osmarender छवि
geocoder:
description:
types:
format_to_export: स्वरूप निर्यात करने के लिए
geocoder:
description:
types:
cities: नगर
places: स्थल
towns: शहर
direction:
east: पूर्व
north: उत्तर
north_east: उत्तर-पूर्व
north_west: उत्तर-पश्चिम
places: स्थल
distance:
one: करीब 1 किमी
zero: 1 किमी से कम
other: करीब %{count} किमी
direction:
south_west: दक्षिण-पश्चिम
south: दक्षिण
south_east: दक्षिण-पूर्व
south_west: दक्षिण-पश्चिम
east: पूर्व
north_east: उत्तर-पूर्व
north: उत्तर
north_west: उत्तर-पश्चिम
west: पश्चिम
distance:
one: करीब 1 किमी
other: करीब %{count} किमी
zero: 1 किमी से कम
layouts:
layouts:
home: गृह
inbox_tooltip:
other: आपके इनबॉक्स में %{count} अपठित संदेश हैं
logout_tooltip: निर्गम
sign_up_tooltip: संपादन के लिए खाता बनाएं
view_tooltip: नक्शा देखें
welcome_user_link_tooltip: आपका प्रयोक्ता पन्ना
message:
delete:
deleted: संदेश खात्मा
message_summary:
delete_button: खात्मा
no_such_user:
heading: इस तरह का कोई प्रयोक्ता या संदेश नहीं
sent_message_summary:
delete_button: खात्मा
notifier:
gpx_notification:
notifier:
gpx_notification:
greeting: नमस्कार,
oauth_clients:
edit:
submit: संपादन
form:
allow_write_api: नक्शा संपादित करें.
name: नाम
required: आवश्यकता
new:
submit: पंजीयन
show:
allow_write_api: नक्शे में तब्दीली
key: उपभोक्ता कुंजी
site:
edit:
potlatch_unsaved_changes: You have unsaved changes. (To save in Potlatch, you should deselect the current way or point, if editing in list mode, or click save if you have a save button.)
index:
license:
license_name: क्रिएटिव कामन्स एट्रीब्यूशन-शेयर एलाइक 2.0
project_name: ओपन स्ट्रीट मेप परियोजना
key:
table:
entry:
allotments: आवंटन
building: महत्वपूर्ण भवन
cable:
- केबल कार
cemetery: कब्रिस्तान
farm: खेत
footway: पगडंडी
forest: वन
golf: गोल्फ मैदान
industrial: औद्योगिक क्षेत्र
lake:
- झील
note_comment_notification:
greeting: नमस्कार,
message:
message_summary:
delete_button: खात्मा
sent_message_summary:
delete_button: खात्मा
delete:
deleted: संदेश खात्मा
site:
edit:
potlatch_unsaved_changes: You have unsaved changes. (To save in Potlatch, you
should deselect the current way or point, if editing in list mode, or click
save if you have a save button.)
key:
table:
entry:
motorway: मोटरवे
park: पार्क
primary: निजी सड़क
rail: रेलवे
resident: रिहायशी क्षेत्र
runway:
- एयरपोर्ट रनवे
school:
- पाठशाला
- विश्वविद्यालय
secondary: द्वितीय सड़क
station: रेलवे स्टेशन
subway: उपमार्ग
tourist: पर्यटन के आकर्षण
track: पट्टी
trunk: ट्रंक रोड
primary: निजी सड़क
secondary: द्वितीय सड़क
unclassified: अवर्गीकृत सड़क
track: पट्टी
footway: पगडंडी
rail: रेलवे
subway: उपमार्ग
cable:
- केबल कार
runway:
- एयरपोर्ट रनवे
forest: वन
wood: लकड़ी
search:
search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
trace:
edit:
golf: गोल्फ मैदान
park: पार्क
resident: रिहायशी क्षेत्र
tourist: पर्यटन के आकर्षण
industrial: औद्योगिक क्षेत्र
lake:
- झील
farm: खेत
cemetery: कब्रिस्तान
allotments: आवंटन
school:
- पाठशाला
- विश्वविद्यालय
building: महत्वपूर्ण भवन
station: रेलवे स्टेशन
trace:
edit:
map: नक्शा
visibility: दृष्टता
visibility_help: इसका क्या मतलब है?
no_such_user:
body: माफ करें, इस %{user} नाम का कोई प्रयोक्ता नहीं है. कृपया अक्षरों पर गौर करें, या आपने जिस लिंक पर क्लिक किया है, वह गलत हो सकता है.
title: इस तरह का कोई प्रयोक्ता नहीं
trace_form:
trace_form:
visibility: दृष्टता
visibility_help: इसका क्या मतलब है?
view:
view:
tags: Tags
visibility: दृष्टता
user:
account:
public editing:
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
lost_password:
new password button: Send me a new password
oauth_clients:
new:
submit: पंजीयन
edit:
submit: संपादन
show:
key: उपभोक्ता कुंजी
allow_write_api: नक्शे में तब्दीली
form:
name: नाम
required: आवश्यकता
allow_write_api: नक्शा संपादित करें.
allow_write_notes: नोट संशोधित करें।
user:
lost_password:
title: lost password
reset_password:
password: "पासवर्ड:"
new password button: Send me a new password
reset_password:
title: reset password
password: 'पासवर्ड:'
account:
public editing:
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
note:
mine:
created_at: 'निर्माण का समय:'
last_changed: अंतिम परिवर्तन
javascripts:
site:
createnote_disabled_tooltip: नोट जोड़ने के लिए जूम इन करें
notes:
new:
intro: अन्य नक्शाकर्ताओं की जानकारी के लिए नोट जोड़ते वक़्त मार्कर को सही
स्थान पर दर्शायें और अधिक से अधिक जानकारी दें
add: नोट जोड़ें
show:
hide: छुपाएँ
comment: टिप्पणी
...

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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