Merge branch 'master' into overpass
This commit is contained in:
commit
501d13e1c0
307 changed files with 127030 additions and 89142 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -8,3 +8,6 @@ tmp
|
||||||
*~
|
*~
|
||||||
doc
|
doc
|
||||||
.vagrant
|
.vagrant
|
||||||
|
.ruby-gemset
|
||||||
|
.ruby-version
|
||||||
|
.idea
|
14
CONFIGURE.md
14
CONFIGURE.md
|
@ -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.
|
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
|
## 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)
|
* 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 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/).
|
* 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
13
Gemfile
|
@ -1,7 +1,7 @@
|
||||||
source 'http://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
# Require rails
|
# Require rails
|
||||||
gem 'rails', '4.0.5'
|
gem 'rails', '4.1.6'
|
||||||
|
|
||||||
# Require things which have moved to gems in ruby 1.9
|
# Require things which have moved to gems in ruby 1.9
|
||||||
gem 'bigdecimal', "~> 1.1.0", :platforms => :ruby_19
|
gem 'bigdecimal', "~> 1.1.0", :platforms => :ruby_19
|
||||||
|
@ -16,7 +16,7 @@ gem 'json'
|
||||||
gem 'pg'
|
gem 'pg'
|
||||||
|
|
||||||
# Use SCSS for stylesheets
|
# Use SCSS for stylesheets
|
||||||
gem 'sass-rails', '~> 4.0.0'
|
gem 'sass-rails', '~> 4.0.3'
|
||||||
|
|
||||||
# Use Uglifier as compressor for JavaScript assets
|
# Use Uglifier as compressor for JavaScript assets
|
||||||
gem 'uglifier', '>= 1.3.0'
|
gem 'uglifier', '>= 1.3.0'
|
||||||
|
@ -34,6 +34,9 @@ gem 'jsonify-rails'
|
||||||
# Use R2 for RTL conversion
|
# Use R2 for RTL conversion
|
||||||
gem 'r2'
|
gem 'r2'
|
||||||
|
|
||||||
|
# Use autoprefixer to generate CSS prefixes
|
||||||
|
gem 'autoprefixer-rails'
|
||||||
|
|
||||||
# Load rails plugins
|
# Load rails plugins
|
||||||
gem 'rails-i18n', "~> 4.0.0"
|
gem 'rails-i18n', "~> 4.0.0"
|
||||||
gem 'dynamic_form'
|
gem 'dynamic_form'
|
||||||
|
@ -41,7 +44,7 @@ gem 'rinku', '>= 1.2.2', :require => 'rails_rinku'
|
||||||
gem 'oauth-plugin', '>= 0.5.1'
|
gem 'oauth-plugin', '>= 0.5.1'
|
||||||
gem 'open_id_authentication', '>= 1.1.0'
|
gem 'open_id_authentication', '>= 1.1.0'
|
||||||
gem 'validates_email_format_of', '>= 1.5.1'
|
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 'http_accept_language', '~> 2.0.0'
|
||||||
gem 'paperclip', '~> 4.0'
|
gem 'paperclip', '~> 4.0'
|
||||||
gem 'deadlock_retry', '>= 1.2.0'
|
gem 'deadlock_retry', '>= 1.2.0'
|
||||||
|
@ -84,7 +87,7 @@ end
|
||||||
# Gems needed for running tests
|
# Gems needed for running tests
|
||||||
group :test do
|
group :test do
|
||||||
gem 'timecop'
|
gem 'timecop'
|
||||||
gem 'minitest', '~> 4.7.0', :platforms => [:ruby_19, :ruby_20]
|
gem 'minitest', '~> 5.1', :platforms => [:ruby_19, :ruby_20]
|
||||||
end
|
end
|
||||||
|
|
||||||
# Needed in development as well so rake can see konacha tasks
|
# Needed in development as well so rake can see konacha tasks
|
||||||
|
|
176
Gemfile.lock
176
Gemfile.lock
|
@ -1,37 +1,41 @@
|
||||||
GEM
|
GEM
|
||||||
remote: http://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
SystemTimer (1.2.3)
|
SystemTimer (1.2.3)
|
||||||
actionmailer (4.0.5)
|
actionmailer (4.1.6)
|
||||||
actionpack (= 4.0.5)
|
actionpack (= 4.1.6)
|
||||||
mail (~> 2.5.4)
|
actionview (= 4.1.6)
|
||||||
actionpack (4.0.5)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
activesupport (= 4.0.5)
|
actionpack (4.1.6)
|
||||||
builder (~> 3.1.0)
|
actionview (= 4.1.6)
|
||||||
erubis (~> 2.7.0)
|
activesupport (= 4.1.6)
|
||||||
rack (~> 1.5.2)
|
rack (~> 1.5.2)
|
||||||
rack-test (~> 0.6.2)
|
rack-test (~> 0.6.2)
|
||||||
actionpack-page_caching (1.0.2)
|
actionpack-page_caching (1.0.2)
|
||||||
actionpack (>= 4.0.0, < 5)
|
actionpack (>= 4.0.0, < 5)
|
||||||
activemodel (4.0.5)
|
actionview (4.1.6)
|
||||||
activesupport (= 4.0.5)
|
activesupport (= 4.1.6)
|
||||||
builder (~> 3.1.0)
|
builder (~> 3.1)
|
||||||
activerecord (4.0.5)
|
erubis (~> 2.7.0)
|
||||||
activemodel (= 4.0.5)
|
activemodel (4.1.6)
|
||||||
activerecord-deprecated_finders (~> 1.0.2)
|
activesupport (= 4.1.6)
|
||||||
activesupport (= 4.0.5)
|
builder (~> 3.1)
|
||||||
arel (~> 4.0.0)
|
activerecord (4.1.6)
|
||||||
activerecord-deprecated_finders (1.0.3)
|
activemodel (= 4.1.6)
|
||||||
activesupport (4.0.5)
|
activesupport (= 4.1.6)
|
||||||
|
arel (~> 5.0.0)
|
||||||
|
activesupport (4.1.6)
|
||||||
i18n (~> 0.6, >= 0.6.9)
|
i18n (~> 0.6, >= 0.6.9)
|
||||||
minitest (~> 4.2)
|
json (~> 1.7, >= 1.7.7)
|
||||||
multi_json (~> 1.3)
|
minitest (~> 5.1)
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
tzinfo (~> 0.3.37)
|
tzinfo (~> 1.1)
|
||||||
arel (4.0.2)
|
arel (5.0.1.20140414130214)
|
||||||
|
autoprefixer-rails (3.1.1.20141001)
|
||||||
|
execjs
|
||||||
bigdecimal (1.1.0)
|
bigdecimal (1.1.0)
|
||||||
builder (3.1.4)
|
builder (3.2.2)
|
||||||
capybara (2.2.1)
|
capybara (2.4.3)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
nokogiri (>= 1.3.3)
|
nokogiri (>= 1.3.3)
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
|
@ -45,27 +49,28 @@ GEM
|
||||||
coffee-rails (4.0.1)
|
coffee-rails (4.0.1)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (>= 4.0.0, < 5.0)
|
railties (>= 4.0.0, < 5.0)
|
||||||
coffee-script (2.2.0)
|
coffee-script (2.3.0)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.7.0)
|
coffee-script-source (1.8.0)
|
||||||
colorize (0.7.2)
|
colorize (0.7.3)
|
||||||
composite_primary_keys (6.0.3)
|
composite_primary_keys (7.0.11)
|
||||||
activerecord (>= 4.0.0)
|
activerecord (= 4.1.6)
|
||||||
dalli (2.7.1)
|
crass (0.2.1)
|
||||||
|
dalli (2.7.2)
|
||||||
deadlock_retry (1.2.0)
|
deadlock_retry (1.2.0)
|
||||||
dynamic_form (1.1.4)
|
dynamic_form (1.1.4)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
execjs (2.0.2)
|
execjs (2.2.1)
|
||||||
faraday (0.9.0)
|
faraday (0.9.0)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
htmlentities (4.3.1)
|
htmlentities (4.3.2)
|
||||||
http_accept_language (2.0.1)
|
http_accept_language (2.0.2)
|
||||||
httpclient (2.3.4.1)
|
httpclient (2.4.0)
|
||||||
i18n (0.6.9)
|
i18n (0.6.11)
|
||||||
iconv (0.1)
|
iconv (0.1)
|
||||||
jquery-rails (3.1.0)
|
jquery-rails (3.1.2)
|
||||||
railties (>= 3.0, < 5.0)
|
railties (>= 3.0, < 5.0)
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
json (1.8.1)
|
json (1.8.1)
|
||||||
|
@ -74,36 +79,36 @@ GEM
|
||||||
jsonify-rails (0.3.2)
|
jsonify-rails (0.3.2)
|
||||||
actionpack
|
actionpack
|
||||||
jsonify (< 0.4.0)
|
jsonify (< 0.4.0)
|
||||||
jwt (0.1.13)
|
jwt (1.0.0)
|
||||||
multi_json (>= 1.5)
|
|
||||||
kgio (2.9.2)
|
kgio (2.9.2)
|
||||||
konacha (3.2.2)
|
konacha (3.2.4)
|
||||||
actionpack (>= 3.1, < 5)
|
actionpack (>= 3.1, < 5)
|
||||||
capybara
|
capybara
|
||||||
colorize
|
colorize
|
||||||
railties (>= 3.1, < 5)
|
railties (>= 3.1, < 5)
|
||||||
sprockets
|
sprockets
|
||||||
libxml-ruby (2.7.0)
|
libxml-ruby (2.7.0)
|
||||||
mail (2.5.4)
|
mail (2.6.1)
|
||||||
mime-types (~> 1.16)
|
mime-types (>= 1.16, < 3)
|
||||||
treetop (~> 1.4.8)
|
mime-types (2.4.1)
|
||||||
mime-types (1.25.1)
|
mini_portile (0.6.0)
|
||||||
mini_portile (0.5.3)
|
minitest (5.4.2)
|
||||||
minitest (4.7.5)
|
multi_json (1.10.1)
|
||||||
multi_json (1.10.0)
|
|
||||||
multi_xml (0.5.5)
|
multi_xml (0.5.5)
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
nokogiri (1.6.1)
|
nokogiri (1.6.3.1)
|
||||||
mini_portile (~> 0.5.0)
|
mini_portile (= 0.6.0)
|
||||||
|
nokogumbo (1.1.12)
|
||||||
|
nokogiri
|
||||||
oauth (0.4.7)
|
oauth (0.4.7)
|
||||||
oauth-plugin (0.5.1)
|
oauth-plugin (0.5.1)
|
||||||
multi_json
|
multi_json
|
||||||
oauth (~> 0.4.4)
|
oauth (~> 0.4.4)
|
||||||
oauth2 (>= 0.5.0)
|
oauth2 (>= 0.5.0)
|
||||||
rack
|
rack
|
||||||
oauth2 (0.9.3)
|
oauth2 (1.0.0)
|
||||||
faraday (>= 0.8, < 0.10)
|
faraday (>= 0.8, < 0.10)
|
||||||
jwt (~> 0.1.8)
|
jwt (~> 1.0)
|
||||||
multi_json (~> 1.3)
|
multi_json (~> 1.3)
|
||||||
multi_xml (~> 0.5)
|
multi_xml (~> 0.5)
|
||||||
rack (~> 1.2)
|
rack (~> 1.2)
|
||||||
|
@ -111,20 +116,19 @@ GEM
|
||||||
rack-openid (~> 1.3)
|
rack-openid (~> 1.3)
|
||||||
openstreetmap-i18n-js (3.0.0.rc5.3)
|
openstreetmap-i18n-js (3.0.0.rc5.3)
|
||||||
i18n
|
i18n
|
||||||
paperclip (4.1.1)
|
paperclip (4.2.0)
|
||||||
activemodel (>= 3.0.0)
|
activemodel (>= 3.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
cocaine (~> 0.5.3)
|
cocaine (~> 0.5.3)
|
||||||
mime-types
|
mime-types
|
||||||
pg (0.17.1)
|
pg (0.17.1)
|
||||||
poltergeist (1.5.0)
|
poltergeist (1.5.1)
|
||||||
capybara (~> 2.1)
|
capybara (~> 2.1)
|
||||||
cliver (~> 0.3.1)
|
cliver (~> 0.3.1)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
websocket-driver (>= 0.2.0)
|
websocket-driver (>= 0.2.0)
|
||||||
polyglot (0.3.4)
|
psych (2.0.6)
|
||||||
psych (2.0.5)
|
r2 (0.2.5)
|
||||||
r2 (0.2.3)
|
|
||||||
rack (1.5.2)
|
rack (1.5.2)
|
||||||
rack-cors (0.2.9)
|
rack-cors (0.2.9)
|
||||||
rack-openid (1.4.2)
|
rack-openid (1.4.2)
|
||||||
|
@ -132,28 +136,32 @@ GEM
|
||||||
ruby-openid (>= 2.1.8)
|
ruby-openid (>= 2.1.8)
|
||||||
rack-test (0.6.2)
|
rack-test (0.6.2)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (4.0.5)
|
rails (4.1.6)
|
||||||
actionmailer (= 4.0.5)
|
actionmailer (= 4.1.6)
|
||||||
actionpack (= 4.0.5)
|
actionpack (= 4.1.6)
|
||||||
activerecord (= 4.0.5)
|
actionview (= 4.1.6)
|
||||||
activesupport (= 4.0.5)
|
activemodel (= 4.1.6)
|
||||||
|
activerecord (= 4.1.6)
|
||||||
|
activesupport (= 4.1.6)
|
||||||
bundler (>= 1.3.0, < 2.0)
|
bundler (>= 1.3.0, < 2.0)
|
||||||
railties (= 4.0.5)
|
railties (= 4.1.6)
|
||||||
sprockets-rails (~> 2.0.0)
|
sprockets-rails (~> 2.0)
|
||||||
rails-i18n (4.0.2)
|
rails-i18n (4.0.3)
|
||||||
i18n (~> 0.6)
|
i18n (~> 0.6)
|
||||||
rails (>= 4.0)
|
railties (~> 4.0)
|
||||||
railties (4.0.5)
|
railties (4.1.6)
|
||||||
actionpack (= 4.0.5)
|
actionpack (= 4.1.6)
|
||||||
activesupport (= 4.0.5)
|
activesupport (= 4.1.6)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
thor (>= 0.18.1, < 2.0)
|
thor (>= 0.18.1, < 2.0)
|
||||||
rake (10.3.1)
|
rake (10.3.2)
|
||||||
redcarpet (3.1.1)
|
redcarpet (3.1.2)
|
||||||
rinku (1.7.3)
|
rinku (1.7.3)
|
||||||
ruby-openid (2.5.0)
|
ruby-openid (2.5.0)
|
||||||
sanitize (2.1.0)
|
sanitize (3.0.2)
|
||||||
|
crass (~> 0.2.0)
|
||||||
nokogiri (>= 1.4.4)
|
nokogiri (>= 1.4.4)
|
||||||
|
nokogumbo (= 1.1.12)
|
||||||
sass (3.2.19)
|
sass (3.2.19)
|
||||||
sass-rails (4.0.3)
|
sass-rails (4.0.3)
|
||||||
railties (>= 4.0.0, < 5.0)
|
railties (>= 4.0.0, < 5.0)
|
||||||
|
@ -166,24 +174,23 @@ GEM
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rack (~> 1.0)
|
rack (~> 1.0)
|
||||||
tilt (~> 1.1, != 1.3.0)
|
tilt (~> 1.1, != 1.3.0)
|
||||||
sprockets-rails (2.0.1)
|
sprockets-rails (2.1.4)
|
||||||
actionpack (>= 3.0)
|
actionpack (>= 3.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
sprockets (~> 2.8)
|
sprockets (~> 2.8)
|
||||||
thor (0.19.1)
|
thor (0.19.1)
|
||||||
thread_safe (0.3.3)
|
thread_safe (0.3.4)
|
||||||
tilt (1.4.1)
|
tilt (1.4.1)
|
||||||
timecop (0.7.1)
|
timecop (0.7.1)
|
||||||
treetop (1.4.15)
|
tzinfo (1.2.2)
|
||||||
polyglot
|
thread_safe (~> 0.1)
|
||||||
polyglot (>= 0.3.1)
|
uglifier (2.5.3)
|
||||||
tzinfo (0.3.39)
|
|
||||||
uglifier (2.5.0)
|
|
||||||
execjs (>= 0.3.0)
|
execjs (>= 0.3.0)
|
||||||
json (>= 1.8.0)
|
json (>= 1.8.0)
|
||||||
validates_email_format_of (1.5.3)
|
validates_email_format_of (1.6.1)
|
||||||
vendorer (0.1.15)
|
i18n
|
||||||
websocket-driver (0.3.3)
|
vendorer (0.1.16)
|
||||||
|
websocket-driver (0.3.5)
|
||||||
xpath (2.0.0)
|
xpath (2.0.0)
|
||||||
nokogiri (~> 1.3)
|
nokogiri (~> 1.3)
|
||||||
|
|
||||||
|
@ -193,9 +200,10 @@ PLATFORMS
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
SystemTimer (>= 1.1.3)
|
SystemTimer (>= 1.1.3)
|
||||||
actionpack-page_caching
|
actionpack-page_caching
|
||||||
|
autoprefixer-rails
|
||||||
bigdecimal (~> 1.1.0)
|
bigdecimal (~> 1.1.0)
|
||||||
coffee-rails (~> 4.0.0)
|
coffee-rails (~> 4.0.0)
|
||||||
composite_primary_keys (>= 6.0.1)
|
composite_primary_keys (~> 7.0.11)
|
||||||
dalli
|
dalli
|
||||||
deadlock_retry (>= 1.2.0)
|
deadlock_retry (>= 1.2.0)
|
||||||
dynamic_form
|
dynamic_form
|
||||||
|
@ -209,7 +217,7 @@ DEPENDENCIES
|
||||||
kgio
|
kgio
|
||||||
konacha
|
konacha
|
||||||
libxml-ruby (>= 2.0.5)
|
libxml-ruby (>= 2.0.5)
|
||||||
minitest (~> 4.7.0)
|
minitest (~> 5.1)
|
||||||
oauth-plugin (>= 0.5.1)
|
oauth-plugin (>= 0.5.1)
|
||||||
open_id_authentication (>= 1.1.0)
|
open_id_authentication (>= 1.1.0)
|
||||||
openstreetmap-i18n-js (>= 3.0.0.rc5.3)
|
openstreetmap-i18n-js (>= 3.0.0.rc5.3)
|
||||||
|
@ -219,13 +227,13 @@ DEPENDENCIES
|
||||||
psych
|
psych
|
||||||
r2
|
r2
|
||||||
rack-cors
|
rack-cors
|
||||||
rails (= 4.0.5)
|
rails (= 4.1.6)
|
||||||
rails-i18n (~> 4.0.0)
|
rails-i18n (~> 4.0.0)
|
||||||
redcarpet
|
redcarpet
|
||||||
rinku (>= 1.2.2)
|
rinku (>= 1.2.2)
|
||||||
ruby-openid (>= 2.2.0)
|
ruby-openid (>= 2.2.0)
|
||||||
sanitize
|
sanitize
|
||||||
sass-rails (~> 4.0.0)
|
sass-rails (~> 4.0.3)
|
||||||
soap4r-ruby1.9
|
soap4r-ruby1.9
|
||||||
timecop
|
timecop
|
||||||
uglifier (>= 1.3.0)
|
uglifier (>= 1.3.0)
|
||||||
|
|
|
@ -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 \
|
apache2 apache2-threaded-dev build-essential git-core \
|
||||||
postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
|
postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
|
||||||
libsasl2-dev
|
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.
|
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 |
BIN
app/assets/images/sotm.png
Normal file
BIN
app/assets/images/sotm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
|
@ -13,6 +13,7 @@
|
||||||
//= require index/history
|
//= require index/history
|
||||||
//= require index/note
|
//= require index/note
|
||||||
//= require index/new_note
|
//= require index/new_note
|
||||||
|
//= require index/changeset
|
||||||
//= require index/query
|
//= require index/query
|
||||||
//= require router
|
//= require router
|
||||||
|
|
||||||
|
@ -161,6 +162,15 @@ $(document).ready(function () {
|
||||||
$.cookie("_osm_location", OSM.locationCookie(map), { expires: expiry, path: "/" });
|
$.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') {
|
if ($.cookie('_osm_welcome') == 'hide') {
|
||||||
$('.welcome').hide();
|
$('.welcome').hide();
|
||||||
}
|
}
|
||||||
|
@ -302,7 +312,7 @@ $(document).ready(function () {
|
||||||
"/node/:id(/history)": OSM.Browse(map, 'node'),
|
"/node/:id(/history)": OSM.Browse(map, 'node'),
|
||||||
"/way/:id(/history)": OSM.Browse(map, 'way'),
|
"/way/:id(/history)": OSM.Browse(map, 'way'),
|
||||||
"/relation/:id(/history)": OSM.Browse(map, 'relation'),
|
"/relation/:id(/history)": OSM.Browse(map, 'relation'),
|
||||||
"/changeset/:id": OSM.Browse(map, 'changeset'),
|
"/changeset/:id": OSM.Changeset(map),
|
||||||
"/query": OSM.Query(map)
|
"/query": OSM.Query(map)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -336,7 +346,7 @@ $(document).ready(function () {
|
||||||
if (query) {
|
if (query) {
|
||||||
OSM.router.route("/search?query=" + encodeURIComponent(query) + OSM.formatHash(map));
|
OSM.router.route("/search?query=" + encodeURIComponent(query) + OSM.formatHash(map));
|
||||||
} else {
|
} else {
|
||||||
OSM.router.route("/" + OSM.formatHash(map));
|
OSM.router.route("/");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
80
app/assets/javascripts/index/changeset.js
Normal file
80
app/assets/javascripts/index/changeset.js
Normal 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;
|
||||||
|
};
|
|
@ -12,13 +12,14 @@ OSM.Search = function(map) {
|
||||||
|
|
||||||
$("#sidebar_content")
|
$("#sidebar_content")
|
||||||
.on("click", ".search_more a", clickSearchMore)
|
.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("mouseover", "p.search_results_entry:has(a.set_position)", showSearchResult)
|
||||||
.on("mouseout", "p.search_results_entry:has(a.set_position)", hideSearchResult)
|
.on("mouseout", "p.search_results_entry:has(a.set_position)", hideSearchResult)
|
||||||
.on("mousedown", "p.search_results_entry:has(a.set_position)", function () {
|
.on("mousedown", "p.search_results_entry:has(a.set_position)", function () {
|
||||||
var moved = false;
|
var moved = false;
|
||||||
$(this).one("click", function (e) {
|
$(this).one("click", function (e) {
|
||||||
if (!moved && !$(e.target).is('a')) {
|
if (!moved && !$(e.target).is('a')) {
|
||||||
clickSearchResult(this, e);
|
$(this).find("a.set_position").simulate("click", e);
|
||||||
}
|
}
|
||||||
}).one("mousemove", function () {
|
}).one("mousemove", function () {
|
||||||
moved = true;
|
moved = true;
|
||||||
|
@ -45,12 +46,12 @@ OSM.Search = function(map) {
|
||||||
if (!marker) {
|
if (!marker) {
|
||||||
var data = $(this).find("a.set_position").data();
|
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);
|
$(this).data("marker", marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
map.addLayer(marker);
|
markers.addLayer(marker);
|
||||||
|
|
||||||
$(this).closest("li").addClass("selected");
|
$(this).closest("li").addClass("selected");
|
||||||
}
|
}
|
||||||
|
@ -59,15 +60,14 @@ OSM.Search = function(map) {
|
||||||
var marker = $(this).data("marker");
|
var marker = $(this).data("marker");
|
||||||
|
|
||||||
if (marker) {
|
if (marker) {
|
||||||
map.removeLayer(marker);
|
markers.removeLayer(marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this).closest("li").removeClass("selected");
|
$(this).closest("li").removeClass("selected");
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickSearchResult(result, e) {
|
function clickSearchResult(e) {
|
||||||
var link = $(result).find("a.set_position"),
|
var data = $(this).data(),
|
||||||
data = link.data(),
|
|
||||||
center = L.latLng(data.lat, data.lon);
|
center = L.latLng(data.lat, data.lon);
|
||||||
|
|
||||||
if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
|
if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
|
||||||
|
@ -76,18 +76,14 @@ OSM.Search = function(map) {
|
||||||
map.setView(center, data.zoom);
|
map.setView(center, data.zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Let clicks to object browser links propagate.
|
||||||
|
if (data.type && data.id) return;
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
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 = {};
|
var page = {};
|
||||||
|
|
||||||
|
@ -120,8 +116,7 @@ OSM.Search = function(map) {
|
||||||
};
|
};
|
||||||
|
|
||||||
page.unload = function() {
|
page.unload = function() {
|
||||||
map.removeLayer(marker);
|
markers.clearLayers();
|
||||||
map.removeObject();
|
|
||||||
$(".search_form input[name=query]").val("");
|
$(".search_form input[name=query]").val("");
|
||||||
$(".describe_location").fadeIn(100);
|
$(".describe_location").fadeIn(100);
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,13 +24,13 @@ L.OSM.Map = L.Map.extend({
|
||||||
name: I18n.t("javascripts.map.base.standard")
|
name: I18n.t("javascripts.map.base.standard")
|
||||||
}),
|
}),
|
||||||
new L.OSM.CycleMap({
|
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",
|
code: "C",
|
||||||
keyid: "cyclemap",
|
keyid: "cyclemap",
|
||||||
name: I18n.t("javascripts.map.base.cycle_map")
|
name: I18n.t("javascripts.map.base.cycle_map")
|
||||||
}),
|
}),
|
||||||
new L.OSM.TransportMap({
|
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",
|
code: "T",
|
||||||
keyid: "transportmap",
|
keyid: "transportmap",
|
||||||
name: I18n.t("javascripts.map.base.transport_map")
|
name: I18n.t("javascripts.map.base.transport_map")
|
||||||
|
|
|
@ -87,9 +87,7 @@ strong {
|
||||||
/* Default rules for the body of every page */
|
/* Default rules for the body of every page */
|
||||||
|
|
||||||
* {
|
* {
|
||||||
-webkit-box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -464,9 +462,8 @@ nav.secondary {
|
||||||
|
|
||||||
#noscript {
|
#noscript {
|
||||||
z-index: 20000000;
|
z-index: 20000000;
|
||||||
position: absolute;
|
margin-left: 400px;
|
||||||
top: 15px;
|
margin-top: 50px;
|
||||||
left: 15px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rules for bootstrap tooltips */
|
/* Rules for bootstrap tooltips */
|
||||||
|
@ -854,7 +851,6 @@ nav.secondary {
|
||||||
|
|
||||||
.leaflet-popup-content-wrapper {
|
.leaflet-popup-content-wrapper {
|
||||||
border-radius: 4px !important;
|
border-radius: 4px !important;
|
||||||
-webkit-border-radius: 4px !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rules for attribution text under the main map shown on printouts */
|
/* Rules for attribution text under the main map shown on printouts */
|
||||||
|
@ -934,8 +930,6 @@ header .search_form {
|
||||||
border-right: none;
|
border-right: none;
|
||||||
|
|
||||||
transition: 300ms linear;
|
transition: 300ms linear;
|
||||||
-webkit-transition: 300ms linear;
|
|
||||||
-moz-transition: 300ms linear;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input:focus {
|
input:focus {
|
||||||
|
@ -1117,7 +1111,7 @@ header .search_form {
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note-comments li {
|
.note-comments li, .changeset-comments li {
|
||||||
margin: $lineheight/2 0;
|
margin: $lineheight/2 0;
|
||||||
|
|
||||||
p {
|
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 {
|
.note-description {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: 0 0 10px 10px;
|
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 */
|
/* Rules for the user profile page */
|
||||||
|
|
||||||
#userinformation {
|
#userinformation {
|
||||||
|
@ -1943,7 +1982,6 @@ a.button {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: 0;
|
border: 0;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
line-height: 20px;
|
|
||||||
padding: $lineheight/4 $lineheight/2;
|
padding: $lineheight/4 $lineheight/2;
|
||||||
min-height: 20px + $lineheight/2;
|
min-height: 20px + $lineheight/2;
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
|
@ -1952,7 +1990,6 @@ a.button {
|
||||||
background: $blue;
|
background: $blue;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
-moz-border-radius: 2px;
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: darken($blue, $hovercolor);
|
background: darken($blue, $hovercolor);
|
||||||
text-decoration: none;
|
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 {
|
.buttons {
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
input[type="submit"],
|
input[type="submit"],
|
||||||
|
@ -2121,8 +2168,6 @@ a.button {
|
||||||
|
|
||||||
input.richtext_title[type="text"] {
|
input.richtext_title[type="text"] {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
width: -moz-calc(100% - 235px);
|
|
||||||
width: -webkit-calc(100% - 235px);
|
|
||||||
width: calc(100% - 235px);
|
width: calc(100% - 235px);
|
||||||
|
|
||||||
@media only screen and (max-width:768px) {
|
@media only screen and (max-width:768px) {
|
||||||
|
@ -2135,8 +2180,6 @@ input.richtext_title[type="text"] {
|
||||||
|
|
||||||
.richtext_content {
|
.richtext_content {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
width: -moz-calc(100% - 235px);
|
|
||||||
width: -webkit-calc(100% - 235px);
|
|
||||||
width: calc(100% - 235px);
|
width: calc(100% - 235px);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
|
@ -2271,12 +2314,8 @@ input.richtext_title[type="text"] {
|
||||||
border-radius: 0 3px 3px;
|
border-radius: 0 3px 3px;
|
||||||
*border-right-width: 2px;
|
*border-right-width: 2px;
|
||||||
*border-bottom-width: 2px;
|
*border-bottom-width: 2px;
|
||||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
background-clip: padding-box;
|
||||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
|
||||||
-webkit-background-clip: padding-box;
|
|
||||||
-moz-background-clip: padding;
|
|
||||||
background-clip: padding-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-menu.pull-right {
|
.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';
|
@import 'browse';
|
||||||
|
|
||||||
@media only screen and (max-width:960px) {
|
@media only screen and (max-width:960px) {
|
||||||
|
|
|
@ -321,12 +321,12 @@ class AmfController < ApplicationController
|
||||||
# Ideally we would do ":include => :nodes" here but if we do that
|
# 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
|
# then rails only seems to return the first copy of a node when a
|
||||||
# way includes a node more than once
|
# 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
|
# check case where way has been deleted or doesn't exist
|
||||||
return [-4, 'way', wayid] if way.nil? or !way.visible
|
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=node.tags
|
||||||
nodetags.delete('created_by')
|
nodetags.delete('created_by')
|
||||||
[node.lon, node.lat, node.id, nodetags, node.version]
|
[node.lon, node.lat, node.id, nodetags, node.version]
|
||||||
|
@ -551,7 +551,7 @@ class AmfController < ApplicationController
|
||||||
mid = renumberedways[mid] if m[0] == 'Way'
|
mid = renumberedways[mid] if m[0] == 'Way'
|
||||||
end
|
end
|
||||||
if mid
|
if mid
|
||||||
typedmembers << [m[0], mid, m[2]]
|
typedmembers << [m[0], mid, m[2].delete("\000-\037\ufffe\uffff", "^\011\012\015")]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -886,8 +886,8 @@ class AmfController < ApplicationController
|
||||||
new_tags = Hash.new
|
new_tags = Hash.new
|
||||||
unless tags.nil?
|
unless tags.nil?
|
||||||
tags.each do |k, v|
|
tags.each do |k, v|
|
||||||
new_k = k.delete "\000-\037", "^\011\012\015"
|
new_k = k.delete "\000-\037\ufffe\uffff", "^\011\012\015"
|
||||||
new_v = v.delete "\000-\037", "^\011\012\015"
|
new_v = v.delete "\000-\037\ufffe\uffff", "^\011\012\015"
|
||||||
new_tags[new_k] = new_v
|
new_tags[new_k] = new_v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -287,8 +287,16 @@ class ApiController < ApplicationController
|
||||||
status['api'] = api_status.to_s
|
status['api'] = api_status.to_s
|
||||||
status['gpx'] = gpx_status.to_s
|
status['gpx'] = gpx_status.to_s
|
||||||
api << status
|
api << status
|
||||||
|
|
||||||
doc.root << api
|
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"
|
render :text => doc.to_s, :content_type => "text/xml"
|
||||||
end
|
end
|
||||||
|
|
|
@ -73,7 +73,7 @@ class ApplicationController < ActionController::Base
|
||||||
if request.cookies["_osm_session"].to_s == ""
|
if request.cookies["_osm_session"].to_s == ""
|
||||||
if params[:cookie_test].nil?
|
if params[:cookie_test].nil?
|
||||||
session[:cookie_test] = true
|
session[:cookie_test] = true
|
||||||
redirect_to params.merge(:cookie_test => "true")
|
redirect_to Hash[params].merge(:cookie_test => "true")
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
flash.now[:warning] = t 'application.require_cookies.cookies_needed'
|
flash.now[:warning] = t 'application.require_cookies.cookies_needed'
|
||||||
|
|
|
@ -58,6 +58,11 @@ class BrowseController < ApplicationController
|
||||||
def changeset
|
def changeset
|
||||||
@type = "changeset"
|
@type = "changeset"
|
||||||
@changeset = Changeset.find(params[:id])
|
@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')
|
@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')
|
@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')
|
@relation_pages, @relations = paginate(:old_relations, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'relation_page')
|
||||||
|
|
|
@ -7,11 +7,12 @@ class ChangesetController < ApplicationController
|
||||||
skip_before_filter :verify_authenticity_token, :except => [:list]
|
skip_before_filter :verify_authenticity_token, :except => [:list]
|
||||||
before_filter :authorize_web, :only => [:list, :feed]
|
before_filter :authorize_web, :only => [:list, :feed]
|
||||||
before_filter :set_locale, :only => [:list, :feed]
|
before_filter :set_locale, :only => [:list, :feed]
|
||||||
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
|
before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
|
||||||
before_filter :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close]
|
before_filter :require_moderator, :only => [:hide_comment, :unhide_comment]
|
||||||
before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close]
|
before_filter :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
|
||||||
before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include]
|
before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe]
|
||||||
before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed]
|
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) }
|
before_filter(:only => [:list, :feed]) { |c| c.check_database_readable(true) }
|
||||||
after_filter :compress_output
|
after_filter :compress_output
|
||||||
around_filter :api_call_handle_error, :except => [:list, :feed]
|
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
|
# Assume that Changeset.from_xml has thrown an exception if there is an error parsing the xml
|
||||||
cs.user_id = @user.id
|
cs.user_id = @user.id
|
||||||
cs.save_with_tags!
|
cs.save_with_tags!
|
||||||
|
|
||||||
|
# Subscribe user to changeset comments
|
||||||
|
cs.subscribers << @user
|
||||||
|
|
||||||
render :text => cs.id.to_s, :content_type => "text/plain"
|
render :text => cs.id.to_s, :content_type => "text/plain"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -37,7 +42,8 @@ class ChangesetController < ApplicationController
|
||||||
# return anything about the nodes, ways and relations in the changeset.
|
# return anything about the nodes, ways and relations in the changeset.
|
||||||
def read
|
def read
|
||||||
changeset = Changeset.find(params[:id])
|
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
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -284,7 +290,7 @@ class ChangesetController < ApplicationController
|
||||||
elsif params[:bbox]
|
elsif params[:bbox]
|
||||||
changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params))
|
changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params))
|
||||||
elsif params[:friends] && @user
|
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
|
elsif params[:nearby] && @user
|
||||||
changesets = changesets.where(:user_id => @user.nearby)
|
changesets = changesets.where(:user_id => @user.nearby)
|
||||||
end
|
end
|
||||||
|
@ -305,6 +311,145 @@ class ChangesetController < ApplicationController
|
||||||
list
|
list
|
||||||
end
|
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
|
private
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
# utility functions below.
|
# utility functions below.
|
||||||
|
@ -435,4 +580,17 @@ private
|
||||||
return changesets.where("num_changes > 0")
|
return changesets.where("num_changes > 0")
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
class GeocoderController < ApplicationController
|
class GeocoderController < ApplicationController
|
||||||
|
require 'cgi'
|
||||||
require 'uri'
|
require 'uri'
|
||||||
require 'net/http'
|
require 'net/http'
|
||||||
require 'rexml/document'
|
require 'rexml/document'
|
||||||
|
@ -140,20 +141,25 @@ class GeocoderController < ApplicationController
|
||||||
|
|
||||||
# get objects to excude
|
# get objects to excude
|
||||||
if params[:exclude]
|
if params[:exclude]
|
||||||
exclude = "&exclude_place_ids=#{params[:exclude].join(',')}"
|
exclude = "&exclude_place_ids=#{params[:exclude]}"
|
||||||
end
|
end
|
||||||
|
|
||||||
# ask nominatim
|
# 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(',')}")
|
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
|
# create result array
|
||||||
@results = Array.new
|
@results = Array.new
|
||||||
|
|
||||||
# create parameter hash for "more results" link
|
# create parameter hash for "more results" link
|
||||||
@more_params = params.reverse_merge({ :exclude => [] })
|
@more_params = params.merge({
|
||||||
|
:exclude => more_url_params["exclude_place_ids"].first
|
||||||
# extract the results from the response
|
})
|
||||||
results = response.elements["searchresults"]
|
|
||||||
|
|
||||||
# parse the response
|
# parse the response
|
||||||
results.elements.each("place") do |place|
|
results.elements.each("place") do |place|
|
||||||
|
@ -181,7 +187,6 @@ class GeocoderController < ApplicationController
|
||||||
:min_lon => min_lon, :max_lon => max_lon,
|
:min_lon => min_lon, :max_lon => max_lon,
|
||||||
:prefix => prefix, :name => name,
|
:prefix => prefix, :name => name,
|
||||||
:type => object_type, :id => object_id})
|
:type => object_type, :id => object_id})
|
||||||
@more_params[:exclude].push(place.attributes["place_id"].to_s)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
render :action => "results"
|
render :action => "results"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class SiteController < ApplicationController
|
||||||
|
|
||||||
def permalink
|
def permalink
|
||||||
lon, lat, zoom = ShortLink::decode(params[:code])
|
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
|
if new_params.has_key? :m
|
||||||
new_params.delete :m
|
new_params.delete :m
|
||||||
|
@ -48,7 +48,11 @@ class SiteController < ApplicationController
|
||||||
|
|
||||||
new_params[:anchor] = "map=#{zoom}/#{lat}/#{lon}"
|
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
|
end
|
||||||
|
|
||||||
def key
|
def key
|
||||||
|
@ -147,7 +151,7 @@ class SiteController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
if anchor.present?
|
if anchor.present?
|
||||||
redirect_to params.merge(:anchor => anchor.join('&'))
|
redirect_to Hash[params].merge(:anchor => anchor.join('&'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -49,13 +49,13 @@ class TraceController < ApplicationController
|
||||||
if @user
|
if @user
|
||||||
@traces = Trace.visible_to(@user) #1
|
@traces = Trace.visible_to(@user) #1
|
||||||
else
|
else
|
||||||
@traces = Trace.public #2
|
@traces = Trace.visible_to_all #2
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if @user and @user == target_user
|
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)
|
@traces = @user.traces #3 (check vs user id, so no join + can't pick up non-public traces by changing name)
|
||||||
else
|
else
|
||||||
@traces = target_user.traces.public #4
|
@traces = target_user.traces.visible_to_all #4
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ class TraceController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def georss
|
def georss
|
||||||
@traces = Trace.public.visible
|
@traces = Trace.visible_to_all.visible
|
||||||
|
|
||||||
if params[:display_name]
|
if params[:display_name]
|
||||||
@traces = @traces.joins(:user).where(:users => {:display_name => params[:display_name]})
|
@traces = @traces.joins(:user).where(:users => {:display_name => params[:display_name]})
|
||||||
|
|
|
@ -26,7 +26,7 @@ class UserPreferenceController < ApplicationController
|
||||||
##
|
##
|
||||||
# return the value for a single preference
|
# return the value for a single preference
|
||||||
def read_one
|
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"
|
render :text => pref.v.to_s, :content_type => "text/plain"
|
||||||
end
|
end
|
||||||
|
@ -69,7 +69,7 @@ class UserPreferenceController < ApplicationController
|
||||||
# update the value of a single preference
|
# update the value of a single preference
|
||||||
def update_one
|
def update_one
|
||||||
begin
|
begin
|
||||||
pref = UserPreference.find(@user.id, params[:preference_key])
|
pref = UserPreference.find([@user.id, params[:preference_key]])
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
pref = UserPreference.new
|
pref = UserPreference.new
|
||||||
pref.user = @user
|
pref.user = @user
|
||||||
|
@ -85,7 +85,7 @@ class UserPreferenceController < ApplicationController
|
||||||
##
|
##
|
||||||
# delete a single preference
|
# delete a single preference
|
||||||
def delete_one
|
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"
|
render :text => "", :content_type => "text/plain"
|
||||||
end
|
end
|
||||||
|
|
|
@ -61,6 +61,8 @@ module BrowseHelper
|
||||||
def format_value(key, value)
|
def format_value(key, value)
|
||||||
if wp = wikipedia_link(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])
|
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}")
|
elsif url = wiki_link("tag", "#{key}=#{value}")
|
||||||
link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value)
|
link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value)
|
||||||
elsif url = telephone_link(key, value)
|
elsif url = telephone_link(key, value)
|
||||||
|
@ -90,7 +92,7 @@ private
|
||||||
]
|
]
|
||||||
|
|
||||||
def icon_tags(object)
|
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
|
end
|
||||||
|
|
||||||
def wiki_link(type, lookup)
|
def wiki_link(type, lookup)
|
||||||
|
@ -149,6 +151,16 @@ private
|
||||||
}
|
}
|
||||||
end
|
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)
|
def telephone_link(key, value)
|
||||||
# does it look like a phone number? eg "+1 (234) 567-8901 " ?
|
# does it look like a phone number? eg "+1 (234) 567-8901 " ?
|
||||||
return nil unless value =~ /^\s*\+[\d\s\(\)\/\.-]{6,25}\s*$/
|
return nil unless value =~ /^\s*\+[\d\s\(\)\/\.-]{6,25}\s*$/
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
|
require 'htmlentities'
|
||||||
|
|
||||||
module TitleHelper
|
module TitleHelper
|
||||||
|
@@coder = HTMLEntities.new
|
||||||
|
|
||||||
def set_title(title = false)
|
def set_title(title = false)
|
||||||
if title
|
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
|
response.headers["X-Page-Title"] = t('layouts.project_name.title') + ' | ' + @title
|
||||||
else
|
else
|
||||||
@title = title
|
@title = title
|
||||||
|
|
|
@ -11,6 +11,9 @@ class Changeset < ActiveRecord::Base
|
||||||
has_many :old_nodes
|
has_many :old_nodes
|
||||||
has_many :old_ways
|
has_many :old_ways
|
||||||
has_many :old_relations
|
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 :id, :on => :update
|
||||||
validates_presence_of :user_id, :created_at, :closed_at, :num_changes
|
validates_presence_of :user_id, :created_at, :closed_at, :num_changes
|
||||||
|
@ -179,13 +182,13 @@ class Changeset < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_xml
|
def to_xml(include_discussion = false)
|
||||||
doc = OSM::API.new.get_xml_doc
|
doc = OSM::API.new.get_xml_doc
|
||||||
doc.root << to_xml_node()
|
doc.root << to_xml_node(nil, include_discussion)
|
||||||
return doc
|
return doc
|
||||||
end
|
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 = XML::Node.new 'changeset'
|
||||||
el1['id'] = self.id.to_s
|
el1['id'] = self.id.to_s
|
||||||
|
|
||||||
|
@ -217,6 +220,23 @@ class Changeset < ActiveRecord::Base
|
||||||
bbox.to_unscaled.add_bounds_to(el1, '_')
|
bbox.to_unscaled.add_bounds_to(el1, '_')
|
||||||
end
|
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,
|
# NOTE: changesets don't include the XML of the changes within them,
|
||||||
# they are just structures for tagging. to get the osmChange of a
|
# they are just structures for tagging. to get the osmChange of a
|
||||||
# changeset, see the download method of the controller.
|
# changeset, see the download method of the controller.
|
||||||
|
|
17
app/models/changeset_comment.rb
Normal file
17
app/models/changeset_comment.rb
Normal 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
|
|
@ -9,6 +9,7 @@ class NoteComment < ActiveRecord::Base
|
||||||
validates_presence_of :visible
|
validates_presence_of :visible
|
||||||
validates_associated :author
|
validates_associated :author
|
||||||
validates_inclusion_of :event, :in => [ "opened", "closed", "reopened", "commented", "hidden" ]
|
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
|
# Return the comment text
|
||||||
def body
|
def body
|
||||||
|
|
|
@ -146,6 +146,26 @@ class Notifier < ActionMailer::Base
|
||||||
end
|
end
|
||||||
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
|
private
|
||||||
|
|
||||||
def with_recipient_locale(recipient)
|
def with_recipient_locale(recipient)
|
||||||
|
|
|
@ -2,6 +2,6 @@ class RelationMember < ActiveRecord::Base
|
||||||
self.table_name = "current_relation_members"
|
self.table_name = "current_relation_members"
|
||||||
self.primary_keys = "relation_id", "sequence_id"
|
self.primary_keys = "relation_id", "sequence_id"
|
||||||
|
|
||||||
belongs_to :relation
|
belongs_to :relation, :foreign_key => :relation_id
|
||||||
belongs_to :member, :polymorphic => true
|
belongs_to :member, :polymorphic => true
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,7 +7,7 @@ class Trace < ActiveRecord::Base
|
||||||
|
|
||||||
scope :visible, -> { where(:visible => true) }
|
scope :visible, -> { where(:visible => true) }
|
||||||
scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
|
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 }) }
|
scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
|
||||||
|
|
||||||
validates_presence_of :user_id, :name, :timestamp
|
validates_presence_of :user_id, :name, :timestamp
|
||||||
|
|
|
@ -12,6 +12,8 @@ class User < ActiveRecord::Base
|
||||||
has_many :tokens, :class_name => "UserToken"
|
has_many :tokens, :class_name => "UserToken"
|
||||||
has_many :preferences, :class_name => "UserPreference"
|
has_many :preferences, :class_name => "UserPreference"
|
||||||
has_many :changesets, -> { order(:created_at => :desc) }
|
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 :note_comments, :foreign_key => :author_id
|
||||||
has_many :notes, :through => :note_comments
|
has_many :notes, :through => :note_comments
|
||||||
|
|
||||||
|
@ -26,7 +28,7 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
scope :visible, -> { where(:status => ["pending", "active", "confirmed"]) }
|
scope :visible, -> { where(:status => ["pending", "active", "confirmed"]) }
|
||||||
scope :active, -> { where(:status => ["active", "confirmed"]) }
|
scope :active, -> { where(:status => ["active", "confirmed"]) }
|
||||||
scope :public, -> { where(:data_public => true) }
|
scope :identifiable, -> { where(:data_public => true) }
|
||||||
|
|
||||||
has_attached_file :image,
|
has_attached_file :image,
|
||||||
:default_url => "/assets/:class/:attachment/:style.png",
|
: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_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 :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_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 => /\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_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_lat, :allow_nil => true
|
||||||
validates_numericality_of :home_lon, :allow_nil => true
|
validates_numericality_of :home_lon, :allow_nil => true
|
||||||
validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true
|
validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true
|
||||||
|
|
|
@ -11,6 +11,69 @@
|
||||||
|
|
||||||
<%= render :partial => "tag_details", :object => @changeset.tags.except('comment') %>
|
<%= 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? %>
|
<% unless @ways.empty? %>
|
||||||
<h4>
|
<h4>
|
||||||
<%= type_and_paginated_count('way', @way_pages) %>
|
<%= type_and_paginated_count('way', @way_pages) %>
|
||||||
|
|
6
app/views/changeset/_comment.html.erb
Normal file
6
app/views/changeset/_comment.html.erb
Normal 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>
|
18
app/views/changeset/_comments.rss.builder
Normal file
18
app/views/changeset/_comments.rss.builder
Normal 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
|
14
app/views/changeset/comments_feed.rss.builder
Normal file
14
app/views/changeset/comments_feed.rss.builder
Normal 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
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
<%= stylesheet_link_tag "leaflet-all", :media => "screen, print" %>
|
<%= stylesheet_link_tag "leaflet-all", :media => "screen, print" %>
|
||||||
<!--[if IE]>
|
<!--[if IE]>
|
||||||
<%= stylesheet_link_tag "large-#{dir}", :media => "screen" %>
|
<%= stylesheet_link_tag "large-#{dir}", :media => "screen" %>
|
||||||
|
<%= favicon_link_tag "favicon.ico" %>
|
||||||
<![endif]-->
|
<![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_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_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" %>
|
<%= favicon_link_tag "osm_logo_114.png", :rel => "apple-touch-icon", :sizes => "114x114", :type => "image/png" %>
|
||||||
|
|
|
@ -30,6 +30,21 @@
|
||||||
<p class="error"><%= t 'layouts.osm_read_only' %></p>
|
<p class="error"><%= t 'layouts.osm_read_only' %></p>
|
||||||
<% end %>
|
<% 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">
|
<div id="flash">
|
||||||
<%= render :partial => "layouts/flash" %>
|
<%= render :partial => "layouts/flash" %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class='buttons'>
|
<div class='buttons'>
|
||||||
<%= submit_tag t('message.new.send_button') %>
|
<%= 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>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
20
app/views/notifier/changeset_comment_notification.html.erb
Normal file
20
app/views/notifier/changeset_comment_notification.html.erb
Normal 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>
|
18
app/views/notifier/changeset_comment_notification.text.erb
Normal file
18
app/views/notifier/changeset_comment_notification.text.erb
Normal 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 %>
|
|
@ -26,6 +26,10 @@
|
||||||
params.background = hashParams.background;
|
params.background = hashParams.background;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hashParams.comment) {
|
||||||
|
params.comment = hashParams.comment;
|
||||||
|
}
|
||||||
|
|
||||||
<% if params[:gpx] -%>
|
<% if params[:gpx] -%>
|
||||||
params.gpx = '<%= trace_data_url(params[:gpx]) %>';
|
params.gpx = '<%= trace_data_url(params[:gpx]) %>';
|
||||||
<% else -%>
|
<% else -%>
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
<dt><a href="http://download.geofabrik.de/"><%= t'export.start.too_large.geofabrik.title' %></a></dt>
|
<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>
|
<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>
|
<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>
|
<dt><a href="http://wiki.openstreetmap.org/wiki/Download"><%= t'export.start.too_large.other.title' %></a></dt>
|
||||||
|
|
|
@ -9,49 +9,41 @@
|
||||||
<div id='edit-trace-form' class='standard-form'>
|
<div id='edit-trace-form' class='standard-form'>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class='form-row'>
|
<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>
|
<p class='deemphasize'><%= @trace.name %> (<%= link_to t('trace.edit.download'), :controller => 'trace', :action => 'data', :id => @trace.id %>)</p>
|
||||||
</div>
|
</div>
|
||||||
<div class='form-row'>
|
<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>
|
<p class='deemphasize'><%= l @trace.timestamp, :format => :friendly %></p>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<% if @trace.inserted? %>
|
<% if @trace.inserted? %>
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<div class='form-row'>
|
<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>
|
<p class='deemphasize'><%= @trace.size.to_s.gsub(/(\d)(?=(\d{3})+$)/,'\1,') %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class='form-row'>
|
<div class='form-row'>
|
||||||
<label><%= t'trace.edit.start_coord' %></label>
|
<label class='standard-label'><%= t'trace.edit.start_coord' %></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="geo">
|
<div class="geo">
|
||||||
<span class="latitude"><%= @trace.latitude %></span>;
|
<span class="latitude"><%= @trace.latitude %></span>;
|
||||||
<span class="longitude"><%= @trace.longitude %></span>
|
<span class="longitude"><%= @trace.longitude %></span>
|
||||||
</div>
|
</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}" %>)
|
(<%=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 %>
|
<% end %>
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<div class='form-row'>
|
<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>
|
<p class='deemphasize'><%= link_to h(@trace.user.display_name), {:controller => 'user', :action => 'view', :display_name => @trace.user.display_name} %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class='form-row'>
|
<div class='form-row'>
|
||||||
<label><%= t'trace.edit.description' %></label>
|
<label class='standard-label'><%= t'trace.edit.description' %></label>
|
||||||
<%= f.text_field :description %>
|
<%= f.text_field :description %>
|
||||||
</div>
|
</div>
|
||||||
<div class='form-row'>
|
<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' %>)
|
<%= f.text_field :tagstring %> (<%= t'trace.edit.tags_help' %>)
|
||||||
</div>
|
</div>
|
||||||
<div class='form-row'>
|
<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>)
|
<%= 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>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -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><%= 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 "google", "gmail.com" %></li>
|
||||||
<li><%= openid_button "yahoo", "me.yahoo.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 "wordpress", "wordpress.com" %></li>
|
||||||
<li><%= openid_button "aol", "aol.com" %></li>
|
<li><%= openid_button "aol", "aol.com" %></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# This file is used by Rack-based servers to start the application.
|
# This file is used by Rack-based servers to start the application.
|
||||||
|
|
||||||
require ::File.expand_path('../config/environment', __FILE__)
|
require ::File.expand_path('../config/environment', __FILE__)
|
||||||
run OpenStreetMap::Application
|
run Rails.application
|
||||||
|
|
|
@ -5,7 +5,7 @@ require File.expand_path('../preinitializer', __FILE__)
|
||||||
if STATUS == :database_offline
|
if STATUS == :database_offline
|
||||||
require "action_controller/railtie"
|
require "action_controller/railtie"
|
||||||
require "action_mailer/railtie"
|
require "action_mailer/railtie"
|
||||||
require "active_resource/railtie"
|
require "active_model/railtie"
|
||||||
require "sprockets/railtie"
|
require "sprockets/railtie"
|
||||||
require "rails/test_unit/railtie"
|
require "rails/test_unit/railtie"
|
||||||
else
|
else
|
||||||
|
@ -14,7 +14,7 @@ end
|
||||||
|
|
||||||
# Require the gems listed in Gemfile, including any gems
|
# Require the gems listed in Gemfile, including any gems
|
||||||
# you've limited to :test, :development, or :production.
|
# you've limited to :test, :development, or :production.
|
||||||
Bundler.require(:default, Rails.env)
|
Bundler.require(*Rails.groups)
|
||||||
|
|
||||||
module OpenStreetMap
|
module OpenStreetMap
|
||||||
class Application < Rails::Application
|
class Application < Rails::Application
|
||||||
|
@ -33,9 +33,6 @@ module OpenStreetMap
|
||||||
# Custom directories with classes and modules you want to be autoloadable.
|
# Custom directories with classes and modules you want to be autoloadable.
|
||||||
config.autoload_paths += %W(#{config.root}/lib)
|
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.
|
# 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,
|
# 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
|
# like if you have constraints or database-specific column types
|
||||||
|
@ -43,12 +40,6 @@ module OpenStreetMap
|
||||||
config.active_record.schema_format = :sql
|
config.active_record.schema_format = :sql
|
||||||
end
|
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
|
# Don't eager load models when the database is offline
|
||||||
if STATUS == :database_offline
|
if STATUS == :database_offline
|
||||||
config.paths["app/models"].skip_eager_load!
|
config.paths["app/models"].skip_eager_load!
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
require 'rubygems'
|
|
||||||
|
|
||||||
# Set up gems listed in the Gemfile.
|
# Set up gems listed in the Gemfile.
|
||||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
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'])
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Load the rails application
|
# Load the Rails application.
|
||||||
require File.expand_path('../application', __FILE__)
|
require File.expand_path('../application', __FILE__)
|
||||||
|
|
||||||
# Initialize the rails application
|
# Initialize the Rails application.
|
||||||
OpenStreetMap::Application.initialize!
|
Rails.application.initialize!
|
||||||
|
|
|
@ -19,11 +19,19 @@ OpenStreetMap::Application.configure do
|
||||||
# Print deprecation notices to the Rails logger.
|
# Print deprecation notices to the Rails logger.
|
||||||
config.active_support.deprecation = :log
|
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
|
config.active_record.migration_error = :page_load
|
||||||
|
|
||||||
# Debug mode disables concatenation and preprocessing of assets.
|
# Debug mode disables concatenation and preprocessing of assets.
|
||||||
# This option may cause significant delays in view rendering with a large
|
# This option may cause significant delays in view rendering with a large
|
||||||
# number of complex assets.
|
# number of complex assets.
|
||||||
config.assets.debug = true
|
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
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ OpenStreetMap::Application.configure do
|
||||||
config.cache_classes = true
|
config.cache_classes = true
|
||||||
|
|
||||||
# Eager load code on boot. This eager loads most of Rails and
|
# 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.
|
# and those relying on copy on write to perform better.
|
||||||
# Rake tasks automatically ignore this option for performance.
|
# Rake tasks automatically ignore this option for performance.
|
||||||
config.eager_load = true
|
config.eager_load = true
|
||||||
|
@ -32,9 +32,6 @@ OpenStreetMap::Application.configure do
|
||||||
# Generate digests for assets URLs.
|
# Generate digests for assets URLs.
|
||||||
config.assets.digest = true
|
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.
|
# 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-Sendfile" # for apache
|
||||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
# 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.
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||||
# config.action_controller.asset_host = "http://assets.example.com"
|
# config.action_controller.asset_host = "http://assets.example.com"
|
||||||
|
|
||||||
# Precompile additional assets.
|
# `config.assets.precompile` has moved to config/initializers/assets.rb
|
||||||
# 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 )
|
|
||||||
|
|
||||||
# Ignore bad email addresses and do not raise email delivery errors.
|
# 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.
|
# 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.
|
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||||
config.log_formatter = ::Logger::Formatter.new
|
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
|
end
|
||||||
|
|
|
@ -14,7 +14,7 @@ OpenStreetMap::Application.configure do
|
||||||
|
|
||||||
# Configure static asset server for tests with Cache-Control for performance.
|
# Configure static asset server for tests with Cache-Control for performance.
|
||||||
config.serve_static_assets = true
|
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.
|
# Show full error reports and disable caching.
|
||||||
config.consider_all_requests_local = true
|
config.consider_all_requests_local = true
|
||||||
|
@ -33,4 +33,7 @@ OpenStreetMap::Application.configure do
|
||||||
|
|
||||||
# Print deprecation notices to the stderr.
|
# Print deprecation notices to the stderr.
|
||||||
config.active_support.deprecation = :stderr
|
config.active_support.deprecation = :stderr
|
||||||
|
|
||||||
|
# Raises error for missing translations
|
||||||
|
# config.action_view.raise_on_missing_translations = true
|
||||||
end
|
end
|
||||||
|
|
|
@ -84,6 +84,11 @@ defaults: &defaults
|
||||||
require_terms_seen: false
|
require_terms_seen: false
|
||||||
# Whether to require users to agree to the CTs before editing
|
# Whether to require users to agree to the CTs before editing
|
||||||
require_terms_agreed: false
|
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
|
# URL of Overpass instance to use for feature queries
|
||||||
overpass_url: "//overpass-api.de/api/interpreter"
|
overpass_url: "//overpass-api.de/api/interpreter"
|
||||||
|
|
||||||
|
|
25
config/initializers/assets.rb
Normal file
25
config/initializers/assets.rb
Normal 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 )
|
3
config/initializers/cookies_serializer.rb
Normal file
3
config/initializers/cookies_serializer.rb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
Rails.application.config.action_dispatch.cookies_serializer = :json
|
|
@ -2,7 +2,7 @@ if defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
|
||||||
module ActiveRecord
|
module ActiveRecord
|
||||||
module ConnectionAdapters
|
module ConnectionAdapters
|
||||||
class PostgreSQLAdapter
|
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 "format_enum", "text"
|
||||||
OID.alias_type "gpx_visibility_enum", "text"
|
OID.alias_type "gpx_visibility_enum", "text"
|
||||||
OID.alias_type "note_status_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_role_enum", "text"
|
||||||
OID.alias_type "user_status_enum", "text"
|
OID.alias_type "user_status_enum", "text"
|
||||||
|
|
||||||
initialize_type_map_without_enums
|
initialize_type_map_without_enums(type_map)
|
||||||
end
|
end
|
||||||
|
|
||||||
alias_method_chain :initialize_type_map, :enums
|
alias_method_chain :initialize_type_map, :enums
|
||||||
|
|
18
config/initializers/router.rb
Normal file
18
config/initializers/router.rb
Normal 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
|
|
@ -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'
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Be sure to restart your server when you modify this file.
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
if defined?(MEMCACHE_SERVERS)
|
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
|
else
|
||||||
OpenStreetMap::Application.config.session_store :cache_store, :key => '_osm_session'
|
Rails.application.config.session_store :cache_store, :key => '_osm_session'
|
||||||
end
|
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
|
@ -1,155 +1,485 @@
|
||||||
# Messages for Bulgarian (Български)
|
# Messages for Bulgarian (български)
|
||||||
# Exported from translatewiki.net
|
# Exported from translatewiki.net
|
||||||
# Export driver: syck-pecl
|
# Export driver: spyc
|
||||||
# Author: DCLXVI
|
# Author: DCLXVI
|
||||||
bg:
|
# Author: MrPanyGoff
|
||||||
activerecord:
|
---
|
||||||
attributes:
|
bg:
|
||||||
diary_entry:
|
activerecord:
|
||||||
language: Език
|
models:
|
||||||
user: Потребител
|
|
||||||
friend:
|
|
||||||
user: Потребител
|
|
||||||
trace:
|
|
||||||
name: Име
|
|
||||||
size: Размер
|
|
||||||
user: Потребител
|
|
||||||
user:
|
|
||||||
languages: Езици
|
|
||||||
pass_crypt: Парола
|
|
||||||
models:
|
|
||||||
language: Език
|
language: Език
|
||||||
message: Съобщение
|
message: Съобщение
|
||||||
session: Сесия
|
session: Сесия
|
||||||
user: Потребител
|
user: Потребител
|
||||||
browse:
|
attributes:
|
||||||
changeset_details:
|
diary_entry:
|
||||||
belongs_to: "Принадлежи към:"
|
user: Потребител
|
||||||
common_details:
|
language: Език
|
||||||
changeset_comment: "Коментар:"
|
friend:
|
||||||
version: "Версия:"
|
user: Потребител
|
||||||
containing_relation:
|
friend: Приятел
|
||||||
entry: Релация %{relation_name}
|
trace:
|
||||||
entry_role: Релация %{relation_name} (като %{relation_role})
|
user: Потребител
|
||||||
map:
|
name: Име
|
||||||
loading: Зареждане...
|
size: Размер
|
||||||
node:
|
user:
|
||||||
download: "%{download_xml_link}, %{view_history_link} или %{edit_link}"
|
description: Описание
|
||||||
download_xml: Изтегляне на XML
|
languages: Езици
|
||||||
edit: редактиране
|
pass_crypt: Парола
|
||||||
node: Възел
|
browse:
|
||||||
node_title: "Възел: %{node_name}"
|
relation_member:
|
||||||
view_history: преглед на историята
|
type:
|
||||||
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:
|
|
||||||
node: Възел
|
node: Възел
|
||||||
relation: Релация
|
relation: Релация
|
||||||
start_rjs:
|
containing_relation:
|
||||||
details: Подробности
|
entry: 'Релация %{relation_name}'
|
||||||
|
entry_role: 'Релация %{relation_name} (като %{relation_role})'
|
||||||
|
not_found:
|
||||||
|
type:
|
||||||
|
node: възел
|
||||||
|
way: път
|
||||||
|
relation: релация
|
||||||
|
redacted:
|
||||||
|
type:
|
||||||
|
node: възел
|
||||||
|
start_rjs:
|
||||||
loading: Зареждане...
|
loading: Зареждане...
|
||||||
object_list:
|
note:
|
||||||
details: Подробности
|
description: 'Описание:'
|
||||||
way:
|
changeset:
|
||||||
download: "%{download_xml_link}, %{view_history_link} или %{edit_link}"
|
changeset:
|
||||||
download_xml: Изтегляне на XML
|
anonymous: Анонимен
|
||||||
edit: редактиране
|
changesets:
|
||||||
view_history: преглед на историята
|
|
||||||
way: Път
|
|
||||||
way_details:
|
|
||||||
part_of: "Част от:"
|
|
||||||
way_history:
|
|
||||||
download: "%{download_xml_link} или %{view_details_link}"
|
|
||||||
download_xml: Изтегляне на XML
|
|
||||||
view_details: преглед на детайлите
|
|
||||||
changeset:
|
|
||||||
changesets:
|
|
||||||
comment: Коментар
|
|
||||||
id: Номер
|
id: Номер
|
||||||
user: Потребител
|
user: Потребител
|
||||||
diary_entry:
|
comment: Коментар
|
||||||
diary_entry:
|
diary_entry:
|
||||||
comment_count:
|
edit:
|
||||||
one: 1 коментар
|
language: 'Език:'
|
||||||
other: "%{count} коментара"
|
location: 'Местоположение:'
|
||||||
view:
|
latitude: 'Географска ширина:'
|
||||||
|
longitude: 'Географска дължина:'
|
||||||
|
save_button: Запази
|
||||||
|
view:
|
||||||
|
leave_a_comment: Оставете коментар
|
||||||
login: Влизане
|
login: Влизане
|
||||||
save_button: Съхраняване
|
save_button: Съхраняване
|
||||||
export:
|
diary_entry:
|
||||||
start:
|
comment_count:
|
||||||
|
one: 1 коментар
|
||||||
|
other: '%{count} коментара'
|
||||||
|
confirm: Потвърди
|
||||||
|
comments:
|
||||||
|
newer_comments: По-нови коментари
|
||||||
|
older_comments: По-стари коментари
|
||||||
|
export:
|
||||||
|
start:
|
||||||
licence: Лиценз
|
licence: Лиценз
|
||||||
|
too_large:
|
||||||
|
other:
|
||||||
|
title: Други източници
|
||||||
options: Настройки
|
options: Настройки
|
||||||
message:
|
geocoder:
|
||||||
new:
|
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: Изпращане
|
send_button: Изпращане
|
||||||
read:
|
read:
|
||||||
date: Дата
|
|
||||||
from: От
|
from: От
|
||||||
subject: Тема
|
subject: Тема
|
||||||
|
date: Дата
|
||||||
|
unread_button: >
|
||||||
|
Отбелязване като
|
||||||
|
непрочетено
|
||||||
to: До
|
to: До
|
||||||
unread_button: Отбелязване като непрочетено
|
trace:
|
||||||
notifier:
|
edit:
|
||||||
diary_comment_notification:
|
filename: 'Име на файл:'
|
||||||
hi: Здравейте ((to_user)),
|
|
||||||
email_confirm:
|
|
||||||
subject: "[OpenStreetMap] Потвърждаване на вашия адрес за е-поща"
|
|
||||||
oauth_clients:
|
|
||||||
edit:
|
|
||||||
submit: Редактиране
|
|
||||||
form:
|
|
||||||
name: Име
|
|
||||||
new:
|
|
||||||
submit: Регистриране
|
|
||||||
trace:
|
|
||||||
edit:
|
|
||||||
description: "Описание:"
|
|
||||||
edit: редактиране
|
edit: редактиране
|
||||||
filename: "Име на файл:"
|
description: 'Описание:'
|
||||||
save_button: Съхраняване на промените
|
save_button: >
|
||||||
no_such_user:
|
Съхраняване на
|
||||||
title: Няма такъв потребител
|
промените
|
||||||
trace:
|
trace_form:
|
||||||
|
help: Помощ
|
||||||
|
view:
|
||||||
|
filename: 'Име на файл:'
|
||||||
|
edit: редактиране
|
||||||
|
trace:
|
||||||
edit: редактиране
|
edit: редактиране
|
||||||
in: в
|
in: в
|
||||||
trace_form:
|
oauth_clients:
|
||||||
help: Помощ
|
new:
|
||||||
view:
|
submit: Регистриране
|
||||||
edit: редактиране
|
edit:
|
||||||
filename: "Име на файл:"
|
submit: Редактиране
|
||||||
user:
|
form:
|
||||||
reset_password:
|
name: Име
|
||||||
password: "Парола:"
|
user:
|
||||||
user_block:
|
reset_password:
|
||||||
partial:
|
password: 'Парола:'
|
||||||
creator_name: Създател
|
user_role:
|
||||||
display_name: Блокиран потребител
|
grant:
|
||||||
|
confirm: Потвърждаване
|
||||||
|
revoke:
|
||||||
|
confirm: Потвърждаване
|
||||||
|
user_block:
|
||||||
|
partial:
|
||||||
edit: Редактиране
|
edit: Редактиране
|
||||||
|
display_name: Блокиран потребител
|
||||||
|
creator_name: Създател
|
||||||
reason: Причина за блокиране
|
reason: Причина за блокиране
|
||||||
status: Статут
|
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
|
@ -121,11 +121,16 @@ en:
|
||||||
way_paginated: "Ways (%{x}-%{y} of %{count})"
|
way_paginated: "Ways (%{x}-%{y} of %{count})"
|
||||||
relation: "Relations (%{count})"
|
relation: "Relations (%{count})"
|
||||||
relation_paginated: "Relations (%{x}-%{y} of %{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"
|
changesetxml: "Changeset XML"
|
||||||
osmchangexml: "osmChange XML"
|
osmchangexml: "osmChange XML"
|
||||||
feed:
|
feed:
|
||||||
title: "Changeset %{id}"
|
title: "Changeset %{id}"
|
||||||
title_comment: "Changeset %{id} - %{comment}"
|
title_comment: "Changeset %{id} - %{comment}"
|
||||||
|
join_discussion: "Log in to join the discussion"
|
||||||
|
discussion: Discussion
|
||||||
node:
|
node:
|
||||||
title: "Node: %{name}"
|
title: "Node: %{name}"
|
||||||
history_title: "Node History: %{name}"
|
history_title: "Node History: %{name}"
|
||||||
|
@ -180,6 +185,7 @@ en:
|
||||||
wiki_link:
|
wiki_link:
|
||||||
key: "The wiki description page for the %{key} tag"
|
key: "The wiki description page for the %{key} tag"
|
||||||
tag: "The wiki description page for the %{key}=%{value} 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"
|
wikipedia_link: "The %{page} article on Wikipedia"
|
||||||
telephone_link: "Call %{phone_number}"
|
telephone_link: "Call %{phone_number}"
|
||||||
note:
|
note:
|
||||||
|
@ -232,6 +238,13 @@ en:
|
||||||
load_more: "Load more"
|
load_more: "Load more"
|
||||||
timeout:
|
timeout:
|
||||||
sorry: "Sorry, the list of changesets you requested took too long to retrieve."
|
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:
|
diary_entry:
|
||||||
new:
|
new:
|
||||||
title: New Diary Entry
|
title: New Diary Entry
|
||||||
|
@ -931,6 +944,10 @@ en:
|
||||||
text: Make a Donation
|
text: Make a Donation
|
||||||
learn_more: "Learn More"
|
learn_more: "Learn More"
|
||||||
more: 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:
|
license_page:
|
||||||
foreign:
|
foreign:
|
||||||
title: About this translation
|
title: About this translation
|
||||||
|
@ -1236,6 +1253,16 @@ en:
|
||||||
your_note: "%{commenter} has reactivated one of your map notes near %{place}."
|
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}."
|
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}."
|
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:
|
message:
|
||||||
inbox:
|
inbox:
|
||||||
title: "Inbox"
|
title: "Inbox"
|
||||||
|
@ -1651,9 +1678,6 @@ en:
|
||||||
yahoo:
|
yahoo:
|
||||||
title: Login with Yahoo
|
title: Login with Yahoo
|
||||||
alt: Login with a Yahoo OpenID
|
alt: Login with a Yahoo OpenID
|
||||||
myopenid:
|
|
||||||
title: Login with myOpenID
|
|
||||||
alt: Login with a myOpenID OpenID
|
|
||||||
wordpress:
|
wordpress:
|
||||||
title: Login with Wordpress
|
title: Login with Wordpress
|
||||||
alt: Login with a Wordpress OpenID
|
alt: Login with a Wordpress OpenID
|
||||||
|
@ -2111,6 +2135,13 @@ en:
|
||||||
map_data_zoom_in_tooltip: Zoom in to see map data
|
map_data_zoom_in_tooltip: Zoom in to see map data
|
||||||
queryfeature_tooltip: Query features
|
queryfeature_tooltip: Query features
|
||||||
queryfeature_disabled_tooltip: Zoom in to 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:
|
notes:
|
||||||
new:
|
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.)"
|
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
|
@ -1,242 +1,204 @@
|
||||||
# Messages for Guadeloupean Creole French (Guadeloupean Creole French)
|
# Messages for Guadeloupean Creole French (Guadeloupean Creole French)
|
||||||
# Exported from translatewiki.net
|
# Exported from translatewiki.net
|
||||||
# Export driver: syck-pecl
|
# Export driver: spyc
|
||||||
gcf:
|
---
|
||||||
browse:
|
gcf:
|
||||||
changeset:
|
browse:
|
||||||
changeset: "Niméwo chanjeman : %{id}"
|
changeset:
|
||||||
changesetxml: Niméwo Chanjeman XML
|
changesetxml: Niméwo Chanjeman XML
|
||||||
download: Téléchajé %{changeset_xml_link} ouben %{osmchange_xml_link}
|
|
||||||
osmchangexml: osmChanjeman XML
|
osmchangexml: osmChanjeman XML
|
||||||
changeset_details:
|
containing_relation:
|
||||||
belongs_to: "Sé ta :"
|
entry: 'Rèlasion %{relation_name}'
|
||||||
bounding_box: "karé limit :"
|
entry_role: 'Rèlasion %{relation_name} (adan wol %{relation_role})'
|
||||||
box: bwet
|
not_found:
|
||||||
closed_at: "Fini lè :"
|
sorry: 'Woy, pa ti ni %{type} èvè niméwo %{id}.'
|
||||||
created_at: "Kréyé lè :"
|
start_rjs:
|
||||||
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}
|
|
||||||
load_data: Chajé sé doné la
|
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é...
|
loading: Y ka chajé...
|
||||||
manually_select: Chwazi manielman on dot zonn
|
diary_entry:
|
||||||
private_user: Itilizatè privé
|
new:
|
||||||
show_history: Vwè listwa la
|
title: Nouvel nèf an jounal 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})"
|
list:
|
||||||
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:
|
|
||||||
new: Nouvel nèf an jounal la
|
new: Nouvel nèf an jounal la
|
||||||
new_title: Mèt on nouvel nèf an jounal aw
|
new_title: Mèt on nouvel nèf an jounal aw
|
||||||
newer_entries: Nouvel pi fré
|
|
||||||
no_entries: Pa ni nouvel an jounal aw
|
no_entries: Pa ni nouvel an jounal aw
|
||||||
|
recent_entries: 'Nouvel fré:'
|
||||||
older_entries: Nouvel rasi
|
older_entries: Nouvel rasi
|
||||||
recent_entries: "Nouvel fré:"
|
newer_entries: Nouvel pi fré
|
||||||
new:
|
edit:
|
||||||
title: Nouvel nèf an jounal la
|
subject: 'Sijè:'
|
||||||
no_such_entry:
|
body: 'Mésaj:'
|
||||||
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.
|
language: 'Lang:'
|
||||||
heading: "Pa ti ni nouvel èvè niméwo la sa : %{id}"
|
location: 'Ki koté:'
|
||||||
no_such_user:
|
latitude: 'Latitid:'
|
||||||
body: Woy, Pa ti ni pon itilizatè non ay sé %{user}. Kontrolé lòtograf la ouben lien la ou kliké asiy la pa bon.
|
longitude: 'Longitid:'
|
||||||
layouts:
|
use_map_link: Sèvi èvè kat la
|
||||||
donate: Ba OpenStreetMap on Fòs, %{link} Pou fè matériel la vansé.
|
save_button: Enrèjistré
|
||||||
donate_link_text: Bay Chabon
|
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é
|
edit: Modifié
|
||||||
|
history: Istwa sa ou fè
|
||||||
export: Voyé déwò
|
export: Voyé déwò
|
||||||
gps_traces: Chimen GPS
|
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
|
user_diaries: Jounal
|
||||||
view: Vwè
|
tag_line: Lyannaj pou kat lib
|
||||||
welcome_user: Bienvini, %{user_link}
|
osm_offline: >
|
||||||
site:
|
Base a doné a OpenStreetMap dékonekté
|
||||||
edit:
|
atchelman ; Yo ka fè on gwo travay
|
||||||
anon_edits_link_text: Ka y ni la.
|
enpòtan asi-y pou-y maché bien.
|
||||||
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.
|
osm_read_only: >
|
||||||
not_public: Ou pé pa réglé édision aw pou yo piblik.
|
Atchelman ou pé li selamn base a doné
|
||||||
not_public_description: Pou modifié kat la fok édision aw piblik. Ou pé rann édision aw piblik asi %{user_page}.
|
a OpenStreetMap ; Yo ka fè on gwo
|
||||||
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.)
|
travay enpòtan asi-y pou-y maché bien.
|
||||||
user_page_link: paj_itilizatè
|
donate: 'Ba OpenStreetMap on Fòs, %{link} Pou fè matériel la vansé.'
|
||||||
index:
|
make_a_donation:
|
||||||
js_1: Ou ka sèvi èvè on navigatè ki pa ka sipòté Javascript ouben Javascript éten.
|
text: Ba OpenStreetMap On Fòs
|
||||||
js_2: OpenStreetMap ka sèvi èvè Javascript pou kat glisad.
|
site:
|
||||||
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>.
|
index:
|
||||||
license:
|
js_1: >
|
||||||
license_name: Creative Commons Attribution-Share Alike 2.0
|
Ou ka sèvi èvè on navigatè ki pa ka
|
||||||
notice: Asi lisans %{license_name} pou %{project_name} èvè moun ay.
|
sipòté Javascript ouben Javascript
|
||||||
project_name: projè OpenStreetMap
|
éten.
|
||||||
|
js_2: >
|
||||||
|
OpenStreetMap ka sèvi èvè Javascript
|
||||||
|
pou kat glisad.
|
||||||
permalink: Permalink
|
permalink: Permalink
|
||||||
key:
|
edit:
|
||||||
map_key: Léjann a kat la
|
not_public: >
|
||||||
search:
|
Ou pé pa réglé édision aw pou yo
|
||||||
search: Chèché
|
piblik.
|
||||||
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>"
|
not_public_description: 'Pou modifié kat la fok édision aw piblik. Ou pé rann édision aw piblik asi %{user_page}.'
|
||||||
submit_text: Voyé
|
user_page_link: paj_itilizatè
|
||||||
where_am_i: Ki moun an yé?
|
anon_edits_link_text: Ka y ni la.
|
||||||
sidebar:
|
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."
|
||||||
close: Fèmé
|
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
|
search_results: Rézilta a chèché aw
|
||||||
user:
|
close: Fèmé
|
||||||
account:
|
search:
|
||||||
email never displayed publicly: (Pa janmen maké piblikman)
|
search: Chèché
|
||||||
flash update success: Efowmasion asi itilisatè la bien anrejistré.
|
where_am_i: Ki moun an yé?
|
||||||
flash update success confirm needed: Enfowmasion asi itilisatè la bien anrèjistré. Gadé bwet imél aw pou konfirmé adres nouvo imél aw
|
submit_text: Voyé
|
||||||
home location: "La ou ka rété :"
|
user:
|
||||||
latitude: "Latitid:"
|
login:
|
||||||
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 :"
|
|
||||||
heading: Konekté
|
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?
|
lost password link: Ou pèd kòd aw?
|
||||||
password: "Kòd aw:"
|
login_button: Konektéw
|
||||||
lost_password:
|
lost_password:
|
||||||
email address: "Adres imél aw :"
|
|
||||||
heading: Ou pèd kòd aw?
|
heading: Ou pèd kòd aw?
|
||||||
|
email address: 'Adres imél aw :'
|
||||||
new password button: Voyé on nouvo kòd
|
new password button: Voyé on nouvo kòd
|
||||||
new:
|
new:
|
||||||
confirm email address: "konfimé adres imél :"
|
no_auto_account_create: >
|
||||||
confirm password: "Konfirmé kòd aw:"
|
Malérezman, alè kilé, nou pé pa
|
||||||
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.
|
ouvè kont automatikman.
|
||||||
display name: "Non aw afiché :"
|
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."
|
||||||
email address: "Adres imél :"
|
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>."
|
||||||
fill_form: Ranpli fòmilè la aprè sa nou ké voyé an imél pou activé kont aw.
|
email address: 'Adres imél :'
|
||||||
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."
|
confirm email address: 'konfimé adres imél :'
|
||||||
heading: Ouvè on kont itilizatè
|
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>)'
|
||||||
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>.
|
display name: 'Non aw afiché :'
|
||||||
no_auto_account_create: Malérezman, alè kilé, nou pé pa ouvè kont automatikman.
|
password: 'Kòd :'
|
||||||
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>)
|
confirm password: 'Konfirmé kòd aw:'
|
||||||
password: "Kòd :"
|
no_such_user:
|
||||||
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.'
|
||||||
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:
|
||||||
popup:
|
my diary: Jounal an mwen
|
||||||
nearby mapper: Arpantè owa aw
|
new diary entry: On dot nouvel an jounal la
|
||||||
your location: Koté ou yé
|
my edits: Édision an mwen
|
||||||
set_home:
|
my traces: Chimen an mwen
|
||||||
flash success: La ou ka rété la bien anrèjistré
|
my settings: Opsion an mwen
|
||||||
view:
|
send message: Voyé on mésaj
|
||||||
add as friend: Ajouté on zanmi
|
|
||||||
description: Deskription
|
|
||||||
diary: Jounal
|
diary: Jounal
|
||||||
edits: Édision
|
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
|
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é
|
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
|
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
|
@ -1,290 +1,194 @@
|
||||||
# Messages for Swiss German (Alemannisch)
|
# Messages for Swiss German (Alemannisch)
|
||||||
# Exported from translatewiki.net
|
# Exported from translatewiki.net
|
||||||
# Export driver: syck-pecl
|
# Export driver: spyc
|
||||||
|
# Author: Als-Chlämens
|
||||||
# Author: Als-Holder
|
# Author: Als-Holder
|
||||||
gsw:
|
---
|
||||||
browse:
|
gsw:
|
||||||
changeset:
|
browse:
|
||||||
changeset: "Changeset: %{id}"
|
changeset:
|
||||||
changesetxml: Changeset-XML
|
|
||||||
download: "%{changeset_xml_link} oder %{osmchange_xml_link} abelade"
|
|
||||||
feed:
|
|
||||||
title: Changeset %{id}
|
|
||||||
title_comment: Changeset %{id} - %{comment}
|
|
||||||
osmchangexml: osmChange XML
|
|
||||||
title: Changeset
|
title: Changeset
|
||||||
changeset_details:
|
changesetxml: Changeset-XML
|
||||||
belongs_to: "Aagleit vu:"
|
osmchangexml: osmChange XML
|
||||||
bounding_box: "Beryych:"
|
feed:
|
||||||
box: Chaschte
|
title: 'Changeset %{id}'
|
||||||
closed_at: "Zuegmacht am:"
|
title_comment: 'Changeset %{id} - %{comment}'
|
||||||
created_at: "Aagleit am:"
|
relation_member:
|
||||||
has_nodes:
|
entry_role: '%{type} %{name} as %{role}'
|
||||||
one: "Do het s die %{count} Chnote din:"
|
type:
|
||||||
other: "Do het s die %{count} Chnote din:"
|
node: Chnote
|
||||||
has_relations:
|
way: Wäg
|
||||||
one: "Het die %{count} Relation:"
|
relation: Relation
|
||||||
other: "Het die %{count} Relatione:"
|
containing_relation:
|
||||||
has_ways:
|
entry: 'Relation %{relation_name}'
|
||||||
one: "Het dää %{count} Wäg:"
|
entry_role: 'Relation %{relation_name} (as %{relation_role})'
|
||||||
other: "Het die %{count} Wäg:"
|
not_found:
|
||||||
no_bounding_box: Fir des Changeset isch kei Beryych gspycheret.
|
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.'
|
||||||
show_area_box: Beryychsgränzen aazeige
|
type:
|
||||||
common_details:
|
node: Chnote
|
||||||
changeset_comment: "Kommentar:"
|
way: Wäg
|
||||||
edited_at: "Bearbeitet am:"
|
relation: Relation
|
||||||
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:
|
|
||||||
changeset: Mängi vu Änderige
|
changeset: Mängi vu Änderige
|
||||||
node: Chnote
|
start_rjs:
|
||||||
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}
|
|
||||||
load_data: Date lade
|
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 ...
|
loading: Am Lade ...
|
||||||
manually_select: En andere Chartenuusschnitt manuäll uuswehle
|
tag_details:
|
||||||
object_list:
|
tags: 'Tags:'
|
||||||
api: Dää Beryych vu dr API abfroge
|
trace:
|
||||||
back: Objäktlischt aazeige
|
visibility:
|
||||||
details: Einzelheite
|
private: >
|
||||||
heading: Objäktlischt
|
Privat (nume as anonymi, nit sortierti
|
||||||
history:
|
Pinkt ohni Zytstämpfel aazeigt)
|
||||||
type:
|
public: >
|
||||||
node: Chnote %{id}
|
Effentlig (wird in dr Tracklischt
|
||||||
way: Wäg %{id}
|
aazeigt, aber numen as anonymi, nit
|
||||||
selected:
|
sortierti Punktfolg ohni Zytstämpfel)
|
||||||
type:
|
trackable: >
|
||||||
node: Chnote %{id}
|
Track (wird in dr Tracklischt as
|
||||||
way: Wäg %{id}
|
anonymi, sortierti Punktfolg mit
|
||||||
type:
|
Zytstämpfel aazeigt)
|
||||||
node: Chnote
|
identifiable: >
|
||||||
way: Wäg
|
Identifizierbar (wird in dr Tracklischt
|
||||||
private_user: Anonyme Benutzer
|
as anonymi, sortierti Punktfolg mit
|
||||||
show_history: Chronik
|
Zytstämpfel aazeigt)
|
||||||
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})"
|
create:
|
||||||
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.
|
|
||||||
upload_trace: E GPS-Track uffelade
|
upload_trace: E GPS-Track uffelade
|
||||||
delete:
|
trace_uploaded: >
|
||||||
scheduled_for_deletion: Track, wu zum Lesche vorgsäh isch
|
Dyy GPX-Datei isch uffeglade wore un
|
||||||
edit:
|
wartet uf d Ufnahm in d Datebank. Des
|
||||||
description: "Bschryybig:"
|
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
|
download: abelade
|
||||||
edit: bearbeite
|
uploaded_at: 'Uffegladen am:'
|
||||||
filename: "Dateiname:"
|
points: 'Pinkt:'
|
||||||
heading: Track %{name} bearbeite
|
start_coord: 'Aafangskoordinate:'
|
||||||
map: Charte
|
map: Charte
|
||||||
owner: "Bsitzer:"
|
edit: bearbeite
|
||||||
points: "Pinkt:"
|
owner: 'Bsitzer:'
|
||||||
save_button: Änderige spychere
|
description: 'Bschryybig:'
|
||||||
start_coord: "Aafangskoordinate:"
|
tags: 'Tags:'
|
||||||
tags: "Tags:"
|
|
||||||
tags_help: Trännig dur Komma
|
tags_help: Trännig dur Komma
|
||||||
title: Am Bearbeite vum Track %{name}
|
save_button: Änderige spychere
|
||||||
uploaded_at: "Uffegladen am:"
|
visibility: 'Sichtbarkeit:'
|
||||||
visibility: "Sichtbarkeit:"
|
|
||||||
visibility_help: Was heißt des?
|
visibility_help: Was heißt des?
|
||||||
list:
|
trace_form:
|
||||||
public_traces: Effetligi GPS-Track
|
upload_gpx: GPX-Datei uffelade
|
||||||
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:
|
|
||||||
description: Bschryybig
|
description: Bschryybig
|
||||||
help: Hilf
|
|
||||||
tags: Markierige
|
tags: Markierige
|
||||||
tags_help: Trännig dur Komma
|
tags_help: Trännig dur Komma
|
||||||
upload_button: Uffelade
|
|
||||||
upload_gpx: GPX-Datei uffelade
|
|
||||||
visibility: Sichtbarkeit
|
visibility: Sichtbarkeit
|
||||||
visibility_help: Was heißt des?
|
visibility_help: Was heißt des?
|
||||||
trace_header:
|
upload_button: Uffelade
|
||||||
|
help: Hilf
|
||||||
|
trace_header:
|
||||||
see_all_traces: Alli Tracks aaluege
|
see_all_traces: Alli Tracks aaluege
|
||||||
see_your_traces: Eigeni GPS-Tracks aazeige
|
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."
|
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:
|
trace_optionals:
|
||||||
tags: Markierige
|
tags: Markierige
|
||||||
view:
|
view:
|
||||||
delete_track: Dää Track lesche
|
title: 'Am Aaluege vum Track %{name}'
|
||||||
description: "Bschryybig:"
|
heading: 'Am Bschaue vum Track %{name}'
|
||||||
download: abelade
|
|
||||||
edit: bearbeite
|
|
||||||
edit_track: Dää Track bearbeite
|
|
||||||
filename: "Dateiname:"
|
|
||||||
heading: Am Bschaue vum Track %{name}
|
|
||||||
map: Charte
|
|
||||||
none: Keini
|
|
||||||
owner: "Bsitzer:"
|
|
||||||
pending: HÄNGIG
|
pending: HÄNGIG
|
||||||
points: "Pinkt:"
|
filename: 'Dateiname:'
|
||||||
start_coordinates: "Startkoordinate:"
|
download: abelade
|
||||||
tags: "Markierige:"
|
uploaded: 'Uffegladen am:'
|
||||||
title: Am Aaluege vum Track %{name}
|
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!
|
trace_not_found: Track nit gfunde!
|
||||||
uploaded: "Uffegladen am:"
|
visibility: 'Sichtbarkeit:'
|
||||||
visibility: "Sichtbarkeit:"
|
trace:
|
||||||
visibility:
|
pending: HÄNGIG
|
||||||
identifiable: Identifizierbar (wird in dr Tracklischt as anonymi, sortierti Punktfolg mit Zytstämpfel aazeigt)
|
count_points: '%{count} Pinkt'
|
||||||
private: Privat (nume as anonymi, nit sortierti Pinkt ohni Zytstämpfel aazeigt)
|
ago: '%{time_in_words_ago} här'
|
||||||
public: Effentlig (wird in dr Tracklischt aazeigt, aber numen as anonymi, nit sortierti Punktfolg ohni Zytstämpfel)
|
more: meh
|
||||||
trackable: Track (wird in dr Tracklischt as anonymi, sortierti Punktfolg mit Zytstämpfel aazeigt)
|
trace_details: Track-Einzelheite aaluege
|
||||||
user:
|
view_map: Charten aazeige
|
||||||
confirm_email:
|
edit: bearbeite
|
||||||
button: Bstetige
|
edit_map: Charte bearbeite
|
||||||
failure: E E-Mail-Adräss isch scho mit däm Gleich bstetigt wore.
|
public: EFFETLI
|
||||||
heading: Änderig vu dr E-Mail-Adräss bstetige
|
private: PRIVAT
|
||||||
press confirm button: Druck unte uf dr „Bstetige“-Chnopf go Dyy nej E-Mail-Adräss bstetige.
|
by: vu
|
||||||
success: Dyy E-Mail-Adräss isch bstetigt wore, dankschen fir s Regischtriere!
|
in: in
|
||||||
filter:
|
map: Charte
|
||||||
not_an_administrator: Du muesch e Administrator syy go die Aktion uusfiere.
|
list:
|
||||||
go_public:
|
public_traces: Effetligi GPS-Track
|
||||||
flash success: Alli Dyyni Bearbeitige sion jetz effetlig, un Du derfsch jetz Bearbeitige mache.
|
your_traces: Dyy GPS-Track
|
||||||
make_friend:
|
public_traces_from: 'Effetligi GPS-Track vu %{user}'
|
||||||
already_a_friend: Du bisch scho ne Frynd vu %{name}.
|
tagged_with: 'Gchännzeichnet mit %{tags}'
|
||||||
failed: Excusez, %{name} het nit as Frynd chenne zuegfiegt wäre.
|
delete:
|
||||||
success: "%{name} isch jetz Dyy Frynd."
|
scheduled_for_deletion: Track, wu zum Lesche vorgsäh isch
|
||||||
popup:
|
make_public:
|
||||||
nearby mapper: Mapper in dr Nechi
|
made_public: Track, wu vereffetligt isch
|
||||||
your location: Dyy Standort
|
user:
|
||||||
reset_password:
|
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
|
|
||||||
title: Passwort zrucksetze
|
title: Passwort zrucksetze
|
||||||
user_role:
|
heading: 'Passwort fir %{user} zrucksetze'
|
||||||
filter:
|
confirm password: 'Passwort bstetige:'
|
||||||
already_has_role: Dr Nutzer ghert scho zue dr Rolle %{role}.
|
reset: Passwort zrucksetze
|
||||||
doesnt_have_role: Dr Nutzer het kei Roll %{role}.
|
flash changed: Dyy Passwort isch gänderet wore.
|
||||||
not_a_role: D Zeichechette „%{role}“ bezeichnet kei giltigi Rolle.
|
flash token bad: >
|
||||||
not_an_administrator: Benutzerrolle chenne nume vu Adminischtratore verwaltet wäre, un Du bisch kei Adminischtrator.
|
Mir hän des Chirzel leider nit chenne
|
||||||
grant:
|
finde. Iberprief d URL.
|
||||||
are_you_sure: Bisch sicher, ass Du dr Benutzer „%{name}“ dr Rolle „%{role}“ witt zueordne?
|
popup:
|
||||||
confirm: Bstetige
|
your location: Dyy Standort
|
||||||
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.
|
nearby mapper: Mapper in dr Nechi
|
||||||
heading: Rollezueornig bstetige
|
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
|
title: Rollezueornig bstetige
|
||||||
revoke:
|
heading: Rollezueornig bstetige
|
||||||
are_you_sure: Bisch sicher, ass Du d Zueornig vum Benutzer „%{name}“ zue dr Rolle „%{role}“ witt ufhebe?
|
are_you_sure: 'Bisch sicher, ass Du dr Benutzer „%{name}“ dr Rolle „%{role}“ witt zueordne?'
|
||||||
confirm: Bstetige
|
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.
|
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: D Ufhebig vu dr Rollezueornig bstetige
|
revoke:
|
||||||
title: Ufhebig vu dr Rollezueornig bstetige
|
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
|
@ -1,49 +1,30 @@
|
||||||
# Messages for Hindi (हिन्दी)
|
# Messages for Hindi (हिन्दी)
|
||||||
# Exported from translatewiki.net
|
# Exported from translatewiki.net
|
||||||
# Export driver: syck-pecl
|
# Export driver: phpyaml
|
||||||
|
# Author: Ansumang
|
||||||
# Author: Charu
|
# Author: Charu
|
||||||
hi:
|
# Author: Shubhamkanodia
|
||||||
activerecord:
|
# Author: Siddhartha Ghai
|
||||||
attributes:
|
# Author: Vdhatterwal
|
||||||
diary_comment:
|
---
|
||||||
body: शरीर
|
hi:
|
||||||
diary_entry:
|
time:
|
||||||
language: भाशा
|
formats:
|
||||||
latitude: अक्षांश
|
friendly: '%e %B %Y को %H:%M पर'
|
||||||
longitude: देशांतर
|
activerecord:
|
||||||
title: शीर्षक
|
models:
|
||||||
user: उपयोगकर्ता
|
acl: अभिगम नियंत्रण सूची
|
||||||
friend:
|
changeset: बदलाव
|
||||||
friend: दोस्त
|
changeset_tag: बदलाव टैग
|
||||||
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:
|
|
||||||
country: देश
|
country: देश
|
||||||
|
diary_comment: डायरी टिप्पणी
|
||||||
|
diary_entry: डायरी प्रविष्टि
|
||||||
friend: दोस्त
|
friend: दोस्त
|
||||||
language: भाशा
|
language: भाषा
|
||||||
message: संदेश
|
message: संदेश
|
||||||
node: आसंधि
|
node: आसंधि
|
||||||
node_tag: आसंधि का अंकितक
|
node_tag: आसंधि का अंकितक
|
||||||
|
notifier: सूचनाकार
|
||||||
old_node: पुराने आसंधि
|
old_node: पुराने आसंधि
|
||||||
old_node_tag: पुराने आसंधि का अंकितक
|
old_node_tag: पुराने आसंधि का अंकितक
|
||||||
old_relation: पुराना संबंध
|
old_relation: पुराना संबंध
|
||||||
|
@ -55,286 +36,239 @@ hi:
|
||||||
relation: संबंध
|
relation: संबंध
|
||||||
relation_member: संबंध का सदस्य
|
relation_member: संबंध का सदस्य
|
||||||
relation_tag: संबंध का अंकितक
|
relation_tag: संबंध का अंकितक
|
||||||
user: उपयोगकर्ता
|
session: सत्र
|
||||||
|
trace: अनुरेख
|
||||||
|
tracepoint: अनुरेखण बिंदु
|
||||||
|
tracetag: अनुरेखन टैग
|
||||||
|
user: सदस्य
|
||||||
user_preference: उपयोगकर्ता के वरीयता
|
user_preference: उपयोगकर्ता के वरीयता
|
||||||
user_token: उपयोगकर्ता के अंकितक
|
user_token: उपयोगकर्ता के अंकितक
|
||||||
way: रस्ता
|
way: रस्ता
|
||||||
way_node: रस्ता का आसंधि
|
way_node: रस्ता का आसंधि
|
||||||
way_tag: रस्ता का अंकितक
|
way_tag: रस्ता का अंकितक
|
||||||
browse:
|
attributes:
|
||||||
changeset_details:
|
diary_comment:
|
||||||
closed_at: "समापन के समय:"
|
body: शरीर
|
||||||
created_at: "निर्माण के समय:"
|
diary_entry:
|
||||||
has_nodes: "निम्नलिखित %{count} आसंधि है:"
|
user: सदस्य
|
||||||
has_relations: "निम्नलिखित %{count} संबंध है:"
|
title: शीर्षक
|
||||||
has_ways: "निम्नलिखित %{count} रस्ते है:"
|
latitude: अक्षांश
|
||||||
common_details:
|
longitude: देशांतर
|
||||||
changeset_comment: "टिप्पणी:"
|
language: भाषा
|
||||||
edited_at: "समय, जिस पर संपादित:"
|
friend:
|
||||||
edited_by: "संपादक:"
|
user: सदस्य
|
||||||
in_changeset: "इस changeset का अंग:"
|
friend: दोस्त
|
||||||
version: "संस्करण:"
|
trace:
|
||||||
containing_relation:
|
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: संबंध %{relation_name}
|
||||||
entry_role: संबंध %{relation_name} (as %{relation_role})
|
entry_role: संबंध %{relation_name} (as %{relation_role})
|
||||||
map:
|
not_found:
|
||||||
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:
|
|
||||||
sorry: क्षमा करें, ये %{type} इस आईडी %{id } के साथ, पाया नहीं जा सका
|
sorry: क्षमा करें, ये %{type} इस आईडी %{id } के साथ, पाया नहीं जा सका
|
||||||
type:
|
type:
|
||||||
node: आसंधि
|
node: आसंधि
|
||||||
relation: संबंध
|
|
||||||
way: रास्ता
|
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: संबंध
|
relation: संबंध
|
||||||
way: ओर
|
tag_details:
|
||||||
start:
|
tags: 'अंकितक:'
|
||||||
manually_select: कृपया, आप एक अलग क्षेत्र चुनें
|
changeset:
|
||||||
view_data: इस मानचित्र के तथ्यों देखें
|
changeset_paging_nav:
|
||||||
start_rjs:
|
showing_page: 'इस पृष्ठ का प्रदर्शन:'
|
||||||
data_frame_title: तथ्य
|
changeset:
|
||||||
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:
|
|
||||||
anonymous: अनाम
|
anonymous: अनाम
|
||||||
big_area: (बड़ा क्षेत्र)
|
|
||||||
no_comment: (कोई टिप्पणी नहीं है)
|
|
||||||
no_edits: (कोई संपादित नहीं है)
|
no_edits: (कोई संपादित नहीं है)
|
||||||
still_editing: (संपादित किया जा रहा है)
|
|
||||||
view_changeset_details: इस changeset के विवरण देखे
|
view_changeset_details: इस changeset के विवरण देखे
|
||||||
changeset_paging_nav:
|
changesets:
|
||||||
showing_page: "इस पृष्ठ का प्रदर्शन:"
|
|
||||||
changesets:
|
|
||||||
area: क्षेत्र
|
|
||||||
comment: टिप्पणी
|
|
||||||
id: आईडी
|
id: आईडी
|
||||||
saved_at: समय जब सुरक्षित किया गया
|
saved_at: समय जब सुरक्षित किया गया
|
||||||
user: उप्योगिकर्ता
|
user: सदस्य
|
||||||
diary_entry:
|
comment: टिप्पणी
|
||||||
edit:
|
area: क्षेत्र
|
||||||
body: "दैनिकी प्रविष्टि का शारीर:"
|
diary_entry:
|
||||||
language: "भाषा:"
|
new:
|
||||||
latitude: अक्षांश
|
title: नई दैनिकी प्रविष्टि
|
||||||
location: "स्थान:"
|
list:
|
||||||
longitude: देशांतर
|
title: उपयोगकर्ताओं के दैनिकी
|
||||||
marker_text: दैनिकी प्रविष्टि के स्थान
|
user_title: '%{user}'' के दैनिकी'
|
||||||
save_button: सहेजने
|
|
||||||
subject: "विषय:"
|
|
||||||
title: दैनिकी प्रविष्टि संपादित करें
|
|
||||||
use_map_link: नक्शा का इस्तेमाल
|
|
||||||
list:
|
|
||||||
new: नई दैनिकी प्रविष्टि
|
new: नई दैनिकी प्रविष्टि
|
||||||
new_title: अपने दैनिकी मैं, एक नई प्रविष्टि लिखें
|
new_title: अपने दैनिकी मैं, एक नई प्रविष्टि लिखें
|
||||||
no_entries: कोई दैनिकी प्रविष्टियों नहीं है
|
no_entries: कोई दैनिकी प्रविष्टियों नहीं है
|
||||||
|
recent_entries: 'नई दैनिकी प्रविष्टियों:'
|
||||||
older_entries: पुराने प्रविष्टियों
|
older_entries: पुराने प्रविष्टियों
|
||||||
recent_entries: "नई दैनिकी प्रविष्टियों:"
|
edit:
|
||||||
title: उपयोगकर्ताओं के दैनिकी
|
title: दैनिकी प्रविष्टि संपादित करें
|
||||||
user_title: "%{user}' के दैनिकी"
|
subject: 'विषय:'
|
||||||
new:
|
body: 'दैनिकी प्रविष्टि का शारीर:'
|
||||||
title: नई दैनिकी प्रविष्टि
|
language: 'भाषा:'
|
||||||
no_such_entry:
|
location: 'स्थान:'
|
||||||
body: क्षमा करें, इस आईडी %{id} के लिया कोई प्रविष्टि या टिप्पणी नहीं है| कृपया अपनी वर्तनी की जाँच करें, or maybe the link you clicked is wrong|
|
latitude: अक्षांश
|
||||||
heading: इस आईडी %{id} के लिया कोई प्रविष्टि नहीं है
|
longitude: देशांतर
|
||||||
view:
|
use_map_link: नक्शा का इस्तेमाल
|
||||||
leave_a_comment: टिप्पणी लिखिए
|
|
||||||
login: सत्रारंभ
|
|
||||||
login_to_leave_a_comment: सत्रारंभ यहाँ %{login_link}, एक टिप्पणी लिखिने के लिए
|
|
||||||
save_button: सहेजने
|
save_button: सहेजने
|
||||||
|
marker_text: दैनिकी प्रविष्टि के स्थान
|
||||||
|
view:
|
||||||
title: उप्योगिकर्ताओ के दैनिकी | %{user}
|
title: उप्योगिकर्ताओ के दैनिकी | %{user}
|
||||||
user_title: "%{user}'s के दैनिकीं"
|
user_title: '%{user}''s के दैनिकीं'
|
||||||
export:
|
leave_a_comment: टिप्पणी लिखिए
|
||||||
start:
|
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: क्षेत्र निर्यात करने के लिए
|
area_to_export: क्षेत्र निर्यात करने के लिए
|
||||||
format_to_export: स्वरूप निर्यात करने के लिए
|
|
||||||
manually_select: कृपया, आप एक अलग क्षेत्र चुनिए
|
manually_select: कृपया, आप एक अलग क्षेत्र चुनिए
|
||||||
mapnik_image: Mapnik छवि
|
format_to_export: स्वरूप निर्यात करने के लिए
|
||||||
osmarender_image: Osmarender छवि
|
geocoder:
|
||||||
geocoder:
|
description:
|
||||||
description:
|
types:
|
||||||
types:
|
|
||||||
cities: नगर
|
cities: नगर
|
||||||
places: स्थल
|
|
||||||
towns: शहर
|
towns: शहर
|
||||||
direction:
|
places: स्थल
|
||||||
east: पूर्व
|
distance:
|
||||||
north: उत्तर
|
one: करीब 1 किमी
|
||||||
north_east: उत्तर-पूर्व
|
zero: 1 किमी से कम
|
||||||
north_west: उत्तर-पश्चिम
|
other: करीब %{count} किमी
|
||||||
|
direction:
|
||||||
|
south_west: दक्षिण-पश्चिम
|
||||||
south: दक्षिण
|
south: दक्षिण
|
||||||
south_east: दक्षिण-पूर्व
|
south_east: दक्षिण-पूर्व
|
||||||
south_west: दक्षिण-पश्चिम
|
east: पूर्व
|
||||||
|
north_east: उत्तर-पूर्व
|
||||||
|
north: उत्तर
|
||||||
|
north_west: उत्तर-पश्चिम
|
||||||
west: पश्चिम
|
west: पश्चिम
|
||||||
distance:
|
layouts:
|
||||||
one: करीब 1 किमी
|
|
||||||
other: करीब %{count} किमी
|
|
||||||
zero: 1 किमी से कम
|
|
||||||
layouts:
|
|
||||||
home: गृह
|
home: गृह
|
||||||
inbox_tooltip:
|
|
||||||
other: आपके इनबॉक्स में %{count} अपठित संदेश हैं
|
|
||||||
logout_tooltip: निर्गम
|
|
||||||
sign_up_tooltip: संपादन के लिए खाता बनाएं
|
sign_up_tooltip: संपादन के लिए खाता बनाएं
|
||||||
view_tooltip: नक्शा देखें
|
notifier:
|
||||||
welcome_user_link_tooltip: आपका प्रयोक्ता पन्ना
|
gpx_notification:
|
||||||
message:
|
|
||||||
delete:
|
|
||||||
deleted: संदेश खात्मा
|
|
||||||
message_summary:
|
|
||||||
delete_button: खात्मा
|
|
||||||
no_such_user:
|
|
||||||
heading: इस तरह का कोई प्रयोक्ता या संदेश नहीं
|
|
||||||
sent_message_summary:
|
|
||||||
delete_button: खात्मा
|
|
||||||
notifier:
|
|
||||||
gpx_notification:
|
|
||||||
greeting: नमस्कार,
|
greeting: नमस्कार,
|
||||||
oauth_clients:
|
note_comment_notification:
|
||||||
edit:
|
greeting: नमस्कार,
|
||||||
submit: संपादन
|
message:
|
||||||
form:
|
message_summary:
|
||||||
allow_write_api: नक्शा संपादित करें.
|
delete_button: खात्मा
|
||||||
name: नाम
|
sent_message_summary:
|
||||||
required: आवश्यकता
|
delete_button: खात्मा
|
||||||
new:
|
delete:
|
||||||
submit: पंजीयन
|
deleted: संदेश खात्मा
|
||||||
show:
|
site:
|
||||||
allow_write_api: नक्शे में तब्दीली
|
edit:
|
||||||
key: उपभोक्ता कुंजी
|
potlatch_unsaved_changes: You have unsaved changes. (To save in Potlatch, you
|
||||||
site:
|
should deselect the current way or point, if editing in list mode, or click
|
||||||
edit:
|
save if you have a save button.)
|
||||||
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:
|
||||||
index:
|
table:
|
||||||
license:
|
entry:
|
||||||
license_name: क्रिएटिव कामन्स एट्रीब्यूशन-शेयर एलाइक 2.0
|
|
||||||
project_name: ओपन स्ट्रीट मेप परियोजना
|
|
||||||
key:
|
|
||||||
table:
|
|
||||||
entry:
|
|
||||||
allotments: आवंटन
|
|
||||||
building: महत्वपूर्ण भवन
|
|
||||||
cable:
|
|
||||||
- केबल कार
|
|
||||||
cemetery: कब्रिस्तान
|
|
||||||
farm: खेत
|
|
||||||
footway: पगडंडी
|
|
||||||
forest: वन
|
|
||||||
golf: गोल्फ मैदान
|
|
||||||
industrial: औद्योगिक क्षेत्र
|
|
||||||
lake:
|
|
||||||
- झील
|
|
||||||
motorway: मोटरवे
|
motorway: मोटरवे
|
||||||
park: पार्क
|
|
||||||
primary: निजी सड़क
|
|
||||||
rail: रेलवे
|
|
||||||
resident: रिहायशी क्षेत्र
|
|
||||||
runway:
|
|
||||||
- एयरपोर्ट रनवे
|
|
||||||
school:
|
|
||||||
- पाठशाला
|
|
||||||
- विश्वविद्यालय
|
|
||||||
secondary: द्वितीय सड़क
|
|
||||||
station: रेलवे स्टेशन
|
|
||||||
subway: उपमार्ग
|
|
||||||
tourist: पर्यटन के आकर्षण
|
|
||||||
track: पट्टी
|
|
||||||
trunk: ट्रंक रोड
|
trunk: ट्रंक रोड
|
||||||
|
primary: निजी सड़क
|
||||||
|
secondary: द्वितीय सड़क
|
||||||
unclassified: अवर्गीकृत सड़क
|
unclassified: अवर्गीकृत सड़क
|
||||||
|
track: पट्टी
|
||||||
|
footway: पगडंडी
|
||||||
|
rail: रेलवे
|
||||||
|
subway: उपमार्ग
|
||||||
|
cable:
|
||||||
|
- केबल कार
|
||||||
|
runway:
|
||||||
|
- एयरपोर्ट रनवे
|
||||||
|
forest: वन
|
||||||
wood: लकड़ी
|
wood: लकड़ी
|
||||||
search:
|
golf: गोल्फ मैदान
|
||||||
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>"
|
park: पार्क
|
||||||
trace:
|
resident: रिहायशी क्षेत्र
|
||||||
edit:
|
tourist: पर्यटन के आकर्षण
|
||||||
|
industrial: औद्योगिक क्षेत्र
|
||||||
|
lake:
|
||||||
|
- झील
|
||||||
|
farm: खेत
|
||||||
|
cemetery: कब्रिस्तान
|
||||||
|
allotments: आवंटन
|
||||||
|
school:
|
||||||
|
- पाठशाला
|
||||||
|
- विश्वविद्यालय
|
||||||
|
building: महत्वपूर्ण भवन
|
||||||
|
station: रेलवे स्टेशन
|
||||||
|
trace:
|
||||||
|
edit:
|
||||||
map: नक्शा
|
map: नक्शा
|
||||||
visibility: दृष्टता
|
visibility: दृष्टता
|
||||||
visibility_help: इसका क्या मतलब है?
|
visibility_help: इसका क्या मतलब है?
|
||||||
no_such_user:
|
trace_form:
|
||||||
body: माफ करें, इस %{user} नाम का कोई प्रयोक्ता नहीं है. कृपया अक्षरों पर गौर करें, या आपने जिस लिंक पर क्लिक किया है, वह गलत हो सकता है.
|
|
||||||
title: इस तरह का कोई प्रयोक्ता नहीं
|
|
||||||
trace_form:
|
|
||||||
visibility: दृष्टता
|
visibility: दृष्टता
|
||||||
visibility_help: इसका क्या मतलब है?
|
visibility_help: इसका क्या मतलब है?
|
||||||
view:
|
view:
|
||||||
tags: Tags
|
tags: Tags
|
||||||
visibility: दृष्टता
|
visibility: दृष्टता
|
||||||
user:
|
oauth_clients:
|
||||||
account:
|
new:
|
||||||
public editing:
|
submit: पंजीयन
|
||||||
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
|
edit:
|
||||||
lost_password:
|
submit: संपादन
|
||||||
new password button: Send me a new password
|
show:
|
||||||
|
key: उपभोक्ता कुंजी
|
||||||
|
allow_write_api: नक्शे में तब्दीली
|
||||||
|
form:
|
||||||
|
name: नाम
|
||||||
|
required: आवश्यकता
|
||||||
|
allow_write_api: नक्शा संपादित करें.
|
||||||
|
allow_write_notes: नोट संशोधित करें।
|
||||||
|
user:
|
||||||
|
lost_password:
|
||||||
title: lost password
|
title: lost password
|
||||||
reset_password:
|
new password button: Send me a new password
|
||||||
password: "पासवर्ड:"
|
reset_password:
|
||||||
title: 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
Loading…
Add table
Add a link
Reference in a new issue