--- /dev/null
+service_name: travis-ci
.vagrant
.ruby-gemset
.ruby-version
-.idea
\ No newline at end of file
+.idea
+coverage
Andrzej Zaborowski <balrogg@gmail.com> <andrew.zaborowski@intel.com>
Andy Allan <andy@gravitystorm.co.uk> <gravitystorm@gmail.com> <github@gravitystorm.co.uk>
+Florian Schäfer <florian@schaeferban.de>
Grant Slater <openstreetmap@firefishy.com> <github@firefishy.com>
Harry Wood <git@harrywood.co.uk> <mail@harrywood.co.uk> <github@onlineanimals.co.uk>
Kai Krueger <kakrueger@gmail.com> <kai@aiputerlx.(none)>
+Michael Glanznig <nebulon42@yandex.com>
Richard Fairhurst <richard@systemeD.net> <richard@systemed.net>
inherit_from: .rubocop_todo.yml
+AllCops:
+ RunRailsCops: true
+
Style/BracesAroundHashParameters:
EnforcedStyle: context_dependent
+Style/ExtraSpacing:
+ AllowForAlignment: true
+
Style/FileName:
Exclude:
- 'script/deliver-message'
- 'script/locale/reload-languages'
- 'script/update-spam-blocks'
+Style/GlobalVars:
+ Exclude:
+ - 'lib/quad_tile/extconf.rb'
+
Style/HashSyntax:
EnforcedStyle: hash_rockets
Exclude:
-# This configuration was generated by `rubocop --auto-gen-config`
-# on 2015-02-16 19:20:52 +0000 using RuboCop version 0.29.1.
+# This configuration was generated by
+# `rubocop --auto-gen-config`
+# on 2015-08-18 20:27:49 +0100 using RuboCop version 0.33.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
-# Offense count: 13
+# Offense count: 34
Lint/AmbiguousOperator:
- Enabled: false
+ Exclude:
+ - 'test/controllers/amf_controller_test.rb'
+ - 'test/controllers/changeset_controller_test.rb'
+ - 'test/lib/bounding_box_test.rb'
+ - 'test/lib/country_test.rb'
-# Offense count: 110
+# Offense count: 115
Lint/AmbiguousRegexpLiteral:
Enabled: false
# Offense count: 29
# Configuration parameters: AllowSafeAssignment.
Lint/AssignmentInCondition:
- Enabled: false
+ Exclude:
+ - 'app/controllers/application_controller.rb'
+ - 'app/controllers/geocoder_controller.rb'
+ - 'app/controllers/notes_controller.rb'
+ - 'app/controllers/trace_controller.rb'
+ - 'app/controllers/user_controller.rb'
+ - 'app/controllers/user_preference_controller.rb'
+ - 'app/helpers/application_helper.rb'
+ - 'app/helpers/browse_helper.rb'
+ - 'app/models/client_application.rb'
+ - 'app/models/notifier.rb'
+ - 'lib/nominatim.rb'
+ - 'lib/osm.rb'
+ - 'script/deliver-message'
+
+# Offense count: 3
+Lint/FormatParameterMismatch:
+ Exclude:
+ - 'app/controllers/swf_controller.rb'
# Offense count: 5
Lint/HandleExceptions:
- Enabled: false
+ Exclude:
+ - 'app/controllers/amf_controller.rb'
+ - 'app/controllers/user_controller.rb'
+ - 'config/initializers/session.rb'
# Offense count: 8
Lint/ParenthesesAsGroupedExpression:
- Enabled: false
+ Exclude:
+ - 'test/controllers/amf_controller_test.rb'
+ - 'test/lib/bounding_box_test.rb'
+ - 'test/models/user_preference_test.rb'
-# Offense count: 546
+# Offense count: 671
Metrics/AbcSize:
- Max: 194
+ Max: 277
# Offense count: 12
Metrics/BlockNesting:
Max: 5
-# Offense count: 60
+# Offense count: 62
# Configuration parameters: CountComments.
Metrics/ClassLength:
- Max: 1515
+ Max: 1653
-# Offense count: 68
+# Offense count: 67
Metrics/CyclomaticComplexity:
- Max: 21
+ Max: 20
-# Offense count: 2112
+# Offense count: 2535
# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength:
- Max: 520
+ Max: 694
-# Offense count: 520
+# Offense count: 628
# Configuration parameters: CountComments.
Metrics/MethodLength:
Max: 179
+# Offense count: 1
+# Configuration parameters: CountComments.
+Metrics/ModuleLength:
+ Max: 126
+
# Offense count: 4
# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
Max: 9
-# Offense count: 70
+# Offense count: 69
Metrics/PerceivedComplexity:
- Max: 24
+ Max: 23
+
+# Offense count: 2
+# Configuration parameters: Include.
+Rails/HasAndBelongsToMany:
+ Exclude:
+ - 'app/models/changeset.rb'
+ - 'app/models/user.rb'
+
+# Offense count: 66
+# Configuration parameters: EnforcedStyle, SupportedStyles.
+Rails/TimeZone:
+ Enabled: false
# Offense count: 5
Style/AccessorMethodName:
- Enabled: false
+ Exclude:
+ - 'app/controllers/application_controller.rb'
+ - 'app/helpers/title_helper.rb'
+ - 'app/models/old_way.rb'
+ - 'lib/osm.rb'
+ - 'lib/potlatch.rb'
# Offense count: 1
Style/AsciiComments:
- Enabled: false
-
-# Offense count: 9
-Style/ClassVars:
- Enabled: false
-
-# Offense count: 12
-# Configuration parameters: Keywords.
-Style/CommentAnnotation:
- Enabled: false
+ Exclude:
+ - 'test/models/message_test.rb'
-# Offense count: 306
+# Offense count: 310
Style/Documentation:
Enabled: false
-# Offense count: 8
-# Configuration parameters: EnforcedStyle, SupportedStyles.
-Style/FormatString:
- Enabled: false
-
-# Offense count: 1
-# Configuration parameters: AllowedVariables.
-Style/GlobalVars:
- Enabled: false
-
-# Offense count: 41
+# Offense count: 38
# Configuration parameters: MinBodyLength.
Style/GuardClause:
- Enabled: false
+ Exclude:
+ - 'app/controllers/application_controller.rb'
+ - 'app/controllers/diary_entry_controller.rb'
+ - 'app/controllers/message_controller.rb'
+ - 'app/controllers/notes_controller.rb'
+ - 'app/controllers/site_controller.rb'
+ - 'app/controllers/user_blocks_controller.rb'
+ - 'app/controllers/user_controller.rb'
+ - 'app/controllers/user_roles_controller.rb'
+ - 'app/helpers/application_helper.rb'
+ - 'app/models/changeset.rb'
+ - 'app/models/user.rb'
+ - 'lib/diff_reader.rb'
+ - 'lib/object_metadata.rb'
# Offense count: 60
# Cop supports --auto-correct.
Style/LineEndConcatenation:
- Enabled: false
-
-# Offense count: 53
+ Exclude:
+ - 'db/migrate/008_remove_segments.rb'
+ - 'db/migrate/020_populate_node_tags_and_remove.rb'
+ - 'db/migrate/023_add_changesets.rb'
+ - 'lib/bounding_box.rb'
+ - 'lib/diff_reader.rb'
+ - 'lib/osm.rb'
+ - 'test/controllers/changeset_controller_test.rb'
+ - 'test/controllers/node_controller_test.rb'
+ - 'test/controllers/relation_controller_test.rb'
+ - 'test/controllers/way_controller_test.rb'
+
+# Offense count: 69
# Cop supports --auto-correct.
Style/NumericLiterals:
MinDigits: 11
-# Offense count: 44
+# Offense count: 42
# Cop supports --auto-correct.
Style/PerlBackrefs:
- Enabled: false
+ Exclude:
+ - 'app/controllers/amf_controller.rb'
+ - 'app/controllers/application_controller.rb'
+ - 'app/helpers/browse_helper.rb'
+ - 'config/initializers/paperclip.rb'
+ - 'lib/id.rb'
+ - 'lib/potlatch.rb'
+ - 'test/lib/i18n_test.rb'
# Offense count: 8
# Configuration parameters: NamePrefix, NamePrefixBlacklist.
Style/PredicateName:
- Enabled: false
-
-# Offense count: 95
+ Exclude:
+ - 'app/models/changeset.rb'
+ - 'app/models/old_node.rb'
+ - 'app/models/old_relation.rb'
+ - 'app/models/old_way.rb'
+ - 'app/models/user.rb'
+ - 'lib/classic_pagination/pagination.rb'
+
+# Offense count: 97
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/RaiseArgs:
Enabled: false
# Offense count: 2
Style/RescueModifier:
- Enabled: false
+ Exclude:
+ - 'app/helpers/browse_helper.rb'
# Offense count: 8
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
Style/StringLiteralsInInterpolation:
Enabled: false
-
-# Offense count: 1
-Style/StructInheritance:
- Enabled: false
-
-# Offense count: 3
-# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, Whitelist.
-Style/TrivialAccessors:
- Enabled: false
--- /dev/null
+sudo: false
+language: ruby
+rvm:
+ - 1.9.3
+cache: bundler
+addons:
+ postgresql: 9.1
+ apt:
+ packages:
+ - postgresql-server-dev-9.1
+services:
+ - memcached
+env:
+ global:
+ - OSM_MEMCACHE_SERVERS="127.0.0.1"
+before_script:
+ - psql -U postgres -c "CREATE DATABASE openstreetmap"
+ - psql -U postgres -c "CREATE EXTENSION btree_gist" openstreetmap
+ - make -C db/functions libpgosm.so
+ - psql -U postgres -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '${PWD}/db/functions/libpgosm', 'maptile_for_point' LANGUAGE C STRICT" openstreetmap
+ - psql -U postgres -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '${PWD}/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT" openstreetmap
+ - psql -U postgres -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '${PWD}/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT" openstreetmap
+ - cp config/travis.database.yml config/database.yml
+ - bundle exec rake db:migrate
+script:
+ - bundle exec rubocop -f fuubar
+ - bundle exec rake jshint
+ - bundle exec rake test
source "https://rubygems.org"
# Require rails
-gem "rails", "4.2.0"
+gem "rails", "4.2.4"
+
+# Sprockets 3 seems to be buggy, so stick with 2 for now
+gem "sprockets", "~> 2.12.3"
# Require things which have moved to gems in ruby 1.9
gem "bigdecimal", "~> 1.1.0", :platforms => :ruby_19
gem "dynamic_form"
gem "rinku", ">= 1.2.2", :require => "rails_rinku"
gem "oauth-plugin", ">= 0.5.1"
-gem "open_id_authentication", ">= 1.1.0"
gem "validates_email_format_of", ">= 1.5.1"
-gem "composite_primary_keys", "~> 8.0.0"
+gem "composite_primary_keys", "~> 8.1.0"
gem "http_accept_language", "~> 2.0.0"
gem "paperclip", "~> 4.0"
gem "deadlock_retry", ">= 1.2.0"
-gem "openstreetmap-i18n-js", ">= 3.0.0.rc5.3", :require => "i18n-js"
+gem "i18n-js", ">= 3.0.0.rc10"
gem "rack-cors"
gem "actionpack-page_caching"
-# We need ruby-openid 2.2.0 or later for ruby 1.9 support
-gem "ruby-openid", ">= 2.2.0"
+# Omniauth for authentication
+gem "omniauth"
+gem "omniauth-openid"
+gem "openstreetmap-omniauth-google-oauth2", ">= 0.2.6.1", :require => "omniauth-google-oauth2"
+gem "omniauth-facebook"
+gem "omniauth-windowslive"
# Markdown formatting support
gem "redcarpet"
-# Character conversion support for ruby 1.8
-gem "iconv", "= 0.1", :platforms => :ruby_18
-
# Load libxml support for XML parsing and generation
gem "libxml-ruby", ">= 2.0.5", :require => "libxml"
# Load SystemTimer for implementing request timeouts
gem "SystemTimer", ">= 1.1.3", :require => "system_timer", :platforms => :ruby_18
+# Load faraday for mockable HTTP client
+gem "faraday"
+
# Load httpclient and soap4r for SOAP support for Quova GeoIP queries
gem "httpclient"
gem "soap4r-ruby1.9"
gem "dalli"
gem "kgio"
+# Used to generate logstash friendly log files
+gem "logstasher"
+
# Gems useful for development
group :development do
gem "vendorer"
# Gems needed for running tests
group :test do
+ gem "rubocop"
gem "timecop"
gem "minitest", "~> 5.1", :platforms => [:ruby_19, :ruby_20]
end
# Needed in development as well so rake can see konacha tasks
group :development, :test do
+ gem "jshint"
gem "konacha"
gem "poltergeist"
+ gem "coveralls", :require => false
end
remote: https://rubygems.org/
specs:
SystemTimer (1.2.3)
- actionmailer (4.2.0)
- actionpack (= 4.2.0)
- actionview (= 4.2.0)
- activejob (= 4.2.0)
+ actionmailer (4.2.4)
+ actionpack (= 4.2.4)
+ actionview (= 4.2.4)
+ activejob (= 4.2.4)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5)
- actionpack (4.2.0)
- actionview (= 4.2.0)
- activesupport (= 4.2.0)
- rack (~> 1.6.0)
+ actionpack (4.2.4)
+ actionview (= 4.2.4)
+ activesupport (= 4.2.4)
+ rack (~> 1.6)
rack-test (~> 0.6.2)
rails-dom-testing (~> 1.0, >= 1.0.5)
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionpack-page_caching (1.0.2)
actionpack (>= 4.0.0, < 5)
- actionview (4.2.0)
- activesupport (= 4.2.0)
+ actionview (4.2.4)
+ activesupport (= 4.2.4)
builder (~> 3.1)
erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5)
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
- activejob (4.2.0)
- activesupport (= 4.2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
+ activejob (4.2.4)
+ activesupport (= 4.2.4)
globalid (>= 0.3.0)
- activemodel (4.2.0)
- activesupport (= 4.2.0)
+ activemodel (4.2.4)
+ activesupport (= 4.2.4)
builder (~> 3.1)
- activerecord (4.2.0)
- activemodel (= 4.2.0)
- activesupport (= 4.2.0)
+ activerecord (4.2.4)
+ activemodel (= 4.2.4)
+ activesupport (= 4.2.4)
arel (~> 6.0)
- activesupport (4.2.0)
+ activesupport (4.2.4)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
- arel (6.0.0)
- autoprefixer-rails (4.0.2.2)
+ arel (6.0.3)
+ ast (2.1.0)
+ astrolabe (1.3.1)
+ parser (~> 2.2)
+ autoprefixer-rails (5.2.1.2)
execjs
+ json
bigdecimal (1.1.0)
builder (3.2.2)
capybara (2.4.4)
climate_control (0.0.3)
activesupport (>= 3.0)
cliver (0.3.2)
- cocaine (0.5.5)
+ cocaine (0.5.7)
climate_control (>= 0.0.3, < 1.0)
coffee-rails (4.1.0)
coffee-script (>= 2.2.0)
railties (>= 4.0.0, < 5.0)
- coffee-script (2.3.0)
+ coffee-script (2.4.1)
coffee-script-source
execjs
- coffee-script-source (1.8.0)
- colorize (0.7.5)
- composite_primary_keys (8.0.0)
+ coffee-script-source (1.9.1.1)
+ colorize (0.7.7)
+ composite_primary_keys (8.1.1)
activerecord (~> 4.2.0)
- crass (1.0.1)
- dalli (2.7.2)
+ coveralls (0.8.2)
+ json (~> 1.8)
+ rest-client (>= 1.6.8, < 2)
+ simplecov (~> 0.10.0)
+ term-ansicolor (~> 1.3)
+ thor (~> 0.19.1)
+ crass (1.0.2)
+ dalli (2.7.4)
deadlock_retry (1.2.0)
+ docile (1.1.5)
+ domain_name (0.5.24)
+ unf (>= 0.0.5, < 1.0.0)
dynamic_form (1.1.4)
erubis (2.7.0)
- execjs (2.2.2)
+ execjs (2.6.0)
faraday (0.9.1)
multipart-post (>= 1.2, < 3)
- globalid (0.3.0)
+ globalid (0.3.6)
activesupport (>= 4.1.0)
+ hashie (3.4.2)
hike (1.2.3)
- htmlentities (4.3.3)
- http_accept_language (2.0.2)
+ htmlentities (4.3.4)
+ http-cookie (1.0.2)
+ domain_name (~> 0.5)
+ http_accept_language (2.0.5)
httpclient (2.6.0.1)
i18n (0.7.0)
- iconv (0.1)
- jquery-rails (4.0.3)
+ i18n-js (3.0.0.rc11)
+ i18n (~> 0.6)
+ jquery-rails (4.0.4)
rails-dom-testing (~> 1.0)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
- json (1.8.2)
+ jshint (1.4.0)
+ execjs (>= 1.4.0)
+ multi_json (~> 1.0)
+ therubyracer (~> 0.12.1)
+ json (1.8.3)
jsonify (0.3.1)
multi_json (~> 1.0)
jsonify-rails (0.3.2)
actionpack
jsonify (< 0.4.0)
- jwt (1.2.0)
- kgio (2.9.2)
- konacha (3.3.0)
+ jwt (1.5.1)
+ kgio (2.9.3)
+ konacha (3.5.1)
actionpack (>= 3.1, < 5)
capybara
colorize
railties (>= 3.1, < 5)
- sprockets
+ sprockets (>= 2, < 4)
+ tilt
+ libv8 (3.16.14.11)
libxml-ruby (2.8.0)
- loofah (2.0.1)
+ logstash-event (1.2.02)
+ logstasher (0.6.5)
+ logstash-event (~> 1.2.0)
+ request_store
+ loofah (2.0.3)
nokogiri (>= 1.5.9)
mail (2.6.3)
mime-types (>= 1.16, < 3)
- mime-types (2.4.3)
+ mime-types (2.6.1)
+ mimemagic (0.3.0)
mini_portile (0.6.2)
- minitest (5.5.1)
- multi_json (1.10.1)
+ minitest (5.8.0)
+ multi_json (1.11.2)
multi_xml (0.5.5)
multipart-post (2.0.0)
- nokogiri (1.6.5)
+ netrc (0.10.3)
+ nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
- nokogumbo (1.2.0)
+ nokogumbo (1.4.1)
nokogiri
oauth (0.4.7)
oauth-plugin (0.5.1)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (~> 1.2)
- open_id_authentication (1.2.0)
- rack-openid (~> 1.3)
- openstreetmap-i18n-js (3.0.0.rc5.3)
- i18n
- paperclip (4.2.1)
- activemodel (>= 3.0.0)
- activesupport (>= 3.0.0)
- cocaine (~> 0.5.3)
+ omniauth (1.2.2)
+ hashie (>= 1.2, < 4)
+ rack (~> 1.0)
+ omniauth-facebook (2.0.1)
+ omniauth-oauth2 (~> 1.2)
+ omniauth-oauth2 (1.3.1)
+ oauth2 (~> 1.0)
+ omniauth (~> 1.2)
+ omniauth-openid (1.0.1)
+ omniauth (~> 1.0)
+ rack-openid (~> 1.3.1)
+ omniauth-windowslive (0.0.9.1)
+ multi_json (>= 1.0.3)
+ omniauth-oauth2 (~> 1.0)
+ openstreetmap-omniauth-google-oauth2 (0.2.6.1)
+ jwt (~> 1.0)
+ multi_json (~> 1.3)
+ omniauth (>= 1.1.1)
+ omniauth-oauth2 (>= 1.1.1)
+ paperclip (4.3.0)
+ activemodel (>= 3.2.0)
+ activesupport (>= 3.2.0)
+ cocaine (~> 0.5.5)
mime-types
- pg (0.18.1)
- poltergeist (1.5.1)
+ mimemagic (= 0.3.0)
+ parser (2.2.2.6)
+ ast (>= 1.1, < 3.0)
+ pg (0.18.2)
+ poltergeist (1.6.0)
capybara (~> 2.1)
cliver (~> 0.3.1)
multi_json (~> 1.0)
websocket-driver (>= 0.2.0)
- psych (2.0.9)
+ powerpack (0.1.1)
+ psych (2.0.15)
r2 (0.2.5)
- rack (1.6.0)
- rack-cors (0.3.1)
- rack-openid (1.4.2)
+ rack (1.6.4)
+ rack-cors (0.4.0)
+ rack-openid (1.3.1)
rack (>= 1.1.0)
ruby-openid (>= 2.1.8)
rack-test (0.6.3)
rack (>= 1.0)
- rails (4.2.0)
- actionmailer (= 4.2.0)
- actionpack (= 4.2.0)
- actionview (= 4.2.0)
- activejob (= 4.2.0)
- activemodel (= 4.2.0)
- activerecord (= 4.2.0)
- activesupport (= 4.2.0)
+ rails (4.2.4)
+ actionmailer (= 4.2.4)
+ actionpack (= 4.2.4)
+ actionview (= 4.2.4)
+ activejob (= 4.2.4)
+ activemodel (= 4.2.4)
+ activerecord (= 4.2.4)
+ activesupport (= 4.2.4)
bundler (>= 1.3.0, < 2.0)
- railties (= 4.2.0)
+ railties (= 4.2.4)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (>= 4.2.0.alpha)
- rails-dom-testing (1.0.5)
+ rails-dom-testing (1.0.7)
activesupport (>= 4.2.0.beta, < 5.0)
nokogiri (~> 1.6.0)
rails-deprecated_sanitizer (>= 1.0.1)
- rails-html-sanitizer (1.0.1)
+ rails-html-sanitizer (1.0.2)
loofah (~> 2.0)
- rails-i18n (4.0.3)
+ rails-i18n (4.0.4)
i18n (~> 0.6)
railties (~> 4.0)
- railties (4.2.0)
- actionpack (= 4.2.0)
- activesupport (= 4.2.0)
+ railties (4.2.4)
+ actionpack (= 4.2.4)
+ activesupport (= 4.2.4)
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
+ rainbow (2.0.0)
rake (10.4.2)
- redcarpet (3.2.2)
+ redcarpet (3.3.2)
+ ref (2.0.0)
+ request_store (1.2.0)
+ rest-client (1.8.0)
+ http-cookie (>= 1.0.2, < 2.0)
+ mime-types (>= 1.16, < 3.0)
+ netrc (~> 0.7)
rinku (1.7.3)
- ruby-openid (2.6.0)
- sanitize (3.1.0)
- crass (~> 1.0.1)
+ rubocop (0.33.0)
+ astrolabe (~> 1.3)
+ parser (>= 2.2.2.5, < 3.0)
+ powerpack (~> 0.1)
+ rainbow (>= 1.99.1, < 3.0)
+ ruby-progressbar (~> 1.4)
+ ruby-openid (2.7.0)
+ ruby-progressbar (1.7.5)
+ sanitize (4.0.0)
+ crass (~> 1.0.2)
nokogiri (>= 1.4.4)
- nokogumbo (= 1.2.0)
- sass (3.4.9)
- sass-rails (5.0.1)
+ nokogumbo (= 1.4.1)
+ sass (3.4.17)
+ sass-rails (5.0.3)
railties (>= 4.0.0, < 5.0)
sass (~> 3.1)
sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0)
tilt (~> 1.1)
+ simplecov (0.10.0)
+ docile (~> 1.1.0)
+ json (~> 1.8)
+ simplecov-html (~> 0.10.0)
+ simplecov-html (0.10.0)
soap4r-ruby1.9 (2.0.5)
- sprockets (2.12.3)
+ sprockets (2.12.4)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
- sprockets-rails (2.2.2)
+ sprockets-rails (2.3.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (>= 2.8, < 4.0)
+ term-ansicolor (1.3.2)
+ tins (~> 1.0)
+ therubyracer (0.12.2)
+ libv8 (~> 3.16.14.0)
+ ref
thor (0.19.1)
- thread_safe (0.3.4)
+ thread_safe (0.3.5)
tilt (1.4.1)
- timecop (0.7.1)
+ timecop (0.8.0)
+ tins (1.6.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
- uglifier (2.7.0)
+ uglifier (2.7.1)
execjs (>= 0.3.0)
json (>= 1.8.0)
- validates_email_format_of (1.6.1)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.1)
+ validates_email_format_of (1.6.3)
i18n
vendorer (0.1.16)
- websocket-driver (0.5.1)
+ websocket-driver (0.6.2)
websocket-extensions (>= 0.1.0)
- websocket-extensions (0.1.1)
+ websocket-extensions (0.1.2)
xpath (2.0.0)
nokogiri (~> 1.3)
autoprefixer-rails
bigdecimal (~> 1.1.0)
coffee-rails (~> 4.1.0)
- composite_primary_keys (~> 8.0.0)
+ composite_primary_keys (~> 8.1.0)
+ coveralls
dalli
deadlock_retry (>= 1.2.0)
dynamic_form
+ faraday
htmlentities
http_accept_language (~> 2.0.0)
httpclient
- iconv (= 0.1)
+ i18n-js (>= 3.0.0.rc10)
jquery-rails
+ jshint
json
jsonify-rails
kgio
konacha
libxml-ruby (>= 2.0.5)
+ logstasher
minitest (~> 5.1)
oauth-plugin (>= 0.5.1)
- open_id_authentication (>= 1.1.0)
- openstreetmap-i18n-js (>= 3.0.0.rc5.3)
+ omniauth
+ omniauth-facebook
+ omniauth-openid
+ omniauth-windowslive
+ openstreetmap-omniauth-google-oauth2 (>= 0.2.6.1)
paperclip (~> 4.0)
pg
poltergeist
psych
r2
rack-cors
- rails (= 4.2.0)
+ rails (= 4.2.4)
rails-i18n (~> 4.0.0)
redcarpet
rinku (>= 1.2.2)
- ruby-openid (>= 2.2.0)
+ rubocop
sanitize
sass-rails (~> 5.0)
soap4r-ruby1.9
+ sprockets (~> 2.12.3)
timecop
uglifier (>= 1.3.0)
validates_email_format_of (>= 1.5.1)
These instructions are designed for setting up The Rails Port for development and testing.
If you want to deploy the software for your own project, then see the notes at the end.
-You can install the software directly on your machine, which is the traditional and probably best-bupported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
+You can install the software directly on your machine, which is the traditional and probably best-supported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
These instructions are based on Ubuntu 12.04 LTS, which is the platform used by the OSMF servers.
The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
# "The Rails Port"
+[![Build Status](https://travis-ci.org/openstreetmap/openstreetmap-website.svg?branch=master)](https://travis-ci.org/openstreetmap/openstreetmap-website)
+[![Coverage Status](https://coveralls.io/repos/openstreetmap/openstreetmap-website/badge.svg?branch=master)](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
+
This is The Rails Port, the [Ruby on Rails](http://rubyonrails.org/)
application that powers the [OpenStreetMap](http://www.openstreetmap.org) website and API.
The software is also known as "openstreetmap-website".
```
vagrant ssh
cd /srv/openstreetmap-website/
-rails server
+rails server --binding=0.0.0.0
```
You edit the code on your computer using the code editor you are used to using, then through shared folders the code is updated on the VM instantly.
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
- config.vm.box = "precise64"
- config.vm.box_url = "http://files.vagrantup.com/precise64.box"
+ # use official ubuntu image for virtualbox
+ config.vm.provider "virtualbox" do |_, override|
+ override.vm.box = "ubuntu/trusty64"
+ override.vm.synced_folder ".", "/srv/openstreetmap-website"
+ end
+
+ # use third party image and NFS sharing for lxc
+ config.vm.provider "lxc" do |_, override|
+ override.vm.box = "sputnik13/trusty64"
+ override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
+ end
+
+ # use third party image and NFS sharing for libvirt
+ config.vm.provider "libvirt" do |_, override|
+ override.vm.box = "sputnik13/trusty64"
+ override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => "nfs"
+ end
+
+ # configure shared package cache if possible
+ if Vagrant.has_plugin?("vagrant-cachier")
+ config.cache.enable :apt
+ config.cache.scope = :box
+ end
# port forward for webrick on 3000
config.vm.network :forwarded_port, :guest => 3000, :host => 3000
- # set up synced folder to source in /srv/openstreetmap-website
- config.vm.synced_folder ".", "/srv/openstreetmap-website"
-
# provision using a simple shell script
config.vm.provision :shell, :path => "script/vagrant/setup/provision.sh"
end
end
folder 'bootstrap' do
- file 'bootstrap.tooltip.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v2.3.2/js/bootstrap-tooltip.js'
- file 'bootstrap.dropdown.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v2.3.2/js/bootstrap-dropdown.js'
+ file 'bootstrap.tooltip.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v3.3.2/js/tooltip.js'
+ file 'bootstrap.dropdown.js', 'https://raw.githubusercontent.com/twbs/bootstrap/v3.3.2/js/dropdown.js'
end
folder 'leaflet' do
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square70x70logo src="<%= image_path("mstile-70x70.png") %>"/>
+ <square150x150logo src="<%= image_path("mstile-150x150.png") %>"/>
+ <square310x310logo src="<%= image_path("mstile-310x310.png") %>"/>
+ <wide310x150logo src="<%= image_path("mstile-310x150.png") %>"/>
+ <TileColor>#00a300</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>
--- /dev/null
+{
+ "name": "OpenStreetMap",
+ "icons": [
+ {
+ "src": "<%= image_path("android-chrome-36x36.png").gsub("/", "\\/") %>",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "<%= image_path("android-chrome-48x48.png").gsub("/", "\\/") %>",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "<%= image_path("android-chrome-72x72.png").gsub("/", "\\/") %>",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "<%= image_path("android-chrome-96x96.png").gsub("/", "\\/") %>",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "<%= image_path("android-chrome-144x144.png").gsub("/", "\\/") %>",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "<%= image_path("android-chrome-192x192.png").gsub("/", "\\/") %>",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ]
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="320"
+ height="200"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ inkscape:export-filename="./sprite@2x.png"
+ inkscape:export-xdpi="180"
+ inkscape:export-ydpi="180"
+ sodipodi:docname="sprite.svg">
+ <defs
+ id="defs4">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4253">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 445.5,-52.21875 c -8.23506,3.941544 -15.68019,9.273939 -22.0625,15.65625 l 113.125,113.125 C 542.94481,70.18019 548.27721,62.73506 552.21875,54.5 L 445.5,-52.21875 z"
+ id="path4255"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4257">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 407.78125,-14.5 c -4.39728,9.187219 -7.07096,19.3435 -7.65625,30.0625 l 84.3125,84.3125 c 10.719,-0.58529 20.87528,-3.25897 30.0625,-7.65625 L 407.78125,-14.5 z"
+ id="path4259"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4261">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 423.4375,-36.5625 c -6.38231,6.382311 -11.71471,13.827444 -15.65625,22.0625 L 514.5,92.21875 c 8.23506,-3.94154 15.68019,-9.27394 22.0625,-15.65625 l -113.125,-113.125 z"
+ id="path4263"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4265">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 400.125,15.5625 C 400.04489,17.02967 400,18.51283 400,20 c 0,22.09139 8.96035,42.08535 23.4375,56.5625 C 437.91465,91.03965 457.90861,100 480,100 c 1.48717,0 2.97033,-0.04489 4.4375,-0.125 L 400.125,15.5625 z"
+ id="path4267"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4280">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 475.5625,-59.875 c -10.719,0.585293 -20.87528,3.258972 -30.0625,7.65625 L 552.21875,54.5 c 4.39728,-9.18722 7.07096,-19.3435 7.65625,-30.0625 L 475.5625,-59.875 z"
+ id="path4282"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4295">
+ <path
+ style="color:#000000;fill:#555555;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 480,-60 c -1.48717,0 -2.97033,0.04489 -4.4375,0.125 L 559.875,24.4375 C 559.95511,22.97033 560,21.48717 560,20 560,-2.09139 551.03965,-22.085347 536.5625,-36.5625 522.08535,-51.039653 502.09139,-60 480,-60 z"
+ id="path4297"
+ inkscape:connector-curvature="0" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4864">
+ <rect
+ style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect4866"
+ width="420"
+ height="160"
+ x="110"
+ y="812.36218" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5076">
+ <rect
+ y="785.52893"
+ x="39.999992"
+ height="213.3333"
+ width="559.99988"
+ id="rect5078"
+ style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3009">
+ <rect
+ y="732.86218"
+ x="0"
+ height="320"
+ width="640"
+ id="rect3011"
+ style="color:#000000;fill:#222b30;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath5092">
+ <rect
+ style="color:#000000;fill:#202020;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect5094"
+ width="420"
+ height="160"
+ x="30"
+ y="852.36218" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8177596"
+ inkscape:cx="119.20742"
+ inkscape:cy="107.0188"
+ inkscape:document-units="px"
+ inkscape:current-layer="svg2"
+ showgrid="true"
+ showguides="false"
+ inkscape:guide-bbox="true"
+ showborder="true"
+ width="4212.99px"
+ inkscape:window-width="1242"
+ inkscape:window-height="760"
+ inkscape:window-x="51"
+ inkscape:window-y="189"
+ inkscape:window-maximized="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2985"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="gray"
+ style="display:inline"
+ transform="translate(0,20)" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="sprite"
+ style="display:inline"
+ transform="translate(0,20)">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.98000004;color:#000000;fill:#7ec95c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path4499"
+ sodipodi:cx="220"
+ sodipodi:cy="20"
+ sodipodi:rx="15"
+ sodipodi:ry="15"
+ d="m 235,20 c 0,8.284271 -6.71573,15 -15,15 -8.28427,0 -15,-6.715729 -15,-15 0,-8.284271 6.71573,-15 15,-15 8.28427,0 15,6.715729 15,15 z"
+ transform="translate(0,-20)" />
+ <path
+ style="opacity:0.98000004;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 215.5,-6 214,-4.5 218.5,0 214,4.5 215.5,6 220,1.5 224.5,6 226,4.5 221.5,0 226,-4.5 224.5,-6 220,-1.5 215.5,-6 z"
+ id="path3965"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:0.98000004;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 303,-6 -1,1 0,3 -6,0 -1,1 0,2 1,1 6,0 0,3 1,1 5,-6 z"
+ id="path3921"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc" />
+ <g
+ transform="translate(-260,-1042.3622)"
+ id="g7110">
+ <path
+ transform="matrix(0.86666662,0,0,0.86666662,54.000012,588.69555)"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ sodipodi:ry="15"
+ sodipodi:rx="15"
+ sodipodi:cy="610"
+ sodipodi:cx="255"
+ id="path15441"
+ style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text15443"
+ y="1123.7971"
+ x="281.65521"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:125%;letter-spacing:0px;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:#c0c0c0;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Helvetica Neue;-inkscape-font-specification:Helvetica Neue Bold"
+ xml:space="preserve"><tspan
+ y="1123.7971"
+ x="281.65521"
+ id="tspan15445"
+ sodipodi:role="line">C</tspan></text>
+ </g>
+ <g
+ transform="translate(-260,-1722.3623)"
+ id="g7115">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path15563"
+ sodipodi:cx="255"
+ sodipodi:cy="610"
+ sodipodi:rx="15"
+ sodipodi:ry="15"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ transform="matrix(0.86666662,0,0,0.86666662,54.000012,1308.6956)" />
+ <rect
+ ry="2"
+ rx="2"
+ transform="matrix(0,-1,1,0,0,0)"
+ style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect11874-2"
+ width="12"
+ height="4"
+ x="-1843.3622"
+ y="273" />
+ <rect
+ y="1835.3622"
+ x="269.00009"
+ height="4.0002432"
+ width="12"
+ id="rect15609"
+ style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ rx="2.0001216"
+ ry="2.0001216" />
+ </g>
+ <g
+ transform="translate(-260,-2012.3623)"
+ id="g7120">
+ <path
+ transform="matrix(0.86666662,0,0,0.86666662,54.000012,1638.6956)"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ sodipodi:ry="15"
+ sodipodi:rx="15"
+ sodipodi:cy="610"
+ sodipodi:cx="255"
+ id="path15611"
+ style="color:#000000;fill:none;stroke:#c55151;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <rect
+ y="1725.0107"
+ x="-1344.1022"
+ height="4"
+ width="12"
+ id="rect15631"
+ style="color:#000000;fill:#c55151;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+ rx="2"
+ ry="2" />
+ <rect
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
+ ry="2.0001216"
+ rx="2.0001216"
+ style="color:#000000;fill:#c55151;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect15633"
+ width="12"
+ height="4.0002432"
+ x="1721.0109"
+ y="1336.1022" />
+ </g>
+ <g
+ transform="translate(-260,-772.36218)"
+ id="g6944">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path6661"
+ sodipodi:cx="255"
+ sodipodi:cy="610"
+ sodipodi:rx="15"
+ sodipodi:ry="15"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ transform="matrix(0.86666662,0,0,0.86666662,54.000012,238.69555)" />
+ <path
+ sodipodi:nodetypes="csssc"
+ inkscape:connector-curvature="0"
+ id="path6667"
+ d="m 275,774.36218 c 0,0 5,-4.5199 5,-8 0,-3 -2,-5 -5,-5 -3,0 -5,2 -5,5 0,3.4801 5,8 5,8 z"
+ style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <g
+ transform="translate(-260,-872.36219)"
+ id="g6940">
+ <path
+ transform="matrix(0.86666662,0,0,0.86666662,54.000012,378.69555)"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ sodipodi:ry="15"
+ sodipodi:rx="15"
+ sodipodi:cy="610"
+ sodipodi:cx="255"
+ id="path6737"
+ style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:connector-curvature="0"
+ id="path6753"
+ d="m 275,899.36218 -6,6 0,7 4,0 0,-4 4,0 0,4 4,0 0,-7 z"
+ style="color:#000000;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <image
+ y="-9"
+ x="250"
+ id="image9767"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJysvHmwbcdV5vlbmbmHM9zpvfsGzXoanmbZkjVhbDwbbOgyUAbbVNMUFAEN3TRUBx1dRFMVQQ/V 3UFHQAdURVENXU10ELZMgxk84kFlW7Kt0ZY1y7I16413vuecPWTm6j9y73Pfs2TZhtrSfXc45+yd O79ca33rWyu3ANy/djuv2/8+7j/9YVHhgCjLKkRRVVUJiraCehVpQSupZHrT+e/j2497T37IIYAS bj74fn3ZG/4THo9vfgYrToJG6xW9duWtoX/t08//2XXb9cZSJdOTC0tLs+2T6/WLD36zOlAuT3/h J/4P/+3n+pcf/i/MxZddagejQRgWg/jjF/8aAHcd+3/5wXN+9j/ZmD//+F9x6NACIFZE5Irlt5w1 lsc37tgH3IjwC6JcoegvXLny1gf/IdcUgPvWbuem/Qmw+0/f/usq8r8J2qJSq+pMYUtEtxXZAH1R lGcUeRb0aVE5oejGzQffv3Hmie89+UGnKlFV462HP8A9xz4EVrnl4Af+3oN9fPOzCMaIICAcXXrz HNQvnfhgNvNyESrvEWN+ZbfZPrI5PbXr2+ZEaMKx6OOxYlw+nRfZw6r6TZtnawuL46137/vP10WG 84mO1dfkzrUHbeHygKK3Hv4Ad5/4ILce+vuNW1W5++m/kBijLCwumfOX3+lXcpm//sTmZ/epymUg bxXhPapyHcJIVAH+2ytW3vJ7AI9tfJqrVt7xfV9fAO4//WEA87rVn473rX34B0X1b0D2qYKigCIC qICAAmkA4lX1GUUeQPQronovwtM3H/jAi/0F7j31IYlBjXluEm6+5RcBuP/23+d17/uN7zq4Jzbv AEEAEcSMOezPXbpy/vpP/fkl/P6PfvDcY9PT125VOz+myD8yxlyEQtPUnNx6gd1qmywrcEWGsYJY QcCrj8dD4x+NPj4Q23A/wuNr+e7z/+LG39vqz/+VEx+06XYl3nro/d/zpD6y9ikQRBXjW89rD/9o OPP1x9Y/vSriLkW4ReBdqrwBZAHRdLuaphr0HuA9Vy6/5fjjG3dz5cqt3/MY+mO+lO5f+7C8bv9P K8B9pz/8L1H9HxVIFwVVQUQ7cNPHNIGcBqMKoo0oX1HkE4J+EeSRmw++f7O/xt3HP2hQjbee8zMA PLr5aaxYrlh6K49tfhrEICoipP+vWHpz/PYBP7F1xyIqF4IeAW6yxr51q5nctlFtO0TQEAhtQCK6 4zdlJ24hxmCMIYaAbz0SFY1KjCFNJmAze2x5vHTHodH+T47d8O4bDr73yf6a9xz/U5TCiGi8pbPk 0/W3WC0uAeCh9U90NiCIiFyz74dfNu5P3f8nF1x45OKLsjy7IYbwjhh5E7AIIALaAdvNcf+TivKj V6685RPfN7LfDnAC9nZz0+r74r2nPnwt6J8jemVaSKKIosgexqra3ROoIqId6PM/bYF+SpVPk5mv 3Lr/fQ/31/mK/o2YEzNdLFc7D4Fctfz2V4zZj219bp9ROU/gPIWjCDeIyg8oeoVIGv5WM2Gz3iG0 gdh6tdaSFQV1nLFRn5LaVxrrIMF7NKiKIDbPsLlDUawYxtmQlWKRYVYCPKKiH0X5oiAP3Hr4A8f6 8Xzhmf9HNEZdXjqIs47go1y/+u6Xjf2RjU+tCOZ8a+yRpq5vqKv6jda6m621i85luMwBgqqi2sEr cqbRSDIa/uCq5bf8NwCPr3+WK/e97R8EMDetplh87+kP/U8Cv412Fgr0i0sVNE2unAGuqorI3K0n sLEgXp8wd538KEY+Of2JX/r8D0nZvtJgHp180po2vwCR81C5UOByRK9GuUZErlbUSB8mVDFi8OpZ q7bZmU40toGsyMTmWZofAie2X2B7ewMi2MyRD3IRY1Q1oqpSuFz3lUss5WOxGCLar2dAWoU7EPm0 gS/ffPDWL4kcecWF+Iz/woHZpL5YVS9GOQpcA/Ia4GpBiCHSNC0xRIwxWGOw1qnLM0QkGYwqPcg9 z1DlMdA3XLXylvXvC9lXAjgBe7vcvPo+vffUh94I8iGEc0E7t5zG0IGLqEoXjJPlpnlRVFEQRMAJ 5nSNuec04ejCerx+5W/lZPXXxXDprmG+UAb1F5Es9EIVLhWRSwW5HLhwPiiVjgPQLx1EBIPojq84 ubOGrxvyssBkVtJSM2iMHF97np16k3I4xFiDoml5qDJ0Aw4M9zHOBqCawEWl9wzpFtJXltkXijL7 KFJ/5sr88BfhDVuweVXFc9dsMrk6Eq8Grg4xHo2BdL6ohKjEEFHt7gO0bVqmVYWIkNsMY4y4Ildj TGfB3W2DiGoDvPvKlbd8FuCR9c9wzb63f88Au1dAXAFuPvD+L957+vZPAP+sAxdVRKWLFWhv0smf 9JOv2jlrUUzCgpemaGnR1WIfE/9zMZOf9FrfGXSQgRwBvVgR299Vd9Z+irvrCNI5E8GIALPQyNZs G183uDzHZDZxARDVSFu1FNmAkHtistieNMo4G3JwuJ+BK4ka6ZeOiGCMUWMF66xYawhtw/qptfNf fPbUf3n8xbWf/71HX/zcief/9enVgyvXLe1beK1zFkGwzpJljtF4wMq+RVb2L3LOeascPm9V8yIn +Ci+DTINkSpr8T5SBs9AC/w0iHGWvCgwyYq7WScX4R3AZwEM5nsG9xUB7l10d3xSVD8ADFVRFZEe 3B7GObh97Eiz1MECRFU5PkNXcnQ5F5qIwkLU8K6gHiuuZ4zIGeB2RC6dVToCQzKuJnimvmbiK2Z1 hTEGl7seXAB8nTKf4XBMXc0IoQJjUZShKzk03E/pSoImgmtEMNbgMkPUINV0yovPnNZvPPIiz3/r hJx8aZOmMowX9xej0aF3HTrnQlQN2+sGYywhBtqmIfiWGNc0hBfx7USM8aweWpJLj57PFddczDmX HaDOPK0JBBOZCeSuIFeL94FZOyErcrI860wYVHn9o5ufya9efnuTM/iHAXzmIehngC+o8iMqHct6 RXC7d3cj6jg2IMhOK9QBXcrQzKjUERGRqJE2NBhn59dTSaxiHgKTQSEYokaq0FCFhto3tJoYscZI VmSc4b8BiD5gM4fLHFJJl+xFMuNYHaycBa7LLM4a2rbmhWdO8+hXn+Hh+5/lxIvbkmcr7D9wIUev uk0vvuQIBw/ul+XlRZaXFxkMBmSZwzmrIUbquqaqatne3pGN9U3W1jZ47tkXeO7pp7nrjme545Nf Y2G14Mi153LdrUc5/5LDRIVKawZFSZ7l1HVNUzWE1ksxKNUYI6BHiOYI8MSl+37gHwbwmUTrptX3 b9578kN3IfIjKEZEVbukSKJ0kHQMq8/h6KxZEBVUjs9g4NCVAto5AqpRxYdGc1uQHIPOCUGfhXUu it12yqSdUQeP14CqirVO0YhGRcxZbks0qorprBKDNYktG4TFbCjjbKBRI2KEosgIvuGZbzzP/Xc9 KV/9yre0nmZccPG1vPWHr+OKq49y8ZHzOXhglUGeSYytavCoBjQm167aImJkWGQaFqwePLSAsRdh XUEMytr6Bk9/6zl54rGn9ImHHuGrn3uM+z73OEdfeyE3v/UaLr/qInG50UwzjDW0bUtd18wmU8pB iXVuAZHXAk98X+i+EsA3rb6P+07ezk0H39fNsnwe5WkRPaK9x4wiHZHqDO7bwO2AwYjIiRk6sMSV HNqY3G9n7TF6CbHBmjxN1J5jT29DqHzNWrVFHRqs2ASaMcTgJXiPyZLb1XnYFmKM6eMm/SUzeYqR YhjnQwQRmxmyIuP0idPc+akH+NJnniD4Mde+9q1yw223cNV1Rzn/nENkAr6eEustJrPEvNNY57lC 50qFQJQ2tH00RwBjDMMy54Ybr+C1r7tOTp5+E9/8xjN87csPcP9XvsDDd/8NN7/xKn78vW+TI5ec jzTp5o211FXFbDKjHJSLWZFfB9wO8PUTn+D6Q+/6+wEMzMEFEJUvI/HrCkeSd+5IaIeU6jw0z2Og omCMyMTDxGu8YASlRSYeFZljGDVoGxqMSTlhH4eZYyWqREKy2nl6hESJwWvwAVtk3aLqEnQRUUmQ p1EKzmSImMRYTCblIFc18PD9T/GRP/2PvPD0lBtueRNvedc75aprL2dlcaTtbMJ08wS2Y9FdvrqX SvQQ906pCzs+eu15CAISQYKnaSoREV0Y5Nxw81UcvfYyXv+2N/CVO+7irs99Sp64///mx37qh/TN P3wLo/GQatYg5YCaSqpZJVH1NT0mx16Yp+Xf9XhZmtQf9578LDcfTEn1Pac++K9QfucMcKWf7DPB 7b+LCJoJ5ukJ8o1t4jXLxPOHSBU6R6ydThOxJmOQj5GORPcTJh2tUmC72WWj3iVoxIrBiOAbT2gD xaBETM/9+3RKaKsm5b1FQdVMODk5hrVw9OBFGG+54+P38bEP3cPyyhF+7Kd+mptefyOrK2N8NcHX MzRGgsb5OQ0Gw9497jHytK4VxUePjwEx0pGHve9GDMYmDxRjpAWkHKLB8dTDT/Px/++vePRrX+aW Nx7l/T//bi48ci6zSYX3kbqqaerq4clk+81vvuZn175ndHk1kiUv7f2scrcoL6B6vopEwM6T8jPy 3sSROhs0IhyfoblBVwuljX0mK/1bQDRoxMdWnDUJ3m7hK52YgdHFfCRWjG7UO9KoJ3gITas2z5JL SZHjzBSZGAMSRVNeazVzTvIFw/MvneSODz6g99/5PDe/4R3y3p/7ABdfdFi1mjBZO5HWihGCRo3e S4xRrbOiYvCqoFEFwYgRBUIMqighBmmjT0MJXeYuabV3qRcmWDXGYK2RDGF3e00bUS5/zYXyq5f/ Bnd87Dr+9vYP6jNP/bH8wq/9hN5027UymzWqmgvovrrOrwU+//0A/B0t+MzjvhMfWlLlI4q+BRGP quvFjnlirh1JEkENEBT7uePoakG49QAyaVOtotMxz/x8ZnPKbNgtmF5UYc62TGcBTfRsNDts7GwR Gs9gPEwEq7f6TpgA8FUSy/KyBFGmZpPnvvUin/rj+9h+MePHf+Zn+ZEf/2FWFgqayRZtUxNCRGPA pHiKD54YAsYYsizDGkvVVsQYKbMCI5ba13MX3vqUmkWNhBC79bYXc4yxCWhrsNZhjGGnnVBFz9Li AUq3yCMPPMmf/dEfs376m/zSb/wkb3zb62jbQNv4KsbwL65Zffv/+f0A/KpZ8y/+9/8YgJsOvX9L 4YlORjMqvYGdBa52NowaQY5XkBnihSPFdqarOhfDursHVULw6qNXjX3OlcxQjKixAgaNKA6jYy10 QEY+yNNC6qOjRpSYBA0UW1gNwRN8q4NxwfGnNvQvf/8LOjs15pd/8zd57z95D0sFOl0/pW1V4b0n xEDUmIQOY0BUjTMEDQqqRZbjnEONghXNc6fWWZxzFHmByyx5lmmR5RgraqzBiFGNqjFGgg+0bUtT N1rVtbZtS04GIbK2/hJb0+N6zc1H+Y1/9Vt60SU38of/++366Y9+SfPCaZa70hhzbY/Nkxuf+4cD /KkP3zX/WVUfUJggYvRscHUulPe0w4rKRo2s18jJCjlVKYVBR07VpUtq1O4kXbmKiLGigmiMkaZt qKsZ1Wym1axiNpvqzu4OoWk5tLif1fGKxtZrVVVoinvaE6uekGFQlxueffKY/sUffJ6sPZdf/x9+ i7e/443q/FSnu5v40EJSXzVoS9AWaw1FliWAnFGTGVQjmXNkWaZqUhpWZAUusyoWLfMc6wxiYVCU OhoMGRSFusxgbJrpiGqMqiEEfNNS1ZXGENQEaJuG3Z0N1taf1QMXLPCrv/XP9dob3sQf/d5H+Lu/ vasty4yiyK76wiMfygGOrrz1ewL4O8VgAXj+6ePQWVvTtPdmRfY8IleiGgHHnEt34HaFAIKiB0r0 VIX51k6KxUsZui8nHijRpQwQjFfRjkS0VUuRdy4uKjF2KUm3jqy15EWOyzIyl2EaI5sNzHyNb1tc npHnOSIQE3uW4eKAY0+f4vY/+Du0XuLXfuu/47bbbqDd3ZC6niHIXPhPPkb7YoBkWcYkTFP+3Mmz mXGMi6FE/NxTLBWLRA2JkBnFxyCZyShsTuMbRFMuLlGJEdGgxAiqEW3TQg/e49sWjSoalVPhOfbv P49f+s3/mj/6XeXf/95fysLikB96203nHr36kuuB+74ndAH7Cn+TM76b7kvX13bW3vjOG/8zES5B NZCyTEluOemYiR2pSozo2Ek8soAeLJCgyolK5GStbq0Rs9agtafGaxNa2rqR4AM9MTVGJM9zirKk KArNi1zyPFfjbLeYIoAaFYyIZNYRfNC2aRArYozBOsNst9a//pPPy6lng/7yb/5z+YEfuJFmd4PZ bKLWOqwxEqKncJm6zNJELwDDfMCwHCogEdXMOlkulxjlQwpXaGYts1BJExtymysCUz+VNjaoJOLl Yyteg6p0fEu6oZteCOj8TYS2bWVazfAhdJlnlLqd6tLKolxz/Y089diz3PnZL5oLLz1cXHPeZY/8 z7/zh/cBzPQR/pff+bevCvC3k6wzwRXA5HlG07QtwJde/LN/Y6351SSEJ8FYkV6GTklNF2HViGDP EA9VkLWK5ok15HRDhpVqpOqvXSJfGeLEkWc5mc16wVNfcXidAirGqIZIPa0IGokGduspO/WuZINc s7zgc39+L3f+9eP8k1/6FX78J95NmG0xrSYSNeooH5BZR+1rxoMRkch2syNDW+pCMSZzOSEGtuot 6lAzdiPEiHgN2oaWmZ/RxhYjBkEIGvqsjp5l9Devqsk6U2ZIDJEYlOADGmEym8n67qZGIkVZkBcF /QI/sHohx5/Z4Pd/51/ryr7a/Mpv/tSfvP7y9/7iq6J6xvFKMXgOLiBt600PfFM1X1fVnST5a9Su YJ3CqHb5YbpLiYq0EXy606iR3cIzvWZM+47DcHSJ8bZhYeZwKd0hhrCnhGmkJ07zQh6x08EVDQGx QjEqsdbiVFguxgxcgW8bHr37m3zl44/yxre/i3e8621oPSG2LZl1GKAJNcYYlkaLOGtp1ZO8hyUQ 2Wl22W0meA00vmVtus7pap31aoPtZhsfPYIkxtxp2p3gTd/a1P9BBMSAGMVYsM5gM8FmBpsZggSC JsbeVDX1rKKpGurZjLW1Fzl04T553y/8fDh1suXf/O6HrlDVecXhutfd/H0DfNbRqTcOYP309kOq nE5Dl6i9NaGSkBVJeW4yta65Qwgq041dCVUrC4OxDBdHoheNCauF6EYt+CiAhBgkxCB98bQra6Rz zMtJ9GeVJEki5bAUmznRqDIuBuycmsnn/vxeueDCq+U9H/jHMsxF2mYmGBFnDc4ZCQSptZZGG5n4 qdS+kqiRiZ/Ier0p282O7LYTadpGRI1Yl4kRixUr1jgRMd1IVKJG6cqRoprGHTSKJk1NIlE6+VEy l0mWWTFWxOVWxCLReIwTEWskhChN3UhdVdLUrUynE9nYPMZrbrvWvPEdP8rX73/uqtf9wA1ndd9d 97qbviN+rxSD4Wwr7r+8sTK95U3X/6Qxcp6iAcFK74u0y2HneS70BfPZZEbwnvHCAtY5og9gBNms YaNGzx8hziAKxhrE2Lk3Dt7T1DV1VadKS90QY+qKSKlMJ4hYi3UOay13feJhnnpkg/f+03/Ktdce pdpeRyUpTa22RIlYawkSaGNLE1o0xO7afQ7eF+rTudPf+1VmkjKFmU+VMQaFua8ZuREr5UoiW7El aKSwOUVXXEGgdAVIpA1JI1CU2DUKaIydxm0I0ZMVmVx85Ki+9OyLowfuuT+f7Gz/FRBOHnuJQ+ee y8ljL/FKx/dCssRYI6raPnz/U+3P/fp73mScXJf8UM9y53Wg+Um05xJRmU0m5IkwERORQEuDbDWY F6foxQtQWAiJPddVxWw6pWlqvPdde06aROmkvrqq8G2LzRzSNdQZZzj27CYf//CXueaGH+QdP/ZO tNqB6PHqiXgigVRpshAVjSEVKkyqBwOE4AkhJAbdgasxAZebLBUWNGDEMMrGHBoeYJSN8NETNDBw A1bL/Z2sanHGUvkZQcNcurTGkllHVI8YyJzDSErHQgjpK2USIIJvajmwejAOh0vm6SeevGIynTw3 m+x+FeDQOedy6NzzXhHkV60HsxdVTPfe2NT+kaLIW0WzlC3NTfhsiLv6/Ww6xVhLlmepi7FbpYoI Q6diDHGzYhogVA3OZRRlIS5zKiJYa7Euw1o798/Be2lbr23Tsru9TTkYYq1DVfnyHV8X1QV9w9vf RJFBmMwQZ1N5TwMYBJVEX7voLr23aIOkkoLibLpm0ECIAYNhX7kiS8WCBo2cmp5m0k7JTcZCvkDU KJN2ppWvGboRhS04NTuNoizkYyZ2IrvtrgKUtiSi7LYTfGgwBilzp0ZKnBicMUxnNU3TUqtirRFs prvbp+31N10XbnvzW+2zT3/zA2vwF8DmQw/c9x1j8SsB3GMUe9N0ztKEqICujA4eGBRFph0lVPr4 k1SkSEQ1ENPbJbRd4d25RKLo5Dsf0YGTNlfqY1swXiQrc5x1lIMSl2XzvoGUhsV5Y4FYwyAfSjmI 7O7ssrO1w3Bcsn6i5tGvPcs1N7xBLr78CNV0i2HuCMETNaASMGrQqBIJIIIzjsxkePU00iKC7CuX WRms4EPLiekp6lizmC+wXC7RhkaMGPaXK9S+ZqveQlFWymWcsZIWb0TEMHADmthixFLaIW0IyRGr Uoea9dkGAhQ2S7HdCmWZYUSS1ZuGGBQbBQIynWwzXthnbn7D67nvS3e+aTqZ/MTayeP/4WzL+ntY cFO3EQi//bu/dvGwHL4hsxmqtAoZfV1lXkKLfZogUSMyztU6S55n3UR3rNioVFlUnxnK2sFonFxk SIWLEHwXyqVvWwHodF+kbRoFcJmjrmp2d3a5+wuPorogr7n1dSiNChHEggUrhjIbkLlMvAatfM3A lRwcrFLagvVmg9PVuiCCMVadGDI3wHXNArnNEETWZxtqrePAYJVBNmC92kCaXZaLRXHGEYnaJHWM 1F7UMMoGZMaJNU5VIyEGat9QhxqANnoxYjA9p3SQ5xbRgrYOaFRp20bFCJubp+Syqy6LN956m3vy sUd+jFQjnj70wL3fF8DaW29e5NrUTQvwI+9584+IlSu7+qyZT/m8iGAQTPrZCE1dU+ZDKYoiKUxW 5+XEpm0IAyOLFxbkOxFfrhBEiW1LE2d47+krEr302Hcdtk1DPasktAFjLFnumE2UJx9+gfMuuo7L rrocP9uQhSKjT6eHxYBxPiJ3BarI6dkaKkqrLQNTUtpyzhnWqw2pQ82hwQEykwGkMiAwLkZdRhjJ rUNMssYmtGTicMZKHWva2JCZrG+g61MpyUxG7Wf42M49R9CI1zAvtEWFQCBIwEvERIMJRnwbqCYT lpYOyjU3vJaLv3jZG5u6+qHTx4998jtZ6KulSZ31Ngp4IF9cHr1ThJGqhoQkSbrS2PUZB6IGjQSN GmjampjinsYuXosxRFXaqqUcj7RcXVSHI/OOMhtq5nLVqITQuXztI7Zo8J7ZzoR6UlHkuY4Wxoox 7Ex2eerxFzW0Q73sqqNYF7GiDPNSnbWIoIUt8BrYrrfJxOpCPtYm1BybHmer2VZnrGbGAkobPNN2 plEjuck1aKSK01S9V9HdttKIYsQh0WlmnBqBhXzI4eEBnDG6Xq/jjNP95T58DFS+RlGtfaXb9TYz XxE1ap9Xmq7OjaAYRRyKg+girba0odUYgnrf6s72ulxyxWVcdsVVB1T19T1g19348jj83fLgVN0E Pnr3n9zinH1t54g7RUNJAnSX1PSZBJxR8024dk0uoiitbwnB46yVWIoEE4lbNYqK11aC+nnZTwSx iSXLZGdC41tk4KhdlK0wlXW/w0asePSxZ2Q4XJUrr7uG3ekmSgBBMucSSenuRlXxGqS0hYDQhJYm NGKNFSM2WRJKExppYkvuciltQdsKsyaQm6EUMhajjrYe4MJhOVReIKUbEaNjZFbIdSw79YyTs1Oy 0WywWW/RRk8bWjldrclOs4OPnqhRtGti0bkoImKNwTkrWe7IC4dkUGsjbWgl+CjT3W0OHFrVo1df zb79q29YOXDwgjRZLxc+XjUGdzJlBDjn/INvFSNHulhrtIf/rMXQsyB6kgVdi29q7UFCCNrWDVmR i0SIuWByUbYb4sFCQvT0DXIiqIiRGKLubu/ILDba5pG62RHvPb4NNG2r0gzYPFXJOav7OXTeYdY3 n2VYFhoJ4sSqESNBgxamIJooQQPOZBhJt9HEVgBKV1KFClAduoFk1mlhMzlvfI6e2oqc3IpyeKlg 3yBnUnvdnSkxZrIzE3ZnLXWnp7dxLKJWd/1UMJWK9agGmbYzal8zlzT7dpHONnoRULos01jRLLNo UKnV08aWLGbatq007UwuvPQIFx659DWb6+vXAc8DPHT/2bH4VV1006Q2yIPnrJR5kd8KoBp9Z73d HhbdE6CZl4nVd8Vva21XxEvnjDHiQ4t1FlFUS6OaG2S7JWjQoF7ng5JUCJ7s7LLZ7uqWmTLxM2rf 4GPQEFP30NbJCcYP9Zzzz9WgNYrHWiEm2QABDaR8sw4NIXpNDduBUV6yVIzVGaur5T72l/vJzZDl bFWtlswalDDEScGkDrywPtMXN6Z6fKui9ikkbU5rXZ/UTGrPtPF4LypxhGn3q2kPoO0iVas0cdbN lelISycRzWWEfm8h0G3DM9ZgM0uWGY0EbaMnxqjT3W0On3cOh887b18I4XKA1vvvz4K7AfCRO/+v m4yRK/pphzMqDPPNS3vmLIYkUKAYayR2SzSq4r1POa0RNERhYNBCMOue2LZE9XTVBASR2XTKTjOh cp5I7MpvlqgqGj2iwsbxbQb5MuddeBHVNIAfQRhK9CXg0OCoPAxMzkKWkUsmVR0IzYBhPsLpAruz SFDwfkCorZxuQHSGjyk9C2ktUbVeumaR1LSpe7MyDypEoiYVL4aMqlozgO4sAAAgAElEQVSkwaDG C1KlioOavc+kpAORZMMi9P+ASdp1jE5iCPjoyWKgrqa6/8B5cvDwOWR5dhTg8Qe/+r0D/KZ33sLn /+4eAMaLw5tEONIJGzI3x84F96658zAKEGJIsoQRYoxqjEiMUZu6lqIs0j6hEFNdamAFUeJOpWGY GuONMVTTGXVTq8/Tjk/RtLm3bxaIUZFoZLIxoygP6uqhc/FVKTQWCUOc5hpakdCq+hhlVy3jwjFV dFIL2u6T3VaYzSpNuXzfC5ZRx6hK30c2F6D6m2R+o9o3LKj4CBAxSZWXqKo+dqJtGKH1uSouQr4m uXWg0qdUXf0GUhey7vVzIRgjWCsanRDbKIGYauDOsnroICv79l/cNO25G6dOvNRb3XcFuAcXwFpz HWBUtWs4Zt4c179H56lqsuwutdF+KhTRTv5TMV2pURRCRIdOQ6bEzRmMUvdhXddazWaY0hIjGuuI NbY/n6im6lPGQKfbDbkIS8v7mM18z6UIUfFBNcbE+qo2UvtmTrhEpAsZe5XJ+TT3ojr0qX6vtNN1 FnWrWtPORSOMSqMIVE3shSFyZ7TMYLfyMqsztD2X3BpdHNT4EEmNemnEPbFUFU34dj0URsRaQ3SK RtWogdT1UrG4vMT+AwcPv/TCC/uBl75d7/iu1aR7nv/LC4CjyVqTwan0nG/vv7N/6zdz9a8J2unH LrNYa4n9roAQ0bEjGiWenmCswYeW2e6UsiwJDqq2SX3NHQKpfRc0RtQL2gpZXlCUw24jWQoHbYjJ xdKVMztBJnadBb1cKf12m94X9e+NmvTghGT6nAoLpeOc5YKVYZZWuyqjwrI8zFga5IwLhw9K1abr h16NowXNkPYAJpZk1pIbx1ka/nyVze2o70/DOIOxgooSCPi2YWl5maXllcOqcX/30bOOV7Tgvt8Z oCjL1wKXdcmR9DuQ+ov3w0lTeMYOh/Rvn0oRQsB7zyAfJredug7TvBeWOG3QnSmqS8wmM3LnxJUZ O9NNggasSXWRfqNbKqBHfONxtmQ4HqF0LT+k3t69UDKPjz2KEufj7+4oWTQRlaip8WJYWoaFpfWR 7ZknBBiXRvaPc5wRykzxMTKpA2VumTZRpnUgd4kcJxKmOKO0oVsmEgk+o24KBoOWzFjqML81ZO4a uqH2k2xEjJEUj1WTRhA8w+GQcjBYVmUh3evZhOg7uOgT85+M4WrQw9o7xzN8QM+b936bx+VudmVe zmvbBpdZjDWp3wrtShiCfHML3Zihl4yoJlMkKOV4yFqzzaStsGL26ucoSkjWIJ62adFgyfMcYyuy rCKEnBj7xcq8mHBWxya9RaZK1agDs/HK5rQhqjIuHMujjKoJ7MwSaSwzS4jK8c2aUWEZ5I7ap33A tY/sVC1l3m2xESFGaDXifZyPJUYhBEffL703hWeAe+bykx4LQa2gUdCQQHZ5hstcCZqn959tw68I sMjhM389mha4RtJDNOZb/84GuP9s/1r/SprEEDzWWdJmuZgoaGYwz+wij6wTLx1RXQhhtyIflKz5 bdaqrQ4QQx/SVdrkFKpV2NpH3DLgJ9jMYIwnL2e0XghR5m5u7nY1xcrcWayBJkRmTaTIDIPcEhUG mSEUjs1py+a0JUSlcJ3KpJEQIz4kq699+qwRYdZGWh/wqtRtJOreZCepcm8+EkeRvV9fNn9dCOo9 Yk92DBijqEnifNRInuc4lxkgfyUsXzVNevD0Ry8GLus6W+dX7ffzdjzv2yJXf/SPZtmLffNbtAKZ EXluV81DG4QLB1SXWprdHRoT2fJbsttMNQkee+BiGvBDZOsqka3Dyq5Dqm2Eh0mldsG4IDYLGqIS Qh9qdG49IiIxpjNmxtCYtE+9SW5YRqXV3BmsEXartFNheZiltA6k9lHzzGAkkbjWK42PtHUUBPVd TftsMOk7Y7RHy4h2mnMXqmBOsvrY0mdK9OUWAYxJlhzn53zV49X3B4tcCXr5mV5Zz/QBMvf5Z0Db x+AU63qBUiQRrWgi5Bbzwi7mwXWJ5w6J1y7Sbq8zrWbsZi1VU2O7ngnt3bJtIAxh6xbc9CKKYk2K 7Hn8cEpWJFULJDUtCuJDshone4PtmXXbTUzhUleGT5VDrBh86Jofu/1FPiRL7Xa+U/soWRtoO728 Dcq09rRBcTZ1/vsY556sx6vHLI0xYkyntc8Xw14Mnk+jyB6rke6JGSJgTN9uQfCeGIOqamrw1rNd wncROuIViJyjZ+CnnOVUzlY4gL2n7ege0grW2aRBW8iOzZAH1iQeKDVcu4gSaeuW7XZCayFFsE7j FEGNB7XIznWM5CCL5z8umBM6mWzjq5wsD7Rt6rCIIZPoHSGqhqg4azrSmCY59L1Fmqw2VZsCQQ0q Ik0wxGg0tXslsOo2oCo4IxJi1FmTJr2NyqRuadMzOKQNczyZP1cEOtae+D+aALaupd+JMXfMvZM7 Q+gQ7U6laeBpPqTfBiTeB2KIFUqT5v+7xOCHNz7GtSs/2oN5xRmrQl4Bz34482POXLuQ3fNAm1lm 1OQv7WK/vkNYyYnXr4ha8LOaKtS0EhFNz7vQNFjpnyags/MYcZCDh58mGxxjNonpUQAGYmzToxM0 p64WCN6iRPFRybuh74mldD0bgkhDXk6wNhU3JAoxOIIfio9pS2uq6fa7DFPyUDUBH1MaFnp1pPMQ /Yf69LAHOLH0ZIXGelzW4LvYvDeBfZti55uTSffnSf3VdMgawRjHbDKlrqsdhCmAsfYsgF4G8DXL VwFw74t/eTGqV8zjah8H2Wup60fVh5D5KAWMMRJjIlfGGiW3Yk+0ah/ckbgywL92GclFaT3et2nj tJ3zhz1RVoLGkEnWXKT7VrZkMF6jrnNCCEqs0RjEuoiGqNUkEEMhEBIwbdDcWXEmbfrfcylGEyHb lSyvOszBOMTYBnUVakpt6pGE6DREFZHUBNdG1aYNhDjvGZ0rWfR4qPSqRVJ4Iv1bVCSSZbUYicSo fRl1L4sTUfoVImc+w2ovm0uL1ahzuexsb7O7s3NClXUA586G9GVCR5MWAsZxtaLXz2sJ0nViSJS5 36Wjir3ykC4vUVXyskA10DQ1mhthvWL48K7I0OFvWIaRQ9sgqlFiCGhUrLXd8uxOm1aTmHYf46yU wWgndS0mnyVGRKI2jBZKYoiyfnpNrDNzJtpGldbvbYGJ2qtQKsY14rIqSTIqoioSY0qdMC15sSvl aB3rZhIVfICqDcyaIL38mFyoSP+kMJ0v/X57XgJjr9dbxLpWsnKS0qXUe3wmuAlhTWthnmnK3Iqk fyRF4XIp8pLNzQ02Tp96QeEUwNrx+VMkoSjOBniqXyfQtZsYuUJhdQ7c3Hh7q+0pdd+g3u/yS+Db 9EwqWgnKdo2957RGItNrRxrK9DCWvcZ2VWOMOuu6VZfAjerVqKXwF+h42GCziWrM1JiUY4oYogZd 3j9W8Jw+cYzMWawx5E40c4a69dr60I1Z52TW2CZtd0yD7l9GFWI0qijONToYbeLyHa2916rt3C2d rWqX7WtnwCnnT48tmT8/bC+5EIEsr3Cu6dqn6Y0kxdbeODsuK2fu4lRw4hhlQ903XNaV4bIaLKdP nOTkiRMvzHa2TgAcP3acf3Tt9WmEdX02wNtsM5Qb+Nj9/3YoIjf0hck5eJK8T3cD/UOrtJMwu99V 6cp02aBAtxril46rcYZ426pWeSTOml7i0+SkIqUtGLlSY4zqY1c1sZbVcr+OzQGyvFbrWgRDJIJB xRhVIiurizTNVI+98JyWZU6RG/LMUDhRHwPT2muIsStSABLVmKC90NaBvIdFr51HCFRqi1Nk5SZi AqhN6O3h0xlun7NKv07S8p9br8G6VovBbmfevamf2dtPVwNPr6kqIaZW26Eb6Eq5rMuDZZaLBZaG SzLZ3uHUiRPsbG9/A2jOveQSVznH3zz8dU52d3OWwx5RJsseFMshtvuNtals18dF3ZMNzjg6h7hn 2v1d50WGzqKEY7u4Gw/BaokcmxFNstxOVUc17dxbKQb4mBrBc+tYGYyk1APsZB7ragTLxM/YrnYY MZQsgxgdwa9SzY6zvbWWct0UyEW6NpjaB2wrFC71HWOCQOg8SHcLe0VZoqrErl02EDESGYy2MCYy myxJCBlCRPrCD3Pq3BHDvXxWNRJjosHFYFeyrJ6LHM5YnHE00fdP7xXOmEeDMHAl42zI0A2lsCXW OESN2nzAiRef4vSJ41vGmmcBhmVpDi4vxZM7O/xsl86cBfDJ5MZ5+9X/7KVPP/FHD1tr3+2sI8tz ybJcrbVixKiw97wEQLvy3XyGukqSEBV73pj60l01T66LW8k0WymkqRqstx3xTOs2amTBlZqPD9BG L4V1OGPY3h6rzWaS5402XuXUbINpPSMvnFpxzHYOycbpfYwWVtU3M46/9Lzs23+ItvGkjMKIatRZ EySqkqe9SZq6P4Noqstq2mKedOiuF7o3M41qxJhIMdhBTNBqskzbFpJU796rSr/9vSsppm2XMYqo CsVgQjnY6WKdEUVx4nToSiQ00pViu8QIscbqwJUyzkaUNseIVcGS9lMacVnB09/8Fs9+65uPOee+ CRja1ozzQjaGQ/3UdMpzqme76EvlXfxXv/1+A7Cxtnl3U9e7dV2xu7vD1taGbG5u6NbmOttbm7q7 s62TnV2muxN88BjTbTTU2HttCEFt7pTr9zEZBpX7TlHuqDZ47R8f2JFQ7dY7mXUMswJrjEZVbeoC l7Vqs5qtaqaTdpom1Cix3UesL1ArTi+46CIm2zt847FHKAeD+fmMETVGiKpaNUGndaBuQ//AFPXB a+MbqramaitqX2uIQbu42JNhjTEhmRdThgtr5MVUUVGNpou/2rNx3YtrQoxG82Kmw/EmxnhUDV0H kyJQ2pzFbMRCNtJxNtRxNmClWNSDg/3sL1Z04ApNlTRBxIiIUZcNdGtzwre+8Q2Ov/TSg7vbW09d esWVo2isiUQzzjMB5HrjXs6i7/y7rwJw6sXdB8ZLS3ePlxbJiwIA37bUTU3dVNR1RdPWNE3NZGeH yWTSUV6ZqyyqiX6W4wHxxn3sSo3ct4abKt4kktVrrckI6DopNTXQdyzGSEAJzHxDbksWywVys4iJ hxnmiwwHwnC0iG8jp46/SNs2qcdaUyrebWFCgdpHZo2nalua2FDHhiY0adtJTMpSnMdrnVfWpCMk qoLLaoYLa5TDbcREVA1nEJKOqAkxCnkxZbSwjnN1D+58rnv21Te6Z8ZSupJBNiQ3efeYr9RxaY3D GoczmQwGizz5xJM89djjUxF50EhojLWFOGt8FKNuYGyWs6nh5XuT1k5uSoxqPv7nX9j4mV9+9zVF mf+gdZasKLQoC8nLUvKykCzPxOU5LnMSY5CqmknbtpJlTtLj99jjDYrYcSHVAiLP7kh+upXZEphR JtZaaZtGQgxSlIUk1xYT3OokNotSFojJGpm2UXJbyiAbUDASna3KbOKkbWdSN7U4J7K9eYrx0oqc e/6F0jS1AOJjSt3mCZio5EUlxrR7DGdPsOmQ6rmw7r0uvfQhYkwQlzdirE9jDg6NqZdDEbE2SFbu yGC0Li5rhARunwxJp+acoWgguc2ltKU448SIEWPSTkZncpzJxUqmzubSqNWP/fXH5D9+6pP3tL79 DwcOnVOJiEElBjERROum1tg2+u0WLL4NQrcp7dSJjYeCD1vSO7w+J55/JSssyoLheETT1GxtbtK2 LTGG/jEMXY5rGC6PMdai2y2h8cQzCEWXCSAiWJOR2wFOlxiVGcPC0XqDwWElleuibcjKOlWobAaq 7D9wLs2s4anHHuqqV4linLXnVAAMMbg5mn2acqbMN89rNRUPet14/tRaNUCkKHcZLqwxXFhjMNqi HG4zHG0yWlhnOF7HumZu+b3N9ooF9KRVKFzJwA3JbYEzOZktyExBZnKsZBixahDJB2N9/ImnzNfu vYfdnZ0vqvK8da40xlhjxObOmEHuZN/BczHDoXy7BQtJ/LCAPXB4hatec8nNeZ5d0OnCPYHvaSP9 79ZaXJ5TzWb41pPl6Ql0kYjmBiYt+X0bmDqye80AXcnQNpBlGekhNobRYAFnCpzkOJMR/RjBYbIp W+0WdUg76hNZglJGTHYWaZsW31bp+cyh4eGv3sPJE8e5+NLLKYdD6qqZl8F7oG3myfJZN8t9pqB9 xWnOqs8MIXSg762AZITGKC6rcXlNlldkxQzrmm5xnyn6vfzITMYwGzF0w9TKaxzOpEcsGbHpAWz9 d+ukUhs/+pG/MZ/7+McfqmaTP9y3f2XLGJNpUleCCRq9EgejgdabGy+34DNAHvy7//XDz0x2pk+k Hioxfbp4VtrbhdsYozpndbwwVu9brWYzRNCYicadWvXO4+rXptretKLmgrH6KhDrqLktNXdDzW2p zhRqJdPuuVMavFVUtY2VttHPHyOQmExUa1WzHLUu16IY6Obmmj75xKM8+MB9+pEP/qk++ejXdTAY qLGiiVEn3UmjaPCuo7zzUNgh14uNpM43SQliT7i6oWns/4tBNUaNscsiRVXVdKRMzzq3IGrEqjVO ncm0zIY6LpZ0mI1wJldrrBox6VpIN16riUEjdjCOD379YXvnZz/L1ubGx6zhCedsIYhBMVHFRhGx RCOTdWMHY3k1gDNAj71w+tG2DTPZS9Gkv1uV/s47rT4EyfNciiKXpm4IFjG7Xsxdp4SJl/a2/RIP FlKaQgbZENFM1ItYY0WMkahBlCBzyTM6URVptZGgUWRvPRHTkhPnRKzNxGWFxBDlpReep229VNOp fPqjH5Hjx16QhYVFISYHlEixSAxWVK30ZLk31l6z6EXYhKl0Eo6ic5glrXNV0RhFY0RjkH79JxsQ MWJSHLU5zubibCbWZFK4UkbZSAqTS3chMYjYLns3iTGLNSb5kCzXkxvbfOajH+eJhx/6/9t78yDL rvM+7Pedc+76tn5Lb7MPBhjsIsHNJEXLkWQ7ZdmWFDmWSmVXJYqSUpKKbFWlKqn8EVfKScpluSqJ FVuuRCXFZkhx0wYSoCguEimABEGQIDDAAINZe2Z6lt77rXc5y5c/zr1vGiMAJEHJcSo8VW/6dffr N+/e3/m+862/76tFUXys118iBknUV8Y1gxfRbFqi0e2+zsiqwVUVuCGAqDvoiEffde+7ozhcnqtp b0fUBxcfOMi82gkClFaTGxZIXpwwcgP7gUXwIAZyA0ECUZhQkZfMzJCBL8JTUoKEb+AlAPmszZ7s ahcznfuQOBEcgwIJjqmNbNJFWRLKMoOQEvlsQttbN8HMvHnrJhrNJk4/9ChAEkZ72t9K0qCCEkL5 OmyuKQlQR5jvfDdXyQBRFd/E/Myu7KU5g7m3JogkpAgghW/sFj7BzLVajlUMRRJzcEmAhGCiig1P yMpylrDsSKvIfuEPPy//4Lc/Nt3a2PgnFNDTzUarRQTlM2PkCGyJ2TIJW2h2SRy+pYpWAMIP/9rj V2aT2TVRH0X1Nq56kzzU1Q6q4m6kJKk4hHh5HzzRZD+0TNyPiEpLqPUPORCYnLP1/iNflXunV8c5 SdYEFIiApCCy7Dk8bNWXTBAEDkkISSAiISQdPXk/Vg+fAADSWtMfPf579PyzT1OjmZIKFHnfGMRO kS7jA1rhQI7ep0/m1nRt7Va1K1Sb0lVMo8aoNtIqyUYlhZVEeLuFAhlQorylTL4AnERVpTGX20ox K0NkZ5acDe2Zb76kPv3xT2D96tqH97e3f3dl+VDkcaoGLhB7ifeqQIgkJhnHr/OD6a7ntTVdbm/s X7LWgoRX6VTdlnntsAcdVScVs3McJTEiLeF6IXgxZk/lT3VpsU90iwPBWhB8KU31XuRgrUCeJxxR jH6ScBIoSOHZHhIVsLMxW+spHKSUbK3hOE5w/J4H0FnoQ0rJWxu38Hsf+S2+9NrLaC90EAQhSDAD kq0Nwc7zIXoI7nhLNI/KzmuE5w5UXTdM9R/68PMdAwxgwIGdD37XpbyhDDlVKSvhC+5ICBYgFo4g DEGUDJExywKQObOeFrAs+dqNDfHJD38EZ1948Svj6ehX73n3/SNnbDDPWflPSSCQreZZyFgiisM3 VNESd9R0AEDe+9Cx5NSDxx4Lo6DD9eFS/0EtvvUOrn1fJSH2S9BIA4sxcSxBlmlOcgICO39uK6ng mCGEIJ8y9L+fDAeYjnsUhCUaMagRpEiCGK0wQcQ9mgxXKc99WtJaz0wzm02glO8Lnk2GZK3F7Zvr tL15CyfvPY3FlcPQZeFNJxKQsoRUuj5v7tyFmrav1t2VCUKe8Lp6rT8zKml+vSYkQFQXS+RpGxKV 1PYGBBNkwSRyJlEwRMEQlqBIkZASM2jKY4WtLKP/+7f+NX3u04+/euP62i8X0+nL3d5KgwghAAkm QbbSEYKsJRiyxllmF0jJb+YmqeoRAhBrF27mf/PnfuQDjVZyxDnnao3sVXJdf4G5KNbXyokELo2Y RproSIMhQFSVMBARwcFPKat2YRAG/uKFRVk0MBkPWBcJ5VmL81mbbNFiW/Rgiy7NxgPMpp1Kbiyc taR1iXw2hS4LBGHE2XRCushZkKD1tcu8v7uNex94iAZLK9BlDmuJhQCCoKjNq1p+uQpSVq55He+o VHElM1xZYAdv3lzWq85IQYIPgAsigiiZ5dhCFOzVs5KgOIBKI+ZI0MhlXMYBTTXzJ//Nx+grn3/C nX5o+V++8sJrHwWAXn+l4bUxJMHTzQmAWcKC2ZIxtmS2gZTuoIrmA19t9XAA6Oa1za3x/uSqpz6r rJQ7rvD8qfcviIUQLIWA7QaYno7hro9ZvjIElGDU0wArMXHsWBsNTw4u2UeNgcm4i2zahhCWpdRw DC51gCKLMR4tYDzqsrWqrh6BUiFHYcyNVhtCKexs3UJZzLjdaGKx2+NWo4nnnv4yPvp//G9Yv3qB F3oLHAQBtI5hTVw7A96Q4yr04hXSnQyw96UZdZkpze8Xz5E9kOpjMIcyQqISCCFBTCwnluXQQDCB 2hHTQsyiHUM1ImjpsFuMWYcBJjPLH/8/P4ovf/Yz+Omf/6D4Z7/xDwc1UBKAP/o9I64TDvX0DK5B q7bbG0nwQWtaVa+hH/2J951YPtR/j5QyAMAkRGUj+JL7ylggYpA2hsq8QDHLQIOEwjgieW5IiCXx UkywfviUdY5sabx2F5KiOCQhLE3HfexuHYMQltrdDer0b1Gnd5uanS1Km7sUxVMIacjagJwNiYQ3 1qRQVJY5Lpx7AWsXXiLWJcVBSIkKKA4jcs7RtbXLuLV+lZZXDtPq0WPErMgaTYEqK5H1ZsY8lFh9 9ZbSnWIT9oZ2bfDX4l1n1YhAlKiEGkGDhJBERBAzR2LqiNKA0IlJhAEpqYhAyHSB/WJCqtGmvd2M Pvzrv0VPfeFJ+ts/+278zf/wxzHcbYrZ8N2/8/KLn83b7UaswlCBhMfHHxVOsHDOwTCsdcRWCeXe jAitJj+rQRYPP3Zq4fQjx98XRKpljHHOWjLaUFkWrEsNU2qqvrLWGrrUJEl60u6VBmNqSF4YMboR cScEMcFZx/kshyBBnniUOM9a2Nk4TkJaLK5eQbu7wUGYkyDLJJhIOARhjrQx5CDMocuEyiJEEEg2 psCZ55+ms88/DVfkSIKYA2/JsvOTWqCkxK3ra3zp/KtIGgkdOnYScdxlYwpIWc4L26iG1yvreWKz 9qgqX9gLbn3kzFUgswe3xUoqIkEQFhBTx5QooBORlAEUCTbWYlTMaGo1wnQBaxfW+Tf+l1+nV194 mn/uFz5Ef/Vv/TXe2+7SjavO9ZYmX/zD33/85mSYB72lfgASUqCi0gA5MHk6IWKjJblEBm8I8EFX ScIbWmSMpff/6KN/RUpaLIrSGWOksXdItOfTPAmIohBJI6U4iX1RpCTwYgzaKkBrU/BKCmqF5AqN 8XAMKRUWeg1o3cDOxnEIaWlp9TLH6Wh+RxkCqLI29eEXRjMEagrmNrKZwLee+Tyee+qzZGZTbkQJ gqqfqbQGeVGiNBpxGFESxtjd2sD5sy8im47QG6ygt3gMJJjgCh/K4DpFR3cOL7pz6N7R2/MvnmwU jEhGaIZtBNUwEEECImcSliDaMZQKAWbMdIGhnsFFEYFi/tqXvobf/Of/O2aza/j5X/wP8K73/zj2 dlLs705IqNtWBbe//vsf/cLLjo3qLR+OJCCJ4AMdDOfYWbC1DmRKFjZpJPxmPFkOd85hC0A8+5WX Nibj2VZroQGpJAkpfQGAOEj/d/cbVdGB0oEjAfeeAdRTm5DP7yJ7bxfjfAJrDKJUwLoUO5tHQcKi v7SGIMrhnDoQlAdIAFIIX7zuAGeBuDlGUV7Cl//oNXztj59AORujmTQqcAml8YX0WanR6qdYWVrA bDuHgEA2neGLv/dJXHntVXzgx34Cj77n3Ris9OB4BHYGgPAlkdWxW1/RPAJ5IBBSF/xIIZEGTYQi 9KlAISEcQRpApgqsJHKTIzMamggUt3Ht0nV84fEn8Oyf/imOnjyGn/y5/wSHjh7FcHcKYzaQpJso i6zNLB+oNCoLquIAfsP54ASYHRE7x3BZxiaK3xDggyCbCmAJoCBSN5JGCjjIOtBaidibvE1tSwFC A+iGKB5rQz61CfeNAtOToKhJiOM+djZOwFlgsHIFQZzBcUC+LYEA47WlEISiNAgDhR5PiOwM17Yk vvSFb+DpLzyHYpqhlTYQSkngGtwSWVlChBLdpSYGxxbgFi1tXR1ib0OitBoXz7yACy+/hJ/8+7+I n/p7f4+iOIF1+3BWg+v+XR96qRypg7vu4OU6CkSMsCqtAeCjURpgwcgCR4XNoRlgFWPr1g6+9sdP 4mt//MeYTSy9/0d+Bj/y138Y7QWJPL+FINoEiylmU+20hiJBD1ZYOBJV6rHKkng8BANw5Ap2RQ7S 5rsiI1X117/+Mx+8f2m1/y4hhfLZi7m3VLu/r3v4s8wXyBSzzF94pTEAACAASURBVBdpxwxNFtHF GVTAkEcPYzp6FLYI0D90BWE6g6MAlFvQxTGwlUMsRAgaAc69cA2/+7FnsL12G+9dKXF4dYDhZopP /fZXsHZpA91WE3EQYA6uLpHrEpACaTtGEEiQAFr9BnrLbYRRAJNZwBL6S33IUOLKxSuYjkv0+itI 0yaEVBBKeaJSEpXlejD9WP0MlVULASUUpAwqDk0HMyqRCUYeK+RW4Nqlm/j8H/wRnvjE7+Lci6/i 0NGH8Lf+7t/H+37kEaTNHUBcAdEuZtMMo/0Mk3FmjDGSnZuO9vPHr1y4mncHS6lUQgoI4bMfzrJj Y9kZZuOoKCzH8ZsaWTXI9TmsAMj3/uWHji+tLPwlgGNnnSNBQpCYA0xEgPAEWuwYRe7Hs5VFCaMN 8lkOMEMspYAr0bpuMLMPYpasYHDoCpLWEG5KEBcmEGf3gb0SareE0g7n1jfxqY8+jWe+eBZr59aR ZQIPn34nThxS6NA2bm457O4WCJRnZy10ibwswZKQtCJEcVDljn2/U9yM0D/cRnMhQauT4r0/9jBO PbKM7Zs3sX55Ha+8+ArWLl0HOEKz1YdSMaQMIFUIKUOoIIRS/iFVgEBFUCqGUAFYSFgSKBkoMsYs Z1zb3sWzz3wLn/vdJ/GVP/oCbl6/hJXDx/GhH/9ZvOeDfxuDlQBh8hK0vorR/gSjvQzTSQ5dGgBw YRjIKA7zhUH76S898dWNOGiGSTNWBFQT/tgCbJxz1oBdHAd2d3f6piq6VkAHfWJz/fKtjYffdXJW luGCc+BASUil/GSUSnP5ZDaBnSNjNHsCUoEojtFst1AWGYhz2AeP0ngv4uiVW0iWMyQyB16aQFyd gUDklmLG8Sa4ZJz94gX8zlMv4PyNTSz2m2Dn6Pe/uM6T/En8yn90HP/+Tz+K7kIH//L/ehGvXNqn IHSsTQlIQrOdIG3GiBKFKA4QxSERiCejDACjs9zA8okuFlYD9FckfXDlHt64vo+b1/Yx3Mnw9Odv 4U//iJE2mzhy4jgtry5zd9BDZ9BBoCTY1m0L8OF0JkzGE+zs3MDu5i5uXbmGG9euYzgeEtuC212B 935oBY+86zQOHTsJrVPsbNygzVszBjHiBoFdiaL0rapBoBAEgYjTEEGoOqtHF08DOLO/O0Z/pesD PWwtAMsEJ9g5WOdsI+GyHL7lGXzQ2HIAzN7WeLfVaeeNZoI8y2G0QalL4mIepvVAk5+9F6cpBYEP QxZ5DmszpE0BZ9vY23sHiiMxHZZfRutbL4PPtcBSwi0ncIcT0FJCQgm8/Pw1/P5zZ3Dx8m2kzRhK CMggQGAsffmpMxB2jF/+hcfwvg+msNkA//Q3R3jlSk7NpkCzFaHVSdDptNDoRIjSAEEgwY7JWocy MxjbDMyMnS2BsnRIUqL2YogTD5wGO4n1K5vYWB8im4xx+dWXcP7MGbJgGGvAliGVgpASzhiUZUnW GF8AUQ36CCKH1oLEfY8s4vipFTp2ahXtbgJrS8xmt+CcQbMTYrhHtLPRRtJM0Oxcg1IzAApSCqhA UhgqxEnU7fXb9wEIZtkYwgJWVKWdzjnrnHNOMDvjxrtDZNPJd6RRcgdApnMvX90No7BImylUGPhy WVfNOKliOXWJSxUIgS4LdrZAHEsImcDoAfa378V01KTukeusDscw55qgNIY73oTthhCCiLTD2efW +A8++gwuXfDgBqJy+ZyjKJAciAaeenYTxM/hv/z5Pj7wfsYv7YX0q79tsJ83udmO0O4o9Jdb6A7a iBsSMhBkteNsWiCbFTDGVapQYzaZUbOVYKFHTLSLZifGyYd6uP8dh2EtY7gzpuF4xuP1MSYXMuhO BNVLAAOwC8i5EMyGG60InYUUqiURthU6/TY6rYRiqZhLi/2dfRjLcJZhDGDMiGQwQtLq8nR8BLNp D91+jiBihEGIpBFSFIccxoFM0vAIgADI2DpblSX6VmPJbDOtXWYs56Mp22L6lgAflGIGYF/+5oWR Myh9M5UnBWFH5Cp2cgbBaj8ixjkNQRZShaSCJpztYjI8hNF+FwzG4uGLWOjeIgjAvG8RUMqH30rf 53v2zHU8/ttfp0uv3kQah3NwBVWevSOKFEHC4U++vgWjJ/jlnxP4Gz88w3Cs8bGnY5LJChaXCf3l CO1OirilIAOC1ZbCiCAVI8tKWFPVJHviNRS5odF+jiKziJICYTJGnIboDCL0Ty6Raragiib43QPg 3jbYAcoQJElAgKQgTMwU28UuZkWO3WwLWyMHwZIiGaEpEyhWMKVBkWtMJxmKIkMQaUqZMdpbRZ6t orWwgzhRCMPAyRDCuMLt7u3eAiCABCyYHcg5tobZOSblpJ05NxtzWRQM4C3P4BpkB0ADUL/yj/7T owvNpXYsAxQmI1NN8SqKHI4NSclQoeAwCuFcTNZE0OUCimzAs2nDT9tpb1G7u4E4HQFM7Iz0sf1c g1gwBOGVM9fp07/9dVw+dwtpHHIgJRHAgnyFcDWg0vNkCZBSwBefnbIxDv/tz+3RT71niPMby3hp +zA32xEtrpa80A8pCCKADKy13GglaHWblM9K6ML4Wn0hiAh+8DQzG22pLCUHuaJsajBRJYIk4yAz CMoxya+OgK0243gTohGStNLPR2LmW9NdGhZTViTJ9wA4WFPysJxgyxEFVkFqYrK+3tkbcYRWe8RS tKksVpkZFMRDMJWOpRJlXq5/5fPPPw1ALB9elo5hCGyY2TLYGqudUsoJ59jmEzSJvrMESymcta4A QH/1Jz74VwIZHNeZhc6dAAQS1aZm2gZgoY2AMRHpMkFZJMhmDVhLCMIJdQfXECcjCsIcQlqwE3DV HGJrbEWawnTu2+v4zMeexZVzt9FII1Tg4i5wAWayztMU+Sidpc8+Y9FNLR6+v4cdcwj9/gKpaAlR mtPicolG0oIgCeM0FWWBrJoDkecF6cLAGgdjLKxxsJbJGgtrLZWlgVICKlBQU0EqUlAPtxDczKDO 7BIuDUH3LUAsNkAkkJmchtkE2lmy8CPtrDZwhqnMNYw2ABGiIKJW2EArbCAIFIQkhBFT2trD3naf xqNlNBZmCGMtAIn9vfHZf/U/f+QKANXspOSsdSCyYGecsTYk2BKC9yYZA+AJ83emMrSe0Esv9Jr9 Tqf5Pl0WAkQmSRuSBCCkA1hhNu3wbNJGWQZEpBFEE6T9bchwwlLmRKJkkCVmwc5WQ9OYYYyDc44d A6+dWacnP/5cBW6IKFA1DxgLgCQJvhtc6xxbtlDKkdAOH/+TBMduHMLqiWVeWVHUbKesi1VSYofT lgMFMbF2iIsEaWy4NAXyIietSz95u9TQhWVTGtLasjGOnHOsSwujHZEgyEJDxorFcgCVEslrE8in b4Ae6IFPtng0GdNYZ+yMJWcdW23htPX5Z6UgVcAgwAqmKTyLUDdsIQ4Vk2IKooK7S5u0u3Uf59kA jfaWKAs7u3D2+vNe8KLQGluSYCuksgBba60llfCo2GfoHG0VYGT0dwQY8NEs/rV/84/f0V5o3xNG ge82EEwQDkWe8mi/jyJPEYQzLPS2OYwmIGGIhAbI+XZMl6DuJfT9gQ7GWnbOUxCdO3MDT378Ob76 2iYaaURRqKoz10eFBVENbsV046rRtFWTmHNM0MhKIhYKrVaKOG3x4uoEbFd5ki2g464jGM7AScRB O4TKFUIdIE1StsagNCXlZeGnvJSai6KEKS2b0vqNaB0cM1vj4CYlSAqUkWA63UTw3A6Jm2NgNcJ4 NOFxNvbDCpmhAgUZBCAQezIzX6JDgpgkY4IpkbNYVAtoxgnLQCGKJ2z0GLPJKnX7M5hyc/uzn3r6 FQBiod+RpigdgsBKCFMwWxLssiJ3uzduMAAWh04C186/NcCtdgPj0ZQB4L6HTr0/iuMjPvZuBcFh NmlhuL9EQlj0F28ijEcA2XnBODsJhjjQqFZV7DDBWYazvun63Is38OQnnsPV1zaRpqGns4efvONj Qz5GVLl4leRaMtVz5yxK46eUHDm+gOP3tJAkiggLaC4METTG4P1V4OUp1GQbtpGSO9EClmLIkKBK BiuFkCMkcQPGeBWelznKokRZltClgefDYLIVkw57mhxwIsGJ8oOfZznprIQzDkEUeDeqYqmTQvjM kqTq4hgkAZJALgrsuREFpNBWDQhl0OlvYOtmH3vbqxiP1q4+9blndwCIMJCwVltIsmyFNbOZszAu y3IGLJ8+dQrnL50H8B1IWMajaf00aTSSx3zWzBohnJxOuhjuLSJJJtxcuAUncmIWIPZzCarSaQA+ WM3eTWZmkLV+vq5zjs+9cB1PfuI5unp+A2kSchjIqnKL52k7n6lhts6RsW4usb6P2JExFsY5Xug3 sXqsT+2FFO2ugYganGVNWrZXOVjbpJICyHsWIKc504u7oMWI+GQLrhsxaQepmYQUUEoiDCJO4wZp o7koCyp1Aa0LaGO8BDsmZ6vu8UhCJBEVWQFLjPZCkwUrYgIrX00HIcnXgtV1uAIgKVhKAelzQiip xFa5xyxBPZVyEmdotIe0fbtfvvKCebXSpkJbY5nICmuMJLINKd3lnV3H0wkCAOcvXZpj+KYACyng KkLNJ7/+r98hpbwPcBDCUTZr02S4xI3GmJL2OsZmjJnWrEihFSYIRQBHri5rOJhwgTV+LIe1jl55 4Rqe+PizWDu/wY0kQgVunWFnurMr2DJXHNGV9Fo/Uk4b/7NmO8HiagetToqkkfDCikU420R6hjls DKGOBrzRfBfS1Sn1O1dAVyfAWs5itwAOpeATLXAiQYXP2AsiSCU4CAIkUcLGGmhTkDYa2mgYp5mr QdC501ASiJoxY6Xnx95le1xaA0Hz6g+qiWmFFCwE5rOa6uonJqB0BpvZLjMsBmmKzsI+Nm+ms6c/ f/EcgEIFiq22WhBpY2DjOHFopo6vXWEAEGkDmM0F880BfuSdp3HmW+cAAIPl/nuFxEkSFvmsSdPh EtLGBGHrBvaKfYyKAl5q/aDIftz2wyi8BFY1PZ5XigE4y3jl+at44hPPYu38baRphDCougHr8sDq OXPFGlup4kpqq3PYq+VGK0Z/uYN2t4FWJ0FjoYmmY/S2XgW5AfYOvwON+0NgqDDZ6aGRbCC6l8Er DYhLU4hrU/BmDj7ehDuc+ilshmsKI5AkSBUijMLq81iUZYYsn6F0GYJQIIoU4jgG+k2UWYEJJnAV tRNXXZfkLUZfl1U9r0tE5qUiACxbbGb7IGGpFzcRqLVbL37j8+sAiihOtbOmMJpLltLsZbndvbbG ABBKieIAuG8JcA0uAMSJ+CEpEWaTjpuN+5SkU0TNDdothpgUmgR8psXCIrclcqvRUJHftQ6oh2ww +3FxZ7+9hs98/Ou4ev42pWmEUB0A9w6TEHkKA/+3Bw0q48Elax2arRiD5QV0By10+00sDFpo9xrU uFogDgD715YwdSvY3wDKchNWp5js9SmKZkDCsI92wIdTiMtjiHND0K2M+J4WeBCBvB1ZHTMEYyy0 Lsk5hqQAadxGHDcgWwHUSgSTF6SlAIUKgZIgJs/TVSmxqgLVvx/V/6BWcfMeCgkJx5Z3iims28D+ /ubL08n6EIBmZzPHXAgpDCzb3VtXGQDHaeyTOXet72hF//OP/OfHiKLT09EA2bTNjeZYRI1t7BUj TEtTjVdF1SlYJRyqnlpUrDXWegpfaxxe/vYaPvOJZ7B2/hbSJPI3or4BXFeUA576gFGr4gPGFbS1 cNaimSQYLHXQXWyhv9TCYLmD3nIbbSgkeQHxcBfpcY1k7yJujQYo8hhwDsNdoLUQI4pncMbBdQPw u3qg2znE1SnEC7vAUgx9IkUZAKwrKjyiuVqVUiKQAVQOYNeC8hRZLKCrRrwwCCBZVDMNq4r5A9J6 Z/n3tb7cCQD7zgYlwFJie7ZnXzhz5hWAhwC0MSYTgkrnnBmO9uso4xuC+6YAq0B5ZxzAiRM//e7R 7rF7AxWg1dkjEW1jt5hiWhbzNKGrE+LMUFIhlKpqgq7H43hwX3r+Cj7zia9h7fxtJElYgXtQaitq KFTgVoB66fUz/bSxcMRopQmWum10VzrorbQxWOpgsNJBd7mN1qUZwlYEcbQF0hJxsodWdwgVPgZT tpHNbmNnQ2DliKems1nlanUZLgohrxnEW1OIjRnESgh3LPXSOHMISoLMHDCZAYUFCwGSAmgquEHk q0NJQklPxoh6s9MBgT0ALjuGznM4ayGVRF2AbbUlcIFsUgy/+dRrFwGMiaR21hbGCZ0Xk3q83Fuu N+OLrj8KN5L+I0liDoXJNrTcoXFWcGF17aNWjTq+51UJhWbQQChCWGvJGD/1yGiLl56/jM984qse 3DioRt1w3dIzP3t9ssKScdUEJnfnUWoNy4xOt0nLrRb3F1vornpge4ttdJfaaElF6dSxOtKE6EWA BkpDaLSmSBuXsbf1EOlyhccjRri9jzgdgl0AIgmyRCpSjIe6cDkg1zMkWyVoZ+JpAiQRB8ROCSAU QCsCEgVOAtgEpHnCwmmAAFuNgJ/XxAlvL1pjfW+0u0MvLARRmISswsArQT/intg5zCbFpctn1jcB lCoUpTWudKY0AJxSko2x3zvA9sAfpd2dE9TcwVCPOS+tH1dXbceKOZ0YQCBCtMMUqYzAlWp1jklr gzPPX8ITn/gq1i7cRBKHkIL8AOm6macGt2JYr6SWrOPaJUJZ+hGt7cU2VgZdDGRI3aNd9A930R+0 sNBroDlooHFpijBQhBPNyhchFHmJJJUQwjemCxkQ4xCmYyBJLyFKDIAQQiiIurC5LWAficBbBWiz ABR58rZEEcUSiBU49CNxyRFsmYNzX4A50lNMde61UmUtG21QTgsCCFJJyKBqQBdA4Ceo0pyYlIhl 6LXgZFi8Ot6bDAFYXZoCzAZVAug7gfumAMOfEu4f/E+/cGrC28eLIkBpbEVyLbguPHNgEhDcDGM0 /Xw+OOugtYF1jnRpcOZbl/jTn3wKVy9UkluNahV1v0B1Lr0eXB+KtM6xddZLrmV0Bi2sHu5jMUyo n8TcO9ZDf2UBCwspmgsJYiEQbpdEvQi8lLC0VI2JzeFcB8O9o5CqoMHKeZ5NBshnRzAdK0TpGpQs YY0j6xu2mQrnOxn7IbAUe/Xqql3tGLAONHWYO7XGkrEl9ssJ7+YjGGc9kbkgnzWa5iSVYhUFPpIl qS6kBzPX4M4ZaQCCM5ZvXth4DcA+PO+Thk/dzovt3w7A80Lu0+88da8BHyPnE9hVB4MfiMGMSAZo hw1KgxiCCdpWYPiBVXjp+Yv49CefIi+5ESSR5++rroLqa5xLqo8Qzc9cZ0lrA+Mcuv02Vk8uot9p YKADDE72qXt4AZ1eA81mhHghRnh5AukYONWGIyKjDXQ2hVIRJqPj0KVAb2kNSTqiOBlh69Yp7G4t w1pGf+kqgrCAcxLsJFVcS0Bh4QcEVLfmgJVUVe+Cwchsjo1sF6Ni6jsYK3CttiinOVQQIGzEVY2c 8/MmDtxw/36VX1n9xGo7vHJ2/SqAGe4UQc4Nq7cL8Pz/bHeaJwKljtV1wFVvBzOYYhWiF7URq5Cd Y2jrwbDacVFonHn+An3mk3+KtYu3kMSRH4jjB1lR1XcJ3zHqYJ2XWMeOrXMw7Mg5i7I0sM5xd7FD h08scm+lQwMKsUQxuvcNuL3cRCMOKUlDKCJWtwtQK6RyEMCMZnA6YyUjyrNTnGdt6i2uIUlHcFZx nI6wdOgS7dw+gf2dFTYmQH/5GsXJ2PvfTvojsnJjaxSo6iSsn0kSPNUz3Jhs0H4+rgdZMwh+jNAs J6EkwjQCwOycq+Me8Le16oWpDbG6T9Ax8nG+tnFtZw+AJSLLzHV1zfcBcN2yASBOo1NCUuTcHVpF BpMihW7URqpiaGfIGIuy0H6gcV7SmW+dx6c/9RSuXryJNI0g66af2v2rAhnMrlLFDG9Q2QpoRqn9 IKz+ygIdObmMweoC9QZNLI0FBnGC5uEONXopYgjIdgRxZUw8KZGdbqGYTKFsgSjuUDa5F6P9Ver2 riNORnBOoCaPjdN9LB66CLFxnCbDJegyRm9xHc3WLkhYAkvf0V9HPPxdqJCouJsB2suG2Mv260bv uYDovCSAEKYRSMCzotXyX91Lr8wOBDwYJMgfWXub41eunbu173fC966e3xDgOI4ozwoG0JZKraCq lKzjwWCmUCgOSMJYQ8Za6NKgLDTnWYkXv3WePvM7f+rBTSIEUnLViuA1GvtuHsfO0w07Cz9AysI6 R44Z2hg4x+ivLvCxkys0WGlzb7lNg5UO9wuJhS1DybUc4VILSASXswzR1TEZYugVgUasYMtFHu0d o3zW4Vb7FjU7G+ycAHvCYjATrJUcRBMsHrpIQVhgf+cQNm/ci6J3mzu9WxSEOYMFMQuuZlX4eKIH nIkA4wzlJgfAVWeuj7NabdhqQ2ESs6/kdLVJibnnMQ9h1fI857wkx4zNqzvnJ8PZfgXN9yy9bwQw BaGiPCv45/+rn1xVoVp2lmGrOYRVloiN0Mg5BxgoSs1loVHkGi9/+xKe+N2neO3STTSSiAIlvR84 vzv+pnAttZUr5Gp3iB1rbeCYaXG1i+OnVjFY6XB/sYX+coe7iy20ew0kI4f03ITFN3YweWcTdi9D uK85erQD0V6gbK+P2XgJgOP+8gWkjSEDBOdEff8r147gnIJUJfeWryCIMtrdPIbdrSMo8pR7izeQ NIYM3BlF50loKmkmgmPLDHugN4nADqyzAjJUrCKFigkBANUquQ5tVREA0Pw1VRyTDZv1SxvrACa4 U936/QNMXseYe+4/doitXTWlhrPWX4+nfUHJBtoaQAPZLKPZNMdLz1/E5x5/BtfXNuYRqgrc+bHi DSrPkm6tt5ZrcB1769uBsbjax4n7VrG4skC9xRb6yy30Bi20OinSZoxwJYRth2SeuY34OY1ABhCt APpwH5PdFRTTCI3WbWo09yGVBljA8Rzcyv0m1DOKnBMg4dDu3UQQ5NjZPE6TUQ9ax+gvXUWzswOf 3KW6WXh+ghLXni7V0S4yuY8qBVGAOgBUxefuEJVWuKJKqMxN58rgsaXdmezNRgCMkMI4+7pJH28b 4PlObHYaiwQaCCmgQlVF/kGOHVvjaKQzREbBWeJzZ6/hc5/5Ol27chuNJOLQg0tUn1Xsqct9wn/u Avkx0h5cKqs6qOUjA5w4fYgWVxbgJbfFC/0mtRdSThoxRaECFxqzluXwR5bQOpuRuDYDv6+DcbkE XQTcX7qCINA+7+xk7Yj5lKWH+Q6VSm01OQmQo7S1A6lK7Gwe5/H+Em3fPsFSaUobQzDEHApm8hTp znEoFAIRkIODsxam1BzEIUklma2fBsg1kpXnD8AzMle2SX0W171u2axYH+6MxwDgrHtb0ns3wFVI yTfItnutftxMeqKSRH9j/EBIrQ3Pihwuc3T5xRv43O99Fdcu3+I0DqFqya3OowNZoap6w7HzbtDc oNJaswNj5cgi7rn/MBZXF9BbbPFgqYWFQROtTspxI0IcBeycRTabURAESI4vwNkJkGkukw6xIW62 dihONNgp2NokQe2CeNumnqhQmxVVX2/dxchhMsJg9RKIHI/2VrC3dZjDcIYgLMjaqvqT/FRzwxqx ipAGEUZ6xiYrIKVAEFVlxagD0a9zge5whntg64+DqnEVxUxv7m2Opvg+1PPdAAOAUMqbgWEU9qQU Ud1ixszkrGOjLVntuMhLnH3uEr78+Ddxa20TSRIhUAo11/WdvC7uxKVdfd5yHdCA1hoMYPXYEk49 eASLqwvoD5roLbWx0G+g1UkRp771hK1FNptBhQEaacO3a84MRMCkGwuIQlCzOcNkpCfWattsp51A KTjH8HworhKT6mproWa+Iz2O4FghCDP0l9dgTYjZtIPZtIO22gTBwVW9SA4O1mlEUqEZJhjlEzhn ESWR96IqrXrABarlv+II8KJD809EnkaKCFIKWG3Lu8D9/gCWSmJnYwgAQRiHPZJiLr2o6YyZUeYl vfqtK/jS73+DN65uI0lCCpSY//9UWZoEf17V4NqKSbYGuiw1MYAjJ1Zx38PHMVhpoTdoorfURKff pGY78eBGAdhZzGZTVkGAZrPp74hhUhOLIA4g2zF2tif7r337+W8/+5VXX3UMd+K+w8urRwaLy6v9 Q72lzuFmq9EQQsxTl/A8drXO9Q6+j6/DOYkwmqK3tIaNG/djtL/kuSelJlTnObOFYwsB4WPwZodK Acgw8Gy19Tlbn7uMml66Tpv5zlvynZNCCJS5wWRv9tq1V24+c3tte+bf4Ht3j94IYGq2UxrujhlA L06jQ3fm6vmIc8UKhGymcf3KNtYvbyGUQFDlc+fiMc8KVZGpShXbAwZVqf2IuqP3HMKDj96DpUNd tHsRuoMGFvpNNNox4iRiX+TnMJtNKQgDarVbXqUKgtKALS3WNncvvfSFr7z6zB+/du6Jj3zqNQBj +MY5A6Dxng89vPpD7z29euqBo4fueeDovatHFu9pLTRbfrYg19TBFakhe8JYB3IQSBp7aHdvYrh7 GNm0g2Z7G7XB5Zz1AiAALh1SmcAoT5t0J987p1zy34nK56wKAIQQ0Lnmna3x2tb63sX1C5vnzn3j 8ovf+PyZVwBkURKiyMq3BS5wJ0oGAKLRStR0nIXLRwaL//Wv/tLPtHrN92/d3BmP96dstFEAImM5 MBrqZC+87+a59Qf/8EuXYCyhlQbzY8ZblZXkVirZceUSOUdF4TMux04d5ofecQqrhwe0MGig1QvR 7ibcaCdIkpDCOASBvVpWEs0K3HxWYGtz//ray9fPX/rya1eeeebslW+eu3gFQH5g0x68IQyvg4KT 9x859MEfe+fRBx49efTk/UfuOXx86d72QrNTt7nW8dh6M0tp2ZiINm+chlIlFlcuQUjP4aVNAcc+ VzwZTUCCeCxz7OZDqCrYPG80pYNHMFBmutjbGF25vbZ9KiFfTQAACpFJREFU+fprt65efOH6+vN/ 8soV+OkpOYAJEe0z8wjAFL75wOF7XK8DuLo5sQqDjjOm6xw3UVEaVg8JIPhv/osf/cB/9w9+/GcL 1zr0j//FGXz6ya9xIyY0kmh+wDlvRPn6qzt0vFRqA5ICp+4/jofeeS9WDvXQG7TR7iVI2gKNTow0 jSq2WofZZAIhJQSUvn1j5/raxRtr58+sXX71zJWbX/vSt68B2KnBlFJqa22BOzFbAqCISAlJoa2n XfnfhUdPrqy89y8/cuihd546ct/Dx+89enL1dHuh2RNzJHxumshiuLuE0d4KL65eRJzMYDShNAWR JM6mM7LaoNPpIEeJW7Md5Lb0G71KCZrS8nh3ur59c2/t1tr2tRsXNm6vnb2x8epzl28CGNWfS0iR s+MRM+9XP59WgBt8v2cwABCRM6Uu4QPcSkoRqUBJAFTkpQZgH3tkeaHTXT1Eg0fxK7/Y4unuFfzJ 19ZJkEISSdzxbZnq+LJz7KvErMWRo0vmwR86JQ8fGVBvqYPF5S6aCxFkbKACAakk8qzk65dv7Fy7 fPPGzsZ4/drF2zcvvHJ148VvnLsFv8sNABdFobbW5sbYzFqbAyjvAlgys7KGQwChkCJWSka6NO76 ldtXr1+5feX3PvzFaPlwf+mx9z+4/PBj9x558B2nTh85uXJft9de8WWvQKszQVloKssOorgAhKlm +fo5UnEaQwYSiYvQUikmk1kx3p3eGm6Nb26t7964+urN6zcvb+1ceXl9Z397vAMgq3dRECnjHBfO uMxZN6tAnVavqSX3+1bRhDukK5FUMgXQsMZGRBQSUeAcJODEe99936Ff/1//+//4sQc7f0OKGzh7 dof/ya99DU99/QriWCIKBSz7jgDruw3JVhWI1tpbaSPa7Q06YuXwYnT83kPhvQ8cSw4d78WFnpY3 rm9tXbt4e+PaxZu3r6/d2r51fXd748bGJoBhBZ5utNLCOZuVuc6sdRmA4sDjYMwW+LPEbiGAkAiR VCoOQxWXhQ6MsXWwOeoutgcPvePU4PQjJ5cffuzek6ceOHT/YLl3TBfHEqNb6C9dB9MM2gCT0Rhl Xjoitb29sb9++/rW+vlzV29cvHR9d/v23nhjbXt/68bePrxdwABISMFREhijbWG0zdlxUV1b8QbX Ul/P21p01/cHO/rDCuxAShlIFQRJkoRlqeNsNsFf+uCH7vuN//GHf+XhB45/QCQKZ771Gv/Tf/UN /MnXNykMCEmMObjG+k4GMNatddfzLC90qV0QKZs0Ym53GrbVTm2py+n27b29G2sbOwy9B2ACUJ6k SRYlQaZLPdOlmelSz5i5ltaDN6LmFDl4VhH+LC1UTdNYgU1RGAVxFAdxnpVBWej6vgQAFu5/9ET3 5OnF7gM/9MMnTpx69+lTD+aHHabu1rXd6+fPXrl24eW1G5u3h3u317enVy/eHMGr1qJ6DwbAjXZi HXNpSlMYbQt2rKvPXx747AevodZCb1t63wjg+vCpgRZKKRmEgQqjNIiTNG42Gy3jXPvqxfPR3/07 /95j/8M//LH/7IFj9JCQI5x9eZ3/2W9dwmef2qdAMZJ4XtkBkvKKEHSZHWsfVnKl0aYoijKbTWfT bJpPAEyjKJgmzWgaRcHEWjspCz0utZ7oUmdwLmfmwjlXg2ruAvXN/MWD1yXw+o0c4IB0C0FRFIdR FIex0TacjGe1KyEANAdLS53VY72U2fCNtc3Z3s5oAq9O565MnIYcRIG11pbWuNJoW1ptD37muz97 /fnv9nnftvV88MLf/HdhSP1GKsI4VbLZDNMgTKVSrSCU/dG47K2tDdt/5ydOPvqPfunen3/4pDsp 5QiXLmy7X/vYpnjyqzlmJUMKQAXhuTCKXgM4d845Zlc6yzPHbuasnTprp9baiXNubK0dO2dHztqJ MWbmjM2Mtbm1pmBrNb/x7v5e4rQ1YAcBlwceBwEPAIQkKGKHALUDXKnaAw8mIlOl9N4IxLs34sEN efem/L4AvXu9FQkLcPpePgQJpAkFSSKjIAiklBGcSNM4aPf6Uf/rZ3bN1m42eeCoPtSPR81Bb58e PjI1L13G+Nx1wY1GcDFtpC8JISdEohCSxoLkHgnaISG2hBCbQogNItogQZsE2mTGDoN3nbNDAGNm NzVa1yq5PpPebvjubuk4SBd1UG0W8NZrDsYM3uCpz/v69zP4bM8YXi2Pq0ct1Xf/zUF1XF/D9y2l b7XeGmDrqBcrkjIUIghlIGVAjBhAyuBUKdFeaAWdb76aF9t75eShY5PVpthPnj2H859/vnOmsNF6 oxFdlyoYgbkkorEgMSSiXSFom4TYFiS3SNA2CdoRJHYZGFZuwpSIc0tUFHmh4asZrPSDQv88b8hB oL8bwGvQaku3tnqz6vcHwXwjNfwXCujd660BznNq9BqkKCQSgZRKScAFACIiip3jVCmRNBNKv3UB s7IssuubGP36E53Xbu5Ge+2mHBHRDIwchAkBQyKxB6JdFtgmoh0haBegPSIaEYmJdW5GxLlTpPWo 0LPJqIor+vVv4c7cDfhBxr9a9R6UxoNSebc98G8d0LvXG5/Bjz8O/NRPAQBay6s06LaEoiBQURxL wQ2AFgAagHkZhIEg9AuN5jRH5FiEUUAyjRwJgZIZBQEZM48YGBGwD8K+c27uyGtjZs7awjrWsNa4 UNkbmxtst3f+X7sxb7He6J79u/g5Aby1kTV/zX33P0CaoWQUhJEKEgFqgdBl5kUCegB1BVEn10iN I5WEHAifiSsAZCBMGBjBh932AYycdUMQpuxcXha6MGy1AIydGnv95nVGNcf4B+v7W2+toqtlwwas KYhZQJKCpKowrMokCuGHZAsBHUhoImQAJswYE2EIwj4Ye8zYI+KhcxhadhNmnmldFEWRlwxhs+nU 3r51jd9GyPUH603WmwIcpB047X31YjJCBILWloUkDkLFQkhGxc9ERAaMkpkLAjICpiCMAR4BtE/A PrPbB/MQTGPHbmqsybTWZZkVhi3brJzy7u3b/86quv+vrjftLtSz4YHvGHvZlJNy5hqJtIUJS0cS 0hcTGbAoAEwAjuAjQ9L5eSqGCAWDc2Y3Y0bGzLk1pmBrSp1lJp8WbjxxrMvt14ErhMC8leMH622v 74aExS9juDBgCYliNmUbWg5V6KQgI5TIAUTMHJBAgIpi3TOuCA1waa0twSiMZe20MWGU6KGbut3d zT8jtUGQQuvZn+d1/v92fVdnMFCFawAMRyOOIJAkCZe5ZkhYESoDhjbGFGDKiURmrc0s2xkR5da5 XGtdOO1KtsYUwprhbOT2NjYBX+n/uuXcDwysP6/1XQN8cOk8ZxKCIcFpM2V25Iq8MEVRGpDQJElr rUujTWmt007rspzlxlhrnWI7nIx5fPM2wzk0ZRMll3/e1/WDVa3vCeDPfeBH8ZH1NTgAs9kMhg1S 1XB2BgdhnYRxgSDLRKbMMiMdWWHYaOucKXM7GW+5ndEUes/T3DrgB+D+Ba/vxg9+w7W4uIitra3q uxi91S61uUQ5yjAlosJYpGHMAg4zCJRwbMYjAEDSSJBNsz+Pz/+D9Re9PvXMR9/oxweqj+6s39za f4OX/mD9Ra7/B+8nhIqj5rEdAAAAAElFTkSuQmCC "
+ height="20"
+ width="20" />
+ <path
+ style="opacity:0.50000000000000000;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 178,-13 0,5.375 1.6563,0.625 1.2812,0 c 0.256,0 0.51,-0.0297 0.75,-0.0937 0.2453,-0.064 0.4762,-0.13926 0.6563,-0.28125 0.5478,-0.43174 0.6562,-1.05881 0.6562,-1.53128 0,-0.45113 -0.1365,-0.74932 -0.3125,-1.00002 -0.1707,-0.256 -0.4291,-0.39865 -0.7813,-0.49995 0.2563,-0.1227 0.4658,-0.27675 0.5938,-0.46875 0.1333,-0.192 0.1875,-0.43075 0.1875,-0.71875 0,-0.2667 -0.034,-0.5062 -0.125,-0.6875 -0.085,-0.1814 -0.215,-0.29955 -0.375,-0.40625 -0.16,-0.112 -0.3699,-0.202 -0.5937,-0.25 -0.2243,-0.048 -0.4504,-0.0625 -0.7188,-0.0625 z m 5.6563,0 2.0937,3.78125 0,2.1875 L 187,-7.5 l 0,-1.6875 2.125,-3.8125 -1.4062,0 -1.3125,2.5625 L 185.0626,-13 z m -4.4063,0.96875 1.3438,0 c 0.1116,0 0.2424,0.0102 0.3437,0.0312 0.1067,0.016 0.2011,0.0457 0.2813,0.0937 0.08,0.048 0.1394,0.1022 0.1874,0.1875 0.049,0.085 0.063,0.21035 0.063,0.34375 0,0.24 -0.075,0.3933 -0.2188,0.5 -0.144,0.1066 -0.3387,0.17777 -0.5625,0.1875 l -1.4375,0 z m 0,2.32924 1.5625,0 c 0.272,0 0.4907,0.059 0.6563,0.1875 0.165,0.1227 0.2187,0.3317 0.2187,0.625 0,0.1494 -0.011,0.44976 -0.062,0.54576 -0.048,0.096 -0.1022,0.16005 -0.1875,0.21875 -0.085,0.053 -0.2005,0.098 -0.3125,0.125 -0.112,0.021 -0.2209,0.0312 -0.3438,0.0312 l -1.5312,0 z M 174.5,-8 168.4062,-5.40625 167,-4 167,9 168.5625,10.5625 174.5,8 l 8,3 7.0938,-2.59375 L 191,7 191,-6 189.4375,-7.5625 182.5,-5 z m -2.3126,5.84375 c 0.4982,0 0.9222,0.076 1.3126,0.25 0.3896,0.174 0.7296,0.41275 1,0.71875 0.2696,0.306 0.4806,0.67975 0.625,1.09375 0.1436,0.408 0.2187,0.8325 0.2187,1.3125 0,0.468 -0.075,0.9045 -0.2187,1.3125 -0.1442,0.402 -0.3552,0.7625 -0.625,1.0625 -0.2704,0.3 -0.6103,0.54475 -1,0.71875 -0.3904,0.168 -0.8144,0.25 -1.3126,0.25 -0.4918,0 -0.9477,-0.082 -1.3437,-0.25 -0.39,-0.174 -0.73,-0.41875 -1,-0.71875 -0.27,-0.3 -0.481,-0.6605 -0.625,-1.0625 C 169.0747,2.12325 169,1.68675 169,1.21875 c 0,-0.48 0.075,-0.9045 0.2187,-1.3125 0.144,-0.414 0.355,-0.78775 0.625,-1.09375 0.27,-0.306 0.61,-0.54475 1,-0.71875 0.396,-0.174 0.8519,-0.25 1.3437,-0.25 z m 6.2189,0 c 0.3358,0 0.6627,0.047 0.9687,0.125 0.312,0.072 0.5725,0.17575 0.8125,0.34375 0.24,0.168 0.4554,0.39225 0.5938,0.65625 0.1438,0.258 0.2187,0.5655 0.2187,0.9375 l -1.375,0 c -0.012,-0.192 -0.053,-0.34275 -0.125,-0.46875 -0.066,-0.126 -0.1669,-0.2405 -0.2813,-0.3125 -0.1139,-0.072 -0.2562,-0.12625 -0.4062,-0.15625 -0.144,-0.03 -0.2946,-0.0312 -0.4688,-0.0312 -0.1139,0 -0.2297,0.0102 -0.3437,0.0312 -0.114,0.024 -0.2165,0.065 -0.3125,0.125 -0.09,0.06 -0.1586,0.12875 -0.2188,0.21875 -0.06,0.09 -0.094,0.20575 -0.094,0.34375 0,0.126 0.014,0.2345 0.062,0.3125 0.048,0.078 0.1435,0.15275 0.2812,0.21875 0.1442,0.066 0.3478,0.1215 0.5938,0.1875 0.252,0.066 0.5666,0.148 0.9688,0.25 0.1196,0.024 0.2896,0.0901 0.5,0.15625 0.2156,0.06 0.4462,0.14325 0.6562,0.28125 0.21,0.138 0.3815,0.3285 0.5312,0.5625 0.1562,0.228 0.2188,0.515 0.2188,0.875 0,0.294 -0.042,0.59175 -0.1562,0.84375 -0.1144,0.252 -0.2722,0.47025 -0.5,0.65625 -0.2223,0.18 -0.5078,0.30425 -0.8438,0.40625 -0.33,0.102 -0.7186,0.15625 -1.1562,0.15625 -0.3544,0 -0.6953,-0.035 -1.0313,-0.125 -0.33,-0.084 -0.617,-0.22025 -0.875,-0.40625 -0.252,-0.186 -0.475,-0.43075 -0.625,-0.71875 -0.15,-0.288 -0.225,-0.63525 -0.2187,-1.03125 l 1.375,0 c 0,0.216 0.047,0.4125 0.125,0.5625 0.078,0.15 0.1865,0.24775 0.3124,0.34375 0.1323,0.09 0.2634,0.17075 0.4376,0.21875 0.1739,0.042 0.3767,0.0625 0.5624,0.0625 0.1262,0 0.2623,-0.0133 0.4063,-0.0312 0.144,-0.024 0.2799,-0.065 0.4063,-0.125 0.1259,-0.06 0.2285,-0.148 0.3124,-0.25 0.084,-0.108 0.125,-0.24425 0.125,-0.40625 0,-0.174 -0.073,-0.29825 -0.1874,-0.40625 -0.1082,-0.108 -0.2574,-0.20925 -0.4376,-0.28125 -0.1798,-0.072 -0.3657,-0.1335 -0.5937,-0.1875 -0.228,-0.054 -0.4535,-0.1215 -0.6875,-0.1875 -0.24,-0.06 -0.4905,-0.1035 -0.7188,-0.1875 -0.2278,-0.09 -0.4137,-0.20575 -0.5937,-0.34375 -0.18,-0.138 -0.3549,-0.32725 -0.4687,-0.53125 -0.1082,-0.21 -0.1563,-0.456 -0.1563,-0.75 0,-0.33 0.081,-0.60375 0.2187,-0.84375 0.1442,-0.246 0.3342,-0.463 0.5626,-0.625 0.2277,-0.162 0.4617,-0.26575 0.75,-0.34375 0.288,-0.078 0.5873,-0.10702 0.875,-0.125 z M 181.9997,-2 l 2,0 1.5157,4.40625 1.5158,-4.40625 2,0 0,6.40625 -1.3437,0 0,-4.53125 -1.6878,4.53125 -1.0938,0 -1.5625,-4.5 -0.031,4.5 -1.3124,0 z m -9.8123,1.03125 c -0.3179,0 -0.5909,0.061 -0.8124,0.1875 -0.2223,0.12 -0.4242,0.29 -0.5626,0.5 -0.1375,0.204 -0.2152,0.4235 -0.2812,0.6875 -0.06,0.264 -0.094,0.5305 -0.094,0.8125 0,0.27 0.034,0.5545 0.094,0.8125 0.066,0.252 0.1436,0.4835 0.2812,0.6875 0.1383,0.204 0.3403,0.34275 0.5626,0.46875 0.2219,0.12 0.4949,0.1875 0.8124,0.1875 0.3182,0 0.5593,-0.067 0.7813,-0.1875 0.222,-0.126 0.4245,-0.26475 0.5625,-0.46875 0.138,-0.204 0.2216,-0.4355 0.2812,-0.6875 0.066,-0.258 0.094,-0.5425 0.094,-0.8125 0,-0.282 -0.027,-0.5485 -0.094,-0.8125 -0.06,-0.264 -0.1432,-0.4835 -0.2812,-0.6875 -0.138,-0.21 -0.3405,-0.38 -0.5625,-0.5 -0.222,-0.126 -0.4629,-0.1875 -0.7813,-0.1875 z"
+ id="path3323-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccscsscccscccsccccccccccccscccscscccscscccscccccccccccccccscccscccscscscscsccsccccccscccssccccscscccsccscccccscccsccsccscscccscsccccccccccccssccscccscscscccss" />
+ <path
+ style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 74.875,-16 0,10.57817 L 78.66654,-4 80.75,-4 c 0.512,0 1.02,-0.0595 1.5,-0.1875 0.4906,-0.128 0.9523,-0.27852 1.3125,-0.5625 1.0956,-0.86348 1.3125,-2.11756 1.3125,-3.0625 0,-0.90226 -0.273,-1.4986 -0.625,-2 -0.3414,-0.512 -0.8581,-0.7974 -1.5625,-1 0.5126,-0.2454 0.9315,-0.5535 1.1875,-0.9375 0.2666,-0.384 0.375,-0.8615 0.375,-1.4375 0,-0.5334 -0.068,-1.0124 -0.25,-1.375 -0.17,-0.3628 -0.43,-0.5991 -0.75,-0.8125 -0.32,-0.224 -0.7399,-0.404 -1.1875,-0.5 C 81.6139,-15.971 81.1618,-16 80.625,-16 z m 11.3125,0 4.1875,7.5625 0,4.16076 2.5,-0.89286 0,-3.2054 4.25,-7.625 -2.8125,0 -2.625,5.125 L 89,-16 z m -8.8125,1.9375 2.6875,0 c 0.2232,0 0.4849,0.0205 0.6875,0.0625 0.2134,0.032 0.4021,0.0915 0.5625,0.1875 0.16,0.096 0.279,0.2044 0.375,0.375 0.098,0.17 0.125,0.4207 0.125,0.6875 0,0.48 -0.1499,0.7866 -0.4375,1 -0.288,0.2132 -0.6774,0.35554 -1.125,0.375 l -2.875,0 z m 0,4.65625 3.125,0 c 0.544,0 0.9813,0.118 1.3125,0.375 0.33,0.2454 0.4375,0.6634 0.4375,1.25 0,0.2988 -0.023,0.90175 -0.125,1.09375 -0.096,0.192 -0.2044,0.3201 -0.375,0.4375 -0.17,0.106 -0.401,0.196 -0.625,0.25 -0.224,0.042 -0.4417,0.0625 -0.6875,0.0625 l -3.0625,0 z M 68,-6 55.8125,-0.8125 C 54.59258,-0.29327 53,0.30925 53,2 l 0,26 c 0,2.50005 0,4.52175 3.5,3 L 68,26 84,32 98.1875,26.8125 C 99.43265,26.35722 101,25.30925 101,24 l 0,-26 c 0,-3.49995 -0.19997,-4 -3,-3 L 84,0 z M 63.25,5.6875 c 0.9964,0 1.8442,0.152 2.625,0.5 0.7792,0.348 1.4592,0.8255 2,1.4375 0.5392,0.612 0.9612,1.3595 1.25,2.1875 0.2872,0.816 0.4375,1.665 0.4375,2.625 0,0.936 -0.1501,1.809 -0.4375,2.625 -0.2884,0.804 -0.7104,1.525 -1.25,2.125 -0.5408,0.6 -1.2206,1.0895 -2,1.4375 -0.7808,0.336 -1.6286,0.5 -2.625,0.5 -0.9836,0 -1.8955,-0.164 -2.6875,-0.5 -0.78,-0.348 -1.46,-0.8375 -2,-1.4375 -0.54,-0.6 -0.962,-1.321 -1.25,-2.125 -0.288,-0.816 -0.4375,-1.689 -0.4375,-2.625 0,-0.96 0.1501,-1.809 0.4375,-2.625 0.288,-0.828 0.71,-1.5755 1.25,-2.1875 0.54,-0.612 1.22,-1.0895 2,-1.4375 0.792,-0.348 1.7039,-0.5 2.6875,-0.5 z m 12.4375,0 c 0.6716,0 1.3255,0.094 1.9375,0.25 0.624,0.144 1.145,0.3515 1.625,0.6875 0.48,0.336 0.9107,0.7845 1.1875,1.3125 0.2876,0.516 0.4375,1.131 0.4375,1.875 l -2.75,0 C 78.101,9.4285 78.019,9.127 77.875,8.875 77.743,8.623 77.5413,8.394 77.3125,8.25 77.0847,8.106 76.8,7.9975 76.5,7.9375 76.212,7.8775 75.9109,7.875 75.5625,7.875 c -0.2278,0 -0.4595,0.0205 -0.6875,0.0625 -0.228,0.048 -0.433,0.13 -0.625,0.25 -0.18,0.12 -0.3171,0.2575 -0.4375,0.4375 -0.12,0.18 -0.1875,0.4115 -0.1875,0.6875 0,0.252 0.029,0.469 0.125,0.625 0.096,0.156 0.2871,0.3055 0.5625,0.4375 0.2884,0.132 0.6955,0.243 1.1875,0.375 0.504,0.132 1.1331,0.296 1.9375,0.5 0.2392,0.048 0.5792,0.1802 1,0.3125 0.4312,0.12 0.8925,0.2865 1.3125,0.5625 0.42,0.276 0.7631,0.657 1.0625,1.125 0.3124,0.456 0.4375,1.03 0.4375,1.75 0,0.588 -0.0841,1.1835 -0.3125,1.6875 -0.2288,0.504 -0.5444,0.9405 -1,1.3125 -0.4446,0.36 -1.0155,0.6085 -1.6875,0.8125 -0.66,0.204 -1.4373,0.3125 -2.3125,0.3125 -0.7088,0 -1.3905,-0.07 -2.0625,-0.25 -0.66,-0.168 -1.234,-0.4405 -1.75,-0.8125 -0.504,-0.372 -0.95,-0.8615 -1.25,-1.4375 -0.3,-0.576 -0.4501,-1.2705 -0.4375,-2.0625 l 2.75,0 c 0,0.432 0.094,0.825 0.25,1.125 0.156,0.3 0.3732,0.4955 0.625,0.6875 0.2646,0.18 0.5266,0.3415 0.875,0.4375 0.3478,0.084 0.7536,0.125 1.125,0.125 0.2524,0 0.5245,-0.0267 0.8125,-0.0625 0.288,-0.048 0.5597,-0.13 0.8125,-0.25 0.2518,-0.12 0.4572,-0.296 0.625,-0.5 0.168,-0.216 0.25,-0.4885 0.25,-0.8125 0,-0.348 -0.1462,-0.5965 -0.375,-0.8125 -0.2164,-0.216 -0.5146,-0.4185 -0.875,-0.5625 -0.3596,-0.144 -0.7315,-0.267 -1.1875,-0.375 -0.456,-0.108 -0.907,-0.243 -1.375,-0.375 -0.48,-0.12 -0.9809,-0.207 -1.4375,-0.375 -0.4556,-0.18 -0.8275,-0.4115 -1.1875,-0.6875 -0.36,-0.276 -0.7099,-0.6545 -0.9375,-1.0625 -0.2164,-0.42 -0.3125,-0.912 -0.3125,-1.5 0,-0.66 0.1621,-1.2075 0.4375,-1.6875 0.2884,-0.492 0.6682,-0.926 1.125,-1.25 0.4554,-0.324 0.9234,-0.5315 1.5,-0.6875 0.576,-0.156 1.1746,-0.21404 1.75,-0.25 z M 82.875,6 l 4,0 3.03125,8.8125 L 92.9375,6 l 4,0 0,12.8125 -2.6875,0 0,-9.0625 -3.375,9.0625 -2.1875,0 -3.125,-9 -0.0625,9 -2.625,0 z M 63.25,8.0625 c -0.6358,0 -1.182,0.122 -1.625,0.375 -0.4446,0.24 -0.8482,0.58 -1.125,1 -0.275,0.408 -0.4305,0.847 -0.5625,1.375 -0.12,0.528 -0.1875,1.061 -0.1875,1.625 0,0.54 0.0675,1.109 0.1875,1.625 0.132,0.504 0.2873,0.967 0.5625,1.375 0.2766,0.408 0.6804,0.6855 1.125,0.9375 0.4438,0.24 0.99,0.375 1.625,0.375 0.6364,0 1.1185,-0.134 1.5625,-0.375 0.444,-0.252 0.849,-0.5295 1.125,-0.9375 0.276,-0.408 0.4433,-0.871 0.5625,-1.375 0.132,-0.516 0.1875,-1.085 0.1875,-1.625 0,-0.564 -0.0535,-1.097 -0.1875,-1.625 -0.12,-0.528 -0.2865,-0.967 -0.5625,-1.375 -0.276,-0.42 -0.681,-0.76 -1.125,-1 -0.444,-0.252 -0.9257,-0.375 -1.5625,-0.375 z"
+ id="path7865"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccsccscccscccsccccccccccccscccscccccscscccsccccsssccssssccscccscccscscscscsccsccccccscccssccccscscccsccsccsccscccsccsccscsccccccccccccccccccscccscccscscscccs" />
+ </g>
+ <path
+ style="color:#000000;fill:#ffffff;fill-opacity:0.75294118;fill-rule:nonzero;stroke:none;stroke-width:2.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m 143,14 -1,1 0,2 -3.5,0 c -2.493,0 -4.5,2.007 -4.5,4.5 0,2.493 2.007,4.5 4.5,4.5 l 3.5,0 c 0,-1.656854 -1.34315,-3 -3,-3 l -0.5,0 c -0.831,0 -1.5,-0.669 -1.5,-1.5 0,-0.831 0.669,-1.5 1.5,-1.5 l 3.5,0 0,2 1,1 4,-4.5 z"
+ id="rect3834"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccssscssssccccc" />
+ <g
+ transform="translate(0.0630273,180.06303)"
+ style="display:inline"
+ id="g4031"
+ inkscape:export-filename="C:\Users\simon\Downloads\sprite.png"
+ inkscape:export-xdpi="599.83337"
+ inkscape:export-ydpi="599.83337">
+ <g
+ transform="translate(4.5101293,-0.563766)"
+ style="font-size:16px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#c0c0c0;fill-opacity:1;stroke:#c0c0c0;stroke-width:0.40000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ id="g4014">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:none;stroke:#c0c0c0;stroke-width:4.61538458;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path3031"
+ sodipodi:cx="255"
+ sodipodi:cy="610"
+ sodipodi:rx="15"
+ sodipodi:ry="15"
+ d="m 270,610 c 0,8.28427 -6.71573,15 -15,15 -8.28427,0 -15,-6.71573 -15,-15 0,-8.28427 6.71573,-15 15,-15 8.28427,0 15,6.71573 15,15 z"
+ transform="matrix(0.86666662,0,0,0.86666662,-165.6154,-533.41911)" />
+ </g>
+ <path
+ d="m 63.142047,-10.043787 -2.148438,0.226562 c -0.02084,-0.385407 -0.13412,-0.679678 -0.339843,-0.882812 -0.205734,-0.203115 -0.49089,-0.304678 -0.855469,-0.304688 -0.338546,1e-5 -0.596358,0.07423 -0.773438,0.222656 -0.177086,0.148447 -0.265628,0.316416 -0.265625,0.503907 -3e-6,0.255217 0.119789,0.500008 0.359375,0.734375 0.161455,0.156258 0.695309,0.526049 1.601563,1.109375 0.906244,0.58334 1.505202,1.000006 1.796875,1.25 0.453117,0.380214 0.777336,0.756515 0.972656,1.128906 0.195305,0.3724 0.292961,0.78516 0.292969,1.238281 -8e-6,0.484378 -0.118498,0.930993 -0.355469,1.339844 -0.236987,0.408856 -0.592455,0.779949 -1.066406,1.113281 0.317701,0.291668 0.55468,0.602865 0.710937,0.933594 0.156243,0.330729 0.234368,0.680989 0.234375,1.050781 -7e-6,0.770832 -0.28907,1.416665 -0.867187,1.9375 -0.578131,0.52083 -1.40886,0.781247 -2.492188,0.78125 -1.04167,-3e-6 -1.875002,-0.257815 -2.5,-0.773437 -0.625001,-0.515627 -0.994792,-1.203127 -1.109375,-2.0625 l 2.140625,-0.257813 c 0.09375,0.468749 0.272133,0.821614 0.535157,1.058594 0.263017,0.236977 0.595048,0.355467 0.996093,0.355469 0.343746,-2e-6 0.617183,-0.08985 0.820313,-0.269532 0.203119,-0.179688 0.304682,-0.397136 0.304687,-0.652343 -5e-6,-0.244793 -0.09636,-0.463542 -0.289062,-0.65625 -0.197922,-0.192709 -0.891932,-0.667969 -2.082031,-1.425782 -1.190107,-0.75781 -1.964845,-1.386716 -2.324219,-1.886718 -0.359376,-0.499997 -0.539063,-1.059892 -0.539063,-1.679688 0,-0.510411 0.117187,-0.984369 0.351563,-1.421875 0.234374,-0.437493 0.598957,-0.796868 1.09375,-1.078125 -0.260418,-0.281242 -0.457033,-0.5677 -0.589844,-0.859375 -0.132813,-0.291658 -0.19922,-0.588533 -0.199219,-0.890625 -10e-7,-0.703115 0.274739,-1.298167 0.824219,-1.785156 0.549477,-0.486968 1.321612,-0.730457 2.316406,-0.730469 1.020829,1.2e-5 1.824213,0.243501 2.410157,0.730469 0.58593,0.486989 0.930982,1.121103 1.035156,1.902344 z m -1.960938,6.726562 c 0.229161,-0.208331 0.399734,-0.407549 0.511719,-0.597656 0.111973,-0.190101 0.167963,-0.373695 0.167969,-0.550781 -6e-6,-0.171872 -0.0599,-0.348955 -0.179688,-0.53125 -0.119797,-0.182288 -0.447922,-0.468746 -0.984375,-0.859375 l -2.132812,-1.546875 c -0.177086,0.104173 -0.333336,0.25261 -0.46875,0.445312 -0.135419,0.192714 -0.203127,0.398443 -0.203125,0.617188 -2e-6,0.526046 0.35156,1.026046 1.054687,1.5 z"
+ style="font-size:16px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#c0c0c0;fill-opacity:1;stroke:#c0c0c0;stroke-width:0.30000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+ id="path4012"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
height="200"
id="svg2"
version="1.1"
- inkscape:version="0.48.4 r9939"
+ inkscape:version="0.91 r13725"
inkscape:export-filename="/home/tom/rails/app/assets/images/sprite.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
id="tspan3023"
x="264.8125"
y="869.62622">?</tspan></text>
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path3386"
+ d="m 244,884.36218 0,-7 1,-1 10,0 1,1 0,7 -1,1 -3,0 -2,3 -2,-3 -3,0 z"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;enable-background:accumulate" />
</g>
</svg>
height="500"
id="svg2"
version="1.1"
- inkscape:version="0.48.2 r9819"
+ inkscape:version="0.48.4 r9939"
sodipodi:docname="welcome-sprite.svg"
- inkscape:export-filename="/Users/saman/work_repos/openstreetmap-website/app/assets/images/welcome-sprite.png"
+ inkscape:export-filename="C:\Users\simon\Downloads\welcome-sprite.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
- inkscape:cx="424.69193"
+ inkscape:cx="372.09193"
inkscape:cy="435.3413"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
- inkscape:snap-bbox="true"
+ inkscape:snap-bbox="false"
inkscape:snap-nodes="true"
inkscape:object-paths="true"
- inkscape:object-nodes="true">
+ inkscape:object-nodes="true"
+ inkscape:snap-grids="true"
+ inkscape:snap-global="false">
<inkscape:grid
type="xygrid"
id="grid2985"
orientation="0,1"
position="420,400"
id="guide3038" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="799,715"
+ id="guide3196" />
</sodipodi:namedview>
<metadata
id="metadata7">
sodipodi:cy="42.5"
sodipodi:rx="42.5"
sodipodi:ry="42.5"
- d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ d="M 85,42.5 C 85,65.972102 65.972102,85 42.5,85 19.027898,85 0,65.972102 0,42.5 0,19.027898 19.027898,0 42.5,0 65.972102,0 85,19.027898 85,42.5 z"
transform="matrix(1.0588235,0,0,1.0588235,5,557.36218)" />
<path
sodipodi:type="arc"
sodipodi:cy="42.5"
sodipodi:rx="42.5"
sodipodi:ry="42.5"
- d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ d="M 85,42.5 C 85,65.972102 65.972102,85 42.5,85 19.027898,85 0,65.972102 0,42.5 0,19.027898 19.027898,0 42.5,0 65.972102,0 85,19.027898 85,42.5 z"
transform="matrix(1.0588235,0,0,1.0588235,105,557.36218)" />
<path
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:cy="42.5"
sodipodi:rx="42.5"
sodipodi:ry="42.5"
- d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ d="M 85,42.5 C 85,65.972102 65.972102,85 42.5,85 19.027898,85 0,65.972102 0,42.5 0,19.027898 19.027898,0 42.5,0 65.972102,0 85,19.027898 85,42.5 z"
transform="matrix(0.3529412,0,0,0.3529412,235,587.36218)" />
<path
style="opacity:0.5;color:#000000;fill:#7092ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.05882347;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:cy="42.5"
sodipodi:rx="42.5"
sodipodi:ry="42.5"
- d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ d="M 85,42.5 C 85,65.972102 65.972102,85 42.5,85 19.027898,85 0,65.972102 0,42.5 0,19.027898 19.027898,0 42.5,0 65.972102,0 85,19.027898 85,42.5 z"
transform="matrix(1.0588235,0,0,1.0588235,605,557.36218)" />
<path
style="color:#000000;fill:#7092ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="g12979">
<path
transform="matrix(1.0666649,0,0,1.0666649,-20.332779,546.02902)"
- d="m 335,80 a 15,15 0 1 1 -30,0 15,15 0 1 1 30,0 z"
+ d="m 335,80 c 0,8.284271 -6.71573,15 -15,15 -8.28427,0 -15,-6.715729 -15,-15 0,-8.284271 6.71573,-15 15,-15 8.28427,0 15,6.715729 15,15 z"
sodipodi:ry="15"
sodipodi:rx="15"
sodipodi:cy="80"
sodipodi:cy="80"
sodipodi:rx="15"
sodipodi:ry="15"
- d="m 335,80 a 15,15 0 1 1 -30,0 15,15 0 1 1 30,0 z"
+ d="m 335,80 c 0,8.284271 -6.71573,15 -15,15 -8.28427,0 -15,-6.715729 -15,-15 0,-8.284271 6.71573,-15 15,-15 8.28427,0 15,6.715729 15,15 z"
transform="matrix(0.46666693,0,0,0.46666693,171.66658,594.02886)" />
</g>
<path
transform="matrix(1.0588235,0,0,1.0588235,605,557.36218)"
- d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ d="M 85,42.5 C 85,65.972102 65.972102,85 42.5,85 19.027898,85 0,65.972102 0,42.5 0,19.027898 19.027898,0 42.5,0 65.972102,0 85,19.027898 85,42.5 z"
sodipodi:ry="42.5"
sodipodi:rx="42.5"
sodipodi:cy="42.5"
y="597.36218"
rx="3"
ry="2.2500007" />
+ <path
+ transform="matrix(1.0588235,0,0,1.0588235,705,557.36218)"
+ d="m 85,42.5 a 42.5,42.5 0 1 1 -85,0 42.5,42.5 0 1 1 85,0 z"
+ sodipodi:ry="42.5"
+ sodipodi:rx="42.5"
+ sodipodi:cy="42.5"
+ sodipodi:cx="42.5"
+ id="path16825-7"
+ style="color:#000000;fill:#7092ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <text
+ xml:space="preserve"
+ style="font-size:48px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#ffffff;font-family:Sans;stroke-opacity:1"
+ x="736.80469"
+ y="614.78406"
+ id="text3795"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3797"
+ x="736.80469"
+ y="614.78406"
+ style="font-weight:normal;-inkscape-font-specification:Sans;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1">§</tspan></text>
</g>
</svg>
var querystring = require('querystring-component');
-function remoteEditHandler(bbox, object) {
- var loaded = false,
- url = document.location.protocol === "https:" ?
- "https://127.0.0.1:8112/load_and_zoom?" :
- "http://127.0.0.1:8111/load_and_zoom?",
- query = {
- left: bbox.getWest() - 0.0001,
- top: bbox.getNorth() + 0.0001,
- right: bbox.getEast() + 0.0001,
- bottom: bbox.getSouth() - 0.0001
- };
-
- if (object) query.select = object.type + object.id;
-
- var iframe = $('<iframe>')
- .hide()
- .appendTo('body')
- .attr("src", url + querystring.stringify(query))
- .on('load', function() {
- $(this).remove();
- loaded = true;
- });
-
- setTimeout(function () {
- if (!loaded) {
- alert(I18n.t('site.index.remote_failed'));
- iframe.remove();
- }
- }, 1000);
-
- return false;
-}
-
/*
* Called as the user scrolls/zooms around to maniplate hrefs of the
* view tab and various other links
*/
-function updateLinks(loc, zoom, layers, object) {
+window.updateLinks = function (loc, zoom, layers, object) {
$(".geolink").each(function(index, link) {
var href = link.href.split(/[?#]/)[0],
args = querystring.parse(link.search.substring(1)),
editlink = $(link).hasClass("editlink");
- delete args['node'];
- delete args['way'];
- delete args['relation'];
- delete args['changeset'];
+ delete args.node;
+ delete args.way;
+ delete args.relation;
+ delete args.changeset;
if (object && editlink) {
args[object.type] = object.id;
.toggleClass('disabled', editDisabled)
.attr('data-original-title', editDisabled ?
I18n.t('javascripts.site.edit_disabled_tooltip') : '');
-}
-
-function escapeHTML(string) {
- var htmlEscapes = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- "'": '''
- };
- return string == null ? '' : (string + '').replace(/[&<>"']/g, function(match) {
- return htmlEscapes[match];
- });
-}
+};
-function maximiseMap() {
+window.maximiseMap = function () {
$("#content").addClass("maximised");
-}
+};
-function minimiseMap() {
+window.minimiseMap = function () {
$("#content").removeClass("maximised");
-}
+};
$(document).ready(function () {
+ var headerWidth = 0,
+ compactWidth = 0;
+
+ $("header").children(":visible").each(function (i,e) {
+ headerWidth = headerWidth + $(e).outerWidth();
+ });
+
+ $("body").addClass("compact");
+
+ $("header").children(":visible").each(function (i,e) {
+ compactWidth = compactWidth + $(e).outerWidth();
+ });
+
+ $("body").removeClass("compact");
+
+ function updateHeader() {
+ var windowWidth = $(window).width();
+
+ if (windowWidth < compactWidth) {
+ $("body").removeClass("compact").addClass("small");
+ } else if (windowWidth < headerWidth) {
+ $("body").addClass("compact").removeClass("small");
+ } else {
+ $("body").removeClass("compact").removeClass("small");
+ }
+ }
+
+ updateHeader();
+
+ $(window).resize(updateHeader);
+
$("#menu-icon").on("click", function(e) {
e.preventDefault();
$("header").toggleClass("closed");
map.removeLayer(marker);
}
- marker = L.marker(e.latlng, {icon: getUserIcon()}).addTo(map)
+ marker = L.marker(e.latlng, {icon: OSM.getUserIcon()}).addTo(map)
.bindPopup(I18n.t('diary_entry.edit.marker_text'));
}
map.setView(centre, params.zoom);
if ($("#latitude").val() && $("#longitude").val()) {
- marker = L.marker(centre, {icon: getUserIcon()}).addTo(map)
+ marker = L.marker(centre, {icon: OSM.getUserIcon()}).addTo(map)
.bindPopup(I18n.t('diary_entry.edit.marker_text'));
}
var map = L.map("map");
map.attributionControl.setPrefix('');
+ map.removeControl(map.attributionControl);
- if (!args.layer || args.layer == "mapnik" || args.layer == "osmarender") {
+ if (!args.layer || args.layer === "mapnik" || args.layer === "osmarender") {
new L.OSM.Mapnik().addTo(map);
- } else if (args.layer == "cyclemap" || args.layer == "cycle map") {
+ } else if (args.layer === "cyclemap" || args.layer === "cycle map") {
new L.OSM.CycleMap().addTo(map);
- } else if (args.layer == "transportmap") {
+ } else if (args.layer === "transportmap") {
new L.OSM.TransportMap().addTo(map);
- } else if (args.layer == "mapquest") {
+ } else if (args.layer === "mapquest") {
new L.OSM.MapQuestOpen().addTo(map);
- } else if (args.layer == "hot") {
+ } else if (args.layer === "hot") {
new L.OSM.HOT().addTo(map);
}
if (args.bbox) {
var bbox = args.bbox.split(',');
map.fitBounds([L.latLng(bbox[1], bbox[0]),
- L.latLng(bbox[3], bbox[2])])
+ L.latLng(bbox[3], bbox[2])]);
} else {
map.fitWorld();
}
+
+ map.addControl(new L.Control.OSMReportAProblem());
};
+
+L.Control.OSMReportAProblem = L.Control.Attribution.extend({
+ options: {
+ position: 'bottomright',
+ prefix: '<a href="http://www.openstreetmap.org/fixthemap?lat={x}&lon={y}&zoom={z}">Report a problem</a>'
+ },
+
+ onAdd: function (map) {
+ var container = L.Control.Attribution.prototype.onAdd.call(this, map);
+
+ map.on('moveend', this._update, this);
+
+ return container;
+ },
+
+ _update: function () {
+ L.Control.Attribution.prototype._update.call(this);
+
+ this._container.innerHTML =
+ this._container.innerHTML
+ .replace('{x}', this._map.getCenter().lat)
+ .replace('{y}', this._map.getCenter().lng)
+ .replace('{z}', this._map.getZoom());
+ }
+});
// IE<10 doesn't respect Vary: X-Requested-With header, so
// prevent caching the XHR response as a full-page URL.
if (path.indexOf('?') >= 0) {
- path += '&xhr=1'
+ path += '&xhr=1';
} else {
- path += '?xhr=1'
+ path += '?xhr=1';
}
$('#sidebar_content')
if (xhr.getResponseHeader('X-Page-Title')) {
var title = xhr.getResponseHeader('X-Page-Title');
- document.title = decodeURIComponent(escape(title));
+ document.title = decodeURIComponent(title);
}
$('head')
L.control.scale()
.addTo(map);
- if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
- initializeNotes(map);
+ if (OSM.STATUS !== 'api_offline' && OSM.STATUS !== 'database_offline') {
+ OSM.initializeNotes(map);
if (params.layers.indexOf(map.noteLayer.options.code) >= 0) {
map.addLayer(map.noteLayer);
}
- initializeBrowse(map);
+ OSM.initializeBrowse(map);
if (params.layers.indexOf(map.dataLayer.options.code) >= 0) {
map.addLayer(map.dataLayer);
}
}
- $('.leaflet-control .control-button').tooltip({placement: 'left', container: 'body'});
+ var placement = $('html').attr('dir') === 'rtl' ? 'right' : 'left';
+ $('.leaflet-control .control-button').tooltip({placement: placement, container: 'body'});
var expiry = new Date();
expiry.setYear(expiry.getFullYear() + 10);
$.cookie("_osm_location", OSM.locationCookie(map), { expires: expiry, path: "/" });
});
- if ($.cookie('_osm_welcome') == 'hide') {
+ if ($.cookie('_osm_welcome') === 'hide') {
$('.welcome').hide();
}
map.setView([params.lat, params.lon], params.zoom);
}
- var marker = L.marker([0, 0], {icon: getUserIcon()});
+ var marker = L.marker([0, 0], {icon: OSM.getUserIcon()});
if (params.marker) {
marker.setLatLng([params.mlat, params.mlon]).addTo(map);
marker.setLatLng(center).addTo(map);
});
+ function remoteEditHandler(bbox, object) {
+ var loaded = false,
+ url = document.location.protocol === "https:" ?
+ "https://127.0.0.1:8112/load_and_zoom?" :
+ "http://127.0.0.1:8111/load_and_zoom?",
+ query = {
+ left: bbox.getWest() - 0.0001,
+ top: bbox.getNorth() + 0.0001,
+ right: bbox.getEast() + 0.0001,
+ bottom: bbox.getSouth() - 0.0001
+ };
+
+ if (object) query.select = object.type + object.id;
+
+ var iframe = $('<iframe>')
+ .hide()
+ .appendTo('body')
+ .attr("src", url + querystring.stringify(query))
+ .on('load', function() {
+ $(this).remove();
+ loaded = true;
+ });
+
+ setTimeout(function () {
+ if (!loaded) {
+ alert(I18n.t('site.index.remote_failed'));
+ iframe.remove();
+ }
+ }, 1000);
+
+ return false;
+ }
+
$("a[data-editor=remote]").click(function(e) {
var params = OSM.mapParams(this.search);
remoteEditHandler(map.getBounds(), params.object);
};
function addObject(type, id, center) {
- var bounds = map.addObject({type: type, id: parseInt(id)}, function(bounds) {
+ map.addObject({type: type, id: parseInt(id)}, function(bounds) {
if (!window.location.hash && bounds.isValid() &&
(center || !map.getBounds().contains(bounds))) {
OSM.router.withoutMoveListener(function () {
"/query": OSM.Query(map)
});
- if (OSM.preferred_editor == "remote" && document.location.pathname == "/edit") {
+ if (OSM.preferred_editor === "remote" && document.location.pathname === "/edit") {
remoteEditHandler(map.getBounds(), params.object);
OSM.router.setCurrentPath("/");
}
if (OSM.router.route(this.pathname + this.search + this.hash))
e.preventDefault();
});
-
- $(".search_form").on("submit", function(e) {
- e.preventDefault();
- $("header").addClass("closed");
- var query = $(this).find("input[name=query]").val();
- if (query) {
- OSM.router.route("/search?query=" + encodeURIComponent(query) + OSM.formatHash(map));
- } else {
- OSM.router.route("/");
- }
- });
-
- $(".describe_location").on("click", function(e) {
- e.preventDefault();
- var center = map.getCenter().wrap(),
- precision = OSM.zoomPrecision(map.getZoom());
- OSM.router.route("/search?query=" + encodeURIComponent(
- center.lat.toFixed(precision) + "," + center.lng.toFixed(precision)
- ));
- });
});
-function initializeBrowse(map) {
+OSM.initializeBrowse = function (map) {
var browseBounds;
var selectedLayer;
var dataLayer = map.dataLayer;
// Stash the currently drawn feature
selectedLayer = layer;
}
-}
+};
};
function addChangeset(id, center) {
- var bounds = map.addObject({type: 'changeset', id: parseInt(id)}, function(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 () {
}
function updateChangeset(form, method, url, include_data) {
+ var data;
+
$(form).find("input[type=submit]").prop("disabled", true);
+
if(include_data) {
data = {text: $(form.text).val()};
} else {
content.find("textarea").on("input", function (e) {
var form = e.target.form;
- if ($(e.target).val() == "") {
+ 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;
-};
\ No newline at end of file
+};
});
var endpoints = [
- Endpoint($("input[name='route_from']"), <%= asset_path('marker-green.png').to_json %>),
- Endpoint($("input[name='route_to']"), <%= asset_path('marker-red.png').to_json %>)
+ Endpoint($("input[name='route_from']"), OSM.MARKER_GREEN),
+ Endpoint($("input[name='route_to']"), OSM.MARKER_RED)
];
function Endpoint(input, iconUrl) {
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
- shadowUrl: <%= asset_path('images/marker-shadow.png').to_json %>,
+ shadowUrl: OSM.MARKER_SHADOW,
shadowSize: [41, 41]
}),
draggable: true
});
endpoint.marker.on('drag dragend', function (e) {
- dragging = (e.type == 'drag');
+ dragging = (e.type === 'drag');
if (dragging && !chosenEngine.draggable) return;
if (dragging && awaitingRoute) return;
endpoint.setLatLng(e.target.getLatLng());
input.on("change", function (e) {
// make text the same in both text boxes
var value = e.target.value;
- endpoint.setValue(value)
+ endpoint.setValue(value);
});
endpoint.setValue = function(value) {
delete endpoint.latlng;
input.val(value);
endpoint.getGeocode();
- }
+ };
endpoint.getGeocode = function() {
// if no one has entered a value yet, then we can't geocode, so don't
endpoint.awaitingGeocode = true;
- $.getJSON(document.location.protocol + '<%= NOMINATIM_URL %>search?q=' + encodeURIComponent(endpoint.value) + '&format=json', function (json) {
+ $.getJSON(document.location.protocol + OSM.NOMINATIM_URL + 'search?q=' + encodeURIComponent(endpoint.value) + '&format=json', function (json) {
endpoint.awaitingGeocode = false;
endpoint.hasGeocode = true;
- if (json.length == 0) {
+ if (json.length === 0) {
alert(I18n.t('javascripts.directions.errors.no_place'));
return;
}
getRoute();
}
});
- }
+ };
endpoint.setLatLng = function (ll) {
var precision = OSM.zoomPrecision(map.getZoom());
return endpoint;
}
- $(".directions_form a.directions_close").on("click", function(e) {
+ $(".directions_form .close").on("click", function(e) {
e.preventDefault();
var route_from = endpoints[0].value;
if (route_from) {
function setEngine(id) {
engines.forEach(function(engine, i) {
- if (engine.id == id) {
+ if (engine.id === id) {
chosenEngine = engine;
select.val(i);
}
}
function getRoute() {
+ // Cancel any route that is already in progress
+ if (awaitingRoute) awaitingRoute.abort();
+
// go fetch geocodes for any endpoints which have not already
// been geocoded.
for (var ep_i = 0; ep_i < 2; ++ep_i) {
// just using it in-place and replacing it in case it has to be used
// again.
$('#sidebar_content').html($('.directions_form .loader_copy').html());
- awaitingRoute = true;
map.setSidebarOverlaid(false);
- chosenEngine.getRoute([o, d], function (err, route) {
- awaitingRoute = false;
+ awaitingRoute = chosenEngine.getRoute([o, d], function (err, route) {
+ awaitingRoute = null;
if (err) {
map.removeLayer(polyline);
$(".routing_marker").on('dragstart', function (e) {
e.originalEvent.dataTransfer.effectAllowed = 'move';
- e.originalEvent.dataTransfer.setData('id', this.id);
- var xo = e.originalEvent.clientX - $(e.target).offset().left;
- var yo = e.originalEvent.clientY - $(e.target).offset().top;
- e.originalEvent.dataTransfer.setData('offsetX', e.originalEvent.target.width / 2 - xo);
- e.originalEvent.dataTransfer.setData('offsetY', e.originalEvent.target.height - yo);
+ e.originalEvent.dataTransfer.setData('type', $(this).data('type'));
+ var img = $("<img>").attr("src", $(e.originalEvent.target).attr("src"));
+ e.originalEvent.dataTransfer.setDragImage(img.get(0), 12, 21);
});
var page = {};
$("#map").on('drop', function (e) {
e.preventDefault();
var oe = e.originalEvent;
- var id = oe.dataTransfer.getData('id');
+ var type = oe.dataTransfer.getData('type');
var pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present
- pt.x += Number(oe.dataTransfer.getData('offsetX'));
- pt.y += Number(oe.dataTransfer.getData('offsetY'));
+ pt.y += 20;
var ll = map.containerPointToLatLng(pt);
- endpoints[id === 'marker_from' ? 0 : 1].setLatLng(ll);
+ endpoints[type === 'from' ? 0 : 1].setLatLng(ll);
getRoute();
});
setEngine(params.engine);
}
- if (params.from) {
- endpoints[0].setValue(params.from);
- endpoints[1].setValue("");
- } else {
- endpoints[0].setValue("");
- endpoints[1].setValue("");
- }
+ endpoints[0].setValue(params.from || "");
+ endpoints[1].setValue(params.to || "");
var o = route[0] && L.latLng(route[0].split(',')),
d = route[1] && L.latLng(route[1].split(','));
OSM.Directions.engines = [];
OSM.Directions.addEngine = function (engine, supportsHTTPS) {
- if (document.location.protocol == "http:" || supportsHTTPS) {
+ if (document.location.protocol === "http:" || supportsHTTPS) {
OSM.Directions.engines.push(engine);
}
};
2: 2, // right
3: 3, // sharp right
4: -1, // finish reached
- 5: -1 // via reached
+ 5: -1, // via reached
+ 6: 11 // roundabout
};
return {
draggable: false,
getRoute: function (points, callback) {
- // documentation
- // https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md
- var url = document.location.protocol + "//graphhopper.com/api/1/route?"
- + vehicleParam
- + "&locale=" + I18n.currentLocale()
- + "&key=LijBPDQGfu7Iiq80w3HzwB4RUDJbMbhs6BU0dEnn"
- + "&type=jsonp"
- + "&instructions=true";
+ // GraphHopper Directions API documentation
+ // https://github.com/graphhopper/directions-api/blob/master/docs-routing.md
+ var url = document.location.protocol + "//graphhopper.com/api/1/route?" +
+ vehicleParam +
+ "&locale=" + I18n.currentLocale() +
+ "&key=LijBPDQGfu7Iiq80w3HzwB4RUDJbMbhs6BU0dEnn" +
+ "&type=jsonp" +
+ "&elevation=false" +
+ "&instructions=true";
for (var i = 0; i < points.length; i++) {
url += "&point=" + points[i].lat + ',' + points[i].lng;
}
- $.ajax({
+ return $.ajax({
url: url,
dataType: 'jsonp',
success: function (data) {
- if (!data.paths || data.paths.length == 0)
+ if (!data.paths || data.paths.length === 0)
return callback(true);
var path = data.paths[0];
};
}
-OSM.Directions.addEngine(GraphHopperEngine("graphhopper_bicycle", "vehicle=bike"), true);
-OSM.Directions.addEngine(GraphHopperEngine("graphhopper_foot", "vehicle=foot"), true);
+OSM.Directions.addEngine(new GraphHopperEngine("graphhopper_bicycle", "vehicle=bike"), true);
+OSM.Directions.addEngine(new GraphHopperEngine("graphhopper_foot", "vehicle=foot"), true);
url += "&manMaps=false";
url += "&shapeFormat=raw&generalize=0&unit=k";
- $.ajax({
+ return $.ajax({
url: url,
success: function (data) {
- if (data.info.statuscode != 0)
+ if (data.info.statuscode !== 0)
return callback(true);
+ var i;
var line = [];
var shape = data.route.shape.shapePoints;
- for (var i = 0; i < shape.length; i += 2) {
+ for (i = 0; i < shape.length; i += 2) {
line.push(L.latLng(shape[i], shape[i + 1]));
}
// data.route.legs[0].maneuvers is list of turns
var steps = [];
var mq = data.route.legs[0].maneuvers;
- for (var i = 0; i < mq.length; i++) {
+ for (i = 0; i < mq.length; i++) {
var s = mq[i];
var d;
var linesegstart, linesegend, lineseg;
linesegstart = data.route.shape.maneuverIndexes[i];
- if (i == mq.length - 1) {
+ if (i === mq.length - 1) {
d = 15;
linesegend = linesegstart + 1;
} else {
line: line,
steps: steps,
distance: data.route.distance * 1000,
- time: data.route['time']
+ time: data.route.time
});
}
});
};
}
-OSM.Directions.addEngine(MapQuestEngine("mapquest_bicycle", "routeType=bicycle"), true);
-OSM.Directions.addEngine(MapQuestEngine("mapquest_foot", "routeType=pedestrian"), true);
-OSM.Directions.addEngine(MapQuestEngine("mapquest_car", "routeType=fastest"), true);
+OSM.Directions.addEngine(new MapQuestEngine("mapquest_bicycle", "routeType=bicycle"), true);
+OSM.Directions.addEngine(new MapQuestEngine("mapquest_foot", "routeType=pedestrian"), true);
+OSM.Directions.addEngine(new MapQuestEngine("mapquest_car", "routeType=fastest"), true);
getRoute: function (points, callback) {
var TURN_INSTRUCTIONS = [
"",
- I18n.t('javascripts.directions.instructions.continue_on'), // 1
- I18n.t('javascripts.directions.instructions.slight_right'), // 2
- I18n.t('javascripts.directions.instructions.turn_right'), // 3
- I18n.t('javascripts.directions.instructions.sharp_right'), // 4
- I18n.t('javascripts.directions.instructions.uturn'), // 5
- I18n.t('javascripts.directions.instructions.sharp_left'), // 6
- I18n.t('javascripts.directions.instructions.turn_left'), // 7
- I18n.t('javascripts.directions.instructions.slight_left'), // 8
- I18n.t('javascripts.directions.instructions.via_point'), // 9
- I18n.t('javascripts.directions.instructions.follow'), // 10
- I18n.t('javascripts.directions.instructions.roundabout'), // 11
- I18n.t('javascripts.directions.instructions.leave_roundabout'), // 12
- I18n.t('javascripts.directions.instructions.stay_roundabout'), // 13
- I18n.t('javascripts.directions.instructions.start'), // 14
- I18n.t('javascripts.directions.instructions.destination'), // 15
- I18n.t('javascripts.directions.instructions.against_oneway'), // 16
- I18n.t('javascripts.directions.instructions.end_oneway') // 17
+ 'javascripts.directions.instructions.continue', // 1
+ 'javascripts.directions.instructions.slight_right', // 2
+ 'javascripts.directions.instructions.turn_right', // 3
+ 'javascripts.directions.instructions.sharp_right', // 4
+ 'javascripts.directions.instructions.uturn', // 5
+ 'javascripts.directions.instructions.sharp_left', // 6
+ 'javascripts.directions.instructions.turn_left', // 7
+ 'javascripts.directions.instructions.slight_left', // 8
+ 'javascripts.directions.instructions.via_point', // 9
+ 'javascripts.directions.instructions.follow', // 10
+ 'javascripts.directions.instructions.roundabout', // 11
+ 'javascripts.directions.instructions.leave_roundabout', // 12
+ 'javascripts.directions.instructions.stay_roundabout', // 13
+ 'javascripts.directions.instructions.start', // 14
+ 'javascripts.directions.instructions.destination', // 15
+ 'javascripts.directions.instructions.against_oneway', // 16
+ 'javascripts.directions.instructions.end_oneway' // 17
];
var url = document.location.protocol + "//router.project-osrm.org/viaroute?z=14&output=json&instructions=true";
url += "&checksum=" + hintData.checksum;
}
- $.ajax({
+ return $.ajax({
url: url,
dataType: 'json',
success: function (data) {
- if (data.status == 207)
+ if (data.status === 207)
return callback(true);
previousPoints = points;
var linesegend;
var instCodes = s[0].split('-');
var instText = "<b>" + (i + 1) + ".</b> ";
- instText += TURN_INSTRUCTIONS[instCodes[0]];
- if (instCodes[1]) {
- instText += "exit " + instCodes[1] + " ";
- }
- if (instCodes[0] != 15) {
- instText += s[1] ? "<b>" + s[1] + "</b>" : I18n.t('javascripts.directions.instructions.unnamed');
+ var name = s[1] ? "<b>" + s[1] + "</b>" : I18n.t('javascripts.directions.instructions.unnamed');
+ if (instCodes[0] === "11" && instCodes[1]) {
+ instText += I18n.t(TURN_INSTRUCTIONS[instCodes[0]] + '_with_exit', { exit: instCodes[1], name: name } );
+ } else {
+ instText += I18n.t(TURN_INSTRUCTIONS[instCodes[0]] + '_without_exit', { name: name });
}
if ((i + 1) < data.route_instructions.length) {
linesegend = data.route_instructions[i + 1][3] + 1;
};
}
-OSM.Directions.addEngine(OSRMEngine(), true);
+OSM.Directions.addEngine(new OSRMEngine(), true);
url: window.location.pathname,
method: "GET",
data: data,
- success: function(html, status, xhr) {
+ success: function(html) {
$('#sidebar_content .changesets').html(html);
updateMap();
}
var noteIcons = {
"new": L.icon({
- iconUrl: "<%= image_path 'new_note_marker.png' %>",
+ iconUrl: OSM.NEW_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"open": L.icon({
- iconUrl: "<%= image_path 'open_note_marker.png' %>",
+ iconUrl: OSM.OPEN_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"closed": L.icon({
- iconUrl: "<%= image_path 'closed_note_marker.png' %>",
+ iconUrl: OSM.CLOSED_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
})
};
function newHalo(loc, a) {
- if (a == 'dragstart' && map.hasLayer(halo)) {
+ if (a === 'dragstart' && map.hasLayer(halo)) {
map.removeLayer(halo);
} else {
if (map.hasLayer(halo)) map.removeLayer(halo);
var mapSize = map.getSize();
var markerPosition;
- if (mapSize.y > 800) {
- markerPosition = [mapSize.x / 2, mapSize.y / 2];
- } else if (mapSize.y > 400) {
- markerPosition = [mapSize.x / 2, 400];
- } else {
- markerPosition = [mapSize.x / 2, mapSize.y];
- }
+ markerPosition = [mapSize.x / 2, mapSize.y / 2];
newNote = L.marker(map.containerPointToLatLng(markerPosition), {
icon: noteIcons["new"],
OSM.Note = function (map) {
- var noteLayer = map.noteLayer,
- content = $('#sidebar_content'),
+ var content = $('#sidebar_content'),
page = {},
halo, currentNote;
var noteIcons = {
"new": L.icon({
- iconUrl: "<%= image_path('new_note_marker.png') %>",
+ iconUrl: OSM.NEW_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"open": L.icon({
- iconUrl: "<%= image_path('open_note_marker.png') %>",
+ iconUrl: OSM.OPEN_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"closed": L.icon({
- iconUrl: "<%= image_path('closed_note_marker.png') %>",
+ iconUrl: OSM.CLOSED_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
})
content.find("textarea").on("input", function (e) {
var form = e.target.form;
- if ($(e.target).val() == "") {
+ if ($(e.target).val() === "") {
$(form.close).val(I18n.t("javascripts.notes.show.resolve"));
$(form.comment).prop("disabled", true);
} else {
map.addLayer(currentNote);
if (callback) callback();
- };
+ }
function moveToNote() {
var data = $('.details').data(),
-function initializeNotes(map) {
+OSM.initializeNotes = function (map) {
var noteLayer = map.noteLayer,
notes = {};
var noteIcons = {
"new": L.icon({
- iconUrl: "<%= image_path 'new_note_marker.png' %>",
+ iconUrl: OSM.NEW_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"open": L.icon({
- iconUrl: "<%= image_path 'open_note_marker.png' %>",
+ iconUrl: OSM.OPEN_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
}),
"closed": L.icon({
- iconUrl: "<%= image_path 'closed_note_marker.png' %>",
+ iconUrl: OSM.CLOSED_NOTE_MARKER,
iconSize: [25, 40],
iconAnchor: [12, 40]
})
};
map.on("layeradd", function (e) {
- if (e.layer == noteLayer) {
+ if (e.layer === noteLayer) {
loadNotes();
map.on("moveend", loadNotes);
}
}).on("layerremove", function (e) {
- if (e.layer == noteLayer) {
+ if (e.layer === noteLayer) {
map.off("moveend", loadNotes);
noteLayer.clearLayers();
notes = {};
noteLoader = null;
}
}
-}
+};
} else if (!queryButton.hasClass("disabled")) {
enableQueryMode();
}
- }).on("disabled", function (e) {
+ }).on("disabled", function () {
if (queryButton.hasClass("active")) {
map.off("click", clickHandler);
$(map.getContainer()).removeClass("query-active").addClass("query-disabled");
$(this).tooltip("show");
}
- }).on("enabled", function (e) {
+ }).on("enabled", function () {
if (queryButton.hasClass("active")) {
map.on("click", clickHandler);
$(map.getContainer()).removeClass("query-disabled").addClass("query-active");
$("#sidebar_content")
.on("mouseover", ".query-results li.query-result", function () {
- var geometry = $(this).data("geometry")
+ var geometry = $(this).data("geometry");
if (geometry) map.addLayer(geometry);
$(this).addClass("selected");
})
.on("mouseout", ".query-results li.query-result", function () {
- var geometry = $(this).data("geometry")
+ var geometry = $(this).data("geometry");
if (geometry) map.removeLayer(geometry);
$(this).removeClass("selected");
})
- .on("mousedown", ".query-results li.query-result", function (e) {
+ .on("mousedown", ".query-results li.query-result", function () {
var moved = false;
$(this).one("click", function (e) {
if (!moved) {
- var geometry = $(this).data("geometry")
+ var geometry = $(this).data("geometry");
if (geometry) map.removeLayer(geometry);
if (!$(e.target).is('a')) {
});
});
- function interestingFeature(feature, origin, radius) {
+ function interestingFeature(feature) {
if (feature.tags) {
for (var key in feature.tags) {
if (uninterestingTags.indexOf(key) < 0) {
var prefix = "";
if (tags.boundary === "administrative" && tags.admin_level) {
- prefix =
- I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, {
+ prefix = I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, {
defaultValue: I18n.t("geocoder.search_osm_nominatim.prefix.boundary.administrative")
- })
+ });
} else {
var prefixes = I18n.t("geocoder.search_osm_nominatim.prefix");
+ var key, value;
- for (var key in tags) {
- var value = tags[key];
+ for (key in tags) {
+ value = tags[key];
if (prefixes[key]) {
if (prefixes[key][value]) {
}
}
- for (var key in tags) {
- var value = tags[key];
+ for (key in tags) {
+ value = tags[key];
if (prefixes[key]) {
var first = value.substr(0, 1).toUpperCase(),
}
}
- if (tags["name"]) {
- return tags["name"];
- } else if (tags["ref"]) {
- return tags["ref"];
+ if (tags.name) {
+ return tags.name;
+ } else if (tags.ref) {
+ return tags.ref;
} else if (tags["addr:housename"]) {
return tags["addr:housename"];
} else if (tags["addr:housenumber"] && tags["addr:street"]) {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
- if (interestingFeature(element, latlng, radius)) {
+ if (interestingFeature(element)) {
var $li = $("<li>")
.addClass("query-result")
.data("geometry", featureGeometry(element))
}
}
- if ($ul.find("li").length == 0) {
+ if ($ul.find("li").length === 0) {
$("<li>")
.text(I18n.t("javascripts.query.nothing_found"))
.appendTo($ul);
* for each object.
*/
function queryOverpass(lat, lng) {
- var latlng = L.latLng(lat, lng),
- bounds = map.getBounds(),
+ var latlng = L.latLng(lat, lng).wrap(),
+ bounds = map.getBounds().wrap(),
bbox = bounds.getSouth() + "," + bounds.getWest() + "," + bounds.getNorth() + "," + bounds.getEast(),
radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
around = "around:" + radius + "," + lat + "," + lng,
marker = L.circle(latlng, radius, featureStyle).addTo(map);
$(document).everyTime(75, "fadeQueryMarker", function (i) {
- if (i == 10) {
+ if (i === 10) {
map.removeLayer(marker);
} else {
marker.setStyle({
function clickHandler(e) {
var precision = OSM.zoomPrecision(map.getZoom()),
- lat = e.latlng.lat.toFixed(precision),
- lng = e.latlng.lng.toFixed(precision);
+ latlng = e.latlng.wrap(),
+ lat = latlng.lat.toFixed(precision),
+ lng = latlng.lng.toFixed(precision);
OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
}
OSM.Search = function(map) {
$(".search_form input[name=query]").on("input", function(e) {
- if ($(e.target).val() == "") {
+ if ($(e.target).val() === "") {
$(".describe_location").fadeIn(100);
} else {
$(".describe_location").fadeOut(100);
$(".describe_location").on("click", function(e) {
e.preventDefault();
- var precision = OSM.zoomPrecision(map.getZoom());
+ var center = map.getCenter().wrap(),
+ precision = OSM.zoomPrecision(map.getZoom());
OSM.router.route("/search?query=" + encodeURIComponent(
- map.getCenter().lat.toFixed(precision) + "," +
- map.getCenter().lng.toFixed(precision)));
+ center.lat.toFixed(precision) + "," + center.lng.toFixed(precision)
+ ));
});
$("#sidebar_content")
});
}
- function showSearchResult(e) {
+ function showSearchResult() {
var marker = $(this).data("marker");
if (!marker) {
var data = $(this).find("a.set_position").data();
- marker = L.marker([data.lat, data.lon], {icon: getUserIcon()});
+ marker = L.marker([data.lat, data.lon], {icon: OSM.getUserIcon()});
$(this).data("marker", marker);
}
$(this).closest("li").addClass("selected");
}
- function hideSearchResult(e) {
+ function hideSearchResult() {
var marker = $(this).data("marker");
if (marker) {
}
function updateButton() {
- var disabled = map.getMapBaseLayerId() !== 'mapnik'
+ var disabled = map.getMapBaseLayerId() !== 'mapnik';
button
.toggleClass('disabled', disabled)
- .attr('data-original-title', I18n.t(disabled ?
- 'javascripts.key.tooltip_disabled' :
- 'javascripts.key.tooltip'))
+ .attr('data-original-title',
+ I18n.t(disabled ?
+ 'javascripts.key.tooltip_disabled' :
+ 'javascripts.key.tooltip'));
}
function update() {
$('.mapkey-table-entry').each(function () {
var data = $(this).data();
- if (layer == data.layer && zoom >= data.zoomMin && zoom <= data.zoomMax) {
+ if (layer === data.layer && zoom >= data.zoomMin && zoom <= data.zoomMax) {
$(this).show();
} else {
$(this).hide();
.attr('class', 'section base-layers')
.appendTo($ui);
- list = $('<ul>')
+ var baseLayers = $('<ul>')
.appendTo(baseSection);
layers.forEach(function(layer) {
var item = $('<li>')
- .appendTo(list);
+ .appendTo(baseLayers);
if (map.hasLayer(layer)) {
item.addClass('active');
map.fire('baselayerchange', {layer: layer});
});
+ item.on('dblclick', toggle);
+
map.on('layeradd layerremove', function() {
item.toggleClass('active', map.hasLayer(layer));
input.prop('checked', map.hasLayer(layer));
});
});
- if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
+ if (OSM.STATUS !== 'api_offline' && OSM.STATUS !== 'database_offline') {
var overlaySection = $('<div>')
.attr('class', 'section overlay-layers')
.appendTo($ui);
.attr("class", "deemphasize")
.appendTo(overlaySection);
- var list = $('<ul>')
+ var overlays = $('<ul>')
.appendTo(overlaySection);
- function addOverlay(layer, name, maxArea) {
+ var addOverlay = function (layer, name, maxArea) {
var item = $('<li>')
.tooltip({
placement: 'top'
})
- .appendTo(list);
+ .appendTo(overlays);
var label = $('<label>')
.appendTo(item);
item.attr('data-original-title', disabled ?
I18n.t('javascripts.site.map_' + name + '_zoom_in_tooltip') : '');
});
- }
+ };
addOverlay(map.noteLayer, 'notes', OSM.MAX_NOTE_REQUEST_AREA);
addOverlay(map.dataLayer, 'data', OSM.MAX_REQUEST_AREA);
if (layerParam.indexOf(this.baseLayers[i].options.code) >= 0) {
this.addLayer(this.baseLayers[i]);
layersAdded = layersAdded + this.baseLayers[i].options.code;
- } else if (i == 0 && layersAdded == "") {
+ } else if (i === 0 && layersAdded === "") {
this.addLayer(this.baseLayers[i]);
} else {
this.removeLayer(this.baseLayers[i]);
return str;
},
+ getGeoUri: function(marker) {
+ var precision = OSM.zoomPrecision(this.getZoom()),
+ latLng,
+ params = {};
+
+ if (marker && this.hasLayer(marker)) {
+ latLng = marker.getLatLng().wrap();
+ } else {
+ latLng = this.getCenter();
+ }
+
+ params.lat = latLng.lat.toFixed(precision);
+ params.lon = latLng.lng.toFixed(precision);
+ params.zoom = this.getZoom();
+
+ return 'geo:' + params.lat + ',' + params.lon + '?z=' + params.zoom;
+ },
+
addObject: function(object, callback) {
var objectStyle = {
color: "#FF6200",
return true;
} else if (object.type === "relation") {
for (var i = 0; i < relations.length; i++)
- if (relations[i].members.indexOf(node) != -1)
+ if (relations[i].members.indexOf(node) !== -1)
return true;
} else {
return false;
center: this.getCenter().wrap(),
zoom: this.getZoom(),
layers: this.getLayersCode()
- }
+ };
},
setState: function(state, options) {
L.Icon.Default.imagePath = "/images";
L.Icon.Default.imageUrls = {
- "/images/marker-icon.png": "<%= asset_path("images/marker-icon.png") %>",
- "/images/marker-icon-2x.png": "<%= asset_path("images/marker-icon-2x.png") %>",
- "/images/marker-shadow.png": "<%= asset_path("images/marker-shadow.png") %>"
+ "/images/marker-icon.png": OSM.MARKER_ICON,
+ "/images/marker-icon-2x.png": OSM.MARKER_ICON_2X,
+ "/images/marker-shadow.png": OSM.MARKER_SHADOW
};
L.extend(L.Icon.Default.prototype, {
}
});
-function getUserIcon(url) {
+OSM.getUserIcon = function (url) {
return L.icon({
- iconUrl: url || <%= asset_path('marker-red.png').to_json %>,
+ iconUrl: url || OSM.MARKER_RED,
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
- shadowUrl: <%= asset_path('images/marker-shadow.png').to_json %>,
+ shadowUrl: OSM.MARKER_SHADOW,
shadowSize: [41, 41]
});
-}
+};
map.on('zoomend', update);
- update();
-
function update() {
var disabled = OSM.STATUS === "database_offline" || map.getZoom() < 12;
link
'javascripts.site.createnote_tooltip'));
}
+ update();
+
return $container[0];
};
.text(I18n.t('javascripts.share.paste_html'))
.appendTo($linkSection));
+ // Geo URI
+
+ var $geoUriSection = $('<div>')
+ .attr('class', 'section share-geo-uri')
+ .appendTo($ui);
+
+ $('<h4>')
+ .text(I18n.t('javascripts.share.geo_uri'))
+ .appendTo($geoUriSection);
+
+ $('<div>')
+ .appendTo($geoUriSection)
+ .append($('<a>')
+ .attr('id', 'geo_uri'));
+
// Image
var $imageSection = $('<div>')
update();
}
+ function escapeHTML(string) {
+ var htmlEscapes = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+ };
+ return string === null ? '' : (string + '').replace(/[&<>"']/g, function(match) {
+ return htmlEscapes[match];
+ });
+ }
+
function update() {
var bounds = map.getBounds();
'<small><a href="' + escapeHTML(map.getUrl(marker)) + '">' +
escapeHTML(I18n.t('javascripts.share.view_larger_map')) + '</a></small>');
+ // Geo URI
+
+ $('#geo_uri')
+ .attr('href', map.getGeoUri(marker))
+ .html(map.getGeoUri(marker));
+
// Image
if (locationFilter.isEnabled()) {
link.href = '#';
link.title = title;
- var sprite = L.DomUtil.create('span', 'icon ' + className, link);
+ L.DomUtil.create('span', 'icon ' + className, link);
var stop = L.DomEvent.stopPropagation;
STATUS: <%= STATUS.to_json %>,
MAX_NOTE_REQUEST_AREA: <%= MAX_NOTE_REQUEST_AREA.to_json %>,
OVERPASS_URL: <%= OVERPASS_URL.to_json %>,
+ NOMINATIM_URL: <%= NOMINATIM_URL.to_json %>,
+
+ MARKER_GREEN: <%= image_path("marker-green.png").to_json %>,
+ MARKER_RED: <%= image_path("marker-red.png").to_json %>,
+
+ MARKER_ICON: <%= image_path("images/marker-icon.png").to_json %>,
+ MARKER_ICON_2X: <%= image_path("images/marker-icon-2x.png").to_json %>,
+ MARKER_SHADOW: <%= image_path("images/marker-shadow.png").to_json %>,
+
+ NEW_NOTE_MARKER: <%= image_path("new_note_marker.png").to_json %>,
+ OPEN_NOTE_MARKER: <%= image_path("open_note_marker.png").to_json %>,
+ CLOSED_NOTE_MARKER: <%= image_path("closed_note_marker.png").to_json %>,
apiUrl: function (object) {
var url = "/api/" + OSM.API_VERSION + "/" + object.type + "/" + object.id;
var width = editor.outerWidth() - preview.outerWidth() + preview.width();
var minHeight = editor.outerHeight() - preview.outerHeight() + preview.height();
- if (preview.contents().length == 0) {
+ if (preview.contents().length === 0) {
preview.oneTime(500, "loading", function () {
preview.addClass("loading");
});
var routes = [];
for (var r in rts)
- routes.push(Route(r, rts[r]));
+ routes.push(new Route(r, rts[r]));
routes.recognize = function(path) {
for (var i = 0; i < this.length; i++) {
//= require leaflet.locate
$(document).ready(function () {
- var map = L.map("map", {
- attributionControl: false,
- zoomControl: false
- }).addLayer(new L.OSM.Mapnik());
+ if ($("#map").length) {
+ var map = L.map("map", {
+ attributionControl: false,
+ zoomControl: false
+ }).addLayer(new L.OSM.Mapnik());
- var position = $('html').attr('dir') === 'rtl' ? 'topleft' : 'topright';
+ var position = $('html').attr('dir') === 'rtl' ? 'topleft' : 'topright';
- L.OSM.zoom({position: position})
- .addTo(map);
+ L.OSM.zoom({position: position})
+ .addTo(map);
- L.control.locate({
- position: position,
- strings: {
- title: I18n.t('javascripts.map.locate.title'),
- popup: I18n.t('javascripts.map.locate.popup')
+ L.control.locate({
+ position: position,
+ strings: {
+ title: I18n.t('javascripts.map.locate.title'),
+ popup: I18n.t('javascripts.map.locate.popup')
+ }
+ }).addTo(map);
+
+ if (OSM.home) {
+ map.setView([OSM.home.lat, OSM.home.lon], 12);
+ } else {
+ map.setView([0, 0], 0);
}
- }).addTo(map);
- if (OSM.home) {
- map.setView([OSM.home.lat, OSM.home.lon], 12);
- } else {
- map.setView([0, 0], 0);
+ if ($("#map").hasClass("set_location")) {
+ var marker = L.marker([0, 0], {icon: OSM.getUserIcon()});
+
+ if (OSM.home) {
+ marker.setLatLng([OSM.home.lat, OSM.home.lon]);
+ marker.addTo(map);
+ }
+
+ map.on("click", function (e) {
+ if ($('#updatehome').is(':checked')) {
+ var zoom = map.getZoom(),
+ precision = OSM.zoomPrecision(zoom),
+ location = e.latlng.wrap();
+
+ $('#homerow').removeClass();
+ $('#home_lat').val(location.lat.toFixed(precision));
+ $('#home_lon').val(location.lng.toFixed(precision));
+
+ marker.setLatLng(e.latlng);
+ marker.addTo(map);
+ }
+ });
+ } else {
+ $("[data-user]").each(function () {
+ var user = $(this).data('user');
+ if (user.lon && user.lat) {
+ L.marker([user.lat, user.lon], {icon: OSM.getUserIcon(user.icon)}).addTo(map)
+ .bindPopup(user.description);
+ }
+ });
+ }
}
- if ($("#map").hasClass("set_location")) {
- var marker = L.marker([0, 0], {icon: getUserIcon()});
+ function updateAuthUID() {
+ var provider = $("select#user_auth_provider").val();
- if (OSM.home) {
- marker.setLatLng([OSM.home.lat, OSM.home.lon]);
- marker.addTo(map);
+ if (provider === "openid") {
+ $("input#user_auth_uid").show().prop("disabled", false);
+ } else {
+ $("input#user_auth_uid").hide().prop("disabled", true);
}
+ }
- map.on("click", function (e) {
- if ($('#updatehome').is(':checked')) {
- var zoom = map.getZoom(),
- precision = OSM.zoomPrecision(zoom),
- location = e.latlng.wrap();
+ updateAuthUID();
- $('#homerow').removeClass();
- $('#home_lat').val(location.lat.toFixed(precision));
- $('#home_lon').val(location.lng.toFixed(precision));
+ $("select#user_auth_provider").on("change", updateAuthUID);
- marker.setLatLng(e.latlng);
- marker.addTo(map);
- }
- });
+ function enableAuth() {
+ $("#auth_prompt").hide();
+ $("#auth_field").show();
+ $("#user_auth_uid").prop("disabled", false);
+ }
+
+ function disableAuth() {
+ $("#auth_prompt").show();
+ $("#auth_field").hide();
+ $("#user_auth_uid").prop("disabled", true);
+ }
+
+ $("#auth_enable").click(enableAuth);
+
+ if ($("select#user_auth_provider").val() === "") {
+ disableAuth();
} else {
- $("[data-user]").each(function () {
- var user = $(this).data('user');
- if (user.lon && user.lat) {
- L.marker([user.lat, user.lon], {icon: getUserIcon(user.icon)}).addTo(map)
- .bindPopup(user.description);
- }
- });
+ enableAuth();
}
});
$('.start-mapping').attr('href', url);
} else {
- function geoSuccess(position) {
+ var geoSuccess = function (position) {
window.location = '/edit' + OSM.formatHash({
zoom: 17,
lat: position.coords.latitude,
lon: position.coords.longitude
});
- }
+ };
$('.start-mapping').on('click', function(e) {
e.preventDefault();
--- /dev/null
+/* Rules for bootstrap tooltips */
+
+.tooltip {
+ position: absolute;
+ display: none;
+ color: #333;
+ text-align: left;
+ font-size: 12px;
+ max-width: 250px;
+}
+
+.tooltip.in {
+ opacity: 0.8;
+ z-index: 1030;
+ height: auto;
+ display: block;
+}
+
+.tooltip.top {
+ margin-top: -10px;
+ text-align: center;
+}
+
+.tooltip.right {
+ margin-left: 10px;
+}
+
+.tooltip.bottom {
+ margin-top: 10px;
+ text-align: center;
+}
+
+.tooltip.left {
+ margin-left: -10px;
+ text-align: right;
+}
+
+.tooltip-inner {
+ display: inline-block;
+ padding: 10px;
+ font-weight: normal;
+ background-color: white;
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: -5px;
+ left: 50%;
+ margin-left: -5px;
+ border-top-color: white;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: -5px;
+ margin-top: -5px;
+ border-right-color: white;
+ border-width: 5px 5px 5px 0;
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: -5px;
+ margin-top: -5px;
+ border-left-color: white;
+ border-width: 5px 0 5px 5px;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: -5px;
+ left: 50%;
+ margin-left: -5px;
+ border-bottom-color: white;
+ border-width: 0 5px 5px;
+}
-/* Make space for icons */
-
-.node::before,
-.way::before,
-.relation::before {
- display: inline-block;
- width: 25px;
- margin-left: -25px;
-}
+.browse-section {
+
+ /* Make space for icons */
+
+ .node::before,
+ .way::before,
+ .relation::before {
+ display: inline-block;
+ width: 25px;
+ margin-left: -25px;
+ }
+
+ .node, .way, .relation {
+ margin-left: 25px;
+ }
+
+ /* Deleted objects */
+
+ .deleted { text-decoration: line-through; }
+
+ /* Nodes (and ways as areas) */
+
+ .aeroway.aerodrome::before { content: image-url('browse/aerodrome.p.16.png'); }
+
+ .amenity.atm::before { content: image-url('browse/amenity_atm.16.png'); }
+ .amenity.bank::before { content: image-url('browse/amenity_bank.16.png'); }
+ .amenity.bar::before { content: image-url('browse/amenity_bar.16.png'); }
+ .amenity.bench::before { content: image-url('browse/amenity_bench.16.png'); }
+ .amenity.biergarten::before { content: image-url('browse/amenity_biergarten.16.png'); }
+ .amenity.bicycle_parking::before { content: image-url('browse/amenity_bicycle_parking.16.png'); }
+ .amenity.bicycle_rental::before { content: image-url('browse/transport_rental_bicycle.16.png'); }
+ .amenity.bus_station::before { content: image-url('browse/bus_station.n.16.png'); }
+ .amenity.cafe::before { content: image-url('browse/amenity_cafe.16.png'); }
+ .amenity.car_rental::before { content: image-url('browse/transport_rental_car.16.png'); }
+ .amenity.car_sharing::before { content: image-url('browse/car_share.p.16.png'); }
+ .amenity.cinema::before { content: image-url('browse/amenity_cinema.16.png'); }
+ .amenity.courthouse::before { content: image-url('browse/amenity_courthouse.16.png'); }
+ .amenity.dentist::before { content: image-url('browse/amenity_dentist.16.png'); }
+ .amenity.doctors::before { content: image-url('browse/amenity_doctors.16.png'); }
+ .amenity.drinking_water::before { content: image-url('browse/amenity_drinking_water.16.png'); }
+ .amenity.embassy::before { content: image-url('browse/amenity_embassy.16.png'); }
+ .amenity.fast_food::before { content: image-url('browse/amenity_fast_food.16.png'); }
+ .amenity.fire_station::before { content: image-url('browse/amenity_fire_station.16.png'); }
+ .amenity.fuel::before { content: image-url('browse/amenity_fuel.16.png'); }
+ .amenity.hospital::before { content: image-url('browse/amenity_hospital.16.png'); }
+ .amenity.library::before { content: image-url('browse/library.p.16.png'); }
+ .amenity.nursery::before { content: image-url('browse/education_nursery.p.16.png'); }
+ .amenity.nightclub::before { content: image-url('browse/amenity_nightclub.16.png'); }
+ .amenity.parking::before { content: image-url('browse/parking.p.16.png'); }
+ .amenity.pharmacy::before { content: image-url('browse/amenity_pharmacy.16.png'); }
+ .amenity.place_of_worship::before { content: image-url('browse/amenity_place_of_worship.16.png'); }
+ .amenity.police::before { content: image-url('browse/amenity_police.16.png'); }
+ .amenity.post_box::before { content: image-url('browse/post_box.p.16.png'); }
+ .amenity.post_office::before { content: image-url('browse/post_office.p.16.png'); }
+ .amenity.prison::before { content: image-url('browse/amenity_prison.16.png'); }
+ .amenity.pub::before { content: image-url('browse/amenity_pub.16.png'); }
+ .amenity.restaurant::before { content: image-url('browse/amenity_restaurant.16.png'); }
+ .amenity.recycling::before { content: image-url('browse/amenity_recycling.16.png'); }
+ .amenity.school::before { content: image-url('browse/education_school.p.16.png'); }
+ .amenity.shelter::before { content: image-url('browse/shelter2.p.16.png'); }
+ .amenity.taxi::before { content: image-url('browse/amenity_taxi.16.png'); }
+ .amenity.telephone::before { content: image-url('browse/telephone.p.16.png'); }
+ .amenity.theatre::before { content: image-url('browse/amenity_theatre.16.png'); }
+ .amenity.toilets::before { content: image-url('browse/amenity_toilets.16.png'); }
+ .amenity.townhall::before { content: image-url('browse/amenity_townhall.16.png'); }
+ .amenity.university::before { content: image-url('browse/education_university.p.16.png'); }
+ .amenity.veterinary::before { content: image-url('browse/health_veterinary.p.16.png'); }
+ .amenity.waste_basket::before { content: image-url('browse/amenity_waste_basket.16.png'); }
+
+ .barrier.gate::before { content: image-url('browse/gate2.p.16.png'); }
+
+ .highway.bus_stop::before { content: image-url('browse/highway_bus_stop.16.png'); }
+ .highway.mini_roundabout::before { content: image-url('browse/mini_round.p.16.png'); }
+ .highway.traffic_signals::before { content: image-url('browse/traffic_light.png'); }
+ .highway.turning_circle::before { content: image-url('browse/turning_circle.p.16.png'); }
+
+ .historic.archaeological_site::before { content: image-url('browse/historic_archaeological_site.16.png'); }
+ .historic.castle::before { content: image-url('browse/tourist_castle.p.16.png'); }
+ .historic.memorial::before { content: image-url('browse/historic_memorial.16.png'); }
+ .historic.monument::before { content: image-url('browse/historic_monument.16.png'); }
+ .historic.ruins::before { content: image-url('browse/tourist_ruins.p.16.png'); }
+ .historic.wreck::before { content: image-url('browse/tourist_wreck.p.16.png'); }
+
+ .man_made.lighthouse::before { content: image-url('browse/man_made_lighthouse.16.png'); }
+ .man_made.water_tower::before { content: image-url('browse/man_made_water_tower.16.png'); }
+ .man_made.windmill::before { content: image-url('browse/man_made_windmill.16.png'); }
+
+ .natural.tree::before { content: image-url('browse/tree.p.16.png'); }
+
+ .railway.halt::before { content: image-url('browse/halt.p.16.png'); }
+ .railway.station::before { content: image-url('browse/station.p.16.png'); }
+ .railway.level_crossing::before { content: image-url('browse/level_crossing.p.16.png'); }
+
+ .shop::before { content: image-url('browse/shop_convenience.p.16.png'); }
+ .shop.alcohol::before { content: image-url('browse/shop_alcohol.16.pn'); }
+ .shop.bakery::before { content: image-url('browse/shop_bakery.16.png'); }
+ .shop.bicycle::before { content: image-url('browse/shop_bicycle.16.png'); }
+ .shop.books::before { content: image-url('browse/shop_books.16.png'); }
+ .shop.butcher::before { content: image-url('browse/shop_butcher.p.16.png'); }
+ .shop.clothes::before { content: image-url('browse/shop_clothes.16.png'); }
+ .shop.car_repair::before { content: image-url('browse/shop_car_repair.16.png'); }
+ .shop.convenience::before { content: image-url('browse/shop_convenience.p.16.png'); }
+ .shop.diy::before { content: image-url('browse/shop_doityourself.16.png'); }
+ .shop.electronics::before { content: image-url('browse/shop_electronics.16.png'); }
+ .shop.estate_agent::before { content: image-url('browse/shop_estateagent2.p.16.png'); }
+ .shop.fashion::before { content: image-url('browse/shop_clothes.16.png'); }
+ .shop.fish::before { content: image-url('browse/shop_fish.p.16.png'); }
+ .shop.florist::before { content: image-url('browse/shop_florist.16.png'); }
+ .shop.furniture::before { content: image-url('browse/shop_furniture.16.png'); }
+ .shop.garden_centre::before { content: image-url('browse/shop_florist.16.png'); }
+ .shop.gift::before { content: image-url('browse/shop_gift.16.png'); }
+ .shop.greengrocer::before { content: image-url('browse/shop_greengrocer.p.16.png'); }
+ .shop.hardware::before { content: image-url('browse/shop_doityourself.16.png'); }
+ .shop.hairdresser::before { content: image-url('browse/shop_hairdresser.16.png'); }
+ .shop.jewelry::before { content: image-url('browse/shop_jewellery.16.png'); }
+ .shop.jewellery::before { content: image-url('browse/shop_jewellery.16.png'); }
+ .shop.mobile_phone::before { content: image-url('browse/shop_mobile_phone.16.png'); }
+ .shop.optician::before { content: image-url('browse/shop_optician.16.png'); }
+ .shop.pet::before { content: image-url('browse/shop_pet.16.png'); }
+ .shop.shoes::before { content: image-url('browse/shop_shoes.16.png'); }
+ .shop.supermarket::before { content: image-url('browse/shop_supermarket.p.16.png'); }
+
+ .tourism.alpine_hut::before { content: image-url('browse/alpinehut.p.16.png'); }
+ .tourism.camp_site::before { content: image-url('browse/tourism_camp_site.16.png'); }
+ .tourism.caravan_site::before { content: image-url('browse/tourism_caravan_site.16.png'); }
+ .tourism.hostel::before { content: image-url('browse/tourism_hostel.16.png'); }
+ .tourism.hotel::before { content: image-url('browse/tourism_hotel.16.png'); }
+ .tourism.motel::before { content: image-url('browse/tourism_motel.16.png'); }
+ .tourism.museum::before { content: image-url('browse/tourism_museum.16.png'); }
+ .tourism.picnic_site::before { content: image-url('browse/tourism_picnic_site.16.png'); }
+ .tourism.viewpoint::before { content: image-url('browse/view_point.p.16.png'); }
+
+ /* Ways */
+
+ .aeroway.runway::before { content: image-url('browse/runway.20.png'); }
+ .aeroway.taxiway::before { content: image-url('browse/taxiway.20.png'); }
+
+ .barrier.wall::before { content: image-url('browse/wall.20.png'); }
+
+ .building::before { content: image-url('browse/building.png'); }
+
+ .highway.bridleway::before { content: image-url('browse/bridleway.20.png'); }
+ .highway.byway::before { content: image-url('browse/byway.20.png'); }
+ .highway.cycleway::before { content: image-url('browse/cycleway.20.png'); }
+ .highway.footway::before { content: image-url('browse/footway.20.png'); }
+ .highway.motorway::before { content: image-url('browse/motorway.20.png'); }
+ .highway.motorway_link::before { content: image-url('browse/motorway.20.png'); }
+ .highway.path::before { content: image-url('browse/path.20.png'); }
+ .highway.pedestrian::before { content: image-url('browse/service.20.png'); }
+ .highway.primary::before { content: image-url('browse/primary.20.png'); }
+ .highway.primary_link::before { content: image-url('browse/primary.20.png'); }
+ .highway.residential::before { content: image-url('browse/unclassified.20.png'); }
+ .highway.secondary::before { content: image-url('browse/secondary.20.png'); }
+ .highway.secondary_link::before { content: image-url('browse/secondary.20.png'); }
+ .highway.service::before { content: image-url('browse/service.20.png'); }
+ .highway.tertiary::before { content: image-url('browse/tertiary.20.png'); }
+ .highway.track::before { content: image-url('browse/track.20.png'); }
+ .highway.trunk::before { content: image-url('browse/trunk.20.png'); }
+ .highway.trunk_link::before { content: image-url('browse/trunk.20.png'); }
+ .highway.unclassified::before { content: image-url('browse/unclassified.20.png'); }
+
+ .landuse.brownfield::before { content: image-url('browse/brownfield.png'); }
+ .landuse.cemetery::before { content: image-url('browse/cemetery.png'); }
+ .landuse.commercial::before { content: image-url('browse/commercial.png'); }
+ .landuse.farm::before { content: image-url('browse/farm.png'); }
+ .landuse.forest::before { content: image-url('browse/forest.png'); }
+ .landuse.industrial::before { content: image-url('browse/industrial.png'); }
+ .landuse.military::before { content: image-url('browse/military.png'); }
+ .landuse.residential::before { content: image-url('browse/residential.png'); }
+ .landuse.retail::before { content: image-url('browse/retail.png'); }
+ .landuse.tourism::before { content: image-url('browse/tourism.png'); }
+ .landuse.wood::before { content: image-url('browse/wood.png'); }
+
+ .leisure.golf_course::before { content: image-url('browse/golf.png'); }
+ .leisure.park::before { content: image-url('browse/park.png'); }
+ .leisure.picnic_table::before { content: image-url('browse/tourism_picnic_site.16.png'); }
+ .leisure.playground::before { content: image-url('browse/leisure_playground.16.png'); }
+ .leisure.pitch::before { content: image-url('browse/pitch.png'); }
+ .leisure.nature_reserve::before { content: image-url('browse/reserve.png'); }
+ .leisure.water_park::before { content: image-url('browse/leisure_water_park.16.png'); }
+
+ .natural.heath::before { content: image-url('browse/heathland.png'); }
+ .natural.water::before { content: image-url('browse/lake.png'); }
+
+ .railway.light_rail::before { content: image-url('browse/light_rail.20.png'); }
+ .railway.rail::before { content: image-url('browse/rail.20.png'); }
+ .railway.subway::before { content: image-url('browse/subway.20.png'); }
+ .railway.tram::before { content: image-url('browse/tram.20.png'); }
-.node, .way, .relation {
- margin-left: 25px;
}
-
-/* Deleted objects */
-
-.deleted { text-decoration: line-through; }
-
-/* Nodes (and ways as areas) */
-
-.aeroway.aerodrome::before { content: image-url('browse/aerodrome.p.16.png'); }
-
-.amenity.atm::before { content: image-url('browse/amenity_atm.16.png'); }
-.amenity.bank::before { content: image-url('browse/amenity_bank.16.png'); }
-.amenity.bar::before { content: image-url('browse/amenity_bar.16.png'); }
-.amenity.biergarten::before { content: image-url('browse/amenity_biergarten.16.png'); }
-.amenity.bicycle_parking::before { content: image-url('browse/transport_parking_bicycle.p.16.png'); }
-.amenity.bicycle_rental::before { content: image-url('browse/transport_rental_bicycle.p.16.png'); }
-.amenity.bus_station::before { content: image-url('browse/bus_station.n.16.png'); }
-.amenity.cafe::before { content: image-url('browse/amenity_cafe.16.png'); }
-.amenity.car_rental::before { content: image-url('browse/transport_rental_car.p.16.png'); }
-.amenity.car_sharing::before { content: image-url('browse/car_share.p.16.png'); }
-.amenity.cinema::before { content: image-url('browse/amenity_cinema.16.png'); }
-.amenity.dentist::before { content: image-url('browse/amenity_dentist.16.png'); }
-.amenity.doctors::before { content: image-url('browse/amenity_doctors.16.png'); }
-.amenity.drinking_water::before { content: image-url('browse/amenity_drinking_water.16.png'); }
-.amenity.embassy::before { content: image-url('browse/amenity_embassy.16.png'); }
-.amenity.fast_food::before { content: image-url('browse/amenity_fast_food.16.png'); }
-.amenity.fire_station::before { content: image-url('browse/amenity_fire_station.16.png'); }
-.amenity.fuel::before { content: image-url('browse/fuel.p.16.png'); }
-.amenity.hospital::before { content: image-url('browse/amenity_hospital.16.png'); }
-.amenity.library::before { content: image-url('browse/library.p.16.png'); }
-.amenity.nursery::before { content: image-url('browse/education_nursery.p.16.png'); }
-.amenity.parking::before { content: image-url('browse/parking.p.16.png'); }
-.amenity.pharmacy::before { content: image-url('browse/amenity_pharmacy.16.png'); }
-.amenity.place_of_worship::before { content: image-url('browse/amenity_place_of_worship.16.png'); }
-.amenity.police::before { content: image-url('browse/amenity_police.16.png'); }
-.amenity.post_box::before { content: image-url('browse/post_box.p.16.png'); }
-.amenity.post_office::before { content: image-url('browse/post_office.p.16.png'); }
-.amenity.prison::before { content: image-url('browse/amenity_prison.16.png'); }
-.amenity.pub::before { content: image-url('browse/amenity_pub.16.png'); }
-.amenity.restaurant::before { content: image-url('browse/amenity_restaurant.16.png'); }
-.amenity.recycling::before { content: image-url('browse/amenity_recycling.16.png'); }
-.amenity.school::before { content: image-url('browse/education_school.p.16.png'); }
-.amenity.shelter::before { content: image-url('browse/shelter2.p.16.png'); }
-.amenity.telephone::before { content: image-url('browse/telephone.p.16.png'); }
-.amenity.theatre::before { content: image-url('browse/amenity_theatre.16.png'); }
-.amenity.toilets::before { content: image-url('browse/toilets.p.16.png'); }
-.amenity.townhall::before { content: image-url('browse/amenity_townhall.16.png'); }
-.amenity.university::before { content: image-url('browse/education_university.p.16.png'); }
-.amenity.veterinary::before { content: image-url('browse/health_veterinary.p.16.png'); }
-
-.barrier.gate::before { content: image-url('browse/gate2.p.16.png'); }
-
-.highway.bus_stop::before { content: image-url('browse/bus_stop.p.16.png'); }
-.highway.mini_roundabout::before { content: image-url('browse/mini_round.p.16.png'); }
-.highway.traffic_signals::before { content: image-url('browse/traffic_light.png'); }
-.highway.turning_circle::before { content: image-url('browse/turning_circle.p.16.png'); }
-
-.historic.castle::before { content: image-url('browse/tourist_castle.p.16.png'); }
-.historic.memorial::before { content: image-url('browse/historic_memorial.16.png'); }
-.historic.monument::before { content: image-url('browse/tourist_monument.p.16.png'); }
-.historic.ruins::before { content: image-url('browse/tourist_ruins.p.16.png'); }
-.historic.wreck::before { content: image-url('browse/tourist_wreck.p.16.png'); }
-
-.man_made.lighthouse::before { content: image-url('browse/lighthouse.p.16.png'); }
-.man_made.windmill::before { content: image-url('browse/tourist_windmill.p.16.png'); }
-
-.natural.tree::before { content: image-url('browse/tree.p.16.png'); }
-
-.railway.halt::before { content: image-url('browse/halt.p.16.png'); }
-.railway.station::before { content: image-url('browse/station.p.16.png'); }
-.railway.level_crossing::before { content: image-url('browse/level_crossing.p.16.png'); }
-
-.shop::before { content: image-url('browse/shop_convenience.p.16.png'); }
-.shop.bakery::before { content: image-url('browse/shop_bakery.16.png'); }
-.shop.bicycle::before { content: image-url('browse/shop_bicycle.p.16.png'); }
-.shop.books::before { content: image-url('browse/shop_books.p.16.png'); }
-.shop.butcher::before { content: image-url('browse/shop_butcher.p.16.png'); }
-.shop.clothes::before { content: image-url('browse/shop_clothes.p.16.png'); }
-.shop.convenience::before { content: image-url('browse/shop_convenience.p.16.png'); }
-.shop.diy::before { content: image-url('browse/shop_diy.p.16.png'); }
-.shop.estate_agent::before { content: image-url('browse/shop_estateagent2.p.16.png'); }
-.shop.fish::before { content: image-url('browse/shop_fish.p.16.png'); }
-.shop.garden_centre::before { content: image-url('browse/shop_garden_centre.p.16.png'); }
-.shop.gift::before { content: image-url('browse/shop_gift.p.16.png'); }
-.shop.greengrocer::before { content: image-url('browse/shop_greengrocer.p.16.png'); }
-.shop.hairdresser::before { content: image-url('browse/shop_hairdresser.p.16.png'); }
-.shop.jewelry::before { content: image-url('browse/shop_jewelry.p.16.png'); }
-.shop.supermarket::before { content: image-url('browse/shop_supermarket.p.16.png'); }
-
-.tourism.alpine_hut::before { content: image-url('browse/alpinehut.p.16.png'); }
-.tourism.camp_site::before { content: image-url('browse/tourism_camp_site.16.png'); }
-.tourism.caravan_site::before { content: image-url('browse/caravan_park.n.16.png'); }
-.tourism.hostel::before { content: image-url('browse/hostel.p.16.png'); }
-.tourism.hotel::before { content: image-url('browse/hotel.p.16.png'); }
-.tourism.museum::before { content: image-url('browse/tourism_museum.16.png'); }
-.tourism.picnic_site::before { content: image-url('browse/tourism_picnic_site.16.png'); }
-.tourism.viewpoint::before { content: image-url('browse/view_point.p.16.png'); }
-
-/* Ways */
-
-.aeroway.runway::before { content: image-url('browse/runway.20.png'); }
-.aeroway.taxiway::before { content: image-url('browse/taxiway.20.png'); }
-
-.barrier.wall::before { content: image-url('browse/wall.20.png'); }
-
-.building::before { content: image-url('browse/building.png'); }
-
-.highway.bridleway::before { content: image-url('browse/bridleway.20.png'); }
-.highway.byway::before { content: image-url('browse/byway.20.png'); }
-.highway.cycleway::before { content: image-url('browse/cycleway.20.png'); }
-.highway.footway::before { content: image-url('browse/footway.20.png'); }
-.highway.motorway::before { content: image-url('browse/motorway.20.png'); }
-.highway.motorway_link::before { content: image-url('browse/motorway.20.png'); }
-.highway.path::before { content: image-url('browse/path.20.png'); }
-.highway.pedestrian::before { content: image-url('browse/service.20.png'); }
-.highway.primary::before { content: image-url('browse/primary.20.png'); }
-.highway.primary_link::before { content: image-url('browse/primary.20.png'); }
-.highway.residential::before { content: image-url('browse/unclassified.20.png'); }
-.highway.secondary::before { content: image-url('browse/secondary.20.png'); }
-.highway.secondary_link::before { content: image-url('browse/secondary.20.png'); }
-.highway.service::before { content: image-url('browse/service.20.png'); }
-.highway.tertiary::before { content: image-url('browse/tertiary.20.png'); }
-.highway.track::before { content: image-url('browse/track.20.png'); }
-.highway.trunk::before { content: image-url('browse/trunk.20.png'); }
-.highway.trunk_link::before { content: image-url('browse/trunk.20.png'); }
-.highway.unclassified::before { content: image-url('browse/unclassified.20.png'); }
-
-.landuse.brownfield::before { content: image-url('browse/brownfield.png'); }
-.landuse.cemetery::before { content: image-url('browse/cemetery.png'); }
-.landuse.commercial::before { content: image-url('browse/commercial.png'); }
-.landuse.farm::before { content: image-url('browse/farm.png'); }
-.landuse.forest::before { content: image-url('browse/forest.png'); }
-.landuse.industrial::before { content: image-url('browse/industrial.png'); }
-.landuse.military::before { content: image-url('browse/military.png'); }
-.landuse.residential::before { content: image-url('browse/residential.png'); }
-.landuse.retail::before { content: image-url('browse/retail.png'); }
-.landuse.tourism::before { content: image-url('browse/tourism.png'); }
-.landuse.wood::before { content: image-url('browse/wood.png'); }
-
-.leisure.golf_course::before { content: image-url('browse/golf.png'); }
-.leisure.park::before { content: image-url('browse/park.png'); }
-.leisure.picnic_table::before { content: image-url('browse/tourism_picnic_site.16.png'); }
-.leisure.playground::before { content: image-url('browse/leisure_playground.16.png'); }
-.leisure.pitch::before { content: image-url('browse/pitch.png'); }
-.leisure.nature_reserve::before { content: image-url('browse/reserve.png'); }
-
-.natural.heath::before { content: image-url('browse/heathland.png'); }
-.natural.water::before { content: image-url('browse/lake.png'); }
-
-.railway.light_rail::before { content: image-url('browse/light_rail.20.png'); }
-.railway.rail::before { content: image-url('browse/rail.20.png'); }
-.railway.subway::before { content: image-url('browse/subway.20.png'); }
-.railway.tram::before { content: image-url('browse/tram.20.png'); }
legend { color: #000; }
-sup { vertical-align: text-top; }
+sup {
+ vertical-align: super;
+ font-size: smaller;
+}
-sub { vertical-align: text-bottom; }
+sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
table {
border-collapse: collapse;
.icon.close:hover { background-position: -200px -20px; }
.icon.check { background-position: -220px 0; }
.icon.note { background-position: -240px 0; }
+.icon.note.grey { background-position: -240px -20px; }
.icon.query { background-position: -260px 0; }
/* Rules for links */
/* Rules for the header */
-#menu-icon {
+#menu-icon {
display: none !important;
float: right;
background: image-url("menu-icon.png") no-repeat;
> li {
border-right: $border;
float: left;
- &:last-child {
+ &:last-child {
border-right: 0;
}
> a:hover { background: lighten($green, 30%); }
> li {
border-right: $border;
float: left;
- &:last-child {
+ &:last-child {
border-right: 0;
> a {
border-radius: 0 $border-radius $border-radius 0;
- }
+ }
}
&:first-child > a { border-radius: $border-radius 0 0 $border-radius; }
&:hover a { background: lighten($darkgrey, 30%); }
}
}
-@media only screen and (max-width:960px) {
+body.compact {
#compact-secondary-nav {
display: inline-block;
}
margin-top: 50px;
}
-/* Rules for bootstrap tooltips */
-
-.tooltip {
- position: absolute;
- display: none;
- color: #333;
- text-align: left;
- font-size: 12px;
- max-width: 250px;
-}
-
-.tooltip.in {
- opacity: 0.8;
- z-index: 1030;
- height: auto;
- display: block;
-}
-
-.tooltip.top {
- margin-top: -10px;
- text-align: center;
-}
-
-.tooltip.right {
- margin-left: 10px;
-}
-
-.tooltip.bottom {
- margin-top: 10px;
- text-align: center;
-}
-
-.tooltip.left {
- margin-left: -10px;
- text-align: right;
-}
-
-.tooltip-inner {
- display: inline-block;
- padding: 10px;
- font-weight: normal;
- background-color: white;
-}
-
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-
-.tooltip.top .tooltip-arrow {
- bottom: -5px;
- left: 50%;
- margin-left: -5px;
- border-top-color: white;
- border-width: 5px 5px 0;
-}
-
-.tooltip.right .tooltip-arrow {
- top: 50%;
- left: -5px;
- margin-top: -5px;
- border-right-color: white;
- border-width: 5px 5px 5px 0;
-}
-
-.tooltip.left .tooltip-arrow {
- top: 50%;
- right: -5px;
- margin-top: -5px;
- border-left-color: white;
- border-width: 5px 0 5px 5px;
-}
-
-.tooltip.bottom .tooltip-arrow {
- top: -5px;
- left: 50%;
- margin-left: -5px;
- border-bottom-color: white;
- border-width: 0 5px 5px;
-}
-
/* Rules for Leaflet maps */
.leaflet-control .control-button {
float: right;
cursor: pointer;
}
+
+ p.error {
+ background-color: #ff7070;
+ padding: 10px;
+ font-weight: bold;
+ }
}
.welcome {
&.query-disabled {
cursor: not-allowed;
}
+
+ .leaflet-marker-draggable {
+ cursor: move;
+ }
}
#map-ui {
margin-bottom: 8px;
position: relative;
transition: border-color 0.08s ease-in;
-
+
label {
position: absolute;
top: 0;
text-decoration: none;
background-color: $lightblue;
padding: 5px 10px;
+ border-right: 1px solid #fff;
}
a:first-child {
}
a:last-child {
- border-left: 1px solid #fff;
border-radius: 0 4px 4px 0;
}
#attribution {
display: none;
+
+ table {
+ width: 100%
+ }
}
.attribution_license,
padding: $lineheight/2 $lineheight;
// background: $offwhite;
// border-bottom: 1px solid #ccc;
- > .close {
+ > .close {
float: right;
margin-top: 2px;
- cursor: pointer;
+ cursor: pointer;
}
}
float: right;
}
+ div.header {
+ width: 100%;
+ height: 30px;
+ }
+
div.line {
width: 100%;
margin: 0px 0px 5px 0px;
}
+
+ div.loader_copy {
+ display: none;
+
+ img {
+ vertical-align: middle;
+ }
+ }
}
/* Rules for the map key which appears in the popout sidebar */
.search_results_error {
color: #f00;
+ padding: 10px 20px;
}
/* Rules for routing */
background: $list-highlight;
}
.routing_engines, #route_from, #route_to { margin-left: 25px; }
-.routing_marker { width: 15px; position: absolute; }
+.routing_marker { width: 15px; position: absolute; cursor: move; }
/* Rules for entity history */
color: #000;
}
}
+
+ .comments {
+ float: right;
+ color: #999;
+ }
+
+ .comments-0 {
+ opacity: 0.5;
+ }
}
/* Rules for the browse sidebar */
.content-heading {
background: $lightgrey;
-
+
h1 { font-size: 22px; }
}
/* Rules for the log in page */
-#login_openid_buttons {
+#login_auth_buttons {
margin-bottom: 0;
}
-#login_openid_buttons li {
+#login_auth_buttons li {
float: left;
padding: $lineheight/4 $lineheight/2;
}
padding-top: $lineheight;
border-top: 1px solid $lightgrey;
}
- .horizontal-list .form-row {
+ .horizontal-list .form-row {
float: left;
padding-right: 10px;
}
.site-welcome, .site-fixthemap {
.center {
text-align: center;
- .sprite {
+ .sprite {
float: none;
margin: auto;
}
float: left;
}
- .icon-list {
+ .icon-list {
padding-bottom: 20px;
div {
margin-bottom: 10px;
background-position: -300px 0;
}
+ .sprite.rules {
+ background-position: -350px 0;
+ }
+
.start-mapping {
margin: auto;
cursor: pointer;
&.open { background-position: 0px -80px; }
&.partners { background-position: 0px -120px; }
&.infringement { background-position: 0px -160px; }
+ &.legal { background-position: -45px -160px; }
}
}
display: none;
}
}
-
+++ /dev/null
-/*
- *= require ltr/common
- *= require large
- */
+++ /dev/null
-/*
- *= require rtl/common
- *= require large
- */
+++ /dev/null
-/* Styles specific to large screens */
/*
*= require ltr/common
+ *= require bootstrap
*= require ltr/small
*/
/*
*= require rtl/common
+ *= require bootstrap
*= require rtl/small
- */
\ No newline at end of file
+ */
/* Styles specific to a small screen, such as iPhone, Android, etc... */
-input[type="submit"],
-input[type="text"] {
- -webkit-appearance: none;
-}
-
-.column-1 {
- width: 100%;
-}
-
-#menu-icon {
- display: inline-block !important;
-}
+body.small {
-nav.primary,
-nav.secondary {
- float: none !important;
- position: relative;
- display: block;
- clear: both;
-}
-
-header {
- height: auto;
- min-height: $headerHeight;
- background: #fff;
+ input[type="submit"],
+ input[type="text"] {
+ -webkit-appearance: none;
+ }
- h1 {
- padding-bottom: 15px;
+ .column-1 {
+ width: 100%;
}
- &.closed nav {
- display: none;
+ #menu-icon {
+ display: inline-block !important;
}
- .search_forms {
+ nav.primary,
+ nav.secondary {
+ float: none !important;
+ position: relative;
display: block;
+ clear: both;
}
-}
-#sidebar .search_forms,
-#edit_tab,
-#export_tab {
- display: none;
-}
+ header {
+ height: auto;
+ min-height: $headerHeight;
+ background: #fff;
-nav.primary {
- padding: 0;
+ h1 {
+ padding-bottom: 15px;
+ }
- ul, li {
- border: none;
- border-radius: 0;
- width: 100%;
- }
+ &.closed nav {
+ display: none;
+ }
- ul {
- border-top: 1px solid #eee;
- li {
- border-bottom: 1px solid #eee;
- border-right: none;
- > a {
- border-radius: 0;
- width: 100%;
- text-align: center;
- font-size: 15px;
- }
+ .search_forms {
+ display: block;
}
}
-}
-nav.secondary {
- border-bottom: 1px solid #eee;
+ #sidebar .search_forms,
+ #edit_tab,
+ #export_tab {
+ display: none;
+ }
- .user-menu {
- display: block;
- width: 100%;
- margin-left: 0;
- > li {
- width: 49%;
- > a {
- width: 100%;
- text-align: center;
+ nav.primary {
+ padding: 0;
+
+ ul, li {
+ border: none;
+ border-radius: 0;
+ width: 100%;
+ }
+
+ ul {
+ border-top: 1px solid #eee;
+ li {
+ border-bottom: 1px solid #eee;
+ border-right: none;
+ > a {
+ border-radius: 0;
+ width: 100%;
+ text-align: center;
+ font-size: 15px;
+ }
}
}
}
-}
-#compact-secondary-nav {
- display: none;
-}
+ nav.secondary {
+ border-bottom: 1px solid #eee;
+
+ .user-menu {
+ display: block;
+ width: 100%;
+ margin-left: 0;
+ > li {
+ width: 49%;
+ > a {
+ width: 100%;
+ text-align: center;
+ }
+ }
+ }
+ }
-.compact-hide {
- display: inline-block;
-}
+ #compact-secondary-nav {
+ display: none;
+ }
-.map-layout {
- #sidebar, #map {
- position: relative;
- overflow-x: hidden;
- width: 100%;
- height: 50%;
+ .compact-hide {
+ display: inline-block;
}
- .overlay-sidebar {
- #sidebar {
- width: 300px;
+ &.map-layout {
+ #sidebar, #map {
+ position: relative;
+ overflow-x: hidden;
+ width: 100%;
+ height: 50%;
}
- #map {
- height: 100%;
+ .overlay-sidebar {
+ #sidebar {
+ position: absolute;
+ width: 300px;
+ height: auto;
+ overflow: hidden;
+ }
+
+ #map {
+ height: 100%;
+ }
+ }
+
+ #map-ui {
+ z-index: 9999;
+ width: 100%;
+ overflow-y: scroll;
}
}
- #map-ui {
- z-index: 9999;
- width: 100%;
- overflow-y: scroll;
+ #sidebar .welcome {
+ display: none !important;
}
-}
-#sidebar .welcome {
- display: none !important;
-}
+ .leaflet-top.leaflet-right {
+ top: 10px !important;
+ z-index: 0;
+ }
-.leaflet-top.leaflet-right {
- top: 10px !important;
- z-index: 0;
-}
+ .content_map {
+ width: 100%;
+ border: none;
+ float: none;
+ height: 200px;
+ max-height: none;
+ min-height: auto;
+ }
-.content_map {
- width: 100%;
- border: none;
- float: none;
- height: 200px;
- max-height: none;
- min-height: auto;
-}
+ /* Rules for the login form */
-/* Rules for the login form */
+ #login_login input#user_email {
+ width: 100%;
+ max-width: 18em;
+ }
-#login_login input#user_email {
- width: 100%;
- max-width: 18em;
-}
+ #login_login input#user_password {
+ width: 100%;
+ max-width: 18em;
+ }
-#login_login input#user_password {
- width: 100%;
- max-width: 18em;
-}
+ #login_login input#openid_url {
+ width: 100%;
+ max-width: 18em;
+ }
-#login_login input#openid_url {
- width: 100%;
- max-width: 18em;
-}
+ #login_openid_buttons td {
+ padding: 2px;
+ }
-#login_openid_buttons td {
- padding: 2px;
-}
+ /* Rules for the user view */
-/* Rules for the user view */
+ .user_map {
+ width: 100% !important;
+ height: 300px !important;
+ }
-.user_map {
- width: 100% !important;
- height: 300px !important;
-}
+ #userinformation .deemphasize {
+ position: relative;
+ right: auto; left: auto;
+ margin-top: 10px;
+ top: auto;
+ }
-#userinformation .deemphasize {
- position: relative;
- right: auto; left: auto;
- margin-top: 10px;
- top: auto;
-}
+ /* Rules for the sign-up page */
-/* Rules for the sign-up page */
+ &.user-new,
+ &.user-create {
+ .col6 {
+ width: 100%;
+ }
-.user-new,
-.user-create {
- .col6 {
- width: 100%;
+ .aside {
+ display: none;
+ }
}
- .aside {
- display: none;
+ &.site-about #content .attr h1 {
+ font-size: 28px;
}
-}
-.site-about #content .attr h1 {
- font-size: 28px;
}
class AmfController < ApplicationController
include Potlatch
- skip_before_filter :verify_authenticity_token
- before_filter :check_api_writable
+ skip_before_action :verify_authenticity_token
+ before_action :check_api_writable
# Main AMF handlers: process the raw AMF string (using AMF library) and
# calls each action (private method) accordingly.
result = startchangeset(*args)
end
- err = true if result[0] == -3 # If a conflict is detected, don't execute any more writes
+ err = true if result[0] == -3 # If a conflict is detected, don't execute any more writes
end
result
timestamp = DateTime.strptime(timestamp.to_s, "%d %b %Y, %H:%M:%S")
old_way = OldWay.where("way_id = ? AND timestamp <= ?", id, timestamp).unredacted.order("timestamp DESC").first
unless old_way.nil?
- points = old_way.get_nodes_revert(timestamp)
- unless old_way.visible
+ if old_way.visible
+ points = old_way.get_nodes_revert(timestamp)
+ else
return [-1, "Sorry, the way was deleted at that time - please revert to a previous version.", id]
end
end
# 3. version.
def putrelation(renumberednodes, renumberedways, usertoken, changeset_id, version, relid, tags, members, visible) #:doc:
- amf_handle_error("'putrelation' #{relid}", "relation", relid) do
+ amf_handle_error("'putrelation' #{relid}", "relation", relid) do
user = getuser(usertoken)
return -1, "You are not logged in, so the relation could not be saved." unless user
# 3. new way id,
# 4. hash of renumbered nodes (old id=>new id),
# 5. way version,
- # 6. hash of node versions (node=>version)
+ # 6. hash of changed node versions (node=>version)
+ # 7. hash of deleted node versions (node=>version)
def putway(renumberednodes, usertoken, changeset_id, wayversion, originalway, pointlist, attributes, nodes, deletednodes) #:doc:
amf_handle_error("'putway' #{originalway}", "way", originalway) do
return -1, t("application.setup_user_auth.blocked") if user.blocks.active.exists?
return -1, "You must accept the contributor terms before you can edit." if REQUIRE_TERMS_AGREED && user.terms_agreed.nil?
- return -2, "Server error - way is only #{points.length} points long." if pointlist.length < 2
+ return -2, "Server error - way is only #{pointlist.length} points long." if pointlist.length < 2
return -1, "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1." unless tags_ok(attributes)
attributes = strip_non_xml_chars attributes
return -2, "Server error - node with id 0 found in way #{originalway}." if id == 0
return -2, "Server error - node with latitude -90 found in way #{originalway}." if lat == 90
- id = renumberednodes[id] if renumberednodes[id]
+ id = renumberednodes[id] if renumberednodes[id]
node = Node.new
node.changeset_id = changeset_id
new_node = nil
Node.transaction do
if id > 0
- node = Node.find(id)
+ begin
+ node = Node.find(id)
+ rescue ActiveRecord::RecordNotFound
+ return [-4, "node", id]
+ end
unless visible || node.ways.empty?
return -1, "Point #{id} has since become part of a way, so you cannot save it as a POI.", id, id, version
def getpoi(id, timestamp) #:doc:
amf_handle_error("'getpoi' #{id}", "node", id) do
id = id.to_i
- n = Node.find(id)
- v = n.version
- unless timestamp == ""
- n = OldNode.where("node_id = ? AND timestamp <= ?", id, timestamp).unredacted.order("timestamp DESC").first
+ n = Node.where(:id => id).first
+ if n
+ v = n.version
+ unless timestamp == ""
+ n = OldNode.where("node_id = ? AND timestamp <= ?", id, timestamp).unredacted.order("timestamp DESC").first
+ end
end
if n
- return [0, "", n.id, n.lon, n.lat, n.tags, v]
+ return [0, "", id, n.lon, n.lat, n.tags, v]
else
return [-4, "node", id]
end
class ApiController < ApplicationController
- skip_before_filter :verify_authenticity_token
- before_filter :check_api_readable, :except => [:capabilities]
- before_filter :setup_user_auth, :only => [:permissions]
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
+ skip_before_action :verify_authenticity_token
+ before_action :check_api_readable, :except => [:capabilities]
+ before_action :setup_user_auth, :only => [:permissions]
+ around_action :api_call_handle_error, :api_call_timeout
# Get an XML response containing a list of tracepoints that have been uploaded
# within the specified bounding box, and in the specified page.
return
end
- @nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(MAX_NUMBER_OF_NODES + 1)
+ nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(MAX_NUMBER_OF_NODES + 1)
- node_ids = @nodes.collect(&:id)
+ node_ids = nodes.collect(&:id)
if node_ids.length > MAX_NUMBER_OF_NODES
report_error("You requested too many nodes (limit is #{MAX_NUMBER_OF_NODES}). Either request a smaller area, or use planet.osm")
return
end
- if node_ids.length == 0
- render :text => "<osm version='#{API_VERSION}' generator='#{GENERATOR}'></osm>", :content_type => "text/xml"
- return
- end
doc = OSM::API.new.get_xml_doc
nodes_to_fetch = (list_of_way_nodes.uniq - node_ids) - [0]
if nodes_to_fetch.length > 0
- @nodes += Node.includes(:node_tags).find(nodes_to_fetch)
+ nodes += Node.includes(:node_tags).find(nodes_to_fetch)
end
visible_nodes = {}
changeset_cache = {}
user_display_name_cache = {}
- @nodes.each do |node|
+ nodes.each do |node|
if node.visible?
doc.root << node.to_xml_node(changeset_cache, user_display_name_cache)
visible_nodes[node.id] = node
protect_from_forgery
- before_filter :fetch_body
+ before_action :fetch_body
def authorize_web
if session[:user]
# phrase from that, we can also put the error message into the status
# message. For now, rails won't let us)
def report_error(message, status = :bad_request)
- # Todo: some sort of escaping of problem characters in the message
+ # TODO: some sort of escaping of problem characters in the message
response.headers["Error"] = message
if request.headers["X-Error-Format"] &&
render :action => "timeout"
end
- ##
- # is the requestor logged in?
- def logged_in?
- !@user.nil?
- end
-
##
# ensure that there is a "this_user" instance variable
def lookup_this_user
# extract authorisation credentials from headers, returns user = nil if none
def get_auth_data
- if request.env.key? "X-HTTP_AUTHORIZATION" # where mod_rewrite might have put it
+ if request.env.key? "X-HTTP_AUTHORIZATION" # where mod_rewrite might have put it
authdata = request.env["X-HTTP_AUTHORIZATION"].to_s.split
- elsif request.env.key? "REDIRECT_X_HTTP_AUTHORIZATION" # mod_fcgi
+ elsif request.env.key? "REDIRECT_X_HTTP_AUTHORIZATION" # mod_fcgi
authdata = request.env["REDIRECT_X_HTTP_AUTHORIZATION"].to_s.split
- elsif request.env.key? "HTTP_AUTHORIZATION" # regular location
+ elsif request.env.key? "HTTP_AUTHORIZATION" # regular location
authdata = request.env["HTTP_AUTHORIZATION"].to_s.split
end
# only basic authentication supported
class BrowseController < ApplicationController
layout :map_layout
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :except => [:query] { |c| c.check_database_readable(true) }
- before_filter :require_oauth
- around_filter :web_timeout
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :except => [:query] { |c| c.check_database_readable(true) }
+ before_action :require_oauth
+ around_action :web_timeout
def relation
@type = "relation"
def note
@type = "note"
- @note = Note.find(params[:id])
+
+ if @user && @user.moderator?
+ @note = Note.find(params[:id])
+ @note_comments = @note.comments.unscope(:where => :visible)
+ else
+ @note = Note.visible.find(params[:id])
+ @note_comments = @note.comments
+ end
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
layout "site"
require "xml/libxml"
- skip_before_filter :verify_authenticity_token, :except => [:list]
- before_filter :authorize_web, :only => [:list, :feed, :comments_feed]
- before_filter :set_locale, :only => [:list, :feed, :comments_feed]
- before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
- before_filter :require_moderator, :only => [:hide_comment, :unhide_comment]
- before_filter :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
- before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe]
- before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
- before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
- before_filter(:only => [:list, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
- after_filter :compress_output
- around_filter :api_call_handle_error, :except => [:list, :feed, :comments_feed]
- around_filter :web_timeout, :only => [:list, :feed, :comments_feed]
+ skip_before_action :verify_authenticity_token, :except => [:list]
+ before_action :authorize_web, :only => [:list, :feed, :comments_feed]
+ before_action :set_locale, :only => [:list, :feed, :comments_feed]
+ before_action :authorize, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
+ before_action :require_moderator, :only => [:hide_comment, :unhide_comment]
+ before_action :require_allow_write_api, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
+ before_action :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close, :comment, :subscribe, :unsubscribe]
+ before_action :check_api_writable, :only => [:create, :update, :delete, :upload, :include, :comment, :subscribe, :unsubscribe, :hide_comment, :unhide_comment]
+ before_action :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query, :list, :feed, :comment, :subscribe, :unsubscribe, :comments_feed]
+ before_action(:only => [:list, :feed, :comments_feed]) { |c| c.check_database_readable(true) }
+ around_action :api_call_handle_error, :except => [:list, :feed, :comments_feed]
+ around_action :api_call_timeout, :except => [:list, :feed, :comments_feed, :upload]
+ around_action :web_timeout, :only => [:list, :feed, :comments_feed]
# Helper methods for checking consistency
include ConsistencyValidations
lat << cs.max_lat unless cs.max_lat.nil?
# collapse the arrays to minimum and maximum
- cs.min_lon, cs.min_lat, cs.max_lon, cs.max_lat =
- lon.min, lat.min, lon.max, lat.max
+ cs.min_lon = lon.min
+ cs.min_lat = lat.min
+ cs.max_lon = lon.max
+ cs.max_lat = lat.max
# save the larger bounding box and return the changeset, which
# will include the bigger bounding box.
changeset = Changeset.find(params[:id])
new_changeset = Changeset.from_xml(request.raw_post)
- if new_changeset.nil?
- render :text => "", :status => :bad_request
- else
- check_changeset_consistency(changeset, @user)
- changeset.update_from(new_changeset, @user)
- render :text => changeset.to_xml, :mime_type => "text/xml"
- end
+ check_changeset_consistency(changeset, @user)
+ changeset.update_from(new_changeset, @user)
+ render :text => changeset.to_xml, :mime_type => "text/xml"
end
##
# list edits (open changesets) in reverse chronological order
def list
if request.format == :atom && params[:max_id]
- redirect_to params.merge(:max_id => nil), :status => :moved_permanently
+ redirect_to url_for(params.merge(:max_id => nil)), :status => :moved_permanently
return
end
end
end
- if (params[:friends] || params[:nearby]) && !@user && request.format == :html
+ if (params[:friends] || params[:nearby]) && !@user
require_user
return
end
changesets = changesets.where("changesets.id <= ?", params[:max_id])
end
- @edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags)
+ @edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
render :action => :list, :layout => false
end
respond_to do |format|
format.rss
end
+ rescue OSM::APIBadUserInput
+ render :text => "", :status => :bad_request
end
private
# restrict changesets to those enclosed by a bounding box
# we need to return both the changesets and the bounding box
def conditions_bbox(changesets, bbox)
- if bbox
+ if bbox
bbox.check_boundaries
bbox = bbox.to_scaled
return changesets.where("min_lon < ? and max_lon > ? and min_lat < ? and max_lat > ?",
class DiaryEntryController < ApplicationController
layout "site", :except => :rss
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user, :only => [:new, :edit, :comment, :hide, :hidecomment]
- before_filter :lookup_this_user, :only => [:view, :comments]
- before_filter :check_database_readable
- before_filter :check_database_writable, :only => [:new, :edit]
- before_filter :require_administrator, :only => [:hide, :hidecomment]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user, :only => [:new, :edit, :comment, :hide, :hidecomment]
+ before_action :lookup_this_user, :only => [:view, :comments]
+ before_action :check_database_readable
+ before_action :check_database_writable, :only => [:new, :edit]
+ before_action :require_administrator, :only => [:hide, :hidecomment]
def new
@title = t "diary_entry.new.title"
end
end
- ##
- # is this list user specific?
- def user_specific_list?
- params[:friends] || params[:nearby]
- end
-
##
# decide on a location for the diary entry map
def set_map_location
class DirectionsController < ApplicationController
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_oauth, :only => [:search]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_oauth, :only => [:search]
def search
render :layout => map_layout
class ExportController < ApplicationController
- before_filter :authorize_web
- before_filter :set_locale
+ before_action :authorize_web
+ before_action :set_locale
caches_page :embed
class GeocoderController < ApplicationController
require "cgi"
require "uri"
- require "net/http"
require "rexml/document"
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_oauth, :only => [:search]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_oauth, :only => [:search]
def search
normalize_params
@sources = []
+
if params[:lat] && params[:lon]
@sources.push "latlon"
@sources.push "osm_nominatim_reverse"
@sources.push "geonames_reverse" if defined?(GEONAMES_USERNAME)
- elsif params[:query].match(/^\d{5}(-\d{4})?$/)
- @sources.push "us_postcode"
- @sources.push "osm_nominatim"
- elsif params[:query].match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
- @sources.push "uk_postcode"
- @sources.push "osm_nominatim"
- elsif params[:query].match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
- @sources.push "ca_postcode"
- @sources.push "osm_nominatim"
- else
- @sources.push "osm_nominatim"
- @sources.push "geonames" if defined?(GEONAMES_USERNAME)
+ elsif params[:query]
+ if params[:query].match(/^\d{5}(-\d{4})?$/)
+ @sources.push "us_postcode"
+ @sources.push "osm_nominatim"
+ elsif params[:query].match(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
+ @sources.push "uk_postcode"
+ @sources.push "osm_nominatim"
+ elsif params[:query].match(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
+ @sources.push "ca_postcode"
+ @sources.push "osm_nominatim"
+ else
+ @sources.push "osm_nominatim"
+ @sources.push "geonames" if defined?(GEONAMES_USERNAME)
+ end
end
- render :layout => map_layout
+ if @sources.empty?
+ render :text => "", :status => :bad_request
+ else
+ render :layout => map_layout
+ end
end
def search_latlon
unless response.match(/Error/)
dataline = response.split(/\n/)[1]
data = dataline.split(/,/) # easting,northing,postcode,lat,long
- postcode = data[2].gsub(/'/, "")
+ postcode = data[2].delete("'")
zoom = POSTCODE_ZOOM - postcode.count("#")
@results.push(:lat => data[3], :lon => data[4], :zoom => zoom,
:name => postcode)
if type.empty?
prefix_name = ""
else
- prefix_name = t "geocoder.search_osm_nominatim.prefix.#{klass}.#{type}", :default => type.gsub("_", " ").capitalize
+ prefix_name = t "geocoder.search_osm_nominatim.prefix.#{klass}.#{type}", :default => type.tr("_", " ").capitalize
end
if klass == "boundary" && type == "administrative"
rank = (place.attributes["place_rank"].to_i + 1) / 2
end
render :action => "results"
- # rescue StandardError => ex
- # @error = "Error contacting nominatim.openstreetmap.org: #{ex.to_s}"
- # render :action => "error"
+ rescue StandardError => ex
+ @error = "Error contacting nominatim.openstreetmap.org: #{ex}"
+ render :action => "error"
end
def search_geonames
render :action => "results"
rescue StandardError => ex
- @error = "Error contacting ws.geonames.org: #{ex}"
+ @error = "Error contacting api.geonames.org: #{ex}"
render :action => "error"
end
render :action => "results"
rescue StandardError => ex
- @error = "Error contacting ws.geonames.org: #{ex}"
+ @error = "Error contacting api.geonames.org: #{ex}"
render :action => "error"
end
private
def fetch_text(url)
- Net::HTTP.get(URI.parse(url))
+ response = OSM.http_client.get(URI.parse(url))
+
+ if response.success?
+ response.body
+ else
+ fail response.status.to_s
+ end
end
def fetch_xml(url)
REXML::Document.new(fetch_text(url))
end
- def format_distance(distance)
- t("geocoder.distance", :count => distance)
- end
-
- def format_direction(bearing)
- return t("geocoder.direction.south_west") if bearing >= 22.5 && bearing < 67.5
- return t("geocoder.direction.south") if bearing >= 67.5 && bearing < 112.5
- return t("geocoder.direction.south_east") if bearing >= 112.5 && bearing < 157.5
- return t("geocoder.direction.east") if bearing >= 157.5 && bearing < 202.5
- return t("geocoder.direction.north_east") if bearing >= 202.5 && bearing < 247.5
- return t("geocoder.direction.north") if bearing >= 247.5 && bearing < 292.5
- return t("geocoder.direction.north_west") if bearing >= 292.5 && bearing < 337.5
- t("geocoder.direction.west")
- end
-
- def format_name(name)
- name.gsub(/( *\[[^\]]*\])*$/, "")
- end
-
- def count_results(results)
- count = 0
-
- results.each do |source|
- count += source[:results].length if source[:results]
- end
-
- count
- end
-
def escape_query(query)
URI.escape(query, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]", false, "N"))
end
class MessageController < ApplicationController
layout "site"
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user
- before_filter :lookup_this_user, :only => [:new]
- before_filter :check_database_readable
- before_filter :check_database_writable, :only => [:new, :reply, :mark]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user
+ before_action :lookup_this_user, :only => [:new]
+ before_action :check_database_readable
+ before_action :check_database_writable, :only => [:new, :reply, :mark]
# Allow the user to write a new message to another user. This action also
# deals with the sending of that message to the other user when the user
class NodeController < ApplicationController
require "xml/libxml"
- skip_before_filter :verify_authenticity_token
- before_filter :authorize, :only => [:create, :update, :delete]
- before_filter :require_allow_write_api, :only => [:create, :update, :delete]
- before_filter :require_public_data, :only => [:create, :update, :delete]
- before_filter :check_api_writable, :only => [:create, :update, :delete]
- before_filter :check_api_readable, :except => [:create, :update, :delete]
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
+ skip_before_action :verify_authenticity_token
+ before_action :authorize, :only => [:create, :update, :delete]
+ before_action :require_allow_write_api, :only => [:create, :update, :delete]
+ before_action :require_public_data, :only => [:create, :update, :delete]
+ before_action :check_api_writable, :only => [:create, :update, :delete]
+ before_action :check_api_readable, :except => [:create, :update, :delete]
+ around_action :api_call_handle_error, :api_call_timeout
# Create a node from XML.
def create
unless new_node && new_node.id == node.id
fail OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
end
+
node.update_from(new_node, @user)
render :text => node.version.to_s, :content_type => "text/plain"
end
class NotesController < ApplicationController
layout "site", :only => [:mine]
- before_filter :check_api_readable
- before_filter :authorize_web, :only => [:mine]
- before_filter :setup_user_auth, :only => [:create, :comment]
- before_filter :authorize, :only => [:close, :reopen, :destroy]
- before_filter :require_moderator, :only => [:destroy]
- before_filter :check_api_writable, :only => [:create, :comment, :close, :reopen, :destroy]
- before_filter :require_allow_write_notes, :only => [:create, :comment, :close, :reopen, :destroy]
- before_filter :set_locale
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
+ before_action :check_api_readable
+ before_action :authorize_web, :only => [:mine]
+ before_action :setup_user_auth, :only => [:create, :comment]
+ before_action :authorize, :only => [:close, :reopen, :destroy]
+ before_action :require_moderator, :only => [:destroy]
+ before_action :check_api_writable, :only => [:create, :comment, :close, :reopen, :destroy]
+ before_action :require_allow_write_notes, :only => [:create, :comment, :close, :reopen, :destroy]
+ before_action :set_locale
+ around_action :api_call_handle_error, :api_call_timeout
##
# Return a list of notes in a given area
def mine
if params[:display_name]
if @this_user = User.active.find_by_display_name(params[:display_name])
- @title = t "note.mine.title", :user => @this_user.display_name
- @heading = t "note.mine.heading", :user => @this_user.display_name
+ @title = t "note.mine.title", :user => @this_user.display_name
+ @heading = t "note.mine.heading", :user => @this_user.display_name
@description = t "note.mine.subheading", :user => render_to_string(:partial => "user", :object => @this_user)
@page = (params[:page] || 1).to_i
@page_size = 10
- @notes = @this_user.notes.order("updated_at DESC, id").uniq.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author).to_a
+ @notes = @this_user.notes
+ @notes = @notes.visible unless @user && @user.moderator?
+ @notes = @notes.order("updated_at DESC, id").uniq.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author).to_a
else
@title = t "user.no_such_user.title"
@not_found_user = params[:display_name]
# utility functions below.
#------------------------------------------------------------
- ##
- # Render an OK response
- def render_ok
- if params[:format] == "js"
- render :text => "osbResponse();", :content_type => "text/javascript"
- else
- render :text => "ok " + @note.id.to_s + "\n", :content_type => "text/plain" if @note
- render :text => "ok\n", :content_type => "text/plain" unless @note
- end
- end
-
##
# Get the maximum number of results to return
def result_limit
class OauthClientsController < ApplicationController
layout "site"
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user
def index
@client_applications = @user.client_applications
protected
def oauth1_authorize
- unless @token
- render :action => "authorize_failure"
- return
- end
-
if @token.invalidated?
@message = t "oauth.oauthorize_failure.invalid"
render :action => "authorize_failure"
class OldController < ApplicationController
require "xml/libxml"
- skip_before_filter :verify_authenticity_token
- before_filter :setup_user_auth, :only => [:history, :version]
- before_filter :authorize, :only => [:redact]
- before_filter :authorize_moderator, :only => [:redact]
- before_filter :require_allow_write_api, :only => [:redact]
- before_filter :check_api_readable
- before_filter :check_api_writable, :only => [:redact]
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
- before_filter :lookup_old_element, :except => [:history]
- before_filter :lookup_old_element_versions, :only => [:history]
+ skip_before_action :verify_authenticity_token
+ before_action :setup_user_auth, :only => [:history, :version]
+ before_action :authorize, :only => [:redact]
+ before_action :authorize_moderator, :only => [:redact]
+ before_action :require_allow_write_api, :only => [:redact]
+ before_action :check_api_readable
+ before_action :check_api_writable, :only => [:redact]
+ around_action :api_call_handle_error, :api_call_timeout
+ before_action :lookup_old_element, :except => [:history]
+ before_action :lookup_old_element_versions, :only => [:history]
def history
# the .where() method used in the lookup_old_element_versions
class RedactionsController < ApplicationController
layout "site"
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user, :only => [:new, :create, :edit, :update, :destroy]
- before_filter :require_moderator, :only => [:new, :create, :edit, :update, :destroy]
- before_filter :lookup_redaction, :only => [:show, :edit, :update, :destroy]
- before_filter :check_database_readable
- before_filter :check_database_writable, :only => [:create, :update, :destroy]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user, :only => [:new, :create, :edit, :update, :destroy]
+ before_action :require_moderator, :only => [:new, :create, :edit, :update, :destroy]
+ before_action :lookup_redaction, :only => [:show, :edit, :update, :destroy]
+ before_action :check_database_readable
+ before_action :check_database_writable, :only => [:create, :update, :destroy]
def index
@redactions = Redaction.order(:id)
class RelationController < ApplicationController
require "xml/libxml"
- skip_before_filter :verify_authenticity_token
- before_filter :authorize, :only => [:create, :update, :delete]
- before_filter :require_allow_write_api, :only => [:create, :update, :delete]
- before_filter :require_public_data, :only => [:create, :update, :delete]
- before_filter :check_api_writable, :only => [:create, :update, :delete]
- before_filter :check_api_readable, :except => [:create, :update, :delete]
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
+ skip_before_action :verify_authenticity_token
+ before_action :authorize, :only => [:create, :update, :delete]
+ before_action :require_allow_write_api, :only => [:create, :update, :delete]
+ before_action :require_public_data, :only => [:create, :update, :delete]
+ before_action :check_api_writable, :only => [:create, :update, :delete]
+ before_action :check_api_readable, :except => [:create, :update, :delete]
+ around_action :api_call_handle_error, :api_call_timeout
def create
assert_method :put
relation = Relation.from_xml(request.raw_post, true)
- # We assume that an exception has been thrown if there was an error
- # generating the relation
- # if relation
+ # Assume that Relation.from_xml has thrown an exception if there is an error parsing the xml
relation.create_with_history @user
render :text => relation.id.to_s, :content_type => "text/plain"
- # else
- # render :text => "Couldn't get turn the input into a relation.", :status => :bad_request
- # end
end
def read
relation = Relation.find(params[:id])
new_relation = Relation.from_xml(request.raw_post)
- if new_relation && new_relation.id == relation.id
- relation.update_from new_relation, @user
- render :text => relation.version.to_s, :content_type => "text/plain"
- else
- render :text => "", :status => :bad_request
+ unless new_relation && new_relation.id == relation.id
+ fail OSM::APIBadUserInput.new("The id in the url (#{relation.id}) is not the same as provided in the xml (#{new_relation.id})")
end
+
+ relation.update_from new_relation, @user
+ render :text => relation.version.to_s, :content_type => "text/plain"
end
def delete
# Support searching for nodes, ways, or all
# Can search by tag k, v, or both (type->k,value->v)
# Can search by name (k=name,v=....)
- skip_before_filter :verify_authenticity_token
- after_filter :compress_output
+ skip_before_action :verify_authenticity_token
def search_all
do_search(true, true, true)
layout "site"
layout :map_layout, :only => [:index, :export]
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :redirect_browse_params, :only => :index
- before_filter :redirect_map_params, :only => [:index, :edit, :export]
- before_filter :require_user, :only => [:welcome]
- before_filter :require_oauth, :only => [:index]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :redirect_browse_params, :only => :index
+ before_action :redirect_map_params, :only => [:index, :edit, :export]
+ before_action :require_user, :only => [:welcome]
+ before_action :require_oauth, :only => [:index]
def index
unless STATUS == :database_readonly || STATUS == :database_offline
class SwfController < ApplicationController
- skip_before_filter :verify_authenticity_token
- before_filter :check_api_readable
+ skip_before_action :verify_authenticity_token
+ before_action :check_api_readable
# to log:
# RAILS_DEFAULT_LOGGER.error("Args: #{args[0]}, #{args[1]}, #{args[2]}, #{args[3]}")
bounds_top = 240 * 20
m = ""
- m += swf_record(9, 255.chr + 155.chr + 155.chr) # Background
+ m += swf_record(9, 255.chr + 155.chr + 155.chr) # Background
absx = 0
absy = 0
xl = yb = 9999999
if params["token"]
user = User.authenticate(:token => params[:token])
- sql = "SELECT gps_points.latitude*0.0000001 AS lat,gps_points.longitude*0.0000001 AS lon,gpx_files.id AS fileid," + " EXTRACT(EPOCH FROM gps_points.timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gpx_files,gps_points " + "WHERE gpx_files.id=gpx_id " + " AND gpx_files.user_id=#{user.id} " + " AND " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
+ sql = "SELECT gps_points.latitude*0.0000001 AS lat,gps_points.longitude*0.0000001 AS lon,gpx_files.id AS fileid," + " EXTRACT(EPOCH FROM gps_points.timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gpx_files,gps_points " + "WHERE gpx_files.id=gpx_id " + " AND gpx_files.user_id=#{user.id} " + " AND " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
else
- sql = "SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid," + " EXTRACT(EPOCH FROM timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gps_points " + "WHERE " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
+ sql = "SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid," + " EXTRACT(EPOCH FROM timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gps_points " + "WHERE " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
end
gpslist = ActiveRecord::Base.connection.select_all sql
# Line-drawing
def start_shape
- s = 0.chr # No fill styles
- s += 2.chr # Two line styles
- s += pack_u16(0) + 0.chr + 255.chr + 255.chr # Width 5, RGB #00FFFF
- s += pack_u16(0) + 255.chr + 0.chr + 255.chr # Width 5, RGB #FF00FF
- s += 34.chr # 2 fill, 2 line index bits
+ s = 0.chr # No fill styles
+ s += 2.chr # Two line styles
+ s += pack_u16(0) + 0.chr + 255.chr + 255.chr # Width 5, RGB #00FFFF
+ s += pack_u16(0) + 255.chr + 0.chr + 255.chr # Width 5, RGB #FF00FF
+ s += 34.chr # 2 fill, 2 line index bits
s
end
end
def start_and_move(x, y, col)
- d = "001001" # Line style change, moveTo
+ d = "001001" # Line style change, moveTo
l = [length_sb(x), length_sb(y)].max
- d += sprintf("%05b%0#{l}b%0#{l}b", l, x, y)
- d += col # Select line style
+ d += format("%05b%0*b%0*b", l, l, x, l, y)
+ d += col # Select line style
d
end
dx = x2 - x1
dy = y2 - y1
l = [length_sb(dx), length_sb(dy)].max
- d += sprintf("%04b", l - 2)
+ d += format("%04b", l - 2)
d += "1" # GeneralLine
- d += sprintf("%0#{l}b%0#{l}b", dx, dy)
+ d += format("%0*b%0*b", l, dx, l, dy)
d
end
length_sb(c),
length_sb(d)].max
# create binary string (00111001 etc.) - 5-byte length, then bbox
- n = sprintf("%05b%0#{l}b%0#{l}b%0#{l}b%0#{l}b", l, a, b, c, d)
+ n = format("%05b%0*b%0*b%0*b%0*b", l, l, a, l, b, l, c, l, d)
# pack into byte string
[n].pack("B*")
end
def lat2y(a)
180 / Math::PI * Math.log(Math.tan(Math::PI / 4 + a * (Math::PI / 180) / 2))
end
-
- def sqlescape(a)
- a.gsub("'", "''").gsub(92.chr, 92.chr + 92.chr)
- end
end
class TraceController < ApplicationController
- layout "site"
-
- skip_before_filter :verify_authenticity_token, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user, :only => [:mine, :create, :edit, :delete]
- before_filter :authorize, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
- before_filter :check_database_readable, :except => [:api_read, :api_data]
- before_filter :check_database_writable, :only => [:create, :edit, :delete, :api_create, :api_update, :api_delete]
- before_filter :check_api_readable, :only => [:api_read, :api_data]
- before_filter :check_api_writable, :only => [:api_create, :api_update, :api_delete]
- before_filter :require_allow_read_gpx, :only => [:api_read, :api_data]
- before_filter :require_allow_write_gpx, :only => [:api_create, :api_update, :api_delete]
- before_filter :offline_warning, :only => [:mine, :view]
- before_filter :offline_redirect, :only => [:create, :edit, :delete, :data, :api_create, :api_delete, :api_data]
- around_filter :api_call_handle_error, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
+ layout "site", :except => :georss
+
+ skip_before_action :verify_authenticity_token, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user, :only => [:mine, :create, :edit, :delete]
+ before_action :authorize, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
+ before_action :check_database_readable, :except => [:api_read, :api_data]
+ before_action :check_database_writable, :only => [:create, :edit, :delete, :api_create, :api_update, :api_delete]
+ before_action :check_api_readable, :only => [:api_read, :api_data]
+ before_action :check_api_writable, :only => [:api_create, :api_update, :api_delete]
+ before_action :require_allow_read_gpx, :only => [:api_read, :api_data]
+ before_action :require_allow_write_gpx, :only => [:api_create, :api_update, :api_delete]
+ before_action :offline_warning, :only => [:mine, :view]
+ before_action :offline_redirect, :only => [:create, :edit, :delete, :data, :api_create, :api_delete, :api_data]
+ around_action :api_call_handle_error, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
# Counts and selects pages of GPX traces for various criteria (by user, tags, public etc.).
# target_user - if set, specifies the user to fetch traces for. if not set will fetch all traces
end
if @trace.id
- logger.info("id is #{@trace.id}")
flash[:notice] = t "trace.create.trace_uploaded"
if @user.traces.where(:inserted => false).count > 4
def picture
trace = Trace.find(params[:id])
- if trace.inserted?
+ if trace.visible? && trace.inserted?
if trace.public? || (@user && @user == trace.user)
expires_in 7.days, :private => !trace.public?, :public => trace.public?
send_file(trace.large_picture_name, :filename => "#{trace.id}.gif", :type => "image/gif", :disposition => "inline")
def icon
trace = Trace.find(params[:id])
- if trace.inserted?
+ if trace.visible? && trace.inserted?
if trace.public? || (@user && @user == trace.user)
expires_in 7.days, :private => !trace.public?, :public => trace.public?
send_file(trace.icon_picture_name, :filename => "#{trace.id}_icon.gif", :type => "image/gif", :disposition => "inline")
end
def api_data
- trace = Trace.find(params[:id])
+ trace = Trace.visible.find(params[:id])
if trace.public? || trace.user == @user
- if request.format == Mime::XML || request.format == Mime::GPX
+ if request.format == Mime::XML
send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
+ elsif request.format == Mime::GPX
+ send_file(trace.xml_file, :filename => "#{trace.id}.gpx", :type => request.format.to_s, :disposition => "attachment")
else
send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
end
class UserBlocksController < ApplicationController
layout "site"
- before_filter :authorize_web
- before_filter :set_locale
- before_filter :require_user, :only => [:new, :create, :edit, :update, :revoke]
- before_filter :require_moderator, :only => [:new, :create, :edit, :update, :revoke]
- before_filter :lookup_this_user, :only => [:new, :create, :blocks_on, :blocks_by]
- before_filter :lookup_user_block, :only => [:show, :edit, :update, :revoke]
- before_filter :require_valid_params, :only => [:create, :update]
- before_filter :check_database_readable
- before_filter :check_database_writable, :only => [:create, :update, :revoke]
+ before_action :authorize_web
+ before_action :set_locale
+ before_action :require_user, :only => [:new, :create, :edit, :update, :revoke]
+ before_action :require_moderator, :only => [:new, :create, :edit, :update, :revoke]
+ before_action :lookup_this_user, :only => [:new, :create, :blocks_on, :blocks_by]
+ before_action :lookup_user_block, :only => [:show, :edit, :update, :revoke]
+ before_action :require_valid_params, :only => [:create, :update]
+ before_action :check_database_readable
+ before_action :check_database_writable, :only => [:create, :update, :revoke]
def index
@user_blocks_pages, @user_blocks = paginate(:user_blocks,
:ends_at => Time.now.getutc + @block_period.hours,
:reason => params[:user_block][:reason],
:needs_view => params[:user_block][:needs_view]
- )
+ )
flash[:notice] = t("user_block.update.success")
redirect_to(@user_block)
else
class UserController < ApplicationController
layout "site", :except => [:api_details]
- skip_before_filter :verify_authenticity_token, :only => [:api_read, :api_details, :api_gpx_files]
- before_filter :disable_terms_redirect, :only => [:terms, :save, :logout, :api_details]
- before_filter :authorize, :only => [:api_details, :api_gpx_files]
- before_filter :authorize_web, :except => [:api_read, :api_details, :api_gpx_files]
- before_filter :set_locale, :except => [:api_read, :api_details, :api_gpx_files]
- before_filter :require_user, :only => [:account, :go_public, :make_friend, :remove_friend]
- before_filter :require_self, :only => [:account]
- before_filter :check_database_readable, :except => [:login, :api_read, :api_details, :api_gpx_files]
- before_filter :check_database_writable, :only => [:new, :account, :confirm, :confirm_email, :lost_password, :reset_password, :go_public, :make_friend, :remove_friend]
- before_filter :check_api_readable, :only => [:api_read, :api_details, :api_gpx_files]
- before_filter :require_allow_read_prefs, :only => [:api_details]
- before_filter :require_allow_read_gpx, :only => [:api_gpx_files]
- before_filter :require_cookies, :only => [:new, :login, :confirm]
- before_filter :require_administrator, :only => [:set_status, :delete, :list]
- around_filter :api_call_handle_error, :only => [:api_read, :api_details, :api_gpx_files]
- before_filter :lookup_user_by_id, :only => [:api_read]
- before_filter :lookup_user_by_name, :only => [:set_status, :delete]
+ skip_before_action :verify_authenticity_token, :only => [:api_read, :api_details, :api_gpx_files, :auth_success]
+ before_action :disable_terms_redirect, :only => [:terms, :save, :logout, :api_details]
+ before_action :authorize, :only => [:api_details, :api_gpx_files]
+ before_action :authorize_web, :except => [:api_read, :api_details, :api_gpx_files]
+ before_action :set_locale, :except => [:api_read, :api_details, :api_gpx_files]
+ before_action :require_user, :only => [:account, :go_public, :make_friend, :remove_friend]
+ before_action :require_self, :only => [:account]
+ before_action :check_database_readable, :except => [:login, :api_read, :api_details, :api_gpx_files]
+ before_action :check_database_writable, :only => [:new, :account, :confirm, :confirm_email, :lost_password, :reset_password, :go_public, :make_friend, :remove_friend]
+ before_action :check_api_readable, :only => [:api_read, :api_details, :api_gpx_files]
+ before_action :require_allow_read_prefs, :only => [:api_details]
+ before_action :require_allow_read_gpx, :only => [:api_gpx_files]
+ before_action :require_cookies, :only => [:new, :login, :confirm]
+ before_action :require_administrator, :only => [:set_status, :delete, :list]
+ around_action :api_call_handle_error, :only => [:api_read, :api_details, :api_gpx_files]
+ before_action :lookup_user_by_id, :only => [:api_read]
+ before_action :lookup_user_by_name, :only => [:set_status, :delete]
def terms
@legale = params[:legale] || OSM.ip_to_country(request.remote_ip) || DEFAULT_LEGALE
@user.terms_seen = true
if @user.save
- flash[:notice] = t "user.new.terms declined", :url => t("user.new.terms declined url")
+ flash[:notice] = t("user.new.terms declined", :url => t("user.new.terms declined url")).html_safe
end
if params[:referer]
@user.languages = http_accept_language.user_preferred_languages
@user.terms_agreed = Time.now.getutc
@user.terms_seen = true
- @user.openid_url = nil if @user.openid_url && @user.openid_url.empty?
+
+ if @user.auth_uid.nil? || @user.auth_uid.empty?
+ @user.auth_provider = nil
+ @user.auth_uid = nil
+ end
if @user.save
flash[:piwik_goal] = PIWIK["goals"]["signup"] if defined?(PIWIK)
@tokens = @user.oauth_tokens.authorized
if params[:user] && params[:user][:display_name] && params[:user][:description]
- if params[:user][:openid_url] &&
- params[:user][:openid_url].length > 0 &&
- params[:user][:openid_url] != @user.openid_url
- # If the OpenID has changed, we want to check that it is a
- # valid OpenID and one the user has control over before saving
- # it as a password equivalent for the user.
- session[:new_user_settings] = params
- openid_verify(params[:user][:openid_url], @user)
- else
+ if params[:user][:auth_provider].blank? ||
+ (params[:user][:auth_provider] == @user.auth_provider &&
+ params[:user][:auth_uid] == @user.auth_uid)
update_user(@user, params)
- end
- elsif using_open_id?
- # The redirect from the OpenID provider reenters here
- # again and we need to pass the parameters through to
- # the open_id_authentication function
- settings = session.delete(:new_user_settings)
- openid_verify(nil, @user) do |user|
- update_user(user, settings)
+ else
+ session[:new_user_settings] = params
+ redirect_to auth_url(params[:user][:auth_provider], params[:user][:auth_uid])
end
end
end
@title = t "user.new.title"
@referer = params[:referer] || session[:referer]
- if using_open_id?
- # The redirect from the OpenID provider reenters here
- # again and we need to pass the parameters through to
- # the open_id_authentication function
- @user = session.delete(:new_user)
-
- openid_verify(nil, @user) do |user, verified_email|
- user.status = "active" if user.email == verified_email
- end
-
- if @user.openid_url.nil? || @user.invalid?
- render :action => "new"
- else
- session[:new_user] = @user
- redirect_to :action => "terms"
- end
- elsif @user
+ if @user
# The user is logged in already, so don't show them the signup
# page, instead send them to the home page
if @referer
else
redirect_to :controller => "site", :action => "index"
end
- elsif params.key?(:openid)
+ elsif params.key?(:auth_provider) && params.key?(:auth_uid)
@user = User.new(:email => params[:email],
:email_confirmation => params[:email],
:display_name => params[:nickname],
- :openid_url => params[:openid])
+ :auth_provider => params[:auth_provider],
+ :auth_uid => params[:auth_uid])
- flash.now[:notice] = t "user.new.openid association"
+ flash.now[:notice] = t "user.new.auth association"
else
check_signup_allowed
end
@user.status = "pending"
- if @user.openid_url.present? && @user.pass_crypt.empty?
- # We are creating an account with OpenID and no password
- # was specified so create a random one
+ if @user.auth_provider.present? && @user.pass_crypt.empty?
+ # We are creating an account with external authentication and
+ # no password was specified so create a random one
@user.pass_crypt = SecureRandom.base64(16)
@user.pass_crypt_confirmation = @user.pass_crypt
end
if @user.invalid?
# Something is wrong with a new user, so rerender the form
render :action => "new"
- elsif @user.openid_url.present?
- # Verify OpenID before moving on
+ elsif @user.auth_provider.present?
+ # Verify external authenticator before moving on
session[:new_user] = @user
- openid_verify(@user.openid_url, @user)
+ redirect_to auth_url(@user.auth_provider, @user.auth_uid)
else
# Save the user record
session[:new_user] = @user
end
def login
- if params[:username] || using_open_id?
- session[:referer] ||= params[:referer]
+ session[:referer] = params[:referer] if params[:referer]
- if using_open_id?
- session[:remember_me] ||= params[:remember_me_openid]
- openid_authentication(params[:openid_url])
- else
- session[:remember_me] ||= params[:remember_me]
- password_authentication(params[:username], params[:password])
- end
+ if params[:username].present? && params[:password].present?
+ session[:remember_me] ||= params[:remember_me]
+ password_authentication(params[:username], params[:password])
+ elsif params[:openid_url].present?
+ session[:remember_me] ||= params[:remember_me_openid]
+ redirect_to auth_url("openid", params[:openid_url])
end
end
else
user = User.find_by_display_name(params[:display_name])
- redirect_to root_path if !user || user.active?
+ redirect_to root_path if user.nil? || user.active?
end
end
def confirm_resend
- if user = User.find_by_display_name(params[:display_name])
- Notifier.signup_confirm(user, user.tokens.create).deliver_now
- flash[:notice] = t "user.confirm_resend.success", :email => user.email
+ user = User.find_by_display_name(params[:display_name])
+ token = UserToken.find_by_token(session[:token])
+
+ if user.nil? || token.nil? || token.user != user
+ flash[:error] = t "user.confirm_resend.failure", :name => params[:display_name]
else
- flash[:notice] = t "user.confirm_resend.failure", :name => params[:display_name]
+ Notifier.signup_confirm(user, user.tokens.create).deliver_now
+ flash[:notice] = t("user.confirm_resend.success", :email => user.email).html_safe
end
redirect_to :action => "login"
token.destroy
session[:user] = @user.id
redirect_to :action => "account", :display_name => @user.display_name
- else
+ elsif token
flash[:error] = t "user.confirm_email.failure"
- redirect_to :action => "account", :display_name => @user.display_name
+ redirect_to :action => "account", :display_name => token.user.display_name
+ else
+ flash[:error] = t "user.confirm_email.unknown_token"
end
end
end
def api_read
- render :text => "", :status => :gone unless @this_user.visible?
+ if @this_user.visible?
+ render :action => :api_read, :content_type => "text/xml"
+ else
+ render :text => "", :status => :gone
+ end
end
def api_details
@this_user = @user
- render :action => :api_read
+ render :action => :api_read, :content_type => "text/xml"
end
def api_gpx_files
doc = OSM::API.new.get_xml_doc
- @user.traces.each do |trace|
- doc.root << trace.to_xml_node if trace.public? || trace.user == @user
+ @user.traces.reload.each do |trace|
+ doc.root << trace.to_xml_node
end
render :text => doc.to_s, :content_type => "text/xml"
end
if request.post?
ids = params[:user].keys.collect(&:to_i)
- User.update_all("status = 'confirmed'", :id => ids) if params[:confirm]
- User.update_all("status = 'deleted'", :id => ids) if params[:hide]
+ User.where(:id => ids).update_all(:status => "confirmed") if params[:confirm]
+ User.where(:id => ids).update_all(:status => "deleted") if params[:hide]
redirect_to url_for(:status => params[:status], :ip => params[:ip], :page => params[:page])
else
end
end
+ ##
+ # omniauth success callback
+ def auth_success
+ auth_info = env["omniauth.auth"]
+
+ provider = auth_info[:provider]
+ uid = auth_info[:uid]
+ name = auth_info[:info][:name]
+ email = auth_info[:info][:email]
+
+ case provider
+ when "openid"
+ email_verified = uid.match(%r{https://www.google.com/accounts/o8/id?(.*)}) ||
+ uid.match(%r{https://me.yahoo.com/(.*)})
+ when "google"
+ email_verified = true
+ else
+ email_verified = false
+ end
+
+ user = User.find_by_auth_provider_and_auth_uid(provider, uid)
+
+ if user.nil? && provider == "google"
+ openid_url = auth_info[:extra][:id_info]["openid_id"]
+ user = User.find_by_auth_provider_and_auth_uid("openid", openid_url) if openid_url
+ user.update(:auth_provider => provider, :auth_uid => uid) if user
+ end
+
+ if user
+ case user.status
+ when "pending" then
+ unconfirmed_login(user)
+ when "active", "confirmed" then
+ successful_login(user)
+ when "suspended" then
+ failed_login t("user.login.account is suspended", :webmaster => "mailto:webmaster@openstreetmap.org")
+ else
+ failed_login t("user.login.auth failure")
+ end
+ elsif settings = session.delete(:new_user_settings)
+ @user.auth_provider = provider
+ @user.auth_uid = uid
+
+ update_user(@user, settings)
+
+ redirect_to :action => "account", :display_name => @user.display_name
+ elsif session[:new_user]
+ session[:new_user].auth_provider = provider
+ session[:new_user].auth_uid = uid
+
+ if email_verified && email == session[:new_user].email
+ session[:new_user].status = "active"
+ end
+
+ redirect_to :action => "terms"
+ else
+ redirect_to :action => "new", :nickname => name, :email => email,
+ :auth_provider => provider, :auth_uid => uid
+ end
+ end
+
+ ##
+ # omniauth failure callback
+ def auth_failure
+ flash[:error] = t("user.auth_failure." + params[:message])
+ redirect_to params[:origin] || login_url
+ end
+
private
##
end
##
- # handle OpenID authentication
- def openid_authentication(openid_url)
- # If we don't appear to have a user for this URL then ask the
- # provider for some extra information to help with signup
- if openid_url && User.find_by_openid_url(openid_url)
- required = nil
+ # return the URL to use for authentication
+ def auth_url(provider, uid)
+ if provider == "openid"
+ auth_path(:provider => "openid", :openid_url => openid_expand_url(uid), :origin => request.path)
else
- required = [:nickname, :email, "http://axschema.org/namePerson/friendly", "http://axschema.org/contact/email"]
- end
-
- # Start the authentication
- authenticate_with_open_id(openid_expand_url(openid_url), :method => :get, :required => required) do |result, identity_url, sreg, ax|
- if result.successful?
- # We need to use the openid url passed back from the OpenID provider
- # rather than the one supplied by the user, as these can be different.
- #
- # For example, you can simply enter yahoo.com in the login box rather
- # than a user specific url. Only once it comes back from the provider
- # provider do we know the unique address for the user.
- if user = User.find_by_openid_url(identity_url)
- case user.status
- when "pending" then
- unconfirmed_login(user)
- when "active", "confirmed" then
- successful_login(user)
- when "suspended" then
- failed_login t("user.login.account is suspended", :webmaster => "mailto:webmaster@openstreetmap.org")
- else
- failed_login t("user.login.auth failure")
- end
- else
- # Guard against not getting any extension data
- sreg = {} if sreg.nil?
- ax = {} if ax.nil?
-
- # We don't have a user registered to this OpenID, so redirect
- # to the create account page with username and email filled
- # in if they have been given by the OpenID provider through
- # the simple registration protocol.
- nickname = sreg["nickname"] || ax["http://axschema.org/namePerson/friendly"].first
- email = sreg["email"] || ax["http://axschema.org/contact/email"].first
-
- redirect_to :controller => "user", :action => "new", :nickname => nickname, :email => email, :openid => identity_url
- end
- elsif result.missing?
- failed_login t("user.login.openid missing provider")
- elsif result.invalid?
- failed_login t("user.login.openid invalid")
- else
- failed_login t("user.login.auth failure")
- end
- end
- end
-
- ##
- # verify an OpenID URL
- def openid_verify(openid_url, user)
- user.openid_url = openid_url
-
- authenticate_with_open_id(openid_expand_url(openid_url), :method => :get, :required => [:email, "http://axschema.org/contact/email"]) do |result, identity_url, sreg, ax|
- if result.successful?
- # Do we trust the emails this provider returns?
- if openid_email_verified(identity_url)
- # Guard against not getting any extension data
- sreg = {} if sreg.nil?
- ax = {} if ax.nil?
-
- # Get the verified email
- verified_email = sreg["email"] || ax["http://axschema.org/contact/email"].first
- end
-
- # We need to use the openid url passed back from the OpenID provider
- # rather than the one supplied by the user, as these can be different.
- #
- # For example, you can simply enter yahoo.com in the login box rather
- # than a user specific url. Only once it comes back from the provider
- # provider do we know the unique address for the user.
- user.openid_url = identity_url
- yield user, verified_email
- elsif result.missing?
- flash.now[:error] = t "user.login.openid missing provider"
- elsif result.invalid?
- flash.now[:error] = t "user.login.openid invalid"
- else
- flash.now[:error] = t "user.login.auth failure"
- end
+ auth_path(:provider => provider, :origin => request.path)
end
end
def openid_expand_url(openid_url)
if openid_url.nil?
return nil
- elsif openid_url.match(/(.*)gmail.com(\/?)$/) || openid_url.match(/(.*)googlemail.com(\/?)$/)
+ elsif openid_url.match(%r{(.*)gmail.com(/?)$}) || openid_url.match(%r{(.*)googlemail.com(/?)$})
# Special case gmail.com as it is potentially a popular OpenID
# provider and, unlike yahoo.com, where it works automatically, Google
# have hidden their OpenID endpoint somewhere obscure this making it
end
end
- ##
- # check if we trust an OpenID provider to return a verified
- # email, so that we can skpi verifying it ourselves
- def openid_email_verified(openid_url)
- openid_url.match(%r{https://www.google.com/accounts/o8/id?(.*)}) ||
- openid_url.match(%r{https://me.yahoo.com/(.*)})
- end
-
##
# process a successful login
def successful_login(user)
def failed_login(message)
flash[:error] = message
- redirect_to :action => "login", :referer => session[:referer]
+ redirect_to :action => "login", :referer => session[:referer]
session.delete(:remember_me)
session.delete(:referer)
##
#
def unconfirmed_login(user)
+ session[:token] = user.tokens.create.token
+
redirect_to :action => "confirm", :display_name => user.display_name
session.delete(:remember_me)
user.preferred_editor = params[:user][:preferred_editor]
end
- user.openid_url = nil if params[:user][:openid_url].blank?
+ if params[:user][:auth_provider].nil? || params[:user][:auth_provider].blank?
+ user.auth_provider = nil
+ user.auth_uid = nil
+ end
if user.save
set_locale
##
# return permitted user parameters
def user_params
- params.require(:user).permit(:email, :email_confirmation, :display_name, :openid_url, :pass_crypt, :pass_crypt_confirmation)
+ params.require(:user).permit(:email, :email_confirmation, :display_name,
+ :auth_provider, :auth_uid,
+ :pass_crypt, :pass_crypt_confirmation)
end
##
# Update and read user preferences, which are arbitrayr key/val pairs
class UserPreferenceController < ApplicationController
- skip_before_filter :verify_authenticity_token
- before_filter :authorize
- before_filter :require_allow_read_prefs, :only => [:read_one, :read]
- before_filter :require_allow_write_prefs, :except => [:read_one, :read]
- around_filter :api_call_handle_error
+ skip_before_action :verify_authenticity_token
+ before_action :authorize
+ before_action :require_allow_read_prefs, :only => [:read_one, :read]
+ before_action :require_allow_write_prefs, :except => [:read_one, :read]
+ around_action :api_call_handle_error
##
# return all the preferences as an XML document
el1 = XML::Node.new "preferences"
prefs.each do |pref|
- el1 << pref.to_xml_node
+ el1 << pref.to_xml_node
end
doc.root << el1
class UserRolesController < ApplicationController
layout "site"
- before_filter :authorize_web
- before_filter :require_user
- before_filter :lookup_this_user
- before_filter :require_administrator
- before_filter :require_valid_role
- before_filter :not_in_role, :only => [:grant]
- before_filter :in_role, :only => [:revoke]
+ before_action :authorize_web
+ before_action :require_user
+ before_action :lookup_this_user
+ before_action :require_administrator
+ before_action :require_valid_role
+ before_action :not_in_role, :only => [:grant]
+ before_action :in_role, :only => [:revoke]
def grant
@this_user.roles.create(:role => @role, :granter_id => @user.id)
class WayController < ApplicationController
require "xml/libxml"
- skip_before_filter :verify_authenticity_token
- before_filter :authorize, :only => [:create, :update, :delete]
- before_filter :require_allow_write_api, :only => [:create, :update, :delete]
- before_filter :require_public_data, :only => [:create, :update, :delete]
- before_filter :check_api_writable, :only => [:create, :update, :delete]
- before_filter :check_api_readable, :except => [:create, :update, :delete]
- after_filter :compress_output
- around_filter :api_call_handle_error, :api_call_timeout
+ skip_before_action :verify_authenticity_token
+ before_action :authorize, :only => [:create, :update, :delete]
+ before_action :require_allow_write_api, :only => [:create, :update, :delete]
+ before_action :require_public_data, :only => [:create, :update, :delete]
+ before_action :check_api_writable, :only => [:create, :update, :delete]
+ before_action :check_api_readable, :except => [:create, :update, :delete]
+ around_action :api_call_handle_error, :api_call_timeout
def create
assert_method :put
way = Way.from_xml(request.raw_post, true)
- if way
- way.create_with_history @user
- render :text => way.id.to_s, :content_type => "text/plain"
- else
- render :text => "", :status => :bad_request
- end
+ # Assume that Way.from_xml has thrown an exception if there is an error parsing the xml
+ way.create_with_history @user
+ render :text => way.id.to_s, :content_type => "text/plain"
end
def read
way = Way.find(params[:id])
new_way = Way.from_xml(request.raw_post)
- if new_way && new_way.id == way.id
- way.update_from(new_way, @user)
- render :text => way.version.to_s, :content_type => "text/plain"
- else
- render :text => "", :status => :bad_request
+ unless new_way && new_way.id == way.id
+ fail OSM::APIBadUserInput.new("The id in the url (#{way.id}) is not the same as provided in the xml (#{new_way.id})")
end
+
+ way.update_from(new_way, @user)
+ render :text => way.version.to_s, :content_type => "text/plain"
end
# This is the API call to delete a way
assets = {}
Rails.application.assets.index.each_logical_path("#{directory}/*") do |path|
- assets[path.sub(/^#{directory}\//, "")] = asset_path(path)
+ assets[path.sub(%r{^#{directory}/}, "")] = asset_path(path)
end
assets
+require "uri"
+
module BrowseHelper
def printable_name(object, version = false)
if object.id.is_a?(Array)
if value =~ /^([a-z-]{2,12}):(.+)$/i
# Value is <lang>:<title> so split it up
# Note that value is always left as-is, see: https://trac.openstreetmap.org/ticket/4315
- lang = $1
+ lang = $1
else
# Value is <title> so default to English Wikipedia
lang = "en"
return nil
end
- if value =~ /^([^#]*)(#.*)/
+ if value =~ /^([^#]*)#(.*)/
# Contains a reference to a section of the wikipedia article
# Must break it up to correctly build the url
value = $1
- section = $2
+ section = "#" + $2
+ encoded_section = "#" + URI.encode($2.gsub(/ +/, "_"), /[^A-Za-z0-9:_]/).tr("%", ".")
else
section = ""
+ encoded_section = ""
end
{
- :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}#{section}",
+ :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}#{encoded_section}",
:title => value + section
}
end
def telephone_link(_key, value)
# does it look like a phone number? eg "+1 (234) 567-8901 " ?
- return nil unless value =~ /^\s*\+[\d\s\(\)\/\.-]{6,25}\s*$/
+ return nil unless value =~ %r{^\s*\+[\d\s\(\)/\.-]{6,25}\s*$}
# remove all whitespace instead of encoding it http://tools.ietf.org/html/rfc3966#section-5.1.1
# "+1 (234) 567-8901 " -> "+1(234)567-8901"
html << result[:prefix] if result[:prefix]
html << " " if result[:prefix] && result[:name]
html << link_to(result[:name], url, html_options) if result[:name]
+ html << " " if result[:suffix] && result[:name]
html << result[:suffix] if result[:suffix]
html.html_safe
end
I18n.t("browse.note." + event + "_by_anonymous",
:when => friendly_date(at),
:exact_time => l(at)
- ).html_safe
+ ).html_safe
else
I18n.t("browse.note." + event + "_by",
:when => friendly_date(at),
:exact_time => l(at),
:user => note_author(by)
- ).html_safe
+ ).html_safe
end
end
require "htmlentities"
module TitleHelper
- @@coder = HTMLEntities.new
+ def self.coder
+ @coder ||= HTMLEntities.new
+ end
def set_title(title = false)
if title
- @title = @@coder.decode(title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c"))
- response.headers["X-Page-Title"] = t("layouts.project_name.title") + " | " + @title
+ @title = TitleHelper.coder.decode(title.gsub("<bdi>", "\u202a").gsub("</bdi>", "\u202c"))
+ response.headers["X-Page-Title"] = URI.escape(t("layouts.project_name.title") + " | " + @title)
else
@title = title
- response.headers["X-Page-Title"] = t("layouts.project_name.title")
+ response.headers["X-Page-Title"] = URI.escape(t("layouts.project_name.title"))
end
end
end
if block.needs_view?
I18n.t("user_block.helper.until_login")
else
- I18n.t("user_block.helper.time_future", :time => distance_of_time_in_words_to_now(block.ends_at))
+ I18n.t("user_block.helper.time_future", :time => friendly_date(block.ends_at)).html_safe
end
else
# the max of the last update time or the ends_at time is when this block finished
# either because the user viewed the block (updated_at) or it expired or was
# revoked (ends_at)
last_time = [block.ends_at, block.updated_at].max
- I18n.t("user_block.helper.time_past", :time => distance_of_time_in_words_to_now(last_time))
+ I18n.t("user_block.helper.time_past", :time => friendly_date(last_time)).html_safe
end
end
end
end
end
- # OpenID support
+ # External authentication support
def openid_logo
image_tag "openid_small.png", :alt => t("user.login.openid_logo_alt"), :class => "openid_logo"
end
- def openid_button(name, url)
+ def auth_button(name, provider, options = {})
link_to(
- image_tag("#{name}.png", :alt => t("user.login.openid_providers.#{name}.alt")),
- "#",
- :class => "openid_button", :data => { :url => url },
- :title => t("user.login.openid_providers.#{name}.title")
+ image_tag("#{name}.png", :alt => t("user.login.auth_providers.#{name}.alt")),
+ auth_path(options.merge(:provider => provider)),
+ :class => "auth_button",
+ :title => t("user.login.auth_providers.#{name}.title")
)
end
scope :valid, -> { where(:invalidated_at => nil) }
- validates_presence_of :user, :secret
+ validates :user, :secret, :presence => true
before_create :set_authorized_at
has_many :comments, -> { where(:visible => true).order(:created_at) }, :class_name => "ChangesetComment"
has_and_belongs_to_many :subscribers, :class_name => "User", :join_table => "changesets_subscribers", :association_foreign_key => "subscriber_id"
- validates_presence_of :id, :on => :update
- validates_presence_of :user_id, :created_at, :closed_at, :num_changes
- validates_uniqueness_of :id
- validates_numericality_of :id, :on => :update, :integer_only => true
- validates_numericality_of :min_lat, :max_lat, :min_lon, :max_lat, :allow_nil => true, :integer_only => true
- validates_numericality_of :user_id, :integer_only => true
- validates_numericality_of :num_changes, :integer_only => true, :greater_than_or_equal_to => 0
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :user_id, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :num_changes, :presence => true,
+ :numericality => { :integer_only => true,
+ :greater_than_or_equal_to => 0 }
+ validates :created_at, :closed_at, :presence => true
+ validates :min_lat, :max_lat, :min_lon, :max_lat, :allow_nil => true,
+ :numericality => { :integer_only => true }
before_save :update_closed_at
self.num_changes += elements
end
- def tags_as_hash
- tags
- end
-
def tags
unless @tags
@tags = {}
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] }
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :changeset, :presence => true, :associated => true
+ validates :author, :presence => true, :associated => true
+ validates :visible, :inclusion => [true, false]
# Return the comment text
def body
- RichText.new("text", read_attribute(:body))
+ RichText.new("text", self[:body])
end
end
belongs_to :changeset
- validates_presence_of :changeset
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => :changeset_id
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :changeset, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => :changeset_id }
end
has_many :oauth2_verifiers
has_many :oauth_tokens
- validates_presence_of :name, :url, :key, :secret
- validates_uniqueness_of :key
- validates_format_of :url, :with => %r{\Ahttp(s?)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i
- validates_format_of :support_url, :with => %r{\Ahttp(s?)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i, :allow_blank => true
- validates_format_of :callback_url, :with => %r{\A[a-z][a-z0-9.+-]*://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i, :allow_blank => true
+ validates :key, :presence => true, :uniqueness => true
+ validates :name, :url, :secret, :presence => true
+ validates :url, :format => %r{\Ahttp(s?)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i
+ validates :support_url, :allow_blank => true, :format => %r{\Ahttp(s?)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i
+ validates :callback_url, :allow_blank => true, :format => %r{\A[a-z][a-z0-9.+-]*://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?}i
before_validation :generate_keys, :on => :create
end
def access_token_for_user(user)
- unless token = access_tokens.valid.where(:user_id => user).first
+ unless token = access_tokens.valid.find_by(:user_id => user)
params = { :user => user }
permissions.each do |p|
belongs_to :user
belongs_to :diary_entry
- validates_presence_of :body
- validates_associated :diary_entry
+ validates :body, :presence => true
+ validates :diary_entry, :user, :associated => true
after_save :spam_check
def body
- RichText.new(read_attribute(:body_format), read_attribute(:body))
+ RichText.new(self[:body_format], self[:body])
end
def digest
scope :visible, -> { where(:visible => true) }
- validates_presence_of :title, :body
- validates_length_of :title, :within => 1..255
- # validates_length_of :language, :within => 2..5, :allow_nil => false
- validates_numericality_of :latitude, :allow_nil => true,
- :greater_than_or_equal_to => -90, :less_than_or_equal_to => 90
- validates_numericality_of :longitude, :allow_nil => true,
- :greater_than_or_equal_to => -180, :less_than_or_equal_to => 180
- validates_associated :language
+ validates :title, :body, :presence => true
+ validates :title, :length => 1..255
+ validates :latitude, :allow_nil => true,
+ :numericality => { :greater_than_or_equal_to => -90,
+ :less_than_or_equal_to => 90 }
+ validates :longitude, :allow_nil => true,
+ :numericality => { :greater_than_or_equal_to => -180,
+ :less_than_or_equal_to => 180 }
+ validates :language, :user, :associated => true
after_save :spam_check
def body
- RichText.new(read_attribute(:body_format), read_attribute(:body))
+ RichText.new(self[:body_format], self[:body])
end
private
belongs_to :sender, :class_name => "User", :foreign_key => :from_user_id
belongs_to :recipient, :class_name => "User", :foreign_key => :to_user_id
- validates_presence_of :title, :body, :sent_on, :sender, :recipient
- validates_length_of :title, :within => 1..255
- validates_inclusion_of :message_read, :in => [true, false]
- validates_as_utf8 :title
+ validates :title, :presence => true, :utf8 => true, :length => 1..255
+ validates :body, :sent_on, :sender, :recipient, :presence => true
def self.from_mail(mail, from, to)
if mail.multipart?
end
def body
- RichText.new(read_attribute(:body_format), read_attribute(:body))
+ RichText.new(self[:body_format], self[:body])
end
def digest
has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation
- validates_presence_of :id, :on => :update
- validates_presence_of :timestamp, :version, :changeset_id
- validates_uniqueness_of :id
- validates_inclusion_of :visible, :in => [true, false]
- validates_numericality_of :latitude, :longitude, :changeset_id, :version, :integer_only => true
- validates_numericality_of :id, :on => :update, :integer_only => true
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :version, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :changeset_id, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :latitude, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :longitude, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :timestamp, :presence => true
+ validates :changeset, :associated => true
+ validates :visible, :inclusion => [true, false]
+
validate :validate_position
- validates_associated :changeset
scope :visible, -> { where(:visible => true) }
scope :invisible, -> { where(:visible => false) }
# update changeset bbox with *old* position first
changeset.update_bbox!(bbox)
- # FIXME logic needs to be double checked
+ # FIXME: logic needs to be double checked
self.latitude = new_node.latitude
self.longitude = new_node.longitude
self.tags = new_node.tags
belongs_to :node
- validates_presence_of :node
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => :node_id
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :node, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => :node_id }
end
has_many :comments, -> { where(:visible => true).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id
- validates_presence_of :id, :on => :update
- validates_uniqueness_of :id
- validates_numericality_of :latitude, :only_integer => true
- validates_numericality_of :longitude, :only_integer => true
- validates_presence_of :closed_at if :status == "closed"
- validates_inclusion_of :status, :in => %w(open closed hidden)
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :latitude, :longitude, :numericality => { :only_integer => true }
+ validates :closed_at, :presence => true, :if => proc { :status == "closed" }
+ validates :status, :inclusion => %w(open closed hidden)
+
validate :validate_position
scope :visible, -> { where("status != 'hidden'") }
belongs_to :note, :foreign_key => :note_id, :touch => true
belongs_to :author, :class_name => "User", :foreign_key => :author_id
- validates_presence_of :id, :on => :update
- validates_uniqueness_of :id
- validates_presence_of :note_id
- validates_associated :note
- validates_presence_of :visible
- validates_associated :author
- validates_inclusion_of :event, :in => %w(opened closed reopened commented hidden)
- validates_format_of :body, :with => /\A[^\x00-\x08\x0b-\x0c\x0e-\x1f\x7f\ufffe\uffff]*\z/
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :note, :presence => true, :associated => true
+ validates :visible, :inclusion => [true, false]
+ validates :author, :associated => true
+ validates :event, :inclusion => %w(opened closed reopened commented hidden)
+ validates :body, :format => /\A[^\x00-\x08\x0b-\x0c\x0e-\x1f\x7f\ufffe\uffff]*\z/
# Return the comment text
def body
- RichText.new("text", read_attribute(:body))
+ RichText.new("text", self[:body])
end
end
:title => "Re: #{comment.diary_entry.title}")
mail :from => from_address(comment.user.display_name, "c", comment.id, comment.digest),
- :to => comment.diary_entry.user.email,
+ :to => comment.diary_entry.user.email,
:subject => I18n.t("notifier.diary_comment_notification.subject", :user => comment.user.display_name)
end
end
def friend_notification(friend)
with_recipient_locale friend.befriendee do
@friend = friend
+ @viewurl = url_for(:host => SERVER_URL,
+ :controller => "user", :action => "view",
+ :display_name => @friend.befriender.display_name)
+ @friendurl = url_for(:host => SERVER_URL,
+ :controller => "user", :action => "make_friend",
+ :display_name => @friend.befriender.display_name)
mail :to => friend.befriendee.email,
:subject => I18n.t("notifier.friend_notification.subject", :user => friend.befriender.display_name)
class Oauth2Verifier < OauthToken
- validates_presence_of :user
+ validates :user, :presence => true, :associated => true
+
attr_accessor :state
def exchange!(_params = {})
# Simple store of nonces. The OAuth Spec requires that any given pair of nonce and timestamps are unique.
# Thus you can use the same nonce with a different timestamp and viceversa.
class OauthNonce < ActiveRecord::Base
- validates_presence_of :nonce, :timestamp
- validates_uniqueness_of :nonce, :scope => :timestamp
+ validates :timestamp, :presence => true
+ validates :nonce, :presence => true, :uniqueness => { :scope => :timestamp }
# Remembers a nonce and it's associated timestamp. It returns false if it has already been used
def self.remember(nonce, timestamp)
scope :authorized, -> { where("authorized_at IS NOT NULL and invalidated_at IS NULL") }
- validates_uniqueness_of :token
- validates_presence_of :client_application, :token
+ validates :token, :presence => true, :uniqueness => true
+ validates :user, :associated => true
+ validates :client_application, :presence => true
before_validation :generate_keys, :on => :create
# the queries generated by Redactable will use the wrong table name.
include Redactable
- validates_presence_of :changeset_id, :timestamp
- validates_inclusion_of :visible, :in => [true, false]
- validates_numericality_of :latitude, :longitude
+ validates :changeset, :presence => true, :associated => true
+ validates :latitude, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :longitude, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :timestamp, :presence => true
+ validates :visible, :inclusion => [true, false]
+
validate :validate_position
- validates_associated :changeset
belongs_to :changeset
belongs_to :redaction
belongs_to :old_node, :foreign_key => [:node_id, :version]
- validates_presence_of :old_node
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => [:node_id, :version]
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :old_node, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => [:node_id, :version] }
end
has_many :old_members, -> { order(:sequence_id) }, :class_name => "OldRelationMember", :foreign_key => [:relation_id, :version]
has_many :old_tags, :class_name => "OldRelationTag", :foreign_key => [:relation_id, :version]
- validates_associated :changeset
+ validates :changeset, :presence => true, :associated => true
+ validates :timestamp, :presence => true
+ validates :visible, :inclusion => [true, false]
def self.from_relation(relation)
old_relation = OldRelation.new
el
end
- # Temporary method to match interface to nodes
- def tags_as_hash
- tags
- end
-
# Temporary method to match interface to relations
def relation_members
old_members
belongs_to :old_relation, :foreign_key => [:relation_id, :version]
- validates_presence_of :old_relation
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => [:relation_id, :version]
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :old_relation, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => [:relation_id, :version] }
end
has_many :old_nodes, :class_name => "OldWayNode", :foreign_key => [:way_id, :version]
has_many :old_tags, :class_name => "OldWayTag", :foreign_key => [:way_id, :version]
- validates_associated :changeset
+ validates :changeset, :presence => true, :associated => true
+ validates :timestamp, :presence => true
+ validates :visible, :inclusion => [true, false]
def self.from_way(way)
old_way = OldWay.new
add_metadata_to_xml_node(el, self, changeset_cache, user_display_name_cache)
- old_nodes.each do |nd| # FIXME need to make sure they come back in the right order
+ old_nodes.each do |nd| # FIXME: need to make sure they come back in the right order
node_el = XML::Node.new "nd"
node_el["ref"] = nd.node_id.to_s
el << node_el
points
end
- # Temporary method to match interface to nodes
- def tags_as_hash
- tags
- end
-
# Temporary method to match interface to ways
def way_nodes
old_nodes
belongs_to :old_way, :foreign_key => [:way_id, :version]
- validates_presence_of :old_way
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => [:way_id, :version]
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :old_way, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => [:way_id, :version] }
end
has_many :old_ways
has_many :old_relations
+ validates :description, :presence => true
+ validates :description_format, :inclusion => { :in => %w(text html markdown) }
+
# this method overrides the AR default to provide the rich
# text object for the description field.
def description
- RichText.new(read_attribute(:description_format), read_attribute(:description))
+ RichText.new(self[:description_format], self[:description])
end
end
has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation
- validates_presence_of :id, :on => :update
- validates_presence_of :timestamp, :version, :changeset_id
- validates_uniqueness_of :id
- validates_inclusion_of :visible, :in => [true, false]
- validates_numericality_of :id, :on => :update, :integer_only => true
- validates_numericality_of :changeset_id, :version, :integer_only => true
- validates_associated :changeset
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :version, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :changeset_id, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :timestamp, :presence => true
+ validates :changeset, :associated => true
+ validates :visible, :inclusion => [true, false]
scope :visible, -> { where(:visible => true) }
scope :invisible, -> { where(:visible => false) }
pt.find("member").each do |member|
# member_type =
- logger.debug "each member"
fail OSM::APIBadXMLError.new("relation", pt, "The #{member['type']} is not allowed only, #{TYPES.inspect} allowed") unless TYPES.include? member["type"]
- logger.debug "after raise"
# member_ref = member['ref']
# member_role
member["role"] ||= "" # Allow the upload to not include this, in which case we default to an empty string.
- logger.debug member["role"]
relation.add_member(member["type"].classify, member["ref"], member["role"])
end
fail OSM::APIBadUserInput.new("Some bad xml in relation") if relation.nil?
el
end
- # FIXME is this really needed?
+ # FIXME: is this really needed?
def members
@members ||= relation_members.map do |member|
[member.member_type, member.member_id, member.member_role]
self.lock!
check_consistency(self, new_relation, user)
# This will check to see if this relation is used by another relation
- rel = RelationMember.joins(:relation).where("visible = ? AND member_type = 'Relation' and member_id = ? ", true, id).first
+ rel = RelationMember.joins(:relation).find_by("visible = ? AND member_type = 'Relation' and member_id = ? ", true, id)
fail OSM::APIPreconditionFailedError.new("The relation #{new_relation.id} is used in relation #{rel.relation.id}.") unless rel.nil?
self.changeset_id = new_relation.changeset_id
# use reflection to look up the appropriate class
model = Kernel.const_get(m[0].capitalize)
- # get the element with that ID
- element = model.where(:id => m[1]).first
+ # get the element with that ID. and, if found, lock the element to
+ # ensure it can't be deleted until after the current transaction
+ # commits.
+ element = model.lock("for share").find_by(:id => m[1])
# and check that it is OK to use.
unless element && element.visible? && element.preconditions_ok?
true
end
- # Temporary method to match interface to nodes
- def tags_as_hash
- tags
- end
-
##
# if any members are referenced by placeholder IDs (i.e: negative) then
# this calling this method will fix them using the map from placeholders
belongs_to :relation
- validates_presence_of :relation
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => :relation_id
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :relation, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => :relation_id }
end
params = { :user => user, :client_application => client_application }
# copy the permissions from the authorised request token to the access token
client_application.permissions.each do |p|
- params[p] = read_attribute(p)
+ params[p] = self[p]
end
access_token = AccessToken.create(params)
scope :visible_to_all, -> { where(:visibility => %w(public identifiable)) }
scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
- validates_presence_of :user_id, :name, :timestamp
- validates_presence_of :description, :on => :create
- validates_length_of :name, :maximum => 255
- validates_length_of :description, :maximum => 255
- # validates_numericality_of :latitude, :longitude
- validates_inclusion_of :inserted, :in => [true, false]
- validates_inclusion_of :visibility, :in => %w(private public trackable identifiable)
+ validates :user, :presence => true, :associated => true
+ validates :name, :presence => true, :length => 1..255
+ validates :description, :presence => { :on => :create }, :length => 1..255
+ validates :timestamp, :presence => true
+ validates :visibility, :inclusion => %w(private public trackable identifiable)
def destroy
super
def large_picture
f = File.new(large_picture_name, "rb")
- logger.info "large picture file: '#{f.path}', bytes: #{File.size(f.path)}"
data = f.sysread(File.size(f.path))
- logger.info "have read data, bytes: '#{data.length}'"
f.close
data
end
def icon_picture
f = File.new(icon_picture_name, "rb")
- logger.info "icon picture file: '#{f.path}'"
data = f.sysread(File.size(f.path))
f.close
data
gzipped = filetype =~ /gzip compressed/
bzipped = filetype =~ /bzip2 compressed/
zipped = filetype =~ /Zip archive/
+ tarred = filetype =~ /tar archive/
if gzipped
mimetype = "application/x-gzip"
mimetype = "application/x-bzip2"
elsif zipped
mimetype = "application/x-zip"
+ elsif tarred
+ mimetype = "application/x-tar"
else
mimetype = "application/gpx+xml"
end
end
def xml_file
- # TODO *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz'
+ # TODO: *nix specific, could do to work on windows... would be functionally inferior though - check for '.gz'
filetype = `/usr/bin/file -bz #{trace_name}`.chomp
gzipped = filetype =~ /gzip compressed/
bzipped = filetype =~ /bzip2 compressed/
elsif bzipped
system("bunzip2 -c #{trace_name} > #{tmpfile.path}")
elsif zipped
- system("unzip -p #{trace_name} -x '__MACOSX/*' > #{tmpfile.path}")
+ system("unzip -p #{trace_name} -x '__MACOSX/*' > #{tmpfile.path} 2> /dev/null")
end
tmpfile.unlink
f_lon = 0
first = true
- # If there are any existing points for this trace then delete
- # them - we check for existing points first to avoid locking
- # the table in the common case where there aren't any.
- if Tracepoint.where(:gpx_id => id).exists?
- Tracepoint.delete_all(:gpx_id => id)
- end
+ # If there are any existing points for this trace then delete them
+ Tracepoint.delete_all(:gpx_id => id)
gpx.points do |point|
if first
self.table_name = "gps_points"
- validates_numericality_of :trackid, :only_integer => true
- validates_numericality_of :latitude, :only_integer => true
- validates_numericality_of :longitude, :only_integer => true
- validates_associated :trace
- validates_presence_of :timestamp
+ validates :trackid, :numericality => { :only_integer => true }
+ validates :latitude, :longitude, :numericality => { :only_integer => true }
+ validates :trace, :associated => true
+ validates :timestamp, :presence => true
belongs_to :trace, :foreign_key => "gpx_id"
class Tracetag < ActiveRecord::Base
self.table_name = "gpx_file_tags"
- validates_format_of :tag, :with => /\A[^\/;.,?]*\z/
- validates_length_of :tag, :within => 1..255
-
belongs_to :trace, :foreign_key => "gpx_id"
+
+ validates :trace, :associated => true
+ validates :tag, :length => 1..255, :format => %r{\A[^/;.,?]*\z}
end
has_many :tokens, :class_name => "UserToken"
has_many :preferences, :class_name => "UserPreference"
has_many :changesets, -> { order(:created_at => :desc) }
- has_many :changeset_comments, :foreign_key => :author_id
+ has_many :changeset_comments, :foreign_key => :author_id
has_and_belongs_to_many :changeset_subscriptions, :class_name => "Changeset", :join_table => "changesets_subscribers", :foreign_key => "subscriber_id"
has_many :note_comments, :foreign_key => :author_id
has_many :notes, :through => :note_comments
:default_url => "/assets/:class/:attachment/:style.png",
:styles => { :large => "100x100>", :small => "50x50>" }
- validates_presence_of :email, :display_name
- validates_confirmation_of :email # , :message => ' addresses must match'
- validates_confirmation_of :pass_crypt # , :message => ' must match the confirmation password'
- validates_uniqueness_of :display_name, :allow_nil => true, :case_sensitive => false, :if => proc { |u| u.display_name_changed? }
- validates_uniqueness_of :email, :case_sensitive => false, :if => proc { |u| u.email_changed? }
- validates_uniqueness_of :openid_url, :allow_nil => true
- validates_length_of :pass_crypt, :within => 8..255
- validates_length_of :display_name, :within => 3..255, :allow_nil => true
+ validates :display_name, :presence => true, :allow_nil => true, :length => 3..255,
+ :exclusion => %w(new terms save confirm confirm-email go_public reset-password forgot-password suspended)
+ validates :display_name, :if => proc { |u| u.display_name_changed? },
+ :uniqueness => { :case_sensitive => false }
+ validates :display_name, :if => proc { |u| u.display_name_changed? },
+ :format => { :with => %r{\A[^\x00-\x1f\x7f\ufffe\uffff/;.,?%#]*\z} }
+ validates :display_name, :if => proc { |u| u.display_name_changed? },
+ :format => { :with => /\A\S/, :message => "has leading whitespace" }
+ validates :display_name, :if => proc { |u| u.display_name_changed? },
+ :format => { :with => /\S\z/, :message => "has trailing whitespace" }
+ validates :email, :presence => true, :confirmation => true
+ validates :email, :if => proc { |u| u.email_changed? },
+ :uniqueness => { :case_sensitive => false }
+ validates :pass_crypt, :confirmation => true, :length => 8..255
+ validates :home_lat, :home_lon, :allow_nil => true, :numericality => true
+ validates :home_zoom, :allow_nil => true, :numericality => { :only_integer => true }
+ validates :preferred_editor, :inclusion => Editors::ALL_EDITORS, :allow_nil => true
+ validates :image, :attachment_content_type => { :content_type => %r{\Aimage/.*\Z} }
+
validates_email_format_of :email, :if => proc { |u| u.email_changed? }
validates_email_format_of :new_email, :allow_blank => true, :if => proc { |u| u.new_email_changed? }
- validates_format_of :display_name, :with => /\A[^\x00-\x1f\x7f\ufffe\uffff\/;.,?%#]*\z/, :if => proc { |u| u.display_name_changed? }
- validates_format_of :display_name, :with => /\A\S/, :message => "has leading whitespace", :if => proc { |u| u.display_name_changed? }
- validates_format_of :display_name, :with => /\S\z/, :message => "has trailing whitespace", :if => proc { |u| u.display_name_changed? }
- validates_exclusion_of :display_name, :in => %w(new terms save confirm confirm-email go_public reset-password forgot-password suspended)
- validates_numericality_of :home_lat, :allow_nil => true
- validates_numericality_of :home_lon, :allow_nil => true
- validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true
- validates_inclusion_of :preferred_editor, :in => Editors::ALL_EDITORS, :allow_nil => true
- validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
after_initialize :set_defaults
before_save :encrypt_password
def self.authenticate(options)
if options[:username] && options[:password]
- user = where("email = ? OR display_name = ?", options[:username], options[:username]).first
+ user = find_by("email = ? OR display_name = ?", options[:username], options[:username])
if user.nil?
users = where("LOWER(email) = LOWER(?) OR LOWER(display_name) = LOWER(?)", options[:username], options[:username])
end
def description
- RichText.new(read_attribute(:description_format), read_attribute(:description))
+ RichText.new(self[:description_format], self[:description])
end
def languages
- attribute_present?(:languages) ? read_attribute(:languages).split(/ *, */) : []
+ attribute_present?(:languages) ? self[:languages].split(/ *[, ] */) : []
end
def languages=(languages)
- write_attribute(:languages, languages.join(","))
+ self[:languages] = languages.join(",")
end
def preferred_language
self.image = nil
self.email_valid = false
self.new_email = nil
- self.openid_url = nil
+ self.auth_provider = nil
+ self.auth_uid = nil
self.status = "deleted"
save
end
##
# return a renderable version of the reason text.
def reason
- RichText.new(read_attribute(:reason_format), read_attribute(:reason))
+ RichText.new(self[:reason_format], self[:reason])
end
##
belongs_to :user
- validates_length_of :k, :within => 1..255
- validates_length_of :v, :within => 1..255
+ validates :user, :presence => true, :associated => true
+ validates :k, :v, :length => 1..255
# Turn this Node in to an XML Node without the <osm> wrapper.
def to_xml_node
ALL_ROLES = %w(administrator moderator)
- validates_inclusion_of :role, :in => ALL_ROLES
- validates_uniqueness_of :role, :scope => :user_id
+ validates :role, :inclusion => ALL_ROLES, :uniqueness => { :scope => :user_id }
end
has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation
- validates_presence_of :id, :on => :update
- validates_presence_of :changeset_id, :version, :timestamp
- validates_uniqueness_of :id
- validates_inclusion_of :visible, :in => [true, false]
- validates_numericality_of :changeset_id, :version, :integer_only => true
- validates_numericality_of :id, :on => :update, :integer_only => true
- validates_associated :changeset
+ validates :id, :uniqueness => true, :presence => { :on => :update },
+ :numericality => { :on => :update, :integer_only => true }
+ validates :version, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :changeset_id, :presence => true,
+ :numericality => { :integer_only => true }
+ validates :timestamp, :presence => true
+ validates :changeset, :associated => true
+ validates :visible, :inclusion => [true, false]
scope :visible, -> { where(:visible => true) }
scope :invisible, -> { where(:visible => false) }
way
end
- # Find a way given it's ID, and in a single SQL call also grab its nodes
- #
-
- # You can't pull in all the tags too unless we put a sequence_id on the way_tags table and have a multipart key
- def self.find_eager(id)
- Way.find(id, :include => { :way_nodes => :node })
- # If waytag had a multipart key that was real, you could do this:
- # Way.find(id, :include => [:way_tags, {:way_nodes => :node}])
- end
-
# Find a way given it's ID, and in a single SQL call also grab its nodes and tags
def to_xml
doc = OSM::API.new.get_xml_doc
new_nds = (nds - old_nodes).sort.uniq
unless new_nds.empty?
- db_nds = Node.where(:id => new_nds, :visible => true)
+ # NOTE: nodes are locked here to ensure they can't be deleted before
+ # the current transaction commits.
+ db_nds = Node.where(:id => new_nds, :visible => true).lock("for share")
if db_nds.length < new_nds.length
missing = new_nds - db_nds.collect(&:id)
end
end
- # Temporary method to match interface to nodes
- def tags_as_hash
- tags
- end
-
##
# if any referenced nodes are placeholder IDs (i.e: are negative) then
# this calling this method will fix them using the map from placeholders
belongs_to :way
- validates_presence_of :way
- validates_length_of :k, :maximum => 255, :allow_blank => true
- validates_uniqueness_of :k, :scope => :way_id
- validates_length_of :v, :maximum => 255, :allow_blank => true
+ validates :way, :presence => true, :associated => true
+ validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }
+ validates :k, :uniqueness => { :scope => :way_id }
end
<div class="browse-section">
<h4><%= t('browse.note.description') %></h4>
<div class="note-description">
- <%= h(@note.comments.first.body.to_html) %>
+ <%= h(@note_comments.first.body.to_html) %>
</div>
<div class="details" data-coordinates="<%= @note.lat %>,<%= @note.lon %>" data-status="<%= @note.status %>">
<%= note_event('open', @note.created_at, @note.author) %>
<% if @note.status == "closed" %>
<br/>
- <%= note_event(@note.status, @note.closed_at, @note.comments.last.author) %>
+ <%= note_event(@note.status, @note.closed_at, @note_comments.last.author) %>
<% end %>
</div>
- <% if @note.comments.find { |comment| comment.author.nil? } -%>
+ <% if @note_comments.find { |comment| comment.author.nil? } -%>
<p class='warning'><%= t "javascripts.notes.show.anonymous_warning" %></p>
<% end -%>
- <% if @note.comments.length > 1 %>
+ <% if @note_comments.length > 1 %>
<div class='note-comments'>
<ul>
- <% @note.comments[1..-1].each do |comment| %>
+ <% @note_comments[1..-1].each do |comment| %>
<li id="c<%= comment.id %>">
<small class='deemphasize'><%= note_event(comment.event, comment.created_at, comment.author) %></small>
<%= comment.body.to_html %>
<%= changeset.tags['comment'].to_s.presence || t('browse.no_comment') %>
</a>
</h4>
+ <div class="comments comments-<%= changeset.comments.length %>">
+ <%= changeset.comments.length %>
+ <span class="icon note grey"></span>
+ </div>
<div class="details">
<%= changeset_details(changeset) %>
·
<% if flash[:error] %>
<div class="flash error">
<%= image_tag("notice.png", :class => "small_icon", :border => 0) %>
- <div class="message"><%= raw flash[:error] %></div>
+ <div class="message"><%= flash[:error] %></div>
</div>
<% end %>
<% if flash[:warning] %>
<div class="flash warning">
<%= image_tag("notice.png", :class => "small_icon", :border => 0) %>
- <div class="message"><%= raw flash[:warning] %></div>
+ <div class="message"><%= flash[:warning] %></div>
</div>
<% end %>
<% if flash[:notice] %>
<div class="flash notice">
<%= image_tag("notice.png", :class => "small_icon", :border => 0) %>
- <div class="message"><%= raw flash[:notice] %></div>
+ <div class="message"><%= flash[:notice] %></div>
</div>
<% end %>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0"/>
<!--[if lt IE 9]><%= javascript_include_tag "html5shiv" %><![endif]-->
<%= javascript_include_tag "application" %>
- <%= stylesheet_link_tag "small-#{dir}", :media => "only screen and (max-width:721px)" %>
- <%= stylesheet_link_tag "large-#{dir}", :media => "screen and (min-width: 722px)" %>
+ <%= stylesheet_link_tag "screen-#{dir}", :media => "screen" %>
<%= stylesheet_link_tag "print-#{dir}", :media => "print" %>
<%= stylesheet_link_tag "leaflet-all", :media => "screen, print" %>
<!--[if IE]>
<%= stylesheet_link_tag "large-#{dir}", :media => "screen" %>
<%= favicon_link_tag "favicon.ico" %>
<![endif]-->
- <%= favicon_link_tag "osm_logo_57.png", :rel => "apple-touch-icon", :sizes => "57x57", :type => "image/png" %>
- <%= favicon_link_tag "osm_logo_72.png", :rel => "apple-touch-icon", :sizes => "72x72", :type => "image/png" %>
- <%= favicon_link_tag "osm_logo_114.png", :rel => "apple-touch-icon", :sizes => "114x114", :type => "image/png" %>
- <%= favicon_link_tag "osm_logo_144.png", :rel => "apple-touch-icon", :sizes => "144x144", :type => "image/png" %>
- <%= favicon_link_tag "osm_logo_228.png", :rel => "icon", :sizes => "228x228", :type => "image/png" %>
- <%= tag("meta", { :name => "msapplication-TileImage", :content => image_path("osm_logo_144.png") }) %>
+ <% [57, 60, 72, 76, 114, 120, 144, 152, 180].each do |size| -%>
+ <%= favicon_link_tag "apple-touch-icon-#{size}x#{size}.png", :rel => "apple-touch-icon", :sizes => "#{size}x#{size}", :type => "image/png" %>
+ <% end -%>
+ <%= favicon_link_tag "favicon-32x32.png", :rel => "icon", :sizes => "32x32", :type => "image/png" %>
+ <%= favicon_link_tag "favicon-194x194.png", :rel => "icon", :sizes => "194x194", :type => "image/png" %>
+ <%= favicon_link_tag "favicon-96x96.png", :rel => "icon", :sizes => "96x96", :type => "image/png" %>
+ <%= favicon_link_tag "android-chrome-192x192.png", :rel => "icon", :sizes => "192x192", :type => "image/png" %>
+ <%= favicon_link_tag "favicon-16x16.png", :rel => "icon", :sizes => "16x16", :type => "image/png" %>
+ <%= tag("link", { :rel => "manifest", :href => asset_path("manifest.json") }) %>
+ <%= tag("meta", { :name => "msapplication-config", :content => asset_path("browserconfig.xml") }) %>
+ <%= tag("meta", { :name => "msapplication-TileColor", :content => "#00a300" }) %>
+ <%= tag("meta", { :name => "msapplication-TileImage", :content => image_path("mstile-144x144.png") }) %>
+ <%= tag("meta", { :name => "theme-color", :content => "#ffffff" }) %>
<%= tag("link", { :rel => "publisher", :href => "https://plus.google.com/111953119785824514010" }) %>
<%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => asset_path("osm.xml") }) %>
<%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %>
</form>
<form method="GET" action="<%= directions_path %>" class="directions_form">
- <div style="width:100%; text-align:right; height:30px;"><%= link_to tag('span', { :class => "icon close"}), root_path, { :title => t('site.search.close_directions_title'), :class => "directions_close" } %></div>
+ <div class="header"><span class="icon close"></span></div>
<div class="line">
- <%= image_tag "marker-green.png", :class => "routing_marker", :id => "marker_from", :draggable => "true" %>
+ <%= image_tag "marker-green.png", :class => "routing_marker", :data => { :type => "from" }, :draggable => "true" %>
<span class="force_width"><%= text_field_tag "route_from", params[:from], :placeholder => t('site.search.from') %></span>
</div>
<div class="line">
- <%= image_tag "marker-red.png", :class => "routing_marker", :id => "marker_to", :draggable => "true" %>
+ <%= image_tag "marker-red.png", :class => "routing_marker", :data => { :type => "to" }, :draggable => "true" %>
<span class="force_width"><%= text_field_tag "route_to" , params[:to] , :placeholder => t('site.search.to') %></span>
</div>
<div class="line">
<%= submit_tag t('site.search.submit_text'), :class => "routing_go" %>
</div>
- <div class="loader_copy" style="display:none;"><div class="loader"><%= image_tag "searching.gif", :style => "vertical-align: middle;" %></div></div>
+ <div class="loader_copy"><div class="loader"><%= image_tag "searching.gif" %></div></div>
</form>
</div>
</div>
<div id="attribution">
- <table width="100%">
+ <table>
<tr>
<td class="attribution_license"><%= t 'site.index.license.license_url' %></td>
<td class="attribution_project"><%= t 'site.index.license.project_url' %></td>
+++ /dev/null
-xml.instruct!
-xml << yield
xml.wpt("lon" => note.lon, "lat" => note.lat) do
+ xml.time note.created_at.to_s(:iso8601)
+ xml.name t("browse.note.title", :id => note.id)
+
xml.desc do
xml.cdata! render(:partial => "description", :object => note, :formats => [ :html ])
end
- xml.extension do
+ xml.link("href" => browse_note_url(note, :host => SERVER_URL))
+
+ xml.extensions do
xml.id note.id
xml.url note_url(note, :format => params[:format])
if note.closed?
xml.title t('note.rss.closed', :place => location)
elsif note.comments.length > 1
- xml.title t('note.rss.comment', :place => location)
+ xml.title t('note.rss.commented', :place => location)
else
- xml.title t('note.rss.new', :place => location)
+ xml.title t('note.rss.opened', :place => location)
end
xml.link browse_note_url(note)
xml.instruct!
xml.gpx("version" => "1.1",
+ "creator" => "OpenStreetMap.org",
+ "xmlns" => "http://www.topografix.com/GPX/1/1",
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do
xml << (render(:partial => "note", :collection => @notes) || "")
xml.instruct!
xml.gpx("version" => "1.1",
+ "creator" => "OpenStreetMap.org",
+ "xmlns" => "http://www.topografix.com/GPX/1/1",
"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do
xml << render(:partial => "note", :object => @note)
--- /dev/null
+<p><%= t 'notifier.friend_notification.had_added_you', :user => @friend.befriender.display_name %></p>
+
+<p><%= raw t 'notifier.friend_notification.see_their_profile', :userurl => link_to(@viewurl, @viewurl) %></p>
+
+<% unless @friend.befriendee.is_friends_with?(@friend.befriender) -%>
+<p><%= raw t 'notifier.friend_notification.befriend_them', :befriendurl => link_to(@friendurl, @friendurl) %></p>
+<% end -%>
-<%=
- t 'notifier.friend_notification.had_added_you',
- :user => @friend.befriender.display_name
-%>
+<%= t 'notifier.friend_notification.had_added_you', :user => @friend.befriender.display_name %>
-<%=
- t 'notifier.friend_notification.see_their_profile',
- :userurl => url_for(:host => SERVER_URL,
- :controller => "user", :action => "view",
- :display_name => @friend.befriender.display_name)
-%>
+<%= t 'notifier.friend_notification.see_their_profile', :userurl => @viewurl %>
-<%=
- unless @friend.befriendee.is_friends_with?(@friend.befriender)
- t 'notifier.friend_notification.befriend_them',
- :befriendurl => url_for(:host => SERVER_URL,
- :controller => "user", :action => "make_friend",
- :display_name => @friend.befriender.display_name)
- end
-%>
+<% unless @friend.befriendee.is_friends_with?(@friend.befriender) -%>
+<%= t 'notifier.friend_notification.befriend_them', :befriendurl => @friendurl %>
+<% end -%>
<li><%= check_box_tag perm.to_s, "yes", @token.read_attribute(perm) %><%= t "oauth.oauthorize.#{perm}" %></li>
<% end %>
</ul>
- <p><%= submit_tag %></p>
+ <p><%= submit_tag t("oauth.oauthorize.grant_access") %></p>
<% end %>
}
<% if params[:gpx] -%>
- params.gpx = '<%= trace_data_url(params[:gpx]) %>';
+ params.gpx = '<%= trace_data_url(params[:gpx], :format => :xml) %>';
<% else -%>
if (hashParams.gpx) {
params.gpx = hashParams.gpx;
<p><%= t "about_page.open_data_html", :copyright_path => copyright_path %></p>
</div>
+ <div class='section' id='legal'>
+ <h2><div class='icon legal'></div><%= t "about_page.legal_title" %></h2>
+ <p><%= t "about_page.legal_html" %></p>
+ </div>
+
<div class='section' id='partners'>
<h2><div class='icon partners'></div><%= t "about_page.partners_title" %></h2>
<p><%= t 'layouts.partners_html',
<li><%= t "license_page.legal_babble.contributors_fr_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_nl_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_nz_html", :locale => @locale %></li>
+ <li><%= t "license_page.legal_babble.contributors_si_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_za_html", :locale => @locale %></li>
<li><%= t "license_page.legal_babble.contributors_gb_html", :locale => @locale %></li>
</ul>
<h3><%= t "license_page.legal_babble.infringement_title_html", :locale => @locale %></h3>
<p><%= t "license_page.legal_babble.infringement_1_html", :locale => @locale %></p>
<p><%= t "license_page.legal_babble.infringement_2_html", :locale => @locale %></p>
+
+<h3><%= t "license_page.legal_babble.trademarks_title_html", :locale => @locale %></h3>
+<p><%= t "license_page.legal_babble.trademarks_1_html", :locale => @locale %></p>
<p class='introduction'><%= t "help_page.introduction" %></p>
-<% ['welcome', 'help', 'wiki'].each do |site| %>
+<% ['welcome', 'beginners_guide', 'help', 'mailing_lists', 'forums', 'irc', 'switch2osm', 'wiki'].each do |site| %>
<% unless site == 'welcome' && !@user %>
<div class='<%= site %> help-item'>
<h3>
</div>
</div>
+<div class='col12 clearfix icon-list'>
+ <h3><%= t "welcome_page.rules.title" %></h3>
+ <span class='sprite small term rules'></span>
+ <p><%= t "welcome_page.rules.paragraph_1_html" %></p>
+</div>
+
<div class='col12 clearfix icon-list'>
<h3><%= t "welcome_page.questions.title" %></h3>
<span class='sprite small term question'></span>
+<% content_for :head do %>
+ <%= javascript_include_tag "user" %>
+<% end %>
+
<% content_for :heading do %>
<h1><%= t 'user.account.my settings' %></h1>
<ul class='secondary-actions clearfix'>
<fieldset>
<div class="form-row">
- <label class="standard-label"><%= t 'user.account.openid.openid' %></label>
- <%= f.url_field :openid_url, {:id => "openid_url", :class => "openid_url"} %>
+ <label class="standard-label"><%= t 'user.account.external auth' %></label>
+ <%= f.select :auth_provider, Auth::PROVIDERS %>
+ <%= f.text_field :auth_uid %>
<span class="form-help deemphasize">(<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>)</span>
</diV>
</fieldset>
<input type="checkbox" name="updatehome" value="1" <% unless @user.home_lat and @user.home_lon %> checked="checked" <% end %> id="updatehome" />
<label class="standard-label" for="updatehome"><%= t 'user.account.update home location on click' %></label>
</div>
- <% content_for :head do %>
- <%= javascript_include_tag "user" %>
- <% end %>
<%= content_tag "div", "", :id => "map", :class => "content_map settings_map set_location" %>
</fieldset>
<fieldset>
<div class="form-row">
- <label class="standard-label">
+ <label for="username" class="standard-label">
<%= t 'user.login.email or username' %>
</label>
<%= text_field_tag "username", params[:username], :tabindex => 1 %>
</div>
<div class="form-row">
- <label class="standard-label">
+ <label for="password" class="standard-label">
<%= t 'user.login.password' %>
</label>
<%= password_field_tag "password", "", :tabindex => 2 %>
<fieldset class='form-divider'>
- <p class='standard-label'><%= t 'user.login.with openid' %></p>
-
- <ul class='clearfix' id="login_openid_buttons">
- <li><%= link_to image_tag("openid.png", :alt => t("user.login.openid_providers.openid.title")), "#", :id => "openid_open_url", :title => t("user.login.openid_providers.openid.title") %></li>
- <li><%= openid_button "google", "gmail.com" %></li>
- <li><%= openid_button "yahoo", "me.yahoo.com" %></li>
- <li><%= openid_button "wordpress", "wordpress.com" %></li>
- <li><%= openid_button "aol", "aol.com" %></li>
+ <p class='standard-label'><%= t 'user.login.with external' %></p>
+
+ <ul class='clearfix' id="login_auth_buttons">
+ <li><%= link_to image_tag("openid.png", :alt => t("user.login.auth_providers.openid.title")), "#", :id => "openid_open_url", :title => t("user.login.auth_providers.openid.title") %></li>
+ <% if defined?(GOOGLE_AUTH_ID) -%>
+ <li><%= auth_button "google", "google" %></li>
+ <% end -%>
+ <% if defined?(FACEBOOK_AUTH_ID) -%>
+ <li><%= auth_button "facebook", "facebook" %></li>
+ <% end -%>
+ <% if defined?(WINDOWSLIVE_AUTH_ID) -%>
+ <li><%= auth_button "windowslive", "windowslive" %></li>
+ <% end -%>
+ <li><%= auth_button "yahoo", "openid", :openid_url => "yahoo.com" %></li>
+ <li><%= auth_button "wordpress", "openid", :openid_url => "wordpress.com" %></li>
+ <li><%= auth_button "aol", "openid", :openid_url => "aol.com" %></li>
</ul>
- <div id='login_openid_url' class='form-row'>
- <label class="standard-label"><%= raw t 'user.login.openid', :logo => openid_logo %></label>
- <%= url_field_tag("openid_url", "", { :tabindex => 3, :class => "openid_url" }) %>
- <span class="minorNote">(<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>)</span>
- </div>
+ <div id='login_openid_url' class='form-row'>
+ <label for='openid_url' class="standard-label"><%= raw t 'user.login.openid', :logo => openid_logo %></label>
+ <%= text_field_tag("openid_url", "", { :tabindex => 3, :class => "openid_url" }) %>
+ <span class="minorNote">(<a href="<%= t 'user.account.openid.link' %>" target="_new"><%= t 'user.account.openid.link text' %></a>)</span>
+ </div>
- <div class='form-row'>
- <%= check_box_tag "remember_me_openid", "yes", false, :tabindex => 5 %>
- <label class="standard-label" for="remember_me_openid"><%= t 'user.login.remember' %></label>
- </div>
+ <div class='form-row'>
+ <%= check_box_tag "remember_me_openid", "yes", false, :tabindex => 5 %>
+ <label class="standard-label" for="remember_me_openid"><%= t 'user.login.remember' %></label>
+ </div>
<%= submit_tag t('user.login.login_button'), :tabindex => 6, :id => "login_openid_submit" %>
$("#openid_open_url").click(function() {
$("#openid_url").val("http://");
- $("#login_openid_buttons").hide();
+ $("#login_auth_buttons").hide();
$("#login_openid_url").show();
$("#login_openid_submit").show();
});
- $(".openid_button").click(function() {
- $("#openid_url").val($(this).attr("data-url"));
- $("#login_form").submit();
- });
-
$("#login_openid_url").hide();
$("#login_openid_submit").hide();
});
+<% content_for :head do %>
+ <%= javascript_include_tag "user" %>
+<% end %>
+
<% content_for :heading do %>
<h1><%= t 'user.new.title' %></h1>
<div class='header-illustration new-user-main'></div>
<span class="form-help deemphasize"><%= t 'user.new.display name description' %></span>
</fieldset>
- <fieldset class="form-divider" id="openid_field">
+ <fieldset class="form-divider" id="auth_field">
<div class="form-row">
<label for="openid_url" class="standard-label">
- <%= raw t 'user.new.openid', :logo => openid_logo %>
+ <%= raw t 'user.new.external auth' %>
</label>
- <%= url_field(:user, :openid_url, { :id => "openid_url", :tabindex => 4, :class => "openid_url" }) %>
- <%= error_message_on(:user, :openid_url) %>
+ <%= select(:user, :auth_provider, Auth::PROVIDERS, { :default => "", :tabindex => 4 }) %>
+ <%= text_field(:user, :auth_uid, { :tabindex => 5 }) %>
+ <%= error_message_on(:user, :auth_uid) %>
</div>
- <span class="form-help deemphasize"><%= t 'user.new.openid no password' %></span>
+ <span class="form-help deemphasize"><%= t 'user.new.auth no password' %></span>
</fieldset>
<fieldset>
<label for='user[pass_crypt]' class="standard-label">
<%= t 'user.new.password' %>
</label>
- <%= password_field(:user, :pass_crypt, {:tabindex => 5 }) %>
+ <%= password_field(:user, :pass_crypt, { :tabindex => 6 }) %>
<%= error_message_on(:user, :pass_crypt) %>
</div>
<div class="form-row">
<label class="standard-label">
<%= t 'user.new.confirm password' %>
</label>
- <%= password_field(:user, :pass_crypt_confirmation, { :tabindex => 6 }) %>
+ <%= password_field(:user, :pass_crypt_confirmation, { :tabindex => 7 }) %>
<%= error_message_on(:user, :pass_crypt_confirmation) %>
</div>
</fieldset>
- <div id="openid_prompt" class="form-row">
- <%= link_to raw(t("user.new.use openid", :logo => openid_logo)), "#", :id => "openid_enable" %>
+ <div id="auth_prompt" class="form-row">
+ <%= link_to raw(t("user.new.use external auth")), "#", :id => "auth_enable" %>
</div>
- <%= submit_tag t('user.new.continue'), :tabindex => 6 %>
+ <%= submit_tag t('user.new.continue'), :tabindex => 8 %>
<% end %>
<div class='aside col6 deemphasize inner22'>
<h4><%= t 'user.new.about.header' %></h4>
<%= t 'user.new.about.html' %>
</div>
-
-<script type="text/javascript">
-function enableOpenID()
-{
- $("#openid_prompt").hide();
- $("#openid_field").show();
- $("#openid_url").prop("disabled", false);
-}
-
-function disableOpenID()
-{
- $("#openid_prompt").show();
- $("#openid_field").hide();
- $("#openid_url").prop("disabled", true);
-}
-
-$(document).ready(function () {
- $("#openid_enable").click(enableOpenID);
-
- <% if params[:openid] or (@user and @user.openid_url.present?) -%>
- enableOpenID();
- <% else -%>
- disableOpenID();
- <% end -%>
-});
-</script>
</p>
<% end %>
+<p><b><%= t'user_block.show.created' %></b>: <%= raw t'user_block.show.ago', :time => friendly_date(@user_block.created_at) %></p>
+
<p><b><%= t'user_block.show.status' %></b>: <%= block_status(@user_block) %></p>
<p><b><%= t'user_block.show.reason' %></b></p>
# 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 Rails.application
# config.i18n.default_locale = :de
# Do not swallow errors in after_commit/after_rollback callbacks.
- config.active_record.raise_in_transactional_callbacks = true
+ config.active_record.raise_in_transactional_callbacks = true unless STATUS == :database_offline
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
# Don't eager load models when the database is offline
config.paths["app/models"].skip_eager_load! if STATUS == :database_offline
+
+ # Use memcached for caching if required
+ if defined?(MEMCACHE_SERVERS)
+ config.cache_store = :mem_cache_store, MEMCACHE_SERVERS, { :namespace => "rails:cache" }
+ end
+
+ # Use logstash for logging if required
+ if defined?(LOGSTASH_PATH)
+ config.logstasher.enabled = true
+ config.logstasher.suppress_app_log = false
+ config.logstasher.logger_path = LOGSTASH_PATH
+ config.logstasher.log_controller_parameters = true
+ end
end
end
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
# Use a different cache store in production.
- if defined?(MEMCACHE_SERVERS)
- config.cache_store = :mem_cache_store, MEMCACHE_SERVERS, { :namespace => "rails:cache" }
- end
+ # config.cache_store = :mem_cache_store
# Configure caching of static assets
config.action_controller.page_cache_directory = Rails.public_path
config.active_support.deprecation = :stderr
# Raises error for missing translations
- # config.action_view.raise_on_missing_translations = true
+ config.action_view.raise_on_missing_translations = true
end
spam_threshold: 50
# Default legale (jurisdiction location) for contributor terms
default_legale: GB
- # Memory limits (in Mb)
- #soft_memory_limit: 512
- #hard_memory_limit: 2048
# Location of GPX traces and images
gpx_trace_dir: "/home/osm/traces"
gpx_image_dir: "/home/osm/images"
attachments_dir: ":rails_root/public/attachments"
# Log file to use
#log_path: ""
+ # Log file to use for logstash
+ #logstash_path: ""
# List of memcache servers to use for caching
#memcache_servers: []
# Enable legacy OAuth 1.0 support
- ".*\\.google\\.ru/.*"
# URL of Overpass instance to use for feature queries
overpass_url: "//overpass-api.de/api/interpreter"
+ # External authentication credentials
+ #google_auth_id: ""
+ #google_auth_secret: ""
+ #google_openid_realm: ""
+ #facebook_auth_id: ""
+ #facebook_auth_secret: ""
+ #windowslive_auth_id: ""
+ #windowslive_auth_secret: ""
development:
<<: *defaults
test:
<<: *defaults
+ # Geonames credentials for testing
+ geonames_username: "dummy"
+ # External authentication credentials for testing
+ google_auth_id: "dummy"
+ google_auth_secret: "dummy"
+ google_openid_realm: "https://www.openstreetmap.org"
+ facebook_auth_id: "dummy"
+ facebook_auth_secret: "dummy"
+ windowslive_auth_id: "dummy"
+ windowslive_auth_secret: "dummy"
# Stop rails from automatically parsing XML in request bodies
Rails.configuration.middleware.delete ActionDispatch::ParamsParser
+
+# https://github.com/rails/rails/issues/20710
+module ActionDispatch
+ module Assertions
+ def html_document_with_rss
+ @html_document ||= if @response.content_type == Mime::RSS
+ Nokogiri::XML::Document.parse(@response.body)
+ else
+ html_document_without_rss
+ end
+ end
+
+ alias_method_chain :html_document, :rss
+ end
+end
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = "1.0"
+# Location of manifest file.
+Rails.application.config.assets.manifest = Rails.root.join("tmp/manifest.json")
+
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# 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( screen-ltr.css print-ltr.css )
+Rails.application.config.assets.precompile += %w( screen-rtl.css print-rtl.css )
Rails.application.config.assets.precompile += %w( leaflet-all.css leaflet.ie.css )
Rails.application.config.assets.precompile += %w( id.js id.css )
Rails.application.config.assets.precompile += %w( embed.js embed.css )
if class_attr_index
html_tag.insert class_attr_index + 7, "field_with_errors "
else
- html_tag.insert html_tag.index(/\/?>/), ' class="field_with_errors"'
+ html_tag.insert html_tag.index(%r{/?>}), ' class="field_with_errors"'
end
end
end
module JS
- class << self
- def make_ordered(unordered)
- ordered = ActiveSupport::OrderedHash.new
-
- unordered.keys.sort { |a, b| a.to_s <=> b.to_s }.each do |key|
- value = unordered[key]
-
- if value.is_a?(Hash)
- ordered[key] = make_ordered(value)
- else
- ordered[key] = value
- end
+ class FallbackLocales
+ def default_fallbacks_with_validation
+ default_fallbacks_without_validation.select do |locale|
+ ::I18n.available_locales.include?(locale)
end
-
- ordered
- end
-
- def filtered_translations_with_order
- make_ordered(filtered_translations_without_order)
end
- alias_method_chain :filtered_translations, :order
+ alias_method_chain :default_fallbacks, :validation
end
end
end
+++ /dev/null
-# Setup any specified hard limit on the virtual size of the process
-if defined?(HARD_MEMORY_LIMIT) && defined?(PhusionPassenger) && Process.const_defined?(:RLIMIT_AS)
- Process.setrlimit Process::RLIMIT_AS, HARD_MEMORY_LIMIT * 1024 * 1024, Process::RLIM_INFINITY
-end
-
-# If we're running under passenger and a soft memory limit is
-# configured then setup some rack middleware to police the limit
-if defined?(SOFT_MEMORY_LIMIT) && defined?(PhusionPassenger)
- # Define some rack middleware to police the soft memory limit
- class MemoryLimit
- def initialize(app)
- @app = app
- end
-
- def call(env)
- # Process this requst
- status, headers, body = @app.call(env)
-
- # Restart if we've hit our memory limit
- Process.kill("USR1", Process.pid) if resident_size > SOFT_MEMORY_LIMIT
-
- # Return the result of this request
- [status, headers, body]
- end
-
- private
-
- def resident_size
- # Read statm to get process sizes. Format is
- # Size RSS Shared Text Lib Data
- fields = File.open("/proc/self/statm") do |file|
- fields = file.gets.split(" ")
- end
-
- # Return resident size in megabytes
- fields[1].to_i / 256
- end
- end
-
- # Install the memory limit checker
- Rails.configuration.middleware.use MemoryLimit
-end
--- /dev/null
+require "openid/fetchers"
+require "openid/util"
+
+CA_BUNDLES = ["/etc/ssl/certs/ca-certificates.crt", "/etc/pki/tls/cert.pem"]
+
+OpenID.fetcher.ca_file = CA_BUNDLES.find { |f| File.exist?(f) }
+OpenID::Util.logger = Rails.logger
+
+OmniAuth.config.logger = Rails.logger
+OmniAuth.config.failure_raise_out_environments = []
+
+if defined?(MEMCACHE_SERVERS)
+ require "openid/store/memcache"
+
+ openid_store = OpenID::Store::Memcache.new(Dalli::Client.new(MEMCACHE_SERVERS, :namespace => "rails"))
+else
+ require "openid/store/filesystem"
+
+ openid_store = OpenID::Store::Filesystem.new(Rails.root.join("tmp/openids"))
+end
+
+openid_options = { :name => "openid", :store => openid_store }
+google_options = { :name => "google", :scope => "email", :access_type => "online" }
+facebook_options = { :name => "facebook", :scope => "email" }
+windowslive_options = { :name => "windowslive", :scope => "wl.signin,wl.emails" }
+
+if defined?(GOOGLE_OPENID_REALM)
+ google_options[:openid_realm] = GOOGLE_OPENID_REALM
+end
+
+Rails.application.config.middleware.use OmniAuth::Builder do
+ provider :openid, openid_options
+ provider :google_oauth2, GOOGLE_AUTH_ID, GOOGLE_AUTH_SECRET, google_options if defined?(GOOGLE_AUTH_ID)
+ provider :facebook, FACEBOOK_AUTH_ID, FACEBOOK_AUTH_SECRET, facebook_options if defined?(FACEBOOK_AUTH_ID)
+ provider :windowslive, WINDOWSLIVE_AUTH_ID, WINDOWSLIVE_AUTH_SECRET, windowslive_options if defined?(WINDOWSLIVE_AUTH_ID)
+end
+
+# Pending fix for: https://github.com/intridea/omniauth/pull/795
+module OmniAuth
+ module Strategy
+ def mock_callback_call_with_origin
+ @env["omniauth.origin"] = session["omniauth.origin"]
+
+ mock_callback_call_without_origin
+ end
+
+ alias_method_chain :mock_callback_call, :origin
+ end
+end
+++ /dev/null
-if defined?(MEMCACHE_SERVERS)
- require "openid/store/memcache"
-
- OpenIdAuthentication.store = OpenID::Store::Memcache.new(Dalli::Client.new(MEMCACHE_SERVERS, :namespace => "rails"))
-else
- OpenIdAuthentication.store = :file
-end
+++ /dev/null
-require "output_compression/output_compression"
--- /dev/null
+files:
+ - "**/*.js"
+exclude_paths:
+ - "vendor/assets/javascripts"
+options:
+ eqeqeq: true
+ freeze: true
+ latedef: "nofunc"
+ noarg: true
+ noempty: true
+ nonew: true
+ undef: true
+ browser: true
+ jquery: true
+ unused: true
+ trailing: true
+ globals:
+ I18n: false
+ L: true
+ OSM: true
+ Piwik: false
+ alert: false
+ escape: false
+ maximiseMap: false
+ minimiseMap: false
+ querystring: true
+ require: false
+ updateLinks: false
- { min_zoom: 12, max_zoom: 19, name: primary, image: primary12.png }
- { min_zoom: 9, max_zoom: 11, name: secondary, image: secondary.png }
- { min_zoom: 12, max_zoom: 19, name: secondary, image: secondary12.png }
- - { min_zoom: 13, max_zoom: 19, name: unsurfaced, image: unsurfaced.png }
- { min_zoom: 13, max_zoom: 19, name: track, image: track.png }
- - { min_zoom: 13, max_zoom: 19, name: byway, image: byway.png }
- { min_zoom: 13, max_zoom: 19, name: bridleway, image: bridleway.png }
- { min_zoom: 13, max_zoom: 19, name: cycleway, image: cycleway.png }
- { min_zoom: 13, max_zoom: 19, name: footway, image: footway.png }
- { min_zoom: 10, max_zoom: 19, name: golf, image: golf.png }
- { min_zoom: 10, max_zoom: 19, name: park, image: park.png }
- { min_zoom: 8, max_zoom: 19, name: resident, image: resident.png }
- - { min_zoom: 10, max_zoom: 19, name: tourist, image: tourist.png }
- { min_zoom: 10, max_zoom: 19, name: common, image: common.png }
- { min_zoom: 10, max_zoom: 19, name: retail, image: retail.png }
- { min_zoom: 10, max_zoom: 19, name: industrial, image: industrial.png }
- { min_zoom: 12, max_zoom: 19, name: tunnel, image: tunnel.png }
- { min_zoom: 13, max_zoom: 19, name: bridge, image: bridge.png }
- { min_zoom: 15, max_zoom: 19, name: private, image: private.png }
- - { min_zoom: 15, max_zoom: 19, name: permissive, image: permissive.png }
- { min_zoom: 15, max_zoom: 19, name: destination, image: destination.png }
- { min_zoom: 12, max_zoom: 19, name: construction, image: construction.png }
# Messages for Afrikaans (Afrikaans)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Arnobarnard
# Author: Firefishy
+# Author: Fwolff
# Author: Naudefj
# Author: Nroets
---
body: Teks
diary_entry:
user: Gebruiker
- title: Titel
+ title: Onderwerp
latitude: Breedtegraad
longitude: Lengtegraad
language: Taal
description: Beskrywing
message:
sender: Afsender
- title: Titel
+ title: Onderwerp
body: Teks
recipient: Ontvanger
user:
languages: Tale
pass_crypt: Wagwoord
browse:
+ download_xml: Laai XML af
+ view_history: Sien geskiedenis
+ view_details: Sien detail
+ location: 'Ligging:'
+ changeset:
+ discussion: Bespreking
relation_member:
entry_role: '%{type} %{name} as %{role}'
type:
entry: Relasie %{relation_name}
entry_role: Relasie %{relation_name} (as %{relation_role})
not_found:
- sorry: Jammer, %{type} %{id} kan nie gevind word nie.
+ sorry: 'Jammer, %{type} #%{id} kan nie gevind word nie.'
type:
node: node
way: weg
load_data: Laai data
loading: Laai...
tag_details:
- tags: 'Etikette:'
+ tags: Oortjies
changeset:
changeset_paging_nav:
- showing_page: Wys bladsy %{page}
+ showing_page: Bladsy %{page}
next: Volgende »
previous: » Vorige
changeset:
new: Nuwe dagboekinskrywing
new_title: Plaas nuwe artikel in u dagboek
no_entries: Geen dagboekinskrywings nie
- recent_entries: 'Onlangse dagboekinskrywings:'
+ recent_entries: Onlangse dagboekinskrywings
older_entries: Ouer inskrywings
newer_entries: Nuwer inskrywings
edit:
uk_postcode: Resultate vanaf <a href="http://www.npemap.org.uk/">NPEMap /
FreeThe Postcode</a>
ca_postcode: Resultate vanaf <a href="http://geocoder.ca/">Geocoder.CA</a>
+ osm_nominatim: Resultate vanaf <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
geonames: Resultate vanaf <a href="http://www.geonames.org/">GeoNames</a>
+ geonames_reverse: Resultate vanaf <a href="http://www.geonames.org/">GeoNames</a>
search_osm_nominatim:
prefix:
+ aerialway:
+ cable_car: Kabelkar
+ aeroway:
+ gate: Hek
amenity:
arts_centre: Kunssentrum
atm: OTM
shop: Winkel
social_club: Sosiale klub
studio: Studio
+ swimming_pool: Swembad
taxi: Taxi
telephone: Openbare telefoon
theatre: Teater
youth_centre: Jeugsentrum
boundary:
administrative: Administratiewe grens
+ national_park: Nasionale park
+ bridge:
+ "yes": Brug
building:
"yes": Gebou
+ craft:
+ brewery: Brouery
+ carpenter: Skrynwerker
+ electrician: Elektrisiën
+ gardener: Tuinier
+ photographer: Fotograaf
+ plumber: Loodgieter
+ shoemaker: Skoenmaker
highway:
bridleway: Ruiterpad
bus_stop: Bushalte
primary: Primêre pad
primary_link: Primêre pad
raceway: Renbaan
- residential: Woonerf
+ residential: Residensiële straat
road: Pad
secondary: Sekondêre pad
secondary_link: Sekondêre pad
service: Dienspad
services: Snelweg Dienste
+ speed_camera: Spoedkamera
steps: Trappe
+ street_lamp: Straatlamp
tertiary: Tersiêre pad
track: Spoor
trail: Wandelpad
trunk_link: Trokpad
unclassified: Ongeklassifiseerde pad
unsurfaced: Grondpad
+ "yes": Straat
historic:
archaeological_site: Argeologiese vindplaas
battlefield: Slagveld
cliff: Kloof
crater: Krater
fjord: Fjord
+ forest: Woud
geyser: Geiser
glacier: Gletser
heath: Heide
theme_park: Pretpark
viewpoint: Uitkykpunt
zoo: Dieretuin
+ tunnel:
+ "yes": Tonnel
waterway:
boatyard: Skeepswerf
canal: Kanaal
results:
no_results: Geen resultate gevind nie
more_results: Meer resultate
- distance:
- one: ongeveer 1km
- zero: minder as 1km
- other: ongeveer %{count}km
- direction:
- south_west: suidwes
- south: suid
- south_east: suid-oos
- east: oos
- north_east: noordoos
- north: noord
- north_west: noordwes
- west: wes
layouts:
logo:
alt_text: OpenStreetMap-logo
home: tuis
- logout: teken af
- log_in: meld aan
+ logout: Meld af
+ log_in: Meld aan
log_in_tooltip: Teken aan met 'n bestaande rekening
- sign_up: registreer
+ sign_up: Registreer
sign_up_tooltip: Skep 'n rekening vir wysigings
edit: Wysig
history: Geskiedenis
export: Eksporteer
+ data: Data
gps_traces: GPS-spore
gps_traces_tooltip: Beheer GPS-spore
user_diaries: Gebruikersdagboeke
user_diaries_tooltip: Wys gebruikersdagboeke
tag_line: Die vrye wiki-wêreldkaart
+ intro_header: Welkom by OpenStreetMap!
+ intro_text: OpenStreetMap is 'n kaart van die wêreld, geskep deur gewone mense.
+ Dis gratis onder 'n oop lisensie.
+ intro_2_create_account: Skep gebruikerrekening
osm_read_only: Die OpenStreetMap-databasis kan op die oomblik slegs gelees word
aangesien noodsaaklik onderhoud tans uitgevoer word.
donate: Ondersteun OpenStreetMap deur aan die Hardeware Opgradeer-fonds te %{link}.
- copyright: Outeursreg & lisensie
+ help: Hulp
+ about: Aangaande
+ copyright: Kopiereg
+ community: Gemeenskap
+ foundation_title: Die OpenStreetMap-stigting
make_a_donation:
title: Ondersteun OpenStreetMap met'n geldelike donasie
text: Maak 'n donasie
+ learn_more: Meer inligting
+ more: Meer
license_page:
foreign:
title: Oor hierdie vertaling
+ welcome_page:
+ title: Welkom!
+ help_page:
+ mailing_lists:
+ title: Poslyste
notifier:
diary_comment_notification:
subject: '[OpenStreetMap] %{user} het kommentaar op u dagboekinskrywing gelewer'
close: Sluit
search:
search: Soek
+ get_directions_title: Kry aanwysings tussen twee punte
where_am_i: Waar is ek?
submit_text: OK
key:
needs_view: Die gebruiker moet aanmeld alvorens hierdie blokkade verwyder sal
word.
javascripts:
+ share:
+ title: Deel
map:
+ zoom:
+ in: Zoem in
+ locate:
+ title: Wys my ligging
base:
cycle_map: Fietskaart
+ site:
+ edit_disabled_tooltip: Zoem in om die kaart te redigeer
+ createnote_disabled_tooltip: Zoem in om 'n nota by die kaart te voeg
+ map_data_zoom_in_tooltip: Zoem in om kaartdata te sien
+ directions:
+ engines:
+ graphhopper_bicycle: Fiets (GraphHopper)
+ mapquest_bicycle: Fiets (MapQuest)
+ mapquest_car: Kar (MapQuest)
+ osrm_car: Kar (OSRM)
...
results:
no_results: Nuk është gjetur asnjë rezultat
more_results: Më shumë rezultate
- distance:
- one: rreth 1km
- zero: ma pak se 1km
- other: rreth %{count}km
- direction:
- south_west: jug-perëndim
- south: jug
- south_east: jug-lindje
- east: lindja
- north_east: veri-lindje
- north: veriu
- north_west: veri-perendim
- west: perëndim
layouts:
logo:
alt_text: logo e OpenStreetMap
press confirm button: Shtype butonin e konfirmimit ma posht që me mujt me aktivizue
akountin e juej
button: Konfirmo
+ success: Akounti juaj u konfirmua, ju falemnderit për regjistrim!
confirm_email:
heading: Konfirmo ni ndryshim te email adreses
press confirm button: Truse butonin për konfirmim për me konfirmu email adresën
# Author: Majid Al-Dharrab
# Author: Meno25
# Author: Mutarjem horr
+# Author: Omda4wady
# Author: OsamaK
+# Author: Ruila
# Author: TTMTT
+# Author: Yahya Sakhnini
# Author: Zaher kadour
# Author: ترجمان05
# Author: عباد ديرانية
# Author: عبد الرحمان أيمن
+# Author: محمد أحمد عبد الفتاح
---
ar:
html:
changeset:
title: حزمة التغييرات %{id}
belongs_to: الصانع
+ node: العقد (%{count})
+ node_paginated: العقد (%{x}-%{y} من %{count})
+ way: الطرق (%{count})
+ way_paginated: الطرق (%{x}-%{y} من %{count})
+ relation: الصلات (%{count})
+ relation_paginated: الصلات (%{x}-%{y} من %{count})
+ comment: التعليقات (%{count})
+ hidden_commented_by: تعليق مخفي من %{user} <abbr title='%{exact_time}'>%{when}
+ مضت</abbr>
+ commented_by: تعليق من %{user} <abbr title='%{exact_time}'>%{when} مضت</abbr>
changesetxml: حزمة التغييرات إكس إم أل
feed:
title: حزمة التغييرات %{id}
title_comment: حزمة التغييرات %{id} - %{comment}
+ join_discussion: ادخل للاشتراك في المناقشة
+ discussion: مناقشة
+ node:
+ title: 'عقدة: %{name}'
+ history_title: 'تاريخ العقدة: %{name}'
+ way:
+ title: 'طريق: %{name}'
+ history_title: 'تاريخ الطريق: %{name}'
+ nodes: العقد
+ also_part_of:
+ one: جزء من طريق %{related_ways}
+ other: جزء من طرق %{related_ways}
relation:
+ title: 'صلة: %{name}'
+ history_title: 'تاريخ الصلة: %{name}'
members: الأعضاء
relation_member:
entry_role: '%{type} %{name} كــ %{role}'
reopened_by_anonymous: أعاد تنشيطه مجهول قبل <abbr title='%{exact_time}'>%{when}
</abbr>
hidden_by: أخفاه %{user} قبل <abbr title='%{exact_time}'>%{when} =</abbr>
+ query:
+ title: إشارات الاستفهام
+ introduction: اضغط على الخريطة لمعرفة النقاط القريبة
+ nearby: نقاط قريبة
+ enclosing: نقاط مرافقة
changeset:
changeset_paging_nav:
showing_page: الصفحة %{page}
load_more: حمِّل المزيد؟
timeout:
sorry: عذراً، لقد إستمرت لائحة حزم التغييرات اللتي طلبتها وقتاً طويلاً للسحب.
+ rss:
+ full: كامل النقاش
diary_entry:
new:
title: مدخلة يومية جديدة
title: تجاوز API
geofabrik:
title: تنزيلات موقع جيوفابريك
+ other:
+ title: مصادر أخرى
options: خيارات
format: الهيئة
scale: القياس
charging_station: محطة تعبئة
cinema: سينما
clinic: عيادة
+ clock: الساعة
college: كلّية
community_centre: مركز اجتماع
courthouse: محكمة
"yes": جسر
building:
"yes": مبنى
+ craft:
+ carpenter: نجار
+ electrician: اختصاصي كهرباء
+ gardener: بستاني
+ painter: رسام
+ photographer: مصور
+ plumber: سمكري
+ shoemaker: صانع أحذية
+ tailor: خياط
emergency:
+ ambulance_station: محطة إسعاف
+ defibrillator: رجفان
+ landing_site: موقع هبوط طوارئ
phone: هاتف طوارئ
highway:
+ abandoned: طريق سريع مهجور
bridleway: مسلك خيول
bus_guideway: مسار خاص للحافلات
bus_stop: موقف حافلات
construction: طريق سريع قيد الإنشاء
cycleway: مسار دراجات
+ elevator: مصعد
emergency_access_point: نقطة دخول طوارئ
footway: ممر للمشاة
ford: مخاضة
tertiary: طريق فرعي
tertiary_link: طريق فرعي
track: مسار
+ traffic_signals: إشارات مرور
trail: درب
trunk: طريق رئيسي
trunk_link: طريق رئيسي
unclassified: طريق غير مصنّف
unsurfaced: طريق غير معبد
+ "yes": طريق
historic:
archaeological_site: موقع أثري
battlefield: ساحة معركة
boundary_stone: حجر/صخرة تعليم حدود
- building: مبنى
+ building: مبنى تاريخي
+ bunker: برج دفاعي
castle: قلعة
church: كنيسة
+ city_gate: بوابة مدينة
citywalls: أسوار المدينة
fort: حصن
+ heritage: موقع تراثي
house: منزل
icon: أيقونة
manor: عزبة
memorial: نصب تذكاري
mine: منجم
monument: أثر
+ roman_road: طريق روماني
ruins: أطلال
+ stone: حجر
tomb: قبر
tower: برج
wayside_cross: صليب تذكاري
road: منطقة الطريق
village_green: أرض خضراء
vineyard: كرم عنب
+ "yes": استخدام الأرض
leisure:
beach_resort: شاطئ منتجع
bird_hide: مخبئ طيور
+ club: نادي
common: أرض مشاع
+ dog_park: حديقة كلاب
fishing: منطقة صيد سمك
+ fitness_centre: مركز لياقة بدنية
fitness_station: مركز اللياقة البدنية
garden: حديقة
golf_course: ملعب غولف
+ horse_riding: ركوب الخيل
ice_rink: حلبة تزلج على الجليد
marina: مارينا
miniature_golf: جولف مصغر
pitch: ملعب رياضي
playground: ملعب
recreation_ground: ميدان ألعاب
+ resort: منتجع
sauna: حمّام بخاري حار
slipway: مزلقة
sports_centre: مركز رياضي
swimming_pool: بركة سباحة
track: مضمار سباق
water_park: منتزه ألعاب مائية
+ man_made:
+ lighthouse: منارة
+ pipeline: خط أنابيب
+ tower: برج
+ works: مصنع
military:
airfield: منطقة عسكرية
barracks: ثكنات
forest: غابة
geyser: نافورة ماء حار
glacier: نهر/بحر جليدي
+ grassland: أرض عشبية
heath: أرض بور
hill: تلة
island: جزيرة
reef: سلسلة صخور قرب سطح الماء
ridge: أرض مرتفعة
rock: صخرة
+ saddle: سرج
+ sand: رمل
scree: أرض حصاة
scrub: أشجار منخفضة
spring: نبع
wood: حرج
office:
accountant: محاسب
+ administrative: إدارة
architect: مهندس معماري
company: شركة
employment_agency: وكالة توظيف
travel_agent: وكيل سفريات
"yes": مكتب
place:
+ block: حظر
airport: مطار
city: مدينة
country: دولة
town: بلدة
unincorporated_area: منطقة فردية
village: قرية
+ "yes": مكان
railway:
abandoned: سكة حديد مهجورة
construction: سكة حديدية تحت الإنشاء
"yes": متجر
tourism:
alpine_hut: كوخ جبلي
+ apartment: شقة
artwork: عمل فني
attraction: معلم سياحي
bed_and_breakfast: سرير وفطار
camp_site: موقع تخييم
caravan_site: موقع قافلة
chalet: شاليه
+ gallery: معرض
guest_house: بيت ضيافة
hostel: سكن شباب
hotel: فندق
results:
no_results: لم يتم العثور على نتائج
more_results: المزيد من النتائج
- distance:
- one: حوالي 1 كم
- zero: أقل من 1 كم
- other: حوالي %{count}كم
- direction:
- south_west: جنوب-غرب
- south: جنوب
- south_east: جنوب-شرق
- east: شرق
- north_east: شمال-شرق
- north: شمال
- north_west: شمال-غرب
- west: غرب
layouts:
logo:
alt_text: شعار خريطة الشارع المفتوحة
user_diaries_tooltip: اعرض يوميات المستخدمين
edit_with: حرر بإستعمال %{editor}
tag_line: ويكي خريطة العالم الحرة
+ intro_header: مرحبا بكم في !OpenStreetMap
+ intro_text: إن OpenStreetMap هي خريطة العالم, أنشئت بواسطة أشخاص مثلك وحرة الاستخدام
+ برخصة مفتوحة.
intro_2_create_account: أنشئ حساب مستخدم
partners_html: الضيافة مدعومة من %{ucl}, %{ic} و %{bytemark}, و %{partners} آخرون.
partners_ic: كلية امبراطورية لندن
help: مساعدة
about: حول
copyright: حقوق النسخ
+ community: مجتمع
community_blogs: مدونات المجتمع
community_blogs_title: مدونات لأعضاء من مجتمع خريطة الشارع المفتوحة
foundation: المؤسسة
title: ادعم خريطة الشارع المفتوحة بهبة نقدية
text: تبرع
learn_more: التعرف على المزيد
+ more: المزيد
license_page:
foreign:
title: حول هذه الترجمة
+ text: في حالة التعارض ما بين هذه الصفحة المترجمة و %{english_original_link},
+ يجب أن تأخذ الصفحة الإنجليزية الأفضلية
english_link: النص الإنجليزي الأصلي
native:
title: حول هذه الصفحة
mapping_link: إبدأ التخطيط
legal_babble:
title_html: حقوق النشر والترخيص
+ more_title_html: معرفة المزيد
+ contributors_title_html: المساهمين
+ welcome_page:
+ title: أهلاً بك.
+ questions:
+ title: هل هناك أسئلة ؟
+ fixthemap:
+ how_to_help:
+ title: كيف نساعدك ؟
+ join_the_community:
+ title: انضم لهذا المجتمع
+ help_page:
+ welcome:
+ title: مرحبا بك في خرائط الشوارع " المفتوحة المصدر"
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Ar:Beginners%27_guide
+ title: دليل المبتدئين
+ mailing_lists:
+ title: القوائم البريدية
+ forums:
+ title: المنتديات
about_page:
+ next: التالي
+ open_data_title: البيانات المفتوحة
partners_title: الشركاء
notifier:
diary_comment_notification:
كلمة المرور.
note_comment_notification:
greeting: أهلا,
+ changeset_comment_notification:
+ greeting: مرحبا ،
message:
inbox:
title: الوارد
date: التاريخ
reply_button: رد
unread_button: علّم كغير مقروءة
+ back: رجوع
to: إلى
wrong_user: "\uFEFFأنت مسجل دخول باسم '%{user}' ولكن الرسالة التي طلبت قراءتها
لم تكن من أو إلى ذلك المستخدم. يرجى تسجيل الدخول كمستخدم صحيح للرد."
js_2: خريطة الشارع المفتوحة تستخدم جافا سكريبت لخريطتها المنزلقة.
permalink: وصلة دائمة
shortlink: وصلة قصيرة
+ createnote: أضف ملاحظة
edit:
not_public: لم تقم بتعيين تعديلاتك لتظهر بشكل علني.
not_public_description: أنت لم تعد قادر على تعديل الخريطة إلا إذا قمت بذلك.
close: أغلق
search:
search: بحث
+ from: من
+ to: إلى
where_am_i: أين أنا؟
where_am_i_title: صِف الموقع الحالي باستخدام محرك البحث
submit_text: اذهب
new email address: 'عنوان البريد الإلكتروني الجديد:'
email never displayed publicly: (لا يظهر علنًا)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ما هذا ؟
public editing:
بريدك الإلكتروني لمذكرة تأكيد العنوان الإلكتروني الجديد.
flash update success: تم تحديث معلومات المستخدم بنجاح.
confirm:
- heading: Ø£Ù\83Ù\91د Øساب اÙ\84Ù\85ستخدÙ\85
+ heading: تØÙ\82Ù\82 Ù\85Ù\86 برÙ\8aدÙ\83 اÙ\84Ø¥Ù\84Ù\83ترÙ\88Ù\86Ù\8a
press confirm button: اضغط على زر التأكيد أدناه لتنشيط حسابك.
button: أكّد
+ success: تم تأكيد حسابك، شكرًا للاشتراك!
confirm_email:
heading: أكّد تغيير عنوان البريد الإلكتروني
press confirm button: اضغط على زر تأكيد أدناه لتأكيد عنوان بريدك الإلكتروني
failed: عفوًا، تعذر إضافة %{name} كصديق.
already_a_friend: حاليًا أنت و %{name} أصدقاء.
remove_friend:
+ button: الغاء الصداقة
success: تم إزالة %{name} من قائمة أصدقائك.
not_a_friend: '%{name} ليس من أحد أصدقائك.'
filter:
comment: تعليق
full: ملاحظة كاملة
javascripts:
+ close: أغلق
+ share:
+ title: شارك
+ cancel: ألغ
+ image: صورة
map:
base:
cycle_map: خريطة للدراجات
site:
edit_tooltip: عدّل الخريطة
edit_disabled_tooltip: قم بالتكبير لتحرير الخريطة
+ changesets:
+ show:
+ comment: التعليق
+ subscribe: اشترك
+ unsubscribe: إلغاء الاشتراك
+ hide_comment: إخفاء
+ unhide_comment: أظهر
redaction:
edit:
description: الوصف
-# Messages for Egyptian Spoken Arabic (مصرى)
+# Messages for Egyptian Arabic (مصرى)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Meno25
places: أماكن
results:
no_results: لم يتم العثور على نتائج
- distance:
- one: حوالى 1 كم
- zero: أقل من 1 كم
- other: حوالى %{count}كم
- direction:
- south_west: جنوب-غرب
- south: جنوب
- south_east: جنوب-شرق
- east: شرق
- north_east: شمال-شرق
- north: شمال
- north_west: شمال-غرب
- west: غرب
layouts:
logo:
alt_text: شعار خريطه الشارع المفتوحة
heading: أكّد حساب المستخدم
press confirm button: اضغط على زر التأكيد أدناه لتنشيط حسابك.
button: أكّد
+ success: تم تأكيد حسابك، شكرًا للاشتراك!
confirm_email:
heading: أكّد تغيير عنوان البريد الإلكتروني
press confirm button: اضغط على زر تأكيد أدناه لتأكيد عنوان بريدك الإلكترونى
way_paginated: Víes (%{x}-%{y} de %{count})
relation: Rellaciones (%{count})
relation_paginated: Rellaciones (%{x}-%{y} de %{count})
+ comment: Comentarios (%{count})
+ hidden_commented_by: Comentariu tapecíu de %{user} <abbr title='%{exact_time}'>hai
+ %{when}</abbr>
+ commented_by: Comentariu de %{user} <abbr title='%{exact_time}'>hai %{when}</abbr>
changesetxml: Conxuntu de cambeos XML
osmchangexml: osmChange XML
feed:
title: Conxuntu de cambeos %{id}
title_comment: Conxuntu de cambeos %{id} - %{comment}
+ join_discussion: Anicia sesión pa xunite al alderique
+ discussion: Alderique
node:
title: 'Nuedu: %{name}'
history_title: 'Historial del nuedu: %{name}'
reopened_by_anonymous: Reactivao por un anónimu <abbr title='%{exact_time}'>hai
%{when}</abbr>
hidden_by: Tapecío por %{user} <abbr title='%{exact_time}'>hai %{when}</abbr>
+ query:
+ title: Consultar entidaes
+ introduction: Fai clic nel mapa p'alcontrar entidaes cercanes.
+ nearby: Entidaes cercanes
+ enclosing: Entidaes envolventes
changeset:
changeset_paging_nav:
showing_page: Páxina %{page}
load_more: Cargar más
timeout:
sorry: Llevó demasiao tiempu baxar la llista de conxuntos de cambeos que pidisti.
+ rss:
+ title_all: Alderique del conxuntu de cambios d'OpenStreetMap
+ title_particular: 'Alderique del conxuntu de cambios #%{changeset_id} d''OpenStreetMap'
+ comment: 'Comentariu nuevu sobro''l conxuntu de cambios #%{changeset_id} de
+ %{author}'
+ commented_at_html: Anovado hai %{when}
+ commented_at_by_html: Anovao hai %{when} por %{user}
+ full: Alderique completu
diary_entry:
new:
title: Nueva entrada del diariu
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Teleféricu
chair_lift: Telesilla
drag_lift: Telesquí
+ gondola: Telecabina
station: Estación de cable
aeroway:
aerodrome: Aeródromu
taxiway: Cai de rodaxe
terminal: Terminal
amenity:
+ animal_shelter: Refuxu d'animales
arts_centre: Centru d'arte
atm: Caxeru automáticu
bank: Bancu
bicycle_parking: Aparcaderu de bicicletes
bicycle_rental: Alquiler de bicicletes
biergarten: Merenderu
+ boat_rental: Alquiler d'embarcaciones
brothel: Taburdiu
bureau_de_change: Troquéu de moneda
bus_station: Estación d'autobús
car_wash: Llaváu de coches
casino: Casino
charging_station: Estación de carga
+ childcare: Ludoteca
cinema: Cine
clinic: Clínica
+ clock: Reló
college: Colexu universitariu
community_centre: Centru comunitariu
courthouse: Xulgáu
food_court: Zona de restaurantes
fountain: Fonte
fuel: Combustible
+ gambling: Xuegos d'azar
grave_yard: Cementeriu
gym: Ximnasiu / Fitness
health_centre: Centru de salú
library: Biblioteca
market: Mercáu
marketplace: Mercáu
+ monastery: Monasteriu
+ motorcycle_parking: Aparcamientu pa motocicletes
nightclub: Sala de fiestes
nursery: Preescolar
nursing_home: Residencia asistencial
office: Oficina
parking: Aparcaderu
+ parking_entrance: Entrada d'aparcamientu
pharmacy: Farmacia
place_of_worship: Llugar de cultu
police: Policía
veterinary: Ciruxía veterinaria
village_hall: Casa de la villa
waste_basket: Papelera
+ waste_disposal: Contenedor pa basories
youth_centre: Centru de mocedá
boundary:
administrative: Llende alministrativa
"yes": Ponte
building:
"yes": Edificiu
+ craft:
+ brewery: Fábrica de cerveza
+ carpenter: Carpinteru
+ electrician: Electricista
+ gardener: Xardineru
+ painter: Pintor
+ photographer: Fotógrafu
+ plumber: Fontaneru
+ shoemaker: Zapateru
+ tailor: Alfayate
+ "yes": Tienda d'artesanía
emergency:
+ ambulance_station: Base d'ambulancies
+ defibrillator: Desfibrilador
+ landing_site: Llugar de aterrizaxe d'emerxencia
phone: Teléfonu d'emerxencia
highway:
+ abandoned: Autopista abandonada
bridleway: Caleya
bus_guideway: Carril bus con guía
bus_stop: Parada d'autobús
construction: Carretera en construcción
cycleway: Sienda ciclista
+ elevator: Ascensor
emergency_access_point: Puntu de llocalización d'emerxencia
footway: Sienda
ford: Vau
primary_link: Enllaz de carretera primaria
proposed: Carretera propuesta
raceway: Pista de carreres
- residential: Residencial
+ residential: Cai residencial
rest_area: Área de descansu
road: Carretera
secondary: Carretera secundaria
tertiary: Carretera terciaria
tertiary_link: Carretera terciaria
track: Pista
+ traffic_signals: Semáforos
trail: Camín
trunk: Carretera nacional
trunk_link: Enllaz de carretera nacional
unclassified: Carretera ensin clasificar
unsurfaced: Carretera ensin asfaltar
+ "yes": Carretera
historic:
archaeological_site: Llugar arqueolóxicu
battlefield: Campu de batalla
boundary_stone: Finxu
- building: Edificiu
+ building: Edificiu históricu
+ bunker: Búnquer
castle: Castiellu
church: Ilesia
+ city_gate: Puerta de la ciudá
citywalls: Muralla
fort: Fuerte
+ heritage: Patrimoniu de la Humanidá
house: Casa
icon: Iconu
manor: Casona
memorial: Monumentu
mine: Mina
monument: Monumentu
+ roman_road: Via romana
ruins: Ruines
+ stone: Piedra
tomb: Sepulcru
tower: Torre
wayside_cross: Cruceru
wayside_shrine: Ermita
wreck: Naufraxu
+ junction:
+ "yes": Interseición
landuse:
allotments: Güertes recreatives
basin: Conca
road: Área de carretera
village_green: Prau municipal
vineyard: Viña
+ "yes": Usu del terrén
leisure:
beach_resort: Turismu de playa
bird_hide: Observatoriu d'aves
+ club: Club
common: Terrén común
+ dog_park: Parque pa perros
fishing: Área de pesca
+ fitness_centre: Centru de fitness
fitness_station: Ximnasiu
garden: Xardín
golf_course: Campu de golf
+ horse_riding: Equitación
ice_rink: Pista de xelu
marina: Puertu deportivu
miniature_golf: Mini golf
pitch: Campu deportivu
playground: Xuegos infantiles
recreation_ground: Campu recreativu
+ resort: Urbanización pa vacaciones
sauna: Sauna
slipway: Rampla de botadura
sports_centre: Centru deportivu
swimming_pool: Piscina
track: Pista de carreres
water_park: Parque acuáticu
+ "yes": Folganza
+ man_made:
+ lighthouse: Faru
+ pipeline: Tubería
+ tower: Torre
+ works: Fábrica
+ "yes": Fecho pol home
military:
airfield: Aeródromu militar
barracks: Cuartel
forest: Área forestal
geyser: Guéiser
glacier: Glaciar
+ grassland: Prau
heath: Berezal
hill: Llomba
island: Islla
reef: Petón
ridge: Cordal
rock: Roca
+ saddle: Colláu
+ sand: Sable
scree: Llera
scrub: Cotollal
spring: Fonte
wood: Viesca
office:
accountant: Contable
+ administrative: Alministración
architect: Arquitectu
company: Empresa
employment_agency: Oficina d'emplegu
travel_agent: Axencia de viaxes
"yes": Oficina
place:
+ allotments: Güertes recreatives
+ block: Bloque
airport: Aeropuertu
city: Ciudá
country: País
town: Villa
unincorporated_area: Área ensin conceyu
village: Pueblu
+ "yes": Llugar
railway:
abandoned: Ferrocarril abandonáu
construction: Ferrocarril en construcción
spur: Apartaderu industrial
station: Estación de tren
stop: Apeaderu
- subway: Estación de metro
+ subway: Metro
subway_entrance: Entrada de metro
switch: Aguyes de ferrocarril
tram: Tranvía
"yes": Tienda
tourism:
alpine_hut: Refuxu de montaña
+ apartment: Apartamentu
artwork: Obra d'arte
attraction: Interés turísticu
bed_and_breakfast: Cama y almuerzu (B&B)
camp_site: Camping
caravan_site: Camping pa caravanes
chalet: Xalé
+ gallery: Galería
guest_house: Agospiamientu
hostel: Albergue
hotel: Hotel
wadi: Riera
waterfall: Saltu d'agua
weir: Banzáu
+ "yes": Cursu d'agua
admin_levels:
level2: Frontera de país
level4: Frontera d'estáu
results:
no_results: Nun s'alcontraron resultaos
more_results: Más resultaos
- distance:
- zero: menos de 1km
- one: como 1km
- other: unos %{count}km
- direction:
- south_west: suroeste
- south: sur
- south_east: sureste
- east: este
- north_east: nordeste
- north: norte
- north_west: noroeste
- west: oeste
layouts:
logo:
alt_text: Logo d'OpenStreetMap
legal_babble:
title_html: Drechos d'autor y llicencia
intro_1_html: |-
- OpenStreetMap son <i>datos abiertos</i>, baxo llicencia <a
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> son <i>datos abiertos</i>, baxo llicencia <a
href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ Commons Open Database License</a> (ODbL) de la <a
+ href="http://osmfoundation.org/">Fundación OpenStreetMap</a> (OSMF).
intro_2_html: Pues copiar, distribuir, tresmitir y adautar los nuesos datos
de mou llibre, mentanto des reconocimientu a OpenStreetMap y a los sos collaboradores.
Si camudes o creas conteníu sobre los nuesos datos, namái podrás distribuir
title: Exemplu de reconocimientu
more_title_html: Pa saber más
more_1_html: |-
- Llei más tocante a cómo utilizar los nuesos datos, y cómo acreditanos, en <a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Entrugues y rempuestes llegales</a> (n'inglés).
+ Llei más tocante a cómo utilizar los nuesos datos, y cómo acreditanos, na <a
+ href="http://osmfoundation.org/Licence">páxina de la Llicencia OSMF</a> y nes <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Entrugues y rempuestes llegales</a> (n'inglés) de la comunidá.
more_2_html: |-
Anque OpenStreetMap son datos abiertos, nun podemos ufrir una API de mapes de baldre pa desendolcadores d'aplicaciones pa terceros.
Llei la nuesa <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Política d'usu de la API</a> (n'inglés),
(<a href="http://www.and.com">www.and.com</a>)
contributors_nz_html: '<strong>Nueva Zelanda</strong>: Contien datos sacaos
de Land Information New Zealand. Crown Copyright reserved.'
+ contributors_si_html: |-
+ <strong>Eslovenia</strong>: Contien datos de la
+ <a href="http://www.gu.gov.si/en/">Autoridá Topográfica y Cartográfica</a> y del
+ <a href="http://www.mkgp.gov.si/en/">Ministeriu d'Agricultura, Silvicultura y Alimentación</a>
+ (información pública d'Eslovenia).
contributors_za_html: |-
- <strong>Sudáfrica</strong>: Contién datos sacaos de
+ <strong>Sudáfrica</strong>: Contien datos sacaos de
<a href="http://www.ngi.gov.za/">Chief Directorate:
National Geo-Spatial Information</a>, State copyright reserved.
contributors_gb_html: '<strong>Reinu Xuníu</strong>: Contien datos de Ordnance
<a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procedimientu
de retirada de datos</a> o pidilo direutamente nel nuesu <a href="http://dmca.openstreetmap.org/">formulariu
en llinia</a>.
+ trademarks_title_html: <span id="trademarks"></span>Marques rexistraes
+ trademarks_1_html: OpenStreetMap ya'l logotipu de la lente son marques rexistraes
+ de la Fundación OpenStreetMap. Si tienes entrugues tocante al to usu de les
+ marques, mándales al <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">grupu
+ de trabayu sobro llicencies</a>.
welcome_page:
title: ¡Bienveníu!
introduction_html: |-
whats_on_the_map:
title: Qué hai nel Mapa
on_html: |-
- OpenStreetMap ye un llugar pa facer mapes de coses que seyan al mesmu tiempu <em>reales y actuales</em> -
- incluye millones d'edificios, carreteres, y otros detalles de llugares. Pue poner nel mapa
- cualquier carauterística del mundu real que-y interese.
+ OpenStreetMap ye un llugar pa cartografiar coses que seyan al mesmu tiempu <em>reales y actuales</em> -
+ incluye millones d'edificios, carreteres, y otros detalles de llugares. Puedes poner nel mapa
+ cualquier carauterística del mundu real que t'interese.
off_html: |-
Lo que <em>nun</em> incluye son datos suxetivos como calificaciones, carauterístiques históriques o hipotétiques, y datos de fontes con drechos d'autor. Si nun tien
un permisu especial, nun copie de mapes en llinia o en papel.
tag_html: |-
Una <strong>etiqueta</strong> ye una parte de los datos d'un noyu o vía, como'l
d'un restaurante o la velocidá máxima d'una carretera.
+ rules:
+ title: ¡Regles!
+ paragraph_1_html: OpenStreetMap tien poques regles formales, pero esperamos
+ que tolos participantes collaboren y se comuniquen cola comunidá. Si tas considerando
+ cualquier actividá distinta de la edición manual, llei y sigui les instrucciones
+ sobro <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>importaciones</a>
+ y <a href='http://wiki.openstreetmap.org/wiki/Import/Automated_Edits_code_of_conduct'>ediciones
+ automatizaes</a>.
questions:
title: ¿Tien alguna entruga?
paragraph_1_html: |-
url: /welcome
title: Bienveníos a OSM
description: Principie con esta guía rápida que cubre lo básico d'OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+ title: Guía del principiante
+ description: Guía pa principiantes, mantenida pola comunidá.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Entrugar o buscar respuestes nel sitiu d'entrugues y respuestes
d'OSM.
+ mailing_lists:
+ title: Llistes de corréu
+ description: Fai una entruga o alderica sobro asuntos interesantes nun ampliu
+ abanicu de llistes de corréu temátiques o rexonales.
+ forums:
+ title: Foros
+ description: Entrugues y alderiques pa los que prefieren una interfaz pol estilu
+ d'un tablón d'anuncios.
+ irc:
+ title: IRC
+ description: Charra interactiva en munchos idiomes diferentes y sobro munchos
+ asuntos.
+ switch2osm:
+ title: Migrar a OSM
+ description: Ayuda pa les empreses y organizaciones que cambien a mapes y otros
+ servicios, basaos n'OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
collaboradores. Si altera o usa como base los datos de ciertes maneres, sólo
pue distribuir el resultáu baxo la mesma llicencia. Vea la <a href=''%{copyright_path}''>páxina
de copyright y llicencia</a> pa más detalles.'
+ legal_title: Llegal
+ legal_html: "Esti sitiu y munchos otros servicios rellacionaos xestiónalos formalmente
+ la \n<a href='http://osmfoundation.org/'>Fundación OpenStreetMap</a> (OSMF)
+ \nnel nome de la comunidá.\n<br> \n<a href='http://osmfoundation.org/Contact'>Comunícate
+ cola OSMF</a> \nsi tienes entrugues o problemes relativos a les llicencies,
+ drechos d'autor u otru tema llegal."
partners_title: Asociaos
notifier:
diary_comment_notification:
commented_note: '%{commenter} reactivó una nota del mapa na que vusté comentó.
La nota ta cerca de %{place}.'
details: Pue alcontrar más detalles sobro la nota en %{url}.
+ changeset_comment_notification:
+ greeting: Bones,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} comentó unu de los tos conxuntos
+ de cambios'
+ subject_other: '[OpenStreetMap] %{commenter} comentó sobro un conxuntu de
+ cambios que t''interesa'
+ your_changeset: '%{commenter} dexó un comentariu n''unu de los tos conxuntos
+ de cambios creáu el %{time}'
+ commented_changeset: '%{commenter} dexó un comentariu nun conxuntu de cambios
+ del mapa que tas siguiendo creáu por %{changeset_author} el %{time}'
+ partial_changeset_with_comment: col comentariu '%{changeset_comment}'
+ partial_changeset_without_comment: ensin comentarios
+ details: Puen alcontrase más detalles del conxuntu de cambios en %{url}
message:
inbox:
title: Buzón
close: Zarrar
search:
search: Guetar
+ get_directions: Obtener indicaciones
+ get_directions_title: Alcuentra indicaciones ente dos puntos
+ from: Dende
+ to: A
where_am_i: ¿Ú toi?
where_am_i_title: Describi el to allugamientu actual usando el motor de gueta
submit_text: Dir
register now: Rexistrate agora
with username: '¿Yá tienes cuenta n''OpenStreetMap? Anicia sesión col to nome
d''usuariu y contraseña:'
- with openid: 'D''otra miente, usa la to OpenID pa coneutar:'
+ with external: 'Alternativamente, usa un terceru p''aniciar sesión:'
new to osm: ¿Yes nuevu con OpenStreetMap?
to make changes: Pa camudar los datos d'OpenStreetMap, has de tener una cuenta.
create account minute: Crea una cuenta. Lleva namái un minutu.
sospechoses.<br />Ponte en contautu col <a href="%{webmaster}">webmaster</a>
si quies discutilo.
auth failure: Sentímoslo, nun se pudo coneutar al sistema con esos datos.
- openid missing provider: Sentímoslo, nun pudimos ponenos en contautu col to
- sirvidor d'OpenID
- openid invalid: Sentímoslo, la to OpenID paez que ta mal formada
openid_logo_alt: Coneutar con una OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Coneutar con OpenID
- alt: Coneutar con una URL OpenID
+ title: Aniciar sesión con OpenID
+ alt: Aniciar sesión con una URL d'OpenID
google:
- title: Coneutar con Google
- alt: Coneutar con una OpenID de Google
+ title: Aniciar sesión con Google
+ alt: Aniciar sesión con una OpenID de Google
+ facebook:
+ title: Anicia sesión con Facebook
+ alt: Anicia sesión con una cuenta de Facebook
+ windowslive:
+ title: Anicia sesión con Windows Live
+ alt: Anicia sesión con una cuenta de Windows Live
yahoo:
- title: Coneutar con Yahoo
- alt: Coneutar con una OpenID de Yahoo
+ title: Aniciar sesión con Yahoo
+ alt: Aniciar sesión con una OpenID de Yahoo
wordpress:
- title: Coneutar con Wordpress
- alt: Coneutar con una OpenID de Wordpress
+ title: Aniciar sesión con Wordpress
+ alt: Aniciar sesión con una OpenID de Wordpress
aol:
- title: Coneutar con AOL
- alt: Coneutar con una OpenID d'AOL
+ title: Aniciar sesión con AOL
+ alt: Aniciar sesión con una OpenID de AOL
logout:
title: Salir
heading: Colar d'OpenStreetMap
display name: 'Nome a amosar:'
display name description: El nome d'usuariu que s'amuesa en público. Pue camudalo
más sero nes preferencies.
- openid: '%{logo} OpenID:'
+ external auth: 'Autenticación con un terceru:'
password: 'Contraseña:'
confirm password: 'Confirma la contraseña:'
- use openid: Como alternativa, usa %{logo} OpenID pa coneutar
- openid no password: Con OpenID nun fai falta una contraseña, pero delles ferramientes
- estra o sirvidores inda puen necesitala.
- openid association: |-
- <p>La to OpenID inda nun ta asociada con una cuenta d'OpenStreetMap.</p>
+ use external auth: Alternativamente, usa un terceru p'aniciar sesión
+ auth no password: Cola autenticación con un terceru nun fai falta una contraseña,
+ pero delles ferramientes estra o sirvidores inda puen necesitala.
+ auth association: |-
+ <p>La to ID inda nun ta asociada con una cuenta d'OpenStreetMap.</p>
<ul>
- <li>Si yes nuevu n'OpenStreetMap, por favor crea una cuenta nueva col formulariu de más abaxo.</li>
+ <li>Si yes nuevu n'OpenStreetMap, crea una cuenta nueva usando'l formulariu de más abaxo.</li>
<li>
- Si yá tienes una cuenta, pues entrar nella col to nome
- d'usuariu y contraseña, y asociar llueu la cuenta cola OpenID
- nes preferencies d'usuariu.
+ Si yá tienes una cuenta, pues aniciar sesión con ella usando'l to
+ nome d'usuariu y contraseña y llueu asociar la cuenta cola
+ to ID na configuración d'usuariu.
</li>
</ul>
continue: Date d'alta
current email address: 'Direición de corréu electrónicu actual:'
new email address: 'Nueva direición de corréu electrónicu:'
email never displayed publicly: (nunca s'amuesa en público)
+ external auth: 'Autenticación esterna:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ¿qué ye esto?
public editing:
press confirm button: Calca nel botón de confirmación d'abaxo p'activar la to
cuenta.
button: Confirmar
+ success: Cuenta confirmada, ¡gracies por rexistrate!
already active: Esta cuenta yá se confirmó.
unknown token: El códigu de confirmación caducó o nun esiste.
reconfirm_html: Si necesites que volvamos a unviate'l corréu de confirmación,
press confirm button: Calca nel botón de confirmación qu'apaez abaxo pa confirmar
la to direición de corréu nueva.
button: Confirmar
- success: Direición de corréu electrónicu confirmada. ¡Gracies por rexistrate!
+ success: ¡Confirmóse'l to cambiu de direición de corréu electrónicu!
failure: Yá se confirmó una direición de corréu electrónicu con esti token.
+ unknown_token: El códigu de confirmación caducó o nun esiste.
set_home:
flash success: Llocalización d'aniciu guardada correutamente
go_public:
Un alministrador revisará pronto esta decisión, o pues
comunicate col %{webmaster} si quies discutir esto.
</p>
+ auth_failure:
+ connection_failed: Falló la conexón col fornidor d'autenticación
+ invalid_credentials: Credenciales d'autenticación inválides
+ no_authorization_code: Nun hai códigu d'autorización
+ unknown_signature_algorithm: Algoritmu de firma desconocíu
+ invalid_scope: Ámbitu inválidu
user_role:
filter:
not_an_administrator: Namái los alministradores pueden xestionar los roles,
heading: '%{block_on} bloquiáu por %{block_by}'
time_future: Fina en %{time}
time_past: Finó hai %{time}
+ created: Creáu
+ ago: hai %{time}
status: Estáu
show: Amosar
edit: Editar
link: Enllaz o HTML
long_link: Enllaz
short_link: Enllaz curtiu
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Configurar dimensiones personalizaes
format: 'Formatu:'
createnote_disabled_tooltip: Ampliar p'amestar una nota al mapa
map_notes_zoom_in_tooltip: Averar pa ver les notes del mapa
map_data_zoom_in_tooltip: Averar pa ver los datos del mapa
+ queryfeature_tooltip: Consultar entidaes
+ queryfeature_disabled_tooltip: Averar pa consultar entidaes
+ changesets:
+ show:
+ comment: Comentariu
+ subscribe: Suscribite
+ unsubscribe: Date de baxa
+ hide_comment: anubrir
+ unhide_comment: amosar
notes:
new:
intro: ¿Alcontró un error o falta daqué? Informe a otros mapeadores pa que
comment_and_resolve: Comentar y resolver
comment: Comentar
edit_help: Mueve'l mapa y amplía al llugar que quies editar, llueu calca equí.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicleta (GraphHopper)
+ graphhopper_foot: A pie (GraphHopper)
+ mapquest_bicycle: Bicicleta (MapQuest)
+ mapquest_car: Coche (MapQuest)
+ mapquest_foot: A pie (MapQuest)
+ osrm_car: En coche (OSRM)
+ directions: Indicaciones
+ distance: Distancia
+ errors:
+ no_route: Nun pudo alcontrase una ruta ente estos dos llugares.
+ no_place: Sentímoslo. Nun pudo alcontrase esi llugar.
+ instructions:
+ continue_without_exit: Siguir en %{name}
+ slight_right_without_exit: Llixeramente a la drecha haza %{name}
+ turn_right_without_exit: Xira a la drecha haza %{name}
+ sharp_right_without_exit: Fuerte a la drecha haza %{name}
+ uturn_without_exit: Cambiu de sentíu en %{name}
+ sharp_left_without_exit: Fuerte a la izquierda haza %{name}
+ turn_left_without_exit: Xira a la izquierda haza %{name}
+ slight_left_without_exit: Llixeramente a la izquierda haza %{name}
+ via_point_without_exit: (pel puntu)
+ follow_without_exit: Siguir %{name}
+ roundabout_without_exit: Na rotonda toma %{name}
+ leave_roundabout_without_exit: Sal de la rotonda - %{name}
+ stay_roundabout_without_exit: Sigui na rotonda - %{name}
+ start_without_exit: Principia al final de %{name}
+ destination_without_exit: Aportasti al destín
+ against_oneway_without_exit: Dir escontra direición per %{name}
+ end_oneway_without_exit: Final de sentíu únicu en %{name}
+ roundabout_with_exit: Na rotonda coyer la salida %{exit} haza %{name}
+ unnamed: ensin nome
+ courtesy: Direiciones cortesía de %{link}
+ time: Tiempu
+ query:
+ node: Nuedu
+ way: Vía
+ relation: Rellación
+ nothing_found: Nun s'alcontraron entidaes
+ error: 'Error al comunicase con %{server}: %{error}'
+ timeout: Tiempu escosáu al comunicase con %{server}
redaction:
edit:
description: Descripción
# Author: AZISS
# Author: Cekli829
# Author: Mushviq Abdulla
+# Author: Ruila
# Author: SalihB
# Author: Vugar 1981
# Author: Wertuose
results:
no_results: Nəticələr tapılmadı
more_results: Daha çox nəticə
- distance:
- one: təqribən %{count}km
- zero: 1 km-dən az
- other: təqribən %{count}km
- direction:
- south_west: cənub-qərbə
- south: cənuba
- south_east: cənub-şərqə
- east: şərqə
- north_east: şimal-şərqə
- north: şimala
- north_west: şimal-qərbə
- west: qərbə
layouts:
logo:
alt_text: OpenStreetMap loqosu
contributors_gb_html: <strong>Böyük Britaniya Krallığı</strong> Ordnance Survey
© Crown copyright tərəfindən məlumatlar. Verilənlər bazasına icazə 2010-12.
infringement_title_html: Müəllif hüquqlarının pozulması
+ help_page:
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Az:Beginners%27_guide
notifier:
diary_comment_notification:
subject: '[OpenStreetMap] %{user} adlı istifadəçi sənin gündəliy yazına şərh
new to osm: OpenStreetMap-də yenisiz?
no account: İstifadəçi hesabınız yoxdur?
openid_logo_alt: OpenID ilə hesabınıza daxil olun
- openid_providers:
- openid:
- title: OpenID ilə hesaba giriş
- alt: OpenID URL ilə hesabınıza daxil olun
- google:
- title: Google ilə hesaba giriş
- alt: Google OpenID ilə hesabınıza daxil olun
- yahoo:
- title: Yahoo ilə hesaba giriş
- alt: Yahoo OpenID ilə hesabınıza daxil olun
- wordpress:
- title: Wordpress ilə hesaba giriş
- alt: Wordpress OpenID ilə hesabınıza daxil olun
- aol:
- title: AOL ilə hesaba giriş
- alt: AOL OpenID ilə hesabınıza daxil olun
logout:
title: Sistemdən çıx
heading: OpenStreetMap-dən çıx
title: Hesab aç
email address: 'E-poçt ünvanları:'
display name: 'Gorüntülənən ad:'
- openid: '%{logo} OpenID:'
password: 'Parol:'
confirm password: 'Parolu təkrarla:'
continue: Davam et
current email address: 'Hazırki E-Poçt Ünvanı:'
new email address: 'Yeni E-Poçt Ünvanı:'
openid:
- openid: 'OpenID:'
link text: bu nədir?
public editing:
enabled link text: Bu nədir?
results:
no_results: Нічога ня знойдзена
more_results: Больш вынікаў
- distance:
- few: каля %{count} км
- many: каля %{count} км
- one: каля %{count} км
- zero: меней 1 км
- other: каля %{count} км
- direction:
- south_west: паўднёвы захад
- south: поўдзень
- south_east: паўднёвы ўсход
- east: усход
- north_east: паўночны ўсход
- north: поўнач
- north_west: паўночны захад
- west: захад
layouts:
logo:
alt_text: Лягатып OpenStreetMap
register now: Зарэгістравацца зараз
with username: 'Ужо маеце рахунак OpenStreetMap? Калі ласка, увайдзіце ў сыстэму
з Вашым іменем удзельніка і паролем:'
- with openid: 'Для ўваходу можаце выкарыстаць Ваш OpenID:'
new to osm: Упершыню на OpenStreetMap?
to make changes: Каб рабіць зьмены ў зьвестках OpenStreetMap, Вам неабходна
мець рахунак.
актыўнасьці.<br />Калі ласка, зьвяжыцеся з <a href="%{webmaster}">ўэбмайстрам</a>
калі Вы жадаеце гэта аспрэчыць.
auth failure: Прабачце, немагчыма ўвайсьці з такім адрасам і паролем.
- openid missing provider: Прабачце, немагчыма зьвязацца з Вашым правайдэрам OpenID
- openid invalid: Прабачце, здаецца Ваш OpenID уведзены няслушна
openid_logo_alt: Увайсьці ў сыстэму з дапамогай OpenID
- openid_providers:
- openid:
- title: Увайсьці ў сыстэму з дапамогай OpenID
- alt: Увайсьці ў сыстэму з дапамогай URL-адрасу OpenID
- google:
- title: Увайсьці ў сыстэму з дапамогай Google
- alt: Увайсьці ў сыстэму з дапамогай Google OpenID
- yahoo:
- title: Увайсьці ў сыстэму з дапамогай Yahoo
- alt: Увайсьці ў сыстэму з дапамогай Yahoo OpenID
- wordpress:
- title: Увайсьці ў сыстэму з дапамогай Wordpress
- alt: Увайсьці ў сыстэму з дапамогай Wordpress OpenID
- aol:
- title: Увайсьці ў сыстэму з дапамогай AOL
- alt: Увайсьці ў сыстэму з дапамогай AOL OpenID
logout:
title: Выйсьці
heading: Выйсьці з OpenStreetMap
display name: 'Бачнае імя:'
display name description: Вашае імя, якое будзе бачнае ўсім. Вы можаце зьмяніць
яго потым ў Вашых наладах.
- openid: '%{logo} OpenID:'
password: 'Пароль:'
confirm password: 'Пацьверджаньне паролю:'
- use openid: Дадаткова выкарыстоўвайце %{logo} OpenID для ўваходу ў сыстэму
- openid no password: Падчас выкарыстаньня OpenID пароль не патрэбны, але некаторыя
- дадатковыя інструмэнты ці сэрвэр могуць яго спытаць.
- openid association: |-
- <p>Ваш OpenID пакуль ня зьвязаны з рахункам OpenStreetMap.</p>
- <ul>
- <li>Калі Вы ўпершыню на OpenStreetMap, калі ласка, стварыце новы рахунак з дапамогай формы пададзенай ніжэй.</li>
- <li>
- Калі Вы ўжо маеце рахунак, Вы можаце ўвайсьці ў сыстэму
- з Вашым іменем удзельніка і паролем, а потым зьвязаць яго з Вашым рахункам
- OpenID на старонцы наладаў Вашага профілю.
- </li>
- </ul>
continue: Працягнуць
terms accepted: Дзякуй за тое, што прынялі новыя ўмовы супрацоўніцтва!
terms declined: Нам шкада, што Вы вырашылі не прыняць новыя ўмовы супрацоўніцтва.
new email address: 'Новы адрас электроннай пошты:'
email never displayed publicly: (ніколі ня будзе паказаны публічна)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/BE:OpenID
link text: што гэта?
public editing:
press confirm button: Націсьніце кнопку «Пацьвердзіць» для актывацыі Вашага
рахунку.
button: Пацьвердзіць
+ success: Ваш рахунак пацьверджаны, дзякуй за рэгістрацыю!
already active: Гэты рахунак ужо пацьверджаны.
unknown token: Выглядае, што гэты ключ не існуе.
confirm_resend:
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Alex73
+# Author: Goshaproject
# Author: Jim-by
# Author: Unomano
# Author: Дзяніс Тутэйшы
notifier: Абвяшчэнне
old_node: Стары вузел
old_node_tag: Стары тэг вузла
- old_relation: Старая сувязь
+ old_relation: Старыя адносіны
old_relation_member: Стары ўдзельнік сувязі
- old_relation_tag: Стары тэг сувязі
- old_way: СÑ\82аÑ\80аÑ\8f кÑ\80Ñ\8bвая
- old_way_node: Стары вузел шляху
- old_way_tag: СÑ\82аÑ\80Ñ\8b Ñ\82Ñ\8dг кÑ\80Ñ\8bвой
- relation: СÑ\83вÑ\8fзÑ\8c
+ old_relation_tag: Стары тэг адносін
+ old_way: СÑ\82аÑ\80аÑ\8f лÑ\96нÑ\96я
+ old_way_node: Стары вузел лініі
+ old_way_tag: СÑ\82аÑ\80Ñ\8b Ñ\82Ñ\8dг лÑ\96нÑ\96Ñ\96
+ relation: Ð\90дноÑ\81Ñ\96нÑ\8b
relation_member: Удзельнік сувязі
- relation_tag: Тэг сувязі
+ relation_tag: Тэг адносін
session: Сеанс
trace: След
tracepoint: Кропка следу
user: Карыстальнік
user_preference: Налады карыстальніка
user_token: Токен карыстальніка
- way: Ð\9aÑ\80Ñ\8bвая
- way_node: Вузел шляху
- way_tag: ТÑ\8dг кÑ\80Ñ\8bвой
+ way: Ð\9bÑ\96нÑ\96я
+ way_node: Вузел лініі
+ way_tag: ТÑ\8dг лÑ\96нÑ\96Ñ\96
attributes:
diary_comment:
body: Тэкст
description: Апісанне
message:
sender: Ад
- title: Ð\97агаловак
+ title: ТÑ\8dма
body: Тэкст
recipient: Каму
user:
- email: Эл.пошта
+ email: Электронная пошта
active: Актыўны
display_name: Бачнае імя
description: Апісанне
name: Potlatch 2
description: Potlatch 2 (браўзэрны рэдактар)
remote:
- name: Ð\94Ñ\8bÑ\81Ñ\82анÑ\86Ñ\8bйнае кÑ\96Ñ\80аванне
- description: Ð\94Ñ\8bÑ\81Ñ\82анÑ\86Ñ\8bйнае кÑ\96Ñ\80аванне (JOSM або Merkaartor)
+ name: Ð\92онкавÑ\8b Ñ\80Ñ\8dдакÑ\82аÑ\80
+ description: вонкавага Ñ\80Ñ\8dдакÑ\82аÑ\80а (JOSM або Merkaartor)
browse:
created: Створаны
closed: Зачынены
node_paginated: Вузлы (%{x}-%{y} з %{count})
way: Крывыя (%{count})
way_paginated: Лініі (%{x}-%{y} з %{count})
- relation: СÑ\83вÑ\8fзÑ\96 (%{count})
+ relation: Ð\90дноÑ\81Ñ\96нÑ\8b (%{count})
relation_paginated: Сувязі (%{x}-%{y} з %{count})
comment: Каментары (%{count})
hidden_commented_by: Схаваны каментар ад %{user} <abbr title='%{exact_time}'>%{when}
title: 'Вузел: %{name}'
history_title: 'Гісторыя вузла: %{name}'
way:
- title: 'Ð\9aÑ\80Ñ\8bвая: %{name}'
- history_title: 'Гісторыя шляху: %{name}'
+ title: 'Ð\9bÑ\96нÑ\96я: %{name}'
+ history_title: 'Гісторыя крывой: %{name}'
nodes: Вузлы
also_part_of:
one: з'яўляецца часткай крывой %{related_ways}
other: з'яўляецца часткай крывых % {related_ways}
relation:
- title: 'СÑ\83вÑ\8fзÑ\8c: %{name}'
+ title: 'Ð\90дноÑ\81Ñ\96нÑ\8b: %{name}'
history_title: 'Гісторыя сувязі: %{name}'
members: Удзельнікі
relation_member:
entry_role: '%{type} %{name} як %{role}'
type:
node: Вузел
- way: Ð\9aÑ\80Ñ\8bвая
- relation: СÑ\83вÑ\8fзÑ\8c
+ way: Ð\9bÑ\96нÑ\96я
+ relation: Ð\90дноÑ\81Ñ\96нÑ\8b
containing_relation:
- entry: СÑ\83вÑ\8fзÑ\8c %{relation_name}
- entry_role: СÑ\83вÑ\8fзÑ\8c %{relation_name} (як %{relation_role})
+ entry: Ð\90дноÑ\81Ñ\96нÑ\8b %{relation_name}
+ entry_role: Ð\90дноÑ\81Ñ\96нÑ\8b %{relation_name} (як %{relation_role})
not_found:
sorry: Прабачце, %{type} з нумарам %{id} не знойдзены.
type:
node: вузел
- way: кÑ\80Ñ\8bвая
- relation: сувязь
+ way: лÑ\96нÑ\96я
+ relation: адносіны
changeset: набор змен
timeout:
sorry: Прабачце, дадзеныя для %{type} з ідэнтыфікатарам %{id} занадта доўгія
для атрымання.
type:
node: вузел
- way: кÑ\80Ñ\8bвая
- relation: сувязь
+ way: лÑ\96нÑ\96я
+ relation: адносіны
changeset: набор змен
redacted:
redaction: Рэдакцыя %{id}
была адрэдагаваная. Глядзіце %{redaction_link} для падрабязнасцяў.
type:
node: вузел
- way: кÑ\80Ñ\8bвая
- relation: сувязь
+ way: лÑ\96нÑ\96я
+ relation: адносіны
start_rjs:
feature_warning: Неабходна загрузіць %{num_features} аб'ектаў, што можа запаволіць
ваш браўзэр. Вы ўпэўнены, што жадаеце праглядзець гэтыя дадзеныя?
таму</abbr>
hidden_by: Схавана %{user} <abbr title='%{exact_time}'>%{when} таму</abbr>
query:
- title: Ð\97апÑ\8bÑ\82 аб’ектаў
+ title: Ð\9fоÑ\88Ñ\83к аб’ектаў
introduction: Пстрыкніце на карце, каб атрымаць звесткі пра аб'екты паблізу.
nearby: Аб’екты паблізу
enclosing: Навакольныя аб'екты
user_title: Дзённік %{user}
leave_a_comment: Пакінуць каментар
login_to_leave_a_comment: '%{login_link} каб пакінуць каментар'
- login: Ð\9bогÑ\96н
+ login: УвайÑ\81Ñ\86Ñ\96
save_button: Запісаць
no_such_entry:
title: Няма такіх запісаў у дзенніку
format_to_export: Фармат для экспарту
osm_xml_data: OpenStreetMap XML
map_image: Выява карты (паказвае стандартны слой)
- embeddable_html: HTML для ўстаўкі
+ embeddable_html: HTML-код
licence: Ліцэнзія
export_details: Дадзеныя праекту OpenStreetMap распаўсюджваюцца па ліцэнзіі
<a href="http://opendatacommons.org/licenses/odbl/1.0/">Open Data Commons
title: Іншыя крыніцы
description: Дадатковыя крыніцы, пералічаныя на Вікі OpenStreetMap
options: Настройкі
- format: 'Фармат:'
+ format: Фармат
scale: Маштаб
max: макс
image_size: Памер выявы
- zoom: маÑ\88Ñ\82аб
+ zoom: Ð\9fавелÑ\96Ñ\87Ñ\8dнне
add_marker: Дадаць маркер на карту
latitude: 'Шыр:'
longitude: 'Даў:'
output: Вывад
- paste_html: Уставіць HTML для ўбудовы у вэб-сайт
+ paste_html: Уставіць HTML-код у вэб-сайт
export_button: Экспарт
geocoder:
search:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Лінная дарога
chair_lift: Крэсельны пад'ёмнік
- drag_lift: Бугельны пад'емнік
+ drag_lift: Бугельны пад'ёмнік
+ gondola: Лінная дарога
station: Станцыя канатнай дарогі
aeroway:
aerodrome: Аэрадром
taxiway: Рулёжныя дарожкі
terminal: Тэрмінал
amenity:
+ animal_shelter: Прытулак для жывёл
arts_centre: Цэнтр мастацтваў
atm: Банкамат
bank: Банк
bicycle_parking: Веласіпедная паркоўка
bicycle_rental: Пракат ровараў
biergarten: Рэстаранны падворак
+ boat_rental: Пракат лодак
brothel: Бардэль
bureau_de_change: Абмен валют
bus_station: Аўтобусны вакзал
car_wash: Аўтамыйка
casino: Казіно
charging_station: Зарадная станцыя
+ childcare: Служба дагляду за дзецьмі
cinema: Кіно
clinic: Клініка
+ clock: Гадзіннік
college: Каледж
community_centre: Грамадскі цэнтр
courthouse: Суд
food_court: Фуд-Корт
fountain: Фантан
fuel: АЗС
+ gambling: Азартныя гульні
grave_yard: Могілкі
gym: Фітнес-цэнтр ці Трэнажорная зала
health_centre: Медыцынскі цэнтр
library: Бібліятэка
market: Рынак
marketplace: Рыначная плошча
+ monastery: Кляштар
+ motorcycle_parking: Паркоўка для матацыклаў
nightclub: Начны клуб
nursery: Яслі
nursing_home: Прыватная лякарня
office: Офіс
parking: Паркоўка
+ parking_entrance: Заезд на паркоўку
pharmacy: Аптэка
place_of_worship: Культавы будынак
police: Паліцыя
veterinary: Ветэрынарная хірургія
village_hall: Вясковая зала
waste_basket: Кош для смецця
+ waste_disposal: Смеццевы бак
youth_centre: Маладзежны цэнтр
boundary:
administrative: Адміністрацыйная мяжа
"yes": Мост
building:
"yes": Будынак
+ craft:
+ brewery: Бровар
+ carpenter: Цясляр
+ electrician: Электрык
+ gardener: Садоўнік
+ painter: Мастак
+ photographer: Фатограф
+ plumber: Сантэхнік
+ shoemaker: Шавец
+ tailor: Кравец
+ "yes": Майстэрня
emergency:
+ ambulance_station: Станцыя хуткай медыцынскай дапамогі
+ defibrillator: Дэфібрылятар
+ landing_site: Месца аварыйнай пасадкі
phone: Тэлефон экстранай сувязі
highway:
+ abandoned: Занядбаная дарога
bridleway: Дарога для коней
bus_guideway: Рэйкавы аўтобус
bus_stop: Аўтобусны прыпынак
construction: Будаўніцтва дарогі
cycleway: Веласіпедная дарожка
+ elevator: Ліфт
emergency_access_point: Пункт хуткай дапамогі
footway: Сцяжынка
ford: Брод
path: Сцежка
pedestrian: Пешаходная дарожка
platform: Платформа
- primary: Ð\9fеÑ\80Ñ\88аÑ\81ная дарога
+ primary: Ð\90Ñ\81ноÑ\9eная дарога
primary_link: Першасная дарога
proposed: Плануемая дарога
raceway: Гоначная траса
speed_camera: Фотарадар
steps: Прыступкі
street_lamp: Вулічны ліхтар
- tertiary: Трэцясная дарога
+ tertiary: Троесная дарога
tertiary_link: Трэцясная дарога
track: Каляя
+ traffic_signals: Святлафор
trail: След
trunk: Шаша
trunk_link: Магістраль
unclassified: Некласіфікаваная дарога
unsurfaced: Дарога без пакрыцця
+ "yes": Дарога
historic:
archaeological_site: Археалагічныя раскопы
battlefield: Поле бою
boundary_stone: Пагранічны камень
- building: Будынак
+ building: Гістарычны будынак
+ bunker: Бункер
castle: Замак
church: Царква
+ city_gate: Гарадская брама
citywalls: Гарадскія сцены
fort: Форт
+ heritage: Культурная спадчына
house: Дом
icon: Ікона
manor: Сядзіба
memorial: Мемарыял
mine: Шахта
monument: Помнік
+ roman_road: Рымская дарога
ruins: Руіны
+ stone: Камень
tomb: Магіла
tower: Вежа
wayside_cross: Прыдарожны крыж
wayside_shrine: Прыдарожная каплічка
wreck: Месца аварыі
+ junction:
+ "yes": Перакрыжаванне
landuse:
allotments: Сады-агароды
basin: Вадаём
recreation_ground: Пляцоўка для гульняў
reservoir: Вадасховішча
reservoir_watershed: Водападзел вадасховішча
- residential: Жылы раен
+ residential: Жылы раён
retail: Рознічны гандаль
road: Прыдарожная паласа
village_green: Вясковая паляна
vineyard: Вінаграднік
+ "yes": Землекарыстанне
leisure:
beach_resort: Пляжны курорт
bird_hide: Засада
+ club: Клуб
common: Агульная зямля
+ dog_park: Пляцоўка для сабак
fishing: Раён рыбалоўства
+ fitness_centre: Фітнес-Цэнтр
fitness_station: Спартыўная пляцоўка
garden: Сад
golf_course: Поле для гольфа
+ horse_riding: Верхавая язда
ice_rink: Каток
marina: Гавань для катэраў
miniature_golf: Міні-Гольф
pitch: Спартыўная пляцоўка
playground: Дзіцячая пляцоўка
recreation_ground: Зона адпачынку
+ resort: Курорт
sauna: Сауна
slipway: Стапель
sports_centre: Спартыўны цэнтр
swimming_pool: Плавальны басейн
track: Бегавая дарожка
water_park: Аквапарк
+ "yes": Забавы
+ man_made:
+ lighthouse: Маяк
+ pipeline: Трубаправод
+ tower: Вежа
+ works: Фабрыка
+ "yes": Штучнае
military:
airfield: Ваенны аэрадром
barracks: Казармы
forest: Лес
geyser: Гейзер
glacier: Ляднік
+ grassland: Луг
heath: Здароўе
hill: Пагорак
island: Востраў
reef: Рыф
ridge: Хрыбет
rock: Скала
+ saddle: Перавал
+ sand: Пясок
scree: Абсып
scrub: Кустарнік
spring: Крыніца
wood: Пушча
office:
accountant: Бухгалтар
+ administrative: Aдміністрацыя
architect: Архітэктар
company: Кампанія
employment_agency: Агенцтва занятасці
travel_agent: Турыстычнае агенцтва
"yes": Офіс
place:
+ allotments: Сады-агароды
+ block: Блок
airport: Аэрапорт
city: Горад
country: Краіна
town: Горад
unincorporated_area: Загарадная зона
village: Вёска
+ "yes": Месца
railway:
abandoned: Закінутая чыгунка
construction: Будаўніцтва чыгункі
spur: Чыгуначнае разгалінаванне
station: Чыгуначны вакзал
stop: Чыгуначны прыпынак
- subway: СÑ\82анÑ\86Ñ\8bÑ\8f метро
+ subway: Ð\9cетро
subway_entrance: Уваход у метро
switch: Чыгуначная стрэлка
tram: Трамвай
"yes": Крама
tourism:
alpine_hut: Альпійская хатка
+ apartment: Кватэра
artwork: Інсталяцыя
attraction: Цікавосць
bed_and_breakfast: Ложак і сняданак
camp_site: Турбаза
caravan_site: Пляцоўка для аўтадамоў
chalet: Шале
+ gallery: Галерэя
guest_house: Гасцявы дом
hostel: Хостэл
hotel: Гатэль
wadi: Сухое рэчышча
waterfall: Вадаспад
weir: Плаціна
+ "yes": Водны маршрут
admin_levels:
level2: Мяжа краіны
level4: Дзяржаўная мяжа
results:
no_results: Нічога не знойдзена
more_results: Больш вынікаў
- distance:
- one: прыкладна 1 км
- zero: менш 1 км
- other: прыкладна %{count} км
- direction:
- south_west: паўднёва-заходн.
- south: паўдн.
- south_east: паўднёва-ўсходн.
- east: усходн.
- north_east: паўночна-ўсходн.
- north: паўночн.
- north_west: паўднева-заходн.
- west: заходн.
layouts:
logo:
alt_text: Лагатып OpenStreetMap
foreign:
title: Пра гэты пераклад
text: У выпадку супярэчнасці паміж гэтай перакладзенай старонкай і %{english_original_link},
- ангелÑ\8cская старонка павінна мець прыярытэт
- english_link: ангелÑ\8cскім арыгіналам
+ англÑ\96йская старонка павінна мець прыярытэт
+ english_link: англÑ\96йскім арыгіналам
native:
title: Пра гэтую старонку
- text: Ð\92Ñ\8b пÑ\80аглÑ\8fдаеÑ\86е ангелÑ\8cÑ\81кÑ\83Ñ\8e вÑ\8dÑ\80Ñ\81Ñ\96Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\96 аÑ\9eÑ\82аÑ\80Ñ\81кÑ\96Ñ\85 пÑ\80авоÑ\9e. Вы можаце
+ text: Ð\92Ñ\8b пÑ\80аглÑ\8fдаеÑ\86е англÑ\96йÑ\81кÑ\83Ñ\8e веÑ\80Ñ\81Ñ\96Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\96 пÑ\80а аÑ\9eÑ\82аÑ\80Ñ\81кÑ\96Ñ\8f пÑ\80авÑ\8b. Вы можаце
вярнуцца да %{native_link} гэтай старонкі ці спыніць чытанне пра аўтарскія
правы і %{mapping_link}.
native_link: беларуская версія
mapping_link: пачаць маляваць карту
legal_babble:
title_html: Аўтарскія правы і ліцэнзія
- intro_1_html: Дадзеныя праекту OpenStreetMap распаўсюджваюцца па ліцэнзіі <a
- href="http://opendatacommons.org/licenses/odbl/1.0/">Open Data Commons Open
- Database License</a> (ODbL).
+ intro_1_html: |-
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> - гэта <i>адкрытыя дадзеныя</i>, што распаўсюджваюцца па ліцэнзіі <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) сіламі <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: "Вы можаце капіяваць, распаўсюджваць, перадаваць і змяняць нашыя
\ дадзеныя да той пары пакуль Вы спасылаецеся на OpenStreetMap і яе ўдзельнікаў.
Калі Вы змяняеце ці выкарыстоўваеце нашыя дадзеныя, Вы можаце распаўсюджваць
alt: Прыклад таго, як трэба спасылацца на OpenStreetMap на старонцы
title: Прыклад спасылкі
more_title_html: Даведацца больш
- more_1_html: Даведайцеся больш аб выкарыстанні нашых дадзеных і аб тым, як паказваць
- наÑ\81 Ñ\8fк кÑ\80Ñ\8bнÑ\96Ñ\86Ñ\83 паÑ\85оджаннÑ\8f дадзенÑ\8bÑ\85 Ñ\83 <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">адказаÑ\85
- па прававыя пытанні</a>.
+ more_1_html: |-
+ Ð\94аведайÑ\86еÑ\81Ñ\8f болÑ\8cÑ\88 аб вÑ\8bкаÑ\80Ñ\8bÑ\81Ñ\82аннÑ\96 наÑ\88Ñ\8bÑ\85 дадзенÑ\8bÑ\85 Ñ\96 аб Ñ\82Ñ\8bм, Ñ\8fк паказваÑ\86Ñ\8c наÑ\81 Ñ\8fк кÑ\80Ñ\8bнÑ\96Ñ\86Ñ\83 паÑ\85оджаннÑ\8f дадзенÑ\8bÑ\85 на <a
+ href="http://osmfoundation.org/Licence">старонцы OSMF Licence</a> і <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">адказах на прававыя пытанні</a>.
more_2_html: Хоць дадзеныя OpenStreetMap з'яўляецца адкрытымі дадзенымі, мы
не ў стане прадастаўляць бясплатны картаграфічны API для іншых распрацоўнікаў.
Азнаёмціся з нашымі <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Правіламі
contributors_intro_html: 'Нашымі ўдзельнікамі з''яўляюцца тысячы людзей. Мы
таксама ўключаем дадзеныя ад нацыянальных картаграфічных агенцтваў, якія распаўсюджваюцца
на ўмовах адкрытых ліцэнзій, сярод іх:'
- contributors_at_html: |-
- <strong>Аўстрыя</strong>: Утрымлівае звесткі
- <a href="http://data.wien.gv.at/">горада Вены</a> на ўмовах
- <a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC BY</a>, <a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/правілы выкарыстання API/weitereinformationen/паслугі/wmsdienste.htm">зямлі Форарльберг</a>
- зямли Тыроль (на ўмовах <a href="http://www.tirol.gv.at/applikationen/e-Government/data/nutzungsbedingungen/">CC BY AT з дадаткамі</a>).
+ contributors_at_html: "<strong>Аўстрыя</strong>: Утрымлівае звесткі\n<a href=\"http://data.wien.gv.at/\">горада
+ Вены</a> на ўмовах\n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC
+ BY</a>, <a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">зямлі
+ Форарльберг</a> і \nзямлі Тыроль (на ўмовах <a href=\"http://www.tirol.gv.at/applikationen/e-Government/data/nutzungsbedingungen/\">CC
+ BY AT з дадаткамі</a>)."
contributors_ca_html: |-
<strong>Канада</strong>: Утрымлівае звесткі
GeoBase®, GeoGratis (© Дэпартамента прыродных рэсурсаў
contributors_nz_html: |-
<strong>Новая Зеландыя</strong>: Утрымлівае звесткі пра
зямельныя рэсурсы Новай Зэляндыі. Crown Copyright reserved.
+ contributors_si_html: '<strong>Славенія</strong>: змяшчае дадзеныя <a href="http://www.gu.gov.si/en/">Геадэзічнай
+ управы</a> і <a href="http://www.mkgp.gov.si/en/">Міністэрства сельскай гаспадаркі,
+ лясной гаспадаркі і харчавання</a> (публічная інфармацыя Славеніі).'
contributors_za_html: |-
<strong>Паўднёвая Афрыка</strong>: Змяшчае дадзеныя з
<a href="http://www.ngi.gov.za/">Chief Directorate: National Geo-Spatial Information</a>, State copyright reserved.
азнаёмціся з нашым <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">парадкам
выдалення такіх дадзеных</a> або скарыстайцеся непасрэдна нашай <a href="http://dmca.openstreetmap.org/">старонкай
для онлайн зваротаў</a>.
+ trademarks_title_html: <span id="trademarks"></span>Таварныя знакі
+ trademarks_1_html: OpenStreetMap і лагатып з лупаю з'яўляюцца зарэгістраванымі
+ таварнымі знакамі фонду OpenStreetMap. Калі ў вас есць пытанні аб выкарыстанні
+ знакаў, калі ласка, адпраўце Вашыя пытанні <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">рабочай
+ групе па ліцэнзіі</a>.
welcome_page:
title: Вітаем!
introduction_html: Вітаем у OpenStreetMap, свабоднай і даступнай для рэдагавання
можаце выкарыстоўваць для рэдагавання карты.
node_html: <Strong>Вузел (node)</strong> - гэта кропка на карце, напрыклад,
рэстаран ці дрэва.
- way_html: <Strong>Ð\9aÑ\80Ñ\8bвая (way)</strong> - гэта лінія або многавугольнік, напрыклад,
+ way_html: <Strong>Ð\9bÑ\96нÑ\96я (way)</strong> - гэта лінія або многавугольнік, напрыклад,
дарогі, рэкі, азёры або будынкі.
tag_html: |-
- <strong>ЦÑ\8dÑ\82лÑ\96к (tag)</strong> - гÑ\8dÑ\82а Ñ\8dлеменÑ\82 апÑ\96Ñ\81аннÑ\8f вÑ\83зла або кÑ\80Ñ\8bвой, напрыклад,
+ <strong>ЦÑ\8dÑ\82лÑ\96к (tag)</strong> - гÑ\8dÑ\82а Ñ\8dлеменÑ\82 апÑ\96Ñ\81аннÑ\8f вÑ\83зла або лÑ\96нÑ\96Ñ\96, напрыклад,
назва рэстарана або абмежаванне хуткасці на дарозе.
+ rules:
+ title: Правілы!
+ paragraph_1_html: У OpenStreetMap есьць некалькі фармальных правілаў, але мы
+ чакаем, што ўсе ўдзельнікі будуць супрацоўнічаць і мець зносіны з супольнасцю.
+ Калі вы плануеце нейкія дзеянні, па-за рэдагаваннем ўручную, калі ласка, прачытайце
+ і выконвайце рэкамендацыі па <a href="http://wiki.openstreetmap.org/wiki/Import/Guidelines">Імпарту</a>
+ і <a href="http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct">Аўтаматызаваных
+ Праўках</a>.
questions:
title: Ёсць пытанні?
paragraph_1_html: "OpenStreetMap мае розныя рэсурсы для атрымання інфармацыі
url: /welcome
title: Вітаем у OSM
description: Пачніце з гэтага кароткага кіраўніцтва, што ахоплівае асновы OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+ title: Дапаможнік для пачаткоўцаў
+ description: Супольнасць падтрымлівае дапаможнік для пачаткоўцаў.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Задаць пытанне або знайсці адказы на сайце пытанняў і адказаў OSM.
+ mailing_lists:
+ title: Рассылкі
+ description: Задайце пытанне ці далучыцеся да абмеркавання цікавых тэм на шырокім
+ коле тэматычных або рэгіянальных спісаў рассылкі.
+ forums:
+ title: Форумы
+ description: Пытанні і абмеркаванні для тых, хто аддае перавагу інтэрфейсу ў
+ стылі дошкі аб'яў.
+ irc:
+ title: IRC
+ description: Інтэрактыўны чат на розных мовах і на розныя тэмы.
+ switch2osm:
+ title: switch2osm
+ description: Дапамога кампаніям і арганізацыям у пераходзе на карты OpenStreetMap
+ і іншыя паслугі.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
новых прадуктаў, вы можаце распаўсюджваць вынік толькі па той жа ліцэнзіі. Глядзіце
старонку <a href='%{copyright_path}'>аўтарскія правы і \nліцэнзія</a>, каб атрымаць
падрабязную інфармацыю."
+ legal_title: Прававыя пытанні
+ legal_html: |-
+ Гэты сайт і многія іншыя звязаныя паслугі фармальна кіруюцца <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF) ад імя супольнасці.
+ <br>
+ Калі ласка, <a href="http://osmfoundation.org/Contact">звярніцеся да OSMF</a>, калі ў вас есць ліцэнзійныя, аўтарскія ці іншыя прававыя пытанні і праблемы.
partners_title: Партнёры
notifier:
diary_comment_notification:
subject: '[OpenStreetMap] Запыт на змену пароля'
lost_password_plain:
greeting: Прывітанне,
- hopefully_you: Хтосьці (спадзяемся, што вы) запытаў змену пароля для рахунку
- на openstreetmap.org, які выкарыстоўвае гэты адрас электроннай пошты.
+ hopefully_you: Хтосьці (спадзяемся, што вы) запытаў змену пароля для рахунка
+ на openstreetmap.org, прывязанага да гэтага адраса электроннай пошты.
click_the_link: Калі гэта вы, калі ласка, перайдзіце па спасылцы, паказанай
ніжэй, каб змяніць ваш пароль.
lost_password_html:
greeting: Прывітанне,
- hopefully_you: Хтосьці (спадзяемся, што вы) запытаў змену пароля для рахунку
- на openstreetmap.org, які выкарыстоўвае гэты адрас электроннай пошты.
+ hopefully_you: Хтосьці (магчыма, вы) запытаў змену пароля для рахунка на openstreetmap.org,
+ які выкарыстоўвае гэты адрас электроннай пошты.
click_the_link: Калі гэта вы, калі ласка, перайдзіце па спасылцы, паказанай
ніжэй, каб змяніць ваш пароль.
note_comment_notification:
Вы можаце <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">загрузіць
Flash-плэер з Adobe.com</a>. Існуюць і <a href="http://wiki.openstreetmap.org/wiki/Editing">іншыя
магчымасці</a> для рэдагавання OpenStreetMap.
- potlatch_unsaved_changes: You have unsaved changes. (To save in Potlatch, you
- should deselect the current шлях ці point, if editing in list mode, ці click
- save if you have a save button.)
+ potlatch_unsaved_changes: Маюцца незахаваныя змены. (Для захавання ў Potlatch
+ зніміце вылучэнне з лініі або кропкі, калі рэдагуеце ў «жывым» рэжыме, альбо
+ націсніце кнопку «захаваць», калі вы ў рэжыме адкладзенага захавання.)
potlatch2_not_configured: Potlatch 2 не быў наладжаны. Калі ласка, паглядзіце
http://wiki.openstreetmap.org/wiki/The_Rails_Port
potlatch2_unsaved_changes: Вы маеце незахаваныя змены. (Каб захаваць у Potlatch
close: Зачыніць
search:
search: Пошук
+ get_directions: Пракласці маршрут
+ get_directions_title: Знайсці маршрут паміж двума кропкамі
+ from: Старт
+ to: Фініш
where_am_i: Дзе я?
where_am_i_title: Апісаць бягучае месцазнаходжанне з дапамогай пошукавай сістэмы
key:
entry:
motorway: Аўтамагістраль
trunk: Шаша
- primary: Ð\9fеÑ\80Ñ\88аÑ\81ная дарога
+ primary: Ð\90Ñ\81ноÑ\9eная дарога
secondary: Другасная дарога
unclassified: Некласіфікаваная дарога
unsurfaced: Дарога без пакрыцця
oauth:
oauthorize:
title: Прадастаўленне доступу да Вашага рахунка
- request_access: Дастасаванне %{app_name} патрабуе доступ да Вашага рахунку,
- %{user}. Калі ласка, праверце, ці Вы жадаеце, каб дастасаванне мела наступныя
- магÑ\87Ñ\8bмаÑ\81Ñ\86Ñ\96. Ð\92Ñ\8b можаÑ\86е вÑ\8bбÑ\80аÑ\86Ñ\8c лÑ\8eбÑ\83Ñ\8e колÑ\8cкаÑ\81Ñ\86Ñ\8c.
+ request_access: Дастасаванне %{app_name} патрабуе доступ да Вашага рахунка,
+ %{user}. Калі ласка, праверце, ці хочаце Вы, каб дастасаванне мела наступныя
+ магÑ\87Ñ\8bмаÑ\81Ñ\86Ñ\96. Ð\92Ñ\8b можаÑ\86е вÑ\8bбÑ\80аÑ\86Ñ\8c колÑ\8cкÑ\96 Ñ\85оÑ\87аÑ\86е.
allow_to: 'Дазволіць кліенцкаму дастасаванню:'
allow_read_prefs: чытаць Вашыя налады карыстальніка.
allow_write_prefs: змяняць Вашыя налады ўдзельніка.
password: 'Пароль:'
openid: '%{logo} OpenID:'
remember: Памятаць мяне
- lost password link: Згубліл пароль?
+ lost password link: Згубілі пароль?
login_button: Увайсці
register now: Зарэгістравацца зараз
with username: 'Ужо маеце рахунак OpenStreetMap? Калі ласка, увайдзіце ў сістэму
з Вашым іменем удзельніка і паролем:'
- with openid: 'Для ўваходу можаце выкарыстаць Ваш OpenID:'
+ with external: 'Для альтэрнатыўнага ўваходу, залагіньцеся цераз:'
new to osm: Упершыню на OpenStreetMap?
to make changes: Каб змяняць дадзеныя OpenStreetMap, вы павінны мець асабісты
рахунак.
create account minute: Стварыце рахунак. Гэта зойме ўсяго адну хвіліну.
- no account: Не маеце асабістага рахунку?
+ no account: Не маеце асабістага рахунка?
account not active: Прабачце, ваш рахунак пакуль не актывізаваны.<br />Калі
- ласка, націсніце на адпаведную спасылку ў лісце пацверджання рахунку, каб
- актывізаваць яго, ці <a href="%{reconfirm}">запытаць новы ліст-пацверджанне
+ ласка, націсніце на адпаведную спасылку ў лісце пацвярджэння рахунка, каб
+ актывізаваць яго, ці <a href="%{reconfirm}">запытаць новы ліст-пацвярджэнне
на электронную пошту</a>.
account is suspended: Прабачце, але Ваш рахунак быў заблакаваны з-за падазронай
актыўнасці.<br />Калі ласка, звяжыцеся з <a href="%{webmaster}">вэбмайстрам</a>
калі Вы жадаеце гэта аспрэчыць.
auth failure: Прабачце, немагчыма увайсці з такім адрасам і паролем.
- openid missing provider: Прабачце, немагчыма звязацца з Вашым правайдэрам OpenID
- openid invalid: Прабачце, здаецца Ваш OpenID уведзены няслушна
openid_logo_alt: Увайсці з дапамогай OpenID
- openid_providers:
+ auth_providers:
openid:
title: Уваход праз OpenID
- alt: Увайсці з дапамогай OpenID URL
+ alt: Уваход праз OpenID URL
google:
title: Уваход праз Google
alt: Уваход праз Google OpenID
+ facebook:
+ title: Увайсці праз Facebook
+ alt: Увайсці праз рахунак Facebook
+ windowslive:
+ title: Увайсці праз Windows live
+ alt: Увайсці праз рахунак Windows Live
yahoo:
title: Уваход праз Yahoo
- alt: Увайсці з дапамогай Yahoo OpenID
+ alt: Уваход праз Yahoo OpenID
wordpress:
title: Уваход праз Wordpress
alt: Уваход праз Wordpress OpenID
aol:
title: Уваход праз AOL
- alt: Увайсці з дапамогай AOL OpenID
+ alt: Уваход праз AOL OpenID
logout:
title: Выйсці
heading: Выйсці з OpenStreetMap
display name: 'Бачнае імя:'
display name description: Ваша імя, якое будзе бачнае ўсім. Вы можаце змяніць
яго потым ў Вашых настройках.
- openid: '%{logo} OpenID:'
+ external auth: 'Аўтэнтыфікацыя праз:'
password: 'Пароль:'
confirm password: 'Пацверджанне паролю:'
- use openid: Для ўваходу можаце выкарыстаць %{logo} OpenID
- openid no password: Падчас выкарыстання OpenID пароль не патрэбны, але некаторыя
- дадаÑ\82ковÑ\8bÑ\8f Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8b Ñ\86Ñ\96 Ñ\81еÑ\80вÑ\8dÑ\80 могÑ\83Ñ\86Ñ\8c Ñ\8fго Ñ\81пÑ\8bÑ\82аÑ\86Ñ\8c.
- openid association: |-
- <p>Ваш OpenID пакуль ня звязаны з рахункам OpenStreetMap.</p>
+ use external auth: 'Для альтэрнатыўнага ўваходу, залагіньцеся цераз:'
+ auth no password: Пры выкарыстанні знешняй аўтэнтыфікацыі пароль не патрэбны,
+ але длÑ\8f некаÑ\82оÑ\80Ñ\8bÑ\85 дадаÑ\82ковÑ\8bÑ\85 Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83менÑ\82аÑ\9e або Ñ\81еÑ\80веÑ\80аÑ\9e Ñ\91н Ñ\83Ñ\81Ñ\91 Ñ\8fÑ\88Ñ\87Ñ\8d Ñ\81паÑ\82Ñ\80Ñ\8dбÑ\96Ñ\86Ñ\86а.
+ auth association: |-
+ <p>Ваш ID яшчэ не звязаны з рахунакам на OpenStreetMap.</p>
<ul>
- <li>Ð\9aалÑ\96 Ð\92Ñ\8b Ñ\9eпеÑ\80Ñ\88Ñ\8bнÑ\8e на OpenStreetMap, калÑ\96 лаÑ\81ка, Ñ\81Ñ\82ваÑ\80Ñ\8bÑ\86е новÑ\8b Ñ\80аÑ\85Ñ\83нак з дапамогай Ñ\84оÑ\80мÑ\8b пададзенай ніжэй.</li>
+ <li>Ð\9aалÑ\96 вÑ\8b паÑ\87аÑ\82ковеÑ\86 Ñ\83 OpenStreetMap, калÑ\96 лаÑ\81ка, Ñ\81Ñ\82ваÑ\80Ñ\8bÑ\86е новÑ\8b Ñ\80аÑ\85Ñ\83нак, вÑ\8bкаÑ\80Ñ\8bÑ\81Ñ\82оÑ\9eваÑ\8eÑ\87Ñ\8b Ñ\84оÑ\80мÑ\83 ніжэй.</li>
<li>
- Калі Вы ўжо маеце рахунак, Вы можаце ўвайсці ў сістэму
- з Вашым іменем удзельніка і паролем, а потым звязаць яго з Вашым рахункам
- OpenID на старонцы наладаў Вашага профілю.
- </li>
+ Калі ў вас ужо ёсць рахунак, вы можаце ўвайсці ў яго,
+ выкарыстоўваючы вашыя імя карыстальніка і пароль, і асацыяваць свой рахунак
+ з вашым ID у наладах карыстальніка.
+ </li>
</ul>
continue: Зарэгістравацца
terms accepted: Дзякуй за прыняцце новых умоў ўдзелу!
current email address: 'Бягучы адрас электроннай пошты:'
new email address: 'Новы адрас электроннай пошты:'
email never displayed publicly: (ніколі нікому не паказваецца)
+ external auth: 'Знешняя Аўтэнтыфікацыя:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: што гэта?
public editing:
лісце і вы зможаце пачаць маляваць карту.
press confirm button: Націсніце кнопку, каб актывізаваць рахунак.
button: Пацвердзіць
+ success: Рахунак пацверджаны, дзякуй за рэгістрацыю!
already active: Гэты ўліковы рахунак ужо пацверджаны.
unknown token: Тэрмін дзеяння кода пацверджання ўжо прайшоў ці ён не існуе.
reconfirm_html: Калі вам трэба зноў даслаць пацверджанне па электроннай пошце,
heading: Пацвердзіць змену паштовага адрасу
press confirm button: Націсніце кнопку, каб пацвердзіць ваш новы паштовы адрас.
button: Пацвердзіць
- success: Ð\92аÑ\88 адÑ\80аÑ\81 паÑ\86веÑ\80джанÑ\8b, дзÑ\8fкÑ\83й за Ñ\80Ñ\8dгÑ\96Ñ\81Ñ\82Ñ\80аÑ\86Ñ\8bÑ\8e!
+ success: Ð\97мена вамÑ\96 адÑ\80аÑ\81а Ñ\8dлекÑ\82Ñ\80оннай поÑ\88Ñ\82Ñ\8b паÑ\86веÑ\80джана!
failure: Паштовы адрас ужо быў пацверджаны гэтым токенам.
+ unknown_token: Тэрмін дзеяння кода пацверджання ўжо прайшоў ці ён не існуе.
set_home:
flash success: Дамашняе месцазнаходжанне паспяхова запісана
go_public:
<p>
Гэтае рашэнне можа быць хутка перагледжана адміністратарам, ці Вы можаце звязацца з %{webmaster}, калі жадаеце гэта абмеркаваць.
</p>
+ auth_failure:
+ connection_failed: Злучэнне з крыніцай аўтэнтыфікацыі не атрымалася
+ invalid_credentials: Хібныя дадзеныя аўтарызацыі
+ no_authorization_code: Няма кода аўтарызацыі
+ unknown_signature_algorithm: Невядомы алгарытм подпісу
+ invalid_scope: Няправільны дыяпазон
user_role:
filter:
not_an_administrator: Толькі адміністратары могуць кіраваць ролямі карыстальнікаў,
heading: '%{block_on} заблакіраваны %{block_by}'
time_future: Заканчваецца праз %{time}
time_past: Скончылася %{time} таму
+ created: Створаны
+ ago: '%{time} таму'
status: Статус
show: Паказаць
edit: Рэдагаваць
link: Спасылка ці HTML
long_link: Спасылка
short_link: Кароткая спасылка
+ geo_uri: Геа URI
embed: HTML
- custom_dimensions: Ð\92Ñ\8bбÑ\80аÑ\86Ñ\8c памеÑ\80 Ñ\9eручную
+ custom_dimensions: Ð\90бÑ\80аÑ\86Ñ\8c памеÑ\80 Ñ\83ручную
format: 'Фармат:'
scale: 'Маштаб:'
image_size: На выяве будзе звычайная карта памерам
createnote_disabled_tooltip: Наблізце, каб дадаць заўвагу на карту
map_notes_zoom_in_tooltip: Наблізце, каб убачыць заўвагі на карце
map_data_zoom_in_tooltip: Павялічце, каб убачыць картаграфічныя дадзеныя
- queryfeature_tooltip: Ð\90Ñ\82Ñ\80Ñ\8bманне аб’ектаў
- queryfeature_disabled_tooltip: Ð\9dаблÑ\96зÑ\96Ñ\86еÑ\81Ñ\8f длÑ\8f аÑ\82Ñ\80Ñ\8bманнÑ\8f аб'ектаў
+ queryfeature_tooltip: Ð\9fоÑ\88Ñ\83к аб’ектаў
+ queryfeature_disabled_tooltip: Ð\9dаблÑ\96зÑ\96Ñ\86еÑ\81Ñ\8f длÑ\8f поÑ\88Ñ\83кÑ\83 аб'ектаў
changesets:
show:
comment: Каментаваць
comment: Каментаваць
edit_help: Перамясціце карту і наблізце месца, якое вы хочаце рэдагаваць, затым
націсніце тут.
+ directions:
+ engines:
+ graphhopper_bicycle: Ровар (GraphHopper)
+ graphhopper_foot: Пешаход (GraphHopper)
+ mapquest_bicycle: Ровар (MapQuest)
+ mapquest_car: Аўтамабіль (MapQuest)
+ mapquest_foot: Пешаход (MapQuest)
+ osrm_car: Аўтамабіль (OSRM)
+ directions: Маршрут
+ distance: Адлегласць
+ errors:
+ no_route: Не атрымалася знайсці маршрут паміж двума гэтымі месцамі.
+ no_place: Прабачце - не магу знайсці гэта месца.
+ instructions:
+ continue_without_exit: Працягвайце рух па %{name}
+ slight_right_without_exit: Плаўна павярніце направа на %{name}
+ turn_right_without_exit: Павярніце направа на %{name}
+ sharp_right_without_exit: Рэзка павярніце направа на %{name}
+ uturn_without_exit: Развярніцеся на %{name}
+ sharp_left_without_exit: Рэзка павярніце налева на %{name}
+ turn_left_without_exit: Павярніце налева на %{name}
+ slight_left_without_exit: Плаўна павярніце налева на %{name}
+ via_point_without_exit: (праз кропку)
+ follow_without_exit: Рухайцеся па %{name}
+ roundabout_without_exit: На кругавым руху выберыце %{name}
+ leave_roundabout_without_exit: Выехаць з кальца - %{name}
+ stay_roundabout_without_exit: Заставацца на кальцы - %{name}
+ start_without_exit: Пачніце ў канцы %{name}
+ destination_without_exit: Вы прыбылі ў месца прызначэння
+ against_oneway_without_exit: Рухайцеся супраць аднабаковага руху па %{name}
+ end_oneway_without_exit: Канец аднабаковага руху на %{name}
+ roundabout_with_exit: Пакіньце кальцавую развязку праз выезд %{exit} на %{name}
+ unnamed: без назвы
+ courtesy: Маршрут прадастаўлены %{link}
+ time: Час
query:
node: Вузел
- way: Ð\9aÑ\80Ñ\8bвая
- relation: СÑ\83вÑ\8fзÑ\8c
+ way: Ð\9bÑ\96нÑ\96я
+ relation: Ð\90дноÑ\81Ñ\96нÑ\8b
nothing_found: Аб’екты не знойдзены
error: 'Памылка сувязі %{server}: %{error}'
timeout: Тайм-аўт падключэння да %{server}
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Fungarr
chair_lift: fungador
drag_lift: Teleski
+ gondola: Funlogell
station: Arsav funlogell
aeroway:
aerodrome: Nijva
taxiway: Roudenn evit an taksioù
terminal: Termenva
amenity:
+ animal_shelter: Goudor evit al loened
arts_centre: Kreizenn arz
atm: Bilhedaouer
bank: Ti-bank
bicycle_parking: Parklec'h evit ar beloioù
bicycle_rental: Feurmiñ beloioù
biergarten: Liorzh ar bier
+ boat_rental: Feurmiñ bagoù
brothel: Bordel
bureau_de_change: Burev eskemm
bus_station: Arsav bus
car_wash: Gwalc'hiñ kirri
casino: Kazino
charging_station: Savlec'h adkargañ
+ childcare: Diwaller bugale
cinema: Sinema
clinic: Klinikenn
+ clock: Horolaj
college: Skol-veur pe skol-uhel
community_centre: Sal liezimplij
courthouse: Lez-varn
food_court: ↓Predva
fountain: Feunteun
fuel: Trelosk
+ gambling: C'hoari
grave_yard: Bered
gym: Fitness/embregerezh-korf
health_centre: Kreizenn yec'hed
library: Levraoueg
market: Marc'had
marketplace: Marc'hallac'h
+ monastery: Manati
+ motorcycle_parking: Parklec'h evit marc'hoù-tan
nightclub: Klub-noz
nursery: Spluseg
nursing_home: Ti yec'hed
office: Burev
parking: Parklec'h
+ parking_entrance: Mont tre ur parklec'h
pharmacy: Apotikerezh
place_of_worship: Lec'h azeuliñ
police: Polis
veterinary: Surjianerezh evit al loened
village_hall: Sal ar gumun
waste_basket: Pod-lastez
+ waste_disposal: Skarzhañ al lastez
youth_centre: Kreizenn evit ar re yaouank
boundary:
administrative: Bevennoù melestradurel
"yes": Pont
building:
"yes": Savadur
+ craft:
+ brewery: Breserezh
+ carpenter: Kalvez
+ electrician: Tredanour
+ gardener: Liorzhour
+ painter: Liver
+ photographer: Luc'hskeudenner
+ plumber: Plomer
+ shoemaker: Kere
+ tailor: Kemener
+ "yes": Stal artizanelezh
emergency:
+ ambulance_station: Sanailh ambulañsoù
+ defibrillator: Difibrilator
+ landing_site: Tachenn bradañ trumm
phone: Pellgomzer evit an trummadoù
highway:
+ abandoned: Hent-houarn dilezet
bridleway: Hent evit ar varc'hegerien
bus_guideway: Roudenn vus heñchet
bus_stop: Arsav bus
construction: Chanter gourhent
cycleway: Roudenn divrodegoù
+ elevator: Pignerez
emergency_access_point: Poent moned trummadoù
footway: Gwenodenn evit an droadeien
ford: Roudour
tertiary: Hent trede renk
tertiary_link: Hent trede renk
track: Roudenn
+ traffic_signals: Gouleier
trail: Roudenn
trunk: Hent-tizh
trunk_link: Hent-tizh
unclassified: Hent dirumm
unsurfaced: Hent dizolo
+ "yes": Hent
historic:
archaeological_site: Lec'hienn henoniel
battlefield: Tachenn emgann
boundary_stone: Bonn harzoù
- building: Savadur
+ building: Savadur istorel
+ bunker: Bunker
castle: Kastell
church: Iliz
+ city_gate: Porzh kêr
citywalls: Murioù kêr
fort: Kreñv
+ heritage: Lec'hienn ar glad
house: Ti
icon: Arlun
manor: Maner
memorial: Kounlec'h
mine: Mengleuz
monument: Monumant
+ roman_road: Hent roman
ruins: Dismantroù
+ stone: Roc'h
tomb: Bez
tower: Tour
wayside_cross: Kroaz
wayside_shrine: Ti-pediñ
wreck: Peñse
+ junction:
+ "yes": Kej
landuse:
allotments: Liorzhoù familh
basin: Poull
road: Takad hent
village_green: Takad natur foran
vineyard: Gwinieg
+ "yes": Implij an douaroù
leisure:
beach_resort: Kêr-gouronkañ
bird_hide: Bod evned
+ club: Klub
common: Tachennoù foran
+ dog_park: Park chas
fishing: Takad pesketa
+ fitness_centre: Kreizenn fitness
fitness_station: ↓Atalier da embreger ar c'horf
garden: Liorzh
golf_course: Tachenn golf
+ horse_riding: Marc'hegezh
ice_rink: Poull-ruzikat
marina: Porzh-bageal
miniature_golf: Golfig
swimming_pool: Poull-neuial
track: Roudenn redek
water_park: Kreizenn dour
+ "yes": Diduamantoù
+ man_made:
+ lighthouse: Tour-tan
+ pipeline: Eoulsan
+ tower: Tour
+ works: Labouradeg
+ "yes": Krouet gant Mab-den
military:
airfield: Nijva milourel
barracks: Kazarn
forest: Koadeg
geyser: Geiser
glacier: Skorneg
+ grassland: Pradenn
heath: Brug
hill: Torgenn
island: Enez
reef: Karreg
ridge: Kribenn
rock: Roc'h
+ saddle: Dibr
+ sand: Traezh
scree: Disac'hadur
scrub: Strouezh
spring: Lamm-dour
wood: Koad
office:
accountant: Kontour
+ administrative: Melestradur
architect: Ti-savour
company: Embregerezh
employment_agency: Ajañs evit al labour
travel_agent: Ajañs-veaj
"yes": Burev
place:
+ allotments: Liorzhoù tiegezhel
+ block: Blog
airport: Aerborzh
city: Meurgêr
country: Bro
town: Kêr
unincorporated_area: Takad diaoz
village: Kêriadenn
+ "yes": Lec'h
railway:
abandoned: Hent-houarn dilezet
construction: Hent-houarn war sevel
"yes": Stal
tourism:
alpine_hut: Bod menez
+ apartment: Ranndi
artwork: Oberenn arz
attraction: Tra zedennus
bed_and_breakfast: Bod ha boued
camp_site: Tachenn gampiñ
caravan_site: Tachenn karavanennoù
chalet: Ti-menez
+ gallery: Palier
guest_house: Ti herberc'h
hostel: Herberc'h
hotel: Leti
wadi: Oued
waterfall: Lamm-dour
weir: Stankell
+ "yes": Hent bageal
admin_levels:
level2: Bevenn ar vro
level4: Bevenn ar Stad
results:
no_results: N'eus bet kavet respont ebet
more_results: Muioc'h a zisoc'hoù
- distance:
- one: war-dro 1 km
- zero: nebeutoc'h eget 1 km
- other: war-dro %{count} km
- direction:
- south_west: mervent
- south: su
- south_east: gevred
- east: reter
- north_east: biz
- north: norzh
- north_west: gwalarn
- west: kornôg
layouts:
logo:
alt_text: Logo OpenStreetMap
ur wazh-dour, pe ur savadur.
tag_html: Ur <strong>valizenn</strong> zo ur roadenn diwar-benn ur skoulm pe
un hent, evel anv ur preti pe an tizh bevennet war un hent.
+ rules:
+ title: Reolennoù !
questions:
title: Traoù da c'houlenn ?
paragraph_1_html: Ezhomm ho peus sikour evit kartennaouiñ, pe n'eo ket sklaer
ho notennoù a sell ouzhoc''h'
your_changeset: '[OpenStreetMap] %{commenter} en deus addispleget unan eus
ho holladoù kemmoù krouet d''an %{time}'
+ commented_changeset: '%{commenter} en deus lezet un evezhiadenn war un hollad
+ cheñchamantoù kartenn emaoc''h oc''h evezhiañ, krouet gant %{changeset_author}
+ d''an %{time}'
partial_changeset_with_comment: gant an addispleg '%{changeset_comment}'
partial_changeset_without_comment: Hep evezhiadenn
+ details: Muioc'h a ditouroù war an holl cheñchamantoù e %{url}.
message:
inbox:
title: Boest resev
close: Serriñ
search:
search: Klask
+ get_directions: Kaout an tuioù
+ get_directions_title: Kavit an hentoù etre an daou boent
+ from: Eus
+ to: Da
where_am_i: Pelec'h emaon ?
where_am_i_title: Deskrivañ al lec'hiadur a-vremañ en ur implijout al lusker
enklask
register now: En em enskrivañ bremañ
with username: 'Ur gont OpenStreetMap hoc''h eus dija ? Digorit un dalc''h en
ur verkañ hoc''h anv implijer hag ho ker-tremen :'
- with openid: 'Gallout a rit ivez ober gant hoc''h OpenID evit kevreañ :'
new to osm: Nevez war OpenStreetMap ?
to make changes: Evit kemmañ roadennoù OpenStreetMap e rankit kaout ur gont.
create account minute: Krouiñ ur gont. Ne bad nemet ur vunutenn.
m'hoc'h eus c'hoant da gaozeal diwar-benn an dra-se.
auth failure: Ho tigarez, met n'eus ket bet gallet hoc'h anavezout gant an titouroù
pourchaset.
- openid missing provider: Ho tigarez, n'eus ket bet gallet mont e darempred gant
- ho pourvezer OpenID
- openid invalid: Ho tigarez, Evit doare eo stummet fall hoc'h OpenID
openid_logo_alt: Kevreañ gant un OpenID
- openid_providers:
- openid:
- title: Kevreañ gant OpenID
- alt: Kevreañ gant un OpenID URL
- google:
- title: Keverañ gant Google
- alt: Keverañ gant ur Google OpenID
- yahoo:
- title: Kevreañ gant Yahoo
- alt: Keverañ gant ur Yahoo OpenID
- wordpress:
- title: Kevreañ gant Wordpress
- alt: Kevreañ gant ur Wordpress OpenID
- aol:
- title: Kevreañ gant AOL
- alt: Kevreañ gant un AOL OpenID
logout:
title: Digevreañ
heading: Kuitaat OpenStreetMap
display name: 'Anv diskwelet :'
display name description: Emañ hoc'h anv implijer a-wel d'an holl. Se a c'hallit
cheñch diwezhatoc'h en ho penndibaboù.
- openid: '%{logo} OpenID :'
password: 'Ger-tremen :'
confirm password: 'Kadarnaat ar ger-tremen :'
- use openid: Gallout a rit ivez ober gant %{logo} OpenID evit kevreañ
- openid no password: Gant OpenID n'eo ket dav lakaat ur ger-tremen, kouskoude
- e c'hall un nebeud ostilhoù pe servijerioù zo kaout ezhomm eus unan.
- openid association: "<p>N'eo ket kevredet hoc'h OpenID gant ur gont OpenStreetMap
- evit c'hoazh.</p>\n<ul>\n <li>M'emaoc'h nevez deuet da OpenStreetMap, krouit
- ur gont nevez en ur ober gant ar furmskrid dindan.</li>\n <li>\n M'hoc'h
- eus ur gont dija e c'hallit kevreañ d'ho kont\n en ur ober gant hoc'h anv
- implijer hag ho ker-tremen a-raok kevrediñ ar gont \n gant hoc'h OpenID
- en hoc'h arventennoù implijer.\n </li>\n</ul>"
continue: En em enskrivañ
terms accepted: Trugarez deoc'h evit bezañ asantet da ziferadennoù nevez ar
c'henlabourer !
new email address: 'Chomlec''h postel nevez :'
email never displayed publicly: (n'eo ket diskwelet d'an holl morse)
openid:
- openid: 'OpenID :'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: petra eo se ?
public editing:
press confirm button: Pouezit war ar bouton kadarnaat amañ dindan evit gweredekaat
ho kont.
button: Kadarnaat
+ success: Kadarnaet eo ho kont, trugarez evit bezañ en em enskrivet !
already active: Kadarnaet eo bet ar gont-mañ c'hoazh.
unknown token: Diamzeret eo ar c'hod gwiriekaat pe n'eus ket anezhañ.
reconfirm_html: M'ho peus ezhomm da adkas ar postel kadarnaat, <a href="%{reconfirm}">klikit
comment: Evezhiadenn
edit_help: Dilec'hiit ar gartenn ha zoumit war ul lec'h a fell deoc'h aozañ, ha
neuze klikit amañ.
+ directions:
+ engines:
+ graphhopper_bicycle: Marc'h-houarn (GraphHopper)
+ graphhopper_foot: Troad (GraphHopper)
+ mapquest_bicycle: Marc'h-houarn (MapQuest)
+ mapquest_car: Karr (MapQuest)
+ mapquest_foot: Troad (MapQuest)
+ osrm_car: Karr(OSRM)
+ directions: Tuioù
+ distance: Hed
+ errors:
+ no_route: Ne c'haller ket kavout un hent etre an daou lec'h-mañ.
+ no_place: Ho tigarez, ne c'haller ket kavout al lec'h-mañ.
+ instructions:
+ unnamed: hep anv
+ courtesy: Hent a-berzh %{link}
+ time: Eur
query:
node: Skoulm
way: Hent
relation: Darempred
nothing_found: Arc'hweladur ebet kavet
error: Fazi o vont e daremmpred gant %{server}:%{error}
+ timeout: Amzer aet e-biou %{server}
redaction:
edit:
description: Deskrivadur
# Author: Edinwiki
# Author: KWiki
# Author: Maxmus
+# Author: Ruila
+# Author: Srdjan m
---
bs:
time:
no_comment: (bez komentara)
part_of: Dio od
download_xml: Preuzmi XML
- view_history: Prikaži historiju
+ view_history: Historija
view_details: Prikaži detalje
location: 'Lokacija:'
changeset:
results:
no_results: Nema pronađenih rezultata
more_results: Više rezultata
- distance:
- one: oko 1km
- zero: manje od 1km
- other: oko %{count}km
- direction:
- south_west: jugozapadno
- south: južno
- south_east: jugoistočno
- east: istočno
- north_east: sjeveroistočno
- north: sjeverno
- north_west: sjeverozapadno
- west: zapadno
layouts:
logo:
alt_text: OpenStreetMap logotip
href="http://opendatacommons.org/licenses/odbl/">Open Data
Commons Open Database License dozvolom</a> (ODbL).
intro_2_html: Slobodni ste kopirati, distribuirati, prenositi i adaptirati naše
- podatke, sve dok navodite OpenStreetMap i njegove doprinositelje kao izvor.
- Ukoliko izmijenite ili nadogradite naše podatke, možete distribuirati rezultate
- samo pod istom licencom. Puni <a href="http://opendatacommons.org/licenses/odbl/1.0/">pravni
- tekst</a> objašnjava vaša prava i odgovornosti.
+ podatke sve dok navodite OpenStreetMap i njegove doprinosioce kao izvor. Ako
+ izmijenite ili nadogradite naše podatke, možete distribuirati rezultate samo
+ pod istom licencom. Puni <a href="http://opendatacommons.org/licenses/odbl/1.0/">pravni
+ tekst</a> objašnjava Vaša prava i odgovornosti.
intro_3_html: |-
Kartografija u našim dijelovima karte, i naša dokumentacija, su licencirani pod <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative
Commons Attribution-ShareAlike 2.0</a> licencom (CC-BY-SA).
infringement_1_html: OSM doprinosioci se podsjećaju da nikada ne dodaju podatke
sa bilo kojeg izvora koji zadržava autorska prava (npr. Google Maps ili printane
karte) bez eksplicitne dozvole od strane autora.
- infringement_2_html: Ukoliko vjerujete da je zaštićeni materijal bio dodan bazi
- podataka OpenStreetMap ili ovom web sajtu, molimo da pogledate našu <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">proceduru
- skidanja</a> ili uložite prigovor direktno na našu <a href="http://dmca.openstreetmap.org/">online
- stranicu</a>.
+ infringement_2_html: Ako vjerujete da je zaštićeni materijal bio dodan bazi
+ podataka OpenStreetMapa ili ovoj veb-stranici, molimo da pogledate našu <a
+ href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">proceduru
+ skidanja</a> ili uložite prigovor direktno na našu <a href="http://dmca.openstreetmap.org/">stranicu</a>.
welcome_page:
title: Dobrodošli!
whats_on_the_map:
help_page:
welcome:
url: /dobrodošlica
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Bs:Beginners%27_guide
about_page:
next: Slijedeće
notifier:
subject: '[OpenStreetMap] Zahtjev za ponovnim postavljanjem lozinke'
lost_password_plain:
greeting: Zdravo,
- click_the_link: Ukoliko ste ovo Vi, kliknite na link ispod za ponovno postavljanje
+ click_the_link: Ako ste ovo Vi, kliknite na link ispod za ponovno postavljanje
lozinke.
lost_password_html:
greeting: Zdravo,
hopefully_you: Neko (moguće, Vi) je pitao za ponovno postavljanje lozinke na
njihovim e-mail adresama openstreetmap.org računa.
- click_the_link: Ukoliko ste ovo Vi, kliknite na link ispod za ponovno postavljanje
+ click_the_link: Ako ste ovo Vi, kliknite na link ispod za ponovno postavljanje
lozinke.
message:
inbox:
register now: Registrirajte se sada
with username: 'Već imate račun na OpenStreetMapu? Molimo da se prijavite s
Vašim korisničkim imenom i lozinkom:'
- with openid: 'Alternativno molimo koristite Vaš OtvoreniID da se prijavite:'
new to osm: Novi na OpenStreetMap?
to make changes: Da bi ste mijenjali OpenStreetMap podatke, morate imati korisnički
račun.
/>Molimo kontaktirajte <a href="%{webmaster}">webmastera</a> uoliko želite
da diskutujete o ovome.
auth failure: Žao mi je, ne možemo Vas prijaviti s ovim detaljima.
- openid missing provider: Žao nam je, ne možemo kontaktirati Vaš provider za
- OtvoreniID
- openid invalid: Žao nam je, čini se da je Vaš OpenID zlonamjeran
openid_logo_alt: Prijavite se sa OtvorenimID
- openid_providers:
- openid:
- title: Prijavite se sa otvorenimID
- alt: Prijavite se sa URL OtvorenogID
- google:
- title: Prijavite se sa Google računom
- alt: Prijavite se sa Google OtvorenimID
- yahoo:
- title: Prijavite se sa Yahoo računom
- alt: Prijavite se sa Yahoo OtvorenimID
- wordpress:
- title: Prijavite se sa Wordpress računom
- alt: Prijavite se sa Wordpress OtvorenimID
- aol:
- title: Prijavite se sa AOL računom
- alt: Prijavite se sa AOL OtvorenimID
logout:
title: Odjava
heading: Odjava iz OpenStreetMap
lost_password:
title: Izgubljena lozinka
heading: Zaboravljena lozinka?
- email address: 'E-mail adresa:'
+ email address: 'Adresa e-pošte:'
new password button: Ponovno postavljanje lozinke
help_text: Unesite e-mail adresu koju ste koristili za otvaranje računa i poslaćemo
Vam link kojim možete ponovo postaviti lozinku.
u najkraćem mogućem vremenu.
license_agreement: Kada potvrdite Vaš račun moraćete pristati na <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">Uslove
doprinosioca</a> .
- email address: 'E-mail adresa:'
+ email address: 'Adresa e-pošte:'
confirm email address: 'Potvrditi e-mail adresu:'
not displayed publicly: Nije javno prikazano (vidi <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
title="wiki privacy policy including section on email addresses">politiku
display name: 'Ime za prikaz:'
display name description: Vaše javno prikazano korisničko ime. Možete ga promjeniti
kasnije u postavkama.
- openid: '%{logo} OtvoreniID:'
password: 'Lozinka:'
confirm password: 'Potvrditi lozinku:'
- use openid: Kao alternativu, koristite %{logo} OtvoreniID za prijavu
- openid no password: Lozinka nije potrebna sa OtvorenimID, ali neki ekstra alati
- ili server je još uvijek mogu trebati.
- openid association: |-
- <p>Vaš OtvoreniID još nije povezan sa OpenStreetMap računom.</p>
- <ul>
- <li>Ukoliko ste novi na projektu OpenStreetMap, molimo napravite novi račun korištenjem formulara ispod.</li>
- <li>
- Ukoliko već imate račun, možete se prijaviti na Vaš račun korištenjem Vašeg korisničkog imena i lozinke i onda uvezati račun sa Vašim OtvorenimID u Vašim korisničkim podešavanjima.
- </li>
- </ul>
continue: Otvorite račun
terms accepted: Hvala za prihvatanje novih uslova za doprinosioce!
terms declined: Žao nam je da ste odlučili ne prihvatiti nove Uslove za doprinosioce.
ct declined: Odbijeno
ct accepted: Prihvaćeno prije %{ago}
latest edit: 'Najnovija izmjena %{ago}:'
- email address: 'E-mail adresa:'
+ email address: 'Adresa e-pošte:'
created from: 'Napravljeno iz:'
status: 'Stanje:'
spam score: 'Spam ocjena:'
new email address: 'Nova e-mail adresa:'
email never displayed publicly: (nikada se ne prikazuje javno)
openid:
- openid: OtvoreniID
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Šta je ovo?
public editing:
heading: Provjerite vaš email!
press confirm button: Pritisnuti potvrditi da bi aktivirali Vaš korisnički račun.
button: Potvrditi
+ success: Vaš račun je potvrđen, hvala na uključenju!
already active: Ovaj račun je već potvrđen.
unknown token: Taj kod za potvrdu je istekao ili ne postoji.
confirm_resend:
# Export driver: phpyaml
# Author: Aleator
# Author: Alvaro Vidal-Abarca
+# Author: Annamerida
# Author: El libre
# Author: Fitoschido
# Author: Gemmaa
# Author: Grondin
# Author: Jconstanti
# Author: Jmontane
+# Author: Macofe
# Author: Martorell
# Author: McDutchie
# Author: Micru
# Author: Nemo bis
# Author: PerroVerd
# Author: Pitort
+# Author: Ruila
# Author: SMP
# Author: Sim6
# Author: Solde
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Telefèric
chair_lift: Telecadira
drag_lift: Teleesquí
+ gondola: Telecabina
station: Estació de telefèric
aeroway:
aerodrome: Aeròdrom
taxiway: Carrer de rodada
terminal: Terminal
amenity:
+ animal_shelter: Refugi d'animals
arts_centre: Centre d'Art
atm: Caixer automàtic
bank: Banc
bicycle_parking: Aparcament de bicicletes
bicycle_rental: Lloguer de bicicletes
biergarten: Cervesseria a l'aire lliure
+ boat_rental: Lloguer d'embarcacions
brothel: Prostíbul
bureau_de_change: Oficina de canvi
bus_station: Estació d'autobusos
car_wash: Rentat de cotxes
casino: Casino
charging_station: Estació de recàrrega
+ childcare: Ludoteca
cinema: Cinema
clinic: Clínica
+ clock: Rellotge
college: Institut
community_centre: Centre Comunitari / Centre Cívic
courthouse: Jutjat
food_court: Àrea de restauració
fountain: Font
fuel: Benzinera
+ gambling: Jocs d'atzar
grave_yard: Cementiri
gym: Gimnàs
health_centre: Centre de Salut
library: Biblioteca
market: Mercat
marketplace: Mercat
+ monastery: Monestir
+ motorcycle_parking: Aparcament per a motos
nightclub: Club nocturn
nursery: Infantil
nursing_home: Llar d'Avis
office: Oficina
parking: Pàrquing
+ parking_entrance: Entrada d'aparcament
pharmacy: Farmàcia
place_of_worship: Lloc de culte
police: Policia
veterinary: Veterinari
village_hall: Casa de la Vila
waste_basket: Cistella de Residus
+ waste_disposal: Contenidor d'escombraries
youth_centre: Centre juvenil
boundary:
administrative: Límit administratiu
"yes": Pont
building:
"yes": Edifici
+ craft:
+ brewery: Fàbrica de cervesa
+ carpenter: Fuster
+ electrician: Electricista
+ gardener: Jardiner
+ painter: Pintor
+ photographer: Fotògraf
+ plumber: Lampista
+ shoemaker: Sabater
+ tailor: Sastre
+ "yes": Botiga d'artesania
emergency:
+ ambulance_station: Base d'ambulàncies
+ defibrillator: Desfibril·lador
+ landing_site: Lloc d'aterratges d'emergència
phone: Telèfon per a emergències
highway:
+ abandoned: Carretera abandonada
bridleway: Ferradura
bus_guideway: Carril Bus
bus_stop: Parada d'autobús
construction: Autopista en construcció
cycleway: Ruta per a bicicletes
+ elevator: Ascensor
emergency_access_point: Accés d'emergència
footway: Sendera
ford: Fiord
tertiary: Carretera terciària
tertiary_link: Carretera terciària
track: Pista
+ traffic_signals: Senyals de trànsit
trail: Sendera o corriol
trunk: Autovia de
trunk_link: Autovia de
unclassified: Sense classificar Road
unsurfaced: Pista sense asfaltar
+ "yes": Carretera
historic:
archaeological_site: Lloc arqueològic
battlefield: Camp de batalla
boundary_stone: Pedra de la frontera
- building: Edifici
+ building: Edifici històric
+ bunker: Búnquer
castle: Castell
church: Església
+ city_gate: Porta urbana
citywalls: Muralles
fort: Fortí
+ heritage: Espai patrimoni de la humanitat
house: Casa
icon: Icona
manor: Manor
memorial: Memorial
mine: Mina
monument: Monument
+ roman_road: Carretera Romana
ruins: Ruïnes
+ stone: Pedra
tomb: Tomba
tower: Torre
wayside_cross: Camí de la creu
wayside_shrine: Santuari de carreteres
wreck: Wreck
+ junction:
+ "yes": Intersecció
landuse:
allotments: Horts
basin: Conca
road: Zona de carretera
village_green: Zona verda
vineyard: Vinya
+ "yes": Ús del terreny
leisure:
beach_resort: Beach Resort
bird_hide: Aguait
+ club: Club
common: Terra comú
+ dog_park: Parc caní
fishing: Àrea de pesca
+ fitness_centre: Centre de fitness
fitness_station: Centre de fitness
garden: Jardí
golf_course: Camp de golf
+ horse_riding: Hípica
ice_rink: Pista de patinatge sobre gel
marina: Port esportiu
miniature_golf: Minigolf
pitch: Camp d'esports
playground: Parc infantil
recreation_ground: Terra de recreació
+ resort: Resort
sauna: Sauna
slipway: Slipway
sports_centre: Centre esportiu
swimming_pool: Piscina
track: Pista
water_park: Parc aquàtic
+ "yes": Esbarjo
+ man_made:
+ lighthouse: Far
+ pipeline: Canonada
+ tower: Torre
+ works: Fàbrica
+ "yes": Fet per l'home
military:
airfield: Aeroport militar
barracks: Caserna
forest: Bosc
geyser: Guèiser
glacier: Glacera
+ grassland: Prats
heath: Bruguerar
hill: Pujol
island: Illa
reef: Escull
ridge: Cresta
rock: Roca
+ saddle: Coll
+ sand: Sorra
scree: Pedregar
scrub: Scrub
spring: Deu
wood: Bosc
office:
accountant: Comptable
+ administrative: Administració
architect: Arquitecte
company: Empresa
employment_agency: Agència d'ocupació
travel_agent: Agència de viatges
"yes": Oficina
place:
+ allotments: Horts
+ block: Bloc
airport: Aeroport
city: Ciutat
country: País
town: Poble
unincorporated_area: Àrea no incorporada
village: Aldea
+ "yes": Lloc
railway:
abandoned: Ferrocarril fora de Servei
construction: Ferrocarril en Construcció
spur: Esperó de ferrocarril
station: Estació de tren
stop: Parada de Ferrocarril
- subway: Estació de metro
+ subway: Metro
subway_entrance: Accés al Metro
switch: Punts de ferrocarril
tram: Tramvia
"yes": Botiga
tourism:
alpine_hut: Cabanya alpina
+ apartment: Apartament
artwork: Il·lustració
attraction: Atracció
bed_and_breakfast: Llit i esmorzar (B&B)
camp_site: Campament
caravan_site: Càmping per a caravanes
chalet: Xalet
+ gallery: Galeria
guest_house: Alberg
hostel: Hostal
hotel: Hotel
wadi: Torrent
waterfall: Cascada
weir: Weir
+ "yes": Curs d'aigua
admin_levels:
level2: Frontera internacional
level4: Límit d'estat
results:
no_results: No hi ha resultats
more_results: Més resultats
- distance:
- one: vora 1km
- zero: menys d'1km
- other: vora %{count}km
- direction:
- south_west: sud-oest
- south: sud
- south_east: sud-est
- east: est
- north_east: nord-est
- north: nord
- north_west: nord-oest
- west: oest
layouts:
project_name:
title: OpenStreetMap
legal_babble:
title_html: Drets d'autor i llicència
intro_1_html: |-
- Les dades d'OpenStreetMap són un conjunt de <i>dades obertes</i> publicades sota una <a
- href="http://opendatacommons.org/licenses/odbl/">llicència de base de dades oberta</a> (ODbL).
+ Les dades obertes d'OpenStreetMap<sup><a href="#trademarks">®</a></sup> estan publicades sota la <a
+ href="http://opendatacommons.org/licenses/odbl/">llicència de base de dades oberta</a> (ODbL) per la <a
+ href="http://osmfoundation.org/">Fundació OpenStreetMap</a> (OSMF).
intro_2_html: "Sou lliure de copiar, distribuir, comunicar públicament i fer-ne
obres \nderivades de les nostres dades, sempre que atribuïu els crèdits a
\nOpenStreetMap i els seus col·laboradors. Si modifiqueu o utilitzeu les\nnostres
title: Exemple d'atribució
more_title_html: Saber-ne més
more_1_html: |-
- Llegiu més informació sobre com utilitzar les nostres dades a les <a
+ Llegiu més informació sobre com utilitzar les nostres dades, i com donar-ne crèdit, a la <a
+ href="http://osmfoundation.org/Licence">pàgina de llicència OSMF</a> i a les <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Preguntes
Freqüents sobre legalitat</a>.
more_2_html: Encara que les dades d'OpenStreetMap són dades obertes, no podem
us plau aneu a la pàgina web dedicada al <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">Procediment
per eliminar dades protegides pels drets d'autor</a> o empleneu aquest <a
href="http://dmca.openstreetmap.org/">formulari en línia.</a>.
+ trademarks_title_html: <span id="trademarks"></span>Marques registrades
welcome_page:
title: Benvingut!
introduction_html: Us donem la benvinguda a l'OpenStreetMap, el mapa lliure i
url: /welcome
title: Benvinguts a l'OSM
description: Comença amb aquesta guia ràpida sobre els aspectes bàsics de l'OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Ca:Beginners%27_guide
+ title: Guia per a principiants
+ description: Guia per a principiants mantinguda per la comunitat.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Feu una pregunta o busqueu respostes a la pàgina de preguntes i
respostes d'OSM.
+ mailing_lists:
+ title: Llistes de correu
+ forums:
+ title: Fòrums
+ irc:
+ title: IRC
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
contribuïdors. Si modifiqueu o construïu sobre les dades en alguna manera concreta,
podeu distribuir el resultat només sota la mateixa llicència. Vegeu la <a href=''%{copyright_path}''>pàgina
de copyright i llicència</a> per a més detalls.'
+ legal_title: Avisos legals
partners_title: Socis
notifier:
diary_comment_notification:
license:
copyright: Copyright d'OpenStreetMap i els seus col·laboradors sota llicència
oberta
- remote_failed: L'edició ha fallat - assegureu-vos que el JOSM, o el Merkaartor,
- esta executant-se i que l'opció de comandament a distància està habilitatada
+ remote_failed: L'edició ha fallat. Assegureu-vos que el JOSM, o el Merkaartor,
+ esta executant-se i que l'opció de comandament a distància està habilitada
edit:
not_public: No heu fet les configuracions necessàries per tal que les vostres
modificacions siguin públiques.
close: Tanca
search:
search: Cerca
+ get_directions: Obtenir indicacions
+ get_directions_title: Trobeu indicacions entre dos punts
+ from: De
+ to: A
where_am_i: On sóc?
where_am_i_title: Descriu la localització actual fent servir el motor de cerca
submit_text: Vés-hi
register now: Registreu-vos-hi ara
with username: 'Ja teniu un compte de l''OpenStreetMap? Incieu sessió amb el
nom d''usuari i contrasenya:'
- with openid: 'Alternativament, utilitzeu el vostre OpenID per iniciar sessió:'
new to osm: Nou a OpenStreetMap?
to make changes: Per fer canvis a les dades de OpenStreetMap, ha de tenir un
compte.
una activitat sospitosa.<br />Contacteu amb el <a href="%{webmaster}">webmestre</a>
si voleu parlar-ne.
auth failure: Ho sentim, no podeu registrar-vos amb aquesta informació.
- openid missing provider: Ho sento, no podem contactar amb el vostre proveïdor
- d'OpenID
- openid invalid: Ho sentim, la vostra OpenID sembla ser no vàlida
openid_logo_alt: Inicia sessió amb un compte OpenID
- openid_providers:
- openid:
- title: Inicia sessió amb OpenID
- alt: Inicia sessió amb un URL d'OpenID
- google:
- title: Inicia sessió amb Google
- alt: Inicia sessió amb un OpenID de Google
- yahoo:
- title: Inicia sessió amb Yahoo
- alt: Inicia sessió amb un OpenID Yahoo
- wordpress:
- title: Inicia sessió amb Wordpress
- alt: Inicia sessió amb un Wordpress OpenID
- aol:
- title: Inicia sessió amb AOL
- alt: Inicia sessió amb un AOL OpenID
logout:
title: Tanca la sessió
heading: Tanca la sessió d'OpenStreetMap
display name: 'Nom visible:'
display name description: El nom d'usuari que es motrarà públicament. El podeu
canviar més endavant a les preferències.
- openid: '%{logo} OpenID:'
password: 'Contrasenya:'
confirm password: 'Confirmeu la contrasenya:'
- use openid: Alternativament, utilitzeu %{logo} OpenID per iniciar sessió
- openid no password: Amb l'OpenID no es requereix contrasenya, però algunes eines
- extres o el servidor encara poden necessitar-la.
- openid association: |-
- <p>El vostre OpenID encara no està associat a un compte de OpenStreetMap.</p>
- <ul>
- <li>Si sou nou a l'OpenStreetMap, creeu un compte utilitzant el formulari següent.</li>
- <li>
- Si ja teniu un compte, podeu iniciar sessió amb el vostre compte
- utilitzant el nom d'usuari i contrasenya i aleshores associeu el compte
- amb el vostre compte OpenID a les preferències d'usuari.
- </li>
- </ul>
continue: Crear un compte
terms accepted: Gràcies per a l'acceptació de les condicions de col. laborador
nou!
current email address: 'Adreça de correu electrònic actual:'
new email address: 'Nova adreça electrònica:'
email never displayed publicly: (no es mostrarà mai en públic)
+ external auth: 'Autenticació externa:'
openid:
- openid: 'OpenID:'
link: http://wiki.OpenStreetMap.org/wiki/OpenID
link text: què és això?
public editing:
que t'hem enviat i ja podràs començar a editar el mapa.
press confirm button: Premeu el botó de confirmar sota per activar el compte.
button: Confirma
+ success: Heu confirmat el vostre compte, gràcies per registrar-vos!
already active: Aquest compte ja ha estat confirmat.
unknown token: Aquest codi de confirmació ha expirat o no existeix.
reconfirm_html: Si necessites que et reenviem el correu de confirmació, <a href="%{reconfirm}">clica
comment: Comenta
edit_help: Moveu el mapa i feu zoom sobre una ubicació que vulgueu editar, i a
continuació, feu clic aquí.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicleta (GraphHopper)
+ graphhopper_foot: A peu (GraphHopper)
+ mapquest_bicycle: Bicicleta (MapQuest)
+ mapquest_car: Cotxe (MapQuest)
+ mapquest_foot: A peu (MapQuest)
+ osrm_car: Cotxe (OSRM)
+ directions: Indicacions
+ distance: Distància
+ errors:
+ no_route: No s'ha pogut establir una ruta entre aquests dos punts.
+ no_place: No hem pogut trobar aquest lloc – Ens sap greu.
+ instructions:
+ continue_without_exit: Continuar a %{name}
+ slight_right_without_exit: Gira lleugerament a la dreta a %{name}
+ turn_right_without_exit: Gira a la dreta per %{name}
+ sharp_right_without_exit: Gira a la dreta a %{name}
+ uturn_without_exit: Canvi de sentit a %{name}
+ sharp_left_without_exit: Gira a l'esquerra a %{name}
+ turn_left_without_exit: Gira a l'esquerra per %{name}
+ slight_left_without_exit: Gira lleugerament a l'esquerra a %{name}
+ follow_without_exit: Segueix %{name}
+ roundabout_without_exit: A la rotonda agafa %{name}
+ leave_roundabout_without_exit: Surt de la rotonda %{name}
+ stay_roundabout_without_exit: Segueix a la rotonda - %{name}
+ start_without_exit: Comença al final de %{name}
+ destination_without_exit: Arriba a la destinació.
+ end_oneway_without_exit: Fi del sentit únic a %{name}
+ unnamed: sense nom
+ courtesy: Direccions cortesia de %{link}
+ time: Temps
query:
node: Node
way: Via
# Author: Chmee2
# Author: Cvanca
# Author: DemonioCZ
+# Author: H4nek
# Author: JAn Dudík
# Author: Jezevec
# Author: Jkjk
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kabinová lanovka
chair_lift: Sedačková lanovka
drag_lift: Vlek
+ gondola: Kabinková lanovka
station: Stanice lanovky
aeroway:
aerodrome: Letiště
taxiway: Pojezdová dráha
terminal: Terminál
amenity:
+ animal_shelter: Zvířecí útulek
arts_centre: Kulturní centrum
atm: Bankomat
bank: Banka
bicycle_parking: Parkoviště pro kola
bicycle_rental: Půjčovna kol
biergarten: Zahradní hospoda
+ boat_rental: Půjčovna lodí
brothel: Nevěstinec
bureau_de_change: Směnárna
bus_station: Autobusové nádraží
car_wash: Automyčka
casino: Kasino
charging_station: Nabíjecí stanice
+ childcare: Péče o děti
cinema: Kino
clinic: Klinika
+ clock: Hodiny
college: Univerzita
community_centre: Komunitní centrum
courthouse: Soud
food_court: Občerstvení
fountain: Fontána
fuel: Čerpací stanice
+ gambling: Hazardní hry
grave_yard: Hřbitov
gym: Fitness centrum / tělocvična
health_centre: Zdravotní středisko
library: Knihovna
market: Tržiště
marketplace: Tržnice
+ monastery: Klášter
+ motorcycle_parking: Parkoviště pro motocykly
nightclub: Noční klub
nursery: Jesle
nursing_home: Pečovatelský dům
office: Úřad
parking: Parkoviště
+ parking_entrance: Vjezd na parkoviště
pharmacy: Lékárna
place_of_worship: Náboženský objekt
police: Policie
veterinary: Veterinární ordinace
village_hall: Společenský sál
waste_basket: Odpadkový koš
+ waste_disposal: Popelnice
youth_centre: Centrum pro mládež
boundary:
administrative: Administrativní hranice
"yes": Most
building:
"yes": Budova
+ craft:
+ brewery: Pivovar
+ carpenter: Tesařství
+ electrician: Elektrikář
+ gardener: Zahradník
+ painter: Malíř
+ photographer: Fotograf
+ plumber: Instalatérství
+ shoemaker: Ševcovství
+ tailor: Krejčovství
+ "yes": Řemeslná dílna
emergency:
+ ambulance_station: Stanoviště záchranné služby
+ defibrillator: Defibrilátor
+ landing_site: Přistávací plocha záchranky
phone: Nouzový telefon
highway:
+ abandoned: Zrušená silnice
bridleway: Koňská stezka
bus_guideway: Autobusová dráha
bus_stop: Autobusová zastávka
construction: Silnice ve výstavbě
cycleway: Cyklostezka
+ elevator: Výtah
emergency_access_point: Nouzový lokalizační bod
footway: Chodník
ford: Brod
tertiary: Silnice třetí třídy
tertiary_link: Silnice třetí třídy
track: Cesta
+ traffic_signals: Světelná signalizace
trail: Stezka
trunk: Významná silnice
trunk_link: Významná silnice
unclassified: Silnice
unsurfaced: Nezpevněná cesta
+ "yes": Cesta
historic:
archaeological_site: Archeologické naleziště
battlefield: Bojiště
boundary_stone: Hraniční kámen
- building: Budova
+ building: Historická budova
+ bunker: Bunkr
castle: Hrad
church: Kostel
+ city_gate: Městská brána
citywalls: Městské hradby
fort: Pevnost
+ heritage: Památka
house: Dům
icon: Ikona
manor: Panství
memorial: Památník
mine: Důl
monument: Pomník
+ roman_road: Římská cesta
ruins: Zřícenina
+ stone: Kámen
tomb: Náhrobek
tower: Věž
wayside_cross: Boží muka
wayside_shrine: Boží muka
wreck: Vrak
+ junction:
+ "yes": Křižovatka
landuse:
allotments: Zahrádkářská kolonie
basin: Vodní nádrž
road: Cesty
village_green: Náves
vineyard: Vinice
+ "yes": Využití krajiny
leisure:
beach_resort: Pobřežní letovisko
bird_hide: Ptačí pozorovatelna
+ club: Klub
common: Obecní půda
+ dog_park: Park pro psy
fishing: Rybářská oblast
+ fitness_centre: Fitness centrum
fitness_station: Fitness
garden: Zahrada
golf_course: Golfové hřiště
+ horse_riding: Jezdecká stáj
ice_rink: Kluziště
marina: Přístav
miniature_golf: Minigolf
pitch: Hřiště
playground: Dětské hřiště
recreation_ground: Rekreační oblast
+ resort: Hotelový komplex
sauna: Sauna
slipway: Skluzavka
sports_centre: Sportovní centrum
swimming_pool: Bazén
track: Běžecká dráha
water_park: Aquapark
+ "yes": Volný čas
+ man_made:
+ lighthouse: Maják
+ pipeline: Potrubí
+ tower: Věž
+ works: Továrna
+ "yes": Lidský výtvor
military:
airfield: Vojenské letiště
barracks: Kasárna
forest: Les
geyser: Gejzír
glacier: Ledovec
+ grassland: Pastviny
heath: Vřesoviště
hill: Kopec
island: Ostrov
reef: Útes
ridge: Hřeben
rock: Skalisko
+ saddle: Horské sedlo
+ sand: Písčiny
scree: Osyp
scrub: Rumiště
spring: Pramen
wood: Neudržovaný les
office:
accountant: Účetní
+ administrative: Správa
architect: Architekt
company: Firma
employment_agency: Pracovní agentura
travel_agent: Cestovní kancelář
"yes": Kancelář
place:
+ allotments: Zahrádkářská kolonie
+ block: Blok
airport: Letiště
city: Velkoměsto
country: Stát
town: Město
unincorporated_area: Nezařazená oblast
village: Vesnice
+ "yes": Místo
railway:
abandoned: Zrušená železniční trať
construction: Železnice ve výstavbě
spur: Železniční vlečka
station: Železniční stanice
stop: Železniční zastávka
- subway: Stanice metra
+ subway: Metro
subway_entrance: Vstup do metra
switch: Výhybka
tram: Tramvajová trať
"yes": Obchod
tourism:
alpine_hut: Vysokohorská chata
+ apartment: Apartmán
artwork: Umělecké dílo
attraction: Turistická atrakce
bed_and_breakfast: Ubytování Bed & Breakfast
camp_site: Tábořiště, kemp
caravan_site: Autokemping
chalet: Chalupa
+ gallery: Galerie
guest_house: Penzion
hostel: Hostel
hotel: Hotel
wadi: Vádí
waterfall: Vodopád
weir: Jez
+ "yes": Vodní cesta
admin_levels:
level2: Státní hranice
- level4: Hranice státu
+ level4: Hranice země, provincie či regionu
level5: Hranice regionu
level6: Hranice okresu
level8: Hranice obce
results:
no_results: Nenalezeny žádné výsledky
more_results: Další výsledky
- distance:
- zero: méně než 1 km
- one: asi 1 km
- other: asi %{count} km
- direction:
- south_west: jihozápad
- south: jih
- south_east: jihovýchod
- east: východ
- north_east: severovýchod
- north: sever
- north_west: severozápad
- west: západ
layouts:
logo:
alt_text: Logo OpenStreetMap
mapping_link: začít mapovat
legal_babble:
title_html: Autorská práva a licence
- intro_1_html: OpenStreetMap jsou <i>svobodná data</i>, nabízená za podmínek
- <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open
- Database License</a> (ODbL).
+ intro_1_html: OpenStreetMap<sup><a href="#trademarks">®</a></sup> jsou <i>svobodná
+ data</i>, která za podmínek <a href="http://opendatacommons.org/licenses/odbl/">Open
+ Data Commons Open Database License</a> (ODbL) nabízí nadace <a href="http://osmfoundation.org/">OpenStreetMap
+ Foundation</a> (OSMF).
intro_2_html: Smíte kopírovat, distribuovat, sdělovat veřejnosti a upravovat
naše data, pokud jako zdroj uvedete OpenStreetMap a jeho přispěvatele. Pokud
naše data budete upravovat nebo je použijete ve svém díle, musíte výsledek
title: Příklad uvedení autorství
more_title_html: Další informace
more_1_html: O používání našich dat a způsobu uvádění autorství se můžete dočíst
- více v našem <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Právním
+ více na <a href="http://osmfoundation.org/Licence">licenční stránce OSMF</a>
+ a v našem komunitním <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Právním
FAQ</a>.
more_2_html: |-
Přestože OpenStreetMap tvoří svobodná data, nemůžeme zdarma poskytovat třetím stranám mapové API.
2007 (<a href="http://www.and.com">www.and.com</a>)'
contributors_nz_html: '<strong>Nový Zéland</strong>: Obsahuje data pocházející
z Land Information New Zealand. Crown Copyright reserved.'
+ contributors_si_html: '<strong>Slovinsko</strong>: Obsahuje data <a href="http://www.gu.gov.si/">Zeměměřického
+ a mapovacího úřadu</a> a <a href="http://www.mkgp.gov.si/">Ministerstva zemědělství,
+ lesnictví a potravin</a> (veřejné informace o Slovinsku).'
contributors_za_html: |-
<strong>Jihoafrická republika</strong>: Obsahuje data pocházející z <a href="http://www.ngi.gov.za/">Chief Directorate:
National Geo-Spatial Information</a>, State copyright reserved.
podle našeho <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">postupu
pro odstranění</a> nebo přímo podejte výzvu pomocí <a href="http://dmca.openstreetmap.org/">on-line
formuláře</a>.
+ trademarks_title_html: <span id="trademarks"></span>Ochranné známky
+ trademarks_1_html: OpenStreetMap a logo s lupou jsou zapsané ochranné známky
+ OpenStreetMap Foundation. Pokud máte dotazy ohledně vašeho používání těchto
+ známek, zašlete své dotazy <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">pracovní
+ skupině pro licencování</a>.
welcome_page:
title: Vítejte!
introduction_html: Vítejte v OpenStreetMap, svobodné a editovatelné mapě světa.
jezero nebo budova.
tag_html: <strong>Tag</strong> je troška dat o uzlu nebo cestě jako např. název
restaurace nebo maximální povolená rychlost na silnici.
+ rules:
+ title: Pravidla!
+ paragraph_1_html: OpenStreetMap má jen málo formálních pravidel, ale od všech
+ účastníků očekáváme, že budou spolupracovat a komunikovat s komunitou. Pokud
+ zvažujete jakoukoli jinou činnost než ruční editování, přečtěte si prosím
+ a dodržujte pokyny na stránkách <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Importy</a>
+ a <a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Automatizované
+ editace</a>.
questions:
title: Nějaké dotazy?
paragraph_1_html: |-
url: /welcome
title: Vítejte v OSM
description: Začněte tímto rychlým průvodcem zahrnujícím základy OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Cs:Beginners%27_guide
+ title: Průvodce začátečníka
+ description: Komunitou spravovaná příručka pro začátečníky.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Položte dotaz nebo vyhledejte odpovědi na stránce otázek a odpovědí
týkajících se OSM.
+ mailing_lists:
+ title: E-mailové konference
+ description: Položte dotaz nebo diskutujte o zajímavých věcech na některé ze
+ široké nabídky tematických či regionálních e-mailových konferencí.
+ forums:
+ title: Diskusní fóra
+ description: Otázky a diskuse pro ty, kteří preferují rozhraní v nástěnkovém
+ stylu.
+ irc:
+ title: IRC
+ description: Interaktivní chat v mnoha jazycích a na mnoho témat.
+ switch2osm:
+ title: switch2osm
+ description: Pomoc společnostem a organizacím s přechodem na mapy a další služby
+ založené na OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/wiki/Cs:Main_Page?uselang=cs
title: wiki.openstreetmap.org
data měníte nebo rozšiřujete jistými způsoby, smíte výsledek šířit jen pod stejnou
licencí. Podrobnosti najdete na stránce <a href=''%{copyright_path}''>Autorská
práva a licence</a>.'
+ legal_title: Právní informace
+ legal_html: |-
+ Tento web a mnoho dalších souvisejících služeb za komunitu oficiálně provozuje <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF).
+ <br>
+ Pokud máte problémy či dotazy týkající se licencování, autorských práv či jiných právních záležitostí, <a href='http://osmfoundation.org/Contact'>kontaktujte prosím OSMF</a>.
partners_title: Partneři
notifier:
diary_comment_notification:
close: Zavřít
search:
search: Hledat
+ get_directions: Najít trasu
+ get_directions_title: Najít trasu mezi dvěma body
+ from: Odkud
+ to: Kam
where_am_i: Kde se nacházím?
where_am_i_title: Popsat právě zobrazované místo pomocí vyhledávače
submit_text: Hledat
login_button: Přihlásit
register now: Zaregistrujte se
with username: 'Máte už na OpenStreetMap účet? Přihlaste se svým jménem a heslem:'
- with openid: 'Nebo se můžete přihlásit svým OpenID:'
+ with external: 'Případně se přihlaste prostřednictvím třetí strany:'
new to osm: Jste na OpenStreetMap noví?
to make changes: Pokud chcete upravovat OpenStreetMap, musíte mít uživatelský
účet.
aktivitě.<br />Pokud to chcete řešit, kontaktujte <a href="%{webmaster}">správce
serveru</a>.
auth failure: Je mi líto, ale s uvedenými údaji se nemůžete přihlásit.
- openid missing provider: Je nám líto, ale nepodařilo se kontaktovat vašeho poskytovatele
- OpenID
- openid invalid: Je nám líto, ale vaše OpenID vypadá chybně
openid_logo_alt: Přihlášení pomocí OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Přihlášení pomocí OpenID
+ title: Přihlásit se pomocí OpenID
alt: Přihlášení pomocí OpenID URL
google:
- title: Přihlášení pomocí Google
+ title: Přihlásit se prostřednictvím Google
alt: Přihlášení pomocí Google OpenID
+ facebook:
+ title: Přihlásit se přes Facebook
+ alt: Přihlášení pomocí účtu na Facebooku
+ windowslive:
+ title: Přihlásit se přes Windows Live
+ alt: Přihlášení pomocí účtu služeb Windows Live
yahoo:
- title: Přihlášení pomocí Yahoo
+ title: Přihlásit se prostřednictvím Yahoo
alt: Přihlášení pomocí Yahoo OpenID
wordpress:
- title: Přihlášení pomocí Wordpress
+ title: Přihlásit se prostřednictvím Wordpress
alt: Přihlášení pomocí Wordpress OpenID
aol:
- title: Přihlášení pomocí AOL
+ title: Přihlásit se prostřednictvím AOL
alt: Přihlášení pomocí AOL OpenID
logout:
title: Odhlásit se
display name: 'Zobrazované jméno:'
display name description: Vaše veřejně zobrazované uživatelské jméno. Můžete
si ho později změnit ve svém nastavení.
- openid: '%{logo} OpenID:'
+ external auth: 'Autentizace třetí stranou:'
password: 'Heslo:'
confirm password: 'Potvrdit heslo:'
- use openid: Případně se můžete přihlásit pomocí %{logo} OpenID
- openid no password: S OpenID není heslo potřeba, ale některé další nástroje
- nebo servery je mohou přesto potřebovat.
- openid association: |-
- <p>Vaše OpenID dosud nebylo propojeno s účtem na OpenStreetMap.</p>
+ use external auth: Případně se přihlaste prostřednictvím třetí strany
+ auth no password: S autentizací třetí stranou není heslo potřeba, ale některé
+ další nástroje nebo servery je mohou přesto potřebovat.
+ auth association: |-
+ <p>Vaše ID dosud nebylo propojeno s účtem na OpenStreetMap.</p>
<ul>
<li>Pokud jste na OpenStreetMap noví, vytvořte si nový účet pomocí formuláře níže.</li>
<li>
Pokud již účet máte, můžete se k němu přihlásit
pomocí uživatelského jména a hesla a poté ho
- v uživatelském nastavení propojit s OpenID.
+ v uživatelském nastavení propojit se svým ID.
</li>
</ul>
continue: Zaregistrovat se
current email address: 'Stávající e-mailová adresa:'
new email address: 'Nová e-mailová adresa:'
email never displayed publicly: (nikde se veřejně nezobrazuje)
+ external auth: 'Externí autentizace:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/CS:OpenID
link text: co to znamená?
public editing:
začít mapovat.
press confirm button: Svůj účet aktivujte stisknutím níže zobrazeného tlačítka.
button: Potvrdit
+ success: Účet potvrzen, děkujeme za registraci!
already active: Tento uživatelský účet už byl potvrzen.
unknown token: Zadaný potvrzovací kód vypršel nebo neexistuje.
reconfirm_html: Pokud potřebujete, abychom vám poslali potvrzovací e-mail znovu,
press confirm button: Pro potvrzení nové e-mailové adresy klikněte na níže zobrazené
tlačítko.
button: Potvrdit
- success: Vaše e-mailová adresa byla potvrzena, děkujeme za registraci!
+ success: Změna vaší e-mailové adresy byla potvrzena!
failure: Tento kód byl už pro potvrzení e-mailové adresy použit.
+ unknown_token: Zadaný potvrzovací kód vypršel nebo neexistuje.
set_home:
flash success: Pozice domova byla úspěšně uložena
go_public:
Toto rozhodnutí zanedlouho posoudí nějaký správce, případně
můžete kontaktovat %{webmaster}.
</p>
+ auth_failure:
+ connection_failed: Připojení k poskytovateli autentizace se nezdařilo
+ invalid_credentials: Neplatné autentizační údaje
+ no_authorization_code: Bez autorizačního kódu
+ unknown_signature_algorithm: Neznámý algoritmus podpisu
+ invalid_scope: Neplatný rozsah
user_role:
filter:
not_an_administrator: Spravovat role mohou pouze administrátoři. Vy administrátor
creator_name: Autor
reason: Důvod pro blok
status: Stav
- revoker_name: Zrušno
+ revoker_name: Zrušil
not_revoked: (nezrušeno)
showing_page: Stránka %{page}
next: Následující »
previous: « Předchozí
helper:
- time_future: Končí v %{time}.
+ time_future: Končí za %{time}.
until_login: Aktivní dokud se uživatel nepřihlásí.
time_past: Ukončeno před %{time}.
blocks_on:
show:
title: '%{block_on} zablokován uživatelem %{block_by}'
heading: '%{block_on} zablokován uživatelem %{block_by}'
- time_future: Končí v %{time}.
+ time_future: Končí za %{time}.
time_past: Ukončeno před %{time}
+ created: Vytvořen
+ ago: před %{time}
status: Stav
show: Zobrazit
edit: Upravit
link: Odkaz nebo HTML
long_link: Odkaz
short_link: Krátký odkaz
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Nastavit vlastní rozměry
format: 'Formát:'
comment: Okomentovat
edit_help: Posuňte si mapu a zvětšete si místo, které chcete editovat, a klikněte
zde.
+ directions:
+ engines:
+ graphhopper_bicycle: Na kole (GraphHopper)
+ graphhopper_foot: Pěšky (GraphHopper)
+ mapquest_bicycle: Na kole (MapQuest)
+ mapquest_car: Autem (MapQuest)
+ mapquest_foot: Pěšky (MapQuest)
+ osrm_car: Autem (OSRM)
+ directions: Pokyny
+ distance: Vzdálenost
+ errors:
+ no_route: Nepodařilo se nalézt trasu mezi zadanými místy.
+ no_place: Nepodařilo se nám najít zadané místo.
+ instructions:
+ continue_without_exit: Pokračujte na %{name}
+ slight_right_without_exit: Mírně vpravo na %{name}
+ turn_right_without_exit: Odbočte vpravo na %{name}
+ sharp_right_without_exit: Ostře vpravo na %{name}
+ uturn_without_exit: Otočte se na %{name}
+ sharp_left_without_exit: Ostře vlevo na %{name}
+ turn_left_without_exit: Odbočte vlevo na %{name}
+ slight_left_without_exit: Mírně vlevo na %{name}
+ follow_without_exit: Jeďte po %{name}
+ roundabout_without_exit: Na kruhovém objezdu použijte %{name}
+ leave_roundabout_without_exit: Vyjeďte z kruhového objezdu – %{name}
+ stay_roundabout_without_exit: Zůstaňte na kruhovém objezdu – %{name}
+ start_without_exit: Začněte na konci %{name}
+ destination_without_exit: Jste v cíli
+ against_oneway_without_exit: Jeďte protisměrem na %{name}
+ end_oneway_without_exit: Konec jednosměrky na %{name}
+ roundabout_with_exit: Na kruhovém objezdu vyjeďte %{exit}. výjezdem na %{name}
+ unnamed: nepojmenovaná cesta
+ courtesy: Trasa díky %{link}
+ time: Čas
query:
node: Uzel
way: Cesta
results:
no_results: Dim canlyniadau
more_results: Mwy o ganlyniadau
- direction:
- south_west: de-orllewin
- south: de
- south_east: de-ddwyrain
- east: dwyrain
- north_east: gogledd-ddwyrain
- north: gogledd
- north_west: gogledd-orllewin
- west: gorllewin
layouts:
logo:
alt_text: Logo OpenStreetMap
register now: Cofrestru nawr
with username: Eisoes gyda chyfrif OpenStreetMap? Mewngofnodwch gyda'ch enw
defnyddiwr a'ch cyfrinair.
- with openid: 'Neu, mewngofnodwch gydag OpenID:'
new to osm: Yn newydd i OpenStreetMap?
to make changes: I wneud newidiadau i ddata OpenStreetMap, mae'n rhaid cael
cyfrif.
create account minute: Crewch cyfrif. Dim ond munud mae'n cymryd.
no account: Dim cyfrif gennych?
openid_logo_alt: Mewngofnodi gydag OpenID
- openid_providers:
- openid:
- title: Mewngofnodi gydag OpenID
- alt: Mewngofodi gydag URL OpenID
- google:
- title: Mewngofnodi gyda Google
- alt: Mewngofnodi gydag OpenID Google
- yahoo:
- title: Mewngofnodi gydag Yahoo
- alt: Mewngofnodi gydag OpenID Yahoo
- wordpress:
- title: Mewngofnodig gyda WordPress
- alt: Mewngofnodi gydag OpenID WordPress
- aol:
- title: Mewngofnodi gydag AOL
- alt: Mewngofnodi gydag OpenID AOL
logout:
title: Allgofnodi
heading: Allgofnodi o OpenStreetMap
confirm email address: 'Cadarnhau''r Cyfeiriad Ebost:'
password: 'Cyfrinair:'
confirm password: 'Cadarnhau''r Cyfrinair:'
- use openid: Neu, mewngofnodwch gydag %{logo} OpenID
continue: Cofrestru
terms accepted: Diolch am dderbyn telerau newydd cyfranwyr!
terms:
new email address: 'Cyfeiriad Ebost Newydd:'
email never displayed publicly: (byth ei ddangos yn gyhoeddus)
openid:
- openid: 'OpenID:'
link text: beth yw hwn?
public editing:
heading: 'Golygu cyhoeddus:'
# Author: Nemo bis
# Author: OleLaursen
# Author: Peter Alberti
+# Author: Ruila
# Author: The real emj
# Author: Winbladh
---
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Svævebane
chair_lift: Stolelift
drag_lift: Træklift
+ gondola: Gondolbane
station: Svævebanestation
aeroway:
aerodrome: Flyveplads
bicycle_parking: Cykelparkering
bicycle_rental: Cykeludlejning
biergarten: Udendørs øludskænkning
+ boat_rental: Bådudlejning
brothel: Bordel
bureau_de_change: Vekselkontor
bus_station: Busstation
car_wash: Bilvask
casino: Kasino
charging_station: Ladestation
+ childcare: Børnepasning
cinema: Biograf
clinic: Klinik
+ clock: Ur
college: Videregående uddanelsesinstitution
community_centre: Forsamlingshus / lokalcenter
courthouse: Retsbygning
food_court: Food Court
fountain: Springvand
fuel: Benzinstation
+ gambling: Spil
grave_yard: Kirkegård
gym: Træningscenter
health_centre: Sundhedscenter
library: Bibliotek
market: Marked
marketplace: Markedsplads
+ monastery: Kloster
+ motorcycle_parking: Motorcykelparkering
nightclub: Natklub
nursery: Førskole
nursing_home: Plejehjem
office: Kontor
parking: Parkering
+ parking_entrance: Parkeringsindkørsel
pharmacy: Apotek
place_of_worship: Sted for gudstjenester
police: Politi
veterinary: Dyrlæge
village_hall: Forsamlingshus
waste_basket: Skraldespand
+ waste_disposal: Skraldecontainer
youth_centre: Ungdomscenter
boundary:
administrative: Administrativ grænse
"yes": Bro
building:
"yes": Bygning
+ craft:
+ brewery: Bryggeri
+ carpenter: Tømrer
+ electrician: Elektriker
+ gardener: Gartner
+ painter: Maler
+ photographer: Fotograf
+ plumber: Blikkenslager
+ shoemaker: Skomager
+ tailor: Skrædder
emergency:
+ defibrillator: Hjertestarter
+ landing_site: Nødlandingsplads
phone: Nødtelefon
highway:
+ abandoned: Forladt motorvej
bridleway: Ridesti
bus_guideway: Styret busspor
bus_stop: Busstoppested
construction: Vej under konstruktion
cycleway: Cykelsti
+ elevator: Elevator
emergency_access_point: Nødudgangspunkt
footway: Gangsti
ford: Vadested
tertiary: Hovedvej
tertiary_link: Hovedvej
track: Hjulspor
+ traffic_signals: Traffiklys
trail: Spor
trunk: Motortrafikvej
trunk_link: Motortrafikvej
unclassified: Anden vej
unsurfaced: Uasfalteret vej
+ "yes": Vej
historic:
archaeological_site: Arkæologisk sted
battlefield: Slagmark
boundary_stone: Grænsesten
- building: Bygning
+ building: Historisk Bygning
+ bunker: Bunker
castle: Slot
church: Kirke
+ city_gate: Byport
citywalls: Bymure
fort: Skanse
house: Hus
memorial: Mindesmærke
mine: Mine
monument: Monument
+ roman_road: Romersk vej
ruins: Ruin
+ stone: Sten
tomb: Grav
tower: Tårn
wayside_cross: Vejkors
wayside_shrine: Vejside helligdom
wreck: Vrag
+ junction:
+ "yes": Kryds
landuse:
allotments: Kolonihaver
basin: Bassin
road: Vejområde
village_green: Forte
vineyard: Vingård
+ "yes": Arealanvendelse
leisure:
beach_resort: Badestrand
bird_hide: Fugleskjul
+ club: Klub
common: Fælles arealer
+ dog_park: Hundepark
fishing: Fiskeområde
fitness_station: Udendørs fitness udstyr
garden: Have
golf_course: Golfbane
+ horse_riding: Ridning
ice_rink: Skøjtebane
marina: Bådehavn
miniature_golf: Minigolf
swimming_pool: Svømmebasin
track: Løbebane
water_park: Vandland
+ "yes": Fritid
+ man_made:
+ lighthouse: Fyr
+ pipeline: Rørledning
+ tower: Tårn
+ works: Fabrik
+ "yes": Menneskeskabt
military:
airfield: Militær flyveplads
barracks: Kaserne
forest: Skov
geyser: Gejser
glacier: Gletsjer
+ grassland: Græsslette
heath: Hede
hill: Bakke
island: Ø
reef: Rev
ridge: Bjergkam
rock: Klippe
+ saddle: Saddel
+ sand: Sand
scree: Klint
scrub: Krat
spring: Kilde
wood: Skov
office:
accountant: Revisor
+ administrative: Administration
architect: Arkitekt
company: Firma
employment_agency: Arbejdsløshedskontor
travel_agent: Rejsebureau
"yes": Kontor
place:
+ allotments: Kolonihaver
+ block: Blok
airport: Lufthavn
city: Storby
country: Land
town: By
unincorporated_area: Kommunefrit område
village: Landsby
+ "yes": Sted
railway:
abandoned: Nedlagt jernbane
construction: Jernbane under konstruktion
spur: Jernbanesidespor
station: Jernbanestation
stop: Jernbanestation
- subway: Undergrundsstation
+ subway: Undergrundsbane
subway_entrance: Undergrundsindgang
switch: Sporskifte
tram: Sporvej
"yes": Forretning
tourism:
alpine_hut: Bjerghytte
+ apartment: Lejlighed
artwork: Kunst
attraction: Seværdighed
bed_and_breakfast: Bed and Breakfast
camp_site: Lejrplads
caravan_site: Campingplads
chalet: Chalet
+ gallery: Galleri
guest_house: Guesthouse (hotel)
hostel: Vandrerhjem
hotel: Hotel
wadi: Flodseng
waterfall: Vandfald
weir: Overløbsdæmning
+ "yes": Vandvej
admin_levels:
level2: Landegrænse
level4: Statsgrænse
results:
no_results: Ingen resultater fundet
more_results: Flere resultater
- distance:
- one: omkring 1 km
- zero: mindre end 1 km
- other: omkring %{count} km
- direction:
- south_west: sydvest
- south: syd
- south_east: sydøst
- east: øst
- north_east: nordøst
- north: nord
- north_west: nordvest
- west: vest
layouts:
logo:
alt_text: OpenStreetMap-logo
url: /welcome
title: Velkommen til OSM
description: Start med denne hurtige guide der dækker det grundlæggende i OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Da:Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
close: Luk
search:
search: Søg
+ get_directions: Få rutevejledninger
+ get_directions_title: Find vejen mellem to punkter
+ from: Fra
+ to: Til
where_am_i: Hvor er jeg?
where_am_i_title: Beskriv den nuværende position ved hjælp af søgemaskinen
submit_text: Søg
register now: Opret nu
with username: 'Har du allerede en OpenStreetMap konto? Log på med dit brugernavn
og din adgangskode:'
- with openid: 'Alternativt kan du bruge din OpenID til at logge ind:'
+ with external: 'Alternativt kan du bruge en tredjepart for at logge på:'
new to osm: Ny på OpenStreetMap?
to make changes: For at ændre i OpenStreetMaps data skal du have en konto.
create account minute: Opret en konto. Det tager kun et minut.
aktivitet.<br />Kontakt <a href="%{webmaster}">webmasteren</a> , hvis du ønsker
at drøfte dette.
auth failure: Kunne ikke logge på med disse oplysninger.
- openid missing provider: Kunne ikke kontakte din OpenID-leverandør
- openid invalid: Beklager, din OpenID synes at være forkert formateret
openid_logo_alt: Log på med et OpenID
- openid_providers:
+ auth_providers:
openid:
title: Log på med OpenID
alt: Log på med en OpenID-URL
display name: 'Vist navn:'
display name description: Dit offentligt synlige brugernavn. Du kan ændre dette
senere i indstillingerne.
- openid: '%{logo} OpenID:'
+ external auth: 'Tredjeparts-godkendelse:'
password: 'Adgangskode:'
confirm password: 'Bekræft adgangskode:'
- use openid: Alternativt kan du bruge %{logo} OpenID til at logge på
- openid no password: Med OpenID kræves ikke en adgangskode, men nogle ekstraværktøjer
- eller en server kan muligvis stadig have brug for en.
- openid association: |-
- <p>Din OpenID er endnu ikke tilknyttet en OpenStreetMap konto.</p>
+ use external auth: Alternativt kan du bruge en tredjepart for at logge på
+ auth no password: Med tredjeparts-godkendelse er en adgangskode ikke påkrævet,
+ men nogle ekstra værktøjer eller servere, har muligvis stadig brug for en.
+ auth association: |-
+ <p>Dit ID er endnu ikke tilknyttet en OpenStreetMap konto.</p>
<ul>
<li>Hvis du er ny på OpenStreetMap, skal du oprette en ny konto ved hjælp af formularen nedenfor.</li>
<li>
- Hvis du allerede har en konto, kan du logge ind på din konto
+ Hvis du allerede har en konto, kan du logge på din konto
ved hjælp af dit brugernavn og adgangskode og derefter knytte kontoen
- med din OpenID i dine brugerindstillinger.
+ med dit ID i dine brugerindstillinger.
</li>
</ul>
continue: Opret konto
new email address: 'Ny e-mailadresse:'
email never displayed publicly: (vises aldrig offentligt)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: hvad er dette?
public editing:
press confirm button: Tryk på "Bekræft"-knappen nedenfor for at aktivere din
konto.
button: Bekræft
+ success: Din konto er bekræftet, tak for din registrering!
already active: Denne konto er allerede blevet bekræftet.
unknown token: Den bekræftelseskode er udløbet eller eksisterer ikke.
reconfirm_html: Hvis du har brug for at vi gensender bekræftelsesmailen, så
press confirm button: Tryk på bekræft-knappen nedenfor for at bekræfte din nye
e-mailadresse.
button: Bekræft
- success: Din e-mailadresse er bekræftet, tak fordi du tilmeldte dig!
+ success: Bekræftet din ændring af e-mailadresse!
failure: En e-mailadresse er allerede blevet bekræftet med denne nøgle.
+ unknown_token: Den bekræftelseskode er udløbet eller eksisterer ikke.
set_home:
flash success: Hjemmeposition gemt
go_public:
comment_and_resolve: Kommentere på og løse
comment: Kommenter
edit_help: Flyt kortet og zoom ind på et sted, du vil redigere, og klik så her.
+ directions:
+ engines:
+ graphhopper_bicycle: Cykel (GraphHopper)
+ graphhopper_foot: Til fods (GrapHopper)
+ mapquest_bicycle: Cykel (MapQuest)
+ mapquest_car: Bil (MapQuest)
+ mapquest_foot: Til fods (MapQuest)
+ osrm_car: Bil (OSRM)
+ directions: Rutevejledning
+ distance: Afstand
+ errors:
+ no_route: Kunne ikke finde en rute mellem de to steder.
+ no_place: Beklager - kunne ikke finde det sted.
+ time: Tid
query:
node: Punkt
way: Vej
# Author: Grille chompa
# Author: Holger
# Author: Inkowik
+# Author: Jacobbraeutigam
# Author: John07
# Author: Jupiter
# Author: Katpatuka
+# Author: Kerosin
# Author: Kghbln
# Author: Markobr
+# Author: MarkusHD
# Author: McDutchie
# Author: Metalhead64
# Author: Michi
%{when}</abbr>
commented_by: Kommentar von %{user} <abbr title='%{exact_time}'>vor %{when}</abbr>
changesetxml: Änderungssatz-XML
- osmchangexml: osmChange XML
+ osmchangexml: osmChange-XML
feed:
title: 'Änderungssatz: %{id}'
title_comment: Änderungssatz %{id} - %{comment}
advice: 'Falls der obenstehende Export fehlschlägt, erwäge bitte, eine der
unten aufgelisteten Quellen zu verwenden:'
body: Dieser Bereich ist zu groß, um als OpenStreetMap-XML-Daten exportiert
- werden. Bitte heranzoomen, einen kleineren Bereich wählen oder eine der
+ zu werden. Bitte heranzoomen, einen kleineren Bereich wählen oder eine der
folgenden Quellen für Massendatendownloads nutzen.
planet:
title: Planet OSM
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kabelbahnwagen
chair_lift: Sessellift
drag_lift: Schlepplift
+ gondola: Gondelbahn
station: Gondelstation
aeroway:
aerodrome: Flugplatz
taxiway: Rollbahn
terminal: Terminal
amenity:
+ animal_shelter: Tierheim
arts_centre: Kulturzentrum
atm: Geldautomat
bank: Bank
bicycle_parking: Fahrrad-Stellplatz
bicycle_rental: Fahrradverleih
biergarten: Biergarten
+ boat_rental: Bootsverleih
brothel: Bordell
bureau_de_change: Wechselstube
bus_station: Busbahnhof
food_court: Food-Court
fountain: Springbrunnen
fuel: Tankstelle
+ gambling: Glücksspiel
grave_yard: Friedhof
gym: Fitnessstudio
health_centre: Gesundheitszentrum
library: Bücherei
market: Markt
marketplace: Marktplatz
+ monastery: Kloster
+ motorcycle_parking: Motorradparkplatz
nightclub: Nachtklub
nursery: Kindertagesstätte
nursing_home: Altersheim
office: Büro
parking: Parkplatz
+ parking_entrance: Parkeinfahrt
pharmacy: Apotheke
place_of_worship: Andachtsstätte
police: Polizei
gardener: Gärtner
painter: Maler
photographer: Fotograf
+ plumber: Klempner
shoemaker: Schuhmacher
+ tailor: Schneider
"yes": Handwerksgeschäft
emergency:
+ ambulance_station: Rettungswache
+ defibrillator: Defibrillator
+ landing_site: Notlandeplatz
phone: Notrufsäule
highway:
+ abandoned: Verlassene Schnellstraße
bridleway: Reitweg
bus_guideway: Busspur
bus_stop: Bushaltestelle
battlefield: Kampfgebiet
boundary_stone: Grenzstein
building: Historisches Gebäude
+ bunker: Bunker
castle: Schloss
church: Kirche
city_gate: Stadttor
citywalls: Stadtmauern
fort: Fort
+ heritage: Bauerbe
house: Historisches Haus
icon: Symbol
manor: Gutshaus
memorial: Denkmal
mine: Mine
monument: Monument
+ roman_road: Römerstraße
ruins: Ruine
+ stone: Findling
tomb: Grabstätte
tower: Historischer Turm
wayside_cross: Wegkreuz
wayside_shrine: Bildstock
wreck: Schiffswrack
+ junction:
+ "yes": Kreuzung
landuse:
allotments: Kleingärten
basin: Becken
road: Straßenfläche
village_green: Dorfwiese (brit.)
vineyard: Weingut
+ "yes": Bodennutzung
leisure:
beach_resort: Strandbad
bird_hide: Vogelbeobachtungshütte
+ club: Verein
common: öffentliche Grünfläche (brit.)
dog_park: Hundepark
fishing: Fischereigrund
pitch: Sportplatz
playground: Spielplatz
recreation_ground: Erholungsgebiet
+ resort: Ferienort
sauna: Sauna
slipway: Slipanlage
sports_centre: Sportzentrum
swimming_pool: Schwimmbecken
track: Laufbahn
water_park: Wasserpark
+ "yes": Freizeit
man_made:
lighthouse: Leuchtturm
+ pipeline: Rohrleitung
tower: Turm
works: Fabrik
+ "yes": menschgemacht
military:
airfield: Militärflugplatz
barracks: Kaserne
travel_agent: Reisebüro
"yes": Büro
place:
+ allotments: Schrebergärten
+ block: Block
airport: Flughafen
city: Stadt
country: Staat
spur: Anschlussgleis
station: Bahnhof
stop: Haltepunkt
- subway: U-Bahn-Station
+ subway: U-Bahn
subway_entrance: U-Bahn-Eingang
switch: Weiche
tram: Straßenbahn
results:
no_results: Keine Ergebnisse gefunden
more_results: Mehr Treffer
- distance:
- zero: weniger als 1 km
- one: ca. 1 km
- other: ca. %{count} km
- direction:
- south_west: südwestlich
- south: südlich
- south_east: südöstlich
- east: östlich
- north_east: nordöstlich
- north: nördlich
- north_west: nordwestlich
- west: westlich
layouts:
project_name:
title: OpenStreetMap
mapping_link: mit dem Kartieren anfangen
legal_babble:
title_html: Urheberrecht und Lizenz
- intro_1_html: OpenStreetMap sind <i>„Open Data“</i>, die gemäß der <a href="http://opendatacommons.org/licenses/odbl/">Open
- Data Commons Open Database Lizenz</a> (ODbL) verfügbar sind.
+ intro_1_html: |-
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> sind <i>„Open Data“</i>, die gemäß der
+ <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database Lizenz</a>
+ (ODbL) durch die <a href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF) verfügbar sind.
intro_2_html: |-
Es steht dir frei unsere Daten zu kopieren, weiterzugeben,
zu übermitteln sowie anzupassen, sofern du OpenStreetMap
credit_1_html: Wir verlangen die Verwendung des Hinweises „© OpenStreetMap-Mitwirkende“.
credit_2_html: |-
Du musst auch klarstellen, dass die Daten unter der Open-Database-Lizenz
- verfügbar sind, und sofern du unsere Kartenkacheln verwendest, dass die
+ verfügbar sind, und, sofern du unsere Kartenkacheln verwendest, dass die
Kartografie gemäß CC BY-SA lizenziert ist. Du kannst dies tun, indem du auf
- <a href="http://www.openstreetmap.org/copyright">www.openstretmap.org/copyright</a> verlinkst.
+ <a href="http://www.openstreetmap.org/copyright">www.openstreetmap.org/copyright</a> verlinkst.
Ersatzweise, und als Erfordernis, falls du OSM in Datenform weitergibst,
kannst du die Lizenz(en) direkt verlinken und benennen. In Medien, in denen
- keine Links möglich sind (z. B. gedruckten Werken), empfehlen wir dir,
+ keine Links möglich sind (z.B. gedruckten Werken), empfehlen wir dir,
deine Leser direkt auf openstreetmap.org zu verweisen (möglicherweise mit
dem Erweitern von „OpenStreetMap“ zur vollen Adresse), auf opendatacommons.org,
und, sofern zutreffend, auf creativecommons.org.
alt: Beispiel, wie man auf OpenStreetMap auf einer Webseite hinweist
title: Namensnennungs-Beispiel auf einer Website mit elektronischer Karte
more_title_html: Weitere Informationen
- more_1_html: Mehr Informationen dazu, wie unsere Daten verwendet werden können
- und wie man auf unsere Urheberschaft hinweist, kann man unter <a href="http://wiki.openstreetmap.org/wiki/DE:Legal_FAQ">Häufige
- rechtliche Fragen (Legal FAQ)</a> nachlesen.
+ more_1_html: |-
+ Mehr Informationen dazu, wie unsere Daten verwendet werden können und wie man auf unsere Urheberschaft hinweist,
+ kann man auf unserer <a href="http://osmfoundation.org/Licence">OSMF-Lizenzseite</a> und in den
+ <a href="http://wiki.openstreetmap.org/wiki/DE:Legal_FAQ">Häufigen rechtlichen Fragen (Legal FAQ)</a> nachlesen.
more_2_html: "Obwohl OpenStreetMap „Open Data“ ist, können wir keine \nunentgeltliche
Karten-API für Drittparteienentwickler bereitstellen.\nSiehe unsere <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">API-Verwendungsrichtlinie</a>,\n<a
href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">Kachelverwendungsrichtlinie</a>\nund
2007 (<a href="http://www.and.com">www.and.com</a>)'
contributors_nz_html: '<strong>Neuseeland</strong>: Enthält Daten aus <i>Land
Information New Zealand</i>. Urheberrecht vorbehalten.'
+ contributors_si_html: |-
+ <strong>Slowenien</strong>: Enthält Daten aus der
+ <a href="http://www.gu.gov.si/en/">Vermessungs- und Kartierungsbehörde</a> sowie dem
+ <a href="http://www.mkgp.gov.si/en/">Ministerium für Landwirtschaft, Forsten und Ernährung</a>
+ (öffentliche Informationen von Slowenien).
contributors_za_html: '<strong>Südafrika</strong>: Enthält Daten von <i><a href="http://www.ngi.gov.za/">Chief
Directorate: National Geo-Spatial Information</a></i>, Staatliches Urheberrecht
vorbehalten.'
bitte über unser <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">Verfahren
zum Entfernen von Inhalten</a> oder melde dies direkt mit unserem
<a href="http://dmca.openstreetmap.org/">Onlineformular</a>.
+ trademarks_title_html: <span id="trademarks"></span>Markenzeichen
+ trademarks_1_html: OpenStreetMap und das Lupenlogo sind eingetragene Warenzeichen
+ der OpenStreetMap Foundation. Falls du Fragen über deine Verwendung der Marken
+ hast, sende deine Fragen bitte an die <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Lizenz-Arbeitsgruppe</a>.
welcome_page:
title: Willkommen!
introduction_html: |-
tag_html: |-
Ein <strong>tag</strong> ist eine Eigenschaft, die man einem Objekt zuweist. Z.B. der Name eines Restaurants
oder die maximal erlaubte Geschwindigkeit auf einer Straße.
+ rules:
+ title: Regeln!
+ paragraph_1_html: "OpenStreetMap hat nur wenige formale Regeln, aber wir erwarten,
+ dass alle Teilnehmer\nmit der Gemeinschaft zusammenarbeiten und kommunizieren.
+ Falls du andere Aktivitäten erwägst\nals per Hand zu bearbeiten, lies und
+ folge bitte den Richtlinien zu\n<a href=\"http://wiki.openstreetmap.org/wiki/DE:Import/Guidelines\">Importen</a>
+ und \n<a href=\"http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct\">automatischen
+ Bearbeitungen</a>."
questions:
title: Fragen?
paragraph_1_html: |-
title: Willkommen bei OSM
description: Beginne mit dieser Schnellanleitung, die die OpenStreetMap-Grundlagen
abdeckt.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/DE:Beginners%27_guide
+ title: Anleitung für Anfänger
+ description: Eine durch die Gemeinschaft gewartete Anleitung für Anfänger.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Stelle eine Frage oder suche nach Antworten auf der OSM-Fragen-und-Antworten-Seite.
+ mailing_lists:
+ title: Mailinglisten
+ description: Stelle eine Frage und diskutiere interessante Sachen zu einem weiten
+ Bereich von thematischen oder regionalen Mailinglisten.
+ forums:
+ title: Foren
+ description: Fragen und Diskussionen für diejenigen, die eine Oberfläche in
+ der Art einer Anschlagstafel bevorzugen.
+ irc:
+ title: IRC
+ description: Interaktiver Chat in vielen unterschiedlichen Sprachen und zu vielen
+ Themen.
+ switch2osm:
+ title: Zu OSM wechseln
+ description: Hilfe für auf Karten und anderen Diensten gegründeten Unternehmen
+ und Organisationen, die zu OpenStreetMap wechseln.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
abänderst oder auf bestimmte Art einbaust, darfst du das Ergebnis nur unter
der gleichen Lizenz verbreiten. Siehe die
<a href='%{copyright_path}'>Urheberrechts- und Lizenzseite</a> für Einzelheiten.
+ legal_title: Gesetzliche Hinweise
+ legal_html: |-
+ Diese Website und viele andere ähnliche Dienste werden im Auftrag der Gemeinschaft
+ formal betrieben von der <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF).
+ <br>
+ Bitte <a href='http://osmfoundation.org/Contact'>kontaktiere die OSMF</a>,
+ falls du Lizenz-, Urheberrechts- oder andere rechtliche Fragen und Probleme hast.
partners_title: Partner
notifier:
diary_comment_notification:
search: Suchen
get_directions: Route berechnen
get_directions_title: Routenberechnung zwischen zwei Orten
- close_directions: Schliessen der Route
- close_directions_title: Schliessen des Routenmenus
from: Von
to: Nach
where_am_i: Wo bin ich?
register now: Jetzt registrieren
with username: 'Hast du bereits ein Konto bei OpenStreetMap? Bitte melde dich
mit deinem Benutzernamen und Passwort an:'
- with openid: 'Alternativ kannst du deine OpenID zum Anmelden nutzen:'
+ with external: 'Verwende alternativ eine Drittpartei zur Anmeldung:'
new to osm: Neu bei OpenStreetMap?
to make changes: Um Datenänderungen bei OpenStreetMap vornehmen zu können, musst
Du ein Benutzerkonto haben.
gesperrt.<br />Bitte kontaktiere den <a href="%{webmaster}">Webmaster</a>,
falls du dies klären möchtest.
auth failure: Mit diesen Daten leider keine Anmeldung möglich.
- openid missing provider: Wir konnten leider keine Verbindung zu deinem OpenID-Dienst
- herstellen.
- openid invalid: Deine OpenID scheint leider fehlerhaft zu sein.
openid_logo_alt: Mit einer OpenID anmelden
- openid_providers:
+ auth_providers:
openid:
title: Mit OpenID anmelden
alt: Mit einer OpenID-URL anmelden
google:
title: Mit Google anmelden
- alt: Mit einer OpenID von Google anmelden
+ alt: Mit einer Google-OpenID anmelden
+ facebook:
+ title: Mit Facebook anmelden
+ alt: Mit einem Facebook-Konto anmelden
+ windowslive:
+ title: Mit Windows Live anmelden
+ alt: Mit einem Windows-Live-Konto anmelden
yahoo:
- title: Mit Yahoo! anmelden
- alt: Mit einer OpenID von Yahoo! anmelden
+ title: Mit Yahoo anmelden
+ alt: Mit einer Yahoo-OpenID anmelden
wordpress:
title: Mit Wordpress anmelden
- alt: Mit einer OpenID von Wordpress anmelden
+ alt: Mit einer Wordpress-OpenID anmelden
aol:
title: Mit AOL anmelden
- alt: Mit einer OpenID von AOL anmelden
+ alt: Mit einer AOL-OpenID anmelden
logout:
title: Abmelden
heading: Von OpenStreetMap abmelden
display name: 'Benutzername:'
display name description: Dein öffentlich angezeigter Benutzername. Er kann
später in den Einstellungen geändert werden.
- openid: '%{logo} OpenID:'
+ external auth: 'Drittparteiauthentifikation:'
password: 'Passwort:'
confirm password: 'Passwort bestätigen:'
- use openid: 'Alternativ kannst du eine OpenID von %{logo} zum Anmelden nutzen:'
- openid no password: Für OpenID wird kein Passwort benötigt. Allerdings könnten
- dennoch einige zusätzlich Hilfsprogramme oder Server ein Passwort benötigen.
- openid association: |-
- <p>Deine OpenID ist noch nicht mit einem Benutzerkonto bei OpenStreetMap verknüpft.</p>
+ use external auth: Verwende alternativ eine Drittpartei zur Anmeldung
+ auth no password: Mit Drittparteiauthentifikation ist kein Passwort erforderlich,
+ jedoch können einige Extrawerkzeuge oder Server eines benötigen.
+ auth association: |-
+ <p>Deine ID ist noch nicht mit einem OpenStreetMap-Benutzerkonto verknüpft.</p>
<ul>
- <li>Sofern Du noch kein Benutzerkonto bei OpenStreetMap hast, kannst Du eines mit dem Formular unten anlegen.</li>
+ <li>Falls du neu auf OpenStreetMap bist, erstelle bitte mithilfe des unten stehenden Formulars ein neues Benutzerkonto.</li>
<li>
- Sofern Du bereits ein Benutzerkonto hast, kannst du dich dort mit deinem
- Benutzernamen und Passwort anmelden und es danach mit deiner OpenID
- unter deinen Benutzereinstellungen verknüpfen.
+ Falls du schon ein Benutzerkonto besitzt, kannst du dich bei deinem Konto
+ mit Benutzernamen und Passwort anmelden und anschließend das Benutzerkonto
+ in den Einstellungen mit deiner ID verknüpfen.
</li>
</ul>
continue: Registrieren
current email address: 'Aktuelle E-Mail-Adresse:'
new email address: 'Neue E-Mail-Adresse:'
email never displayed publicly: (nicht öffentlich sichtbar)
+ external auth: 'Externe Authentifikation:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Was ist das?
public editing:
press confirm button: Zur Aktivierung Deines Benutzerkontos klicke bitte unten
auf „Bestätigen“.
button: Bestätigen
+ success: |-
+ Dein Benutzerkonto wurde bestätigt, danke fürs Registrieren!
+ <br /><br />
+ Auf <a href="http://www.openstreetmap.de/willkommen/">dieser Seite</a> findest du nützliche Links und Informationen, die dir den Einstieg erleichtern.
already active: Dieses Benutzerkonto wurde bereits bestätigt.
unknown token: Dieser Bestätigungscode ist abgelaufen oder nicht vorhanden.
reconfirm_html: Um die Bestätigungs-E-Mail erneut zuzusenden, <a href="%{reconfirm}">klicke
success: Wir haben eine neue Bestätigungsnachricht an %{email} gesendet. Sobald
du dein Benutzerkonto bestätigt hast, kannst du mit dem Kartieren beginnen.<br
/><br />Sofern du ein Antispamsystem nutzt, das selbst Bestätigungen anfordert,
- musst du <webmaster@openstreetmap.org> auf dessen Positivliste setzten, da
- wir auf keine Bestätigungsanfragen reagieren können.
+ musst du webmaster@openstreetmap.org auf dessen Positivliste setzen, da wir
+ auf keine Bestätigungsanfragen reagieren können.
failure: Benutzer %{name} konnte nicht gefunden werden.
confirm_email:
heading: Änderung der E-Mail-Adresse bestätigen
press confirm button: Zur Bestätigung der neuen E-Mail-Adresse klicke bitte
unten auf „Bestätigen“.
button: Bestätigen
- success: Deine E-Mail-Adresse wurde bestätigt, danke fürs Registrieren!
+ success: Die Änderung deiner E-Mail-Adresse wurde bestätigt!
failure: Eine E-Mail-Adresse wurde bereits mit diesem Link bestätigt.
+ unknown_token: Dieser Bestätigungscode ist abgelaufen oder nicht vorhanden.
set_home:
flash success: Standort erfolgreich gespeichert
go_public:
body: |-
<p>Dein Benutzerkonto wurde aufgrund verdächtiger Aktivitäten automatisch gesperrt, um potentiellen Schaden von OpenStreetMap abzuwenden.</p>
<p>Diese Entscheidung wird in Kürze von einem der Administratoren überprüft. Du kannst dich aber auch direkt an den %{webmaster} wenden, sofern du diese Angelegenheit klären möchtest.</p>
+ auth_failure:
+ connection_failed: Verbindung zum Authentifikationsprovider fehlgeschlagen
+ invalid_credentials: Ungültige Authentifikationsinformationen
+ no_authorization_code: Kein Autorisierungscode
+ unknown_signature_algorithm: Unbekannter Signaturalgorithmus
+ invalid_scope: Ungültiger Bereich
user_role:
filter:
not_an_administrator: Benutzerrollen können nur von Administratoren verwaltet
heading: '%{block_on} gesperrt durch %{block_by}'
time_future: Endet in %{time}
time_past: Geendet vor %{time}
+ created: Erstellt
+ ago: vor %{time}
status: Status
show: anzeigen
edit: Bearbeiten
link: Link oder HTML
long_link: Link
short_link: Kurz-URL
+ geo_uri: Geo-URI
embed: HTML
custom_dimensions: Ausschnitt festlegen
format: 'Format:'
directions:
engines:
graphhopper_bicycle: Fahrrad (GraphHopper)
- graphhopper_foot: Fuss (GraphHopper)
+ graphhopper_foot: Fuß (GraphHopper)
mapquest_bicycle: Fahrrad (MapQuest)
mapquest_car: Auto (MapQuest)
- mapquest_foot: Fuss (MapQuest)
+ mapquest_foot: Fuß (MapQuest)
osrm_car: Auto (OSRM)
- directions: 'Fahranweisungen:'
- distance: 'Distanz:'
+ directions: 'Routenanweisungen:'
+ distance: Distanz
errors:
no_route: Wir konnten keine Strecke zwischen diesen beiden Orten berechnen.
no_place: Wir konnten den Ort nicht finden.
instructions:
- continue_on: Weiter auf
- slight_right: Rechts halten auf
- turn_right: Rechts abbiegen auf
- sharp_right: Hart rechts auf
- uturn: U-turn along
- sharp_left: Hart links auf
- turn_left: Links abbiegen auf
- slight_left: Links halten auf
- via_point: (via point)
- follow: Folge
- roundabout: Im Kreisverkehr nehme
- leave_roundabout: Verlasse den Kreisverkehr -
- stay_roundabout: Stay on roundabout -
- start: Start at end of
- destination: Ziel erreicht
- against_oneway: Go against one-way on
- end_oneway: Ende der Einbahnstrasse
- unnamed: (unbekannt)
- courtesy: Fahranweisungen stammen von %{link}
- time: 'Zeit:'
+ continue_without_exit: Weiter auf %{name}
+ slight_right_without_exit: Leicht rechts auf %{name}
+ turn_right_without_exit: Rechts abbiegen auf %{name}
+ sharp_right_without_exit: Scharf rechts auf %{name}
+ uturn_without_exit: Umkehren entlang %{name}
+ sharp_left_without_exit: Scharf links auf %{name}
+ turn_left_without_exit: Links abbiegen auf %{name}
+ slight_left_without_exit: Leicht links auf %{name}
+ via_point_without_exit: (über Punkt)
+ follow_without_exit: '%{name} folgen'
+ roundabout_without_exit: Im Kreisverkehr nehme %{name}
+ leave_roundabout_without_exit: Kreisverkehr verlassen – %{name}
+ stay_roundabout_without_exit: Auf Kreisverkehr bleiben – %{name}
+ start_without_exit: Starten beim Ende von %{name}
+ destination_without_exit: Ziel erreicht
+ against_oneway_without_exit: Gegen die Einbahnstraße gehen auf %{name}
+ end_oneway_without_exit: Ende der Einbahnstraße auf %{name}
+ roundabout_with_exit: Beim Kreisverkehr nehme die Ausfahrt %{exit} auf %{name}
+ unnamed: unbekannt
+ courtesy: Routenanweisungen stammen von %{link}
+ time: Zeit
query:
node: Knoten
way: Weg
relation: Relation
- nothing_found: Keine Funktionen gefunden
+ nothing_found: Keine Objekte gefunden
error: 'Fehler beim Kontaktieren von %{server}: %{error}'
timeout: Zeitüberschreitung beim Kontaktieren von %{server}
redaction:
cities: Suki
towns: Bacari
places: Cayi
- direction:
- south_west: Veroc-perayen
- south: Veroc
- south_east: Veroci-akewten
- east: Akewten
- north_east: Zıme-Akewten
- north: Zıme
- north_west: Zıme-perayen
- west: Perayen
layouts:
logout: veciyayış
log_in: cı kewe
register now: Enewkê qeyd bê
no account: Hesabê şıma çıniyo?
openid_logo_alt: OpenID ya dekewê de
- openid_providers:
- openid:
- title: OpenID ya dekewê de
- alt: OpenID URL ya dekewê de
- google:
- title: Google ya dekewê de
- alt: Google OpenID ya dekewê de
- yahoo:
- title: Yahoo ya dekewê de
- alt: Yahoo OpenID ya dekewê de
- wordpress:
- title: Wordpress ya dekewê de
- alt: Wordpress OpenID ya dekewê de
- aol:
- title: AOL ya dekewê de
- alt: AOL OpenID ya dekewê de
logout:
title: Veciyayış
heading: OpenStreetMap ra vıcyayış
email address: 'Adresa e-postey:'
confirm email address: 'Adresê E-posta tesdiq ke:'
display name: 'Nameyo ke Aseno:'
- openid: '%{logo} OpenID:'
password: 'Parola:'
confirm password: 'Parolay tesdiq ke:'
- use openid: ALternativey, %{logo} OpenID ra karfiye
continue: Dewam ke
terms:
consider_pd_why: no çıko?
current email address: 'E-postay şımaya newki:'
new email address: 'E-postay adresiyo newe:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: no çıko?
public editing:
results:
no_results: Žedne wuslědki namakane
more_results: Dalšne wuslědki
- distance:
- few: něźi %{count} km
- one: wokoło 1 km
- two: něźi %{count} km
- zero: mjenjej ako 1 km
- other: něźi %{count} km
- direction:
- south_west: krotki wjacor
- south: pódpołdnjo
- south_east: krotke zajtšo
- east: pódzajtšo
- north_east: dłujke zajtšo
- north: pódpołnoc
- north_west: dłujki wjacor
- west: pódwjacor
layouts:
logo:
alt_text: Logo OpenStreetMap
register now: Něnto registrěrowaś
with username: 'Maš južo konto pla OpenStreetMap? Pšosym pśizjaw se ze swójim
wužywarskim mjenim a gronidłom:'
- with openid: 'Alternatiwnje móžoš swój OpenID za pśizjawjenje wužywaś:'
new to osm: Nowy w OpenStreetMap?
to make changes: Aby daty OpenStreetMap změnił, musyš konto měś.
create account minute: Załož konto. Trajo jano minutku.
account is suspended: Twójo konto jo se bóžko wupowěźeło dla pódglědneje aktiwity.<br
/>Staj se z <a href="%{webmaster}">webmasterom</a>, jolic coš wó tom diskutěrowaś.
auth failure: Bóžko, pśizjawjenje z toś tymi datami njejo móžno.
- openid missing provider: Bóžko njejsmy mógli z twójim OpenID-póbitowarjom zwězaś
- openid invalid: Bóžko zda se, až twój OpenID jo njepłaśiwy
openid_logo_alt: Z OpenID se pśizjawiś
- openid_providers:
- openid:
- title: Z OpenID se pśizjawiś
- alt: Z OpenID-URL se pśizjawiś
- google:
- title: Z Google pśizjawiś
- alt: Z OpenID z Google pśizjawiś
- yahoo:
- title: Z Yahoo pśizjawiś
- alt: Z OpenID z Yahoo pśizjawiś
- wordpress:
- title: Z Wordpress pśizjawiś
- alt: Z OpenID z Wordpress pśizjawiś
- aol:
- title: Z AOL pśizjawiś
- alt: Z OpenID z AOL pśizjawiś
logout:
title: Wótzjawiś se
heading: Z OpenStreetMap se wótzjawiś
display name: 'Wužywarske mě:'
display name description: Sy wužywarske mě zjawnje pokazał. Móžoš to pózdźej
w nastajenjach změniś.
- openid: '%{logo} OpenID:'
password: 'Gronidło:'
confirm password: 'Gronidło wobkšuśiś:'
- use openid: Alternatiwnje móžoš OpenID %{logo} za pśizjawjenje wužywaś
- openid no password: Za OpenID gronidło njejo trěbne, ale někotare wósebne rědy
- abo serwer by mógli gronidło pótrjebaś.
- openid association: |-
- <p>Twój OpenID hyšći njejo zwězany z kontom OpenStreetMap.</p>
- <ul>
- <li>Jolic sy nowy w OpenStreetMap, załož nowe konto z pomocu slědujucego formulara.</li>
- <li>
- Jolic maš južo konto, móžoš se z wužywarskim mjenim a gronidłom pśizjawiś a pótom konto ze swójim OpenID w swójich wužywarskich nastajenjach zwězaś.
- </li>
- </ul>
continue: Registrěrowaś
terms accepted: Źěkujomy se, až sy nowe wuměnjenja za sobuskutkajucuch akceptěrował!
terms declined: Woblutujomy, až sy se rozsuźił, nowe wužywarske wuměnjenja njeakceptěrowaś.
new email address: 'Nowa e-mailowa adresa:'
email never displayed publicly: (njejo nigda widobna)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Co to jo?
public editing:
press confirm button: Klikni dołojce na wobkšuśeński tłocašk, aby aktiwěrował
swójo konto.
button: Wobkšuśiś
+ success: Twójo konto jo se wobkšuśiło, źěkujomy se za registrěrowanje!
already active: Toś te konto jo se južo wobkšuśiło.
unknown token: Wobkšuśeński kod jo pśepadnjony abo njeeksistěrujo.
reconfirm_html: Jolic musyš nam wobkšuśeńsku e-mailku znowego pósłaś, <a href="%{reconfirm}">klikni
# Author: Logictheo
# Author: Omnipaedista
# Author: Protnet
+# Author: Ruila
# Author: Shirayuki
# Author: Zserdx
# Author: 아라
created_html: Δημιουργήθηκε <abbr title='%{title}'>πριν από %{time}</abbr>
closed_html: Κλείστηκε <abbr title='%{title}'>πριν από %{time}</abbr>
created_by_html: Δημιουργήθηκε <abbr title='%{title}'>πριν από %{time}</abbr>
- αÏ\80Ï\8c Ï\84ον %{user}
- deleted_by_html: Î\94ιεγÏ\81άÏ\86η <abbr title='%{title}'>Ï\80Ï\81ιν αÏ\80Ï\8c %{time}</abbr> αÏ\80Ï\8c Ï\84ον
+ αÏ\80Ï\8c Ï\87Ï\81ήÏ\83Ï\84η %{user}
+ deleted_by_html: Î\94ιεγÏ\81άÏ\86η <abbr title='%{title}'>Ï\80Ï\81ιν αÏ\80Ï\8c %{time}</abbr> αÏ\80Ï\8c Ï\87Ï\81ήÏ\83Ï\84η
%{user}
edited_by_html: Επεξεργάστηκε <abbr title='%{title}'>πριν από %{time}</abbr> από
- Ï\84ον %{user}
- closed_by_html: Î\9aλείÏ\83Ï\84ηκε <abbr title='%{title}'>Ï\80Ï\81ιν αÏ\80Ï\8c %{time}</abbr> αÏ\80Ï\8c Ï\84ον
+ Ï\87Ï\81ήÏ\83Ï\84η %{user}
+ closed_by_html: Î\9aλείÏ\83Ï\84ηκε <abbr title='%{title}'>Ï\80Ï\81ιν αÏ\80Ï\8c %{time}</abbr> αÏ\80Ï\8c Ï\87Ï\81ήÏ\83Ï\84η
%{user}
version: Έκδοση
in_changeset: Ομάδα αλλαγών
relation: Σχέσεις (%{count})
relation_paginated: Σχέσεις (%{x}-%{y} από %{count})
comment: Σχόλια (%{count})
+ commented_by: Σχόλιο από χρήστη %{user} <abbr title='%{exact_time}'>πριν από
+ %{when}</abbr>
changesetxml: Ομάδας αλλαγών XML
osmchangexml: osmChange XML
feed:
taxiway: Τροχιόδρομος
terminal: Τερματικός Σταθμός
amenity:
+ animal_shelter: Καταφύγιο Ζώων
arts_centre: Κέντρο Τεχνών
atm: ΑΤΜ
bank: Τράπεζα
bicycle_parking: Στάθμευση Ποδηλάτων
bicycle_rental: Ενοικίαση Ποδηλάτων
biergarten: Υπαίθρια Μπυραρία
+ boat_rental: Ενοικίαση Σκαφών
brothel: Οίκος Ανοχής
bureau_de_change: Ανταλλακτήριο Συναλλάγματος
bus_station: Σταθμός Λεωφορείου
charging_station: Σταθμός Φόρτισης
cinema: Κινηματογράφος
clinic: Κλινική
+ clock: Ρολόι
college: Κολέγιο
community_centre: Κοινοτικό Κέντρο
courthouse: Δικαστήριο
food_court: Προαύλιο Φαγητού
fountain: Συντριβάνι
fuel: Καύσιμα
+ gambling: Τυχερά παιχνίδια
grave_yard: Νεκροταφείο
gym: Γυμναστήριο
health_centre: Κέντρο Υγείας
library: Βιβλιοθήκη
market: Αγορά
marketplace: Αγορά
+ monastery: Μοναστήρι
+ motorcycle_parking: Χώρος στάθμευσης μοτοσικλετών
nightclub: Νυχτερινό Κέντρο
nursery: Παιδικός Σταθμός
nursing_home: Οίκος Ευγηρίας
office: Γραφείο
parking: Χώρος Στάθμευσης
+ parking_entrance: Είσοδος Για Το Χώρο Στάθμευσης
pharmacy: Φαρμακείο
place_of_worship: Τόπος Λατρείας
police: Αστυνομία
veterinary: Κτηνιατρική Χειρουργική
village_hall: Αίθουσα Χωριού
waste_basket: Καλάθι Απορριμμάτων
+ waste_disposal: Διάθεση Αποβλήτων
youth_centre: Κέντρο Νεολαίας
boundary:
administrative: Διοικητικό Όριο
"yes": Γέφυρα
building:
"yes": Κτίριο
+ craft:
+ brewery: Ζυθοποιείο
+ carpenter: Ξυλουργός
+ electrician: Ηλεκτρολόγος
+ gardener: Κηπουρός
+ painter: Ζωγράφος
+ photographer: Φωτογράφος
+ plumber: Υδραυλικός
+ shoemaker: Τσαγκάρης
+ tailor: Ράφτης
emergency:
+ defibrillator: Απινιδωτής
phone: Τηλέφωνο Έκτακτης Ανάγκης
highway:
bridleway: Μονοπάτι για άλογα
bus_stop: Στάση Λεωφορείου
construction: Δρόμος υπό Κατασκευή
cycleway: Ποδηλατόδρομος
+ elevator: Ανελκυστήρας
emergency_access_point: Σημείο Πρόσβασης Έκτακτης Ανάγκης
footway: Μονοπάτι
ford: Κοιτόστρωση
tertiary: Τριτεύων Δρόμος
tertiary_link: Τριτεύων Δρόμος
track: Χωματόδρομος
+ traffic_signals: Σήματα Κυκλοφορίας
trail: Μονοπάτι
trunk: Εθνική Οδός
trunk_link: Εθνική Οδός
unclassified: Αταξινόμητη Οδός
unsurfaced: Δρόμος χωρίς Επίστρωση
+ "yes": Δρόμος
historic:
archaeological_site: Αρχαιολογικός Χώρος
battlefield: Πεδίο Μάχης
boundary_stone: Συνοριακή Στήλη
- building: Κτίριο
+ building: Î\99Ï\83Ï\84οÏ\81ικÏ\8c Î\9aÏ\84ίÏ\81ιο
castle: Κάστρο
church: Εκκλησία
citywalls: Τείχη της Πόλης
memorial: Μνημείο
mine: Ορυχείο
monument: Μνημείο
+ roman_road: Ρωμαϊκός Δρόμος
ruins: Ερείπιο
+ stone: Πέτρα
tomb: Τάφος
tower: Πύργος
wayside_shrine: Εικονοστάσιο
fitness_station: Γυμναστήριο
garden: Κήπος
golf_course: Γήπεδο Γκολφ
+ horse_riding: Ιππασία
ice_rink: Παγοδρόμιο
marina: Μαρίνα
miniature_golf: Μίνι Γκολφ
swimming_pool: Πισίνα
track: Στίβος
water_park: Υδάτινο Πάρκο
+ "yes": Ψυχαγωγία
+ man_made:
+ lighthouse: Φάρος
+ tower: Πύργος
+ works: Εργοστάσιο
military:
airfield: Στρατιωτικό Αεροδρόμιο
barracks: Στρατώνας
forest: Δάσος
geyser: Θερμοπίδακας
glacier: Παγετώνας
+ grassland: Λιβάδι
heath: Ρείκι
hill: Λόφος
island: Νησί
reef: Ύφαλος
ridge: Σκόπελος
rock: Βράχος
+ sand: Άμμος
scrub: Θαμνότοπος
spring: Πηγή
stone: Πέτρα
wood: Δάσος
office:
accountant: Λογιστής
+ administrative: Διαχείριση
architect: Αρχιτέκτονας
company: Εταιρεία
employment_agency: Οργανισμός Απασχόλησης
results:
no_results: Δεν βρέθηκε κανένα αποτέλεσμα
more_results: Περισσότερα αποτελέσματα
- distance:
- one: περίπου 1χλμ
- zero: λιγότερο από 1χλμ
- other: περίπου %{count}χλμ
- direction:
- south_west: νοτιοδυτικά
- south: νότια
- south_east: νοτιοανατολικά
- east: ανατολικά
- north_east: βορειοανατολικά
- north: βόρεια
- north_west: βορειοδυτικά
- west: δυτικά
layouts:
logo:
alt_text: Λογότυπο OpenStreetMap
title: Καλώς ήλθατε στο OSM
description: Ξεκινήστε με αυτές τις γρήγορες οδηγίες που καλύπτουν τα βασικά
OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/El:Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
close: Κλείσιμο
search:
search: Αναζήτηση
+ from: Από
+ to: Προς
where_am_i: Πού είμαι;
where_am_i_title: Περιέγραψε την τωρινή τοποθεσία με χρήση της μηχανής αναζήτησης
submit_text: Μετάβαση
register now: Εγγραφείτε τώρα
with username: 'Έχετε ήδη λογαριασμό OpenStreetMap; Παρακαλώ συνδεθείτε με το
όνομα χρήστη και κωδικό πρόσβασης:'
- with openid: 'Εναλλακτικά, χρησιμοποιήστε OpenID για να συνδεθείτε:'
new to osm: Νέοι στο OpenStreetMap;
to make changes: Για να κάνεις αλλαγές στα δεδομένα του OpenStreetMap, πρέπει
να έχεις λογαριασμό.
δραστηριότητας.<br>Παρακαλώ επικοινωνήστε με τον <a href="%{webmaster}">webmaster</a>
εάν θέλετε να το συζητήσετε.
auth failure: Λυπάμαι, δεν μπορείτε να συνδεθείτε με αυτές τις λεπτομέρειες.
- openid missing provider: Λυπάμαι, δεν μπορώ να έρθω σε επαφή με τον πάροχο σας
- OpenID
- openid invalid: Λυπάμαι, το OpenID φαίνεται να είναι ακατάλληλο
openid_logo_alt: Σύνδεση με ένα OpenID
- openid_providers:
- openid:
- title: Σύνδεση με OpenID
- alt: Σύνδεση με ένα URL OpenID
- google:
- title: Σύνδεση με Google
- alt: Σύνδεση με ένα Google OpenID
- yahoo:
- title: Σύνδεση με Yahoo
- alt: Σύνδεση με ένα Yahoo OpenID
- wordpress:
- title: Σύνδεση με Wordpress
- alt: Σύνδεση με ένα Wordpress OpenID
- aol:
- title: Σύνδεση με AOL
- alt: Σύνδεση με AOL OpenID
logout:
title: Αποσύνδεση
heading: Αποσύνδεση από το OpenStreetMap
display name: 'Εμφανιζόμενο όνομα:'
display name description: Το δημόσια εμφανιζόμενο όνομα χρήστη. Μπορείτε να
το αλλάξετε αργότερα από τις προτιμήσεις.
- openid: '%{logo} OpenID:'
password: 'Κωδικός:'
confirm password: 'Επιβεβαίωση Κωδικού:'
- use openid: 'Εναλλακτικά, χρήσιμοποιήστε %{logo} OpenID για να συνδεθείτε:'
- openid no password: Με OpenID δεν απαιτείται κωδικός πρόσβασης, αλλά μερικά
- τρίτα εργαλεία ή διακομιστές μπορεί να χρειαστούν κωδικό.
continue: Εγγραφή
terms accepted: Ευχαριστούμε για την αποδοχή των νέων όρων συνεισφοράς!
terms declined: Λυπούμαστε για το ότι αποφασίσατε να μην αποδεχθείτε τους νέους
new email address: 'Νέα Διεύθυνση ηλεκτρονικού ταχυδρομείου:'
email never displayed publicly: (όχι δημόσια εμφάνιση)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: τι είναι αυτό;
public editing:
press confirm button: Πατήστε το κουμπί "Επιβεβαίωση" για να ενεργοποιήσετε
το λογαριασμό σας.
button: Επιβεβαίωση
+ success: Επιβεβαιώθηκε ο λογαριασμός σου, σε ευχαριστούμε για την εγγραφή σου!
already active: Αυτός ο λογαριασμός έχει ήδη επιβεβαιωθεί.
unknown token: Αυτός ο κωδικός επιβεβαίωσης έχει λήξει ή δεν υπάρχει.
reconfirm_html: Εάν θέλετε να σας ξαναστείλουμε το email επιβεβαίωσης <a href="%{reconfirm}">πατήστε
comment: Σχολιάστε
edit_help: Μετακινήστε το χάρτη και να κάνετε ζουμ σε μια τοποθεσία που θέλετε
να επεξεργαστείτε, στη συνέχεια, κάντε κλικ εδώ.
+ directions:
+ engines:
+ graphhopper_bicycle: Ποδήλατο (GraphHopper)
+ graphhopper_foot: Με τα πόδια (GraphHopper)
+ mapquest_bicycle: Ποδήλατο (MapQuest)
+ mapquest_car: Αυτοκίνητο (MapQuest)
+ mapquest_foot: Με τα πόδια (MapQuest)
+ osrm_car: Αυτοκίνητο (OSRM)
+ distance: Απόσταση
+ instructions:
+ roundabout_with_exit: Στην κυκλική διασταύρωση, πάρτε την έξοδο %{exit} προς
+ %{name}
+ unnamed: ανώνυμος δρόμος
+ time: Διάρκεια
query:
node: Κόμβος
way: Διαδρομή
# Export driver: phpyaml
# Author: Bpfhjquevaps
# Author: Bruce89
+# Author: Caliburn
# Author: Captaindogfish
# Author: Chase me ladies, I'm the Cavalry
# Author: Shirayuki
charging_station: Charging Station
cinema: Cinema
clinic: Clinic
+ clock: Clock
college: College
community_centre: Community Centre
courthouse: Courthouse
archaeological_site: Archaeological Site
battlefield: Battlefield
boundary_stone: Boundary Stone
- building: Building
+ building: Historic Building
castle: Castle
church: Church
citywalls: City Walls
results:
no_results: No results found
more_results: More results
- distance:
- zero: less than 1km
- one: about 1km
- other: about %{count}km
- direction:
- south_west: south-west
- south: south
- south_east: south-east
- east: east
- north_east: north-east
- north: north
- north_west: north-west
- west: west
layouts:
project_name:
title: OpenStreetMap
legal_babble:
title_html: Copyright and Licence
intro_1_html: |-
- OpenStreetMap is <i>open data</i>, licenced under the <a
+ OpenStreetMap is <i>open data</i>, licensed under the <a
href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database Licence</a> (ODbL).
+ Commons Open Database Licence</a> (ODbL) by the <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: You are free to copy, distribute, transmit and adapt our data,
as long as you credit OpenStreetMap and its contributors. If you alter or
build upon our data, you may distribute the result only under the same licence.
more_title_html: Finding out more
more_1_html: |-
Read more about using our data, and how to credit us, at the <a
+ href="http://osmfoundation.org/Licence">OSMF Licence page</a> and the community <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal
FAQ</a>.
more_2_html: Although OpenStreetMap is open data, we cannot provide a free-of-charge
register now: Register now
with username: 'Already have an OpenStreetMap account? Please login with your
username and password:'
- with openid: 'Alternatively, use OpenID to login:'
new to osm: New to OpenStreetMap?
to make changes: To make changes to the OpenStreetMap data, you must have an
account.
activity.<br />Please contact the <a href="%{webmaster}">webmaster</a> if
you wish to discuss this.
auth failure: Sorry, could not log in with those details.
- openid missing provider: Sorry, could not contact your OpenID provider
- openid invalid: Sorry, your OpenID seems to be malformed
openid_logo_alt: Log in with an OpenID
- openid_providers:
- openid:
- title: Login with OpenID
- alt: Login with an OpenID URL
- google:
- title: Login with Google
- alt: Login with a Google OpenID
- yahoo:
- title: Login with Yahoo
- alt: Login with a Yahoo OpenID
- wordpress:
- title: Login with Wordpress
- alt: Login with a Wordpress OpenID
- aol:
- title: Login with AOL
- alt: Login with an AOL OpenID
logout:
title: Logout
heading: Logout of OpenStreetMap
display name: 'Display Name:'
display name description: Your publicly displayed username. You can change this
later in the preferences.
- openid: '%{logo} OpenID:'
password: 'Password:'
confirm password: 'Confirm Password:'
- use openid: Alternatively, use %{logo} OpenID to login
- openid no password: With OpenID a password is not required, but some extra tools
- or server may still need one.
- openid association: |-
- <p>Your OpenID is not associated with a OpenStreetMap account yet.</p>
- <ul>
- <li>If you are new to OpenStreetMap, please create a new account using the form below.</li>
- <li>
- If you already have an account, you can login to your account using your username and password and then associate the account with your OpenID in your user settings.
- </li>
- </ul>
continue: Sign Up
terms accepted: Thanks for accepting the new contributor terms!
terms declined: We are sorry that you have decided to not accept the new Contributor
new email address: 'New Email Address:'
email never displayed publicly: (never displayed publicly)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: what is this?
public editing:
press confirm button: Press the confirm button below to confirm your new e-mail
address.
button: Confirm
- success: Confirmed your e-mail address, thanks for signing up!
+ success: Confirmed your change of email address!
failure: An e-mail address has already been confirmed with this token.
set_home:
flash success: Home location saved successfully
comment: Comment
edit_help: Move the map and zoom in on a location you want to edit, then click
here.
+ directions:
+ time: Time
query:
node: Node
way: Way
way: way
relation: relation
changeset: changeset
+ note: note
timeout:
sorry: "Sorry, the data for the %{type} with the id %{id}, took too long to retrieve."
type:
way: way
relation: relation
changeset: changeset
+ note: note
redacted:
redaction: "Redaction %{id}"
message_html: "Version %{version} of this %{type} cannot be shown as it has been redacted. Please see %{redaction_link} for details."
spur: "Railway Spur"
station: "Railway Station"
stop: "Railway Stop"
- subway: "Subway Station"
+ subway: "Subway"
subway_entrance: "Subway Entrance"
switch: "Railway Points"
tram: "Tramway"
results:
no_results: "No results found"
more_results: "More results"
- distance:
- zero: "less than 1km"
- one: "about 1km"
- other: "about %{count}km"
- direction:
- south_west: "south-west"
- south: "south"
- south_east: "south-east"
- east: "east"
- north_east: "north-east"
- north: "north"
- north_west: "north-west"
- west: "west"
layouts:
project_name:
# in <title>
legal_babble:
title_html: Copyright and License
intro_1_html: |
- OpenStreetMap is <i>open data</i>, licensed under the <a
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> is <i>open data</i>, licensed under the <a
href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ Commons Open Database License</a> (ODbL) by the <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: |
You are free to copy, distribute, transmit and adapt our data,
as long as you credit OpenStreetMap and its
more_title_html: Finding out more
more_1_html: |
Read more about using our data, and how to credit us, at the <a
+ href="http://osmfoundation.org/Licence">OSMF Licence page</a> and the community <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal
FAQ</a>.
more_2_html: |
contributors_nz_html: |
<strong>New Zealand</strong>: Contains data sourced from
Land Information New Zealand. Crown Copyright reserved.
+ contributors_si_html: |
+ <strong>Slovenia</strong>: Contains data from the
+ <a href="http://www.gu.gov.si/en/">Surveying and Mapping Authority</a> and
+ <a href="http://www.mkgp.gov.si/en/">Ministry of Agriculture, Forestry and Food</a>
+ (public information of Slovenia).
contributors_za_html: |
<strong>South Africa</strong>: Contains data sourced from
<a href="http://www.ngi.gov.za/">Chief Directorate:
to our <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">takedown
procedure</a> or file directly at our
<a href="http://dmca.openstreetmap.org/">on-line filing page</a>.
+ trademarks_title_html: <span id="trademarks"></span>Trademarks
+ trademarks_1_html: |
+ OpenStreetMap and the looking glass logo are registered trademarks of the OpenStreetMap Foundation. If you have questions about your use of the marks, please send your questions to the <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licence Working Group</a>.
welcome_page:
title: Welcome!
introduction_html: |
tag_html: |
A <strong>tag</strong> is a bit of data about a node or way, like a
restaurant's name or a road's speed limit.
+ rules:
+ title: Rules!
+ paragraph_1_html: |
+ OpenStreetMap has few formal rules but we expect all participants to collaborate
+ with, and communicate with, the community. If you are considering
+ any activities other than editing by hand, please read and follow the guidelines on
+ <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Imports</a> and
+ <a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Automated Edits</a>.
questions:
title: Any questions?
paragraph_1_html: |
url: /welcome
title: Welcome to OSM
description: Start with this quick guide covering the OpenStreetMap basics.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+ title: Beginners' Guide
+ description: Community maintained guide for beginners.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Ask a question or look up answers on OSM's question-and-answer site.
+ mailing_lists:
+ url: http://lists.openstreetmap.org/
+ title: Mailing Lists
+ description: Ask a question or discuss interesting matters on a wide range of topical or regional mailing lists.
+ forums:
+ url: http://forum.openstreetmap.org/
+ title: Forums
+ description: Questions and discussions for those that prefer a bulletin board style interface.
+ irc:
+ url: http://irc.openstreetmap.org/
+ title: IRC
+ description: Interactive chat in many different languages and on many topics.
+ switch2osm:
+ url: https://switch2osm.org/
+ title: switch2osm
+ description: Help for companies and organisations switching to OpenStreetMap based maps and other services.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
build upon the data in certain ways, you may distribute the result only
under the same licence. See the <a href='%{copyright_path}'>Copyright and
License page</a> for details.
+ legal_title: Legal
+ legal_html: |
+ This site and many other related services are formally operated by the
+ <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF)
+ on behalf of the community.
+ <br>
+ Please <a href='http://osmfoundation.org/Contact'>contact the OSMF</a>
+ if you have licensing, copyright or other legal questions and issues.
partners_title: Partners
notifier:
diary_comment_notification:
search: Search
get_directions: "Get directions"
get_directions_title: "Find directions between two points"
- close_directions: "Close directions"
- close_directions_title: "Close the directions panel"
from: "From"
to: "To"
where_am_i: "Where am I?"
primary: "Primary road"
secondary: "Secondary road"
unclassified: "Unclassified road"
- unsurfaced: "Unsurfaced road"
track: "Track"
- byway: "Byway"
bridleway: "Bridleway"
cycleway: "Cycleway"
footway: "Footway"
golf: "Golf course"
park: "Park"
resident: "Residential area"
- tourist: "Tourist attraction"
common:
- Common
- meadow
tunnel: "Dashed casing = tunnel"
bridge: "Black casing = bridge"
private: "Private access"
- permissive: "Permissive access"
destination: "Destination access"
construction: "Roads under construction"
richtext_area:
allow_read_gpx: "read your private GPS traces."
allow_write_gpx: "upload GPS traces."
allow_write_notes: "modify notes."
+ grant_access: "Grant Access"
oauthorize_success:
title: "Authorization request allowed"
allowed: "You have granted application %{app_name} access to your account."
login_button: "Login"
register now: Register now
with username: "Already have an OpenStreetMap account? Please login with your username and password:"
- with openid: "Alternatively, use OpenID to login:"
+ with external: "Alternatively, use a third party to login:"
new to osm: New to OpenStreetMap?
to make changes: To make changes to the OpenStreetMap data, you must have an account.
create account minute: Create an account. It only takes a minute.
account not active: "Sorry, your account is not active yet.<br />Please use the link in the account confirmation email to activate your account, or <a href=\"%{reconfirm}\">request a new confirmation email</a>."
account is suspended: Sorry, your account has been suspended due to suspicious activity.<br />Please contact the <a href="%{webmaster}">webmaster</a> if you wish to discuss this.
auth failure: "Sorry, could not log in with those details."
- openid missing provider: "Sorry, could not contact your OpenID provider"
- openid invalid: "Sorry, your OpenID seems to be malformed"
openid_logo_alt: "Log in with an OpenID"
- openid_providers:
+ auth_providers:
openid:
title: Login with OpenID
alt: Login with an OpenID URL
google:
title: Login with Google
alt: Login with a Google OpenID
+ facebook:
+ title: Login with Facebook
+ alt: Login with a Facebook Account
+ windowslive:
+ title: Login with Windows Live
+ alt: Login with a Windows Live Account
yahoo:
title: Login with Yahoo
alt: Login with a Yahoo OpenID
not displayed publicly: 'Not displayed publicly (see <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="wiki privacy policy including section on email addresses">privacy policy</a>)'
display name: "Display Name:"
display name description: "Your publicly displayed username. You can change this later in the preferences."
- openid: "%{logo} OpenID:"
+ external auth: "Third Party Authentication:"
password: "Password:"
confirm password: "Confirm Password:"
- use openid: "Alternatively, use %{logo} OpenID to login"
- openid no password: "With OpenID a password is not required, but some extra tools or server may still need one."
- openid association: |
- <p>Your OpenID is not associated with a OpenStreetMap account yet.</p>
+ use external auth: "Alternatively, use a third party to login"
+ auth no password: "With third party authentication a password is not required, but some extra tools or server may still need one."
+ auth association: |
+ <p>Your ID is not associated with a OpenStreetMap account yet.</p>
<ul>
<li>If you are new to OpenStreetMap, please create a new account using the form below.</li>
<li>
If you already have an account, you can login to your account
using your username and password and then associate the account
- with your OpenID in your user settings.
+ with your ID in your user settings.
</li>
</ul>
continue: Sign Up
current email address: "Current Email Address:"
new email address: "New Email Address:"
email never displayed publicly: "(never displayed publicly)"
+ external auth: "External Authentication:"
openid:
- openid: "OpenID:"
link: "http://wiki.openstreetmap.org/wiki/OpenID"
link text: "what is this?"
public editing:
Confirm your account by clicking on the link in the email and you'll be able to start mapping.
press confirm button: "Press the confirm button below to activate your account."
button: Confirm
+ success: "Confirmed your account, thanks for signing up!"
already active: "This account has already been confirmed."
unknown token: "That confirmation code has expired or does not exist."
reconfirm_html: "If you need us to resend the confirmation email, <a href=\"%{reconfirm}\">click here</a>."
heading: Confirm a change of email address
press confirm button: "Press the confirm button below to confirm your new email address."
button: Confirm
- success: "Confirmed your email address, thanks for signing up!"
+ success: "Confirmed your change of email address!"
failure: "An email address has already been confirmed with this token."
+ unknown_token: "That confirmation code has expired or does not exist."
set_home:
flash success: "Home location saved successfully"
go_public:
This decision will be reviewed by an administrator shortly, or
you may contact the %{webmaster} if you wish to discuss this.
</p>
+ auth_failure:
+ connection_failed: Connection to authentication provider failed
+ invalid_credentials: Invalid authentication credentials
+ no_authorization_code: No authorization code
+ unknown_signature_algorithm: Unknown signature algorithm
+ invalid_scope: Invalid scope
user_role:
filter:
not_an_administrator: "Only administrators can perform user role management, and you are not an administrator."
heading: "%{block_on} blocked by %{block_by}"
time_future: "Ends in %{time}"
time_past: "Ended %{time} ago"
+ created: "Created"
+ ago: "%{time} ago"
status: "Status"
show: "Show"
edit: "Edit"
link: "Link or HTML"
long_link: "Link"
short_link: "Short Link"
+ geo_uri: "Geo URI"
embed: "HTML"
custom_dimensions: "Set custom dimensions"
format: "Format:"
no_route: "Couldn't find a route between those two places."
no_place: "Sorry - couldn't find that place."
instructions:
- continue_on: "Continue on "
- slight_right: "Slight right onto "
- turn_right: "Turn right onto "
- sharp_right: "Sharp right onto "
- uturn: "U-turn along "
- sharp_left: "Sharp left onto "
- turn_left: "Turn left onto "
- slight_left: "Slight left onto "
- via_point: "(via point) "
- follow: "Follow "
- roundabout: "At roundabout take "
- leave_roundabout: "Leave roundabout - "
- stay_roundabout: "Stay on roundabout - "
- start: "Start at end of "
- destination: "Reach destination"
- against_oneway: "Go against one-way on "
- end_oneway: "End of one-way on "
- unnamed: "(unnamed)"
+ continue_without_exit: Continue on %{name}
+ slight_right_without_exit: Slight right onto %{name}
+ turn_right_without_exit: Turn right onto %{name}
+ sharp_right_without_exit: Sharp right onto %{name}
+ uturn_without_exit: U-turn along %{name}
+ sharp_left_without_exit: Sharp left onto %{name}
+ turn_left_without_exit: Turn left onto %{name}
+ slight_left_without_exit: Slight left onto %{name}
+ via_point_without_exit: (via point)
+ follow_without_exit: Follow %{name}
+ roundabout_without_exit: At roundabout take %{name}
+ leave_roundabout_without_exit: Leave roundabout - %{name}
+ stay_roundabout_without_exit: Stay on roundabout - %{name}
+ start_without_exit: Start at end of %{name}
+ destination_without_exit: Reach destination
+ against_oneway_without_exit: Go against one-way on %{name}
+ end_oneway_without_exit: End of one-way on %{name}
+ roundabout_with_exit: At roundabout take exit %{exit} onto %{name}
+ unnamed: "unnamed road"
courtesy: "Directions courtesy of %{link}"
time: "Time"
query:
# Author: Armando-Martin
# Author: Carlosz22
# Author: Crazymadlover
+# Author: Csbotero
# Author: Egofer
# Author: Fitoschido
# Author: Fortega
# Author: Peter17
# Author: Remux
# Author: Rubenwap
+# Author: Ruila
# Author: Sim6
# Author: Toliño
# Author: Translationista
%{when}</abbr>
hidden_by: Oculto por %{user} <abbr title='%{exact_time}'>hace %{when}</abbr>
query:
- title: Características de la consulta
+ title: Consultar características
introduction: Haga clic en el mapa para encontrar características cercanas.
nearby: Características cercanas
enclosing: Características envolventes
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Teleférico
chair_lift: Telesilla
drag_lift: Telearrastre
+ gondola: Telecabina
station: Estación de remonte
aeroway:
aerodrome: Aeródromo
taxiway: Calle de rodaje
terminal: Terminal
amenity:
+ animal_shelter: Refugio de animales
arts_centre: Centro artístico
atm: Cajero automático
bank: Banco
bicycle_parking: Aparcamiento de bibicletas
bicycle_rental: Alquiler de bicicletas
biergarten: Terraza
+ boat_rental: Alquiler de botes
brothel: Burdel
bureau_de_change: Casa de cambio
bus_station: Estación de autobuses
car_wash: Autolavado
casino: Casino
charging_station: Estación de carga
+ childcare: Guardería
cinema: Cine
clinic: Clínica
+ clock: Reloj
college: Instituto
community_centre: Centro comunitario
courthouse: Juzgado
food_court: Zona de restaurantes
fountain: Fuente
fuel: Gasolinera
+ gambling: Juegos de azar
grave_yard: Cementerio
gym: Gimnasio
health_centre: Centro de salud
library: Biblioteca
market: Mercado
marketplace: Mercado
+ monastery: Monasterio
+ motorcycle_parking: Estacionamiento para motocicletas
nightclub: Club nocturno
nursery: Enfermería
nursing_home: Residencia para la tercera edad
office: Oficina
parking: Aparcamiento
+ parking_entrance: Entrada de estacionamiento
pharmacy: Farmacia
place_of_worship: Templo
police: Policía
veterinary: Clínica veterinaria
village_hall: Sala del pueblo
waste_basket: Papelera
+ waste_disposal: Contenedor de basura
youth_centre: Centro juvenil
boundary:
administrative: Frontera administrativa
"yes": Puente
building:
"yes": Edificio
+ craft:
+ brewery: Fábrica de cerveza
+ carpenter: Carpintero
+ electrician: Electricista
+ gardener: Jardinero
+ painter: Pintor
+ photographer: Fotógrafo
+ plumber: Plomero/fontanero
+ shoemaker: Zapatero
+ tailor: Sastre
+ "yes": Tienda de artesanía
emergency:
+ ambulance_station: Base de ambulancias
+ defibrillator: Desfibrilador
+ landing_site: Lugar de aterrizaje de emergencia
phone: Teléfono de emergencia
highway:
+ abandoned: Calle o carretera abandonada
bridleway: Camino prioritario para peatones y caballos
bus_guideway: Canal guiado de autobuses
bus_stop: Parada de autobuses
- construction: Autopista en construcción
+ construction: Calle o carretera en construcción
cycleway: Bicisenda
+ elevator: Ascensor
emergency_access_point: Acceso de emergencia
footway: Sendero
ford: Vado
platform: Plataforma
primary: Carretera primaria
primary_link: Carretera primaria
- proposed: Carretera propuesta
+ proposed: Carretera proyectada
raceway: Pista de carreras
residential: Calle
rest_area: Área de descanso
tertiary: Carretera terciaria
tertiary_link: Carretera terciaria
track: Pista
+ traffic_signals: Señales de tráfico
trail: Sendero
trunk: Vía rápida
trunk_link: Enlace de vía rápida
unclassified: Carretera sin clasificar
unsurfaced: Vía no pavimentada
+ "yes": Camino
historic:
archaeological_site: Yacimiento arqueológico
battlefield: Campo de batalla
boundary_stone: Mojón
building: Edificio histórico
+ bunker: Búnker
castle: Castillo
church: Iglesia
+ city_gate: Puerta de la ciudad
citywalls: Murallas de la ciudad
fort: Fuerte
+ heritage: Patrimonio de la humanidad
house: Casa histórica
icon: Icono
manor: Casa señorial
memorial: Memorial
mine: Mina
monument: Monumento
+ roman_road: Calzada romana
ruins: Ruinas
+ stone: Piedra
tomb: Tumba
tower: Torre
wayside_cross: Crucero
wayside_shrine: Sepulcro
wreck: Pecio
+ junction:
+ "yes": Intersección
landuse:
allotments: Huertos
basin: Cuenca
road: Área de carretera
village_green: Parque municipal
vineyard: Viñedo
+ "yes": Uso del suelo
leisure:
beach_resort: Complejo en la playa
bird_hide: Observatorio de aves
+ club: Club
common: Terreno común
+ dog_park: Parque canino
fishing: Área de pesca
+ fitness_centre: Gimnasio (fitness)
fitness_station: Gimnasio
garden: Jardín
golf_course: Campo de golf
+ horse_riding: Equitación
ice_rink: Pista de patinaje sobre hielo
marina: Puerto deportivo
miniature_golf: Minigolf
pitch: Cancha deportiva
playground: Área de juegos
recreation_ground: Área recreativa
+ resort: Centro turístico
sauna: Sauna
slipway: Grada
sports_centre: Centro deportivo
swimming_pool: Piscina
track: Pista de atletismo
water_park: Parque acuático
+ "yes": Ocio
+ man_made:
+ lighthouse: Faro
+ pipeline: Tubería
+ tower: Torre
+ works: Fábrica
+ "yes": Artificial
military:
airfield: Aeródromo militar
barracks: Barracas
forest: Bosque
geyser: Géiser
glacier: Glaciar
+ grassland: Pradera
heath: Brezal
hill: Colina
island: Isla
reef: Arrecife
ridge: Cresta
rock: Roca
+ saddle: Collado
+ sand: Arena
scree: Pedregal
scrub: Matorrales
spring: Manantial
wood: Bosque
office:
accountant: Contable
+ administrative: Administración
architect: Arquitecto
company: Empresa
employment_agency: Agencia de empleo
travel_agent: Agencia de viajes
"yes": Oficina
place:
+ allotments: Parcelas
+ block: Bloque
airport: Aeropuerto
city: Ciudad
country: País
town: Pueblo
unincorporated_area: Área no incorporada
village: Aldea
+ "yes": Lugar
railway:
abandoned: Ferrocarril abandonado
construction: Vía ferroviaria en construcción
narrow_gauge: Ferrocarril de vía estrecha
platform: Andén
preserved: Ferrocarril preservado
- proposed: Vía de tren propuesta
+ proposed: Vía de tren proyectada
spur: Ramal ferroviario
station: Estación de trenes
stop: Parada de tren
- subway: Estación de metro
+ subway: Metro
subway_entrance: Boca de metro
switch: Aguja de ferrocarril
tram: Ruta de tranvía
wine: Vinoteca
"yes": Tienda
tourism:
- alpine_hut: Cabaña alpina
+ alpine_hut: Refugio de montaña
+ apartment: Apartamento turístico
artwork: Obra de arte
attraction: Atracción turística
bed_and_breakfast: Alojamiento y desayuno (B&B)
camp_site: Campamento/camping
caravan_site: Camping para caravanas
chalet: Chalet
+ gallery: Galería
guest_house: Pensión
- hostel: Hostal
+ hostel: Albergue
hotel: Hotel
information: Información turística
motel: Motel
wadi: Rambla
waterfall: Cascada
weir: Represa
+ "yes": Curso de agua
admin_levels:
level2: Límite de país
level4: Límite de estado
results:
no_results: No se han encontrado resultados
more_results: Más resultados
- distance:
- one: aproximadamente 1 km
- zero: menos de 1 km
- other: aproximadamente %{count} km
- direction:
- south_west: suroeste
- south: sur
- south_east: sureste
- east: este
- north_east: noreste
- north: norte
- north_west: noroeste
- west: oeste
layouts:
logo:
alt_text: Logo de OpenStreetMap
legal_babble:
title_html: Derechos de autor y licencia
intro_1_html: |-
- OpenStreetMap es <i>Open Data</i> (un servicio de datos de acceso libre), con licencia <a
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> es <i>Open Data</i> (un servicio de datos de acceso libre), con licencia <a
href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ Commons Open Database License</a> (ODbL) de la <a
+ href="http://osmfoundation.org/">Fundación OpenStreetMap</a> (OSMF).
intro_2_html: Puedes copiar, distribuir, transmitir y adaptar nuestros mapas
e información libremente siempre y cuando des reconocimiento a OpenStreetMap
y sus colaboradores. Si alteras o generas contenido sobre nuestros mapas e
alt: Ejemplo de como dar reconocimiento a OpenStreetMap en una página web
title: Ejemplo de atribución
more_title_html: Para saber más...
- more_1_html: Encontrarás más información acerca de cómo utilizar nuestros datos,
- y cómo citarnos como fuente, en <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Preguntas
- legales más frecuentes</a>.
+ more_1_html: |-
+ Encontrarás más información acerca de cómo utilizar nuestros datos, y cómo citarnos como fuente, en la <a
+ href="http://osmfoundation.org/Licence">página de licencia de OSMF</a> y en las <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">preguntas legales más frecuentes</a> de la comunidad.
more_2_html: |-
A pesar de que OpenStreetMap es contenido abierto, no podemos suminstrar una API de mapas gratuita para desarrolladores de aplicaciones para terceros.
(<a href="http://www.and.com">www.and.com</a>)
contributors_nz_html: '<strong>Nueva Zelanda</strong>: Contiene datos extraídos
de Land Information New Zealand. Crown Copyright reserved.'
+ contributors_si_html: |-
+ <strong>Eslovenia</strong>: Contiene datos del
+ <a href="http://www.gu.gov.si/en/">Surveying and Mapping Authority</a> y
+ <a href="http://www.mkgp.gov.si/en/">Ministry of Agriculture, Forestry and Food</a>
+ (información pública de Eslovenia).
contributors_za_html: |-
<strong>Sudáfrica</strong>: Contiene datos extraídos de
<a href="http://www.ngi.gov.za/">Chief Directorate: Información
infringement_title_html: Violación de derechos de autor
infringement_1_html: Se le recuerda a los colaboradores de OSM que no deberán
añadir información procedente de ninguna fuente con derechos de autor reservados
- (p.ej. Google Maps o mapas impresos) sin el consentimiento explícito de los
+ (p. ej. Google Maps o mapas impresos) sin el consentimiento explícito de los
poseedores de los derechos de autor.
infringement_2_html: Si usted cree que algún material con derechos de autor
ha sido incorrectamente agregado a la base de datos de OpenStreetMap o a este
sitio, consulte nuestro <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procedimiento
de descolgado</a> o preséntelo directamente en nuestra <a href="http://dmca.openstreetmap.org/">página
de presentación en línea</a>.
+ trademarks_title_html: <span id="trademarks"></span>Marcas registradas
+ trademarks_1_html: OpenStreetMap y el logotipo de la lupa son marcas registradas
+ de la Fundación OpenStreetMap. Si tienes preguntas sobre su uso, envíalas
+ al <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">grupo
+ de trabajo sobre licencias</a>.
welcome_page:
title: ¡Bienvenido!
introduction_html: Bienvenido a OpenStreetMap, el mapa libre y editable del mundo.
tag_html: Una <strong>etiqueta</strong> es un poco de información acerca de
un nodo o vía, como un nombre de restaurante o un límite de velocidad de la
carretera.
+ rules:
+ title: Reglas
+ paragraph_1_html: OpenStreetMap tiene pocas reglas formales, pero esperamos
+ que todos los participantes colaboraren y se comuniquen con la comunidad.
+ Si estás considerando alguna actividad que no sea la edición manual, lee y
+ sigue las instrucciones sobre <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>importaciones</a>
+ y <a href='http://wiki.openstreetmap.org/wiki/Import/Automated_Edits_code_of_conduct'>ediciones
+ automatizadas</a>.
questions:
title: ¿Alguna pregunta?
paragraph_1_html: |-
url: /welcome
title: Le damos la bienvenida a OSM
description: Comenzar con esta guía rápida que cubre lo básico de OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/ES:Beginners%27_guide
+ title: Guía del principiante
+ description: Guía para principiantes, mantenida por la comunidad.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Hacer una pregunta o buscar respuestas en el sitio de preguntas
y respuestas de OSM.
+ mailing_lists:
+ title: Listas de correo
+ description: Pregunta o discute temas interesantes de un amplio abanico de listas
+ de correo temáticas o regionales.
+ forums:
+ title: Foros
+ description: Preguntas y discusiones para aquellos que prefieren una interfaz
+ del estilo cartelera de anuncios.
+ irc:
+ title: IRC
+ description: Chat interactivo en muchos idiomas diferentes y sobre muchos temas.
+ switch2osm:
+ title: Migra a OSM
+ description: Ayuda para las empresas y organizaciones que migran a mapas y a
+ otros servicios, basados en OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/wiki/ES:Main_Page
title: wiki.openstreetmap.org
colaboradores. Si alteras o te basas en los datos en casos determinados, deberás
distribuir el resultado únicamente bajo la misma licencia. Consulta la <a href=''%{copyright_path}''>
página sobre Derechos de autor y Licencia</a> para obtener más detalles.'
+ legal_title: Legal
+ legal_html: "Este sitio y muchos otros servicios relacionados son manejados por
+ la \n<a href='http://osmfoundation.org/'>Fundación OpenStreetMap</a> (OSMF)
+ \nen nombre de la comunidad.\n<br> \n<a href='http://osmfoundation.org/Contact'>Contacta
+ a la OSMF</a> \nsi tienes preguntas o problemas sobre licencias, derechos de
+ autor u otro tema legal."
partners_title: Socios
notifier:
diary_comment_notification:
close: Cerrar
search:
search: Buscar
+ get_directions: Obtener indicaciones
+ get_directions_title: Encontrar indicaciones entre dos puntos
+ from: Desde
+ to: Hacia
where_am_i: ¿Dónde estoy?
where_am_i_title: Define la ubicación actual por medio del motor de búsqueda
submit_text: Ir
allowed: Usted ha concedido el acceso a la aplicación %{app_name} a su cuenta.
verification: El código de verificación es %{code}.
oauthorize_failure:
- title: Solicitud de autorización fallida
+ title: Falló la solicitud de autorización
denied: Usted ha negado el acceso a la aplicación %{app_name} a su cuenta.
invalid: La ficha de autorización no es válida.
revoke:
register now: Regístrese ahora
with username: '¿Ya tiene una cuenta en OpenStreetMap? Por favor, inicie sesión
con su nombre de usuario y contraseña:'
- with openid: 'Como alternativa, utilice su OpenID para iniciar sesión:'
+ with external: 'O bien, utilice un servicio de terceros para acceder:'
new to osm: ¿Nuevo en OpenStreetMap?
to make changes: Para realizar cambios en los datos de OpenStreetMap, debe tener
una cuenta.
sospechosa.<br>Póngase en contacto con el <a href="%{webmaster}">webmaster</a>
si desea hablar de ello.
auth failure: Lo sentimos. No pudo producirse el acceso con esos datos.
- openid missing provider: Lo sentimos, no hemos podido contactar con su proveedor
- de OpenID
- openid invalid: Lo sentimos, tu OpenID parece ser incorrecto
openid_logo_alt: Inicia sesión con una OpenID
- openid_providers:
+ auth_providers:
openid:
title: Iniciar sesión con OpenID
alt: Iniciar sesión con una URL OpenID
google:
title: Iniciar sesión con Google
- alt: Iniciar sesión con OpenID de Google
+ alt: Iniciar sesión con una OpenID de Google
+ facebook:
+ title: Inicia sesión con Facebook
+ alt: Inicia sesión con una cuenta de Facebook
+ windowslive:
+ title: Inicia sesión con Windows Live
+ alt: Inicia sesión con una cuenta de Windows Live
yahoo:
title: Iniciar sesión con Yahoo
- alt: Iniciar sesión con OpenID de Yahoo
+ alt: Iniciar sesión con una OpenID de Yahoo
wordpress:
title: Iniciar sesión con Wordpress
- alt: Iniciar sesión con OpenID de Wordpress
+ alt: Iniciar sesión con una OpenID de Wordpress
aol:
title: Iniciar sesión con AOL
- alt: Iniciar sesión con OpenID de AOL
+ alt: Iniciar sesión con una OpenID de AOL
logout:
title: Cerrar sesión
heading: Salir de OpenStreetMap
display name: 'Nombre en pantalla:'
display name description: Tu nombre de usuario público. Puedes cambiarlo más
tarde en "preferencias".
- openid: '%{logo} OpenID:'
+ external auth: 'Autenticación de terceros:'
password: 'Contraseña:'
confirm password: 'Confirmar contraseña:'
- use openid: Como alternativa, utiliza %{logo} OpenID para iniciar sesión
- openid no password: Con OpenID no se requiere una contraseña, pero algunas herramientas
- extras o servidor pueden seguir necesitándola.
- openid association: |-
- <p>Tu OpenID aún no está asociado con una cuenta de OpenStreetMap.</p>
+ use external auth: O bien, utilice un servicio de terceros para acceder
+ auth no password: Con la autenticación de terceros no se necesita una contraseña,
+ aunque hay algunas herramientas y servidores que aún la solicitan.
+ auth association: |-
+ <p>Tu ID todavía no está asociada con una cuenta de OpenStreetMap.</p>
<ul>
- <li>Si eres nuevo en OpenStreetMap, por favor crea una cuenta usando el siguiente formulario.</li>
+ <li>Si eres nuevo en OpenStreetMap, por favor crea una cuenta mediante el siguiente formulario.</li>
<li>
- Si ya tienes una cuenta, puedes iniciar sesión a tu cuenta
- usando tu nombre de usuario y contraseña y luego asociar la cuenta
- con tu OpenID en tus preferencias de usuario.
+ Si ya tienes una cuenta, puedes iniciar sesión en tu cuenta usando tu nombre de usuario y contraseña y luego asociar la cuenta con tu ID en la configuración de usuario.
</li>
</ul>
continue: Registrarse
status: 'Estado:'
spam score: 'Puntuación de spam:'
description: Descripción
- user location: Localización del usuario
+ user location: Ubicación del usuario
if set location: Configure su lugar de origen en la página %{settings_link}
para ver los usuarios cercanos.
settings_link_text: preferencias
no friends: No has añadido ningún amigo aún.
km away: '%{count} km de distancia'
m away: '%{count} m de distancia'
- nearby users: 'Otros usuarios cercanos:'
+ nearby users: Otros usuarios cercanos
no nearby users: Todavía no hay usuarios que se hayan ubicado en su proximidad.
role:
administrator: Este usuario es un administrador
current email address: 'Dirección de correo electrónico actual:'
new email address: 'Nueva dirección de correo electrónico:'
email never displayed publicly: (nunca es mostrado públicamente)
+ external auth: 'Autenticación externa:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ¿qué es esto?
public editing:
y podrá comenzar a mapear.
press confirm button: Pulse botón de confirmación de abajo para activar su cuenta.
button: Confirmar
+ success: ¡Cuenta confirmada, gracias por registrarse!
already active: Esta cuenta ya ha sido confirmada.
- unknown token: Este código de confirmación ha expirado o no existe.
+ unknown token: Ese código de confirmación ha caducado o no existe.
reconfirm_html: Si necesita que le reenviemos el correo electrónico de confirmación,
<a href="%{reconfirm}">haga clic aquí</a>.
confirm_resend:
press confirm button: Pulse el botón de confirmación de debajo para confirmar
su nueva dirección de correo electrónico.
button: Confirmar
- success: Dirección de correo electrónico confirmada. ¡Gracias por registrarse!
+ success: Se confirmó el cambio de dirección de correo electrónico.
failure: La dirección de correo electrónico ha sido confirmada mediante esta
credencial de autentificación.
+ unknown_token: Ese código de confirmación ha caducado o no existe.
set_home:
flash success: Localización guardada con éxito
go_public:
summary: '%{name} creado desde %{ip_address} el %{date}'
summary_no_ip: '%{name} creado el %{date}'
confirm: Confirmar usuarios seleccionados
- hide: Ocultar Usuarios Seleccionados
+ hide: Ocultar usuarios seleccionados
empty: No hay usuarios coincidentes
suspended:
title: Cuenta suspendida
<p>
Esta decisión será revisada por un administrador en breve, o puedes contactar con el %{webmaster} si deseas discutir esto.
</p>
+ auth_failure:
+ connection_failed: La conexión al proveedor de autenticación falló
+ invalid_credentials: Datos de autenticación no válidos
+ no_authorization_code: Sin código de autorización
+ unknown_signature_algorithm: Algoritmo de firma desconocido
+ invalid_scope: Ámbito no válido
user_role:
filter:
not_an_administrator: Sólo los administradores pueden realizar la administración
heading: '%{block_on} bloqueado por %{block_by}'
time_future: Finaliza en %{time}
time_past: Finalizado hace %{time}
+ created: Creado
+ ago: hace %{time}
status: Estado
show: Mostrar
edit: Editar
link: Enlace o código HTML
long_link: Enlace
short_link: Enlace corto
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Establecer dimensiones personalizadas
format: 'Formato:'
comment: Comentar
edit_help: Mueva el mapa el mapa y acerca a una ubicación que desees editar, luego
haga clic aquí.
+ directions:
+ engines:
+ graphhopper_bicycle: En bicicleta (GraphHopper)
+ graphhopper_foot: A pie (GraphHopper)
+ mapquest_bicycle: En bicicleta (MapQuest)
+ mapquest_car: En coche (MapQuest)
+ mapquest_foot: A pie (MapQuest)
+ osrm_car: En coche (OSRM)
+ directions: Indicaciones
+ distance: Distancia
+ errors:
+ no_route: No se pudo encontrar una ruta entre esos dos lugares.
+ no_place: Lo sentimos - no se pudo encontrar ese lugar.
+ instructions:
+ continue_without_exit: Continuar en %{name}
+ slight_right_without_exit: Gire un poco a la derecha hacia %{name}
+ turn_right_without_exit: Gire a la derecha hacia %{name}
+ sharp_right_without_exit: Giro brusco a la derecha hacia %{name}
+ sharp_left_without_exit: Giro brusco a la izquierda hacia %{name}
+ turn_left_without_exit: Gire a la izquierda hacia %{name}
+ slight_left_without_exit: Gire un poco a la izquierda hacia %{name}
+ via_point_without_exit: (punto intermedio)
+ follow_without_exit: Siga %{name}
+ roundabout_without_exit: En la rotonda, tomar %{name}
+ leave_roundabout_without_exit: Salir de la rotonda - %{name}
+ stay_roundabout_without_exit: Permanecer en la rotonda - %{name}
+ destination_without_exit: Llegue a su destino
+ end_oneway_without_exit: Final de un solo sentido en %{name}
+ roundabout_with_exit: En la rotonda, tomar la salida %{exit} hacia %{name}
+ unnamed: sin nombre
+ courtesy: Indicaciones cortesía de %{link}
+ time: Hora
query:
node: Nodo
way: Vía
historic:
battlefield: Lahinguväli
boundary_stone: Piirikivi
- building: Hoone
+ building: Ajalooline hoone
castle: Kindlus
church: Kirik
citywalls: Linnamüürid
swimming_pool: Ujula
track: Jooksurada
water_park: Veepark
+ man_made:
+ tower: Torn
+ works: Vabrik
military:
airfield: Sõjaväe lennuväli
barracks: Kasarmud
wetland: Märgala
wood: Mets
office:
+ accountant: Raamatupidaja
architect: Arhitekt
place:
airport: Lennujaam
results:
no_results: Ei leidnud midagi
more_results: Veel tulemusi
- distance:
- one: umbes 1km
- zero: vähem kui 1km
- other: umbes %{count}km
- direction:
- south_west: edela
- south: lõuna
- south_east: kagu
- east: ida
- north_east: kirde
- north: põhja
- north_west: loode
- west: lääne
layouts:
logo:
alt_text: OpenStreetMapi logo
url: /welcome
title: Tere tulemast OSMi
description: Alusta selle kiirjuhendiga, mis hõlmab OpenStreetMapi põhitõdesid.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Et:Beginners%27_guide
+ title: Juhend algajatele
+ description: Kogukonna poolt loodud juhend algajatele.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Esita küsimus või otsi vastuseid OSMi küsimuste ja vastuste veebilehel.
+ mailing_lists:
+ title: Postiloendid
+ description: Esita küsimusi või arutle huvi pakkuvatel teemadel laias teemade
+ ringis või kohalikes postiloendites.
+ forums:
+ title: Foorumid
+ description: Küsimused ja arutelud nendele, kes eelistavad teadetetahvlile sarnanevat
+ kasutajaliidest.
+ irc:
+ title: IRC
+ description: Interaktiivne suhtluskanal paljudes keeltes ja paljudel teemadel.
+ switch2osm:
+ title: switch2osm
+ description: Abi ettevõtetele ja organisatsioonidele, kes plaanivad kasutusele
+ võtta OpenStreetMapil põhinevad kaardid ja muud teenused.
wiki:
url: http://wiki.openstreetmap.org/wiki/Et:Main_Page
title: wiki.openstreetmap.org
commented_note: '%{commenter} on taasaktiveerinud märkuse, mida sa oled kommenteerinud.
Märkus on %{place} lähedal.'
details: Märkuse lisateavet leiad %{url}.
+ changeset_comment_notification:
+ greeting: Tere,
message:
inbox:
title: Saabunud kirjad
close: Sulge
search:
search: Otsi
+ get_directions_title: Juhised liikumiseks kahe punkti vahel
+ from: Alguspunkt
+ to: Sihtpunkt
where_am_i: Kus ma asun?
where_am_i_title: Määra praegune asukoht otsimootori abil
submit_text: Otsi
unclassified: Klassifitseerimata tee
unsurfaced: Katteta tee
track: Rada
+ byway: Kõrvaltee
bridleway: Ratsatee
cycleway: Jalgrattatee
footway: Jalgtee
register now: 'Registreeru:'
with username: Kas omad juba OpenStreetMap kasutajakontot? Palun logi sisse
enda kasutajanime ja salasõnaga.
- with openid: 'Või kasuta sisse logimiseks oma OpenID kasutajat:'
+ with external: 'Teise võimalusena võid sisse logida kolmanda osapoole kaudu:'
new to osm: Oled uus OpenStreetMap kasutaja?
to make changes: Muudatuste tegemiseks OpenStreetMap andmetes peab sul olema
kasutajakonto.
tõttu.<br />Palun võta ühendust <a href="%{webmaster}">veebimeistriga</a>
kui soovid sellel teemal arutleda.
auth failure: Vabandust, kahjuks ei saa nende andmetega sisse.
- openid missing provider: Vabandust, kahjuks ei õnnestu luua ühendust sinu OpenID
- pakkujaga
- openid invalid: Vabandust, sinu OpenID näib olevat vigane
openid_logo_alt: Sisene OpenID tunnusega
- openid_providers:
+ auth_providers:
openid:
title: Sisene OpenID tunnusega
alt: Sisene OpenID URL abil
display name: 'Kuvatav nimi:'
display name description: Avalikult kuvatud kasutajanimi. Seda saate muuta hiljem
eelistustes.
- openid: '%{logo} OpenID:'
password: 'Uus parool:'
confirm password: 'Kinnita parool:'
- use openid: Teise võimalusena kasuta %{logo} OpenID sisselogimist
- openid no password: OpenID kasutamisel ei ole parool kohustuslik, kuid mõned
- eritööriistad või serverid nõuavad seda siiski.
- openid association: |-
- <p>Sinu OpenID ei ole seotud veel OpenStreetMapi kasutajakontoga.</p>
- <ul>
- <li>Kui oled uus OpenStreetMapi kasutaja, siia loo palun uus konto, kasutades alljärgnevat vormi.</li>
- <li>
- Kui sul juba on kasutajakonto, siis võid siseneda oma kontoga,
- kasutades oma kasutajanime ja parooli ja seejärel siduda oma
- kasutajakonto oma OpenID-ga kasutaja seadistuste all.
- </li>
- </ul>
+ use external auth: Teise võimalusena võid sisse logida kolmanda osapoole kaudu
continue: Registreeru
terms accepted: Täname, et nõustusid uute kaastöö tingimustega!
terms declined: Meil on kahju, et otsustasid mitte nõustuda uute kaastöö tingimustega.
current email address: 'Praegune e-posti aadress:'
new email address: 'Uus e-posti aadress:'
email never displayed publicly: (ei näidata mitte kunagi avalikult)
+ external auth: 'Väline autentimine:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: mis see on?
public editing:
press confirm button: Vajuta allolevale kinnitamise nupule, et oma kasutajakonto
aktiveerida.
button: Kinnita
+ success: Sinu kasutajakonto on kinnitatud, täname registreerimast!
already active: See konto on juba kinnitatud.
unknown token: See kinnituskood on aegunud või seda pole olemas.
reconfirm_html: Kui soovid, et saadaksime sulle uuesti kinnitusmeili, siis <a
heading: Kinnita e-posti aadressi muutmine
press confirm button: Kliki nupul kinnita oma uue e-posti aadressi kinnitamiseks.
button: Kinnita
- success: Sinu eposti aadress on kinnitatud, tänan registreerimast!
+ success: Sinu eposti aadressi muudatus on kinnitatud, täname registreerimast!
failure: E-posti aadress on juba antud pääsuloaga kinnitatud.
+ unknown_token: See kinnituskood on aegunud või seda pole olemas.
set_home:
flash success: Kodukoht edukalt salvestatud
go_public:
comment: Kommenteeri
edit_help: Nihuta kaarti ja suumi sisse asukohta mida soovid redigeerida ja seejärel
kliki siia.
+ directions:
+ engines:
+ graphhopper_bicycle: Rattaga (GraphHopper)
+ graphhopper_foot: Jalgsi (GraphHopper)
+ mapquest_bicycle: Rattaga (MapQuest)
+ mapquest_car: Autoga (MapQuest)
+ mapquest_foot: Jalgsi (MapQuest)
+ osrm_car: Autoga (OSRM)
+ directions: Juhised
+ distance: Vahemaa
+ errors:
+ no_route: Ei suutnud leida teekonda nende kahe koha vahel.
+ no_place: Vabandust - ei suuda leida sellist kohta.
+ instructions:
+ unnamed: nimetu
+ time: Kestus
query:
node: Sõlm
way: Joon
name: Urrutiko Agintea
browse:
version: Bertsioa
+ view_details: Ikusi Xehetasunak
location: 'Kokapena:'
changeset:
belongs_to: Egilea
"yes": Zubia
building:
"yes": Eraikina
+ craft:
+ brewery: Garagardotegia
+ carpenter: Zurgina
+ electrician: Argiketaria
+ gardener: Lorezaina
+ photographer: Argazkilaria
+ plumber: Iturgina
+ shoemaker: Zapatagina
highway:
bus_stop: Autobus-geraleku
construction: Eraikitze-lanetan dagoen Autopista
cycleway: Bidegorria
+ elevator: Igogailua
emergency_access_point: Larrialdi Sarbide Gunea
footway: Oinezkoen bide
ford: Ibia
tertiary: Hirugarren mailako errepide
track: Pista
unclassified: Sailkatu gabeko errepidea
+ "yes": Errepidea
historic:
archaeological_site: Aztarnategi arkeologiko
building: Eraikina
sports_centre: Kiroldegi
stadium: Estadio
swimming_pool: Igerilekua
+ man_made:
+ lighthouse: Itsasargia
+ tower: Dorrea
natural:
bay: Badia
beach: Hondartza
forest: Basoa
geyser: Geiser
glacier: Glaziar
+ grassland: Belardia
hill: Muinoa
island: Irla
mud: Lohi
shop:
art: Arte-denda
bakery: Okindegi
+ beverages: Edari-denda
bicycle: Bizikleta-denda
books: Liburudenda
boutique: Boutique
places: Lekuak
results:
more_results: Emaitza gehiago
- distance:
- one: km bat inguru
- zero: km bat baino gutxiago
- other: '%{count}km inguru'
- direction:
- south_west: hego-mendebalde
- south: hegoa
- south_east: hego-ekialde
- east: ekialde
- north_east: ipar-ekialde
- north: iparra
- north_west: ipar-mendebalde
- west: mendebalde
layouts:
logo:
alt_text: OpenStreetMap logoa
add: Gehitu oharra
show:
hide: Ezkutatu
+ directions:
+ distance: Distantzia
+ instructions:
+ unnamed: izenik gabe
redaction:
show:
description: 'Deskribapena:'
# Author: Armin1392
# Author: BMRG14
# Author: Baqeri
+# Author: Dalba
+# Author: Danialbehzadi
# Author: Ebraminio
# Author: Fatemi127
# Author: Grille chompa
# Author: Huji
# Author: Leyth
# Author: Mcuteangel
+# Author: Mjbmr
+# Author: Movyn
# Author: Omidh
+# Author: Pirehelokan
# Author: Reza1615
+# Author: Ruila
# Author: Sahim
# Author: Taha
# Author: Wayiran
body: بدنه
recipient: گیرنده
user:
- email: راÛ\8cاÙ\86اÙ\85Ù\87
+ email: اÛ\8cÙ\85Û\8cÙ\84
active: فعال
display_name: نام نمایشی
description: توضیحات
relation: روابط (%{count})
relation_paginated: روابط (%{x}-%{y} از %{count})
comment: نظرها (%{count})
+ hidden_commented_by: نظر مخفی از %{user}، <abbr title='%{exact_time}'>%{when}
+ پیش</abbr>
+ commented_by: نظر از %{user} <abbr title='%{exact_time}'>%{when} قبل</abbr>
changesetxml: تغییرات انجام شده XML
osmchangexml: osmChange XML
feed:
title: تغییرات انجام شده %{id}
title_comment: تغییرات انجام شده %{id} - %{comment}
+ join_discussion: وارد شوید تا به بحث بپیوندید
discussion: بحث
node:
title: 'گره: %{name}'
hidden_by: مخفی شد توسط %{user} <abbr title='%{exact_time}'>%{when} قبل</abbr>
query:
title: کوئری ویژگیها
+ introduction: روی نقشه کلیک کنید تا ویژگیهای نزدیک را پیدا کنید
nearby: ویژگیهای نزدیک
enclosing: ویژگیهای نزدیک
changeset:
timeout:
sorry: پوزش، فهرست تغییرات انجام شده ی درخواستی شما برای بازیابی بیش از حد زمان
میبرد.
+ rss:
+ commented_at_html: بروز شده %{when} قبل
+ commented_at_by_html: بروز شده %{when} قبل توسط %{user}
+ full: کل بحث
diary_entry:
new:
title: ورودی یادداشت های روزانه جدید
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: ماشین کابلی
chair_lift: صندلی بالابر
drag_lift: بالابر کشیدنی
+ gondola: تلهکابین
station: ایستگاه راه هوایی
aeroway:
aerodrome: فرودگاه هواپیما
taxiway: فرود به صحن
terminal: پایانه
amenity:
+ animal_shelter: پناهگاه حیوانات
arts_centre: مرکز هنری
atm: خودپرداز
bank: بانک
bicycle_parking: پارکینگ دوچرخه
bicycle_rental: اجارهٔ دوچرخه
biergarten: باغ آبجو
+ boat_rental: کرایه قایق
brothel: فاحشهخانه
bureau_de_change: دفتر ارز
bus_station: ایستگاه اتوبوس
car_wash: کارواش
casino: کازینو
charging_station: ایستگاه شارژ
+ childcare: نگهداری کودکان
cinema: سینما
clinic: درمانگاه
+ clock: ساعت
college: کالج
community_centre: مرکز انجمن
courthouse: دادگاه
food_court: پذيرايي
fountain: چشمه
fuel: پمپ بنزین
+ gambling: قمار
grave_yard: محوطهٔ گورستان
gym: مرکز تناسب اندام / ورزشگاه
health_centre: مركز بهداشت
library: کتابخانه
market: بازار
marketplace: بازار
+ monastery: صومعه
+ motorcycle_parking: پارکینگ موتور سیکلت
nightclub: باشگاه شبانه
nursery: شیر خوارگاه
nursing_home: خانه سالمندان
office: دفتر
parking: پارکینگ
+ parking_entrance: ورودی پارکینگ
pharmacy: داروخانه
place_of_worship: عبادتگاه
police: پلیس
veterinary: جراح دامپزشک
village_hall: دهیاری
waste_basket: سطل زباله
+ waste_disposal: دفع زباله
youth_centre: مرکز جوانان
boundary:
administrative: مرز اداری
"yes": پل
building:
"yes": ساختمان
+ craft:
+ brewery: ابجوسازی
+ carpenter: نجار
+ electrician: متخصص برق
+ gardener: باغبان
+ painter: نقاش
+ photographer: عکاس
+ plumber: لوله کش
+ shoemaker: کفاش
+ tailor: خیاط
+ "yes": فروشگاه قایق
emergency:
+ ambulance_station: ایستگاه آمبولانس
+ defibrillator: برگرداننده تپش قلب
+ landing_site: محوطه فرود اضطراری
phone: تلفن اضطراری
highway:
+ abandoned: بزرگراه متروکه
bridleway: راه حیوان رو
bus_guideway: خط هدایت کننده اتوبوس
bus_stop: ایستگاه اتوبوس
construction: بزرگراه در دست ساخت
cycleway: مسیر دوچرخه
+ elevator: آسانسور
emergency_access_point: نقطهٔ دسترسی اضطراری
footway: پیاده رو
ford: معبر کنار رود
tertiary: راه سوم
tertiary_link: راه سوم
track: پیگیری
+ traffic_signals: چراغ راهنمایی
trail: دنباله
trunk: بزرگراه
trunk_link: بزرگراه
unclassified: جادهٔ طبقهبندینشده
unsurfaced: جاده ظاهر نشده
+ "yes": جاده
historic:
archaeological_site: پایگاه باستانشناسی
battlefield: میدان جنگ
boundary_stone: سنگ مرزی
- building: ساختمان
+ building: ساختمان تاریخی
+ bunker: پناهگاه
castle: قلعه
church: کلیسا
+ city_gate: دروازه شهر
citywalls: دیوارهای شهر
fort: دژ
+ heritage: محوطه میراث فرهنگی
house: خانه
icon: نماد
manor: ملک اربابی
memorial: یادبود
mine: معدن
monument: بنای یادبود
+ roman_road: جاده رومی
ruins: خرابهها
+ stone: سنگ
tomb: مقبره
tower: برج
wayside_cross: صلیب کنار جاده
wayside_shrine: مقبره کنار جاده
wreck: لاشه
+ junction:
+ "yes": تقاطع
landuse:
allotments: تقسیم بندی شده
basin: حوزه رودخانه
road: جاده منطقه
village_green: روستای سبز
vineyard: باغ انگوری
+ "yes": کاربری زمین
leisure:
beach_resort: تفریحگاه ساحلی
bird_hide: محل مشاهده ی پرندگان
+ club: باشگاه
common: سرزمین مشترک
+ dog_park: پارک سگ
fishing: منطقهٔ ماهیگیری
+ fitness_centre: مرکز تناسب اندام
fitness_station: ایستگاه تناسب اندام
garden: باغ
golf_course: زمین گلف
+ horse_riding: اسب سواری
ice_rink: رینک یخ
marina: تفریحگاه ساحلی
miniature_golf: گلف کوچک
pitch: زمین ورزشی
playground: زمین بازی
recreation_ground: زمین تفریحی
+ resort: بازمرتب سازی
sauna: سونا
slipway: تعميرگاه دريايي
sports_centre: مرکز ورزشی
swimming_pool: استخر شنا
track: مسیر دو میدانی
water_park: پارک آبی
+ "yes": فراغت
+ man_made:
+ lighthouse: فانوس دریایی
+ pipeline: خط لوله
+ tower: برج
+ works: کارخانه
+ "yes": ساخت بشر
military:
airfield: فرودگاه نظامی
barracks: پادگان
forest: جنگل
geyser: چشمه آب گرم
glacier: یخچال طبیعی
+ grassland: سبزهزار
heath: خارزار
hill: تپه
island: جزیره
reef: جزیره نما
ridge: خطالرأس
rock: صخره
+ saddle: زین
+ sand: شن
scree: ریگ زار
scrub: خارزار غیر قابل عبور
spring: سرچشمه
wood: جنگل
office:
accountant: حسابدار
+ administrative: مدیریت
architect: معمار
company: شرکت
employment_agency: آژانس کاریابی
travel_agent: آژانس مسافرتی
"yes": دفتر
place:
+ allotments: سهم
+ block: بستن
airport: فرودگاه
city: شهر بزرگ
country: کشور
town: شهر
unincorporated_area: منطقه گنجانده نشده
village: دهکده
+ "yes": Siedlung
railway:
abandoned: راهآهن رهاشده
construction: راهآهن در دست ساخت
"yes": فروشگاه
tourism:
alpine_hut: کلبه بالای تپه
+ apartment: اپارتمان
artwork: آثار هنری
attraction: جاذبه
bed_and_breakfast: تختخواب و صبحانه
camp_site: محل اردوگاه
caravan_site: مکان خودرو کاروان
chalet: کلبه ییلاقی
+ gallery: گالری
guest_house: مهمانخانه
hostel: شبانه روزی
hotel: هتل
wadi: Wadi
waterfall: ابشار
weir: آب بند
+ "yes": راه آبی
admin_levels:
level2: مرز کشور
level4: مرز ایالت
results:
no_results: نتیجهای پیدا نشد
more_results: نتایج بیشتر
- distance:
- zero: کمتر از 1کیلومتر
- other: حدود 1کیلومتر
- direction:
- south_west: جنوب غربی
- south: جنوب
- south_east: جنوب شرقی
- east: شرق
- north_east: شمال شرقی
- north: شمال
- north_west: شمال غربی
- west: غرب
layouts:
logo:
alt_text: لوگوی OpenStreetMap
title: به OSM خوش آمدید
description: با این آموزش ساده که در بر دارنده مبانی OpenStreetMap است آغاز
کنید.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Fa:Beginners%27_guide
+ title: راهنمای مبتدیان
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: یک سؤال بپرسید یا پاسخ ها را ببینید در سایت پرسش و پاسخ OSM.
+ mailing_lists:
+ title: فهرست ایمیلها
+ irc:
+ title: IRC
+ switch2osm:
+ title: سویچ به OSM
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
شما داده ها را در روش های خاص تغییر دهید یا بسازید، شما باید نتایج را تحت همین
مجوز توزیع کنید. <a href=''%{copyright_path}''>صفحه ی حق نشر و مجوز</a> را
برای راهنمایی ببینید.'
+ legal_title: قانونی
partners_title: شرکای تجاری
notifier:
diary_comment_notification:
welcome: بعد از اینکه حسابتان را تأیید کردید، ما به شما برخی از اطلاعات اضافی
را ارائه میدهیم تا بتوانید شروع کنید.
email_confirm:
- subject: '[OpenStreetMap] راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cÛ\8cتان را تأیید کنید'
+ subject: '[OpenStreetMap] اÛ\8cÙ\85Û\8cÙ\84تان را تأیید کنید'
email_confirm_plain:
greeting: سلام ،
hopefully_you: کسی (امیدواریم شما) میخواهد آدرس ایمیلش را تغییر دهد از %{server_url}
subject: '[OpenStreetMap] درخواست تنظیم مجدد رمز عبور'
lost_password_plain:
greeting: سلام ،
- hopefully_you: کسÛ\8c (اØتÙ\85اÙ\84اÙ\8b Ø´Ù\85ا) Ø®Ù\88استÙ\87 است Ú©Ù\87 رÙ\85ز عبÙ\88رش تÙ\86ظÛ\8cÙ\85 Ù\85جدد Ø´Ù\88د در
- راÛ\8cاÙ\86اÙ\85Ù\87Ù\94 اÛ\8cÙ\86 Øساب در openstreetmap.org.
+ hopefully_you: کسÛ\8c (اØتÙ\85اÙ\84اÙ\8b Ø´Ù\85ا) Ø®Ù\88استÙ\87 است Ú©Ù\87 بر رÙ\88Û\8c Øساب کاربرÛ\8c اÛ\8cÙ\86 آدرس
+ اÛ\8cÙ\85Û\8cÙ\84 در openstreetmap.org رÙ\85ز عبÙ\88رش تÙ\86ظÛ\8cÙ\85 Ù\85جدد Ø´Ù\88د.
click_the_link: اگر این شمایید، برای تنظیم مجدد رمز عبور لطفاً روی پیوند زیر
کلیک کنید.
lost_password_html:
greeting: سلام ،
- hopefully_you: کسÛ\8c (اØتÙ\85اÙ\84اÙ\8b Ø´Ù\85ا) Ø®Ù\88استÙ\87 است Ú©Ù\87 رÙ\85ز عبÙ\88رش تÙ\86ظÛ\8cÙ\85 Ù\85جدد Ø´Ù\88د در
- راÛ\8cاÙ\86اÙ\85Ù\87Ù\94 اÛ\8cÙ\86 Øساب در openstreetmap.org.
+ hopefully_you: کسÛ\8c (اØتÙ\85اÙ\84اÙ\8b Ø´Ù\85ا) Ø®Ù\88استÙ\87 است Ú©Ù\87 بر رÙ\88Û\8c Øساب کاربرÛ\8c اÛ\8cÙ\86 آدرس
+ اÛ\8cÙ\85Û\8cÙ\84 در openstreetmap.org رÙ\85ز عبÙ\88رش تÙ\86ظÛ\8cÙ\85 Ù\85جدد Ø´Ù\88د.
click_the_link: اگر این شمایید، برای تنظیم مجدد لطفاً روی پیوند زیر کلیک کنید.
note_comment_notification:
anonymous: کاربر ناشناس
close: بستن
search:
search: جستجو
+ get_directions: دریافت مسیرها
+ get_directions_title: یافتن مسیرهای بین دو نقطه
+ from: از
+ to: به
where_am_i: من کجا هستم؟
where_am_i_title: با استفاده از موتور جستجو مکان فعلی را توصیف کنید
submit_text: برو
create:
upload_trace: بارگذاری پیگیری GPS
trace_uploaded: پروندهٔ GPX شما بارگذاری شده است و در انتظار درج در پایگاه داده
- است. اÛ\8cÙ\86 کار Ù\85عÙ\85Ù\88Ù\84اÙ\8b Ù\86Û\8cÙ\85 ساعت Ø·Ù\88Ù\84 Ù\85Û\8câ\80\8cکشد Ù\88 در صÙ\88رت تکÙ\85Û\8cÙ\84Ø\8c راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cاÛ\8c بÙ\87 Ø´Ù\85ا
- فرستاده خواهد شد.
+ است. اÛ\8cÙ\86 کار Ù\85عÙ\85Ù\88Ù\84اÙ\8b Ù\86Û\8cÙ\85 ساعت Ø·Ù\88Ù\84 Ù\85Û\8câ\80\8cکشد Ù\88 در صÙ\88رت تکÙ\85Û\8cÙ\84Ø\8c اÛ\8cÙ\85Û\8cÙ\84Û\8c بÙ\87 Ø´Ù\85ا Ù\81رستادÙ\87
+ خواهد شد.
edit:
title: ویرایش پیگیری %{name}
heading: ویرایش پیگیری %{name}
login:
title: ورود
heading: ورود
- email or username: 'راÛ\8cاÙ\86اÙ\85Ù\87 یا نام کاربری:'
+ email or username: 'آدرس اÛ\8cÙ\85Û\8cÙ\84 یا نام کاربری:'
password: 'کلمه عبور:'
openid: '%{logo} OpenID:'
remember: مرا به خاطر بسپار
register now: اکنون ثبت نام شود
with username: 'از قبل حساب OpenStreetMap دارید؟ لطفاً با نام کاربری و رمز عبورتان
وارد شوید:'
- with openid: 'متناوبا، برای وارد شدن از OpenID استفاده کنید:'
new to osm: در OpenStreetMap تازهوارد هستید؟
to make changes: برای ایجاد تغییرات در داده های OpenStreetMap، شما باید یک حساب
داشته باشید.
create account minute: یک حساب بسازید. فقط یک دقیقه زمان می برد.
no account: حساب کاربری ندارید؟
- account not active: پوزش، حسابتان هنوز فعال نشدهاست.<br />لطفاً از پروندی که
- در راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cÛ\8cتاÙ\86 تأÛ\8cÛ\8cد بود برای فعالسازی حسابتان استفاده کنید، یا <a href="%{reconfirm}">یک
- راÛ\8cاÙ\86اÙ\85Ù\87Ù\94 تأیید تازه درخواست دهید</a>.
+ account not active: پوزش، حسابتان هنوز فعال نشدهاست.<br />لطفاً از پیوندی که
+ در اÛ\8cÙ\85Û\8cÙ\84 تأÛ\8cÛ\8cدتاÙ\86 بود برای فعالسازی حسابتان استفاده کنید، یا <a href="%{reconfirm}">یک
+ اÛ\8cÙ\85Û\8cÙ\84 تأیید تازه درخواست دهید</a>.
account is suspended: پوزش، حساب شما به دلیل فعالیتهای مشکوک مسدود شدهاست.
<br />لطفاً تماس بگیرید با <a href="%{webmaster}">مدیر سایت</a> اگر میخواهید
آنرا مطرح کنید.
auth failure: پوزش، با این اطلاعات نمی توان وارد شد.
- openid missing provider: پوزش، با ارایه دهنده OpenID شما نمی توان ارتباط برقرار
- کرد
- openid invalid: پوزش، OpenID شما ناقص به نظر می رسد
openid_logo_alt: ورود با OpenID
- openid_providers:
+ auth_providers:
openid:
title: ورود با OpenID
- alt: ورود با یک آدرس OpenID
+ alt: ورود با نشانی OpenID
google:
title: ورود با گوگل
- alt: ورود با یک OpenID گوگل
+ alt: ورود با OpenID گوگل
yahoo:
title: ورود با یاهو
- alt: ورود با یک OpenID یاهو
+ alt: ورود با OpenID یاهو
wordpress:
title: ورود با وردپرس
- alt: ورود با یک OpenID وردپرس
+ alt: ورود با OpenID وردپرس
aol:
title: ورود با AOL
- alt: ورود با یک OpenID ، AOL
+ alt: ورود با OpenID AOL
logout:
title: خروج
heading: خروج از OpenStreetMap
lost_password:
title: فراموشی کلمه عبور
heading: کلمه عبور خود را فراموش کردهاید؟
- email address: 'نشانی رایانامه:'
+ email address: 'آدرس ایمیل:'
new password button: تنظیم مجدد کلمه عبور
help_text: ایمیلی را که هنگام ثبت نام استفاده کردهاید وارد کنید، ما پیوندی
به آن میفرستیم تا بتوانید به وسیلهٔ آن رمز عبورتان را مجدد تنظیم کنید.
notice email on way: متاسفیم که آنرا گم کرده اید :-( اما ایمیلی در راه است که
میتوانید بزودی آنرا مجدد تنظیم کنید.
- notice email cannot find: نشانی رایانامه یافت نشد، متأسفیم.
+ notice email cannot find: آن آدرس ایمیل یافت نشد، متأسفیم.
reset_password:
title: تنظیم مجدد کلمه عبور
heading: تنظیم مجدد کلمه عبور برای %{user}
header: رایگان و قابل ویرایش
html: |-
<p>بر خلاف سایر نقشهها، OpenStreetMap کاملاً توسط افرادی مثل شما ساختهشده و برای تعمیر، بهروزرسانی، دریافت و استفاده برای هر کسی آزاد است.</p>
- <p>براÛ\8c شرÙ\88ع Ú©Ù\85Ú© ثبت Ù\86اÙ\85 Ú©Ù\86Û\8cد. براÛ\8c تأÛ\8cÛ\8cد Øسابâ\80\8cتاÙ\86 راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cای میفرستیم.</p>
- license_agreement: Ù\88Ù\82تÛ\8c راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cÛ\8cتان را تأیید کردید نیاز است که با <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">شرایط
+ <p>براÛ\8c شرÙ\88ع Ú©Ù\85Ú© ثبت Ù\86اÙ\85 Ú©Ù\86Û\8cد. براÛ\8c تأÛ\8cÛ\8cد Øسابâ\80\8cتاÙ\86 اÛ\8cÙ\85Û\8cÙ\84ی میفرستیم.</p>
+ license_agreement: Ù\88Ù\82تÛ\8c اÛ\8cÙ\85Û\8cÙ\84تان را تأیید کردید نیاز است که با <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">شرایط
همکاری</a> موافقت کنید.
- email address: 'نشانی رایانامه:'
- confirm email address: 'تأیید نشانی رایانامه:'
+ email address: 'آدرس ایمیل:'
+ confirm email address: 'تأیید آدرس ایمیل:'
not displayed publicly: به عموم نشان داده نمیشود (<a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
title="wiki privacy policy including section on email addresses">حفظ حریم
خصوصی</a>را ببینید)
display name: 'نام نمایشی:'
display name description: ' نام کاربری شما برای عموم نمایش داده شده. شما می
توانید بعدا این مورد را در ترجیحات تغییر دهید.'
- openid: '%{logo} OpenID:'
+ external auth: 'اعتبار طرف سوم:'
password: 'کلمه عبور:'
confirm password: 'تأیید گذرواژه:'
- use openid: روش دیگر، استفاده از %{logo} OpenID برای وارد شدن
- openid no password: با OpenID رمز عبور درخواست نمیشود، اما برخی ابزارهای اضافی
- یا سرویس دهنده هنوز به یکی نیاز دارند.
- openid association: |-
- <p>OpenID شما هنوز با یک حساب OpenStreetMap همراه نیست.</p>
- <ul>
- <li>اگر در OpenStreetMap جدید هستید، لطفاً از زیر یک حساب بسازید.</li>
- <li>
- اگر از قبل حسابی دارید، میتوانید با استفاده از نام کاربری و رمز عبورتان وارد حسابتان شوید و سپس حسابتان را در تنظیمات کاربری به OpenID وابسته سازید.
- </li>
- </ul>
+ use external auth: استفاده از طرف سوم برای ورود
+ auth no password: با استفاده از طرف سوم نیازی به گذروآه نیست ولی هنوز نیاز به
+ اتصال به سرور آنهاست.
continue: ثبت نام
terms accepted: با تشکر از پذیرش شرایط شرکت کنندگان تازه!
terms declined: متاسفیم که تصمیم گرفتید شرایط شرکت کننده تازه را نپذیرید. برای
ct declined: رد شده
ct accepted: پذیرفته شده %{ago} قبل
latest edit: 'آخرین ویرایش %{ago}:'
- email address: 'نشانی رایانامه:'
+ email address: 'آدرس ایمیل:'
created from: 'ایجادشده از:'
status: 'وضعیت:'
spam score: 'امتیاز هرزنامه:'
moderator_history: بلوک های داده شده
comments: نظرات
create_block: بلوک کردن این کاربر
- activate_user: فعالکردن این کاربر
+ activate_user: فعال کردن این کاربر
deactivate_user: غیر فعال کردن این کاربر
confirm_user: تأیید این کاربر
hide_user: مخفی کردن این کاربر
account:
title: ویرایش حساب
my settings: تنظیمات من
- current email address: 'نشانی کنونی رایانامه:'
- new email address: 'نشانی رایانامه جدید:'
+ current email address: 'آدرس ایمیل فعلی:'
+ new email address: 'آدرس ایمیل جدید:'
email never displayed publicly: (هرگز به صورت عمومی نمایش داده نمی شود)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: این چیست؟
public editing:
برای برقراری ارتباط با شما از طریق وب سایت، روی دکمه ی زیر کلیک کنید. <b>از
تغییرات 0.6 API، فقط کاربران عمومی میتوانند نقشه را ویرایش کنند</b>. (<a
href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">دلیل را پیدا کنید</a>).
- <ul><li>آدرس راÛ\8cاÙ\86اÙ\85Ù\87Ù\94 Ø´Ù\85ا با تبدÛ\8cÙ\84 بÙ\87 عÙ\85Ù\88Ù\85Û\8c آشکار Ù\86Ø®Ù\88اÙ\87د شد.</li><li>اÛ\8cÙ\86
- عÙ\85Ù\84Û\8cات را Ù\86Ù\85Û\8c Ø´Ù\88د برگرداÙ\86د Ù\88 Ù\87Ù\85Ù\87 Û\8c کاربراÙ\86 تازÙ\87 بÙ\87 Ø·Ù\88ر Ù¾Û\8cØ´Ù\81رض عÙ\85Ù\88Ù\85Û\8c Ù\87ستÙ\86د.</li></ul>
+ <ul><li>آدرس اÛ\8cÙ\85Û\8cÙ\84 Ø´Ù\85ا با تبدÛ\8cÙ\84 بÙ\87 عÙ\85Ù\88Ù\85Û\8c آشکار Ù\86Ø®Ù\88اÙ\87د شد.</li><li>اÛ\8cÙ\86 عÙ\85Ù\84Û\8cات
+ را نمی شود برگرداند و همه ی کاربران تازه به طور پیشفرض عمومی هستند.</li></ul>
contributor terms:
heading: 'شرایط شرکتکنندگان:'
agreed: شما باید با شرایط کاربرهای تازه موافقت کنید.
make edits public button: همه ویرایشهای من را عمومی کن
return to profile: بازگشت به نمایه
flash update success confirm needed: اطلاعات کاربر با موفقیت به روز شد. برای
- تأیید نشانی رایانامه جدیدتان یادداشت موجود در رایانامهیتان را بررسی کنید.
+ تأیید آدرس ایمیل جدیدتان یادداشت موجود در ایمیلتان را بررسی کنید.
flash update success: اطلاعات کاربر با موفقیت به روز شد.
confirm:
- heading: راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cÛ\8cتان را بررسی کنید!
- introduction_1: Û\8cÚ© راÛ\8cاÙ\86اÙ\85Ù\87 تأیید به شما ارسال کردیم.
- introduction_2: ØسابتاÙ\86 را با Ú©Ù\84Û\8cÚ© رÙ\88Û\8c Ù¾Û\8cÙ\88Ù\86دÛ\8c Ú©Ù\87 در راÛ\8cاÙ\86اÙ\85Ù\87â\80\8cÛ\8cتاÙ\86 بÙ\88د تأÛ\8cید
- کنید و قادر خواهید بود نقشهکشی را شروع کنید.
+ heading: اÛ\8cÙ\85Û\8cÙ\84تان را بررسی کنید!
+ introduction_1: Û\8cÚ© اÛ\8cÙ\85Û\8cÙ\84 تأیید به شما ارسال کردیم.
+ introduction_2: ØسابتاÙ\86 را با Ú©Ù\84Û\8cÚ© رÙ\88Û\8c Ù¾Û\8cÙ\88Ù\86دÛ\8c Ú©Ù\87 در اÛ\8cÙ\85Û\8cÙ\84تاÙ\86 بÙ\88د تأÛ\8cÛ\8cد Ú©Ù\86ید
+ و قادر خواهید بود نقشهکشی را شروع کنید.
press confirm button: برای فعالسازی حساب تان روی دکمه ی تأیید زیر کلیک کنید.
button: تأیید
+ success: ' تشکر از ثبت نام حساب کاربری تایید شد'
already active: این حساب کاربری در حال حاضر تأیید شده است.
unknown token: کد تأیید منقضی شده یا وجود ندارد.
- reconfirm_html: اگر Ù\86Û\8cاز دارÛ\8cد راÛ\8cاÙ\86اÙ\85Ù\87 تأیید را دوباره بفرستیم، <a href="%{reconfirm}">اینجا
+ reconfirm_html: اگر Ù\86Û\8cاز دارÛ\8cد اÛ\8cÙ\85Û\8cÙ\84 تأیید را دوباره بفرستیم، <a href="%{reconfirm}">اینجا
کلیک کنید</a>.
confirm_resend:
success: ما نکتهٔ تأیید جدیدی به %{email} فرستادیم و به محض اینکه شما حسابتان
به هیچ درخواست تأییدی نیستیم.
failure: کاربر %{name} یافت نشد.
confirm_email:
- heading: تأÛ\8cÛ\8cد تغÛ\8cÛ\8cر Ù\86شاÙ\86Û\8c راÛ\8cاÙ\86اÙ\85Ù\87
- press confirm button: برای تأیید نشانی رایانامهای جدیدتان دکمهٔ تأیید زیر را
- فشار دهید.
+ heading: تأÛ\8cÛ\8cد تغÛ\8cÛ\8cر Ù\86شاÙ\86Û\8c اÛ\8cÙ\85Û\8cÙ\84
+ press confirm button: برای تأیید آدرس ایمیل جدیدتان دکمهٔ تأیید زیر را فشار
+ دهید.
button: تأیید
- success: نشانی رایانامهیتان تأیید شد، با تشکر از شما برای ثبت نام!
- failure: یک نشانی رایانامه در حال حاضر با این نشانه تأیید شدهاست.
+ success: آدرس ایمیلتان تأیید شد، با تشکر از شما برای ثبت نام!
+ failure: یک آدرس ایمیل در حال حاضر با این نشانه تأیید شده است.
set_home:
flash success: موقعیت خانه با موفقیت ذخیره شد
go_public:
heading: '%{block_on} توسط %{block_by} بلوک شده'
time_future: در %{time} پایان می پذیرد
time_past: به پایان رسیده %{time} قبل
+ created: ایجاد شده
+ ago: '%{time} پیش'
status: وضعیت
show: نمایش
edit: ویرایش
comment: نظر
edit_help: نقشه را جابجا کنید و روی مکانی که میخواهید ویرایش کنید بزرگنمایی کنید،
سپس اینجا کلیک کنید.
+ directions:
+ engines:
+ graphhopper_bicycle: دوچرخه (GraphHopper)
+ graphhopper_foot: پیاده (GraphHopper)
+ mapquest_bicycle: دوچرخه (MapQuest)
+ mapquest_car: اتومبیل (MapQuest)
+ mapquest_foot: پیاده (MapQuest)
+ osrm_car: اتومبیل (OSRM)
+ directions: جهت
+ distance: مسافت
+ errors:
+ no_route: نتوانستیم بین آن دو مکان، مسیری بیابیم.
+ no_place: متاسفیم - محل پیدا نشد.
+ instructions:
+ follow_without_exit: دنبال کن %{name}
+ unnamed: بی نام
+ courtesy: جهت از %{link}
+ time: مدت
query:
node: گره
way: راه
# Author: Centerlink
# Author: Crt
# Author: Daeron
+# Author: Espeox
# Author: Konstaduck
# Author: Lliehu
# Author: Markosu
# Author: Nike
# Author: Olli
# Author: Ramilehti
+# Author: Ruila
# Author: Samoasambia
# Author: Silvonen
# Author: Snidata
sorry: Valitettavasti pyytämäsi muutoskokoelmien listan hakeminen kesti liian
kauan.
rss:
+ title_all: Keskustelu OpenStreetMapin muutoskokoelmasta
+ comment: 'Käyttäjä %{author} kommentoi muutoskokoelmaa #%{changeset_id}'
commented_at_html: Päivitetty %{when} sitten
commented_at_by_html: '%{user} päivittänyt %{when} sitten'
full: Koko keskustelu
taxiway: Rullaustie
terminal: Terminaali
amenity:
+ animal_shelter: Eläinsuoja
arts_centre: Taidekeskus
atm: Pankkiautomaatti
bank: Pankki
bicycle_parking: Pyöräparkki
bicycle_rental: Pyörävuokraamo
biergarten: Terassi
+ boat_rental: Venevuokraamo
brothel: Bordelli
bureau_de_change: Rahanvaihto
bus_station: Linja-autoasema
car_wash: Autopesu
casino: Kasino
charging_station: Latausasema
+ childcare: Lastenhoito
cinema: Elokuvateatteri
clinic: Klinikka
+ clock: Kello
college: Oppilaitos
community_centre: Yhteisökeskus
courthouse: Oikeustalo
food_court: Elintarviketori
fountain: Lähde
fuel: Polttoaine
+ gambling: Uhkapelaus
grave_yard: Hautausmaa
gym: Liikuntakeskus / kuntosali
health_centre: Terveyskeskus
library: Kirjasto
market: Tori
marketplace: Tori
+ monastery: Luostari
+ motorcycle_parking: Moottoripyöräpysäköinti
nightclub: Yökerho
nursery: Päiväkoti
nursing_home: Hoitokoti
office: Toimisto
parking: Parkkipaikka
+ parking_entrance: Pysäköintialueen sisäänkäynti
pharmacy: Apteekki
place_of_worship: Kirkko, temppeli, pyhä paikka
police: Poliisi
"yes": Silta
building:
"yes": Rakennus
+ craft:
+ brewery: Panimo
+ gardener: Puutarhuri
+ painter: Taidemaalari
+ photographer: Valokuvaaja
+ plumber: Putkimies
+ shoemaker: Suutari
+ tailor: Räätäli
+ "yes": Käsityömyymälä
emergency:
+ ambulance_station: Ensihoitoasema
+ defibrillator: Defibrillaattori
+ landing_site: Hätälaskualue
phone: Hätäpuhelin
highway:
+ abandoned: Hylätty valtatie
bridleway: Ratsastustie
bus_guideway: Ohjattu linja-autokaista
bus_stop: Bussipysäkki
construction: Rakenteilla oleva tie
cycleway: Pyörätie
+ elevator: Hissi
emergency_access_point: Hätätilapaikka
footway: Polku
ford: Kahluupaikka
tertiary: Yhdystie
tertiary_link: Yhdystie
track: Metsätie
+ traffic_signals: Liikennevalot
trail: Vaelluspolku
trunk: Valtatie
trunk_link: Valtatie
unclassified: Luokittelematon tie
unsurfaced: Päällystämätön tie
+ "yes": Tie
historic:
archaeological_site: Arkeologinen kohde
battlefield: Taistelukenttä
boundary_stone: Rajakivi
- building: Rakennus
+ building: Historiallinen rakennus
+ bunker: Bunkkeri
castle: Linna
church: Kirkko
citywalls: Kaupunginmuurit
memorial: Muistomerkki
mine: Kaivos
monument: Muistomerkki
+ roman_road: Roomalainen tie
ruins: Rauniot
+ stone: Kivi
tomb: Hautakammio
tower: Torni
wayside_cross: Tieristi
wayside_shrine: Tienvarsialttari
wreck: Hylky
+ junction:
+ "yes": Risteys
landuse:
allotments: Siirtolapuutarha
basin: Syvänne
leisure:
beach_resort: Rantakohde
bird_hide: Linnunpesä
+ club: Klubi
common: Yhteinen maa
+ dog_park: Koirapuisto
fishing: Kalastusalue
+ fitness_centre: Kuntoilukeskus
fitness_station: Kuntosali
garden: Puutarha
golf_course: Golf-kenttä
+ horse_riding: Ratsastus
ice_rink: Luistelurata
marina: Huvivenesatama
miniature_golf: Minigolf
swimming_pool: Uima-allas
track: Juoksurata
water_park: Vesipuisto
+ man_made:
+ lighthouse: Majakka
+ tower: Torni
+ works: Tehdas
military:
airfield: Sotilaskenttä
barracks: Kasarmi
reef: Riutta
ridge: Harju
rock: Kivi
+ saddle: Satula
+ sand: Hiekka
scree: Kivikko
scrub: Pensaikko
spring: Lähde
camp_site: Leirintäalue
caravan_site: Leirintäalue
chalet: Alppimaja
+ gallery: Galleria
guest_house: Vierasmaja
hostel: Hostelli
hotel: Hotelli
results:
no_results: Mitään ei löytynyt
more_results: Lisää tuloksia
- distance:
- one: noin 1 km
- zero: alle 1 km
- other: noin %{count} km
- direction:
- south_west: lounaaseen
- south: etelään
- south_east: kaakkoon
- east: itään
- north_east: koilliseen
- north: pohjoiseen
- north_west: luoteeseen
- west: länteen
layouts:
logo:
alt_text: OpenStreetMap-logo
legal_babble:
title_html: Tekijänoikeus ja lisenssi
intro_1_html: |-
- OpenStreetMap on <i>avointa dataa</i>, joka on lisensoitu <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database Lisenssillä</a> (ODbL).
+ OpenStreetMap on <i>avointa dataa</i>, jonka <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF) on lisensoinut <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database -lisenssillä</a> (ODbL).
intro_2_html: "OpenStreetMapin karttoja ja tietoja voi kopioida, levittää, välittää
ja mukauttaa, \nkunhan OpenStreetMap ja sen tekijät mainitaan. Jos karttoja
tai tietoja muutetaan tai kehitetään, niitä saa levittää vain samalla lisenssillä.\n<a
alt: Esimerkki siitä, miten nimetä OpenStreetMap nettisivulla
title: Nimeämisesimerkki
more_title_html: Lisätietoja
- more_1_html: Lue lisää aineiston käyttämisestä <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">lakiasioiden
- useimmin kysytyimmistä kysymyksistä</a>.
+ more_1_html: |-
+ Lue lisää aineiston käyttämisestä <a
+ href="http://osmfoundation.org/Licence">OSM-säätiön lisensointiohjeesta</a> ja yhteisön keräämistä <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">lakiasioiden useimmin kysytyimmistä kysymyksistä</a>.
more_2_html: "Vaikka OpenStreetMap on avointa dataa, emme voi tarjota maksutonta
karttarajapintaa (API) kolmannen osapuolen kehittäjille.\n\nTutustu <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">API:n
käyttöehtoihin</a>,\n<a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">kartta-aineiston
url: /welcome
title: Tervetuloa OpenStreetMapiin
description: Opi OpenStreetMapin perusteet tällä helpolla aloitusoppaalla.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Fi:Beginners%27_guide
+ title: Vasta-alkajan opas
+ description: Yhteisön ylläpitämä opas aloittelijoille.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Etsi vastauksia tai esitä oma kysymyksesi OSM:n kysy- ja vastaa
-sivustolla. Englanninkielinen.
+ mailing_lists:
+ title: Postituslistat
+ description: Esitä kysymyksiä tai keskustele laajalti kiinnostavista aiheista
+ aiheita koskevilla tai alueellisilla sähköpostilistoilla.
+ forums:
+ title: Keskustelupalsta
+ irc:
+ title: IRC
+ description: Interaktiivinen chat monilla eri kielillä ja monista eri aiheista.
+ switch2osm:
+ description: Auta yrityksiä ja organisaatioita vaihtamaan OpenStreetMapiin pohjautuviin
+ karttoihin ja muihin palveluihin.
wiki:
url: http://wiki.openstreetmap.org/wiki/Fi:Main_Page
title: wiki.openstreetmap.org
mihin tahansa, kunhan OpenStreetMap tekijöineen mainitaan. Jos palvelua kehitetään
tai muuunnellaan, sitä saa levittää eteenpäin vain samalla lisenssillä. Lisätietoja
on <a href=''%{copyright_path}''>Tekijänoikeus ja lisenssi</a> -sivulla.'
+ legal_title: Lakitekninen jako
+ legal_html: |-
+ Tämä ja monet muut OSM-sivustot ovat muodollisesti <a href='http://osmfoundation.org/'>OpenStreetMap-säätiön</a> (OSMF) hallinnoimia OSM-yhteisön puolesta.
+ <a href='http://osmfoundation.org/Contact'>Ota yhteys OSMF:ään</a> lisensointi-, tekijänoikeus- ja muissa lakiteknisissä kysymyksissä.
partners_title: Kumppanit
notifier:
diary_comment_notification:
greeting: Hei,
commented:
partial_changeset_without_comment: ei kommenttia
+ details: 'Lisätietoja muutoskokoelmasta: %{url}'
message:
inbox:
title: Saapuneet
close: Sulje
search:
search: Haku
+ get_directions: Hae reittiohjeet
+ get_directions_title: Hae reittiohjeet kahden paikan välille
+ from: Lähtöpaikka
+ to: Määränpää
where_am_i: Nykyinen sijainti?
where_am_i_title: Määrittää nykyisen sijainnin hakukoneella
submit_text: Hae
allow_write_notes: Muokkaa muistiinpanoja.
oauthorize_success:
title: Valtuutuspyyntö hyväksytty
+ allowed: Sovellukselle %{app_name} on myönnetty käyttöoikeus käyttäjätiliisi.
verification: Vahvistuskoodi on %{code}.
oauthorize_failure:
title: Valtuutuspyyntö epäonnistui
+ denied: Sovelluksen %{app_name} käyttöoikeus käyttäjätiliisi on poistettu.
invalid: Lupamerkki ei kelpaa.
revoke:
- flash: Olet poistanut sovelluksen %{application} avaimen
+ flash: Olet poistanut sovelluksen %{application} käyttöoikeudet
oauth_clients:
new:
title: Rekisteröi uusi sovellus
login_button: Kirjaudu sisään
register now: Rekisteröidy
with username: 'Onko sinulla jo OpenStreetMap-tunnus? Kirjaudu sillä sisään:'
- with openid: 'Kirjaudu OpenID-tunnuksella:'
+ with external: 'Voit myös kirjautua jonkun muun palvelun tunnuksilla:'
new to osm: Oletko uusi OpenStreetMapin käyttäjä?
to make changes: OpenStreetMapin karttatietojen muuttaminen vaatii käyttäjätunnuksen.
create account minute: Luo käyttäjätunnus. Se kestää vain hetken.
toiminnan seurauksena.<br />Ole hyvä ja ota yhteyttä <a href="%{webmaster}">webmasteriin</a>
jos haluat keskustella tästä.
auth failure: Kirjautuminen epäonnistui.
- openid missing provider: Yhteyden muodostaminen OpenID-palvelimeen epäonnistui
- openid invalid: Valitettavasti OpenID-tunnuksesi vaikuttaa olevan virheellinen.
openid_logo_alt: Kirjaudu sisään OpenID-tunnuksella
- openid_providers:
+ auth_providers:
openid:
- title: Kirjaudu sisään OpenID-tunnuksella
- alt: Kirjaudu sisään OpenID-tunnuksen URL-osoitteella
+ title: Kirjaudu sisään OpenID:llä
+ alt: Kirjaudu sisään OpenID-osoitteella
google:
- title: Kirjaudu sisään Google-tunnuksella
- alt: Kirjaudu sisään Googlen OpenID-tunnuksella
+ title: Kirjaudu käyttämällä Google-tunnustasi
+ alt: Kirjaudu käyttämällä Google OpenID-tunnustasi
+ facebook:
+ title: Kirjaudu Facebookin avulla
+ alt: Kirjaudu käyttämällä Facebook-tunnustasi
+ windowslive:
+ title: Kirjaudu Windows Liven avulla
+ alt: Kirjaudu sisään Windows Live -tililläsi
yahoo:
- title: Kirjaudu sisään Yahoo-tunnuksella
- alt: Kirjaudu sisään Yahoon OpenID-tunnuksella
+ title: Kirjaudu Yahoon avulla
+ alt: Kirjaudu käyttämällä Yahoo OpenID -tunnustasi
wordpress:
- title: Kirjaudu sisään Wordpress-tunnuksella
- alt: Kirjaudu sisään Wordpressin OpenID-tunnuksella
+ title: Kirjaudu Wordpressin avulla
+ alt: Kirjaudu käyttämällä Wordpress OpenID -tunnustasi
aol:
- title: Kirjaudu sisään AOL-tunnuksella
- alt: Kirjaudu sisään AOL:n OpenID-tunnuksella
+ title: Kirjaudu AOL:n avulla
+ alt: Kirjaudu käyttämällä AOL OpenID -tunnustasi
logout:
title: Kirjaudu ulos
heading: Kirjaudu ulos OpenStreetMapista
display name: 'Käyttäjätunnus:'
display name description: Julkisesti näkyvä käyttäjänimi. Tätä voi myöhemmin
muuttaa asetuksista.
- openid: '%{logo} OpenID:'
+ external auth: 'Kolmannen osapuolen todennus:'
password: 'Salasana:'
confirm password: 'Salasana uudelleen:'
- use openid: Rekisteröidy %{logo} OpenID-tunnuksella
- openid no password: OpenID:iä käytettäessä salasana ei ole pakollinen, mutta
- jotkut erikoistyökalut ja -palvelimet saattavat vaatia sen.
- openid association: "<p>OpenID-tunnustasi ei ole vielä yhdistetty OpenStreetMap-käyttäjätiliin.</p>\n<ul>\n
- \ <li>Jos olet uusi OpenStreetMapin käyttäjä, luo uusi tunnus käyttäen lomaketta,
- joka näkyy alla.</li>\n <li>\n Jos sinulla on jo käyttäjätunnus, voit kirjautua
- sisään\n käyttäen käyttäjätunnustasi ja salasanaasi, jonka \n jälkeen
- voit liittää OpenID-tunnuksesi käyttäjätiliin\n käyttäjäasetuksistasi. \n
- \ </li>\n</ul>"
+ use external auth: 'Voit myös kirjautua jonkun muun palvelun tunnuksilla:'
+ auth no password: Mikäli kirjaudut sisään kolmannen osapuolen palveluiden avulla,
+ sinun ei tarvitse luoda itsellesi salasanaa, mutta jotkin ylimääräiset työkalut
+ tai palvelimet voivat silti vaatia sitä.
+ auth association: |-
+ <p>ID:täsi ei ole vielä liitetty OpenStreetMap-tunnukseen.</p>
+ <ul>
+ <li>Jos olet uusi OpenStreetMapin käyttäjä, luo itsellesi tunnus allaolevan lomakkeen avulla.</li>
+ <li>
+ Jos sinulla on jo tunnus, voit kirjautua tunnuksellesi syöttämällä käyttäjänimesi ja salasanasi. Kirjauduttuasi voit liittää tunnuksesi ID:esi käyttäjäasetuksissa.
+ </li>
+ </ul>
continue: Rekisteröidy
terms accepted: Kiitos uusien osallistujaehtojen hyväksymisestä!
terms declined: Olemme pahoillamme, ettet hyväksynyt uusia osallistujaehtoja.
current email address: 'Nykyinen sähköpostiosoite:'
new email address: 'Uusi sähköpostiosoite:'
email never displayed publicly: (ei näy muille)
+ external auth: 'Kolmannen osapuolen tunnukset kirjautuessa:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/Fi:OpenID
link text: Mitä tämä tarkoittaa?
public editing:
voit aloittaa kartoituksen.
press confirm button: Aktivoi uusi käyttäjätunnuksesi valitsemalla Vahvista.
button: Vahvista
+ success: Käyttäjätunnuksesi on nyt vahvistettu.
already active: Tämä tunnus on jo vahvistettu.
unknown token: Vahvistuskoodi on vanhentunut tai sitä ei ole.
reconfirm_html: Tarvittaessa voimme lähettää vahvistuksen sähköpostitse, <a
heading: Vahvista sähköpostiosoitteen muutos
press confirm button: Varmenna sähköpostiosoitteesi valitsemalla Vahvista.
button: Vahvista
- success: Sähköpostiosoite on vahvistettu. Kiitos liittymisestä!
+ success: Sähköpostiosoitteesi muutos on nyt vahvistettu!
failure: Tällä tunnisteella on jo vahvistettu sähköpostiosoite.
+ unknown_token: Vahvistuskoodi on vanhentunut tai sitä ei ole.
set_home:
flash success: Kodin sijainnin tallennus onnistui
go_public:
Tätä päätöstä tarkastellaan ylläpidon toimesta pian, tai
voit ottaa yhteyttä käyttäjään %{webmaster} jos haluat keskustella asiasta.
</p>
+ auth_failure:
+ connection_failed: Yhdistäminen todennuspalveluntarjoajaan epäonnistui
+ no_authorization_code: Ei käyttöoikeuskoodia
+ unknown_signature_algorithm: Tunnistamaton allekirjoitusalgoritmi
user_role:
filter:
not_an_administrator: Vain ylläpitäjät voivat hallita käyttäjärooleja, etkä
comment_and_resolve: Kommentoi + ratkaise
comment: Kommentoi
edit_help: Siirrä ja lähennä kartta muokattavaan paikkaan ja napsauta sitten tästä.
+ directions:
+ engines:
+ graphhopper_bicycle: Pyörällä (GraphHopper)
+ graphhopper_foot: Jalan (GraphHopper)
+ mapquest_bicycle: Pyörällä (MapQuest)
+ mapquest_car: Ajaen (MapQuest)
+ mapquest_foot: Jalan (MapQuest)
+ osrm_car: Ajaen (OSRM)
+ directions: Reittiohjeet
+ distance: Etäisyys
+ errors:
+ no_route: Reittiä näiden paikkojen välille ei löytynyt.
+ no_place: Paikkaa ei löytynyt.
+ instructions:
+ roundabout_with_exit: Liikenneympyrässä poistu %{exit}. liittymästä tielle
+ %{name}
+ unnamed: nimetön tie
+ courtesy: Reittiohjeet tarjoaa %{link}
+ time: Matka-aika
query:
node: Piste
way: Viiva
# Author: Damouns
# Author: DavidL
# Author: Efred
+# Author: Eruedin
# Author: EtienneChove
# Author: F.rodrigo
+# Author: Framafan
+# Author: Freak2fast4u
# Author: Gaspard
+# Author: Gileri
# Author: Gomoko
# Author: Hashar
# Author: IAlex
# Author: JB
# Author: Jean-Frédéric
# Author: Jiremek
+# Author: Linedwell
# Author: Litlok
# Author: Ljubinka
+# Author: Lucky
# Author: McDutchie
# Author: Metroitendo
# Author: Momo50WM
# Author: Mulcyber
# Author: Nemo bis
+# Author: Nicolapps
# Author: Od1n
# Author: Olasd
# Author: Orikrin1998
# Author: Pipo
# Author: Pyrog
# Author: Quentinv57
+# Author: Ruila
# Author: Seb35
# Author: Sherbrooke
# Author: Urhixidur
# Author: Vcalame
# Author: Verdy p
+# Author: Yodaspirine
# Author: Yvecai
---
fr:
in_changeset: Groupe de modifications
anonymous: anonyme
no_comment: (aucun commentaire)
- part_of: Partie de
+ part_of: Appartient à
download_xml: Télécharger le XML
view_history: Afficher l’historique
view_details: Afficher les détails
comment: Commentaires (%{count})
hidden_commented_by: Commentaire masqué de %{user} <abbr title='%{exact_time}'>il
y a %{when}</abbr>
- commented_by: Commentaire de %{user} <abbr title='%{exact_time}'>%il y a %{when}</abbr>
+ commented_by: Commentaire de %{user} <abbr title='%{exact_time}'>il y a %{when}</abbr>
changesetxml: XML du groupe de modifications
osmchangexml: XML osmChange
feed:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Téléphérique
chair_lift: Télésiège
drag_lift: Téléski
+ gondola: Télécabine
station: Gare de télécabine
aeroway:
aerodrome: Aérodrome
taxiway: Voie de circulation (Taxiway)
terminal: Terminal
amenity:
+ animal_shelter: Refuge pour animaux
arts_centre: Centre artistique
atm: Distributeur automatique de billets
bank: Banque
bicycle_parking: Parking à vélos
bicycle_rental: Location de vélos
biergarten: Brasserie en plein air
+ boat_rental: Location de bateaux
brothel: Bordel
bureau_de_change: Bureau de change
bus_station: Arrêt de bus
car_wash: Lavage de voiture
casino: Casino
charging_station: Station de recharge
+ childcare: Garde d'enfants
cinema: Cinéma
clinic: Clinique
+ clock: Horloge
college: Établissement d’enseignement supérieur
community_centre: Salle polyvalente
courthouse: Palais de justice
food_court: Aire de restauration
fountain: Fontaine
fuel: Carburant
+ gambling: Club de jeu
grave_yard: Cimetière
gym: Fitness / gymnastique
health_centre: Centre de santé / dispensaire
library: Bibliothèque
market: Marché
marketplace: Place de marché
+ monastery: Monastère
+ motorcycle_parking: Parking à motos
nightclub: Boîte de nuit
nursery: Nurserie
nursing_home: Maison de retraite médicalisée
office: Bureau
parking: Parking
+ parking_entrance: Entrée d'un parking
pharmacy: Pharmacie
place_of_worship: Lieu de culte
police: Police
veterinary: Chirurgie vétérinaire
village_hall: Salle municipale
waste_basket: Poubelle
+ waste_disposal: Élimination des déchets
youth_centre: Centre pour la jeunesse
boundary:
administrative: Limite administrative
"yes": Pont
building:
"yes": Bâtiment
+ craft:
+ brewery: Brasserie
+ carpenter: Charpentier
+ electrician: Électricien
+ gardener: Jardinier
+ painter: Peintre
+ photographer: Photographe
+ plumber: Plombier
+ shoemaker: Cordonnier
+ tailor: Tailleur
+ "yes": Boutique d'artisanat
emergency:
+ ambulance_station: Dépôt d'ambulances
+ defibrillator: Défibrillateur
+ landing_site: Terrain d'atterrissage d'urgence
phone: Borne d’appel d’urgence
highway:
+ abandoned: Voie ferrée abandonnée
bridleway: Chemin pour cavaliers
bus_guideway: Voie de bus guidé / trolley
bus_stop: Arrêt de bus
construction: Autoroute en construction
cycleway: Piste cyclable
+ elevator: Ascenseur
emergency_access_point: Point d’accès d’urgence
footway: Chemin piéton
ford: Gué
tertiary: Route tertiaire
tertiary_link: Route tertiaire
track: Chemin
+ traffic_signals: Feux de circulation
trail: Sentier
trunk: Voie express
trunk_link: Voie express
unclassified: Route mineure
unsurfaced: Route non revêtue
+ "yes": Route
historic:
archaeological_site: Site archéologique
battlefield: Champ de bataille
boundary_stone: Borne frontière
- building: Bâtiment
+ building: Bâtiment historique
+ bunker: Bunker
castle: Château
church: Église
+ city_gate: Porte de la ville
citywalls: Remparts
fort: Fort
+ heritage: Site du patrimoine
house: Maison
icon: Icône
manor: Manoir
memorial: Mémorial
mine: Mine
monument: Monument
+ roman_road: Voie romaine
ruins: Ruines
+ stone: Pierre
tomb: Tombeau
tower: Tour
wayside_cross: Calvaire
wayside_shrine: Oratoire
wreck: Épave
+ junction:
+ "yes": Intersection / Carrefour
landuse:
allotments: Jardins familiaux
basin: Bassin
road: Zone routière
village_green: Espace vert public
vineyard: Vignoble
+ "yes": Utilisation des terres
leisure:
beach_resort: Station balnéaire
bird_hide: Observatoire ornithologique
+ club: Club
common: Terrains communaux
+ dog_park: Parc à chiens
fishing: Zone de pêche
+ fitness_centre: Centre de fitness
fitness_station: Atelier de parcours de santé
garden: Jardin
golf_course: Terrain de golf
+ horse_riding: Équitation
ice_rink: Patinoire
marina: Port de plaisance
miniature_golf: Golf miniature
pitch: Terrain de sport
playground: Aire de jeux
recreation_ground: Terrain de jeux
+ resort: Resort
sauna: Sauna
slipway: Cale de lancement
sports_centre: Centre sportif
swimming_pool: Piscine
track: Piste de course
water_park: Parc aquatique
+ "yes": Loisirs
+ man_made:
+ lighthouse: Phare
+ pipeline: Pipeline
+ tower: Tour
+ works: Usine
+ "yes": Créé par l'homme
military:
airfield: Terrain d’aviation militaire
barracks: Caserne
forest: Forêt
geyser: Geyser
glacier: Glacier
+ grassland: Herbage
heath: Bruyère
hill: Colline
island: Île
reef: Récif
ridge: Crête
rock: Roche
+ saddle: Selle
+ sand: Sable
scree: Éboulis
scrub: Broussailles
spring: Source
wood: Forêt
office:
accountant: Comptable
+ administrative: Administration
architect: Architecte
company: Entreprise
employment_agency: Agence pour l’emploi
travel_agent: Agence de voyage
"yes": Bureau
place:
+ allotments: Jardins familiaux
+ block: Bloc
airport: Aéroport
city: Ville
country: Pays
town: Ville
unincorporated_area: Territoire non organisé
village: Village
+ "yes": Lieu
railway:
abandoned: Voie ferrée abandonnée
construction: Voie ferrée en construction
"yes": Boutique
tourism:
alpine_hut: Refuge
+ apartment: Appartement
artwork: Œuvre d’art
attraction: Attraction
bed_and_breakfast: Gîte
camp_site: Camping
caravan_site: Site pour caravanes
chalet: Chalet
+ gallery: Galerie
guest_house: Maison d'hôte
hostel: Auberge
hotel: Hôtel
wadi: Oued
waterfall: Chute d’eau
weir: Barrage
+ "yes": Voie navigable
admin_levels:
level2: Frontière de pays
level4: Limite d’État, province ou région
results:
no_results: Aucun résultat n’a été trouvé
more_results: Plus de résultats
- distance:
- one: environ 1 km
- zero: moins d’1 km
- other: environ %{count} km
- direction:
- south_west: sud-ouest
- south: sud
- south_east: sud-est
- east: est
- north_east: nord-est
- north: nord
- north_west: nord-ouest
- west: ouest
layouts:
logo:
alt_text: Logo d’OpenStreetMap
legal_babble:
title_html: Droits d’auteur et licence
intro_1_html: |-
- OpenStreetMap est un ensemble de <i>données ouvertes</i>, disponibles sous la licence <a
+ OpenStreetMap est un ensemble de <i>données ouvertes</i>, disponibles sous licence libre <a
href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL).
intro_2_html: Vous êtes libre de copier, distribuer, transmettre et adapter
nos données, à condition que vous créditiez, OpenStreetMap et ses contributeurs.
alt: Exemple d’attribution d’OpenStreetMap sur une page internet
title: Exemple d’attribution
more_title_html: Pour trouver plus d’informations
- more_1_html: Pour obtenir plus d’informations sur la façon de réutiliser nos
- données et de nous créditer, veuillez lire la <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">FAQ
- légale</a>.
+ more_1_html: |-
+ Pour obtenir plus d’informations sur la façon de réutiliser nos données et de nous créditer, veuillez lire la <a
+ href="http://osmfoundation.org/Licence"> Licence OSMF</a> et le <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">FAQ Légal</a>.
more_2_html: |-
Bien qu’OpenStreetMap soit un jeu de données libres et ouvertes, nous ne pouvons pas nous même fournir une API gratuite et en libre accès pour les développeurs tiers.
Veuillez vous référer à notre <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">politique d’utilisation de l’API</a>, à notre <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">politique d’utilisation des tuiles</a>, et à la <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">politique d’utilisation de Nominatim</a>.
contributors_nz_html: '<strong>Nouvelle-Zélande</strong> : contient des données
provenant du <em>Land Information New Zealand</em>. Copyright de la Couronne
réservé.'
+ contributors_si_html: |-
+ <strong>Slovénie</strong> : Contient des données de l’<a href="http://www.gu.gov.si/en/">Autorité de Planification et de Cartographie</a> et du
+ <a href="http://www.mkgp.gov.si/en/">Ministère de l’Agriculture, de la Forêt et de l’Alimentation</a>
+ (information publique de la Slovénie).
contributors_za_html: |-
<strong>Afrique du Sud</strong> : contient des données issues de la <a href="http://www.ngi.gov.za/">Direction principale des
Informations Géospatiales Nationales</a>, copyright de l’État réservé.
vous référer à notre <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procédure
de retrait de données</a> ou notifiez-nous directement à travers notre <a
href="http://dmca.openstreetmap.org/">formulaire en ligne</a>.
+ trademarks_title_html: <span id="marques"></span>Marques
+ trademarks_1_html: OpenStreetMap et le logo loupe sont des marques déposées
+ de la OpenStreetMap Foundation. Si vous avez des questions à propos de l'utilisation
+ de ces marques, merci de prendre contact avec le <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licence
+ Working Group</a>.
welcome_page:
title: Bienvenue !
introduction_html: Bienvenue à OpenStreetMap, la carte du monde libre et éditable.
tag_html: Un <strong>attribut</strong> (ou <em>tag</em>) est une information
à propos d’un nœud ou d’un chemin, comme le nom d’un restaurant ou la limite
de vitesse d’une route.
+ rules:
+ title: Règles !
+ paragraph_1_html: "OpenStreetMap a quelques règles formelles, mais nous attendons
+ de tous les participants une collaboration et une communication avec la communauté.
+ Si vous envisagez\nd’autres activités que la modification à la main, veuillez
+ lire et suivre les directives sur \n<a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>les
+ importations</a> et \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>les
+ modifications automatiques</a>."
questions:
title: Des questions ?
paragraph_1_html: |-
url: /welcome
title: Bienvenue à OSM
description: Commencer avec ce guide rapide couvrant les bases d’OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/FR:Guide_du_d%C3%A9butant
+ title: Guide pour débutants
+ description: Guide pour les débutants maintenu par la communauté.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Poser une question ou chercher des réponses sur le site de questions-et-réponses
d’OSM.
+ mailing_lists:
+ title: Listes de diffusion
+ description: Poser une question ou discuter de questions intéressantes sur un
+ large éventail de thématiques ou des listes de diffusion régionaux.
+ forums:
+ title: Forums
+ description: Des questions et des discussions pour ceux qui préfèrent un interface
+ en style de tableau d'affichage.
+ irc:
+ title: IRC
+ description: Chat interactif dans de nombreuses langues différentes et sur de
+ nombreux sujets.
+ switch2osm:
+ title: switch2osm
+ description: Aide pour les entreprises et les organisations de commutation à
+ OpenStreetMap, en fonction des cartes et d'autres services.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
pouvez distribuez le résultat seulement suivant la même licence. Consultez la
page sur les <a href=''%{copyright_path}''>droits d’auteur et licence</a> pour
plus de détails.'
+ legal_title: Juridique
+ legal_html: "Ce site et de nombreux autres services connexes sont formellement
+ exploités par la \n<a href=\"http://osmfoundation.org/\">Fondation OpenStreetMap</a>
+ (OSMF) \nau nom de la communauté.\n<br> \nVeuillez <a href=\"http://osmfoundation.org/Contact\">contacter
+ l'OSMF</a> \nsi vous avez les questions à propos des licences, droits d'auteur
+ ou d'autres questions juridiques."
partners_title: Partenaires
notifier:
diary_comment_notification:
close: Fermer
search:
search: Recherche
+ get_directions: Obtenir les directions
+ get_directions_title: Trouvez des itinéraires entre deux points
+ from: Depuis
+ to: À
where_am_i: Où suis-je ?
where_am_i_title: Décrit la position actuelle en utilisant le moteur de recherche
submit_text: Ok
register now: S'inscrire maintenant
with username: 'Vous avez déjà un compte sur OpenStreetMap ? Connectez-vous
avec votre identifiant et votre mot de passe :'
- with openid: 'Vous pouvez également utiliser OpenID pour vous connecter :'
+ with external: 'À la place, utilisez un tiers pour vous connecter :'
new to osm: Nouveau sur OpenStreetMap ?
to make changes: Pour apporter des modifications aux données OpenStreetMap,
vous devez posséder un compte.
si vous voulez en discuter.
auth failure: Désolé, mais les informations fournies n’ont pas permis de vous
identifier.
- openid missing provider: Désolé, impossible de contacter votre fournisseur OpenID
- openid invalid: Désolé, votre OpenID semble malformé
openid_logo_alt: Se connecter avec un OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Connexion avec OpenID
- alt: Connexion avec une URL OpenID
+ title: Se connecter avec OpenID
+ alt: Se connecter avec une URL OpenID
google:
- title: Connexion avec Google
- alt: Connexion avec un OpenID Google
+ title: Se connecter avec Google
+ alt: Se connecter avec l’OpenID de Google
+ facebook:
+ title: Se connecter avec Facebook
+ alt: Se connecter avec un compte Facebook
+ windowslive:
+ title: Connexion avec Windows Live
+ alt: Se connecter avec un compte Windows Live
yahoo:
- title: Connexion avec Yahoo
- alt: Connexion avec un OpenID Yahoo
+ title: Se connecter avec Yahoo
+ alt: Se connecter avec l’OpenID de Yahoo
wordpress:
- title: Connexion avec Wordpress
- alt: Connexion avec un OpenID Wordpress
+ title: Se connecter avec Wordpress
+ alt: Se connecter avec l’OpenID de Wordpress
aol:
- title: Connexion avec AOL
- alt: Connexion avec un OpenID AOL
+ title: Se connecter avec AOL
+ alt: Se connecter avec l’OpenID d’AOL
logout:
title: Déconnexion
heading: Déconnexion d'OpenStreetMap
display name: 'Nom affiché :'
display name description: Votre nom d'utilisateur affiché publiquement. Vous
pouvez changer ceci ultérieurement dans les préférences.
- openid: '%{logo} OpenID :'
+ external auth: 'Authentification tierce :'
password: 'Mot de passe :'
confirm password: 'Confirmez le mot de passe :'
- use openid: Vous pouvez également utiliser %{logo} OpenID pour vous identifier
- openid no password: En utilisant OpenID, il n'est pas nécessaire d'utiliser
- un mot de passe. Toutefois, certains outils ou serveurs tierces peuvent en
- demander un.
- openid association: |-
- <p>Votre OpenID n'est pas encore associé à un compte OpenStreetMap.</p>
+ use external auth: À la place, utilisez un tiers pour vous connecter
+ auth no password: Avec l’authentification par tiers, un mot de passe n’est pas
+ nécessaire, mais des outils supplémentaires ou un serveur peuvent toujours
+ en nécessiter un.
+ auth association: |-
+ <p>Votre ID n’est pas encore associé avec un compte de OpenStreetMap.</p>
<ul>
- <li>Si vous êtes nouveau sur OpenStreetMap, veuillez créer un compte en utilisant le formulaire ci-dessous.</li>
+ <li>Si vous êtes nouveau sur OpenStreetMap, veuillez créer un nouveau compte avec le formulaire ci-dessous.</li>
<li>
- Si vous avez déjà un compte, vous pouvez vous connecter à votre compte
- en utilisant votre identifiant et votre mot de passe, puis associer le compte
- à votre OpenID dans vos préférences utilisateur.
+ Si vous avez déjà un compte, vous pouvez vous y connecter
+ en utilisant votre nom d’utilisateur et votre mot de passe, puis associer le compte
+ à votre ID dans vos préférences utilisateur.
</li>
</ul>
continue: S’inscrire
current email address: 'Adresse de courriel actuelle :'
new email address: 'Nouvelle adresse de courriel :'
email never displayed publicly: (jamais affiché publiquement)
+ external auth: 'Authentification externe :'
openid:
- openid: 'OpenID :'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: qu’est-ce que ceci ?
public editing:
press confirm button: Appuyer le bouton confirmer ci-dessous pour activer votre
compte.
button: Confirmer
+ success: Compte confirmé, merci de vous être enregistré !
already active: Ce compte a déjà été confirmé.
unknown token: Le code de confirmation a expiré ou n’existe pas.
reconfirm_html: Si vous avez besoin que nous vous renvoyions un courriel de
press confirm button: Appuyer sur le bouton confirmer pour confirmer votre nouvelle
adresse e-mail.
button: Confirmer
- success: Adresse email confirmée, merci de vous être enregistré !
+ success: Modification de votre adresse de courriel confirmée !
failure: Une adresse email a déjà été confirmée avec ce jeton d'authentification.
+ unknown_token: Ce code de confirmation a expiré ou n’existe pas.
set_home:
flash success: Emplacement de mon domicile sauvegardé avec succès
go_public:
Cette décision sera vérifiée prochainement par un administrateur. Vous
pouvez contacter le %{webmaster} si vous souhaitez en discuter.
</p>
+ auth_failure:
+ connection_failed: Échec de la connexion au fournisseur d’authentification
+ invalid_credentials: Informations d’authentification non valides
+ no_authorization_code: Pas de code d'autorisation
+ unknown_signature_algorithm: Algorithme de signature inconnu
+ invalid_scope: Étendue invalide
user_role:
filter:
not_an_administrator: Seuls les administrateurs peuvent gérer les rôles mais
heading: '%{block_on} bloqué par %{block_by}'
time_future: Se termine dans %{time}
time_past: S'est terminé il y a %{time}
+ created: Créé
+ ago: il y a %{time}
status: Statut
show: Afficher
edit: Modifier
link: Lien ou HTML
long_link: Lien
short_link: Lien abrégé
+ geo_uri: URI géo
embed: HTML
custom_dimensions: Définir les dimensions personnalisées
format: 'Format :'
show:
comment: Commentaire
subscribe: S’inscrire
- unsubscribe: De désinscrire
+ unsubscribe: Se désabonner
hide_comment: masquer
unhide_comment: démasquer
notes:
comment: Commentaire
edit_help: Déplacez la carte et zoomer sur un emplacement que vous voulez modifier,
puis cliquez là.
+ directions:
+ engines:
+ graphhopper_bicycle: Vélo (GraphHopper)
+ graphhopper_foot: Pied (GraphHopper)
+ mapquest_bicycle: Vélo (MapQuest)
+ mapquest_car: Voiture (MapQuest)
+ mapquest_foot: Pied (MapQuest)
+ osrm_car: Voiture (OSRM)
+ directions: Itinéraire
+ distance: Distance
+ errors:
+ no_route: Impossible de trouver une route entre ces deux lieux.
+ no_place: Désolé, impossible de trouver ce lieu.
+ instructions:
+ continue_without_exit: Continuer sur %{name}
+ slight_right_without_exit: Tourner légèrement à droite sur %{name}
+ turn_right_without_exit: Tourner à droite sur %{name}
+ sharp_right_without_exit: Tournez vivement à droite sur %{name}
+ uturn_without_exit: Faites demi-tour sur %{name}
+ sharp_left_without_exit: Tournez vivement à gauche sur %{name}
+ turn_left_without_exit: Tourner à gauche sur %{name}
+ slight_left_without_exit: Tourner légèrement à gauche sur %{name}
+ via_point_without_exit: (par le point)
+ follow_without_exit: Suivre %{name}
+ roundabout_without_exit: Au rond-point, prendre %{name}
+ leave_roundabout_without_exit: Quitter le rond-point - %{name}
+ stay_roundabout_without_exit: Rester sur le rond-point - %{name}
+ start_without_exit: Démarrer à la fin de %{name}
+ destination_without_exit: Atteignez la destination
+ against_oneway_without_exit: Remonter le sens unique sur %{name}
+ end_oneway_without_exit: Fin du passage à sens unique sur %{name}
+ roundabout_with_exit: Au rond-point prendre la sortie %{exit} sur %{name}
+ unnamed: sans nom
+ courtesy: Itinéraire de la part de %{link}
+ time: Temps
query:
node: Nœud
way: Chemin
title: Créer unn nouveau masquage
show:
description: 'Description :'
- heading: Masquage "%{title}"
+ heading: Démasquage "%{title}"
title: Affichage du masquage
user: 'Créateur :'
edit: Modifier ce masquage
results:
no_results: Nissun risultât
more_results: Altris risultâts
- distance:
- one: cirche 1 Km
- zero: mancul di 1 Km
- other: cirche %{count} Km
- direction:
- south_west: sud-ovest
- south: sud
- south_east: sud-est
- east: est
- north_east: nord-est
- north: nord
- north_west: nord-ovest
- west: ovest
layouts:
logo:
alt_text: Logo di OpenStreetMap
register now: Regjistriti cumò
with username: 'Âstu za un profîl su OpenStreetMap? Jentre cul to non utent
e la tô password:'
- with openid: 'Dopre se no il tô OpenID par jentrâ:'
new to osm: Sêstu gnûf su OpenStreetMap?
to make changes: Par cambiâ alc tai dâts di OpenStreetMap, tu scugnis vê un
profîl.
no account: No âstu ancjemò un profîl?
auth failure: Nus displâs, ma no si à rivât a jentrâ cun i dâts inserîts.
openid_logo_alt: Jentre cuntun OpenID
- openid_providers:
- openid:
- title: Jentre cun OpenID
- alt: Jentre cuntune URL OpenID
- google:
- title: Jentre cun Google
- alt: Jentre cuntun OpenID di Google
- yahoo:
- title: Jentre cun Yahoo
- alt: Jentre cuntun OpenID di Yahoo
- wordpress:
- title: Jentre cun Wordpress
- alt: Jentre cuntun OpenID di Wordpress
- aol:
- title: Jentre cun AOL
- alt: Jentre cuntun OpenID di AOL
logout:
title: Jes
heading: Va fûr di OpenStreetMap
display name: 'Non di mostrâ:'
display name description: Il non utent che al vignarà mostrât a ducj. Tu podarâs
gambiâlu plui tart tes preferencis.
- openid: '%{logo} OpenID:'
password: 'Password:'
confirm password: 'Conferme la password:'
- use openid: O se no, dopre %{logo} OpenID par jentrâ
continue: Regjistriti
terms accepted: Graziis par vê acetât i gnûfs tiermins par contribuî!
terms:
new email address: 'Gnove direzion di pueste:'
email never displayed publicly: (mai mostrade in public)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ce isal chest?
public editing:
e tu podarâs scomençâ a mapâ daurman.
press confirm button: Frache il boton Conferme par ativâ il to profîl.
button: Conferme
+ success: Profîl confermât, graziis par jessiti regjistrât!
already active: Chest profîl al è za stât confermât.
unknown token: Chest codiç di conferme al è scjadût o nol esist.
reconfirm_html: Se tu âs bisugne di un altri messaç di pueste par conferme,
--- /dev/null
+# Messages for Scottish Gaelic (Gàidhlig)
+# Exported from translatewiki.net
+# Export driver: phpyaml
+# Author: GunChleoc
+---
+gd:
+ html:
+ dir: ltr
+ time:
+ formats:
+ friendly: '%e %B %Y %H:%M'
+ blog: '%e %B %Y'
+ activerecord:
+ models:
+ acl: Liosta smachd airson inntrigeadh
+ changeset: Seata atharraichean
+ changeset_tag: Taga airson seata atharraichean
+ country: Dùthaich
+ diary_comment: Beachd an leabhair-latha
+ diary_entry: Clàr an leabhair-latha
+ friend: Caraid
+ language: Cànan
+ message: Teachdaireachd
+ node: Nòd
+ node_tag: Taga nòid
+ notifier: Inneal-caismeachd
+ old_node: Seann nòd
+ old_node_tag: Taga seann nòid
+ old_relation: Seann dàimh
+ old_relation_member: Ball seann dàimh
+ old_relation_tag: Taga seann dàimh
+ old_way: Seann slighe
+ old_way_node: Nòd seann slighe
+ old_way_tag: Taga seann slighe
+ relation: Dàimh
+ relation_member: Ball dàimh
+ relation_tag: Taga dàimh
+ session: Seisean
+ trace: Lorgadh
+ tracepoint: Puing lorgaidh
+ tracetag: Taga lorgaidh
+ user: Cleachdaiche
+ user_preference: Roghainn a' chleachdaiche
+ user_token: Tòcan a' chleachdaiche
+ way: Slighe
+ way_node: Nòd slighe
+ way_tag: Taga slighe
+ attributes:
+ diary_comment:
+ body: Bodhaig
+ diary_entry:
+ user: Cleachdaiche
+ title: Cuspair
+ latitude: Domhan-leud
+ longitude: Domhan-fhad
+ language: Cànan
+ friend:
+ user: Cleachdaiche
+ friend: Caraid
+ trace:
+ user: Cleachdaiche
+ visible: Ri fhaicinn
+ name: Ainm
+ size: Meud
+ latitude: Domhan-leud
+ longitude: Domhan-fhad
+ public: Poblach
+ description: Tuairisgeul
+ message:
+ sender: Seòladair
+ title: Cuspair
+ body: Bodhaig
+ recipient: Faightear
+ user:
+ email: Post-d
+ active: Gnìomhach
+ display_name: Ainm seallaidh
+ description: Tuairisgeul
+ languages: Cànain
+ pass_crypt: Facal-faire
+ printable_name:
+ with_version: '%{id}, v%{version}'
+ with_name_html: '%{name} (%{id})'
+ editor:
+ default: Bun-roghainn (%{name} an-dràsta)
+ potlatch:
+ name: Potlatch 1
+ description: Potlatch 1 (deasaiche am broinn a' bhrabhsair)
+ id:
+ name: iD
+ description: iD (deasaiche am broinn a' bhrabhsair)
+ potlatch2:
+ name: Potlatch 2
+ description: Potlatch 2 (deasaiche am broinn a' bhrabhsair)
+ remote:
+ name: Inneal-smachd cèin
+ description: Inneal-smachd cèin (JOSM no Merkaartor)
+ browse:
+ created: Air a chruthachadh
+ closed: Dùinte
+ created_html: Chaidh a chruthachadh <abbr title='%{title}'>o chionn %{time}</abbr>
+ closed_html: Chaidh a dhùnadh <abbr title='%{title}'>o chionn %{time}</abbr>
+ created_by_html: Chaidh a chruthachadh le %{user} <abbr title='%{title}'>o chionn
+ %{time}</abbr>
+ deleted_by_html: Chaidh a sguabadh às le %{user} <abbr title='%{title}'>o chionn
+ %{time}</abbr>
+ edited_by_html: Chaidh a dheasachadh le %{user} <abbr title='%{title}'>o chionn
+ %{time}</abbr>
+ closed_by_html: Chaidh a dhùnadh le %{user} <abbr title='%{title}'>o chionn %{time}</abbr>
+ version: Tionndadh
+ in_changeset: Seata atharraichean
+ anonymous: gun ainm
+ no_comment: (gun bheachd)
+ part_of: '''Na phàirt de'
+ download_xml: Luchdaich a-nuas XML
+ view_history: Seall an eachdraidh
+ view_details: Seall am mion-fhiosrachadh
+ location: 'Àite:'
+ changeset:
+ title: 'Seata atharraichean: %{id}'
+ belongs_to: Ùghdar
+ node: Nòdan (%{count})
+ node_paginated: Nòdan (%{x}-%{y} à %{count})
+ way: Slighean (%{count})
+ way_paginated: Slighean (%{x}-%{y} à %{count})
+ relation: Dàimhean (%{count})
+ relation_paginated: Dàimhean (%{x}-%{y} à %{count})
+ comment: Beachdan (%{count})
+ hidden_commented_by: Beachd falaichte le %{user} <abbr title='%{exact_time}'>o
+ chionn %{when}</abbr>
+ commented_by: Beachd le %{user} <abbr title='%{exact_time}'>o chionn %{when}</abbr>
+ changesetxml: XML le seata atharraichean
+ osmchangexml: XML osmChange
+ feed:
+ title: Seata atharraichean %{id}
+ title_comment: Seata atharraichean %{id} - %{comment}
+ join_discussion: Clàraich a-steach gus pàirt a ghabhail san deasbaireachd
+ discussion: Deasbaireachd
+ node:
+ title: 'Nòd: %{name}'
+ history_title: 'Eachdraidh an nòd: %{name}'
+ way:
+ title: 'Slighe: %{name}'
+ history_title: 'Eachdraidh na slighe: %{name}'
+ nodes: Nòdan
+ also_part_of:
+ other: pàirt dhen t-slighe %{related_ways}
+ relation:
+ title: 'Dàimh: %{name}'
+ history_title: 'Eachdraidh na dàimh: %{name}'
+ members: Buill
+ relation_member:
+ entry: '%{type} %{name}'
+ entry_role: '%{type} %{name} ''na %{role}'
+ type:
+ node: Nòd
+ way: Slighe
+ relation: Dàimh
+ containing_relation:
+ entry: Dàimh %{relation_name}
+ entry_role: Dàimh %{relation_name} ('na %{relation_role})
+ not_found:
+ sorry: Duilich ach cha deach %{type} àireamh %{id} a lorg.
+ type:
+ node: an nòd
+ way: an t-slighe
+ relation: an dàimh
+ changeset: seata atharraichean
+ timeout:
+ sorry: Duilich ach thug e ro fhada an dàta airson %{type} air a bheil an id
+ %{id} fhaighinn.
+ type:
+ node: an nòd
+ way: an t-slighe
+ relation: an dàimh
+ changeset: seata atharraichean
+ redacted:
+ redaction: Ath-sgrùdadh %{id}
+ message_html: Chan urrainn dhuinn an tionndadh %{version} %{type} a shealltainn
+ air sgàth 's gun deach ath-sgrùdadh dhèanamh air. Thoir sùil air %{redaction_link}
+ airson barrachd fiosrachaidh.
+ type:
+ node: dhen nòd seo
+ way: dhen t-slighe seo
+ relation: dhen dàimh seo
+ start_rjs:
+ feature_warning: '''S dòcha gum fàs am brabhsair agad slaodach no cha mhòr nach
+ dèan e dad tuilleadh on a tha thu a'' luchdadh %{num_features} feart. A bheil
+ thu cinnteach gu bheil thu airson an dàta seo a shealltainn?'
+ load_data: Luchdaich an dàta
+ loading: '''Ga luchdadh...'
+ tag_details:
+ tags: Tagaichean
+ wiki_link:
+ key: Duilleag tuairisgeul na uicidhe airson an taga %{key}
+ tag: Duilleag tuairisgeul na uicidhe airson an taga %{key}=%{value}
+ wikidata_link: An nì %{page} air Wikidata
+ wikipedia_link: An artaigil %{page} air Wikidata
+ telephone_link: Cuir fòn gu %{phone_number}
+ note:
+ title: 'Nòta: %{id}'
+ new_note: Nòta ùr
+ description: Tuairisgeul
+ open_title: Nòta àireamh %{note_name} gun fhuasgladh
+ closed_title: Nòta àireamh %{note_name} a chaidh fhuasgladh
+ hidden_title: Nòta falaichte àireamh %{note_name}
+ open_by: Chaidh a chruthachadh le %{user} <abbr title='%{exact_time}'>o chionn
+ %{when}</abbr>
+ open_by_anonymous: Chaidh a chruthachadh gun urra <abbr title='%{exact_time}'>o
+ chionn %{when}</abbr>
+ commented_by: Beachd le %{user} <abbr title='%{exact_time}'>o chionn %{when}</abbr>
+ commented_by_anonymous: Beachd gun urra <abbr title='%{exact_time}'>o chionn
+ %{when}</abbr>
+ closed_by: Chaidh fhuasgladh le %{user} <abbr title='%{exact_time}'>o chionn
+ %{when}</abbr>
+ closed_by_anonymous: Chaidh fhuasgladh gun urra <abbr title='%{exact_time}'>o
+ chionn %{when}</abbr>
+ reopened_by: Chaidh ath-ghnìomhachadh le %{user} <abbr title='%{exact_time}'>o
+ chionn %{when}</abbr>
+ reopened_by_anonymous: Chaidh ath-ghnìomhachadh gun urra <abbr title='%{exact_time}'>o
+ chionn %{when}</abbr>
+ hidden_by: Chaidh fhalach le %{user} <abbr title='%{exact_time}'>o chionn %{when}</abbr>
+ query:
+ title: Lorg airson feartan sònraichte
+ introduction: Briog air a' mhapa gus feartan faisg air a lorg.
+ nearby: Feartan am fagas
+ enclosing: Feartan timcheall air
+ changeset:
+ changeset_paging_nav:
+ showing_page: Duilleag %{page}
+ next: Air adhart »
+ previous: « Air ais
+ changeset:
+ anonymous: Gun ainm
+ no_edits: (cha deach a dheasachadh)
+ view_changeset_details: Seall mion-fhiosrachadh air an t-seata atharraichean
+ changesets:
+ id: ID
+ saved_at: Air a shàbhaladh
+ user: Cleachdaiche
+ comment: Beachd
+ area: Raon
+ list:
+ title: Seataichean atharraichean
+ title_user: Seataichean atharraichean le %{user}
+ title_friend: Seataichean atharraichean le do charaidean
+ title_nearby: Seataichean atharraichean le cleachdaichean am fagas
+ empty: Cha deach seata atharraichean a lorg.
+ empty_area: Chan eil seata atharraichean san raon seo.
+ empty_user: Cha do chruthaich an cleachdaiche seo seata atharraichean sam bith.
+ no_more: Cha deach seataichean atharraichean eile a lorg.
+ no_more_area: Chan eil seata atharraichean eile san raon seo.
+ no_more_user: Cha do chruthaich an cleachdaiche seo seata atharraichean sam
+ bith eile.
+ load_more: Luchdaich barrachd dhiubh
+ timeout:
+ sorry: Duilich ach thug e ro fhada gus an seata atharraichean a dh'iarr thu
+ fhaighinn.
+ rss:
+ title_all: Deasbaireachd air seataichean atharraichean OpenStreetMap
+ title_particular: Deasbaireachd air seata atharraichean OpenStreetMap %{changeset_id}
+ comment: Beachd ùr air seata atharraichean OpenStreetMap %{changeset_id} le
+ %{author}
+ commented_at_html: Air ùrachadh o chionn %{when}
+ commented_at_by_html: Air ùrachadh o chionn %{when} le %{user}
+ full: An deasbaireachd shlàn
+ diary_entry:
+ new:
+ title: Clàr ùr an leabhair-latha
+ list:
+ title: Leabhraichean-latha
+ title_friends: Leabhraichean-latha do charaidean
+ title_nearby: Leabhraichean-latha am fagas
+ user_title: An leabhar-latha aig %{user}
+ in_language_title: Is %{language} cànan nan clàran san leabhar-latha
+ new: Clàr ùr an leabhair-latha
+ new_title: Sgrìobh clàr ùr san leabhar-latha agad
+ no_entries: Chan eil clàr san leabhar-latha
+ recent_entries: Clàran an leabhair-latha o chionn goirid
+ older_entries: Clàran nas sine
+ newer_entries: Clàran nas ùire
+ edit:
+ title: Deasaich clàr an leabhair-latha
+ subject: 'Cuspair:'
+ body: 'Bodhaig:'
+ language: 'Cànan:'
+ location: 'Àite:'
+ latitude: 'Domhan-leud:'
+ longitude: 'Domhan-fhad:'
+ use_map_link: cleachd mapa
+ save_button: Sàbhail
+ marker_text: Àite clàr an leabhair-latha
+ view:
+ title: An leabhar-latha aig %{user} | %{title}
+ user_title: An leabhar-latha aig %{user}
+ leave_a_comment: Thoir do bheachd
+ login_to_leave_a_comment: '%{login_link} gus do bheachd a thoirt'
+ login: Clàraich a-steach
+ save_button: Sàbhail
+ no_such_entry:
+ title: Chan eil an clàr seo san leabhar-latha
+ heading: 'Chan eil clàr ann aig a bheil an id: %{id}'
+ body: Duilich ach chan eil clàr no beachd san leabhar-latha aig a bheil an id
+ %{id}. Dearbhaich an litreachadh no 's dòcha nach eil an ceangal air an do
+ rinn thu briogadh mar bu chòir.
+ diary_entry:
+ posted_by: Air a phostadh le %{link_user} %{created} sa chànan %{language_link}
+ comment_link: Thoir beachd air a' chlàr seo
+ reply_link: Freagair ris a' chlàr seo
+ comment_count:
+ zero: Gun bheachd
+ one: '%{count} bheachd'
+ two: '%{count} bheachd'
+ few: '%{count} beachdan'
+ other: '%{count} beachd'
+ edit_link: Deasaich an clàr seo
+ hide_link: Falaich an clàr seo
+ confirm: Dearbhaich
+ diary_comment:
+ comment_from: Beachd le %{link_user} %{comment_created_at}
+ hide_link: Falaich am beachd seo
+ confirm: Dearbhaich
+ location:
+ location: 'Àite:'
+ view: Seall
+ edit: Deasaich
+ feed:
+ user:
+ title: Clàran san leabhar-latha OpenStreetMap aig %{user}
+ description: Clàran san leabhar-latha OpenStreetMap aig %{user} o chionn goirid
+ language:
+ title: Clàran san leabhar-latha OpenStreetMap sa chànan %{language_name}
+ description: Clàran leabhair-latha le cleachdaichean OpenStreetMap sa chànan
+ %{language_name} o chionn goirid
+ all:
+ title: Clàran san leabhar-latha OpenStreetMap
+ description: Clàran leabhair-latha le cleachdaichean OpenStreetMap o chionn
+ goirid
+ comments:
+ has_commented_on: Thug %{display_name} beachd air clàran leabhair-latha a leanas
+ post: Post
+ when: Àm
+ comment: Beachd
+ ago: o chionn %{ago}
+ newer_comments: Beachdan nas ùire
+ older_comments: Beachdan nas sine
+ export:
+ title: Às-phortaich
+ start:
+ area_to_export: An raon ri às-phortadh
+ manually_select: Tagh raon eile a làimh
+ format_to_export: Fòrmat an às-phortaidh
+ osm_xml_data: Dàta XML OpenStreetMap
+ map_image: Dealbh a' mhapa (seallaidh seo a' bhreath stannardach)
+ embeddable_html: HTML a ghabhas leabachadh
+ licence: Ceadachas
+ export_details: Tha OpenStreetMap fo cheadachas <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
+ Data Commons Open Database License</a> (ODbL).
+ too_large:
+ advice: 'Ma dh''fhàilligeas leis an às-phortadh gu h-àrd, feuch an cleachd
+ thu aon dhe na tùsan gu h-ìosal:'
+ body: Tha an raon seo ro mhòr ach an gabhadh às-phortadh 'na dhàta XML OpenStreetMap.
+ Feuch an sùm thu a-steach no gun tagh thu raon nas lugha no gun cleachd
+ thu aon dhe na tùsan gu h-ìosal airson tomad de dhàta a luchdadh a-nuas.
+ planet:
+ title: Planet OSM
+ description: Lethbhreacan dhen stòr-dàta shlàn aig OpenStreetMap a thèid
+ ùrachadh gu cunbhalach.
+ overpass:
+ title: Overpass API
+ description: Luchdaich a-nuas na tha sa bhogsa-iadhaidh seo o sgàthan dhen
+ stòr-dàta OpenStreetMap
+ geofabrik:
+ title: Geofabrik Downloads
+ description: Às-tharraing de mhòr-thìrean, dùthchannan agus roghainn de
+ bhailtean a thèid ùrachadh gu cunbhalach.
+ metro:
+ title: Metro Extracts
+ description: Às-tharraing de mòr-bhailtean an t-saoghail agus dhe na raointean
+ timcheall orra
+ other:
+ title: Tùsan eile
+ description: Gheibh thu tùsan a bharrachd air an uicidh aig OpenStreetMap
+ options: Roghainnean
+ format: Fòrmat
+ scale: Sgèile
+ max: as motha
+ image_size: Meud an deilbh
+ zoom: Sùm
+ add_marker: Cuir comharra ris a' mhapa
+ latitude: 'D-leud:'
+ longitude: 'D-fhad:'
+ output: Às-chur
+ paste_html: Cuir ann HTML gus a leabachadh ann an làrach-lìn eile
+ export_button: Às-phortaich
+ geocoder:
+ search:
+ title:
+ latlon: Toraidhean on <a href="http://openstreetmap.org/">taobh a-staigh</a>
+ us_postcode: Toraidhean o <a href="http://geocoder.us/">Geocoder.us</a>
+ uk_postcode: Toraidhean o <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
+ Postcode</a>
+ ca_postcode: Toraidhean o <a href="http://geocoder.ca/">Geocoder.CA</a>
+ osm_nominatim: Toraidhean o <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Toraidhean o <a href="http://www.geonames.org/">GeoNames</a>
+ osm_nominatim_reverse: Toraidhean o <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames_reverse: Toraidhean o <a href="http://www.geonames.org/">GeoNames</a>
+ search_osm_nominatim:
+ prefix_format: '%{name}'
+ prefix:
+ aerialway:
+ cable_car: Carbad-càbaill
+ chair_lift: Lioft-sèitheir
+ drag_lift: Lioft-slaodaidh
+ gondola: Trama-adhair
+ station: Stèisean trama-adhair
+ aeroway:
+ aerodrome: Raon-adhair
+ apron: Aparan
+ gate: Geata
+ helipad: Port-heileacoptair
+ runway: Raon-laighe
+ taxiway: Raon-cuairteachaidh
+ terminal: Tèirmineal
+ amenity:
+ animal_shelter: Fasgadh bheathaichean
+ arts_centre: Ionad ealain
+ atm: Inneal airgid
+ bank: Banca
+ bar: Bàr
+ bbq: Àine-chaoire
+ bench: Being
+ bicycle_parking: Ionad-pàircidh rothairean
+ bicycle_rental: Rothairean air mhàl
+ biergarten: Gàrradh-leanna
+ boat_rental: Bàtaichean air mhàl
+ brothel: Taigh-siùrsachd
+ bureau_de_change: Biùro-iomlaid
+ bus_station: Stèisean bhusaichean
+ cafe: Cafaidh
+ car_rental: Càraichean air mhàl
+ car_sharing: Co-chleachdadh chàraichean
+ car_wash: Nighe chàraichean
+ casino: Casino
+ charging_station: Stèisean teairrdsidh
+ childcare: Cùram-cloinne
+ cinema: Taigh-dhealbh
+ clinic: Clionaig
+ clock: Cleoc
+ college: Colaiste
+ community_centre: Ionad-coimhearsnachd
+ courthouse: Taigh-cùirte
+ crematorium: Luaithreachan
+ dentist: Fiaclaire
+ doctors: Lighichean
+ dormitory: Suain-lann
+ drinking_water: Uisge-òil
+ driving_school: Sgoil draibhidh
+ embassy: Ambasaid
+ emergency_phone: Fòn-èiginn
+ fast_food: Biadh luath
+ ferry_terminal: Port-aiseig
+ fire_hydrant: Tobar-sràide
+ fire_station: Stèisean-smàlaidh
+ food_court: Talla bìdh
+ fountain: Fuaran
+ fuel: Connadh
+ gambling: Cearrachas
+ grave_yard: Cladh
+ gym: Taigh-sunntais
+ health_centre: Ionad-slàinte
+ hospital: Ospadal
+ hunting_stand: Stannd seilge
+ ice_cream: Reòiteagan
+ kindergarten: Sgoil-àraich
+ library: Leabhar-lann
+ market: Margadh
+ marketplace: Ionad-margaidh
+ monastery: Manachainn
+ motorcycle_parking: Ionad-pàircidh motar-baidhseagal
+ nightclub: Club-oidhche
+ nursery: Sgoil-àraich
+ nursing_home: Taigh-altraim
+ office: Oifis
+ parking: Ionad-pàircidh
+ parking_entrance: Doras ionaid-phàircidh
+ pharmacy: Bùth-chungaidhean
+ place_of_worship: Àite-adhraidh
+ police: Poileas
+ post_box: Bogsa-phuist
+ post_office: Oifis a' phuist
+ preschool: Ro-sgoil
+ prison: Prìosan
+ pub: Taigh-seinnse
+ public_building: Togalach poblach
+ reception_area: Ionad-fàilte
+ recycling: Ionad ath-chuairteachaidh
+ restaurant: Taigh-bìdh
+ retirement_home: Taigh-cluaineis
+ sauna: Sauna
+ school: Sgoil
+ shelter: Fasgadh
+ shop: Bùth
+ shower: Frasair
+ social_centre: Ionad-sòisealta
+ social_club: Club-soisealta
+ social_facility: Goireas sòisealta
+ studio: Stiùideo
+ swimming_pool: Amar-snàimh
+ taxi: Tagsaidh
+ telephone: Fòn poblach
+ theatre: Taigh-cluich
+ toilets: Taighean-beaga
+ townhall: Talla a' bhaile
+ university: Oilthigh
+ vending_machine: Inneal-rèic
+ veterinary: Leigh-lann bheathaichean
+ village_hall: Talla a' bhaile
+ waste_basket: Bogsa-sgudail
+ waste_disposal: Ionad-sgudail
+ youth_centre: Ionad-òigridh
+ boundary:
+ administrative: Crìoch rianachd
+ census: Crìoch cunntas-sluaigh
+ national_park: Pàirc nàiseanta
+ protected_area: Ionad-dìon
+ bridge:
+ aqueduct: Duct-uisge
+ suspension: Drochaid-chrochaidh
+ swing: Drochaid-thionndain
+ viaduct: Drochaid-rathaid
+ "yes": Drochaid
+ building:
+ "yes": Togalach
+ craft:
+ brewery: Taigh-grùide
+ carpenter: Saor
+ electrician: Dealanair
+ gardener: Gàirnealair
+ painter: Peantair
+ photographer: Neach-dhealbh
+ plumber: Plumair
+ shoemaker: Greusaiche
+ tailor: Tàillear
+ "yes": Bùth cheàrd
+ emergency:
+ ambulance_station: Stèisean nan carbadan-èiginn
+ defibrillator: Dì-fhibriliche
+ landing_site: Ionad-laighe èiginn
+ phone: Fòn-èiginn
+ highway:
+ abandoned: Mòr-rathad trèigte
+ bridleway: Ceum marcachd
+ bus_guideway: Lonaig bus-stiùirichte
+ bus_stop: Stad-bus
+ construction: Mòr-rathad 'ga thogail
+ cycleway: Slighe baidhseagail
+ elevator: Àrdaichear
+ emergency_access_point: Puing-inntrigidh èiginn
+ footway: Cas-cheum
+ ford: Àth
+ living_street: Sràid-chòmhnaidh
+ milestone: Clach-mhìle
+ motorway: Mòr-rathad
+ motorway_junction: Gobhal mòr-rathaid
+ motorway_link: Mòr-rathad
+ path: Slighe
+ pedestrian: Àrainn-choisichean
+ platform: Àrd-ùrlar
+ primary: Prìomh-rathad
+ primary_link: Prìomh-rathad
+ proposed: Rathad a tha ann am beachd
+ raceway: Slighe-rèisidh
+ residential: Rathad-còmhnaidh
+ rest_area: Raon tàimh
+ road: Rathad
+ secondary: Rathad dàrnach
+ secondary_link: Rathad dàrnach
+ service: Rathad sheirbheisean
+ services: Seirbheisean mòr-rathaid
+ speed_camera: Camara-astair
+ steps: Staidhre
+ street_lamp: Lampa-sràide
+ tertiary: Rathad treasach
+ tertiary_link: Rathad treasach
+ track: Traca
+ traffic_signals: Solasan-trafaig
+ trail: Staran
+ trunk: Prìomh-rathad
+ trunk_link: Prìomh-rathad
+ unclassified: Rathad neo-sheòrsaichte
+ unsurfaced: Rathad gun uachdar
+ "yes": Rathad
+ historic:
+ archaeological_site: Làrach àrc-eòlach
+ battlefield: Blàr-catha
+ boundary_stone: Comharra-crìche
+ building: Togalach eachdraidheil
+ bunker: Buncair
+ castle: Caisteal
+ church: Eaglais
+ city_gate: Geata a' bhaile
+ citywalls: Ballachan a' bhaile
+ fort: Gearastan
+ heritage: Làrach dualchais
+ house: Taigh
+ icon: Ìomhaigh
+ manor: Taigh-maineir
+ memorial: Carragh-chuimhne
+ mine: Mèinn
+ monument: Carragh
+ roman_road: Rathad Ròmanach
+ ruins: Làrach
+ stone: Clach
+ tomb: Tuama
+ tower: Tùr
+ wayside_cross: Cros ri taobh an rathaid
+ wayside_shrine: Naomh-chiste ri taobh an rathaid
+ wreck: Long bhriste
+ junction:
+ "yes": Gobhal
+ landuse:
+ allotments: Cuibhreann talmhainn
+ basin: Amar
+ brownfield: Fearann fàs
+ cemetery: Cladh
+ commercial: Raon malairt
+ conservation: Raon-glèidhteachais
+ construction: Làrach togail
+ farm: Tuathanas
+ farmland: Achaidhean
+ farmyard: Clobhsa
+ forest: Coille
+ garages: Garaidsean
+ grass: Feur
+ greenfield: Talamh bàn
+ industrial: Raon gnìomhachais
+ landfill: Lìonadh-talmhainn
+ meadow: Faiche
+ military: Raon an airm
+ mine: Mèinn
+ orchard: Lios-mheas
+ quarry: Coireall
+ railway: Rèile
+ recreation_ground: Raon cuir-seachad
+ reservoir: Loch-tasgaidh
+ reservoir_watershed: Amar-tasgaidh
+ residential: Raon-còmhnaidh
+ retail: Bhuitean
+ road: Raon rathaid
+ village_green: Rèidhlean
+ vineyard: Fìon-lios
+ "yes": Cleachdadh-fearainn
+ leisure:
+ beach_resort: Tràigh-turasachd
+ bird_hide: Crò-eun
+ club: Club
+ common: Fearann coitcheann
+ dog_park: Pàirc-chon
+ fishing: Raon iasgaich
+ fitness_centre: Taigh-sunntais
+ fitness_station: Stèisean-sunntais
+ garden: Lios
+ golf_course: Raon goilf
+ horse_riding: Marcadh each
+ ice_rink: Rionc-deighe
+ marina: Marina
+ miniature_golf: Meanbh-ghoilf
+ nature_reserve: Tèarmann nàdair
+ park: Pàirc
+ pitch: Raon spòrs
+ playground: Raon-cluiche
+ recreation_ground: Raon cuir-seachad
+ resort: Baile-turasachd
+ sauna: Sauna
+ slipway: Leathad-luinge
+ sports_centre: Ionad-spòrs
+ stadium: Stèideam
+ swimming_pool: Amar-snàimh
+ track: Cuairt-ruith
+ water_park: Pàirc-uisge
+ "yes": Cur-seachad
+ man_made:
+ lighthouse: Taigh-solais
+ pipeline: Pìob-loidhne
+ tower: Tùr
+ works: Factaraidh
+ "yes": Dèanta le mac an duine
+ military:
+ airfield: Raon-adhair an airm
+ barracks: Taighean-feachd
+ bunker: Buncair
+ mountain_pass:
+ "yes": Bealach
+ natural:
+ bay: Bàgh
+ beach: Tràigh
+ cape: Ceap
+ cave_entrance: Doras uamha
+ cliff: Creag
+ crater: Cruinn-shloc
+ dune: Dùn-gainmhich
+ fell: Monadh
+ fjord: Linne
+ forest: Coille
+ geyser: Gìosar
+ glacier: Eigh-shruth
+ grassland: Raon-feòir
+ heath: Aonach
+ hill: Cnoc
+ island: Eilean
+ land: Tìr
+ marsh: Lòn
+ moor: Mòine
+ mud: Poll
+ peak: Sgurr
+ point: Rubha
+ reef: Riof
+ ridge: Druim
+ rock: Roc
+ saddle: Dìollaid
+ sand: Gainmheach
+ scree: Sgàirneach
+ scrub: Fiodhach
+ spring: Fuaran
+ stone: Clach
+ strait: Caolas
+ tree: Craobh
+ valley: Gleann
+ volcano: Beinn-theine
+ water: Uisge
+ wetland: Talamh fliuch
+ wood: Coille
+ office:
+ accountant: Cunntasair
+ administrative: Rianachd
+ architect: Ailtire
+ company: Companaidh
+ employment_agency: Buidheann cosnaidh
+ estate_agent: Ceannaiche-seilbhe
+ government: Oifis na rìoghachd
+ insurance: Oifis àrachais
+ lawyer: Neach-lagha
+ ngo: Oifis neo-riaghaltasach
+ telecommunication: Oifis cèin-chonaltraidh
+ travel_agent: Bùth-siubhail
+ "yes": Oifis
+ place:
+ allotments: Cuibhreann talmhainn
+ block: Bloca
+ airport: Port-adhair
+ city: Baile
+ country: Dùthaich
+ county: Siorrachd/Còigeamh
+ farm: Tuathanas
+ hamlet: Clachan
+ house: Taigh
+ houses: Taighean
+ island: Eilean
+ islet: Eilean beag
+ isolated_dwelling: Àite-còmhnaidh iomallach
+ locality: Àite
+ moor: Mòine
+ municipality: Baile
+ neighbourhood: Coimhearsnachd
+ postcode: Còd-puist
+ region: Roinn-dùthcha
+ sea: Muir
+ state: Siorrachd/Còigeamh/Stàit
+ subdivision: Fo-roinn
+ suburb: Frith-bhaile
+ town: Baile
+ unincorporated_area: Raon neo-chorpaichte
+ village: Baile beag
+ "yes": Àite
+ railway:
+ abandoned: Rèile thrèigte
+ construction: Rèile 'ga togail
+ disused: Rèile gun chleachdadh
+ disused_station: Stèisean-rèile gun chleachdadh
+ funicular: Rèile-bhruthaich
+ halt: Stad trèana
+ historic_station: Stèisean-rèile eachdraidheil
+ junction: Snaidhm-rèile
+ level_crossing: Crois-rèile fhosgailte
+ light_rail: Rèile aotrom
+ miniature: Meanbh-rèile
+ monorail: Aona-rèile
+ narrow_gauge: Rèile gèidse caoile
+ platform: Àrd-ùrlar rèile
+ preserved: Rathad-iarrainn glèidhte
+ proposed: Rathad-iarrainn a tha ann am beachd
+ spur: Meur-loidhne
+ station: Stèisean-rèile
+ stop: Stad rèile
+ subway: Meatro
+ subway_entrance: Doras a-steach a' mheatro
+ switch: Puingean rèile
+ tram: Slighe-trama
+ tram_stop: Stad trama
+ shop:
+ alcohol: Bùth-dighe far na fàrdaich
+ antiques: Buill-sheanndachd
+ art: Bùth ealain
+ bakery: Taigh-fuine
+ beauty: Bùth maise
+ beverages: Bùth dheochan
+ bicycle: Bùth bhaidhseagalan
+ books: Bùth leabhraichean
+ boutique: Boutique
+ butcher: Feòladair
+ car: Bùth chàraichean
+ car_parts: Pàirtean chàraichean
+ car_repair: Càradh chàraichean
+ carpet: Bùth bhratan
+ charity: Bùth carthannais
+ chemist: Bùth-chungaidhean
+ clothes: Bùth aodach
+ computer: Bùth choimpiutairean
+ confectionery: Bùth mìlseanachd
+ convenience: Bùth goireasach
+ copyshop: Bùth lethbhreacan
+ cosmetics: Bùth maise
+ deli: Delicatessen
+ department_store: Mòr-bhùth
+ discount: Bùth nithean saora
+ doityourself: Bùth leasachadh dachaigh
+ dry_cleaning: Tioram-ghlanadh
+ electronics: Bùth leactronachd
+ estate_agent: Ceannaiche-seilbhe
+ farm: Bùth tuathanais
+ fashion: Bùth aodaich
+ fish: Bùth èisg
+ florist: Bùth-fhlùraichean
+ food: Bùth bìdh
+ funeral_directors: Seirbheis tìodhlacaidh
+ furniture: Àirneis
+ gallery: Gailearaidh
+ garden_centre: Margadh-gàrraidh
+ general: Bùth a' bhaile
+ gift: Bùth phrèasantan
+ greengrocer: Gròsair
+ grocery: Gròsair
+ hairdresser: Gruagaire
+ hardware: Bùth leasachadh dachaigh
+ hifi: HiFi
+ insurance: Àrachas
+ jewelry: Bùth usgaran
+ kiosk: Cìtheasg
+ laundry: Taigh-nigheachain
+ mall: Ionad-seopadaireachd
+ market: Margadh
+ mobile_phone: Bùth fhònaichean-làmhe
+ motorcycle: Bùth mhotar-baidhseagalan
+ music: Bùth ciùil
+ newsagent: Bùth-naidheachdan
+ optician: Bùth-speuclairean
+ organic: Bùth bìdh fhàs-bheartaich
+ outdoor: Bùth acainnean blàir
+ pet: Bùth pheatachan
+ pharmacy: Bùth-chungaidhean
+ photo: Bùth dhealbhan
+ salon: Salon maise
+ second_hand: Bùth rudan ath-làimhe
+ shoes: Bùth bhrògan
+ shopping_centre: Ionad-seopadaireachd
+ sports: Bùth spòrs
+ stationery: Bùth pàipearachd
+ supermarket: Oll-mhargadh
+ tailor: Tàillear
+ toys: Bùth dhèideagan
+ travel_agency: Bùth-siubhail
+ video: Bùth videothan
+ wine: Bùth-dighe far na fàrdaich
+ "yes": Bùth
+ tourism:
+ alpine_hut: Bothan beinne
+ apartment: Àras
+ artwork: Obair-ealain
+ attraction: Àite inntinneach
+ bed_and_breakfast: Leabaidh is lìte
+ cabin: Ceabain
+ camp_site: Làrach campachaidh
+ caravan_site: Làrach charabhanaichean
+ chalet: Chalet
+ gallery: Gailearaidh
+ guest_house: Taigh-aoigheachd
+ hostel: Ostail
+ hotel: Taigh-òsta
+ information: Fiosrachadh
+ motel: Taigh-òsta motarachd
+ museum: Taigh-tasgaidh
+ picnic_site: Làrach cuirme-cnuice
+ theme_park: Theme Park
+ viewpoint: Ionad-seallaidh
+ zoo: Sù
+ tunnel:
+ culvert: Cùlbhart
+ "yes": Tunail
+ waterway:
+ artificial: Slighe-uisge fhuadain
+ boatyard: Bàta-lann
+ canal: Canal
+ dam: Dama
+ derelict_canal: Canal trèigte
+ ditch: Dìg
+ dock: Doca
+ drain: Drèana
+ lock: Loc
+ lock_gate: Geata loca
+ mooring: Làimhrig
+ rapids: Coileach
+ river: Abhainn
+ stream: Sruth
+ wadi: Wadi
+ waterfall: Eas
+ weir: Cairidh
+ "yes": Slighe-uisge
+ admin_levels:
+ level2: Crìoch dùthcha
+ level4: Crìoch stait
+ level5: Crìoch roinn-dùthcha
+ level6: Crìoch siorrachd/còigeimh
+ level8: Crìoch baile
+ level9: Crìoch baile bhig
+ level10: Crìoch frith-bhaile
+ description:
+ title:
+ osm_nominatim: Àite o <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Àite o <a href="http://www.geonames.org/">GeoNames</a>
+ types:
+ cities: Bailtean
+ towns: Bailtean
+ places: Àiteachan
+ results:
+ no_results: Cha deach toradh a lorg
+ more_results: Barrachd toraidhean
+ layouts:
+ project_name:
+ title: OpenStreetMap
+ h1: OpenStreetMap
+ logo:
+ alt_text: Suaicheantas OpenStreetMap
+ home: Rach gun ionad dachaigh
+ logout: Clàraich a-mach
+ log_in: Clàraich a-steach
+ log_in_tooltip: Clàraich a-steach le cunntas a tha ann
+ sign_up: Clàraich
+ start_mapping: Tòisich air an obair-mhapa
+ sign_up_tooltip: Cruthaich cunntas airson deasachadh
+ edit: Deasaich
+ history: Eachdraidh
+ export: Às-phortaich
+ data: Dàta
+ export_data: Às-phortaich dàta
+ gps_traces: Lorgaidhean GPS
+ gps_traces_tooltip: Stiùirich na lorgaidhean GPS
+ user_diaries: Leabhraichean-latha
+ user_diaries_tooltip: Seall leabhraichean-latha
+ edit_with: Deasaich le %{editor}
+ tag_line: Mapa uicidh saor an t-saoghail
+ intro_header: Fàilte gu OpenStreetMap!
+ intro_text: '''S e mapa an t-saoghail a tha san OpenStreetMap a chaidh a chruthachadh
+ le daoine mar thu fhèin ''s a tha saor fo cheadachas fhosgailte.'
+ intro_2_create_account: Cruthaich cunntas cleachdaiche
+ partners_html: Cuiridh an %{ucl}, an %{ic}, %{bytemark} agus %{partners} eile
+ taic ris an òstadh.
+ partners_ucl: UCL VR Centre
+ partners_ic: Imperial College London
+ partners_bytemark: Bytemark Hosting
+ partners_partners: com-pàirtichean eile
+ partners_url: http://wiki.openstreetmap.org/wiki/Partners
+ osm_offline: Tha an stòr-dàta aig OpenStreetMap far loidhńe an-dràsta on a tha
+ sinn a' dèanamh obair-charaidh riatanach air.
+ osm_read_only: Tha an stòr-dàta aig OpenStreetMap sa mhodh leughaidh a-mhàin an-dràsta
+ on a tha sinn a' dèanamh obair-charaidh riatanach air.
+ donate: Cuir taic ri OpenStreetMap agus %{link} a chum àrdachadh a' bhathair-chruaidh.
+ help: Cobhair
+ about: Mu dhèidhinn
+ copyright: Còir-lethbhreac
+ community: Coimhearsnachd
+ community_blogs: Blogaichean coimhearsnachd
+ community_blogs_title: Blogaichean aig buill dhen choimhearsnachd OpenStreetMap
+ foundation: Fonndas
+ foundation_title: Fonndas OpenStreetMap
+ make_a_donation:
+ title: Cuir taic ri OpenStreetMap le tìodhlac airgid
+ text: Thoir tìodhlac dhuinn
+ learn_more: Barrachd fiosrachaidh
+ more: Barrachd
+ license_page:
+ foreign:
+ title: Mun eadar-theangachadh seo
+ text: Ma bhios còmhstri eadar an duilleag air eadar-theangachadh seo agus %{english_original_link},
+ bidh am prìomhachas air an duilleag sa Bheurla
+ english_link: an duilleag tùsail sa Bheurla
+ native:
+ title: Mun duilleag seo
+ text: Tha thu a' coimhead air tionndadh sa Bheurla de dhuilleag na còrach-lethbhreac.
+ 'S urrainn dhut tilleadh dhan %{native_link} dhen duilleag seo no sgur de
+ leughadh mun chòir-lethbhreac agus %{mapping_link}.
+ native_link: tionndadh sa Ghàidhlig
+ mapping_link: tòiseachadh air an obair-mhapa
+ legal_babble:
+ title_html: Còir-lethbhreac agus ceadachas
+ intro_1_html: '''S e <i>dàta fosgailte</i> a tha san OpenStreetMap fo cheadachas
+ <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open
+ Database License</a> (ODbL).'
+ intro_2_html: |-
+ Faodaidh tu lethbhreacan a dhèanamh dhen dàta againn, a sgaoileadh,
+ a thar-chur agus atharrachadh gu saor, cho fad 's a bheir thu urram
+ dha OpenStreetMap agus a cho-thabhartaichean. Ma nì thu atharrachadh
+ air an dàta againn no ma thogas tu rudeigin eile leis, faodaidh tu
+ an toradh a sgaoileadh fon aon cheadachas. Mìnichidh an
+ <a href="http://opendatacommons.org/licenses/odbl/1.0/">còd laghail</a>
+ slàn dè na còirichean agus na dleastanasan a tha agad.
+ intro_3_html: |-
+ Tha am mapachadh sna leacan mapa againn agus an docamaideadh againn
+ fo cheadachas <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative
+ Commons Attribution-ShareAlike 2.0</a> license (CC BY-SA).
+ credit_title_html: Mar a bheir thu urram dha OpenStreetMap
+ credit_1_html: |-
+ Tha e riatanach gun chleachd thu “© OpenStreetMap
+ contributors” mar urram.
+ credit_2_html: |-
+ Feumaidh tu mìneachadh gu soilleir cuideachd gu bheil an dàta ri fhaighinn
+ fo cheadachas Open Database License, agus ma chleachdas tu na leacan mapa
+ againn gu bheil am mapachadh fo cheadachas CC BY-SA. Faodaidh tu seo
+ a dhèanamh le ceangal gun
+ <a href="http://www.openstreetmap.org/copyright">duilleag na còrach-lethbhreac seo</a>.
+ Mar roghainn eile agus gu riatanach ma sgaoileas tu OSM 'na dhàta,
+ 's urrainn dhut an ceadachas/na ceadachasan ainmeachadh agus ceangal dìreach
+ a dhèanamh dhaibh. Ann am meadhanan far nach gabh ceangal a dhèanamh (can
+ stuthan clò-bhuailte), mholamaid gun stiùirich thu an luchd-leughaidh gu
+ openstreetmap.org (dh'fhaoidte gun leudaich thu 'OpenStreetMap' leis
+ an t-seòladh shlàn seo), gu opendatacommons.org agus ma tha seo iomchaidh gu
+ creativecommons.org.
+ credit_3_html: |-
+ airson mapa leatronaigeach a ghabhas rùrachadh, bu chòir dhan urram a nochdadh air
+ oisean a' mhapa. Mar eisimpleir:
+ attribution_example:
+ alt: Ball-eisimpleir air mar a bheir thu urram dha OpenStreetMap air duilleag-lìn
+ title: Ball-eisimpleir air urram
+ more_title_html: Barrachd fiosrachaidh
+ more_1_html: |-
+ Leugh barrachd air mar a chleachdas tu an dàta againn agus mar a
+ bheir thu urram dhuinn air na <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">CÀBHA laghail</a>.
+ more_2_html: |-
+ Ged as e dàta saor a tha san OpenStreetMap, chan urrainn dhuinn API mapa an-asgaidh a thoirt dhan luchd-leasachaidh treas phàrtaidh.
+ Faic <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Poileasaidh cleachdadh an API</a>,
+ <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Poileasaidh cleachdadh nan leacan</a>
+ agus <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Poileasaidh cleachdadh Nominatim</a> againn.
+ contributors_title_html: Na co-thabhartaicheean againn
+ contributors_intro_html: |-
+ 'S e mìltean de dhaoine a tha sna co-thabhartaichean againn.
+ Gabhaidh sinn a-steach dàta fo cheadachas fosgailte aig buidhnean
+ mapachaidh nàiseanta agus tùsan eile, agus tha an fheadhainn a leanas
+ 'nam measg:
+ contributors_at_html: |-
+ <strong>An Ostair</strong>: Gabhaidh seo a-steach dàta o
+ <a href="http://data.wien.gv.at/">Stadt Wien</a> (fo cheadachas
+ <a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC BY</a>),
+ <a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land Vorarlberg</a> agus
+ Land Tirol (fo cheadachas <a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC BY AT le atharraichean</a>).
+ contributors_ca_html: |-
+ <strong>Canada</strong>: Gabhaidh seo a-steach dàta o
+ GeoBase®, GeoGratis (© Department of Natural
+ Resources Canada), CanVec (© Department of Natural
+ Resources Canada), agus StatCan (Geography Division,
+ Statistics Canada).
+ contributors_fi_html: |-
+ <strong>An Fhionnlann</strong>: Gabhaidh seo a-steach dàta on
+ National Land Survey of Finland's Topographic Database
+ agud seataichean-dàta eile fo cheadachas
+ <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI License</a>.
+ contributors_fr_html: |-
+ <strong>An Fhraing</strong>: Gabhaidh seo a-steach dàta o
+ Direction Générale des Impôts.
+ contributors_nl_html: |-
+ <strong>Na Tìrean Ìsle</strong>: Gabhaidh seo a-steach dàta o © AND, 2007
+ (<a href="http://www.and.com">www.and.com</a>)
+ contributors_nz_html: |-
+ <strong>Sealann Nuadh</strong>: Gabhaidh seo a-steach dàta o
+ Land Information New Zealand. Còir-lethbhreac a' Chrùin glèidhte.
+ contributors_si_html: |-
+ <strong>An t-Slòbhain</strong>: Gabhaidh seo a-steach dàta o
+ <a href="http://www.gu.gov.si/en/">Ùghdarras Suirbhidheadh agus Mapachaidh</a> agus
+ <a href="http://www.mkgp.gov.si/en/">Ministreachd an Àiteachais, na Coilltearachd agus a' Bhidhe</a>
+ (fiosrachadh poblach na Slòbhaine).
+ contributors_za_html: |-
+ <strong>Afraga a Deas</strong>: Gabhaidh seo a-steach dàta o
+ <a href="http://www.ngi.gov.za/">Chief Directorate:
+ National Geo-Spatial Information</a>, coir-lethbhreac na Stàite glèidhte.
+ contributors_gb_html: |-
+ <strong>An Rìoghachd Aonaichte</strong>: Gabhaidh seo a-steach dàta Ordnance
+ Survey © còir-lethbhreac a' Chrùin agus dlighe stòir-dàta
+ 2010-12.
+ contributors_footer_1_html: |-
+ Airson barrachd fiosrachaidh air an fheadhainn seo agus air barrachd
+ thùsan a chaidh a chleachdadh a chum piseachadh OpenStreetMap, thoir
+ sùil air <a href="http://wiki.openstreetmap.org/wiki/Contributors">Duilleag nan co-thabhartaichean</a>
+ air uicidh OpenStreetMap.
+ contributors_footer_2_html: Ma thèid dàta a ghabhail a-steach ann an OpenStreetMap,
+ chan eil e fillte a-staigh gun do chuir an solaraiche dàta tùsail aonta ri
+ OpenStreetMap, gun toireadh e barantas sam bith seachad no gum biodh e fo
+ fhiachanas sam bith.
+ infringement_title_html: Briseadh a-steach air còraichean-lethbhreac
+ infringement_1_html: Tha sinn a' cur an cuimhne nan co-thabhartaichean OSM nach
+ cuir iad dàta o thùs fo chòir-lethbhreac ri OSM (can Google Maps no mapaichean
+ clò-bhuailte) idir ach ma fhuair iad cead soilleir o shealbhadairean na còrach-lethbhreac.
+ infringement_2_html: |-
+ Ma tha thu dhen bheachd gun deach stuth fo chòir-lethbhreac a chur ri stòr-dàta OpenStreetMap no an làrach-lìn seo ann an dòigh nach eil iomchaidh, thoir sùil air a' <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">mhodh toirt air falbh</a> againn no faidhlich e gu dìreach air an
+ <a href="http://dmca.openstreetmap.org/">duilleag faidhlidh air loidhne</a> againn.
+ welcome_page:
+ title: Fàilte!
+ introduction_html: Fàilte gu OpenStreetMap, mapa saor an t-saoghail a ghabhas
+ deasachadh. Nise on a tha thu air clàradh, tha thu ullamh gus tòiseachadh air
+ an obair-mhapa. Seo treòir luath a bheir eòlas dhut air na rudan as cudromaiche.
+ whats_on_the_map:
+ title: Na tha air a' mhapa
+ on_html: |-
+ 'S e àite a tha san OpenStreetMap gus mapa a dhèanamh de nithean a tha an dà chuid <em>fìos is làithreach</em> -
+ gabhaidh seo a-steach milleanan de thogalaichean, rathaidean agus fiosrachadh eile mu àiteachan. 'S urrainn dhut feart sam bith an t-saoghail fhìrinnich sa bheil ùidh agad a chur ris a' mhapa.
+ off_html: '''S ann <em>nach gabh e a-steach</em> dàta mu bheachdan a leithid
+ rangachaidhean, feartan eachdraidheil no baralach no dàta o thùsan fo chòir-lethbhreac.
+ Mur eil cead soilleir agad, na dèan lethbhreac o mhapaichean air loidhne no
+ air pàipear.'
+ basic_terms:
+ title: Teirmichean bunasach airson na h-obrach-mapa
+ paragraph_1_html: Tha cainnt shònraichte air OpenStreetMap. Seo facal no dhà
+ cudromach a bhios feumail dhut.
+ editor_html: '''S e prògram no làrach-lìn a tha ann an <strong>deasaiche</strong>
+ as urrainn dhut cleachdadh gus am mapa a dheasachadh.'
+ node_html: '''S e puing air a'' mhapa a tha ann an <strong>nòd</strong>, can
+ taigh-bìdh no craobh.'
+ way_html: '''S e loidhne no raon a tha ann an <strong>slighe</strong>, can rathad,
+ loch no togalach.'
+ tag_html: '''S e beagan dàta mu nòd no slighe a tha ann an <strong>taga</strong>,
+ can ainm taighe-bhìdh no crìoch astair rathaid.'
+ questions:
+ title: A bheil ceist sam bith agad?
+ paragraph_1_html: |-
+ Tha iomadh goireas aig OpenStreetMap gus faighinn a-mach mun phròiseact, ceistean a chur 's a fhreagairt agus deasbad a dhèanamh is cuspairean mun mhapa a chlàradh còmhla.
+ <a href='%{help_url}'>Faigh cobhair an-seo</a>.
+ start_mapping: Tòisich air an obair-mhapa
+ add_a_note:
+ title: Nach eil ùine agad airson deasachadh? Cuir nòta ris!
+ paragraph_1_html: Ma thogras tu rud beag a chàradh ach chan eil ùine agad gus
+ clàradh agus ionnsachadh mar a nì thu deasachadh, tha e furasta nòta a chur
+ ris.
+ paragraph_2_html: |-
+ Cha leig thu leas ach tadhal air a' <a href='%{map_url}'>mhapa</a> 's briogadh air ìomhaigheag an nòta:
+ <span class='icon note'></span>. Cuiridh seo comharra ris a' mhapa as urrainn dhut gluasad 's tu 'ga shlaodadh. Cuir an teachdaireachd agad ris agus briog air "Sàbhail" an uairsin gus an dèan luchd-mapachaidh eile sgrùdadh air.
+ fixthemap:
+ title: Innis dhuinn mu dhuilgheadas / Càraich am mapa
+ how_to_help:
+ title: Mar a bheir thu taic dhuinn
+ join_the_community:
+ title: Gabh pàirt sa choimhearsnachd
+ explanation_html: Ma mhothaicheas tu duilgheadas leis an dàta mapa againn,
+ can bu bheil rathad no an seòladh agad a dhìth, nach fhaigh thu ballrachd
+ sa choimhearsnachd OpenStreetMap ach an càraich no an cuir thu fhèin an
+ dàta ris. \
+ add_a_note:
+ instructions_html: Cha leig thu leas ach briogadh air <a class='icon note'></a>
+ no air an aon ìomhaigheag ann an sealladh a' mhapa. Cuiridh seo comharra
+ ris a' mhapa as urrainn dhut gluasad 's tu 'ga shlaodadh. Cuir an teachdaireachd
+ agad ris agus briog air "Sàbhail" an uairsin gus an dèan luchd-mapachaidh
+ eile sgrùdadh air.
+ other_concerns:
+ title: Cùisean eile
+ explanation_html: "Ma tha rud sam bith eile a' cur dragh ort a thaobh na susbainte
+ no mar a tha an dàta againn 'ga chleachdadh, tadhail air\n<a href='/copyright'>duilleag
+ na còrach-lethbhreac</a> againn airson barrachd fiosrachaidh laghail no cuir
+ fios gun \n<a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>bhuidheann
+ obrach OSMF</a> iomchaidh. \\"
+ help_page:
+ title: A' faighinn cobhair
+ introduction: Tha iomadh goireas aig OpenStreetMap gus faighinn a-mach mun phròiseact,
+ ceistean a chur 's a fhreagairt agus deasbad a dhèanamh is cuspairean mun mhapa
+ a chlàradh còmhla.
+ welcome:
+ url: /welcome
+ title: Fàilte gu OSM
+ description: Faigh toiseach tòiseachaidh air OpenStreetMap leis an stiùireadh
+ luath seo.
+ help:
+ url: https://help.openstreetmap.org/
+ title: help.openstreetmap.org
+ description: Faighnich ceist no rùraich na freagairtean air làrach nan ceistean
+ àbhaisteach aig OSM.
+ wiki:
+ url: http://wiki.openstreetmap.org/
+ title: wiki.openstreetmap.org
+ description: Brabhsaich san uicidh airson docamaideadh mionaideach air OSM.
+ about_page:
+ next: Air adhart
+ copyright_html: <span>©</span>Co-thabhartaichean<br>OpenStreetMap
+ used_by: Bheir %{name} dàta mapa dha cheudan de làraichean-lìn, aplacaidean inneil-làimhe
+ agus uidheaman bathair-chruaidh
+ lede_text: Tha OpenStreetMap 'ga thogail le coimhearsnachd de luchd-mapachaidh
+ a bheir dàta dhuinn mu rathaidean, slighean cafaidhean, stèiseanan-rèile agus
+ mòran a bharrachd air feadh an t-saoghail agus a nì obair-càraidh air.
+ local_knowledge_title: Eòlas ionadail
+ local_knowledge_html: '''S ann gu bheil eòlas ionadail air aire OpenStreetMap.
+ cleachdaich na co-thabhartaichean dealbhan adhair, uidheaman GPS agus mapaichean-làraich
+ bun-theicneolach airson dearbhadh gu bheil OSM ceart agus làithreach.'
+ community_driven_title: Fo smachd na coimhearsnachd
+ community_driven_html: |-
+ Tha coimhearsnachd OpenStreetMap measgaichte, dealasach agus a' fàs gach latha. Gabhaidh na co-thabhartaichean againn a-steach luchd-mapa saor-thoileach, luchd shiostaman fiosrachaidh chruinn-eòlaich proifeiseanta, innleadairean a ruitheas na frithealaichean aig OSM, luchd taic dhaonnachdach a nì mapaichean air raointean fo dhunaidh agus mòran a bharrachd.
+ Airson barrachd fiosrachaidh mun choimhearsnachd, tadhail air <a href='%{diary_path}'>leabhraichean-latha</a>,
+ <a href='http://blogs.openstreetmap.org/'>blogaichean na coimhearsnachd</a> agus
+ làrach-lìn an <a href='http://www.osmfoundation.org/'>Fhonndais OSM</a>.
+ open_data_title: Dàta fosgailte
+ open_data_html: |-
+ 'S e <i>dàta fosgailte</i> a tha san OpenStreetMap: faodaidh tu a chleachdadh a chum adhbhair sam bith cho fad 's a bheir thu urram air OpenStreetMap agus na co-thabhartaichean aige. Ma nì thu atharrachadh air an dàta againn no ma thogas tu rudeigin eile leis, faodaidh tu
+ an toradh a sgaoileadh fon aon cheadachas. Thoir sùil air <a href='%{copyright_path}'>Duilleag na còrach-lethbhreac agus a' cheadachais</a> airson barrachd fiosrachaidh.
+ partners_title: Com-pàirtichean
+ notifier:
+ diary_comment_notification:
+ subject: '[OpenStreetMap] Thug %{user} beachd air an leabhar-latha agad'
+ hi: Shin thu, %{to_user},
+ header: 'Thug %{from_user} beachd air clàr leabhar-latha OpenStreetMap agad
+ a rinn thu o chionn goirid air a bheil an cuspair "%{subject}":'
+ footer: '''S urrainn dhut am beachd a leughadh air %{readurl} cuideachd agus
+ beachd agad fhèin a chur ris air %{commenturl} no freagairt a sgrìobhadh air
+ %{replyurl}'
+ message_notification:
+ subject_header: '[OpenStreetMap] %{subject}'
+ hi: Shin thu, %{to_user},
+ header: 'Chuir %{from_user} teachdaireachd thugad slighe OpenStreetMap air a
+ bheil an cuspair "%{subject}":'
+ footer_html: '''S urrainn dhut an teachdaireachd a leughadh air %{readurl} cuideachd
+ agus freagairt a sgrìobhadh air %{replyurl}'
+ friend_notification:
+ subject: '[OpenStreetMap] Chuir %{user} ''na charaid ris thu'
+ had_added_you: '[OpenStreetMap] Chuir %{user} ''na charaid ris thu air OpenStreetMap.'
+ see_their_profile: '''S urrainn dhut a'' phròifil aig an neach ud a shealltainn
+ air %{userurl}.'
+ befriend_them: '''S urrainn dhut an neach ud a a chur ''nad caraid ris air %{befriendurl}
+ cuideachd.'
+ gpx_notification:
+ greeting: Shin thu,
+ your_gpx_file: Tha coltas
+ with_description: nach deach leinn am faidhle GPX agad air a bheil an tuairisgeul
+ and_the_tags: 'agus na tagaichean a leanas:'
+ and_no_tags: agus air nach eil taga
+ failure:
+ subject: '[OpenStreetMap] Dh''fhàillig le ion-phortadh GPX'
+ failed_to_import: 'ion-phortachadh. Seo a'' mhearachd:'
+ more_info_1: Gheibh thu barrachd fiosrachaidh air duilgheadasan le ion-phortadh
+ GPX agus air mar a sheachnas tu
+ more_info_2: 'iad air:'
+ import_failures_url: http://wiki.openstreetmap.org/wiki/GPX_Import_Failures
+ success:
+ subject: '[OpenStreetMap] Shoirbhich le ion-phortadh GPX'
+ loaded_successfully: gun deach am faidhle GPX agad a luchdachadh gu soirbheachail
+ le %{trace_points} a-mach às an uiread de %{possible_points} p(h)uing(ean)
+ a ghabhas.
+ signup_confirm:
+ subject: '[OpenStreetMap] Fàilte gu OpenStreetMap'
+ greeting: Shin thu!
+ created: Tha cuideigin (an dòchas gur e tusa a bh' ann) air cunntas a chruthachadh
+ air %{site_url}.
+ confirm: 'Mus dèan sinn dad sam bith eile, feumaidh sinn dearbhadh gun d'' fhuair
+ sinn an t-iarrtas seo uat fhèin, mar sin mas e tusa a bh'' ann, briog air
+ a'' cheangal gu h-ìosal gus an cunntas agad a dhearbhadh:'
+ welcome: Nuair a bhios tu air an cunntas agad a dhearbhadh, bheir sinn barrachd
+ fiosrachaidh dhut ach am bi e nas fhasa dhut tòiseachadh.
+ email_confirm:
+ subject: '[OpenStreetMap] Dearbhaich an seòladh puist-d agad'
+ email_confirm_plain:
+ greeting: Shin thu,
+ hopefully_you: Tha cuideigin (an dòchas gur e tusa a th' ann) airson an seòladh
+ puist-d agad atharrachadh gu %{new_address} air %{server_url}.
+ click_the_link: Mas e tusa a th' ann, briog air a' cheangal gu h-ìosal gus an
+ atharrachadh a dhearbhadh.
+ email_confirm_html:
+ greeting: Shin thu,
+ hopefully_you: Tha cuideigin (an dòchas gur e tusa a th' ann) airson an seòladh
+ puist-d agad atharrachadh gu %{new_address} air %{server_url}.
+ click_the_link: Mas e tusa a th' ann, briog air a' cheangal gu h-ìosal gus an
+ atharrachadh a dhearbhadh.
+ lost_password:
+ subject: '[OpenStreetMap] Chaidh ath-shuidheachadh air facal-faire iarraidh'
+ lost_password_plain:
+ greeting: Shin thu,
+ hopefully_you: Dh'iarr cuideigin (an dòchas gur e tusa a bh' ann) gun dèid am
+ facal-faire agad atharrachadh airson cunntas an t-seòlaidh phuist-d seo air
+ openstreetmap.org.
+ click_the_link: Mas e tusa a bh' ann, briog air a' cheangal gu h-ìosal gus am
+ facal-faire agad ath-shuidheachadh.
+ lost_password_html:
+ greeting: Shin thu,
+ hopefully_you: Dh'iarr cuideigin (an dòchas gur e tusa a bh' ann) gun dèid am
+ facal-faire agad atharrachadh airson cunntas an t-seòlaidh phuist-d seo air
+ openstreetmap.org.
+ click_the_link: Mas e tusa a bh' ann, briog air a' cheangal gu h-ìosal gus am
+ facal-faire agad ath-shuidheachadh.
+ note_comment_notification:
+ anonymous: Ball gun ainm
+ greeting: Shin thu,
+ commented:
+ subject_own: '[OpenStreetMap] Thug %{commenter} beachd air nòta agad'
+ subject_other: '[OpenStreetMap] Thug %{commenter} beachd air nòta sa bheil
+ ùidh agad'
+ your_note: '[OpenStreetMap] Thug %{commenter} beachd air nòta mapa agad faisg
+ air %{place}.'
+ commented_note: '[OpenStreetMap] Thug %{commenter} beachd air nòta mapa a
+ thug thu fhèin beachd air. Tha an nòta faisg air %{place}.'
+ closed:
+ subject_own: '[OpenStreetMap] Dh''fhuasgail %{commenter} nòta agad'
+ subject_other: '[OpenStreetMap] Dh''fhuasgail %{commenter} nòta sa bheil ùidh
+ agad'
+ your_note: '[OpenStreetMap] Dh''fhuasgail %{commenter} nòta mapa agad faisg
+ air %{place}.'
+ commented_note: '[OpenStreetMap] Dh''fhuasgail %{commenter} nòta mapa a thug
+ thu beachd air. Tha an nòta faisg air %{place}.'
+ reopened:
+ subject_own: '[OpenStreetMap] Ghnìomhaich %{commenter} nòta agad às ùr'
+ subject_other: '[OpenStreetMap] Ghnìomhaich %{commenter} nòta sa bheil ùidh
+ agad às ùr'
+ your_note: '[OpenStreetMap] Ghnìomhaich %{commenter} nòta mapa agad às ùr
+ a tha faisg air %{place}.'
+ commented_note: '[OpenStreetMap] Ghnìomhaich %{commenter} nòta mapa às ùr
+ a thug thu beachd air. Tha an nòta faisg air %{place}.'
+ details: Gheibh thu barrachd fiosrachaidh air an nòta air %{url}.
+ changeset_comment_notification:
+ greeting: Shin thu,
+ commented:
+ subject_own: '[OpenStreetMap] Thug %{commenter} beachd air seata atharraichean
+ agad'
+ subject_other: '[OpenStreetMap] Thug %{commenter} beachd air seata atharraichean
+ sa bheil ùidh agad'
+ your_changeset: '[OpenStreetMap] Thug %{commenter} beachd air seata atharraichean
+ agad a chaidh cruthachadh %{time}'
+ commented_changeset: '[OpenStreetMap] Thug %{commenter} beachd air seata atharraichean
+ mapa air a bheil thu a'' cumail sùil agus a chaidh cruthachadh le %{changeset_author}
+ %{time}'
+ partial_changeset_with_comment: leis a' bheachd '%{changeset_comment}'
+ partial_changeset_without_comment: gun bheachd
+ details: Gheibh thu barrachd fiosrachaidh air an seata atharraichean air %{url}.
+ message:
+ inbox:
+ title: Am bogsa a-steach
+ my_inbox: Am bogsa a-steach agam
+ outbox: am bogsa a-mach
+ messages: Tha %{new_messages} agus %{old_messages} agad
+ new_messages:
+ other: '%{count} teachdaireachd ùr'
+ old_messages:
+ other: '%{count} teachdaireachd shean'
+ from: O
+ subject: Cuspair
+ date: Ceann-là
+ no_messages_yet: Chan eil teachdaireachd agad fhathast. Nach tòisich thu conaltradh
+ le %{people_mapping_nearby_link}?
+ people_mapping_nearby: daoine a nì obair-mhapa faisg ort
+ message_summary:
+ unread_button: Cuir comharra nach deach a leughadh
+ read_button: Cuir comharra gun deach a leughadh
+ reply_button: Freagair
+ delete_button: Sguab às
+ new:
+ title: Cuir teachdaireachd
+ send_message_to: Cuir teachdaireachd ùr gu %{name}
+ subject: Cuspair
+ body: Bodhaig
+ send_button: Cuir
+ back_to_inbox: Till dhan bhogsa a-steach
+ message_sent: Chaidh an teachdaireachd a chur
+ limit_exceeded: Chuir thu torr theachdaireachdan o chionn goirid. Fuirich ort
+ greis mus fheuch thu ri tè eile a chur.
+ no_such_message:
+ title: Chan eil an teachdaireachd seo ann
+ heading: Chan eil an teachdaireachd seo ann
+ body: Duilich ach chan eil teachdaireachd air a bheil an id seo ann.
+ outbox:
+ title: Am bogsa a-mach
+ my_inbox: '%{inbox_link} agam'
+ inbox: am bogsa a-steach
+ outbox: am bogsa a-mach
+ messages:
+ other: Tha %{count} teachdaireachd chuirte agad
+ to: Gu
+ subject: Cuspair
+ date: Ceann-là
+ no_sent_messages: Cha do chuir thu teachdaireachd fhathast. Nach tòisich thu
+ conaltradh le %{people_mapping_nearby_link}?
+ people_mapping_nearby: daoine a nì obair-mhapa faisg ort
+ reply:
+ wrong_user: Rinn thu clàradh a-steach mar `%{user}' ach cha deach an teachdaireachd
+ a tha thu a' feuchainn ri freagairt dhi a chur gun neach-chleachdaidh ud.
+ Feuch an clàraich thu a-steach 'na chleachdaiche a bu chòir airson freagairt.
+ read:
+ title: Teachdaireachd air a leughadh
+ from: O
+ subject: Cuspair
+ date: Ceann-là
+ reply_button: Freagair
+ unread_button: Cuir comharra nach deach a leughadh
+ back: Air ais
+ to: Gu
+ wrong_user: Rinn thu clàradh a-steach mar `%{user}' ach cha deach an teachdaireachd
+ a tha thu a' feuchainn ri leughadh a chur gun neach-chleachdaidh ud. Feuch
+ an clàraich thu a-steach 'na chleachdaiche a bu chòir airson a leughadh.
+ sent_message_summary:
+ delete_button: Sguab às
+ mark:
+ as_read: Chuir thu comharra gun deach an teachdaireachd a leughadh
+ as_unread: Chuir thu comharra nach deach an teachdaireachd a leughadh
+ delete:
+ deleted: Chaidh an teachdaireachd a sguabadh às
+ site:
+ index:
+ js_1: Tha thu a' chleachdadh brabhsair nach cuir taic ri JavaScript no chuir
+ thu JavaScript à comas.
+ js_2: Cleachdaidh OpenStreetMap JavaScript gus am mapa a shealltainn.
+ permalink: Ceangal buan
+ shortlink: Ceangal goirid
+ createnote: cuir nòta ris
+ license:
+ copyright: Còir-lethbhreac OpenStreetMap agus na co-thabhartaichean aige fo
+ cheadachas fosgailte
+ remote_failed: Dh'fhàillig leis an deasachadh - dèan cinnteach gun deach JOSM
+ no Merkaartor a luchdadh agus gu bheil feart an t-smachd chèin an comas
+ edit:
+ not_public: Cha do cuir thu romhad gum bi na dheasaicheas tu poblach.
+ not_public_description: Chan urrainn dhut am mapa a dheasachadh tuilleadh mus
+ dèan thu seo. 'S urrainn dhut na dheasaicheas tu a dhèanamh poblach air %{user_page}
+ agad.
+ user_page_link: duilleag a' chleachdaiche
+ anon_edits: (%{link})
+ anon_edits_link_text: Faigh a-mach carson
+ flash_player_required: Bidh feum agad air cluicheadair Flash gus an deasaiche
+ Flash OpenStreetMap air a bheil Potlatch a chleachdadh. 'S urrainn dhut <a
+ href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">Flash
+ Player a luchadh a-nuas o Adobe.com</a>. Tha <a href="http://wiki.openstreetmap.org/wiki/Editing">roghainnean
+ eile</a> ri làimh cuideachd gus OpenStreetMap a dheasachadh.
+ potlatch_unsaved_changes: Tha atharrachadh gun sàbhaladh agad. (airson sàbhaladh
+ ann am Potlatch, bu chòir dhut a' phuing no slighe làithreach a dhì-thaghadh
+ ma tha thu 'ga deasachadh sa mhodh bheò no briog air "Sàbhail" ma tha putan
+ sàbhalaidh agad.)
+ potlatch2_not_configured: Cha deach Potlatch 2 a rèiteachadh - tadhail air http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2
+ airson barrachd fiosrachaidh
+ potlatch2_unsaved_changes: Tha atharrachadh gun sàbhaladh agad. (Gus sàbhaladh
+ ann am 2, bu chòir dhut briogadh air "Sàbhail".)
+ id_not_configured: Cha deach iD a rèiteachadh
+ no_iframe_support: Cha toir am brabhsair agad taic ri HTML iframes a tha riatanach
+ airson an fhearta seo.
+ sidebar:
+ search_results: Toraidhean luirg
+ close: Dùin
+ search:
+ search: Lorg
+ get_directions: Faigh seòlaidhean
+ get_directions_title: Lorg seòlaidhean eadar dà àite
+ from: O
+ to: Gu
+ where_am_i: Càite a bheil mi?
+ where_am_i_title: Mìnich an t-àite làithreach leis an inneal-rannsachaidh
+ submit_text: Siuthad
+ key:
+ table:
+ entry:
+ motorway: Mòr-rathad
+ trunk: Prìomh-rathad
+ primary: Prìomh-rathad
+ secondary: Rathad dàrnach
+ unclassified: Rathad neo-sheòrsaichte
+ unsurfaced: Rathad gun uachdar
+ track: Slighe
+ byway: Seach-rathad
+ bridleway: Ceum marcachd
+ cycleway: Slighe baidhseagail
+ footway: Àrainn-choisichean
+ rail: Rèile
+ subway: Meatro
+ tram:
+ - Rèile aotrom
+ - Trama
+ cable:
+ - Carbad-càbaill
+ - Lioft-sèitheir
+ runway:
+ - Raon-laighe puirt-adhair
+ - Raon-cuairteachaidh
+ apron:
+ - Aparan puirt-adhair
+ - Tèirmineal
+ admin: Crìoch rianachd
+ forest: Coille
+ wood: Coille
+ golf: Raon goilf
+ park: Pàirc
+ resident: Raon-còmhnaidh
+ tourist: Àite inntinneach
+ common:
+ - Coitcheann
+ - Faiche
+ retail: Raon bhuitean
+ industrial: Raon gnìomhachais
+ commercial: Raon malairt
+ heathland: Aonach
+ lake:
+ - Loch
+ - Loch-tasgaidh
+ farm: Tuathanas
+ brownfield: Fearann fàs
+ cemetery: Cladh
+ allotments: Cuibhreann talmhainn
+ pitch: Raon spòrs
+ centre: Ionad-spòrs
+ reserve: Tèarmann nàdair
+ military: Raon an airm
+ school:
+ - Sgoil
+ - Oilthigh
+ building: Togalach cudromach
+ station: Stèisean-rèile
+ summit:
+ - Mullach
+ - Sgurr
+ tunnel: Oir-strìochagan = tunail
+ bridge: Oir-loidhnichean = drochaid
+ private: Cead-inntrigidh prìobhaideach
+ permissive: Cead-inntrigidh cuingichte
+ destination: Inntrigeadh a' chinn-uidhe
+ construction: Rathaidean 'gan togail
+ richtext_area:
+ edit: Deasaich
+ preview: Ro-sheall
+ markdown_help:
+ title_html: '''Ga pharsadh le <a href="http://daringfireball.net/projects/markdown/">Markdown</a>'
+ headings: Ceann-sgrìobhaidhean
+ heading: Ceann-sgrìobhadh
+ subheading: Fo-cheann-sgrìobhadh
+ unordered: Liosa gun seòrsachadh
+ ordered: Liosta le seòrsachadh
+ first: A' chiad nì
+ second: An dàrna nì
+ link: Ceangal
+ text: Teacsa
+ image: Dealbh
+ alt: Teacsa eile
+ url: URL
+ trace:
+ visibility:
+ private: Prìobhaideach (cha dèid a cho-roinneadh ach 'na phuingean gun urra
+ no seòrsachadh)
+ public: Poblach (nochdaidh e air liosta nan lorgaidhean agus 'na phuingean gun
+ urra no seòrsachadh)
+ trackable: Gabhaidh lorgadh (cha dèid a cho-roinneadh ach 'na phuingean gun
+ urra ris a bheil seòrsachadh is stampa-tìde)
+ identifiable: Gabhaidh aithneachadh (nochdaidh e air liosta nan lorgaidhean
+ agus 'na phuingean a ghabhas aithneachadh ris a bheil seòrsachadh is stampa-tìde)
+ create:
+ upload_trace: Luchdaich suas lorgadh GPS
+ trace_uploaded: Chaidh am faidhle GPX agad a luchdadh suas agus tha e a' feitheamh
+ gus an dèid a chur ris an stòr-dàta. Tachraidh seo am broinn leth-uair a thìde
+ mar as trice agus gheibh thu post-d nuair a bhios e coileanta.
+ edit:
+ title: A' deasachadh lorgadh %{name}
+ heading: A' deasachadh lorgadh %{name}
+ filename: 'Ainm an fhaidhle:'
+ download: luchdaich a-nuas
+ uploaded_at: 'Air a luchdadh suas:'
+ points: 'Puingean:'
+ start_coord: 'Càraid àireimh tòiseachaidh:'
+ map: mapa
+ edit: deasaich
+ owner: 'Sealbhadair:'
+ description: 'Tuairisgeul:'
+ tags: 'Tagaichean:'
+ tags_help: sgaradh le cromagan
+ save_button: Sàbhail na dh'atharraich thu
+ visibility: 'Faicsinneachd:'
+ visibility_help: Dè as ciall dha seo?
+ visibility_help_url: http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces
+ trace_form:
+ upload_gpx: 'Luchdaich suas faidhle GPX:'
+ description: 'Tuairisgeul:'
+ tags: 'Tagaichean:'
+ tags_help: sgaradh le cromagan
+ visibility: 'Faicsinneachd:'
+ visibility_help: Dè as ciall dha seo?
+ visibility_help_url: http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces
+ upload_button: Luchdaich suas
+ help: Cobhair
+ help_url: http://wiki.openstreetmap.org/wiki/Upload
+ trace_header:
+ upload_trace: Luchdaich suas lorgadh
+ see_all_traces: Seall a h-uile lorgadh
+ see_your_traces: Seall na lorgaidhean agad fhèin
+ traces_waiting:
+ other: Tha %{count} lorgadh a' feitheamh air luchdadh suas. Am fuirich thu
+ ort gus am bi seo coileanta mus luchdaich thu suas fear sam bith eile? Mar
+ sin, gheibheadh càch cothrom air a' chiutha.
+ trace_optionals:
+ tags: Tagaichean
+ view:
+ title: A' sealltainn lorgadh %{name}
+ heading: A' sealltainn lorgadh %{name}
+ pending: RI DHÈILIGEADH
+ filename: 'Ainm an fhaidhle:'
+ download: luchdaich a-nuas
+ uploaded: 'Air a luchdadh suas:'
+ points: 'Puingean:'
+ start_coordinates: 'Càraid àireimh tòiseachaidh:'
+ map: mapa
+ edit: deasaich
+ owner: 'Sealbhadair:'
+ description: 'Tuairisgeul:'
+ tags: 'Tagaichean:'
+ none: Chan eil gin
+ edit_track: Deasaich an lorgadh seo
+ delete_track: Sguab às an lorgadh seo
+ trace_not_found: Cha deach an lorgadh a lorg!
+ visibility: 'Faicsinneachd:'
+ trace_paging_nav:
+ showing_page: Duilleag %{page}
+ older: Lorgaidhean nas sine
+ newer: Lorgaidhean nas ùire
+ trace:
+ pending: RI DHÈILIGEADH
+ count_points: '%{count} puing'
+ ago: o chionn %{time_in_words_ago}
+ more: barrachd
+ trace_details: Seall mion-fhiosrachadh an lorgaidh
+ view_map: Seall am mapa
+ edit: deasaich
+ edit_map: Deasaich am mapa
+ public: POBLACH
+ identifiable: GABHAIDH AITHNEACHADH
+ private: PRÍOBHAIDEACH
+ trackable: GABHAIDH LORGADH
+ by: le
+ in: 'an-seo:'
+ map: mapa
+ list:
+ public_traces: Lorgaidhean GPS poblach
+ your_traces: Na Lorgaidhean GPS agad fhèin
+ public_traces_from: Lorgaidhean GPS poblach o %{user}
+ description: Rùraich na lorgaidhean GPS a chaidh a luchdadh a-nuas o chionn
+ goirid
+ tagged_with: ' ris a bheil taga %{tags}'
+ empty_html: Chan eil dad an-seo fhathast. <a href='%{upload_link}'>Luchdaich
+ suas lorgadh ùr</a> no faigh barrachd fiosrachaidh mu lorgadh GPS air an <a
+ href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>uicidh</a>.
+ delete:
+ scheduled_for_deletion: Chaidh an lorgadh seo a chur air an sgeideil gus a sguabadh
+ às
+ make_public:
+ made_public: Chaidh an lorgadh seo 'na fhear poblach
+ offline_warning:
+ message: Chan eil siostam luchdaidh suas nam faidhlichean GPX ri fhaighinn an-dràsta
+ offline:
+ heading: Tha stòras GPX far loidhne
+ message: Chan eil stòras no siostam luchdaidh suas nam faidhlichean GPX ri fhaighinn
+ an-dràsta
+ georss:
+ title: Lorgaidhean GPS aig OpenStreetMap
+ description:
+ description_with_count:
+ other: faidhle GPX le %{count} phuing o %{user}
+ description_without_count: Faidhle GPX o %{user}
+ application:
+ require_cookies:
+ cookies_needed: Tha coltas gun do chuir thu briosgaidean à comas - feuch an
+ cuir thu briosgaidean an comas sa bhrabhsair agad mus lean thu air adhart.
+ require_moderator:
+ not_a_moderator: Feumaidh tu bhith 'nad mhaor gus an gnìomh seo a dhèanamh.
+ setup_user_auth:
+ blocked: Chaidh an inntrigeadh agad dhan API a bhacadh. Feuch an clàraich thu
+ a-steach gus am faigh an eadar-aghaidh-lìn barrachd fiosrachaidh dhut.
+ need_to_see_terms: Chaidh an inntrigeadh agad dhan API a chur dheth rè ùine.
+ Feuch an clàraich thu a-steach air an eadar-aghaidh-lìn gus teirmichean a'
+ chom-pàirtiche a shealltainn. Cha leig thu leas aontachadh riutha, ach feumaidh
+ tu an leughadh.
+ oauth:
+ oauthorize:
+ title: Ceadaich inntrigeadh dhan chunntas agad
+ request_access: Dh'iarr aplacaid %{app_name} inntrigeadh dhan chunntas agad,
+ %{user}. Thoir sùil a bheil thu airson 's gum bi na comasan a leanas air an
+ aplacaid. 'S urrainn dhut an t-uiread dhiubh a thogras tu a thaghadh, ge b'
+ e mòr no beag.
+ allow_to: 'Faodaidh aplacaid a'' chliant:'
+ allow_read_prefs: roghainnean a' chleachdaiche agad a leughadh.
+ allow_write_prefs: roghainnean a' chleachdaiche agad atharrachadh.
+ allow_write_diary: clàran leabhair-latha a chruthachadh, beachdan a thoirt agus
+ caraidean a chur ris.
+ allow_write_api: am mapa atharrachadh.
+ allow_read_gpx: na lorgaidhean GPS prìobhaideach agad a leughadh.
+ allow_write_gpx: lorgaidhean GPS a luchdadh suas.
+ allow_write_notes: nòtaichean atharrachadh.
+ oauthorize_success:
+ title: Chaidh gabhail ri iarrtas a' chead
+ allowed: Thug thu cead dha dh'aplacaid %{app_name} an cunntas agad inntrigeadh.
+ verification: '''S e %{code} a tha sa chòd dearbhaidh.'
+ oauthorize_failure:
+ title: Chaidh iarrtas a' chead a dhiùltadh
+ denied: Dhiùlt thu gun inntrigeadh aplacaid %{app_name} an cunntas agad.
+ invalid: Chan eil tòcan a' chead dligheach.
+ revoke:
+ flash: Tha thu air tòcan a' chead airson %{application} a chùl-ghairm
+ oauth_clients:
+ new:
+ title: Clàraich aplacaid ùr
+ submit: Clàraich
+ edit:
+ title: Deasaich an aplacaid agad
+ submit: Deasaich
+ show:
+ title: Fiosrachadh OAuth airson %{app_name}
+ key: 'Iuchair a'' chleachdaiche:'
+ secret: 'Rùn a'' chleachdaiche:'
+ url: 'URL tòcan an iarrtais:'
+ access_url: 'URL tòcan an inntrigidh:'
+ authorize_url: 'URL a'' chead:'
+ support_notice: Ciridh sinn taic ri soidhneadh HMAC-SHA1 (a mholamaid) agus
+ RSA-SHA1.
+ edit: Deasaich am fiosrachadh
+ delete: Sguab às an cliant
+ confirm: A bheil thu cinnteach?
+ requests: 'Ag iarraidh on chleachdaiche gum faodar:'
+ allow_read_prefs: roghainnean a' chleachdaiche aca a leughadh.
+ allow_write_prefs: roghainnean a' chleachdaiche aca atharrachadh.
+ allow_write_diary: clàran leabhair-latha a chruthachadh, beachdan a thoirt agus
+ caraidean a chur ris.
+ allow_write_api: am mapa atharrachadh.
+ allow_read_gpx: na lorgaidhean GPS prìobhaideach aca a leughadh.
+ allow_write_gpx: lorgaidhean GPS a luchdadh suas.
+ allow_write_notes: nòtaichean atharrachadh.
+ index:
+ title: Am fiosrachadh OAuth agad
+ my_tokens: Na h-aplacaidean agam air a bheil cead
+ list_tokens: 'Chaidh na tòcanan seo a thoirt seachad dha dh''aplacaidean às
+ do leth:'
+ application: Ainm na h-aplacaid
+ issued_at: Air a thoirt seachad
+ revoke: Cùl-ghairm!
+ my_apps: Na h-aplacaidean cliant agam
+ no_apps: A bheil aplacaid agad a bu toil leat clàradh gus a cleachdadh leinn
+ 's a chleachdas an stannard %{oauth}? Feumaidh tu an aplacaid-lìn agad a clàradh
+ mus fhaod e iarrtas OAuth a chur dhan t-seirbheis seo.
+ registered_apps: 'Seo na h-aplacaidean cliant a clàraich thu leinn:'
+ register_new: Clàraich an aplacaid agad
+ form:
+ name: Ainm
+ required: Riatanach
+ url: Prìomh URL na h-aplacaid
+ callback_url: URL ais-ghairm
+ support_url: URL taice
+ requests: 'Iarr on chleachdaiche gum faodar:'
+ allow_read_prefs: roghainnean a' chleachdaiche aige/aice a leughadh.
+ allow_write_prefs: roghainnean a' chleachdaiche aige/aice atharrachadh.
+ allow_write_diary: clàran leabhair-latha a chruthachadh, beachdan a thoirt agus
+ caraidean a chur ris.
+ allow_write_api: am mapa atharrachadh.
+ allow_read_gpx: na lorgaidhean GPS prìobhaideach aige/aice a leughadh.
+ allow_write_gpx: lorgaidhean GPS a luchdadh suas.
+ allow_write_notes: nòtaichean atharrachadh.
+ not_found:
+ sorry: Duilich ach cha deach a' %{type} ud a lorg.
+ create:
+ flash: Chaidh am fiosrachadh a chlàradh gu soirbheachail
+ update:
+ flash: Chaidh fiosrachadh a' chliant ùrachadh gu soirbheachail
+ destroy:
+ flash: Chaidh clàradh na h-aplacaid cliant a mhilleadh
+ user:
+ login:
+ title: Clàraich a-steach
+ heading: Clàraich a-steach
+ email or username: 'Seòladh puist-d no ainm-cleachdaiche:'
+ password: 'Facal-faire:'
+ openid: 'OpenID %{logo}:'
+ remember: Cuimhnich orm
+ lost password link: Na chaill thu am facal-faire agad?
+ login_button: Clàraich a-steach
+ register now: Clàraich an-dràsta
+ with username: 'A bheil cunntas OpenStreetMap agad mar-thà? Clàraich a-steach
+ leis an ainm-chleachdaiche ''s an fhacal-fhaire agad:'
+ with external: 'No cleachd treas-phàrtaidh airson clàradh a-steach:'
+ new to osm: A bheil OpenStreetMap ùr dhut?
+ to make changes: Feumaidh cunntas a bhith agad mus atharraich thu dàta OpenStreetMap.
+ create account minute: Cruthaich cunntas. Chan doir e ach mionaid.
+ no account: Nach eil cunntas agad?
+ account not active: Duilich ach chan eil an cunntas agad gnìomhach fhathast.<br
+ />Cleachd an ceangal ann am post-d dearbhadh a' chunntais gus an cunntas agad
+ a ghnìomhachadh no <a href="%{reconfirm}">iarr post-d dearbhaidh ùr</a>.
+ account is suspended: Duilich ach chaidh an cunntas agad a chur à rèim ri linn
+ gnìomhachd amharasach.<br />Cuir fios gun <a href="%{webmaster}">mhaighstir-lìn</a>
+ nam bu toil leat bruidhinn mu dhèidhinn.
+ auth failure: Duilich ach chan urrainn dhuinn do clàradh a-steach leis an fiosrachadh
+ seo.
+ openid_logo_alt: Clàraich a-steach le OpenID
+ auth_providers:
+ openid:
+ title: Clàraich a-steach le OpenID
+ alt: Clàraich a-steach le URL OpenID
+ google:
+ title: Clàraich a-steach le Google
+ alt: Clàraich a-steach le OpenID Google
+ yahoo:
+ title: Clàraich a-steach le Yahoo
+ alt: Clàraich a-steach le OpenID Yahoo
+ wordpress:
+ title: Clàraich a-steach le Wordpress
+ alt: Clàraich a-steach le OpenID Wordpress
+ aol:
+ title: Clàraich a-steach le AOL
+ alt: Clàraich a-steach le OpenID AOL
+ logout:
+ title: Clàraich a-mach
+ heading: Clàraich a-mach à OpenStreetMap
+ logout_button: Clàraich a-mach
+ lost_password:
+ title: Facal-faire air chall
+ heading: Na chaill thu am facal-faire agad?
+ email address: 'Seòladh puist-d:'
+ new password button: Ath-shuidhich am facal-faire
+ help_text: Cuir a-steach an seòladh puist-d a chleachd thu gus an cunntas agad
+ a chlàradh agus cuiridh sinn post-d dha as urrainn dhut cleachdadh gus am
+ facal-faire agad ath-shuidheachadh.
+ notice email on way: Tha sinn duilich gun do chaill thu e :-( ach tha post-d
+ gu bhith tighinn thugad ach an urrainn dhut ath-shuidheachadh a dh'aithghearr.
+ notice email cannot find: Duilich ach cha do rinn sinn lorg air an t-seòladh
+ puist-d ud.
+ reset_password:
+ title: Ath-shuidhich am facal-faire
+ heading: Ath-shuidhich am facal-faire aig %{user}
+ password: 'Facal-faire:'
+ confirm password: 'Dearbhaich am facal-faire:'
+ reset: Ath-shuidhich am facal-faire
+ flash changed: Chaidh am facal-faire agad atharrachadh.
+ flash token bad: Cha do rinn sinn lorg air an tòcan ud, an toir thu sùil air
+ an URL?
+ new:
+ title: Clàraich
+ no_auto_account_create: Gu mì-fhortanach, can urrainn dhuinn cunntas a chruthachadh
+ dhut gu fèin-obrachail an-dràsta.
+ contact_webmaster: Cuir fios gun <a href="mailto:webmaster@openstreetmap.org">mhaighstir-lìn</a>
+ gus cunntas iarraidh - nì sinn ar dìcheall gun cruthaich sinn fear dhut cho
+ luath 's a ghabhas.
+ about:
+ header: Saor agus gabhaidh deasachadh
+ html: |-
+ <p>Eu-coltach ri mapaichean eile, tha OpenStreetMap 'ga chruthachadh gu tur le cleachdaichean mar a tha thu fhèin agus faodaidh duine sam bith a chàradh, ùrachadh, a luchdadh a-nuas is a chleachdadh gu saor.</p>
+ <p>Clàraich gus taic a thoirt dhuinn. Cuiridh sinn post-d thugad gus an cunntas agad a dhearbhadh.</p>
+ license_agreement: Nuair a dhearbhaicheas tu an cunntas agad, feumaidh tu aontachadh
+ ri <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">teirmichean
+ a' chom-pàirtiche</a>.
+ email address: 'Seòladh puist-d:'
+ confirm email address: 'Dearbhaich an seòladh puist-d:'
+ not displayed publicly: Cha dèid a shealltainn gu poblach (thoir sùil air <a
+ href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="poileasaidh
+ na prìobhaideachd san uicidh a ghabhas a-steach earrann air seòlaidhean puist-d">poileasaidh
+ na prìobhaideachd</a>)
+ display name: 'Ainm seallaidh:'
+ display name description: An t-ainm-cleachdaiche agad a thèid a shealltainn
+ gu poblach. 'S urrainn dhut seo atharrachadh uair sam bith sna roghainnean.
+ external auth: 'Dearbhadh treas-phàrtaidh:'
+ password: 'Facal-faire:'
+ confirm password: 'Dearbhaich am facal-faire:'
+ use external auth: No cleachd treas-phàrtaidh airson clàradh a-steach
+ auth no password: Chan iarr sinn facal-faire ort le dearbhadh treas-phàrtaidh
+ ach dh'fhaoidte gum bi innealan a bharrachd no frithealaiche feumach air fear
+ co-dhiù.
+ auth association: |-
+ <p>Cha deach an ID agad a nasgadh ri cunntas OpenStreetMap fhathast.</p>
+ <ul>
+ <li>Ma tha OpenStreetMap ùr dhut, feuch an cruthaich thu cunntas ùr leis an fhoirm gu h-ìosal.</li>
+ <li>
+ Ma tha cunntas agad mar-thà, 's urrainn dhut clàradh a-steach dhan chunntas agad le d' ainm-cleachdaiche 's an fhacal-fhaire agad agus an cunntas a nasgadh ri ID ann an roghainnean a' chleachdaiche agad an uairsin.
+ </li>
+ </ul>
+ continue: Clàraich
+ terms accepted: Mòran taing gun do dh'aontaich thu ri teirmichean a' chom-pàirtiche!
+ terms declined: Tha sinn duilich nach do dh'aontaich thu ri teirmichean ùra
+ a' chom-pàirtiche. airson barrachd fiosrachaidh, tadhail air <a href="%{url}">an
+ duilleag seo air an uicidh</a>.
+ terms declined url: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+ terms:
+ title: Teirmichean a' chom-pàirtiche
+ heading: Teirmichean a' chom-pàirtiche
+ read and accept: Feuch an leugh thu an aonta agus gum briog thu air a' phutan
+ "Tha mi ag aontachadh" gus dearbhadh gun gabh thu ri teirmichean an aonta
+ seo airson na thug 's a bheir thu dhuinn 'nad cho-thabhartaiche.
+ consider_pd: A bharrachd air an aonta gu h-àrd, aontaichidh mi gun dèid na bheir
+ mi dhuibh 'nam cho-thabhartaiche a chur sa Public Domain
+ consider_pd_why: Dè th`ann?
+ consider_pd_why_url: http://www.osmfoundation.org/wiki/License/Why_would_I_want_my_contributions_to_be_public_domain
+ guidance: 'Fiosrachadh a bheir taic dhut gus na teirmichean seo a thuigsinn:
+ <a href="%{summary}">gearr-chunntas a ghabhas leughadh le daoine</a> agus
+ <a href="%{translations}">eadar-theangachaidhean neo-fhoirmeil</a>'
+ agree: Tha mi ag aontachadh
+ declined: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
+ decline: Cha ghabh mi ris
+ you need to accept or decline: Feuch an leugh thu teirmichean ùra a' chom-pàirtiche
+ agus an uairsin aontaich no nach gabh riutha mus lean thu air adhart.
+ legale_select: 'Dùthaich còmhnaidh:'
+ legale_names:
+ france: An Fhraing
+ italy: An Eadailt
+ rest_of_world: An corr dhen t-saoghail
+ no_such_user:
+ title: Chan eil an cleachdaiche seo ann
+ heading: Chan eil an cleachdaiche %{user} ann
+ body: Duilich ach chan eil cleachdaiche ann air a bheil %{user}. Dearbhaich
+ an litreachadh no 's dòcha nach eil an ceangal air an do rinn thu briogadh
+ mar bu chòir.
+ view:
+ my diary: An leabhar-latha agam
+ new diary entry: clàr leabhair-latha ùr
+ my edits: Na dheasaich mi
+ my traces: Na lorgaidhean agam
+ my notes: Na nòtaichean agam
+ my messages: Na teachdaireachdan agam
+ my profile: A' phròifil agam
+ my settings: Na roghainnean agam
+ my comments: Na beachdan agam
+ oauth settings: roghainnean oauth
+ blocks on me: Bacaidhean orm
+ blocks by me: Bacaidhean a rinn mi
+ send message: Cuir teachdaireachd
+ diary: Leabhar-latha
+ edits: Deasachaidhean
+ traces: Lorgaidhean
+ notes: Nòtaichean a' mhapa
+ remove as friend: Thoir an càirdeas air falbh
+ add as friend: Cuir caraid ris
+ mapper since: 'Ris an obair-mhapa o:'
+ ago: (o chionn %{time_in_words_ago})
+ ct status: 'Teirmichean a'' chom-pàirtiche:'
+ ct undecided: Gun taghadh
+ ct declined: Gun gabhail riutha
+ ct accepted: Air aontachadh riutha o chionn %{ago}
+ latest edit: 'An deasachadh mu dheireadh %{ago}:'
+ email address: 'Seòladh puist-d:'
+ created from: 'Air a chruthachadh o:'
+ status: 'Staid:'
+ spam score: 'Sgòr spama:'
+ description: Tuairisgeul
+ user location: Far a bheil an cleachdaiche
+ if set location: Suidhich far a bheil thu a' fuireach air duilleag nan %{settings_link}
+ gus cleachdaichean faisg ort a shealltainn.
+ settings_link_text: roghainnean
+ your friends: Na caraidean agad
+ no friends: Cha do chuir thu caraid ris fhathast.
+ km away: '%{count}km air falbh'
+ m away: '%{count}m air falbh'
+ nearby users: Cleachdaichean am fagas eile
+ no nearby users: Chan eil cleachdaiche sam bith eile ann a dh'innis gu bheil
+ iad ris an obair-mhapa am fagas.
+ role:
+ administrator: '''S e rianaire a tha sa chleachdaiche seo'
+ moderator: '''S e maor a tha sa chleachdaiche seo'
+ grant:
+ administrator: Thoir seachad inntrigeadh rianaire
+ moderator: Thoir seachad inntrigeadh maoir
+ revoke:
+ administrator: Cùl-ghairm inntrigeadh rianaire
+ moderator: Cùl-ghairm inntrigeadh maoir
+ block_history: bacaidhean air am faighinn
+ moderator_history: bacaidhean air an toirt seachad
+ comments: Beachdan
+ create_block: bacaich an cleachdaiche seo
+ activate_user: gnìomhaich an cleachdaiche seo
+ deactivate_user: cuir an cleachdaiche seo à gnìomh
+ confirm_user: dearbhaich an cleachdaiche seo
+ hide_user: falaich an cleachdaiche seo
+ unhide_user: neo-fhalaich an cleachdaiche seo
+ delete_user: sguab às an cleachdaiche seo
+ confirm: Dearbhaich
+ friends_changesets: seata atharraichean nan caraidean
+ friends_diaries: clàran leabhair-latha nan caraidean
+ nearby_changesets: seata atharraichean nan cleachdaichean am fagas
+ nearby_diaries: clàran leabhair-latha am fagas
+ popup:
+ your location: Far a bheil thu
+ nearby mapper: Neach-mapachaidh am fagas
+ friend: Caraid
+ account:
+ title: Deasaich an cunntas
+ my settings: Na roghainnean agam
+ current email address: 'An seòladh puist-d làithreach:'
+ new email address: 'An seòladh puist-d ùr:'
+ email never displayed publicly: (na seall gu poblach idir)
+ external auth: 'Dearbhadh taobh a-muigh:'
+ openid:
+ link: http://wiki.openstreetmap.org/wiki/OpenID
+ link text: dè th`ann?
+ public editing:
+ heading: 'Deasachadh poblach:'
+ enabled: An comas. Nochdaidh d' ainm agus faodaidh tu dàta a dheasachadh.
+ enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
+ enabled link text: dè th`ann?
+ disabled: À comas agus chan fhaod thu dàta a dheasachadh, bith gach deasachadh
+ a rinn thu roimhe gun urra.
+ disabled link text: Carson nach urrainn dhomh deasachadh?
+ public editing note:
+ heading: Deasachadh poblach
+ text: Cha nochd d' ainm leis na dheasaicheas tu aig an àm seo agus chan fhaodar
+ teachdaireachd a chur thugad no sealltainn far a bheil thu. Gus na dheasaich
+ thu a shealltainn agus cead a thoirt do chàch gun cuir iad fios thugad air
+ an làrach-lìn, briog air a' phutan gu h-ìosal. <b>O na ghluais sinn dha
+ tionndadh 0.6 dhen API, chan fhaod ach cleachdaichean poblach dàta a' mhapa
+ a dheasachadh</b>. (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">faigh
+ a-mach carson</a>).<ul><li>Cha dèid an seòladh puist-d agad fhoillseachadh
+ nuair a thèid thu 'nad deasaiche poblach.</li><li>Cha ghabh an gnìomh seo
+ a neo-dhèanamh agus bidh gach cleachdaiche ùr poblach o thùs o seo a-mach.</li></ul>
+ contributor terms:
+ heading: 'Teirmichean a'' chom-pàirtiche:'
+ agreed: Dh'aontaich thu ri teirmichean ùra a' chom-pàirtiche.
+ not yet agreed: Cha do dh'aontaich thu ri teirmichean ùra a' chom-pàirtiche
+ fhathast.
+ review link text: Lean air a' cheangal seo nuair a bhios e iomchaidh dhut
+ gus teirmichean ùra a' chom-pàirtiche a leughadh is gabhail riutha.
+ agreed_with_pd: Thuirt thu cuideachd gun dèid gach rud a dheasaicheas tu a
+ chur ris a' Public Domain.
+ link: http://www.osmfoundation.org/wiki/License/Contributor_Terms
+ link text: Dè th`ann?
+ profile description: 'Tuairisgeul na pròifil:'
+ preferred languages: 'Na cànanan as fhearr leat:'
+ preferred editor: 'An deasaiche as fhearr leat:'
+ image: 'Dealbh:'
+ gravatar:
+ gravatar: Cleachd Gravatar
+ link: http://wiki.openstreetmap.org/wiki/Gravatar
+ link text: Dè th`ann?
+ new image: Cuir dealbh ris
+ keep image: Cum an dealbh làithreach
+ delete image: Thoir an dealbh làithreach air falbh
+ replace image: Cuir dealbh an àite an fhir làithrich
+ image size hint: (bidh dealbhan ceàrnach a bhios 100x100 no nas motha as fhearr)
+ home location: 'Far a bheil thu a'' fuireach:'
+ no home location: Cha do dh'innis thu far a bheil thu a' fuireach.
+ latitude: 'Domhan-leud:'
+ longitude: 'Domhan-fhad:'
+ update home location on click: A bheil thu airson ùrachadh far a bheil thu a'
+ fuireach le briogadh air a' mhapa?
+ save changes button: Sàbhail na dh'atharraich thu
+ make edits public button: Dèan fear poblach de gach deasachadh a rinn mi
+ return to profile: Till dhan phròifil
+ flash update success confirm needed: Chaidh fiosrachadh a' chleachdaiche ùrachadh
+ gu soirbheachail. Thoir sùil air a' phost-d agad gus an seòladh puist-d ùr
+ agad a dhearbhadh.
+ flash update success: Chaidh fiosrachadh a' chleachdaiche ùrachadh gu soirbheachail.
+ confirm:
+ heading: Thoir sùil air a' phost-d agad!
+ introduction_1: Chuir sinn post-d dearbhaidh thugad.
+ introduction_2: Dearbhaich an cunntas agad 's tu a' briogadh air a' cheangal
+ sa post-d agus 's urrainn dhut tòiseachadh air an obair-mhapa.
+ press confirm button: Brùth air a' phutan "Dearbhaich" gu h-ìosal gus an cunntas
+ agad a ghnìomhachadh.
+ button: Dearbhaich
+ success: Chaidh an cunntas agad a dhearbhadh, mòran taing airson clàradh!
+ already active: Chaidh an cunntas seo a dhearbhadh mar-thà.
+ unknown token: Dh'fhalbh an ùine air a' chòd dearbhaidh seo no chan eil e ann.
+ reconfirm_html: <a href="%{reconfirm}">Briog an-seo</a> ma tha thu airson 's
+ gun cuir sinn post-d dearbhaidh dhut a-rithist.
+ confirm_resend:
+ success: Chuir sinn teachdaireachd dearbhaidh ùr gu %{email} agus 's urrainn
+ dhut tòiseachadh air an obair-mhapa nuair a bhios tu air an cunntas agad a
+ dhearbhadh.<br /><br />Ma chleachdas tu siostam an aghaidh spama a chuireas
+ iarrtasan dearbhaidh, dèan cinnteach gun cuir thu webmaster@openstreetmap.org
+ air a gheal-liosta air sgàth 's nach urrainn dhuinn freagairt ri iarrtas dearbhaidh
+ sam bith.
+ failure: Cha deach an cleachdaiche %{name} a lorg.
+ confirm_email:
+ heading: Dearbhaich atharrachadh an t-seòlaidh puist-d
+ press confirm button: Brùth air a' phutan "Dearbhaich" gu h-ìosal gus an seòladh
+ puist-d ùr agad a dhearbhadh.
+ button: Dearbhaich
+ success: Chaidh an t-atharrachadh air an t-seòladh puist-d agad a dhearbhadh!
+ failure: Chaidh seòladh puist-d aig a bheil an tòcan seo a dhearbhadh mar-thà.
+ unknown_token: Dh'fhalbh an ùine air a' chòd dearbhaidh seo no chan eil e ann.
+ set_home:
+ flash success: Chaidh far a bheil thu a' fuireach a shàbhaladh gu soirbheachail.
+ go_public:
+ flash success: Tha gach deasachadh a rinn 's a nì thu poblach agus faodaidh
+ tu deasachadh a dhèanamh a-nis.
+ make_friend:
+ heading: An cuir thu %{user} ris na caraidean agad?
+ button: Cuir caraid ris
+ success: Chaidh %{name} a chur ris na caraidean agad!
+ failed: Duilich ach cha deach leinn %{name} a chur ris na caraidean agad.
+ already_a_friend: Tha càirdeas eadar thu fhèin agus %{name} mar-thà.
+ remove_friend:
+ heading: An toir thu %{user} air falbh o na caraidean agad?
+ button: Thoir an càirdeas air falbh
+ success: Chaidh %{name} a thoirt air falbh o na caraidean agad.
+ not_a_friend: Chan eil càirdeas eadar thu fhèin agus %{name}.
+ filter:
+ not_an_administrator: Feumaidh tu bhith 'nad rianaire gus an gnìomh seo a dhèanamh.
+ list:
+ title: Cleachdaichean
+ heading: Cleachdaichean
+ showing:
+ one: Duilleag %{page} (%{first_item} à %{items})
+ other: Duilleag %{page} (%{first_item}-%{last_item} à %{items})
+ summary: Chaidh %{name} a chruthachadh o %{ip_address} %{date}
+ summary_no_ip: Chaidh %{name} a chruthachadh %{date}
+ confirm: Dearbhaich na cleachdaichean a thagh thu
+ hide: Falaich na cleachdaichean a thagh thu
+ empty: Cha deach cleachdaiche a fhreagras a lorg
+ suspended:
+ title: Chaidh an cunntas a chur à rèim
+ heading: Chaidh an cunntas a chur à rèim
+ webmaster: mhaighstir-lìn
+ body: |-
+ <p>
+ Duilich ach chaidh an cunntas agad a chur à rèim gu fèin-obrachail ri linn gnìomhachd amharasach.
+ </p>
+ <p>
+ Bheir rianaire sùil air a' cho-dhùnadh a dh'aithghearr no faodaidh tu fios a chur gun %{webmaster} ma tha thu airson bruidhinn mu dhèidhinn.
+ </p>
+ auth_failure:
+ connection_failed: Cha deach leinn ceangal ri solaraiche an dearbhaidh
+ invalid_credentials: Tha an dàta-dearbhaidh mì-dhligheach
+ user_role:
+ filter:
+ not_an_administrator: Chan fhaod ach rianairean dreuchdan nan cleachdaichean
+ a stiùireadh agus chan eil thu 'nad rianaire.
+ not_a_role: Chan eil an dreuchd "%{role}" 'na dreuchd dhligheach.
+ already_has_role: Tha an dreuchd "%{role}" aig a' chleachdaiche mar-thà.
+ doesnt_have_role: Chan eil an dreuchd "%{role}" aig a' chleachdaiche.
+ grant:
+ title: Dearbhaich toirt seachad dreuchd
+ heading: Dearbhaich toirt seachad dreuchd
+ are_you_sure: A bheil thu cinnteach gu bheil thu airson an dreuchd "%{role}"
+ a thoirt dhan chleachdaiche "%{name}"?
+ confirm: Dearbhaich
+ fail: Cha b' urrainn dhuinn an dreuchd "%{role}" a thoirt dhan chleachdaiche
+ "%{name}". Dearbhaich gu bheil an dà chuid an cleachdaiche agus an dreuchd
+ dligheach.
+ revoke:
+ title: Dearbhaich cùl-ghairm dreuchd
+ heading: Dearbhaich cùl-ghairm dreuchd
+ are_you_sure: A bheil thu cinnteach gu bheil thu airson an dreuchd "%{role}"
+ a thoirt air falbh on chleachdaiche "%{name}"?
+ confirm: Dearbhaich
+ fail: Cha b' urrainn dhuinn an dreuchd "%{role}" a thoirt air falbh on chleachdaiche
+ "%{name}". Dearbhaich gu bheil an dà chuid an cleachdaiche agus an dreuchd
+ dligheach.
+ user_block:
+ model:
+ non_moderator_update: Feumaidh tu bhith 'nad mhaoir mus urrainn dhut bacadh
+ a chruthachadh no ùrachadh.
+ non_moderator_revoke: Feumaidh tu bhith 'nad mhaoir mus urrainn dhut bacadh
+ a chùl-ghairm.
+ not_found:
+ sorry: Duilich ach cha deach bacadh a' chleachdaiche leis an ID %{id} a lorg.
+ back: Till dhan clàr-innse
+ new:
+ title: A' cruthachadh bacadh air %{name}
+ heading: A' cruthachadh bacadh air %{name}
+ reason: An t-adhbhar carson a nì thu bacadh air %{name}. Feuch am bi thu cho
+ sìtheil is ciallach 's a ghabhas, a' toirt seachad na tha agad de dh'fhiosrachadh
+ mun t-suidheachadh agus cuimhnich gun gabh an teachdaireachd a leughadh gu
+ poblach. Thoir an aire nach tuig a h-uile duine cainnt shònraichte na coimhearsnachd,
+ mar sin feuch an cleachd thu cànan àbhaisteach.
+ period: Dè cho fad 's nach fhaod an cleachdaiche an API a chleachdach o seo
+ a-mach.
+ submit: Cruthaich bacadh
+ tried_contacting: Chuir mi fios dhan chleachdaiche agus dh'iarr mi dha sgur
+ dheth.
+ tried_waiting: Thug mi ùine chiallach dhan chleachdaiche gus freagairt dhan
+ chonaltradh sin.
+ needs_view: Feumaidh an cleachdaiche clàradh a-steach mus dèid am bacadh seo
+ a thoirt air falamh
+ back: Seall a h-uile bacadh
+ edit:
+ title: A' deasachadh bacadh air %{name}
+ heading: A' deasachadh bacadh air %{name}
+ reason: An t-adhbhar carson a nì thu bacadh air %{name}. Feuch am bi thu cho
+ sìtheil is ciallach 's a ghabhas, a' toirt seachad na tha agad de dh'fhiosrachadh
+ mun t-suidheachadh. Thoir an aire nach tuig a h-uile duine cainnt shònraichte
+ na coimhearsnachd, mar sin feuch an cleachd thu cànan àbhaisteach.
+ period: Dè cho fad 's nach fhaod an cleachdaiche an API a chleachdach o seo
+ a-mach.
+ submit: Ùraich am bacadh
+ show: Seall am bacadh seo
+ back: Seall a h-uile bacadh
+ needs_view: Am bi aig a' chleachdaiche clàradh a-steach mus dèid am bacadh seo
+ a thoirt air falamh?
+ filter:
+ block_expired: Dh'fhalbh an ùine air a' bhacadh seo mar-thà is cha ghabh a dheasachadh
+ tuilleadh.
+ block_period: Feumaidh eadaramh a' bhacaidh a bhith 'na aon dhe na luachan a
+ ghabhas taghadh air an liosta-theàrnaidh.
+ create:
+ try_contacting: Feuch an cuir thu fios gun chleachdaiche mus bac thu e agus
+ gun toir thu ùine chiallach dha gum freagair e.
+ try_waiting: Feuch an doir thu ùine chiallach dhan chleachdaiche ach am freagair
+ e mus bac thu e.
+ flash: Chaidh an cleachdaiche %{name} a bhacadh.
+ update:
+ only_creator_can_edit: Chan fhaod ach am maoir a chruthaich am bacadh seo a
+ dheasachadh.
+ success: Chaidh am bacadh ùrachadh.
+ index:
+ title: Bacadh chleachdaichean
+ heading: Liosta dhe na cleachdaichean a chaidh a bhacadh.
+ empty: Cha deach duine sam bith a bhacadh fhathast.
+ revoke:
+ title: A' cùl-ghairm am bacadh air %{block_on}
+ heading: A' cùl-ghairm am bacadh air %{block_on} le %{block_by}
+ time_future: Falbhaidh an ùine air a' bacadh seo an ceann %{time}.
+ past: Dh'fhalbh an ùine air a' bhacadh seo o chionn %{time} agus cha ghabh a
+ chùl-ghairm a-nis.
+ confirm: A bheil thu cinnteach gu bheil thu airson am bacadh seo a chùl-ghairm?
+ revoke: Cùl-ghairm!
+ flash: Chaidh am bacadh seo a chùl-ghairm.
+ period:
+ other: '%{count} uair a thìde'
+ partial:
+ show: Seall
+ edit: Deasaich
+ revoke: Cùl-ghairm!
+ confirm: A bheil thu cinnteach?
+ display_name: Cleachdaiche bacte
+ creator_name: Cruthadair
+ reason: Adhbhar a' bhacaidh
+ status: Staid
+ revoker_name: Air a chùl-ghairm le
+ not_revoked: (cha deach a chùl-ghairm)
+ showing_page: Duilleag %{page}
+ next: Air adhart »
+ previous: « Air ais
+ helper:
+ time_future: Falbhaidh an ùine air an ceann %{time}.
+ until_login: Gnìomhach gus an clàraich an cleachdaiche a-steach.
+ time_past: Dh'fhalbh an ùine air o chionn %{time}.
+ blocks_on:
+ title: Bacaidhean air %{name}
+ heading: Liosta dhe na bacaidhean air %{name}
+ empty: Cha deach %{name} a bhacadh fhathast.
+ blocks_by:
+ title: Bacaidhean le %{name}
+ heading: Liosta dhe na bacaidhean le %{name}
+ empty: Cha do rinn %{name} bacadh fhathast.
+ show:
+ title: Chaidh %{block_on} a bhacadh le %{block_by}
+ heading: Chaidh %{block_on} a bhacadh le %{block_by}
+ time_future: Falbhaidh an ùine air an ceann %{time}
+ time_past: Dh'fhalbh an ùine air o chionn %{time}
+ status: Staid
+ show: Seall
+ edit: Deasaich
+ revoke: Cùl-ghairm!
+ confirm: A bheil thu cinnteach?
+ reason: 'Adhbhar a'' bhacaidh:'
+ back: Seall a h-uile bacadh
+ revoker: 'Cùl-ghairm le:'
+ needs_view: Feumaidh an cleachdaiche clàradh a-steach mus dèid am bacadh seo
+ a thoirt air falamh.
+ note:
+ description:
+ opened_at_html: Air a chruthachadh o chionn %{when}
+ opened_at_by_html: Air a chruthachadh o chionn %{when} le %{user}
+ commented_at_html: Air ùrachadh o chionn %{when}
+ commented_at_by_html: Air ùrachadh o chionn %{when} le %{user}
+ closed_at_html: Air fhuasgladh o chionn %{when}
+ closed_at_by_html: Air fhuasgladh o chionn %{when} le %{user}
+ reopened_at_html: Air ath-ghnìomhachadh o chionn %{when}
+ reopened_at_by_html: Air ath-ghnìomhachadh o chionn %{when} le %{user}
+ rss:
+ title: Nòtaichean OpenStreetMap
+ description_area: Liosta de nòtaichean a chaidh aithris, beachd a chur riutha
+ no a dhùnadh san raon agad [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+ description_item: Inbhir rss airson an nòta %{id}
+ opened: nòta ùr (faisg air %{place})
+ commented: beachd ùr (faisg air %{place})
+ closed: nòta dùinte (faisg air %{place})
+ reopened: nòta air ath-ghnìomhachadh (faisg air %{place})
+ entry:
+ comment: Beachd
+ full: Nòta slàn
+ mine:
+ title: Nòtaichean a chuir %{user} a-null no a thug %{user} beachd dhaibh
+ heading: nòtaichean aig %{user}
+ subheading: Nòtaichean a chuir %{user} a-null no a thug %{user} beachd dhaibh
+ id: Id
+ creator: Cruthadair
+ description: Tuairisgeul
+ created_at: Air a chruthachadh
+ last_changed: An t-atharrachadh mu dheireadh
+ ago_html: o chionn %{when}
+ javascripts:
+ close: Dùin
+ share:
+ title: Co-roinn
+ cancel: Sguir dheth
+ image: Dealbh
+ link: Ceangal no HTML
+ long_link: Ceangal
+ short_link: Ceangal goirid
+ embed: HTML
+ custom_dimensions: Suidhich meudachd ghnàthaichte
+ format: 'Fòrmat:'
+ scale: 'Sgèile:'
+ image_size: Seallaidh an dealbh a' bhreath stannardach le
+ download: Luchdaich a-nuas
+ short_url: URL goirid
+ include_marker: Gabh a-steach an comharra
+ center_marker: Meadhanaich am mapa air a' chomharra
+ paste_html: Cuir ann HTML gus a leabachadh ann an làrach-lìn eile
+ view_larger_map: Seall mapa nas motha
+ key:
+ title: Iuchair a' mhapa
+ tooltip: Iuchair a' mhapa
+ tooltip_disabled: Chan eil iuchair a' mhapa ri fhaighinn ach airson na breatha
+ stannardaich
+ map:
+ zoom:
+ in: Sùm a-steach
+ out: Sùm a-mach
+ locate:
+ title: Seall far a bheil mi
+ popup: Tha thu {distance} {unit} air falbh on phuing seo
+ base:
+ standard: Àbhaisteach
+ cycle_map: Mapa baidhseagail
+ transport_map: Mapa còmhdhalach
+ mapquest: MapQuest fosgailte
+ hot: Daonnachdach
+ layers:
+ header: Breathan a' mhapa
+ notes: Nòtaichean a' mhapa
+ data: Dàta a' mhapa
+ overlays: Cuir tar-chòmhdachaidhean an comas gus duilgheadasan leis a' mhapa
+ fhuasgladh
+ title: Breathan
+ copyright: © <a href='%{copyright_url}'>Co-thabhartaichean OpenStreetMap</a>
+ donate_link_text: <a class='donate-attr' href='%{donate_url}'>Thoir tìodhlac
+ dhuinn</a>
+ site:
+ edit_tooltip: Deasaich am mapa
+ edit_disabled_tooltip: Sùm a-steach gus am mapa a dheasachadh
+ createnote_tooltip: Cuir nòta ris a' mhapa
+ createnote_disabled_tooltip: Sùm a-steach gus nòta a chur ris a' mhapa
+ map_notes_zoom_in_tooltip: Sùm a-steach gus nòtaichean a' mhapa a shealltainn
+ map_data_zoom_in_tooltip: Sùm a-steach gus dàta a' mhapa a shealltainn
+ queryfeature_tooltip: Lorg airson feartan sònraichte
+ queryfeature_disabled_tooltip: Sùm an-steach gus lorg airson feartan sònraichte
+ changesets:
+ show:
+ comment: Thoir beachd
+ subscribe: Fo-sgrìobh
+ unsubscribe: Cuir crìoch air an fh-sgrìobhadh
+ hide_comment: falaich
+ unhide_comment: neo-fhalaich
+ notes:
+ new:
+ intro: Na mhothaich thu air mearachd no rudeigin a tha a dhìth? Innis do luchd-mapachaidh
+ eile ach an urrainn dhuinn seo a chàradh. Gluais an comharra gun ionad cheart
+ agus sgrìobh nòta gus an duilgheadas a mhìneachadh. (Thoir an aire nach
+ cuir thu a-steach fiosrachadh pearsanta no o mhapaichean no eòlairean fo
+ chòir-lethbhreac.)
+ add: Cuir nòta ris
+ show:
+ anonymous_warning: Gabhaidh an nòta seo a-steach beachdan o chleachdaichean
+ gun ainm a bu chòir dhuinn dearbhadh gu neo-eisimeileach.
+ hide: Falaich
+ resolve: Fuasgail
+ reactivate: Ath-ghnìomhaich
+ comment_and_resolve: Thoir beachd ⁊ fuasgail
+ comment: Thoir beachd
+ edit_help: Gluais am mapa agus sùm a-steach air ionad a tha thu airson deasachadh.
+ Briog an-seo an uairsin.
+ directions:
+ engines:
+ graphhopper_bicycle: Baidhseagal (GraphHopper)
+ graphhopper_foot: Coiseachd (GraphHopper)
+ mapquest_bicycle: Baidhseagal (MapQuest)
+ mapquest_car: Càr (MapQuest)
+ mapquest_foot: Coiseachd (MapQuest)
+ osrm_car: Càr (OSRM)
+ directions: Seòlaidhean
+ distance: Astar
+ errors:
+ no_route: Cha deach slighe a lorg eadar an dà àite ud.
+ no_place: Duilich - cha deach an t-àite ud a lorg.
+ instructions:
+ unnamed: gun ainm
+ courtesy: Chaidh na seòlaidhean a thoirt dhuinn le cead %{link}
+ time: Ùine
+ query:
+ node: Nòd
+ way: Slighe
+ relation: Dàimh
+ nothing_found: Cha deach feart a lorg
+ error: 'Mearachd a'' conaltradh le %{server}: %{error}'
+ timeout: Dh'fhalbh an ùine air a' chonaltradh le %{server}
+ redaction:
+ edit:
+ description: Tuairisgeul
+ heading: Deasaich an t-ath-sgrùdadh
+ submit: Sàbhail an ath-sgrùdadh
+ title: Deasaich an t-ath-sgrùdadh
+ index:
+ empty: Chan eil ath-sgrùdadh ri shealltainn ann.
+ heading: Liosta nan ath-sgrùdaidhean
+ title: Liosta nan ath-sgrùdaidhean
+ new:
+ description: Tuairisgeul
+ heading: Cuir a-steach fiosrachadh airson ath-sgrùdadh ùr
+ submit: Cruthaich ath-sgrùdadh
+ title: A' cruthachadh ath-sgrùdadh ùr
+ show:
+ description: 'Tuairisgeul:'
+ heading: A' sealltainn an t-ath-sgrùdadh "%{title}"
+ title: A' sealltainn ath-sgrùdadh
+ user: 'Cruthadair:'
+ edit: Deasaich an t-ath-sgrùdadh seo
+ destroy: Thoir an ath-sgrùdadh seo air falbh
+ confirm: A bheil thu cinnteach?
+ create:
+ flash: Chaidh ath-sgrùdadh a chruthachadh.
+ update:
+ flash: Chaidh na dh'atharraich thu a shàbhaladh.
+ destroy:
+ not_empty: Chan eil an t-ath-sgrùdadh falamh. Thoir air gach tionndadh a bhuineas
+ ris an ath-sgrùdadh seo nach eil e 'nan ath-sgrùdadh tuilleadh mus mill thu
+ am fear seo.
+ flash: Chaidh ath-sgrùdadh a mhilleadh.
+ error: Thachair mearachd a' milleadh an ath-sgrùdaidh seo.
+...
# Messages for Galician (galego)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Banjo
# Author: Elisardojm
# Author: Gallaecio
# Author: Nemo bis
%{when}</abbr>
hidden_by: Agochado por %{user} <abbr title='%{exact_time}'>hai %{when}</abbr>
query:
- title: Características da consulta
+ title: Consultar as características
introduction: Prema no mapa para atopar características preto de aquí.
nearby: Características preto de aquí
enclosing: Características envolventes
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Teleférico
chair_lift: Teleférico
drag_lift: Telesquí
+ gondola: Telecabina
station: Estación de telesquí
aeroway:
aerodrome: Aeródromo
taxiway: Vía de circulación do aeroporto
terminal: Terminal
amenity:
+ animal_shelter: Refuxio de animais
arts_centre: Centro artístico
atm: Caixeiro automático
bank: Banco
bicycle_parking: Aparcadoiro de bicicletas
bicycle_rental: Aluguer de bicicletas
biergarten: Terraza
+ boat_rental: Aluguer de botes
brothel: Prostíbulo
bureau_de_change: Casa de cambio
bus_station: Estación de autobuses
car_wash: Lavadoiro de coches
casino: Casino
charging_station: Estación de carga
+ childcare: Gardería
cinema: Cine
clinic: Clínica
+ clock: Reloxio
college: Instituto
community_centre: Centro comunitario
courthouse: Xulgado
food_court: Área de restauración
fountain: Fonte
fuel: Combustible
+ gambling: Xogos de azar
grave_yard: Cemiterio
gym: Ximnasio
health_centre: Centro de saúde
library: Biblioteca
market: Mercado
marketplace: Praza de mercado
+ monastery: Mosteiro
+ motorcycle_parking: Estacionamento para motocicletas
nightclub: Club nocturno
nursery: Parvulario
nursing_home: Residencia para a terceira idade
office: Oficina
parking: Aparcadoiro
+ parking_entrance: Entrada de estacionamento
pharmacy: Farmacia
place_of_worship: Lugar de culto
police: Policía
veterinary: Clínica veterinaria
village_hall: Concello
waste_basket: Cesto do lixo
+ waste_disposal: Contedor de lixo
youth_centre: Casa da xuventude
boundary:
administrative: Límite administrativo
"yes": Ponte
building:
"yes": Construción
+ craft:
+ brewery: Fábrica de cervexa
+ carpenter: Carpinteiro
+ electrician: Electricista
+ gardener: Xardineiro
+ painter: Pintor
+ photographer: Fotógrafo
+ plumber: Fontaneiro
+ shoemaker: Zapateiro
+ tailor: Xastre
+ "yes": Tenda de artesanía
emergency:
+ ambulance_station: Base de ambulancias
+ defibrillator: Desfibrilador
+ landing_site: Lugar de aterrizaxe de emerxencia
phone: Teléfono de emerxencia
highway:
+ abandoned: Estrada abandonada
bridleway: Pista de cabalos
bus_guideway: Liña de autobuses guiados
bus_stop: Parada de autobús
construction: Autoestrada en construción
cycleway: Pista de bicicletas
+ elevator: Ascensor
emergency_access_point: Punto de acceso de emerxencia
footway: Carreiro
ford: Vao
tertiary: Estrada terciaria
tertiary_link: Estrada terciaria
track: Pista
+ traffic_signals: Sinais de tráfico
trail: Pista
trunk: Estrada nacional
trunk_link: Estrada nacional
unclassified: Estrada sen clasificar
unsurfaced: Estrada non pavimentada
+ "yes": Estrada
historic:
archaeological_site: Xacemento arqueolóxico
battlefield: Campo de batalla
boundary_stone: Marco
- building: Construción
+ building: Edificio histórico
+ bunker: Búnker
castle: Castelo
church: Igrexa
+ city_gate: Porta da cidade
citywalls: Muralla
fort: Forte
+ heritage: Patrimonio da humanidade
house: Casa
icon: Icona
manor: Casa señorial
memorial: Memorial
mine: Mina
monument: Monumento
+ roman_road: Estrada romana
ruins: Ruínas
+ stone: Pedra
tomb: Sepulcro
tower: Torre
wayside_cross: Cruce de camiños
wayside_shrine: Santuario no camiño
wreck: Pecio
+ junction:
+ "yes": Intersección
landuse:
allotments: Hortas
basin: Cunca
road: Zona de estrada
village_green: Parque municipal
vineyard: Viñedo
+ "yes": Uso do solo
leisure:
beach_resort: Balneario
bird_hide: Observatorio de aves
+ club: Club
common: Terreo común
+ dog_park: Parque canino
fishing: Área de pesca
+ fitness_centre: Ximnasio (fitness)
fitness_station: Ximnasio
garden: Xardín
golf_course: Campo de golf
+ horse_riding: Hípica
ice_rink: Pista de patinaxe sobre xeo
marina: Porto deportivo
miniature_golf: Minigolf
pitch: Cancha deportiva
playground: Patio de recreo
recreation_ground: Área recreativa
+ resort: Centro turístico
sauna: Sauna
slipway: Varadoiro
sports_centre: Centro deportivo
swimming_pool: Piscina
track: Pista de carreiras
water_park: Parque acuático
+ "yes": Ocio
+ man_made:
+ lighthouse: Faro
+ pipeline: Tubaxe
+ tower: Torre
+ works: Fábrica
+ "yes": Artificial
military:
airfield: Aeródromo militar
barracks: Barracas
forest: Bosque
geyser: Géyser
glacier: Glaciar
+ grassland: Pradaría
heath: Breixeira
hill: Outeiro
island: Illa
reef: Arrecife
ridge: Crista
rock: Rocha
+ saddle: Outeiro
+ sand: Area
scree: Pedregal
scrub: Matogueira
spring: Primavera
wood: Bosque
office:
accountant: Contable
+ administrative: Administración
architect: Arquitecto
company: Empresa
employment_agency: Axencia de emprego
travel_agent: Axencia de viaxes
"yes": Oficina
place:
+ allotments: Hortas
+ block: Bloque
airport: Aeroporto
city: Cidade
country: País
town: Cidade
unincorporated_area: Área non incorporada
village: Vila
+ "yes": Lugar
railway:
abandoned: Vía de tren abandonada
construction: Vía ferroviaria en construción
spur: Vía ramificada
station: Estación de ferrocarril
stop: Parada de ferrocarril
- subway: Estación de metro
+ subway: Metro
subway_entrance: Boca de metro
switch: Puntos de cambio de vía
tram: Vía de tranvías
"yes": Tenda
tourism:
alpine_hut: Cabana alpina
+ apartment: Apartamento
artwork: Obra de arte
attraction: Atracción
bed_and_breakfast: Cama e almorzo
camp_site: Campamento
caravan_site: Sitio de caravanas
chalet: Chalé
+ gallery: Galería
guest_house: Albergue
hostel: Hostal
hotel: Hotel
wadi: Uadi
waterfall: Fervenza
weir: Vaira
+ "yes": Curso de auga
admin_levels:
level2: Fronteira do país
level4: Fronteira do estado/provincia
results:
no_results: Non se atopou ningún resultado
more_results: Máis resultados
- distance:
- one: arredor de 1km
- zero: menos de 1km
- other: arredor de %{count}km
- direction:
- south_west: suroeste
- south: sur
- south_east: sueste
- east: leste
- north_east: nordés
- north: norte
- north_west: noroeste
- west: oeste
layouts:
logo:
alt_text: Logo do OpenStreetMap
mapping_link: comezar a contribuír
legal_babble:
title_html: Dereitos de autoría e licenza
- intro_1_html: |-
- O OpenStreetMap é de <i>datos abertos</i> e atópase baixo a <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ intro_1_html: "O OpenStreetMap <sup><a href=\"#trademarks\">®</a></sup>
+ está dispoñible baixo <i>datos abertos</i> e atópase baixo a <a\nhref=\"http://opendatacommons.org/licenses/odbl/\">Open
+ Data\nCommons Open Database License</a> (ODbL) da <a\t\nhref=\"http://osmfoundation.org/\">Fundación
+ OpenStreetMap</a> (OSMF)."
intro_2_html: |-
Vostede é libre de copiar, distribuír, transmitir e adaptar os nosos datos,
na medida en que acredite o OpenStreetMap e mais os seus
title: Exemplo de recoñecemento
more_title_html: Máis información
more_1_html: |-
- Descubra máis sobre como empregar os nosos datos e como acreditarnos nas <a
+ Descubra máis sobre como empregar os nosos datos e como acreditarnos na <a
+ href="http://osmfoundation.org/Licence">páxina de licenza de OSMF</a> e na comunidade de <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">preguntas máis frecuentes
sobre asuntos legais</a>.
more_2_html: |-
contributors_nz_html: |-
<strong>Nova Zelandia:</strong> Contén datos con orixe no
Land Information New Zealand. Dereitos de autor da coroa.
+ contributors_si_html: |-
+ <strong>Eslovenia</strong>: Contén datos da
+ <a href="http://www.gu.gov.si/en/">Autoridade de Planificación e de Cartografía</a> e do
+ <a href="http://www.mkgp.gov.si/en/">Ministerio de Agricultura, Bosques e Alimentación</a>
+ (información pública de Eslovenia).
contributors_za_html: |-
<strong>Sudáfrica:</strong> Contén datos con orixe no
<a href="http://www.ngi.gov.za/">Chief Directorate:
o noso <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procedemento
para retirar datos</a> ou deixe unha notificación no noso
<a href="http://dmca.openstreetmap.org/">formulario en liña</a>.
+ trademarks_title_html: <span id="trademarks"></span>Marcas rexistadas
+ trademarks_1_html: OpenStreetMap e o logotipo coa lupa son marcas rexistadas
+ da OpenStreetMap Foundation. Se ten algunha pregunta sobre a utilización das
+ marcas, por favor envée as súas cuestión ó <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Grupo
+ de Traballo de Licenzas</a>.
welcome_page:
title: Reciba a nosa benvida!
introduction_html: Dámoslle a benvida ao OpenStreetMap, o mapa do mundo libre
tag_html: Unha <strong>etiqueta</strong> é unha peza de datos sobre un nodo
ou un camiño, como o nome dun restaurante ou o límite de velocidade dunha
estrada.
+ rules:
+ title: Regras!
+ paragraph_1_html: OpenStreetMap ten poucas regras formais, pero esperamos que
+ todos os participantes colaboraren e se comuniquen coa comunidade. Se está
+ considerando algunha actividade que non sexa a edición manual, lea e siga
+ as instrucións sobre <a href='http://wiki.openstreetmap.<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'></a>org/wiki/Import/Guidelines'>importacións</a>
+ e <a href='http://wiki.openstreetmap.org/wiki/Import/Automated_Edits_code_of_conduct'>edicións
+ automatizadas</a>.
questions:
title: Ten algunha pregunta?
paragraph_1_html: |-
url: /welcome
title: Dámoslle a benvida ao OSM
description: Comece con esta guía rápida cos principios básicos do OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+ title: Guía do principiante
+ description: Guía para principiantes, mantida pola comunidade.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Formule unha pregunta ou busque respostas no sitio de preguntas
e respostas do OSM.
+ mailing_lists:
+ title: Listas de correo
+ description: Pregunta ou conversa sobre temas interesantes nun amplo abano de
+ listas de correo temáticas ou rexionais.
+ forums:
+ title: Foros
+ description: Preguntas e conversas para os que prefiren unha interface do estilo
+ carteleira de anuncios.
+ irc:
+ title: IRC
+ description: Chat interactivo en moitos idiomas diferentes e sobre moitos temas.
+ switch2osm:
+ title: Migra a OSM
+ description: Axuda para as empresas e organizacións que migran a mapas e a outros
+ servizos baseados en OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
Os datos do OpenStreetMap son <i>datos libres</i>; pode usalos libremente e para calquera finalidade
sempre que recoñeza ao OpenStreetMap e mailos seus colaboradores como os autores dos datos. Se modifica os datos
ou os utiliza dalgún xeito para outros fins, pode distribuír o resultado sempre e cando o faga empregando a mesma licenza. Atopará información máis detallada na <a href='%{copyright_path}'>páxina de dereitos de autoría e licenza</a>.
+ legal_title: Legal
+ legal_html: "Este sitio e moitos outros servizos relacionados son manexados pola
+ \ \n<a href='http://osmfoundation.org/'>Fundación OpenStreetMap</a> (OSMF) \nen
+ nome da comunidade.\n<br> \n<a href='http://osmfoundation.org/Contact'>Contacte
+ coa OSMF</a> \nse ten preguntas ou problemas sobre licenzas, dereitos de autor
+ ou outro tema legal."
partners_title: Socios
notifier:
diary_comment_notification:
close: Pechar
search:
search: Procurar
+ get_directions: Obter indicacións
+ get_directions_title: Atopar indicacións entre dous puntos
+ from: De
+ to: A
where_am_i: Onde estou?
where_am_i_title: Describa a localización actual usando o motor de procuras
submit_text: Ir
name: Nome
required: Obrigatorio
url: URL principal da aplicación
- callback_url: URL de retorno
+ callback_url: URL de retorno de chamada
support_url: URL de apoio
requests: 'Solicitar os seguintes permisos ao usuario:'
allow_read_prefs: ler as súas preferencias de usuario.
register now: Rexístrese agora
with username: 'Xa ten unha conta no OpenStreetMap? Acceda ao sistema co seu
nome de usuario e contrasinal:'
- with openid: 'Tamén pode usar o seu OpenID para acceder:'
+ with external: 'O ben, utilice un servizo de terceiros para acceder:'
new to osm: É novo no OpenStreetMap?
to make changes: Para realizar as modificacións nos datos do OpenStreetMap,
cómpre ter unha conta.
sospeitosas.<br />Póñase en contacto co <a href="%{webmaster}">webmaster</a>
se quere debatelo.
auth failure: Sentímolo, non puido acceder ao sistema con eses datos.
- openid missing provider: Sentímolo, non podemos contactar co seu provedor do
- OpenID
- openid invalid: Sentímolo, o seu OpenID semella non estar ben formado
openid_logo_alt: Acceder ao sistema cun OpenID
- openid_providers:
+ auth_providers:
openid:
title: Acceder ao sistema co OpenID
alt: Acceder ao sistema cun URL OpenID
google:
title: Acceder ao sistema co Google
alt: Acceder ao sistema cun OpenID de Google
+ facebook:
+ title: Acceda co Facebook
+ alt: Iniciar sesión cunha conta de Facebook
+ windowslive:
+ title: Iniciar sesión co Windows Live
+ alt: Iniciar sesión cunha conta de Windows Live
yahoo:
title: Acceder ao sistema con Yahoo
alt: Acceder ao sistema cun OpenID de Yahoo
display name: 'Nome mostrado:'
display name description: O seu nome de usuario mostrado publicamente. Pode
cambialo máis tarde nas preferencias.
- openid: '%{logo} OpenID:'
+ external auth: 'Autenticación de terceiros:'
password: 'Contrasinal:'
confirm password: 'Confirmar o contrasinal:'
- use openid: Tamén pode usar %{logo} OpenID para acceder
- openid no password: Co OpenID non é necesario un contrasinal, pero algunhas
- ferramentas adicionais ou servidores aínda poden necesitalo.
- openid association: |-
- <p>O seu OpenID aínda non está asociado a ningunha conta no OpenStreetMap.</p>
+ use external auth: Ou ben, utilice un servizo de terceiros para acceder
+ auth no password: Coa autenticación de terceiros non se precisa un contrasinal,
+ aínda que hai algunhas ferramentas e servidores que aínda a solicitan.
+ auth association: |-
+ <p>O seu identificador todavía non está asociado cunha conta de OpenStreetMap.</p>
<ul>
- <li>Se é novo no OpenStreetMap, cree unha nova conta mediante o formulario inferior.</li>
+ <li>Se eres novo en OpenStreetMap, por favor crea unha conta mediante o seguinte formulario.</li>
<li>
- Se xa ten unha conta, pode acceder ao sistema
- co seu nome de usuario e contrasinal e logo asociar a conta
- ao seu OpenID nas preferencias de usuario.
+ Se xa tes unha conta, podes iniciar sesión na túa conta usando o teu nome de usuario e contrasinal e logo asociar a conta co teu identificador na configuración de usuario.
</li>
</ul>
continue: Rexistrarse
current email address: 'Enderezo de correo electrónico actual:'
new email address: 'Novo enderezo de correo electrónico:'
email never displayed publicly: (nunca mostrado publicamente)
+ external auth: 'Autenticación externa:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: que é isto?
public editing:
press confirm button: Prema sobre o botón de confirmación que aparece a continuación
para activar a súa conta.
button: Confirmar
+ success: Confirmouse a súa conta. Grazas por se rexistrar!
already active: Esta conta xa se confirmou.
unknown token: Ese código de confirmación caducou ou non existe.
reconfirm_html: Se quere que reenviemos o correo electrónico de confirmación,
press confirm button: Prema sobre o botón de confirmación que aparece a continuación
para confirmar o seu novo enderezo de correo electrónico.
button: Confirmar
- success: Confirmouse o seu enderezo de correo electrónico. Grazas por se rexistrar!
+ success: Confirmouse o cambio do seu enderezo de correo electrónico!
failure: Xa se confirmou un enderezo de correo electrónico con este pase.
+ unknown_token: Ese código de confirmación caducou ou non existe.
set_home:
flash success: Gardouse o domicilio
go_public:
Axiña un administrador revisará esta decisión.
Quizais queira contactar co %{webmaster} para conversar sobre isto.
</p>
+ auth_failure:
+ connection_failed: Fallou a conexión ó proveedor de autenticación
+ invalid_credentials: Credenciais de autenticación inválidas
+ no_authorization_code: Sen código de autorización
+ unknown_signature_algorithm: Algoritmo de sinatura descoñecido
+ invalid_scope: Ámbito inválido
user_role:
filter:
not_an_administrator: Só os administradores poden xestionar os roles dos usuarios,
heading: '%{block_on} bloqueado por %{block_by}'
time_future: Remata en %{time}
time_past: Rematou hai %{time}
+ created: Creado
+ ago: hai %{time}
status: Estado
show: Mostrar
edit: Editar
description:
opened_at_html: Creado hai %{when}
opened_at_by_html: Creado hai %{when} por %{user}
- commented_at_html: Cargado hai %{when}
+ commented_at_html: Subido hai %{when}
commented_at_by_html: Cargado hai %{when} por %{user}
closed_at_html: Resolto hai %{when}
closed_at_by_html: Resolto hai %{when} por %{user}
link: Ligazón ou HTML
long_link: Ligazón
short_link: Ligazón abreviada
+ geo_uri: URI geo
embed: HTML
custom_dimensions: Establecer dimensións personalizadas
format: 'Formato:'
createnote_disabled_tooltip: Achegar o mapa para engadirlle unha nota
map_notes_zoom_in_tooltip: Achegar para ver as notas do mapa
map_data_zoom_in_tooltip: Achegar para ver os datos do mapa
- queryfeature_tooltip: Características da consulta
+ queryfeature_tooltip: Consultar as características
queryfeature_disabled_tooltip: Acercar para consultar características
changesets:
show:
comment: Comentar
edit_help: Desplace o mapa e amplíeo na localización que queira editar; logo,
prema aquí.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicleta (GraphHopper)
+ graphhopper_foot: A pé (GraphHopper)
+ mapquest_bicycle: Bicicleta (MapQuest)
+ mapquest_car: Coche (MapQuest)
+ mapquest_foot: A pé (MapQuest)
+ osrm_car: Coche (OSRM)
+ directions: Indicacións
+ distance: Distancia
+ errors:
+ no_route: Non se puido atopar unha ruta entre eses dous lugares.
+ no_place: Sentímolo - non se puido atopar ese lugar.
+ instructions:
+ continue_without_exit: Continuar en %{name}
+ slight_right_without_exit: Xire un pouco cara á dereita en %{name}
+ turn_right_without_exit: Xire á dereita en %{name}
+ sharp_right_without_exit: Xiro brusco á dereita en %{name}
+ uturn_without_exit: Cambio de sentido en %{name}
+ sharp_left_without_exit: Xiro brusco á esquerda en %{name}
+ turn_left_without_exit: Xire á esquerda cara %{name}
+ slight_left_without_exit: Xire un pouco cara á esquerda en %{name}
+ via_point_without_exit: (punto intermedio)
+ follow_without_exit: Siga %{name}
+ roundabout_without_exit: Na rotonda, tomar %{name}
+ leave_roundabout_without_exit: Sair da rotonda - %{name}
+ stay_roundabout_without_exit: Permanecer na rotonda - %{name}
+ start_without_exit: Comezar ó final de %{name}
+ destination_without_exit: Chegada ó destino
+ against_oneway_without_exit: Ir en contra dun só sentido en %{name}
+ end_oneway_without_exit: Final dun só sentido en %{name}
+ roundabout_with_exit: Na rotonda coller saída %{exit} en %{name}
+ unnamed: sen nome
+ courtesy: Indicacións cortesía de %{link}
+ time: Tempo
query:
node: Nodo
way: Camiño
# Author: Metraduk
# Author: Nemo bis
# Author: Orsa
+# Author: Ruila
# Author: YaronSh
# Author: Yona b
# Author: Ypnypn
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: רכבל
chair_lift: מעלית סקי בישיבה
drag_lift: מעלית סקי בגרירה
+ gondola: רכבל גונדולה
station: תחנת רכבל
aeroway:
aerodrome: מנחת
taxiway: מסלול נסיעת מטוס
terminal: מסוף
amenity:
+ animal_shelter: בית מחסה לחיות
arts_centre: מרכז אמנויות
atm: כספומט
bank: בנק
bicycle_parking: חניית אופניים
bicycle_rental: השכרת אופניים
biergarten: גינת בירה
+ boat_rental: השכרת סירות
brothel: בית בושת
bureau_de_change: חלפן כספים
bus_station: תחנת אוטובוס
car_wash: שטיפת מכוניות
casino: קזינו
charging_station: תחנת הטענה
+ childcare: טיפול בילדים
cinema: בית קולנוע
clinic: מרפאה
+ clock: שעון
college: מכללה
community_centre: מרכז קהילתי
courthouse: בית משפט
food_court: אזור מזון מהיר
fountain: מזרקה
fuel: דלק
+ gambling: הימורים
grave_yard: בית קברות
gym: מכון כושר/חדר כושר
health_centre: מרכז בריאות
library: ספרייה
market: שוק
marketplace: שוק
+ monastery: מנזר
+ motorcycle_parking: חניית אופנועים
nightclub: מועדון לילה
nursery: פעוטון
nursing_home: בית אבות
office: משרד
parking: חניה
+ parking_entrance: כניסה לחניה
pharmacy: בית מרקחת
place_of_worship: מקום פולחן
police: משטרה
veterinary: מרפאה וטרינרית
village_hall: אולם הכפר
waste_basket: פח אשפה
+ waste_disposal: טיפול בפסולת
youth_centre: מרכז נוער
boundary:
administrative: גבול שטח שיפוט
"yes": גשר
building:
"yes": בניין
+ craft:
+ brewery: מבשלת בירה
+ carpenter: נגר
+ electrician: חשמלאי
+ gardener: גנן
+ painter: צייר
+ photographer: צלם
+ plumber: שרברב
+ shoemaker: סנדלר
+ tailor: חייט
+ "yes": חנות מלאכת־יד
emergency:
+ ambulance_station: תחנת אמבולנסים
+ defibrillator: מפעם
+ landing_site: אתר נחיתת חירום
phone: טלפון חירום
highway:
+ abandoned: כביש נטוש
bridleway: שביל עבור סוסים
bus_guideway: נתיב תחבורה ציבורית מונחית
bus_stop: תחנת אוטובוס
construction: כביש מהיר בבנייה
cycleway: נתיב אופניים
+ elevator: מעלית
emergency_access_point: נקודת גישה לשירותי חירום
footway: שביל להולכי רגל
ford: מעברה בנחל
tertiary: דרך שלישונית
tertiary_link: דרך שלישונית
track: מסלול מרוצים
+ traffic_signals: רמזור
trail: שביל
trunk: דרך ראשית
trunk_link: דרך ראשית
unclassified: דרך לא מסווגת
unsurfaced: דרך בלתי־סלולה
+ "yes": דרך
historic:
archaeological_site: אתר ארכאולוגי
battlefield: שדה קרב
boundary_stone: אבן גבול
- building: בניין
+ building: בניין היסטורי
+ bunker: בונקר
castle: טירה
church: כנסייה
+ city_gate: שער העיר
citywalls: חומות העיר
fort: מעוז
+ heritage: אתר מורשת
house: בית
icon: איקונין
manor: אחוזה
memorial: אנדרטה זיכרון
mine: מכרה
monument: אנדרטה
+ roman_road: דרך רומית
ruins: הריסות
+ stone: אבן
tomb: קבר
tower: מגדל
wayside_cross: צלב בצד הדרך
wayside_shrine: מקדש בצד הדרך
wreck: ספינה טרופה
+ junction:
+ "yes": צומת
landuse:
allotments: הקצאת קרקע
basin: אגן
road: אזור דרך
village_green: כיכר הכפר
vineyard: כרם
+ "yes": שימוש בקרקע
leisure:
beach_resort: אתר נופש לחוף ים
bird_hide: מצפור
+ club: מועדון
common: שטח משותף
+ dog_park: פארק כלבים
fishing: אזור דיג
+ fitness_centre: מכון כושר
fitness_station: תחנת כושר
garden: גן
golf_course: מגרש גולף
+ horse_riding: רכיבת סוסים
ice_rink: גלישה על הקרח
marina: מרינה
miniature_golf: מיני־גולף
pitch: מגרש ספורט
playground: מגרש משחקים
recreation_ground: שטחי נופש ופנאי
+ resort: אתר נופש
sauna: סאונה
slipway: ממשה
sports_centre: מרכז ספורט
swimming_pool: ברֵכת שחייה
track: מסלול ריצה
water_park: פארק מים
+ "yes": נופש
+ man_made:
+ lighthouse: מגדלור
+ pipeline: קו צינורות
+ tower: מגדל
+ works: מפעל
+ "yes": מעשה־אדם
military:
airfield: מנחת צבאי
barracks: מגורי חיילים
forest: יער
geyser: גייזר
glacier: קרחון
+ grassland: דשא
heath: בתה
hill: גבעה
island: אי
reef: שונית
ridge: רכס
rock: סלע
+ saddle: מעבר בין הרים
+ sand: חול
scree: ערמת סלעים
scrub: סבך
spring: מעיין
wood: יער
office:
accountant: רואה חשבון
+ administrative: מִנהל
architect: אדריכל
company: חברה
employment_agency: סוכנות תעסוקה
travel_agent: סוכנות נסיעות
"yes": משרד
place:
+ allotments: שטחים חקלאיים
+ block: רובע
airport: נמל תעופה
city: עיר
country: ארץ
town: עיירה
unincorporated_area: שטח בלתי מאוגד
village: כפר
+ "yes": מקום
railway:
abandoned: מסילת ברזל נטושה
construction: מסילת ברזל בבנייה
spur: שלוחת מסילת ברזל
station: תחנת רכבת
stop: תחנת רכבת
- subway: ת×\97× ×ª ר×\9b×\91ת ת×\97ת×\99ת
+ subway: רכבת תחתית
subway_entrance: כניסה לתחנת רכבת תחתית
switch: נקודות מסילת ברזל
tram: חשמלית
"yes": חנות
tourism:
alpine_hut: בקתה אלפינית
+ apartment: דירה
artwork: יצירת אמנות
attraction: מוקד עניין
bed_and_breakfast: לינה וארוחת בוקר
camp_site: אתר מחנאות
caravan_site: אתר לקרוואנים
chalet: טירה
+ gallery: גלריה
guest_house: בית הארחה
hostel: אכסניה
hotel: בית מלון
wadi: ואדי
waterfall: מפל מים
weir: סכר
+ "yes": מעבר מימי
admin_levels:
level2: גבול המדינה
level4: גבול המדינה
results:
no_results: לא נמצאו תוצאות
more_results: תוצאות נוספות
- distance:
- one: בערך קילומטר
- zero: פחות מקילומטר
- other: בערך %{count} ק״מ
- direction:
- south_west: דרום־מערב
- south: דרום
- south_east: דרום־מזרח
- east: מזרח
- north_east: צפון־מזרח
- north: צפון
- north_west: צפון־מערב
- west: מערב
layouts:
logo:
alt_text: הלוגו של OpenStreetMap
mapping_link: להתחיל למפות
legal_babble:
title_html: זכויות יוצרים ורישיון
- intro_1_html: |-
- OpenStreetMap הוא <i>מיזם נתונים פתוחים</i>, לפי רישיון <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a>‏ (ODbL).
+ intro_1_html: "OpenStreetMap‏<sup><a href=\"#trademarks\">®</a></sup>
+ הוא <i>מיזם נתונים פתוחים</i>, שמתפרסם לפי רישיון <a\nhref=\"http://opendatacommons.org/licenses/odbl/\">Open
+ Data\nCommons Open Database License</a>‏ (ODbL) על־ידי <a\n \t+\t\nhref=\"http://osmfoundation.org/\">קרן
+ OpenStreetMap</a>‏ (OSMF)."
intro_2_html: |-
אתם חופשיים להעתיק, להפיץ, לשדר ולהתאים את הנתונים שלנו,
כל עוד אתם נותנים ייחוס ל־OpenStreetMap
more_title_html: איך למצוא מידע נוסף
more_1_html: |-
קִראו עוד על שימוש בנתונים שלנו ועל דרכים לייחס אלינו יצירות נגזרות ב<a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">דף שו״ת
- משפטי</a>.
+ href="http://osmfoundation.org/Licence">דף רישיון OSMF</a> וב<a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">דף השו״ת
+ משפטי</a> של הקהילה.
more_2_html: |-
אף־על־פי ש־OpenStreetMap הוא מיזם נתונים פתוחים, איננו יכולים לספק
API מפות בחינם למפתחי צד שלישי.
contributors_nz_html: |-
<strong>ניו זילנד</strong>: מכיל נתונים שהגיעו במקור
מ־Land Information New Zealand. זכויות היוצרים של הכתר שמורות.
+ contributors_si_html: |-
+ <strong>סלובניה</strong>: מכיל נתונים מ<a href="http://www.gu.gov.si/en/">הרשות למדידת־קרקעות ולמיפוי</a> ומ<a href="http://www.mkgp.gov.si/en/">משרד החקלאות, היערנות והמזון</a>
+ (מידע ציבורי של סלובניה).
contributors_za_html: |-
<strong>דרום אפריקה</strong>: מכיל נתונים שהגיעו
מ־<a href="http://www.ngi.gov.za/">מִנהל כללי:
אל <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">נוהל
ההסרה</a> שלנו או כתבו תלונה ישירות
<a href="http://dmca.openstreetmap.org/">בדף התלונות המקוון שלנו</a>.
+ trademarks_title_html: <span id="trademarks"></span>סימנים מסחריים
+ trademarks_1_html: OpenStreetMap וסמל הזכוכית המגדלת הם סימנים מסחריים של קרן
+ OpenStreetMap. אם יש לך שאלות על השימוש שלך בסימנים, נא לשלוח את השאלות ל<a
+ href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">קבוצת העבודה
+ של הרישוי</a>.
welcome_page:
title: ברוך בואך!
introduction_html: ברוך בואך ל־OpenStreetMap, מפה חופשית של העולם, שאפשר לערוך.
way_html: <strong>נתיב</strong> הוא קו או אזור כמו דרך, זרם, אגם או מבנה.
tag_html: <strong>תג</strong> הוא פיסת מידע על צומת או על נתיב כמו שם של מסעדה
או מגבלת מהירות בדרך.
+ rules:
+ title: חוקים!
+ paragraph_1_html: ל־OpenStreetMap יש מעט חוקים פורמליים, אבל אנחנו מצפים מכל
+ המשתתפים לשתף פעולה ולתקשר עם הקהילה. אם אתם שוקלים לבצע פעולות כלשהן מלבד
+ עריכה ידנית, אנא קראו את המדריכים על <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>יבוא</a>
+ ועל <a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>עריכות
+ אוטומטיות</a>.
questions:
title: יש שאלות?
paragraph_1_html: |-
url: /welcome
title: ברוכים הבאים ל־OSM
description: תחילת היכרות בעזרת מדריך מהיר שסוקר את היסודות של OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/He:Beginners%27_guide
+ title: המדריך למתחילים
+ description: מדריך בתחזוקת הקהילה למתחילים.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: לשאול שאלה או לחפש תשובות באתר השאלות והתשובות של OSM.
+ mailing_lists:
+ title: רשימות תפוצה
+ description: לשאול שאלה או לדון בדברים מעניינים ברשימות תפוצה נושאים ואזוריות
+ רבות.
+ forums:
+ title: פורומים
+ description: שאלות ודיונים לאנשים שמעדיפים ממשק בסגנון פורום.
+ irc:
+ title: IRC
+ description: שיחה אינטראקטיבית בשפות שונות רבות ובנושאים רבים.
+ switch2osm:
+ title: switch2osm
+ description: עזרה לחברות וארגונים שעוברים למפות ושירותים אחרים של OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
כל עוד ניתן ייחוס ל־OpenStreetMap ולתורמיה. מותר לשנות את הנתונים
ולבנות על גביהם דברים מסוימים, אך יש להפיץ את התוצאות של זה
לפי התנאים של אותו הרישיון. ר' את <a href='%{copyright_path}'>דף הרישיון וזכויות היוצרים</a> לפרטים נוספים.
+ legal_title: משפטי
+ legal_html: |-
+ האתר הזה ושירותים רבים אחרים מופעלים על־ידי <a href='http://osmfoundation.org/'>קרן OpenStreetMap</a>‏ (OSMF) בשם הקהילה.
+ <br>
+ נא <a href='http://osmfoundation.org/Contact'>ליצור קשר עם OSMF</a> אם יש לך שאלות על רישוי, זכויות יוצרים או שאלות ובעיות משפטיות אחרות.
partners_title: שותפים
notifier:
diary_comment_notification:
close: לסגירה
search:
search: חיפוש
+ get_directions: כיוונים
+ get_directions_title: למצוא את הדרך בין שתי נקודות
+ from: מ
+ to: ל
where_am_i: איפה אני?
where_am_i_title: נא לתאר את מיקומך הנוכחי באמצעות מנוע החיפוש
submit_text: מעבר
login_button: כניסה
register now: להירשם עכשיו
with username: 'כבר יש לך חשבון OpenStreetMap? נא להיכנס עם שם משתמש וססמה:'
- with openid: 'לחלופין אפשר להשתמש ב־OpenID כדי להיכנס:'
+ with external: 'לחלופין, השתמשו בצד שלישי כדי להיכנס:'
new to osm: הגעת עכשיו ב־OpenStreetMap?
to make changes: כדי לשנות את נתוני OpenStreetMap, צריך שיהיה לך חשבון.
create account minute: נא ליצור חשבון. זה לוקח רק דקה.
account is suspended: סליחה, החשבון הזה הושעה בעקבות פעילות חשודה.<br />נא ליצור
קשר עם <a href="%{webmaster}">מנהל האתר</a> אם ברצונך לדון בזה.
auth failure: סליחה, לא ניתן להיכנס עם הפרטים האלה.
- openid missing provider: סליחה, לא התאפשר ליצור קשר עם ספק ה־OpenID שלך
- openid invalid: סליחה, ה־OpenID שלך נראה מקולקל
openid_logo_alt: כניסה עם OpenID
- openid_providers:
+ auth_providers:
openid:
title: כניסה עם OpenID
- alt: כניסה עם כתובת URL של OpenID
+ alt: כניסה עם URL של OpenID
google:
- title: ×\9b× ×\99ס×\94 ×¢×\9d ×\97ש×\91×\95×\9f ×\92×\95×\92×\9c
+ title: כניסה עם גוגל
alt: כניסה עם OpenID של גוגל
+ facebook:
+ title: כניסה עם פייסבוק
+ alt: כניסה עם חשבון פייסבוק
+ windowslive:
+ title: כניסה עם Windows Live
+ alt: כניסה עם חשבון Windows Live
yahoo:
- title: ×\9b× ×\99ס×\94 ×¢×\9d ×\97ש×\91×\95×\9f ×\99×\90×\94×\95
+ title: כניסה עם יאהו
alt: כניסה עם OpenID של יאהו
wordpress:
- title: ×\9b× ×\99ס×\94 ×¢×\9d ×\97ש×\91×\95×\9f Wordpress
- alt: כניסה עם OpenID של Wordpress
+ title: ×\9b× ×\99ס×\94 ×¢×\9d ×\95×\95ר×\93פרס
+ alt: כניסה עם OpenID של וורדפרס
aol:
title: כניסה עם AOL
alt: כניסה עם OpenID של AOL
display name: 'שם התצוגה:'
display name description: שם המשתמש שלך, שמוצג בפומבי. אפשר לשנות את זה בהעפות
שלך.
- openid: '%{logo} OpenID:'
+ external auth: 'אימות עם צד שלישי:'
password: 'ססמה:'
confirm password: 'אימות ססמה:'
- use openid: לחלופין, אפשר להשתמש ב־%{logo} OpenID כדי להיכנס
- openid no password: עם OpenID אין צורך בססמה, אבל ייתכן שבעת גישה לכלים נוספים
- ×\90×\95 ×\9cשרת ×\9b×\9f ×\99×\94×\99×\94 צ×\95ר×\9a ×\91ה.
- openid association: |-
- <p>ה־OpenID שלך עדיין אינו משויך לחשבון OpenStreetMap.</p>
+ use external auth: 'לחלופין, השתמשו בצד שלישי כדי להיכנס:'
+ auth no password: עם אימות צד שלישי אין צורך בססמה, אבל כלים נוספים או שרת יכולים
+ ×\9c×\94×\96×\93קק ×\9c×\9b×\96ה.
+ auth association: |-
+ <p>המזהה שלך עדיין לא מזוהה עם חשבון OpenStreetMap.</p>
<ul>
- <li>×\90×\9d ×\94×\92עת ×\9cר×\90ש×\95× ×\94 ×\9cÖ¾OpenStreetMap, × ×\90 ×\9c×\99צ×\95ר ×\97ש×\91×\95×\9f ×\97×\93ש ×\91×¢×\96רת ×\94×\98×\95פס ×\9c×\94×\9c×\9f..</li>
+ <li>×\90×\9d ×\94×\92עת רק ×¢×\9bש×\99×\95 ×\9cÖ¾OpenStreetMap, × ×\90 ×\9c×\99צ×\95ר ×\97ש×\91×\95×\9f ×\97×\93ש ×\91×\98×\95פס ×\9c×\94×\9c×\9f.</li>
<li>
- ×\90×\9d ×\9b×\91ר ×\99ש ×\9c×\9a ×\97ש×\91×\95×\9f, ×\90פשר ×\9c×\94×\99×\9b× ×¡ ×\90×\9c×\99×\95
- ×\91×\90×\9eצע×\95ת ש×\9d ×\9eשת×\9eש ×\95סס×\9e×\94 ×\95×\90×\96 ×\9cש×\99×\99×\9a ×\90ת ×\94×\97ש×\91×\95×\9f ×\94×\96×\94
- ×\9cÖ¾OpenID ש×\9c×\9a בהגדרות המשתמש שלך.
+ ×\90×\9d ×\9b×\91ר ×\99ש ×\9c×\9a ×\97ש×\91×\95×\9f, ×\90פשר ×\9c×\94×\99×\9b× ×¡ ×\9c×\97ש×\91×\95×\9f ש×\9c×\9a
+ ×\91×\90×\9eצע×\95ת ש×\9d ×\94×\9eשת×\9eש ×\95×\94סס×\9e×\94 ש×\9c×\9a ×\95×\90×\96 ×\9cש×\99×\99×\9a ×\90ת ×\94×\97ש×\91×\95×\9f ש×\9c×\9a
+ ×¢×\9d ×\94×\9e×\96×\94×\94 בהגדרות המשתמש שלך.
</li>
</ul>
continue: הרשמה
current email address: 'כתובת דוא״ל נוכחית:'
new email address: 'כתובת דוא״ל חדשה:'
email never displayed publicly: (לעולם לא מוצגת בפומבי)
+ external auth: 'אימות חיצוני:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: מה זה?
public editing:
תהיה לך אפשרות להתחיל למפות.
press confirm button: נא ללחוץ על כפתור האישור כדי להפעיל את חשבונך.
button: אישור
+ success: חשבונך אושר, תודה שנרשמת!
already active: החשבון הזה כבר אושר.
unknown token: נראה שקוד האישור הזה פג או שאינו קיים.
reconfirm_html: אם ברצונך לקבל שוב מכתב אימות, <a href="%{reconfirm}">נא ללחוץ
press confirm button: נא ללחוץ על כפתור האישור להלן כדי לאשר את כתובת הדוא״ל
החדשה.
button: אישור
- success: ×\9bת×\95×\91ת ×\94×\93×\95×\90×´×\9c ש×\9c×\9a ×\90×\95שר×\94, ת×\95×\93×\94 ×\94ר×\99ש×\95×\9d!
+ success: ש×\99× ×\95×\99 ×\9bת×\95×\91ת ×\94×\93×\95×\90×´×\9c ש×\9c×\9a ×\90×\95שר!
failure: כתובת הדוא״ל שלך כבר אושרה באסימון הזה.
+ unknown_token: קוד האישור פג או אינו קיים.
set_home:
flash success: מיקום ראשי נשמר בהצלחה
go_public:
החלטה זו תיבחן על־ידי מנהל מערכת בתוך זמן קצר, או
באפשרותך לפנות אל %{webmaster} אם ברצונך לדון בזה.
</p>
+ auth_failure:
+ connection_failed: התחברות לספק אימות נכשלה
+ invalid_credentials: נתוני הזדהות בלתי־תקינים
+ no_authorization_code: אין קוד כניסה
+ unknown_signature_algorithm: אלגוריתם חתימה בלתי־ידוע
+ invalid_scope: טווח בלתי־תקין
user_role:
filter:
not_an_administrator: רק מפעילים יכולים לבצע ניהול תפקידים ואין לך הרשאת מפעיל.
heading: החשבון של %{block_on} נחסם על־ידי %{block_by}
time_future: תסתיים בעוד %{time}
time_past: הסתיימה לפני %{time}
+ created: נוצר
+ ago: לפני %{time}
status: סטטוס
show: הצגה
edit: עריכה
link: קישור או HTML
long_link: קישור
short_link: קישור קצר
+ geo_uri: URI גאוגרפי
embed: HTML
custom_dimensions: הגדרת ממדים בהתאמה אישית
format: 'תסדיר:'
comment_and_resolve: להגיב ולפתור
comment: להגיב
edit_help: יש להזיז את המפה ולהתמקד על מיקום שברצונך לערוך ואז ללחוץ כאן.
+ directions:
+ engines:
+ graphhopper_bicycle: באופניים (GraphHopper)
+ graphhopper_foot: ברגל (GraphHopper)
+ mapquest_bicycle: באופניים (MapQuest)
+ mapquest_car: במכונית (MapQuest)
+ mapquest_foot: ברגל (MapQuest)
+ osrm_car: במכונית (ORSM)
+ directions: כיוונים
+ distance: מרחק
+ errors:
+ no_route: לא מצאנו נתיב שמחבר בין שני המקומות האלה.
+ no_place: סליחה – לא מצאנו את המקום הזה.
+ instructions:
+ continue_without_exit: להמשיך על %{name}
+ slight_right_without_exit: קצת ימינה אל %{name}
+ turn_right_without_exit: לפנות ימינה אל %{name}
+ sharp_right_without_exit: פנייה חדה ימינה אל %{name}
+ uturn_without_exit: פניית פרסה על %{name}
+ sharp_left_without_exit: פנייה חדה שמאלה אל %{name}
+ turn_left_without_exit: פנייה שמאלה אל %{name}
+ slight_left_without_exit: קצת שמאלה אל %{name}
+ via_point_without_exit: (דרך נקודה)
+ follow_without_exit: להמשיך על %{name}
+ roundabout_without_exit: בכיכר לקחת את %{name}
+ leave_roundabout_without_exit: לצאת מהכיכר – %{name}
+ stay_roundabout_without_exit: להישאר על הכיכר – %{name}
+ start_without_exit: להתחיל בסוף של %{name}
+ destination_without_exit: הגעת ליעד
+ against_oneway_without_exit: לנסוע נגד כיוון התנועה על %{name}
+ end_oneway_without_exit: סוף החד־סטרי על %{name}
+ roundabout_with_exit: בכיכר צא ביציאה %{exit} אל %{name}
+ unnamed: ללא שם
+ courtesy: הכיוונים באדיבות %{link}
+ time: זמן
query:
node: צומת
way: דרך
# Author: Nemo bis
# Author: Phidrho
# Author: Roberta F.
+# Author: Ruila
# Author: SpeedyGonsales
+# Author: Teoo3
---
hr:
time:
feed:
title: Changeset %{id}
title_comment: Changeset %{id} - %{comment}
+ discussion: Razgovor
node:
title: 'Točka: %{name}'
history_title: 'Povijest točke: %{name}'
reopened_by_anonymous: Ponovno aktivirano anonimno <abbr title='%{exact_time}'>prije
%{when}</abbr>
hidden_by: Sakrio/la %{user} <abbr title='%{exact_time}'>prije %{when}</abbr>
+ query:
+ nearby: Obližnje značajke
changeset:
changeset_paging_nav:
showing_page: Stranica %{page}
primary: Državna cesta
primary_link: Državna cesta
raceway: Trkalište
- residential: Ulica
+ residential: Ulica stanovanja
road: Cesta
secondary: Županijska cesta
secondary_link: Županijska cesta
archaeological_site: Arheološko nalazište
battlefield: Bojno polje
boundary_stone: Granični kamen
- building: Zgrada
+ building: Povijesna zgrada
castle: Dvorac
church: Crkva
citywalls: Gradske zidine
preserved: Sačuvana pruga
spur: Pruga
station: Željeznički kolodvor
- subway: Podzemna - stanica
+ subway: Podzemna željeznica
subway_entrance: Podzemna - ulaz
switch: Skretnica
tram: Tramvaj
results:
no_results: Nisu nađeni rezultati
more_results: Više rezultata
- distance:
- one: oko 1km
- zero: manje od 1km
- other: oko %{count}km
- direction:
- south_west: jugozapado
- south: južno
- south_east: jugoistočno
- east: istočno
- north_east: sjeveroistočno
- north: sjeverno
- north_west: sjeverozapadno
- west: zapadno
layouts:
logo:
alt_text: OpenStreetMap logotip
legal_babble:
title_html: Autorska prava i Dozvola
intro_1_html: |-
- OpenStreetMap sadrži <i>slobodne podatke</i>, licencirane pod licencom: <a
- href="http://opendatacommons.org/licenses/odbl/">"Open Data
- Commons Open Database License"</a> (ODbL).
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> sadrži <i>otvorene podatke</i>, licencirane pod <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data
+ Commons Open Database License</a> (ODbL) licencom od strane <a
+ href="http://osmfoundation.org/">OpenStreetMap zaklade</a> (OSMF).
intro_2_html: Slobodni ste kopirati, distribuirati, prenositi i adaptirati naše
podatke, sve dok navodite OpenStreetMap i njegove doprinositelje kao izvor.
Ako izmijenite ili nadogradite naše podatke, možete distribuirati rezultate
attribution_example:
title: Primjer doprinosa
more_title_html: Više o
- more_1_html: Pročitaj više o korištenju naših podataka i kako iskazati zasluge
- na <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal FAQ</a>.
+ more_1_html: |-
+ Pročitaj više o korištenju naših podataka i kako iskazati zasluge na <a
+ href="http://osmfoundation.org/Licence">OSMF Licence stranici</a> i zajednici <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal
+ FAQ</a>.
more_2_html: |-
Iako su podaci karte OpenStreetMap slobodni podaci, ne možemo pružiti besplatni API (aplikacijsko programsko sučelje) za razvojne inženjere treće strane.
Vidi naš <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API Usage Policy</a>,
help_page:
welcome:
title: Dobrodošao/la na OSM
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Hr:Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
display name: 'Korisničko ime:'
display name description: Javno prikazano korisničko ime. Možete ga promjeniti
i kasnije u postavkama.
- openid: '%{logo} OpenID:'
password: 'Lozinka:'
confirm password: 'Potvrdi lozinku:'
continue: Otvori račun
new email address: 'Nova E-mail adresa:'
email never displayed publicly: (nikada se ne prikazuje javno)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: što je ovo?
public editing:
introduction_1: Poslali smo ti potvrdni email.
press confirm button: Pritisni potvrdi da bi aktivirali svoj korisnički račun.
button: Potvrdi
+ success: Tvoj račun je potvrđen , hvala na uključenju!
already active: Ovaj račun je već potvrđen.
unknown token: Taj potvrdni kôd je istekao ili ne postoji.
confirm_resend:
heading: Potvrdi promjenu email adrese.
press confirm button: Pritsni potvrdno dugme ispod i potvrdi novu email adresu.
button: Potvrdi
- success: Potvrđena je vaša email adresa, hvala za priključenje!
+ success: Promjena email adrese je potvrđena!
failure: Email adresa je već potvrđena s ovim token-om.
set_home:
flash success: Lokacija doma uspješno snimljena.
map_data_zoom_in_tooltip: Povećaj prikaz da vidiš podatke karte
notes:
new:
- intro: Kako bi poboljšao/la kartu, informacije koje uneseš su prikazane drugim
- doprinositeljima karte, zato jasno opiši nedostatak u komentaru i precizno
- označi mjesto pomičući oznaku tvoje bilješke na točnu poziciju.
+ intro: Primjetili ste grešku ili nedostatak nečega? Javite ostalim kartografima
+ kako bismo to ispravili. Stavite oznaku na pravo mjesto i dodajte bilješku
+ s opisom problema. (Molimo ne unašajte osobne podatke ili podatke s karata
+ s autorskim pravima ili lista direktorija.)
add: Dodaj bilješku
show:
anonymous_warning: Ova bilješka sadrži komentare anonimnih korisnika koje
results:
no_results: Žane wuslědki namakane
more_results: Dalše wuslědki
- distance:
- one: něhdźe 1 km
- zero: mjenje hač 1 km
- other: něhdźe %{count} km
- direction:
- south_west: juhozapad
- south: juh
- south_east: juhowuchod
- east: wuchod
- north_east: sewjerowuchod
- north: sewjer
- north_west: sewjerozapad
- west: zapad
layouts:
logo:
alt_text: OpenStreetMap logo
register now: Nětko registrować
with username: 'Maš hižo konto pola OpenStreetMap? Prošu přizjew so z wužiwarskim
mjenom a hesłom:'
- with openid: 'Hewak wužij prošu swój OpenID, zo by so přizjewił:'
new to osm: Nowy w OpenStreetMap?
to make changes: Zo by daty OpenStreetMap změnił, dyrbiš konto měć.
create account minute: Załož konto. Traje jenož chwilku.
/>Stajće so prošu z <a href="%{webmaster}">webmasterom</a> do zwiska, jeli
chceš wo tym diskutować.
auth failure: Bohužel přizjewjenje z tutymi podaćemi móžno njeje.
- openid missing provider: Bohužel njemóžachmy z twojim OpenID-poskićowarjom zwjazać.
- openid invalid: Zda so, zo twój OpenID je njepłaćiwy
openid_logo_alt: Z OpenID přizjewić
- openid_providers:
- openid:
- title: Přizjewjenje z OpenID
- alt: Z OpenID-URL přizjewić
- google:
- title: Přizjewjenje z Google
- alt: Z OpenID z Google přizjewić
- yahoo:
- title: Z Yahoo přizjewić
- alt: Z OpenID z Yahoo přizjewić
- wordpress:
- title: Z Wordpress přizjewić
- alt: Z OpenID z Wordpress přizjewić
- aol:
- title: Z AOL přizjewić
- alt: Z OpenID z AOL přizjewić
logout:
title: Wotzjewić
heading: Z OpenStreetMap wotzjewić
display name: 'Wužiwarske mjeno:'
display name description: Sy wužiwarske mjeno zjawnje pokazał. Móžeš to pozdźišo
w nastajenjach změnić.
- openid: '%{logo} OpenID:'
password: 'Hesło:'
confirm password: 'Hesło wobkrućić:'
- use openid: Alternatiwnje OpenID z %{logo} přizjewić
- openid no password: Za OpenID hesko trěbne njeje, ale někotre přidatne nastroje
- móhli sej hesło wužadać.
- openid association: |-
- <p>Twój OpenID hišće njeje zwjazany z kontom OpenStreetMap.</p>
- <ul>
- <li>Jeli sy nowy w OpenStreetMap, załož nowe konto z pomocu slědowaceho formulara.</li>
- <li>
- Jeli maš hižo konto, móžeš so z wužiwarskim mjenom a hesłom přizjewić a potom konto ze swojim OpenID w swojich wužiwarskich nastajenjach zwjazać.
- </li>
- </ul>
continue: Registrować
terms accepted: Dźakujemy so, zo sy nowe wuměnjenja za sobuskutkowarjow akceptował!
terms declined: Wobžarujemy, zo sy so rozsudźił, nowe wužiwarske wuměnjenja
new email address: 'Nowa e-mejlowa adresa:'
email never displayed publicly: (njeje ženje zjawnje widźomna)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Što to je?
public editing:
press confirm button: Klikni deleka na wobkrućenske tłóčatko, zo by swoje konto
aktiwizował.
button: Wobkrućić
+ success: Twoje konto bu wobkrućene, dźakujemy so za registrowanje!
already active: Tute konto bu hižo wobkrućene.
unknown token: Wobkrućenski kod je spadnjeny abo njeeksistuje.
reconfirm_html: Jeli dyrbiš nam wobkrućensku e-mejlku znowa pósłać, <a href="%{reconfirm}">klikń
# Author: Misibacsi
# Author: Nemo bis
# Author: R-Joe
+# Author: Ruila
# Author: Samat
# Author: Sucy
# Author: Tacsipacsi
archaeological_site: Régészeti lelőhely
battlefield: Csatamező
boundary_stone: Határkő
- building: Épület
+ building: Történelmi épület
castle: Vár
church: Templom
citywalls: Városfal
wood: Erdő
office:
accountant: Könyvelő
+ administrative: Admininsztrálás
architect: Építész
company: Cég
employment_agency: Foglalkoztatási Ügynökség
results:
no_results: Nem találhatók eredmények
more_results: További eredmények
- distance:
- one: kb. 1 km
- zero: kevesebb mint 1 km
- other: kb. %{count} km
- direction:
- south_west: délnyugatra
- south: délre
- south_east: délkeletre
- east: keletre
- north_east: északkeletre
- north: északra
- north_west: északnyugatra
- west: nyugatra
layouts:
logo:
alt_text: OpenStreetMap logó
partners_bytemark: Bytemark Hosting
partners_partners: partnerek
osm_offline: Az OpenStreetMap-adatbázis jelenleg offline, miközben alapvető adatbázis-karbantartási
- munkát végzeznek.
+ munkát végeznek.
osm_read_only: Az OpenStreetMap-adatbázis jelenleg csak olvasható, miközben alapvető
- adatbázis-karbantartási munkát végzeznek.
+ adatbázis-karbantartási munkát végeznek.
donate: Támogasd az OpenStreetMapot a Hardverfrissítési Alapba történő %{link}sal.
help: Súgó
about: Névjegy
welcome:
url: /welcome
title: Üdvözlünk az OSM-en
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Hu:Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
register now: Regisztrálj most
with username: 'Már van OpenStreetMap fiókod? Jelentkezz be a felhasználóneveddel
és jelszavaddal:'
- with openid: 'A bejelentkezéshez az OpenID azonosítódat is használhatod:'
new to osm: Új vagy az OpenStreetMapnál?
to make changes: Ahhoz, hogy módosíthasd az OpenStreetMap-adatokat, rendelkezned
kell egy felhasználói fiókkal.
miatt.<br>Lépj kapcsolatba ezen a címen: <a href="%{webmaster}">a webmasterrel</a> a
kérdés tisztázásához.'
auth failure: Sajnálom, ilyen adatokkal nem tudsz bejelentkezni.
- openid missing provider: Sajnos nem sikerült kapcsolódni az OpenID szolgáltatódhoz
- openid invalid: Sajnos úgy tűnik, hogy az OpenID azonosítód hibás
openid_logo_alt: Bejelentkezés egy OpenID-vel
- openid_providers:
+ auth_providers:
openid:
title: Bejelentkezés OpenID-vel
- alt: Bejelentkezés egy OpenID URL-lel
- google:
- title: Bejelentkezés Google-lel
- alt: Bejelentkezés egy Google OpenID-vel
yahoo:
title: Bejelentkezés Yahoo-val
- alt: Bejelentkezés egy Yahoo OpenID-vel
- wordpress:
- title: Bejelentkezés Wordpress-szel
- alt: Bejelentkezés egy Wordpress OpenID-vel
aol:
title: Bejelentkezés AOL-lal
- alt: Bejelentkezés egy AOL OpenID-vel
logout:
title: Kijelentkezés
heading: Kijelentkezés az OpenStreetMapból
display name: 'Megjelenítendő név:'
display name description: A nyilvánosan megjelenített felhasználóneved. A beállításaidban
később megváltoztathatod.
- openid: '%{logo} OpenID:'
password: 'Jelszó:'
confirm password: 'Jelszó megerősítése:'
- use openid: A bejelentkezéshez használhatod az %{logo} OpenID-t is.
- openid no password: Az OpenID-vel nincs szükség jelszóra, de szükség lehet néhány
- többleteszközre vagy szerverre.
- openid association: |-
- <p>Az OpenID azonosítód még nincs hozzákapcsolva egy OpenStreetMap fiókhoz.</p>
- <ul>
- <li>Ha még új vagy az OpenStreetMapnál, hozz létre egy új fiókot az alábbi űrlap használatával.</li>
- <li>
- Ha már rendelkezel fiókkal, felhasználóneved és jelszavad
- használatával bejelentkezhetsz a fiókodba, majd a felhasználói
- beállításoknál hozzákapcsolhatod azt az OpenID-hez.
- </li>
- </ul>
continue: Regisztráció
terms accepted: Köszönjük, hogy elfogadtad az új hozzájárulási feltételeket!
terms declined: Sajnáljuk, hogy úgy döntöttél, nem fogadod el az új hozzájárulási
new email address: 'Új e-mail cím:'
email never displayed publicly: (soha nem jelenik meg nyilvánosan)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: mi ez?
public editing:
press confirm button: Felhasználói fiókod megerősítéséhez nyomd meg az alábbi
megerősítés gombot.
button: Megerősítés
+ success: Felhasználói fiókod megerősítve, köszönjük a regisztrációt!
already active: Ez a fiók már megerősítésre került.
unknown token: Ez a megerősítési kód lejárt vagy nem létezik.
reconfirm_html: A jóváhagyó link újraküldéséhez <a href="%{reconfirm}">kattints
way_paginated: Vias (%{x}-%{y} de %{count})
relation: Relationes (%{count})
relation_paginated: Relationes (%{x}-%{y} de %{count})
+ comment: Commentos (%{count})
+ hidden_commented_by: Commento celate de %{user} <abbr title='%{exact_time}'>%{when}
+ retro</abbr>
+ commented_by: Commento de %{user} <abbr title='%{exact_time}'>%{when} retro</abbr>
changesetxml: XML del gruppo de modificationes
osmchangexml: XML osmChange
feed:
title: Gruppo de modificationes %{id}
title_comment: Gruppo de modificationes %{id} - %{comment}
+ join_discussion: Aperi session pro unir te al discussion
+ discussion: Discussion
node:
title: 'Nodo: %{name}'
history_title: 'Historia del nodo: %{name}'
reopened_by_anonymous: Reactivate per un anonymo <abbr title='%{exact_time}'>%{when}
retro</abbr>
hidden_by: Celate per %{user} <abbr title='%{exact_time}'>%{when} retro</abbr>
+ query:
+ title: Cercar objectos proxime
+ introduction: Clicca sur le carta pro cercar elementos a proximitate.
+ nearby: Objectos proxime
+ enclosing: Objectos inglobante
changeset:
changeset_paging_nav:
showing_page: Pagina %{page}
timeout:
sorry: Le lista de gruppos de modificationes que tu requestava tardava troppo
de tempore pro esser recuperate.
+ rss:
+ title_all: Discussion sur le gruppo de modificationes OpenStreetMap
+ title_particular: Discussion sur le gruppo de modificationes OpenStreetMap №
+ %{changeset_id}
+ comment: Nove commento sur le gruppo de modificationes № %{changeset_id} per
+ %{author}
+ commented_at_html: Actualisate %{when} retro
+ commented_at_by_html: Actualisate %{when} retro per %{user}
+ full: Discussion complete
diary_entry:
new:
title: Nove entrata de diario
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Telepherico
chair_lift: Telesedia
drag_lift: Teleski
+ gondola: Telecabina
station: Station de telecabina
aeroway:
aerodrome: Aerodromo
taxiway: Via de circulation pro aviones
terminal: Terminal
amenity:
+ animal_shelter: Refugio pro animales
arts_centre: Centro artistic
atm: Cassa automatic
bank: Banca
bicycle_parking: Stationamento pro bicyclettas
bicycle_rental: Location de bicyclettas
biergarten: Terrassa
+ boat_rental: Location de barcas
brothel: Bordello
bureau_de_change: Officio de cambio
bus_station: Station de autobus
car_wash: Lavage de automobiles
casino: Casino
charging_station: Station de cargamento
+ childcare: Guarda de infantes
cinema: Cinema
clinic: Clinica
+ clock: Horologio
college: Schola superior
community_centre: Centro communitari
courthouse: Tribunal
food_court: Zona de restaurantes
fountain: Fontana
fuel: Carburante
+ gambling: Joco de hasardo
grave_yard: Cemeterio
gym: Centro de fitness / Gymnasio
health_centre: Centro de sanitate
library: Bibliotheca
market: Mercato
marketplace: Mercato
+ monastery: Monasterio
+ motorcycle_parking: Parking a motocyclo
nightclub: Club nocturne
nursery: Sala recreative pro parve infantes
nursing_home: Casa de convalescentia
primary_link: Via principal
proposed: Strata proponite
raceway: Circuito
- residential: Residential
+ residential: Strata residential
rest_area: Area de reposo
road: Via
secondary: Via secundari
tertiary: Via tertiari
tertiary_link: Via tertiari
track: Pista
+ traffic_signals: Lumines de traffico
trail: Pista
trunk: Via national
trunk_link: Via national
unclassified: Via non classificate
unsurfaced: Cammino de terra
+ "yes": Cammino
historic:
archaeological_site: Sito archeologic
battlefield: Campo de battalia
boundary_stone: Lapide de frontiera
- building: Edificio
+ building: Edificio historic
castle: Castello
church: Ecclesia
citywalls: Muro del citate
results:
no_results: Nulle resultato trovate
more_results: Plus resultatos
- distance:
- one: circa 1 km
- zero: minus de 1 km
- other: circa %{count} km
- direction:
- south_west: sud-west
- south: sud
- south_east: sud-est
- east: est
- north_east: nord-est
- north: nord
- north_west: nord-west
- west: west
layouts:
logo:
alt_text: Logo de OpenStreetMap
register now: Registrar ora
with username: 'Ha tu jam un conto de OpenStreetMap? Per favor aperi session
con tu nomine de usator e contrasigno:'
- with openid: 'Es anque possibile aperir session con tu OpenID:'
new to osm: Nove a OpenStreetMap?
to make changes: Pro facer modificationes in le datos de OpenStreetMap, es necessari
haber un conto.
suspecte.<br />Per favor contacta le <a href="%{webmaster}">webmaster</a>
si tu vole discuter isto.
auth failure: Pardono, non poteva aperir un session con iste detalios.
- openid missing provider: Infortunatemente nos non poteva contactar tu providitor
- de OpenID.
- openid invalid: Infortunatemente tu OpenID pare esser mal formate.
openid_logo_alt: Aperir session con OpenID
- openid_providers:
- openid:
- title: Aperir session con OpenID
- alt: Aperir session con un URL de OpenID
- google:
- title: Aperir session con Google
- alt: Aperir session con un OpenID de Google
- yahoo:
- title: Aperir session con Yahoo
- alt: Aperir session con un OpenID de Yahoo
- wordpress:
- title: Aperir session con Wordpress
- alt: Aperir session con un OpenID de Wordpress
- aol:
- title: Aperir session con AOL
- alt: Aperir session con un OpenID de AOL
logout:
title: Clauder session
heading: Clauder le session de OpenStreetMap
contact_webmaster: Per favor contacta le <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
pro arrangiar le creation de un conto. Nos tentara tractar vostre requesta
le plus rapidemente possibile.
+ about:
+ header: Libere e modificabile
+ html: |-
+ <p>A differentia de altere cartas, OpenStreetMap es completemente create per gente como tu,
+ e cata uno es libere de modificar, actualisar, discargar e usar lo.</p>
+ <p>Crea un conto pro comenciar a contribuer. Nos te inviara un e-mail pro confirmar tu conto.</p>
license_agreement: Quando tu confirma tu conto, tu debera acceptar le <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">conditiones
de contributor</a>.
email address: 'Adresse de e-mail:'
display name: 'Nomine public:'
display name description: Tu nomine de usator monstrate publicamente. Tu pote
cambiar lo plus tarde in le preferentias.
- openid: 'OpenID de %{logo}:'
+ external auth: 'Authentication per tertios:'
password: 'Contrasigno:'
confirm password: 'Confirmar contrasigno:'
- use openid: Alternativemente, usa un OpenID de %{logo} pro aperir session
- openid no password: Con un OpenID, un contrasigno non es necessari, ma certe
- additional instrumentos o servitores pote totevia requirer un contrasigno.
- openid association: |-
- <p>Iste OpenID non es ancora associate a un conto de OpenStreetMap.</p>
+ use external auth: Alternativemente, usa un tertio pro aperir session
+ auth no password: Con authentication per tertio, un contrasigno non es necessari,
+ ma alcun instrumentos o servitores supplementari pote totevia necessitar un.
+ auth association: |-
+ <p>Tu ID non es ancora associate con un conto de OpenStreetMap.</p>
<ul>
- <li>Si tu es nove a OpenStreetMap, per favor crea un conto usante le formulario sequente.</li>
+ <li>Si tu es nove in OpenStreetMap, crea un nove contro con le formulario ci-infra.</li>
<li>
- Si tu ha jam un conto, tu pote aperir session usante
- tu nomine de usator e contrasigno, e postea associar le
- conto a tu OpenID in tu configurationes de usator.
+ Si tu ha jam un conto, tu pote aperir session
+ con tu nomine de usator e contrasigno e alora associar le conto
+ a tu ID in tu preferentias de usator.
</li>
</ul>
- continue: Continuar
+ continue: Crear conto
terms accepted: Gratias pro acceptar le nove conditiones de contributor!
terms declined: Nos regretta que tu ha decidite de non acceptar le nove Conditiones
de contributor. Pro plus informationes, per favor vide <a href="%{url}">iste
body: Non existe un usator con le nomine %{user}. Per favor verifica le orthographia,
o pote esser que le ligamine que tu sequeva es incorrecte.
view:
- my diary: mi diario
+ my diary: Mi diario
new diary entry: nove entrata de diario
- my edits: mi modificationes
- my traces: mi tracias
- my notes: mi notas de carta
- my settings: mi configurationes
- my comments: mi commentos
+ my edits: Mi modificationes
+ my traces: Mi tracias
+ my notes: Mi notas
+ my messages: Mi messages
+ my profile: Mi profilo
+ my settings: Mi preferentias
+ my comments: Mi commentos
oauth settings: configuration oauth
- blocks on me: blocadas super me
- blocks by me: blocadas per me
- send message: inviar message
- diary: diario
- edits: modificationes
- traces: tracias
- notes: notas de carta
- remove as friend: remover amico
- add as friend: adder amico
+ blocks on me: Blocadas concernente me
+ blocks by me: Blocadas facite per me
+ send message: Inviar message
+ diary: Diario
+ edits: Modificationes
+ traces: Tracias
+ notes: Notas de carta
+ remove as friend: Remover amico
+ add as friend: Adder amico
mapper since: 'Cartographo depost:'
ago: (%{time_in_words_ago} retro)
ct status: 'Conditiones de contributor:'
moderator: Revocar accesso de moderator
block_history: blocadas recipite
moderator_history: blocadas date
- comments: commentos
+ comments: Commentos
create_block: blocar iste usator
activate_user: activar iste usator
deactivate_user: disactivar iste usator
current email address: 'Adresse de e-mail actual:'
new email address: 'Adresse de e-mail nove:'
email never displayed publicly: (nunquam monstrate publicamente)
+ external auth: 'Authentication externe:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: que es isto?
public editing:
successo. Tu recipera in e-mail un nota pro confirmar tu nove adresse de e-mail.
flash update success: Informationes del usator actualisate con successo.
confirm:
- heading: Confirmar un conto de usator
+ heading: Verifica tu e-mail!
+ introduction_1: Nos te ha inviate un message de confirmation.
+ introduction_2: Confirma tu conto con un clic sur le ligamine in le message
+ e tu potera comenciar a cartographiar.
press confirm button: Preme le button de confirmation ci infra pro activar tu
conto.
button: Confirmar
+ success: Tu conto ha essite confirmate, gratias pro inscriber te!
already active: Iste conto ha ja essite confirmate.
- unknown token: Iste indicio non pare exister.
+ unknown token: Iste codice de confirmation ha expirate o non existe.
+ reconfirm_html: Pro reciper un altere message de confirmation, <a href="%{reconfirm}">clicca
+ hic</a>.
confirm_resend:
success: Nos ha inviate un nove message de confirmation a %{email} e si tosto
que tu confirma le conto, tu potera comenciar a cartographiar.<br /><br />Si
press confirm button: Preme le button Confirmar ci infra pro confirmar tu nove
adresse de e-mail.
button: Confirmar
- success: Tu adresse de e-mail ha essite confirmate, gratias pro inscriber te!
+ success: Le cambio del adresse de e-mail ha essite confirmate.
failure: Un adresse de e-mail ha ja essite confirmate con iste indicio.
+ unknown_token: Iste codice de confirmation ha expirate o non existe.
set_home:
flash success: Position de origine confirmate con successo
go_public:
Iste decision essera revidite per un administrator tosto, o
tu pote contactar le %{webmaster} si tu desira discuter isto.
</p>
+ auth_failure:
+ connection_failed: Le connexion al fornitor de authentication ha fallite
+ invalid_credentials: Datos de authentication non valide
+ no_authorization_code: Nulle codice de autorisation
+ unknown_signature_algorithm: Algorithmo de signatura non cognoscite
+ invalid_scope: Ambito non valide
user_role:
filter:
not_an_administrator: Solmente administratores pote gerer le rolos de usator,
heading: '%{block_on} blocate per %{block_by}'
time_future: Expira in %{time}
time_past: Expirava %{time} retro
+ created: Create
+ ago: '%{time} retro'
status: Stato
show: Monstrar
edit: Modificar
description_area: Un lista de notas reportate, commentate o claudite in tu area
[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
description_item: Syndication RSS pro le nota %{id}
+ opened: nove nota (a presso de %{place})
+ commented: nove commento (a presso de %{place})
closed: nota claudite (a presso de %{place})
+ reopened: nota reactivate (a presso de %{place})
entry:
comment: Commento
full: Nota complete
last_changed: Ultime modification
ago_html: '%{when} retro'
javascripts:
+ close: Clauder
+ share:
+ title: Divider
+ cancel: Cancellar
+ image: Imagine
+ link: Ligamine o HTML
+ long_link: Ligamine
+ short_link: Ligamine curte
+ geo_uri: Geo URI
+ embed: HTML
+ custom_dimensions: Personalisar dimensiones
+ format: 'Formato:'
+ scale: 'Scala:'
+ image_size: Le imagine monstrara le strato standard in
+ download: Discargar
+ short_url: URL curte
+ include_marker: Includer marcator
+ center_marker: Centrar le carta sur le marcator
+ paste_html: Colla HTML pro incorporar in sito web
+ view_larger_map: Vider carta plus grande
+ key:
+ title: Legenda
+ tooltip: Legenda
+ tooltip_disabled: Le legenda es disponibile solmente pro le strato Standard
map:
+ zoom:
+ in: Zoom avante
+ out: Zoom retro
+ locate:
+ title: Monstrar mi position
+ popup: Tu es intra {distance} {unit} de iste puncto
base:
standard: Standard
cycle_map: Carta cyclista
transport_map: Carta de transporto
mapquest: MapQuest Open
+ hot: Humanitario
+ layers:
+ header: Stratos de carta
+ notes: Notas de carta
+ data: Datos de carta
+ overlays: Activar superpositiones pro resolver problemas in le carta
+ title: Stratos
+ copyright: © <a href='%{copyright_url}'>contributores de OpenStreetMap</a>
+ donate_link_text: <a class='donate-attr' href='%{donate_url}'>Facer un donation</a>
site:
edit_tooltip: Modificar le carta
edit_disabled_tooltip: Face zoom avante pro modificar le carta
createnote_tooltip: Adder un nota al carta
createnote_disabled_tooltip: Face zoom avante pro adder un nota al carta
+ map_notes_zoom_in_tooltip: Face zoom avante pro vider le notas del carta
+ map_data_zoom_in_tooltip: Face zoom avante pro vider le datos del carta
+ queryfeature_tooltip: Cercar objectos proxime
+ queryfeature_disabled_tooltip: Face zoom avante pro cercar objectos a proximitate
+ changesets:
+ show:
+ comment: Commento
+ subscribe: Subscriber
+ unsubscribe: Cancellar subscription
+ hide_comment: celar
+ unhide_comment: revelar
notes:
new:
- intro: Pro meliorar le carta, le information que tu scribe es monstrate a
- altere cartographos. Dunque, per favor sia tanto descriptive e precise como
- possibile quando tu positiona le marcator e scribe tu nota hic infra.
+ intro: Tu ha trovate un error? Qualcosa manca? Face lo saper al altere cartographos
+ a fin que nos pote corriger lo. Displacia le marcator al position correcte
+ e scribe un nota pro explicar le problema. (Non entra informationes personal
+ o proveniente de cartas o catalogos sub derecto de autor.)
add: Adder nota
show:
anonymous_warning: Iste nota include commentos de usatores anonyme que debe
reactivate: Reactivar
comment_and_resolve: Commentar e resolver
comment: Commento
+ edit_help: Displacia le carta e face zoom avante in un loco que tu vole modificar,
+ postea clicca hic.
redaction:
edit:
description: Description
# Author: Emirhartato
# Author: Farras
# Author: HarryMahar
+# Author: Ilham151096
# Author: Irwangatot
# Author: Iwan Novirion
+# Author: JakArtisan
+# Author: Kenrick95
# Author: Relly Komaruzaman
# Author: Rizkiahmadz
# Author: Vasanthi
relation_member: Anggota Relasi
relation_tag: Tag Relasi
session: Sesi
- trace: Digitasi
+ trace: Jejak
tracepoint: Titik Digitasi
- tracetag: Tag Dijitasi
+ tracetag: Label Jejak
user: Pengguna
user_preference: Preferensi Pengguna
user_token: Token Pengguna
%{user}
closed_by_html: Ditutup <abbr title='%{title}'>%{time} yang lalu</abbr> oleh %{user}
version: Versi
- in_changeset: Ubahset
+ in_changeset: Set Perubahan
anonymous: Anonimitas
no_comment: (tidak ada komentar)
part_of: Bagian dari
relation: Hubungan (%{count})
relation_paginated: Hubungan (%{x}-%{y} dari %{count})
comment: Komentar %{count}
+ hidden_commented_by: Komentar tersembunyi dari %{user} <abbr title='%{exact_time}'>%{when}
+ yang lalu</abbr>
+ commented_by: Komentar dari %{user} <abbr title='%{exact_time}'>%{when} yang
+ lalu</abbr>
changesetxml: Set Perubahan XML
osmchangexml: osmChange XML
feed:
wiki_link:
key: Deskripsi halaman wiki untuk tag %{key}
tag: Deskripsi halaman wiki untuk %{key}=%{value} tag
+ wikidata_link: Item %{page} di Wikidata
wikipedia_link: Artikel %{page} di Wikipedia
telephone_link: Hubungi %{phone_number}
note:
yang lalu</abbr>
hidden_by: Disembunyikan oleh %{user} <abbr title='%{exact_time}'>%{when} yang
lalu</abbr>
+ query:
+ title: Fitur Kueri
+ introduction: Klik di peta untuk mencari fitur terdekat.
+ nearby: Fitur terdekat
+ enclosing: Fitur sekitar
changeset:
changeset_paging_nav:
showing_page: Halaman %{page}
sorry: Maaf, daftar kumpulan set perubahan yang Anda minta terlalu lama untuk
diambil.
rss:
+ title_all: Diskusi perubahan OpenStreetMap
+ title_particular: 'Diskusi perubahan OpenStreetMap nomor #%{changeset_id}'
+ comment: 'Komentar baru di perubahan #%{changeset_id} oleh %{author}'
+ commented_at_html: Diperbarui %{when} yang lalu
+ commented_at_by_html: Diperbarui %{when} yang lalu oleh %{user}
full: Diskusi penuh
diary_entry:
new:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kereta Gantung
chair_lift: Kursi Gantung
drag_lift: Angkat Tarik
+ gondola: Lift Gondola
station: Stasiun Aerialway
aeroway:
aerodrome: Lapangan Terbang
taxiway: Jalur taxi
terminal: Terminal
amenity:
+ animal_shelter: Tempat Perlindungan Hewan
arts_centre: Pusat Kesenian
atm: ATM
bank: Bank
bicycle_parking: Parkir Sepeda
bicycle_rental: Penyewaan Sepeda
biergarten: Beer Garden
+ boat_rental: Penyewaan Perahu
brothel: Bordil
bureau_de_change: Penukaran Valuta Asing
bus_station: Terminal Bus
car_wash: Tempat Cuci Mobil
casino: Kasino
charging_station: Stasiun Pengisian
+ childcare: Perawatan Anak
cinema: Bioskop
clinic: Klinik
+ clock: Jam
college: Perguruan Tinggi
community_centre: Gedung Serbaguna
courthouse: Gedung Pengadilan
food_court: Tempat Makan
fountain: Air Mancur
fuel: Stasiun Pengisian Bahan Bakar
+ gambling: Perjudian
grave_yard: Kuburan
gym: Pusat Kebugaran / Gym
health_centre: Pusat Kesehatan
library: Perpustakaan
market: Pasar
marketplace: Pasar
+ monastery: Biara
+ motorcycle_parking: Parkir Motor
nightclub: Klub Malam
nursery: Pendidikan Anak Usia Dini (PAUD)
nursing_home: Panti Jompo
office: Kantor
parking: Parkir
+ parking_entrance: Pintu Masuk Parkiran
pharmacy: Apotek
place_of_worship: Tempat Ibadah
police: Polisi
post_box: Kotak Pos
post_office: Kantor Pos
- preschool: Pra-sekolah
+ preschool: Prasekolah
prison: Penjara
pub: Pub
public_building: Bangunan Publik
social_facility: Fasilitas Sosial
studio: Studio
swimming_pool: Kolam Renang
- taxi: Taxi
+ taxi: Taksi
telephone: Telepon Umum
theatre: Teater
toilets: Toilet
veterinary: Bedah Hewan
village_hall: Balai Desa
waste_basket: Keranjang Sampah
+ waste_disposal: Tempat Pembuangan Akhir
youth_centre: Pusat Pemuda
boundary:
administrative: Batas Administratif
"yes": Jembatan
building:
"yes": Bangunan
+ craft:
+ brewery: Pabrik Bir
+ carpenter: Tukang Kayu
+ electrician: Tukang Listrik
+ gardener: Tukang Kebun
+ painter: Tukang Cat
+ photographer: Fotografer
+ plumber: Tukang Pipa
+ shoemaker: Perajin Sepatu
+ tailor: Penjahit
+ "yes": Toko Kerajinan
emergency:
+ ambulance_station: Pos Ambulans
+ defibrillator: Alat Pacu Jantung
+ landing_site: Pintu Masuk Darurat
phone: Telepon Darurat
highway:
+ abandoned: Jalan Bebas Hambatan Usang
bridleway: Jalan Tanah
bus_guideway: Jalur Bus Terpandu
bus_stop: Halte Bus
construction: Jalan raya sedang dalam perbaikan
cycleway: Jalur Sepeda
+ elevator: Elevator
emergency_access_point: Titik Akses Darurat
footway: Jalan setapak
ford: Arungan
path: Jalan Setapak
pedestrian: Jalur Pejalan Kaki
platform: Peron
- primary: Jalam Primer
+ primary: Jalan Primer
primary_link: Jalan Primer
proposed: Jalan yang Diajukan
raceway: Lintasan Balap
tertiary: Jalan Tersier
tertiary_link: Jalan Tersier
track: Trek
+ traffic_signals: Lampu Lalu Lintas
trail: Jejak
- trunk: Jalan Utama Bukan Tol
+ trunk: Jalan Utama
trunk_link: Jalan Utama Bukan Tol
unclassified: Jalan Tidak Terklasifikasi
unsurfaced: Jalan Tanpa Permukaan
+ "yes": Jalan
historic:
archaeological_site: Situs arkeologi
battlefield: Medan perang
boundary_stone: Batu Pembatas
- building: Bangunan
+ building: Bangunan Bersejarah
+ bunker: Bunker
castle: Kastil
church: Gereja
+ city_gate: Gerbang Kota
citywalls: Dinding Kota
fort: Benteng
+ heritage: Situs Warisan
house: Rumah
icon: Ikon
manor: Tanah Bangsawan
memorial: Memorial
mine: Tambang
monument: Monumen
+ roman_road: Jalan Romawi
ruins: Reruntuhan
+ stone: Batu
tomb: Makam
tower: Menara
wayside_cross: Pinggir persimpangan
wayside_shrine: Kuil pinggir jalan
wreck: Rongsokan
+ junction:
+ "yes": Persimpangan
landuse:
allotments: Tanah garap
basin: Cekungan
mine: Tambang
orchard: Kebun buah-buahan
quarry: Tempat Penggalian
- railway: Rel Kereta
+ railway: Jalur Kereta Api
recreation_ground: Taman Rekreasi
reservoir: Wilayah Serapan (Reservoir)
reservoir_watershed: DAS reservoir
road: Wilayah Jalan
village_green: Desa Hijau
vineyard: Kebun anggur
+ "yes": Lahan Guna
leisure:
beach_resort: Resort Pantai
bird_hide: Tempat Observasi Burung
+ club: Klub
common: Lahan Publik
+ dog_park: Taman Anjing
fishing: Tempat Pemancingan
+ fitness_centre: Pusat Kebugaran
fitness_station: Stasiun Kebugaran
garden: Kebun
golf_course: Taman Golf
+ horse_riding: Pacuan Kuda
ice_rink: Gelanggang Es (Ice Rink)
marina: Pantai
miniature_golf: Mini Golf
pitch: Lapangan Olahraga
playground: Taman Bermain
recreation_ground: Taman Rekreasi
+ resort: Resor
sauna: Sauna
slipway: Tempat Peluncuran Kapal
sports_centre: Pusat Olahraga
swimming_pool: Kolam Renang
track: Trek Lari
water_park: Taman Air
+ "yes": Plesir
+ man_made:
+ lighthouse: Mercusuar
+ pipeline: Jalur Pipa
+ tower: Menara
+ works: Pabrik
+ "yes": Buatan Manusia
military:
airfield: Lapangan Udara Militer
barracks: Barak
fell: Tebangan
fjord: Arungan
forest: Hutan
- geyser: Mata air panas
+ geyser: Geiser
glacier: Gletser
+ grassland: Rerumputan
heath: Padang Rumpur
hill: Bukit
island: Pulau
reef: Batu Karang
ridge: Punggung Bukit
rock: Batu
+ saddle: Sadel
+ sand: Pasir
scree: Kerikil
scrub: Semak Belukar
spring: Mata Air
wood: Kayu
office:
accountant: Akuntan
+ administrative: Tata Usaha
architect: Arsitek
company: Perusahaan
employment_agency: Badan Tenaga Kerja
travel_agent: Agen Perjalanan
"yes": Kantor
place:
+ allotments: Tanah Garapan
+ block: Blok
airport: Bandara
city: Kota
country: Negara
town: Kota
unincorporated_area: Wilayah lepas
village: Desa
+ "yes": Tempat
railway:
- abandoned: Rel kereta yang diabaikan
+ abandoned: Rel Kereta Api Terbengkalai
construction: Rel kereta yang diperbaiki
- disused: Rel kereta yang bekas
+ disused: Rel Kereta Api Tak Terpakai
disused_station: Bekas Stasiun Kereta
funicular: Trem yang digerakan dengan kabel
halt: Pemberhentian kereta
spur: Sepur Kereta
station: Stasiun Kereta Api
stop: Perhentian Kereta Api
- subway: Stasiun Kereta Bawah Tanah
+ subway: Kereta api bawah tanah
subway_entrance: Pintu Masuk Kereta Bawah Tanah
switch: Titik Kereta Api
tram: Jalur Trem
insurance: Asuransi
jewelry: Toko Perhiasan
kiosk: Kios/Warung
- laundry: Binatu
- mall: Mall
+ laundry: Penatu
+ mall: Mal
market: Pasar
mobile_phone: Toko Handphone
motorcycle: Toko Sepeda Motor
"yes": Toko
tourism:
alpine_hut: Gubuk Pegunungan
+ apartment: Apartemen
artwork: Karya Seni
attraction: Atraksi
bed_and_breakfast: Penginapan untuk Tidur dan Sarapan
camp_site: Perkemahan
caravan_site: Tempat Karavan
chalet: Vila
+ gallery: Galeri
guest_house: Rumah Tamu
hostel: Hostel
hotel: Hotel
wadi: Sungai Kering
waterfall: Air Terjun
weir: Tanggul Sungai
+ "yes": Jalur Air
admin_levels:
level2: Batas Negara
level4: Batas Negara Bagian
results:
no_results: Tidak ada hasil yang ditemukan
more_results: Hasil lainnya
- distance:
- one: sekitar 1km
- zero: kurang daripada 1km
- other: about km %{count}
- direction:
- south_west: barat daya
- south: selatan
- south_east: tenggara
- east: timur
- north_east: timur laut
- north: utara
- north_west: barat laut
- west: barat
layouts:
logo:
alt_text: logo OpenStreetMap
export: Ekspor
data: Data
export_data: Ekspor Data
- gps_traces: Trek GPS
- gps_traces_tooltip: Mengatur trek GPS
+ gps_traces: Jejak GPS
+ gps_traces_tooltip: Mengatur jejak GPS
user_diaries: Catatan Harian Pengguna
user_diaries_tooltip: Lihat catatan harian pengguna
edit_with: Edit menggunakan %{editor}
donate: Dukung OpenStreetMap %{link} untuk biaya upgrade Hardware.
help: Bantuan
about: Tentang
- copyright: Hak cipta
+ copyright: Hak Cipta
community: Komunitas
community_blogs: Blog Komunitas
community_blogs_title: Blog dari anggota komunitas OpenStreetMap
foundation: Foundation (Yayasan)
- foundation_title: Yayasan OpenStreetMap
+ foundation_title: OpenStreetMap Foundation
make_a_donation:
title: Dukung OpenStreetMap dengan donasi finansial
text: Menyumbang
mapping_link: memulai pemetaan
legal_babble:
title_html: Hak Cipta & Lisensi
- intro_1_html: Data OpenStreetMap memiliki lisensi <a href="http://opendatacommons.org/licenses/odbl/">Open
- Data Commons Open Database License</a> (ODbL).
+ intro_1_html: |-
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> adalah <i>data terbuka</i>, berlisensi di bawah <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data
+ Commons Open Database License</a> (ODbL) oleh <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: |-
Anda dibebaskan untuk menyalin, mendistribusikan, mentransfer dan mengadaptasi data kami,
selama Anda menyertakan OpenStreetMap dan kontributornya. Jika anda merubah atau membangun
Commons Attribution-ShareAlike 2.0</a> lisensi (CC-BY-SA).
credit_title_html: Cara memberikan kredit pada OpenStreetMap
credit_1_html: |-
- Kami meminta anda untunk menggunakan kredit “© Kontributor OpenStreetMap
+ Kami meminta anda untuk menggunakan kredit “© Kontributor OpenStreetMap
”.
credit_2_html: Anda juga harus memperjelas bahwa data tersedia di bawah Lisensi
Database Terbuka, dan jika menggunakan tiles peta kami, kartografi berlisensi
title: Contoh atribusi
more_title_html: Mengetahui lebih lanjut
more_1_html: |-
- Baca lebih lanjut tentang menggunakan data kami, dan cara kredit kita, di <a
- href="http: wiki.openstreetmap.org/wiki/legal_faq"="">Pertanyaan Legal yang sering diajukan (FAQ)</a
- href="http:>
+ Baca lebih lanjut tentang pemakaian data kami, dan cara memberi kami kredit, di <a
+ href="http://osmfoundation.org/License">halaman lisensi OSMF</a> dan <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Pertanyaan Legal yang sering diajukan (FAQ)</a> komunitas.
more_2_html: |-
Meskipun OpenStreetMap merupakan data yang terbuka, kami tidak dapat menyediakan API peta gratis bagi pengembang (developer) pihak ketiga.
Lihat <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Kebijakan Penggunaan API</a>,
contributors_nz_html: |-
<strong>Selandia Baru</strong>: Berisi data yang bersumber dari
Land Information New Zealand. Hak cipta milik Kerajaan.
+ contributors_si_html: |-
+ <strong>Slovenia</strong>: Berisi data dari
+ <a href="http://www.gu.gov.si/en/">Surveying and Mapping Authority</a> dan
+ <a href="http://www.mkgp.gov.si/en/">Ministry of Agriculture, Forestry and Food</a>
+ (informasi publik Slovenia).
contributors_za_html: |-
<strong>Afrika Selatan</strong>: Berisi data yang bersumber dari
<a href="http://www.ngi.gov.za/">Chief Directorate:
Jika Anda percaya bahwa materi berhak cipta telah tidak tepat
ditambahkan ke OpenStreetMap database atau situs ini, silakan lihat <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">prosedur takedown</a> kami atau kirimkan file langsung pada
<a href="http://dmca.openstreetmap.org/">pengajuan halaman on-line</a>.
+ trademarks_title_html: <span id="trademarks"></span>Merek dagang
+ trademarks_1_html: OpenStreetMap dan logo kaca pembesar adalah merek dagang
+ terdaftar dari OpenStreetMap Foundation. Jika Anda memiliki pertanyaan tentang
+ penggunaan merek tersebut, silakan kirim pertanyaan Anda ke <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licensing
+ Working Group</a>.
welcome_page:
title: Selamat datang!
introduction_html: Selamat datang di OpenStreetMap, peta dunia gratis dan dapat
jalan, sungai, danau, atau bangunan.
tag_html: "Sebuah <strong>tag</strong> adalah sedikit data tentang simpul atau
jalan, seperti \nnama restoran atau batas kecepatan jalan"
+ rules:
+ title: Aturan!
questions:
title: Ada pertanyaan?
paragraph_1_html: "OpenStreetMap memiliki beberapa sumber daya untuk belajar
url: /welcome
title: Selamat datang di OSM
description: Mulailah dengan panduan cepat meliputi dasar-dasar OpenStreetMap.
+ beginners_guide:
+ title: Pedoman Pemula
+ description: Panduan yang ditunjang komunitas bagi pemula.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Ajukan pertanyaan atau mencari jawaban di situs tanya-jawab OSM
ini.
+ mailing_lists:
+ title: Daftar Alamat
+ description: Bertanya atau berdiskusi hal-hal menarik dalam daftar alamat menurut
+ berbagai topik dan daerah.
+ forums:
+ title: Forum
+ description: Pertanyaan dan diskusi bagi mereka yang lebih menyukai antarmuka
+ bergaya papan pengumuman.
+ irc:
+ title: IRC
+ description: Obrolan interaktif dalam berbagai bahasa mengenai bermacam-macam
+ topik.
+ switch2osm:
+ title: switch2osm
+ description: Bantuan untuk perusahaan dan organisasi yang beralih ke peta dan
+ layanan lain berbasis OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
- description: Telusuri wiki untuk mendalam dokumentasi OSM.
+ description: Telusuri wiki untuk dokumentasi mendalam OSM.
about_page:
next: Berikutnya
copyright_html: <span>©</span>Kontributor<br>OpenStreetMap
menggunakan \ncitra udara, perangkat GPS, dan lapangan berteknologi rendah peta
untuk memverifikasi bahwa OSM akurat dan termutakhir."
community_driven_title: Berbasis Masyarakat
+ community_driven_html: |-
+ Komunitas OpenStreetMap sangat beragam, rajin berkontribusi, dan semakin besar setiap harinya.
+ Kontributor kami terdiri dari penggemar peta, pegiat SIG, teknisi
+ yang mengurus server OSM, relawan yang memetakan kawasan terdampak bencana,
+ dan lain-lain.
+ Untuk mengetahui lebih lanjut, baca <a href='%{diary_path}'>catatan harian pengguna</a>,
+ <a href='http://blogs.openstreetmap.org/'>blog komunitas</a>, dan situs web <a href='http://www.osmfoundation.org/'>OSM Foundation</a>.
open_data_title: Buka Data
open_data_html: 'OpenStreetMap adalah <i>data terbuka</i>: Anda bebas untuk menggunakannya
untuk tujuan apapun selama Anda memberi penghargaan pada OpenStreetMap dan kontributornya.
Jika Anda mengubah atau membangun dari data dengan cara tertentu, Anda dapat
menyebarkan hasilnya hanya di bawah lisensi yang sama. Lihat <a href=''%{copyright_path}''>halaman
Hak Cipta dan Lisensi</a> untuk perinciannya.'
+ legal_html: |-
+ Situs ini dan layanan terkait lainnya dioperasikan secara resmi oleh <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF) atas nama komunitas.
+ <br>
+ Silakan <a href='http://osmfoundation.org/Contact'>menghubungi OSMF</a> jika Anda punya pertanyaan seputar lisensi, hak cipta, atau isu dan pertanyaan hukum lainnya.
partners_title: Rekan
notifier:
diary_comment_notification:
changeset_comment_notification:
greeting: Halo,
commented:
+ subject_own: '[OpenStreetMap] %{commenter} mengomentari salah satu perubahan
+ Anda'
+ subject_other: '[OpenStreetMap] %{commenter} mengomentari perubahan yang Anda
+ ikuti'
+ your_changeset: '%{commenter} meninggalkan komentar di salah satu perubahan
+ Anda pukul %{time}'
+ commented_changeset: '%{commenter} meninggalkan komentar di perubahan peta
+ pantauan Anda yang dibuat %{changeset_author} pukul %{time}'
+ partial_changeset_with_comment: dengan komentar '%{changeset_comment}'
partial_changeset_without_comment: tanpa komentar
+ details: Rincian lebuh lanjut soal perubahan ini dapat dilihat di %{url}.
message:
inbox:
title: Kotak Masuk
close: Tutup
search:
search: Pencarian
+ get_directions: Dapatkan petunjuk arah
+ get_directions_title: Dapatkan petunjuk arah antara dua tempat
+ from: Dari
+ to: Ke
where_am_i: Di mana saya?
where_am_i_title: Deskripsikan lokasi Anda saat ini menggunakan mesin pencari
submit_text: Lanjut
upload_button: Upload
help: Bantuan
trace_header:
- upload_trace: Upload trek GPS
+ upload_trace: Unggah jejak GPS
see_all_traces: Lihat semua dijitasi
- see_your_traces: Melihat dijitasi Anda
+ see_your_traces: Melihat jejak Anda
traces_waiting:
- one: 'Anda memiliki trek GPS %{count} yang menunggu untuk diupload. Harap
- pertimbangkan proses ini untuk diselesaikan sebelum meng-upload lagi, sehingga
- Anda tidak memblokir antrian untuk %{count} pengguna lain. '
- other: Anda memiliki %{count} trek GPS yang menunggu untuk diupload. Harap
- pertimbangkan proses ini untuk diselesaikan sebelum meng-upload lagi, sehingga
- Anda tidak memblokir antrian untuk %{count} pengguna lain.
+ one: Anda memiliki %{count} jejak GPS yang menunggu untuk diunggah. Harap
+ pertimbangkan proses ini untuk diselesaikan sebelum mengunggah lagi, sehingga
+ Anda tidak memblokir antrean untuk pengguna lain.
+ other: Anda memiliki %{count} jejak GPS yang menunggu untuk diunggah. Harap
+ pertimbangkan proses ini untuk diselesaikan sebelum mengunggah lagi, sehingga
+ Anda tidak memblokir antrean untuk pengguna lain.
trace_optionals:
tags: 'Tags:'
view:
- title: Melihat trek %{name}
+ title: Melihat jejak %{name}
heading: Melihat trek %{name}
pending: TERTUNDA
filename: 'Nama File:'
description: 'Deskripsi:'
tags: 'Tag:'
none: Tidak ada
- edit_track: 'Edit trek ini:'
+ edit_track: 'Sunting jejak ini:'
delete_track: Hapus trek ini
- trace_not_found: Trek tidak ditemukan!
+ trace_not_found: Jejak tidak ditemukan!
visibility: Visibilitas
trace_paging_nav:
showing_page: Halaman %{page}
- older: Trek-trek lama
+ older: Jejak-jejak Lama
newer: Trek-trek terbaru
trace:
pending: TERTUNDA
count_points: '%{count} titik'
ago: '%{time_in_words_ago} yang lalu'
more: selebihnya
- trace_details: Lihat rincian trek
+ trace_details: Lihat Perincian Jejak
view_map: Lihat peta
edit: edit
edit_map: Edit Peta
in: dalam
map: peta
list:
- public_traces: Trek GPS umum
+ public_traces: Jejak GPS Umum
your_traces: Trek GPS Anda
- public_traces_from: Trek GPS umum dari %{user}
+ public_traces_from: Jejak GPS Umum dari %{user}
description: Telusuri hasil upload trek GPS terbaru
tagged_with: di tag dengan %{tags}
- empty_html: Belum ada apapun di sini. <a href='%{upload_link}'>Meng-upload trek
- GPS baru</a> atau belajar lebih banyak tentang trek GPS pada <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>halaman
- wiki</a>.
+ empty_html: Belum ada apa pun di sini. <a href='%{upload_link}'>Unggah jejak
+ GPS baru</a> atau belajar lebih banyak tentang pencatatan jejak GPS pada <a
+ href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>halaman wiki</a>.
delete:
scheduled_for_deletion: Trek yang dijadwalkan untuk dihapus
make_public:
- made_public: Trek GPS yang dipublikasikan
+ made_public: Jejak yang dipublikasikan
offline_warning:
message: Sistem upload file GPX saat ini tidak tersedia
offline:
heading: Penyimpanan GPX Offline
message: Sistem upload dan penyimpanan file GPX saat ini tidak tersedia.
georss:
- title: Jejak SPG (sistem pemosisi global) OpenStreetMap
+ title: Jejak GPS OpenStreetMap
+ description:
+ description_without_count: Berkas GPX dari %{user}
application:
require_cookies:
cookies_needed: Anda tampaknya memiliki cookies yang tidak aktif - mohon aktifkan
allow_write_prefs: modifikasi pengaturan pengguna anda.
allow_write_diary: membuat entri buku harian, komentar dan berteman.
allow_write_api: memodifikasi peta.
- allow_read_gpx: baca trek GPS pribadi Anda.
+ allow_read_gpx: baca jejak GPS pribadi Anda.
allow_write_gpx: Upload trek GPS
allow_write_notes: memodifikasi catatan.
oauthorize_success:
allow_write_prefs: memodifikasi pengaturan mereka sebagai pengguna.
allow_write_diary: membuat entri buku harian, komentar dan membuat pertemanan.
allow_write_api: modifikasi peta.
- allow_read_gpx: baca trek GPS pribadi mereka
+ allow_read_gpx: baca jejak GPS pribadi mereka.
allow_write_gpx: upload trek GPS.
allow_write_notes: memodifikasi catatan.
index:
allow_write_prefs: memodifikasi pengaturan mereka sebagai pengguna.
allow_write_diary: membuat entri buku harian, komentar dan buat pertemanan.
allow_write_api: modifikasi peta
- allow_read_gpx: baca trek GPS pribadi mereka
+ allow_read_gpx: baca jejak GPS pribadi mereka.
allow_write_gpx: upload trek GPS
allow_write_notes: memodifikasi catatan.
not_found:
email or username: 'Alamat Email atau Nama Pengguna:'
password: 'Kata Sandi:'
openid: '%{logo} OpenID:'
- remember: Inget saya
+ remember: Ingat saya
lost password link: Kehilangan kata sandi Anda?
login_button: Login
register now: Daftar sekarang
with username: 'Sudah memiliki akun OpenStreetMap? Silahkan login menggunakan
nama pengguna dan kata sandi Anda:'
- with openid: 'Sebagai alternatif silahkan gunakan OpenID Anda untuk melakukan
- login:'
+ with external: 'Atau, gunakan pihak ketiga untuk masuk:'
new to osm: Baru di OpenStreetMap?
to make changes: Untuk membuat perubahan data OpenStreetMap, Anda harus memiliki
sebuah akun.
mencurigakan.<br />Silahkan kontak/hubungi<a href="%{webmaster}">webmaster</a>
jika Anda ingin mendiskusikannya.
auth failure: Maaf, tidak bisa login dengan rincian tersebut.
- openid missing provider: Maaf, tidak bisa menghubungi penyedia OpenID Anda
- openid invalid: Maaf, OpenID Anda tampaknya cacat.
openid_logo_alt: Login dengan OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Login dengan OpenID
- alt: Login menggunakan URL OpenID
+ title: Masuk log dengan OpenID
+ alt: Masuk log dengan URL OpenID
google:
- title: Login dengan Google
- alt: Login dengan Google OpenID
+ title: Masuk log dengan Google
+ alt: Masuk dengan Google OpenID
+ facebook:
+ title: Masuk dengan Facebook
+ alt: Masuk dengan akun Facebook
+ windowslive:
+ title: Masuk dengan Windows Live
+ alt: Masuk dengan akun Windows Live
yahoo:
- title: Login dengan Yahoo
- alt: Login dengan Yahoo OpenID
+ title: Masuk log dengan Yahoo
+ alt: Masuk log dengan Yahoo OpenID
wordpress:
- title: Login dengan Wordpress
- alt: Login dengan Wordpress OpenID
+ title: Masuk log dengan Wordpress
+ alt: Masuk log dengan Wordpress OpenID
aol:
- title: Login dengan AOL
- alt: Login dengan AOL OpenID
+ title: Masuk log dengan AOL
+ alt: Masuk dengan AOL OpenID
logout:
title: Logout
heading: Logout dari OpenStreetMap
display name: 'Tampilan Nama:'
display name description: Username Anda yang ditampilkan pada publik. Anda dapat
mengubahnya dalam pengaturan.
- openid: '%{logo} OpenID:'
+ external auth: 'Autentikasi Pihak Ketiga:'
password: 'Kata Sandi:'
confirm password: 'Konfirmasi Kata Sandi:'
- use openid: Atau gunakan %{logo} OpenID untuk login
- openid no password: Dengan OpenID, kata sandi tidak diperlukan, namun untuk
- beberapa alat tambahan atau server mungkin masih membutuhkannya.
- openid association: |-
- <p>OpenID Anda belum diasosiasikan dengan akun OpenStreetMap.</p>
+ use external auth: Atau, gunakan pihak ketiga untuk masuk
+ auth no password: Dengan autentikasi pihak ketiga kata sandi tidak diperlukan,
+ tetapi beberapa alat tambahan atau server mungkin memerlukannya.
+ auth association: |-
+ <p>ID Anda belum terhubung dengan akun OpenStreetMap.</p>
<ul>
- <li>Jika Anda baru di OpenStreetMap, silahkan buat sebuah akun baru menggunakan formulir di bawah ini.</li>
+ <li>Jika Anda pengguna baru OpenStreetMap, mohon membuat akun baru dengan mengisi formulir di bawah.</li>
<li>
- Jika Anda telah memiliki akun, Anda dapat login ke akun Anda
- menggunakan username (nama pengguna) dan kata sandi kemudian asosiasikan akun tersebut
- dengan OpenID Anda pada pegaturan pengguna.
+ Jika Anda telah memiliki akun, Anda dapat masuk
+ dengan nama dan kata sandi kemudian menghubungkan akun
+ dengan ID Anda dalam pengaturan pengguna.
</li>
</ul>
continue: Mendaftar
body: Maaf, tidak ada pengguna dengan nama %{user}. Silahkan cek kembali ejaan,
atau mungkin link yang Anda klik salah.
view:
- my diary: Diariku
+ my diary: Catatan Harian Saya
new diary entry: Entri baru catatan harian
my edits: Suntingan Saya
- my traces: Pelacakan Saya
+ my traces: Jejak Saya
my notes: Catatanku
my messages: Pesanku
my profile: Profilku
current email address: 'Alamat Email Saat Ini:'
new email address: 'Alamat Email Baru:'
email never displayed publicly: (jangan pernah ditampilkan ke publik)
+ external auth: 'Autentikasi Eksternal:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Apa ini?
public editing:
press confirm button: Tekan tombol konfirmasi di bawah ini untuk mengaktifkan
akun Anda.
button: Konfirmasi
+ success: Akun Anda telah dikonfirmasi, terima kasih telah mendaftar!
already active: Akun ini telah dikonfirmasi.
unknown token: Kode konfirmasi telah kedaluwarsa atau tidak ada.
reconfirm_html: Jika Anda membutuhkan kami mengirimkan ulang surel konfirmasi,
press confirm button: Tekan tombol konfirmasi di bawah ini untuk melakukan konfirmasi
alamat email baru Anda.
button: Konfirmasi
- success: Mengkonfirmasi alamat email Anda, terima kasih telah mendaftar!
+ success: Perubahan alamat email Anda telah dikonfirmasi!
failure: Sebuah alamat email telah dikonfirmasikan dengan token ini.
+ unknown_token: Kode konfirmasi tersebut telah kedaluwarsa atau tidak ada.
set_home:
flash success: Lokasi rumah berhasil disimpan
go_public:
\n aktivitas yang mencurigakan. \n</p>\n<p>\n Keputusan ini akan ditinjau
ulang oleh seorang administrator sesaat lagi, atau\n anda dapat menghubungi
%{webmaster} jika Anda ingin mendiskusikannya.\n</p>"
+ auth_failure:
+ connection_failed: Hubungan dengan penyedia autentikasi gagal
+ no_authorization_code: Tidak ada kode otorisasi
+ unknown_signature_algorithm: Algoritma khas tidak dikenal
+ invalid_scope: Cakupan tidak sah
user_role:
filter:
not_an_administrator: Hanya administrator yang dapat melakukan peran manajemen
heading: '%{block_on} diblokir oleh %{block_by}'
time_future: Berakhir dalam %{time}
time_past: Berakhir %{time} yang lalu
+ created: Dibuat
+ ago: '%{time} yang lalu'
status: Status
show: Tampilkan
edit: Edit
link: Pranala atau HTML
long_link: Pranala
short_link: Tautan Pendek
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Pengaturan dimensi
format: 'Format:'
createnote_disabled_tooltip: Perbesar untuk menambahkan catatan pada peta
map_notes_zoom_in_tooltip: Perbesar untuk melihat catatan peta
map_data_zoom_in_tooltip: Perbesar untuk melihat data peta
+ queryfeature_tooltip: Fitur kueri
+ queryfeature_disabled_tooltip: Perbesar ke fitur kueri
changesets:
show:
comment: Komentar
comment: Komentar
edit_help: Memindahkan peta dan memperbesar lokasi yang ingin Anda sunting, kemudian
klik di sini.
+ directions:
+ engines:
+ graphhopper_bicycle: Sepeda (GraphHopper)
+ graphhopper_foot: Jalan Kaki (GraphHopper)
+ mapquest_bicycle: Sepeda (MapQuest)
+ mapquest_car: Mobil (MapQuest)
+ mapquest_foot: Jalan Kaki (MapQuest)
+ osrm_car: Mobil (OSRM)
+ directions: Petunjuk Arah
+ distance: Jarak
+ errors:
+ no_route: Gagal menemukan rute antara dua tempat tersebut.
+ no_place: Maaf - tempat tidak ditemukan.
+ instructions:
+ continue_without_exit: Lurus ke %{name}
+ slight_right_without_exit: Kanan sedikit ke %{name}
+ turn_right_without_exit: Belok kanan ke %{name}
+ sharp_right_without_exit: Kanan tajam ke %{name}
+ uturn_without_exit: Putar balik ke %{name}
+ sharp_left_without_exit: Kiri tajam ke %{name}
+ turn_left_without_exit: Belok kiri ke %{name}
+ slight_left_without_exit: Kiri sedikit ke %{name}
+ via_point_without_exit: (lewat tempat)
+ follow_without_exit: Ikuti %{name}
+ roundabout_without_exit: Di bundaran ambil %{name}
+ leave_roundabout_without_exit: Tinggalkan bundaran - %{name}
+ stay_roundabout_without_exit: Tetap di bundaran - %{name}
+ start_without_exit: Mulai di ujung %{name}
+ destination_without_exit: Tiba di tujuan
+ against_oneway_without_exit: Lawan arah pada %{name}
+ end_oneway_without_exit: Akhir dari satu arah pada %{name}
+ roundabout_with_exit: Di bundaran keluar %{exit} menuju %{name}
+ unnamed: jalan tanpa nama
+ courtesy: Petunjuk arah disediakan oleh %{link}
+ time: Waktu tempuh
query:
node: Node/Titik
+ way: Jalan
relation: Relasi
nothing_found: Tidak ada fasilitas yang ditemukan
error: 'Kelasahan menghubungi %{server}: %{error}'
results:
no_results: Ekkert fannst
more_results: Fleiri niðurstöður
- distance:
- one: u.þ.b. 1 km
- zero: minna en 1 km
- other: u.þ.b. %{count} km
- direction:
- south_west: suðvestur
- south: suður
- south_east: suðaustur
- east: austur
- north_east: norðaustur
- north: norður
- north_west: norðvestur
- west: vestur
layouts:
logo:
alt_text: OpenStreetMap merkið
eða <a href="%{reconfirm}">óskaðu eftir nýjum staðfestingarpósti</a>.
auth failure: Þetta notandanafn eða lykilorð er rangt.
openid_logo_alt: Innskrá með OpenID
- openid_providers:
- openid:
- title: Innskrá með OpenID slóð
- alt: Innskrá með OpenID slóð
- google:
- title: Innsrká með Google OpenID
- alt: Innsrká með Google OpenID
- yahoo:
- title: Innsrká með Yahoo! OpenID
- alt: Innsrká með Yahoo! OpenID
- wordpress:
- title: Innsrká með Wordpress.com OpenID
- alt: Innsrká með Wordpress.com OpenID
logout:
title: Útskrá
heading: Útskrá
heading: Staðfesta notanda
press confirm button: Hér getur þú staðfest að þú viljir búa til notanda..
button: Staðfesta
+ success: Notandinn þinn hefur verið staðfestur.
confirm_email:
heading: Staðfesta breytingu á netfangi
press confirm button: Hér getur þú staðfest breytingu á netfangi.
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Alessioz
+# Author: Alexmar983
# Author: Bellazambo
# Author: Beta16
# Author: Darth Kule
# Author: Davalv
# Author: Davio
+# Author: Devid Farinelli
# Author: Dieterdreist
# Author: Efred
+# Author: Federico Mugnaini
# Author: Frammm
+# Author: Fringio
# Author: Gianfranco
# Author: Isiond
# Author: Kaitu
# Author: Raoli
# Author: Ricordisamoa
# Author: Rippitippi
+# Author: Ruila
# Author: Shirayuki
# Author: Simone
# Author: SimoneSVC
fa</abbr>
hidden_by: Nascosta da %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
query:
- title: Funzionalità di query
+ title: Ricerca di elementi
introduction: Clicca sulla cartina per disponibilità nei pressi.
nearby: Disponibilità nei pressi
enclosing: Elementi interni
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Funivia
chair_lift: Seggiovia
drag_lift: Sciovia
+ gondola: Cabinovia
station: Stazione funivia
aeroway:
aerodrome: Aerodromo
taxiway: Pista di rullaggio
terminal: Terminal
amenity:
+ animal_shelter: Rifugio per animali
arts_centre: Centro d'arte
atm: Cassa automatica
bank: Banca
bicycle_parking: Parcheggio per biciclette
bicycle_rental: Noleggio biciclette
biergarten: Birreria all'aperto
+ boat_rental: Noleggio Barche
brothel: Bordello
bureau_de_change: Cambia valute
bus_station: Stazione degli autobus
car_wash: Autolavaggio
casino: Casinò
charging_station: Stazione di ricarica
+ childcare: Assistenza minori
cinema: Cinema
clinic: Clinica
+ clock: Orologio
college: Accademia
community_centre: Centro civico
courthouse: Tribunale
food_court: Food Court
fountain: Fontana
fuel: Stazione di rifornimento
+ gambling: Gioco d'azzardo
grave_yard: Cimitero
gym: Centro fitness / Palestra
health_centre: Casa di cura
library: Biblioteca
market: Mercato
marketplace: Mercato
+ monastery: Monastero
+ motorcycle_parking: Parcheggio per Moto
nightclub: Night Club
nursery: Asilo nido
nursing_home: Asilo nido
office: Ufficio
parking: Parcheggio
+ parking_entrance: Entrata del parcheggio
pharmacy: Farmacia
place_of_worship: Luogo di culto
police: Polizia
veterinary: Veterinario
village_hall: Municipio
waste_basket: Cestino rifiuti
+ waste_disposal: Smaltimento dei rifiuti
youth_centre: Centro Giovanile
boundary:
administrative: Confine amministrativo
"yes": Ponte
building:
"yes": Edificio
+ craft:
+ brewery: Birrificio
+ carpenter: Carpentiere
+ electrician: Elettricista
+ gardener: Giardiniere
+ painter: Pittore
+ photographer: Fotografo
+ plumber: Idraulico
+ shoemaker: Calzolaio
+ tailor: Sarto
+ "yes": Negozio di Artigianato
emergency:
+ ambulance_station: Stazione delle ambulanze
+ defibrillator: Defibrillatore
+ landing_site: Luogo per l'atterraggio di emergenza
phone: Telefono di emergenza
highway:
+ abandoned: Autostrada abbandonata
bridleway: Percorso per equitazione
bus_guideway: Corsia autobus a guida vincolata
bus_stop: Fermata dell'autobus
construction: Strada in costruzione
cycleway: Percorso ciclabile
+ elevator: Ascensore
emergency_access_point: Colonnina SOS
footway: Percorso pedonale
ford: Guado
tertiary: Strada terziaria
tertiary_link: Strada terziaria
track: Strada forestale o agricola
+ traffic_signals: Segnali stradali
trail: Percorso escursionistico
trunk: Superstrada
trunk_link: Superstrada
unclassified: Strada non classificata
unsurfaced: Strada non pavimentata
+ "yes": Strada
historic:
archaeological_site: Sito archeologico
battlefield: Campo di battaglia
boundary_stone: Pietra confinaria
- building: Edificio
+ building: Edificio storico
+ bunker: Bunker
castle: Castello
church: Chiesa
+ city_gate: Porta della città
citywalls: Mura della città
fort: Forte
+ heritage: Patrimonio dell'umanità
house: Casa storica
icon: Icona
manor: Maniero
memorial: Memoriale
mine: Mina
monument: Monumento
+ roman_road: Strada romana
ruins: Rovine
+ stone: Pietra
tomb: Tomba
tower: Torre
wayside_cross: Croce
wayside_shrine: Edicola votiva
wreck: Relitto
+ junction:
+ "yes": Incrocio
landuse:
allotments: Orti casalinghi
basin: Bacino
road: Area della sede stradale
village_green: Parco urbano
vineyard: Vigneto
+ "yes": Uso del terreno
leisure:
beach_resort: Stabilimento balneare
bird_hide: Osservatorio Camuffato
+ club: Club
common: Area comune (UK)
+ dog_park: Parco per cani
fishing: Riserva di pesca
+ fitness_centre: Centro Fitness
fitness_station: Centro fitness
garden: Giardino
golf_course: Campo da golf
+ horse_riding: Equitazione
ice_rink: Pista di ghiaccio
marina: Porto turistico
miniature_golf: Minigolf
pitch: Campo sportivo
playground: Parco giochi
recreation_ground: Area di svago
+ resort: Resort
sauna: Sauna
slipway: Rampa per la messa in acqua di imbarcazioni
sports_centre: Centro sportivo
swimming_pool: Piscina
track: Pista da corsa
water_park: Parco acquatico
+ "yes": Tempo libero
+ man_made:
+ lighthouse: Faro
+ pipeline: Tubazione
+ tower: Torre
+ works: Fabbrica
+ "yes": Artificiale
military:
airfield: Aeroporto militare
barracks: Caserma
forest: Foresta
geyser: Geyser
glacier: Ghiacciaio
+ grassland: Prato
heath: Brughiera
hill: Collina
island: Isola
reef: Scogliera
ridge: Cresta montuosa
rock: Roccia
+ saddle: Sella
+ sand: Sabbia
scree: Ghiaione
scrub: Boscaglia
spring: Sorgente
wood: Bosco
office:
accountant: Ragioniere
+ administrative: Amministrazione
architect: Architetto
company: Azienda
employment_agency: Agenzia di lavoro
travel_agent: Agenzia di viaggi
"yes": Ufficio
place:
+ allotments: Orti casalinghi
+ block: Blocco
airport: Aeroporto
city: Città
country: Nazione
town: Paese
unincorporated_area: Area non inclusa
village: Frazione
+ "yes": Luogo
railway:
abandoned: Ferrovia abbandonata
construction: Ferrovia in costruzione
spur: Diramazione ferroviaria breve
station: Stazione ferroviaria
stop: Fermata ferroviaria
- subway: Stazione della metropolitana
+ subway: Metropolitana
subway_entrance: Ingresso metropolitana
switch: Punti ferroviari
tram: Tramvia
"yes": Negozio
tourism:
alpine_hut: Rifugio alpino
+ apartment: Appartamento
artwork: Opera d'arte
attraction: Attrazione turistica
bed_and_breakfast: Bed and Breakfast
camp_site: Campeggio
caravan_site: Area caravan e camper
chalet: Casetta (chalet)
+ gallery: Galleria d'arte
guest_house: Guest House
hostel: Ostello
hotel: Hotel
wadi: Uadì
waterfall: Cascata
weir: Sbarramento idrico
+ "yes": Corso d'acqua
admin_levels:
level2: Confine di paese
level4: Confine di stato
results:
no_results: Nessun risultato
more_results: Altri risultati
- distance:
- one: circa 1km
- zero: meno di 1km
- other: circa %{count}km
- direction:
- south_west: sud-ovest
- south: sud
- south_east: sud-est
- east: est
- north_east: nord-est
- north: nord
- north_west: nord-ovest
- west: ovest
layouts:
logo:
alt_text: Logo OpenStreetMap
tag_line: La wiki-mappa libera del mondo
intro_header: Benvenuti in OpenStreetMap!
intro_text: OpenStreetMap è una mappa del mondo, creata da persone come te e libera
- di utilizzare sotto licenza aperta.
+ da utilizzare secondo una licenza aperta.
intro_2_create_account: Crea un account utente
partners_html: L'hosting è supportato da %{ucl}, %{ic}, %{bytemark} e da altri
%{partners}.
legal_babble:
title_html: Copyright e licenza
intro_1_html: |-
- OpenStreetMap è un <i>database aperto</i>, rilasciato in base alla licenza <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL).
+ OpenStreetMap è <i>open data</i>, e i suoi dati sono distribuiti con licenza <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) dalla <a href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: "Sei libero di copiare, distribuire, trasmettere e adattare i
nostri dati, finché lo attribuisci a OpenStreetMap e ai suoi contributori.
Se alteri o ti basi sui nostri dati,\npuoi distribuire il risultato solo sotto
alt: Esempio di come attribuire ad OpenStreetMap su una pagina web
title: Esempio di attribuzione
more_title_html: Per saperne di più
- more_1_html: |-
- Per saperne di più su come utilizzare i nostri dati, e come accreditarci, consulta
- le <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Domande
- legali frequenti</a>.
+ more_1_html: Per saperne di più su come utilizzare i nostri dati e come citarne
+ correttamente la fonte, consulta la pagina sulla <a href="http://osmfoundation.org/Licence">Licenza
+ OSMF</a> e le <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Domande
+ legali frequenti</a> della community.
more_2_html: |-
Anche se i dati OpenStreetMap sono aperti, non possiamo fornire accesso alle API della mappa gratuitamente per gli sviluppatori di terze parti.
Vedi la nostra <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Politica di utilizzo delle API</a>, la
contributors_nz_html: |-
<strong>Nuova Zelanda</strong>: contiene i dati provenienti dalla
Land Information New Zealand. Crown Copyright reserved.
+ contributors_si_html: |-
+ <strong>Slovenia</strong>: Contiene dati dell'
+ <a href="http://www.gu.gov.si/en/">Autorità per il Rilievo e la Mappatura</a> e del
+ <a href="http://www.mkgp.gov.si/en/">Ministero dell' Agricoltura, delle foreste e dell'alimentazione</a>
+ (informazioni pubbliche della Slovenia).
contributors_za_html: |-
<strong>Sud Africa</strong>: contiene i dati provenienti dalla
<a href="http://www.ngi.gov.za/">Chief Directorate:
un fiume, lago o edificio.
tag_html: Un <strong>tag</strong> include alcuni dati su un punto o una strada,
come il nome di un ristorante o i limiti di velocità di una strada.
+ rules:
+ title: Regole!
+ paragraph_1_html: "OpenStreetMap ha poche regole formali, ma ci aspettiamo che
+ tutti i partecipanti collaborino\ncon, e comunichino con la comunità. Se stai
+ considerando qualsiasi attività di editing manuale, sei <a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>pregato
+ di leggere e seguire le indicazioni \n<a href=\"http://wiki.openstreetmap.org/wiki/Import/Guidelines\">Le
+ importazioni</a> e \n<a href=\"http://wi</a>ki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct\">Automatizzato
+ Modifiche</a>."
questions:
title: Domande?
paragraph_1_html: |-
url: /welcome
title: Benvenuti a OSM
description: Inizia con questa guida rapida che copre le basi di OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/IT:Beginners%27_guide
+ title: Guida per Principianti
+ description: Guida per i principianti gestita dalla community.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Fai una domanda o cerca risposte sul sito di domande e risposte
di OSM.
+ mailing_lists:
+ title: Mailing List
+ description: Poni la tua domanda o discuti questioni di interesse su una vasta
+ gamma di mailing list tematiche o regionali.
+ forums:
+ title: Forum
+ description: Domande e discussioni per coloro che preferiscono un'interfaccia
+ in stile bacheca (BBS).
+ irc:
+ title: IRC
+ description: Chat interattiva in molte lingue diverse e su molti argomenti.
+ switch2osm:
+ title: switch2osm
+ description: Aiuto per imprese e organizzazioni che intendono migrare a mappe
+ e altri servizi basati su OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
della comunità</a>, e il sito <a href='http://www.osmfoundation.org/'>OSM Foundation</a>.
open_data_title: Open Data
open_data_html: 'OpenStreetMap è <i>open data</i>: sei libero di usarla per qualsiasi
- scopo a patto di attribuirla a OpenstreetMap e ai suoi contributori. Se alteri
+ scopo a patto di attribuirla a OpenStreetMap e ai suoi contributori. Se alteri
o sviluppi sulla base dei dati in un certo modo, puoi distribuire il risultato
- solo mediante la stessa licenza. Consultare <a href=''%{copyright_path}''>Copyright</a>
- per i dettagli.'
+ solo mediante la stessa licenza. Consultare la <a href=''%{copyright_path}''>pagina
+ Copyright e Licenza</a> per i dettagli.'
+ legal_title: Note legali
+ legal_html: "Questo sito e molti altri servizi correlati sono formalmente gestiti
+ dalla \n<a href=\"http://osmfoundation.org/\">OpenStreetMap Foundation</a> (OSMF)
+ \nper conto della comunità.\n<br> \nSi prega di <a href=\"http://osmfoundation.org/Contact\">contattare
+ la OSMF</a> \nin caso di dubbi e problemi di licenza, copyright o altre questioni
+ legali."
partners_title: Partner
notifier:
diary_comment_notification:
close: Chiudi
search:
search: Cerca
+ get_directions: Ottieni indicazioni
+ get_directions_title: Trova indicazioni tra due punti
+ from: Da
+ to: A
where_am_i: Dove sono?
where_am_i_title: Descrivi la posizione attuale usando il motore di ricerca
submit_text: Vai
register now: Registrati ora
with username: 'Possiedi già un profilo OpenStreetMap? Entra con il tuo nome
utente e password:'
- with openid: 'In alternativa utilizza il tuo OpenID per entrare:'
+ with external: In alternativa, effettua l'accesso tramite terze parti
new to osm: Sei nuovo su OpenStreetMap?
to make changes: Per apportare modifiche ai dati di OpenStreetMap, è necessario
disporre di un account.
account is suspended: Siamo spiacenti, il tuo account è stato sospeso a causa
di attività sospette.<br />Se desideri discuterne, puoi contattare il <a href="%{webmaster}">webmaster</a>.
auth failure: Spiacenti, non si può accedere con questi dettagli.
- openid missing provider: Siamo spiacenti, impossibile contattare il provider
- OpenID
- openid invalid: Spiacente, sembra il che tuo OpenID non sia valido
openid_logo_alt: Accedi con un OpenID
- openid_providers:
+ auth_providers:
openid:
title: Accedi con OpenID
- alt: Accedi con un indirizzo URL OpenID
+ alt: Accedi con un URL OpenID
google:
title: Accedi con Google
alt: Accedi con un OpenID di Google
display name: 'Nome visualizzato:'
display name description: Il proprio nome utente visualizzato pubblicamente.
Può essere modificato più tardi nelle preferenze.
- openid: '%{logo} OpenID:'
+ external auth: 'Autenticazione tramite terze parti:'
password: 'Password:'
confirm password: 'Conferma password:'
- use openid: In alternativa utilizza %{logo} OpenID per accedere
- openid no password: Con OpenID non è richiesta una password, ma alcuni strumenti
- o server aggiuntivi potrebbero ancora averne bisogno.
- openid association: |-
- <p>Il tuoi OpenID non è ancora associato ad alcun profilo OpenStreetMap.</p>
+ use external auth: In alternativa, effettua l'accesso tramite terze parti
+ auth no password: Con l'autenticazione tramite terze parti non è richiesta una
+ password, ma alcuni strumenti o server aggiuntivi potrebbero ancora averne
+ bisogno.
+ auth association: |-
+ <p>Il tuo ID non è ancora associato ad alcun profilo OpenStreetMap.</p>
<ul>
- <li>Se sei nuovo in OpenStreetMap, crea un nuovo profilo utilizzando la maschera sottostante.</li>
+ <li>Se sei nuovo in OpenStreetMap, crea un nuovo profilo utilizzando il form sottostante.</li>
<li>
Se possiedi già un profilo è possibile accedervi
- utilizzando il proprio nome utente e password e quindi associare il profilo
- con il proprio OpenID all'interno delle impostazioni utente.
+ utilizzando il proprio nome utente e password, e quindi associare il profilo
+ con il proprio ID all'interno delle impostazioni utente.
</li>
</ul>
continue: Registrati
current email address: 'Indirizzo e-mail attuale:'
new email address: 'Nuovo indirizzo e-mail:'
email never displayed publicly: (mai visualizzato pubblicamente)
+ external auth: 'Autenticazione Esterna:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/IT:OpenID
link text: che cos'è questo?
public editing:
press confirm button: Premere sul pulsante di conferma sottostante per attivare
il proprio profilo utente.
button: Conferma
+ success: Il profilo utente è stato confermato, grazie per l'iscrizione!
already active: Questo profilo è stato già confermato.
unknown token: Questo codice di conferma è scaduto oppure non esiste.
reconfirm_html: Per richiedere nuovamente una email di conferma, <a href="%{reconfirm}">Clicca
press confirm button: Premere sul pulsante di conferma sottostante per confermare
il nuovo indirizzo email.
button: Conferma
- success: L'indirizzo email è stato confermato, grazie per l'iscrizione!
+ success: Confermato il cambio di indirizzo e-mail!
failure: Un indirizzo email con questo codice è già stato confermato.
+ unknown_token: Questo codice di conferma è scaduto oppure non esiste.
set_home:
flash success: Posizione personale salvata con successo
go_public:
a causa di \n attività sospette. \n</p>\n<p>\n Questa decisione sarà riesaminata
a breve da un amministratore, oppure \n se desideri discuterne puoi contattare
il %{webmaster}.\n</p>"
+ auth_failure:
+ connection_failed: Connessione al provider di autenticazione non riuscita
+ invalid_credentials: Le credenziali di autenticazione non sono valide
user_role:
filter:
not_an_administrator: Solo gli amministratori possono gestire i ruoli degli
comment: Commenta
edit_help: Sposta la mappa e usa lo zoom sulla posizione che vuoi modificare,
quindi clicca qui.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicletta (GraphHopper)
+ graphhopper_foot: A piedi (GraphHopper)
+ mapquest_bicycle: Bicicletta (MapQuest)
+ mapquest_car: Auto (MapQuest)
+ mapquest_foot: A piedi (MapQuest)
+ osrm_car: Auto (OSRM)
+ directions: Direzioni
+ distance: Distanza
+ errors:
+ no_route: Impossibile trovare un percorso fra questi due posti.
+ no_place: Spiacenti, non è possibile trovare quel luogo.
+ instructions:
+ unnamed: senza nome
+ courtesy: Indicazioni per gentile concessione di %{link}
+ time: Tempo
query:
node: Nodo
way: Percorso
# Author: Nazotoko
# Author: Nyampire
# Author: OKANO Takayoshi
+# Author: Ruila
# Author: Rxy
# Author: Schu
# Author: Shirayuki
# Author: Sudachi
+# Author: Sujiniku
+# Author: Surgical21
# Author: Tombi-aburage
# Author: Wrightbus
# Author: 青子守歌
time:
formats:
friendly: '%Y年%B%e日 %H:%M'
+ blog: '%Y年%B%e日'
activerecord:
models:
acl: アクセス制御リスト
trace: トレース
tracepoint: トレースポイント
tracetag: トレースのタグ
- user: ユーザー
- user_preference: ユーザー設定
+ user: 利用者
+ user_preference: 個人設定
user_token: ユーザートークン
way: ウェイ
way_node: ウェイのノード
reopened_by_anonymous: 誰かが<abbr title='%{exact_time}'>%{when}前</abbr>に再開
hidden_by: '%{user}さんが<abbr title=''%{exact_time}''>%{when}前</abbr>に非表示化'
query:
+ title: 地物を検索
introduction: 地図上をクリックすると、近くの地物を探します。
nearby: 近くの地物
+ enclosing: 付近の地物
changeset:
changeset_paging_nav:
showing_page: ページ %{page}
load_more: 続きを読み込む
timeout:
sorry: 申し訳ありませんが、要求した変更セットの一覧は大きすぎるため取得できませんでした。
+ rss:
+ title_all: OpenStreetMap変更セットの議論
+ title_particular: OpenStreetMap変更セット#%{changeset_id}の議論
+ comment: 変更セット#%{changeset_id}への%{author}による新しいコメント
+ commented_at_html: '%{when}前に更新'
+ commented_at_by_html: '%{when}前に%{user}さんが更新'
+ full: 議論全体
diary_entry:
new:
title: 日記エントリの新規作成
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: 交走式ロープウェイ
chair_lift: チェアリフト
drag_lift: 牽引リフト
+ gondola: 循環式ロープウェイ
station: 索道駅
aeroway:
aerodrome: 飛行場
taxiway: 空港誘導路
terminal: ターミナル
amenity:
+ animal_shelter: 動物保護施設
arts_centre: アート センター
atm: ATM
bank: 銀行
bicycle_parking: 駐輪場
bicycle_rental: レンタサイクル
biergarten: ビアガーデン
+ boat_rental: 貸ボート
brothel: 売春宿
bureau_de_change: 両替
bus_station: バス停
car_wash: 洗車
casino: 賭場
charging_station: 充電ステーション
+ childcare: 保育所
cinema: 映画館
clinic: 診療所
+ clock: 時計
college: 大学
community_centre: コミュニティ センター
courthouse: 裁判所
library: 図書館
market: 市場
marketplace: 市場
+ motorcycle_parking: バイクの駐輪場
nightclub: ナイト クラブ
nursery: 保育所
nursing_home: 特別養護老人ホーム
office: オフィス
parking: 駐車場
+ parking_entrance: 駐車場の入口
pharmacy: 薬局
place_of_worship: 神社仏閣
police: 警察署
"yes": 橋
building:
"yes": 建造物
+ craft:
+ photographer: 撮影者
+ "yes": 手芸店
emergency:
+ ambulance_station: 消防署
phone: 緊急電話
highway:
bridleway: 乗馬道
bus_stop: バス停
construction: 建設中の高速道路
cycleway: 自転車道
+ elevator: エレベータ
emergency_access_point: 緊急アクセスポイント
footway: 歩道
ford: 砦
tertiary: 周辺道路
tertiary_link: 周辺道路
track: 農道・林道
+ traffic_signals: 信号機
trail: 小道
trunk: 国道
trunk_link: 国道
unclassified: 未分類の道路
unsurfaced: 未舗装道路
+ "yes": 道路
historic:
archaeological_site: 考古学サイト
battlefield: 戦場
boundary_stone: 境界石
- building: ビル
+ building: 歴史的な建物
castle: 城
church: 教会
citywalls: 城壁
mine: 鉱山
monument: 記念碑
ruins: 廃墟
+ stone: 岩石
tomb: 墓地
tower: 塔
wayside_cross: 道路際の十字架
wayside_shrine: 道祖神
wreck: 沈没船
+ junction:
+ "yes": 交差点
landuse:
allotments: 家庭菜園
basin: 盆地
leisure:
beach_resort: ビーチ リゾート
bird_hide: 観察小屋
+ club: クラブ
common: 共有地
fishing: 釣り場
fitness_station: フィットネス ステーション
swimming_pool: 水泳用プール
track: 陸上競技用トラック
water_park: 親水公園
+ man_made:
+ tower: 塔
+ works: 工房
military:
airfield: 軍用飛行場
barracks: バラック
wood: 森林
office:
accountant: 会計
+ administrative: 管理
architect: 建築士
company: 会社
employment_agency: 職業紹介
town: 町
unincorporated_area: 国有地
village: 村
+ "yes": 場所
railway:
abandoned: 廃止鉄道
construction: 建設中の鉄道
spur: 支線
station: 鉄道駅
stop: 鉄道駅
- subway: 地下鉄駅
+ subway: 地下鉄
subway_entrance: 地下鉄駅入口
switch: 鉄道の分岐器
tram: 路面軌道
results:
no_results: 該当するものはありません
more_results: その他の結果
- distance:
- one: 約 1 km
- zero: 1 km 未満
- other: 約 %{count} km
- direction:
- south_west: 南西
- south: 南
- south_east: 南東
- east: 東
- north_east: 北東
- north: 北
- north_west: 北西
- west: 西
layouts:
logo:
alt_text: OpenStreetMap ロゴ
legal_babble:
title_html: 著作権とライセンス
intro_1_html: |-
- OpenStreetMap は<i>オープンデータ</i>であり、<a
- href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) の下にライセンスされています。
+ OpenStreetMap<a href="#trademarks">®</a> は<i>オープンデータ</i>であり、<a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) の下にライセンスされています。by the <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: OpenStreetMapとその協力者をクレジットすれば、データを自由にコピー、配布、送信、利用することができます。変更したり翻案したりしたデータは、同じライセンスに従って提供することができます。あなたの権利と責任は、<a
href="http://opendatacommons.org/licenses/odbl/1.0/">ライセンス契約</a>の全文で説明しています。
intro_3_html: |-
more_title_html: 詳細を見る
more_1_html: |-
データの利用についてやクレジット方法について、詳細は<a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Legal
+ href="http://osmfoundation.org/Licence">OSMF Licence page</a> and the community <a
+ href="http://wiki.openstreetmap.org/wiki/JA:Legal_FAQ">Legal
FAQ</a>をお読みください。
more_2_html: OpenStreetMap はオープンデータですが、サードパーティーの開発者のための無料の地図 API は提供できません。 <a
href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API Usage Policy</a>、<a
- href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Tile Usage Policy</a>、<a
- href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim
+ href="http://wiki.openstreetmap.org/wiki/JA:タイル利用規約">タイル利用規約</a>、<a href="http://wiki.openstreetmap.org/wiki/JA:Nominatim#利用ポリシー">Nominatim
Usage Policy</a>をお読みください。
contributors_title_html: 協力者
contributors_intro_html: 協力者は数千人もの個人です。それに加え、国立の地図作成組織や、次のようなその他の情報源による公開できるライセンスによるデータを含みます。
contributors_gb_html: '<strong>イギリス</strong>: 陸地測量データ © Crown copyright
and database right 2010-12 を含みます。'
contributors_footer_1_html: これらの詳細について、またOpenStreetMapの向上に使用されたその他のソースについては、OpenStreetMap
- Wikiの<a href="http://wiki.openstreetmap.org/wiki/Contributors">協力者ページ</a>をご覧ください。
+ Wikiの<a href="http://wiki.openstreetmap.org/wiki/JA:Contributors">協力者ページ</a>をご覧ください。
contributors_footer_2_html: OpenStreetMapのデータに含めることは、元データの提供者がOpenStreetMapを支持したり、何かしらの保証を行ったり、何かしらの責任を負ったりすることを意味するものではありません。
infringement_title_html: 著作権侵害
infringement_1_html: 'OSMの協力者は、著作権者から明確な許諾を得ずに、著作権のある情報源 (例: Google マップや印刷された地図)
url: /welcome
title: OSM へようこそ
description: OpenStreetMap の基礎を網羅しているこのクイック ガイドから始めましょう。
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/JA:%E5%88%9D%E5%BF%83%E8%80%85%E3%82%AC%E3%82%A4%E3%83%89
+ title: 初心者向けの手引き
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: OSM の質問回答サイトで質問したり回答を検索したりする。
+ irc:
+ title: IRC
wiki:
url: http://wiki.openstreetmap.org/wiki/JA:Main_Page
title: wiki.openstreetmap.org
- description: OSMの詳細な説明が書かれたWikiを参照してください。
+ description: 詳細なOSMの説明が書かれたウィキを参照します。
about_page:
next: 次へ
copyright_html: <span>©</span>OpenStreetMap<br>contributors
body: 本文
send_button: 送信
back_to_inbox: 受信箱に戻る
- message_sent: 送信したメッセージ
+ message_sent: メッセージを送信しました
limit_exceeded: 短い間隔で大量のメッセージを送っていますね。次を送る前にしばらくお待ちください。
no_such_message:
title: 存在しないメッセージです
- 軽便鉄道
- 路面電車
cable:
- - ケーブルカー
+ - 交走式ロープウェイ
- チェアリフト
runway:
- 空港滑走路
login_button: ログイン
register now: 今すぐ登録
with username: 'OpenStreetMap アカウントを既にお持ちですか? 自分のユーザー名とパスワードでログインしてください:'
- with openid: 'OpenID でもログインできます:'
new to osm: OpenStreetMap は初めてですか?
to make changes: OpenStreetMap データを変更するには、アカウントが必要です。
create account minute: アカウントを作成します。1分でできます。
account is suspended: 申し訳ありませんが、不審な活動のため、あなたのアカウントは一時停止されております。<br />本件についてご相談がある場合は
<a href="%{webmaster}">ウェブマスター</a>にご連絡ください。
auth failure: 申し訳ありませんが、入力した情報でログインできませんでした。
- openid missing provider: 申し訳ありませんが、OpenID プロバイダーに接続できませんでした
- openid invalid: 申し訳ありませんが、あなたの OpenID は正しくないようです
openid_logo_alt: OpenID でログイン
- openid_providers:
- openid:
- title: OpenID でログイン
- alt: OpenID の URL でログイン
- google:
- title: Google アカウントでログイン
- alt: Google の OpenID でログイン
- yahoo:
- title: Yahoo ID でログイン
- alt: Yahoo の OpenID でログイン
- wordpress:
- title: WordPress でログイン
- alt: Wordpress の OpenID でログイン
- aol:
- title: AOL でログイン
- alt: AOL の OpenID でログイン
logout:
title: ログアウト
heading: OpenStreetMap からログアウト
title="メール アドレスの節を含む、ウィキのプライバシー ポリシー">プライバシー ポリシー</a>を参照してください)
display name: '表示名:'
display name description: 自分の公開ユーザー名です。あとで設定ページで変更できます。
- openid: '%{logo} OpenID:'
password: 'パスワード:'
confirm password: 'パスワードの確認:'
- use openid: 代わりに、%{logo} OpenID を使用してログイン
- openid no password: OpenID ではパスワードは不要ですが、特殊なツール/サーバーでは必要な場合があります。
- openid association: |-
- <p>あなたの OpenID は、まだ OpenStreetMap のどのアカウントとも関連付けられていません。</p>
- <ul>
- <li>OpenStreetMap が初めての場合は、下のフォームで新規アカウントを作成してください。</li>
- <li>
- 既にアカウントを持っている場合は、あなたのユーザー名とパスワードでログインしてください。
- ログイン後、ユーザー設定であなたの OpenID と関連付けることができます。
- </li>
- </ul>
continue: ユーザー登録
terms accepted: 新しい協力者規約に同意いただき、ありがとうございます!
terms declined: 新しい協力者規約に同意いただけず残念です。詳しい情報は、<a href="%{url}">このウィキページ</a>をご覧ください。
new email address: '新しいメール アドレス:'
email never displayed publicly: (非公開)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/JA:OpenID?uselang=ja
link text: これは何ですか?
public editing:
introduction_2: メール内のリンクをクリックしてアカウントの確認をすれば、マッピングを始められます。
press confirm button: アカウントを有効にして良ければ、以下の確認ボタンを押してください。
button: 確認
+ success: アカウントを確認しました。登録ありがとうございます!
already active: このアカウントは確認済みです。
unknown token: この確認コードは期限切れ、または存在しません。
reconfirm_html: 確認メールを再送する必要がある場合は、<a href="%{reconfirm}">ここをクリック</a>してください。
heading: メール アドレスの変更を確認
press confirm button: 新しいメール アドレスを確認するために確認ボタンを押してください。
button: 確認
- success: ã\83¡ã\83¼ã\83« ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92確èª\8dã\81\97ã\81¾ã\81\97ã\81\9fã\80\82ç\99»é\8c²ã\81\82ã\82\8aã\81\8cã\81¨ã\81\86ã\81\94ã\81\96ã\81\84ã\81¾ã\81\99!
+ success: ã\83¡ã\83¼ã\83« ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\81\9fã\81\93ã\81¨ã\82\92確èª\8dã\81\97ã\81¾ã\81\97ã\81\9fã\80\82
failure: このトークンは、メール アドレスの確認に使用済みです。
set_home:
flash success: ホーム地点を保存しました。
comment_and_resolve: コメント & 解決
comment: コメント
edit_help: 編集したい位置に移動してズームインしてから、ここをクリックしてください。
+ directions:
+ distance: 距離
+ instructions:
+ unnamed: 名前なし
+ query:
+ nothing_found: 地物が見つかりませんでした
redaction:
edit:
description: 説明
results:
no_results: შედეგი ვერ მოიძებნა
more_results: მეტი შედეგი
- distance:
- one: დაახლოებით 1 კმ
- zero: 1 კმ-ზე ნაკლები
- other: დაახლოებით %{count} კმ
- direction:
- south_west: სამხრეთ-დასავლეთი
- south: სამხრეთი
- south_east: სამხრეთ-აღმოსავლეთი
- east: აღმოსავლეთი
- north_east: ჩრდილო-აღმოსავლეთი
- north: ჩრდილოეთი
- north_west: ჩრდილო-დასავლეთი
- west: დასავლეთი
layouts:
logo:
alt_text: OpenStreetMap-ის ლოგო
create account minute: შექმნეით ანგარიში. ამისათვის მხოლოდ ერთი წუთია საჭირო.
no account: არ გაქვთ ანგარიში?
openid_logo_alt: შესვლა OpenID-ის საშუალებით
- openid_providers:
- openid:
- title: შესვლა OpenID-ის საშუალებით
- alt: შესვლა OpenID URL-ის საშუალებით
- google:
- title: შესვლა Google-ის საშუალებით
- alt: შესვლა Google OpenID-ის საშუალებით
- yahoo:
- title: შესვლა Yahoo-ს საშუალებით
- alt: შესვლა Yahoo OpenID-ის საშუალებით
- wordpress:
- title: შესვლა Wordpress-ის საშუალებით
- alt: შესვლა Wordpress OpenID-ის საშუალებით
- aol:
- title: შესვლა AOL-ის საშუალებით
- alt: შესვლა AOL OpenID-ის საშუალებით
logout:
title: გასვლა
heading: OpenStreetMap-დან გასვლა
email address: 'ელ. ფოსტის მისამართი:'
confirm email address: 'ელ. ფოსტის მისამართის დადასტურება:'
display name: 'სახელი ეკრანზე:'
- openid: '%{logo} OpenID:'
password: 'პაროლი:'
confirm password: 'პაროლის დადასტურება:'
continue: გაგრძელება
current email address: 'ელ-ფოსტის ამჟამინდელი მისამართი:'
new email address: 'ახალი ელ. ფოსტის მისამართი:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/KA:OpenID
link text: რა არის ეს?
public editing:
# Messages for Korean (한국어)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Alex00728
# Author: B891202
# Author: Freebiekr
# Author: Hym411
# Author: Kwj2772
# Author: Priviet
# Author: Revi
+# Author: Ruila
+# Author: SeoJeongHo
# Author: Stleamist
+# Author: Twotwo2019
# Author: Wrightbus
+# Author: Ysjbserver
# Author: 아라
---
ko:
time:
formats:
friendly: '%Y년 %B %e일 %H:%M'
+ blog: '%Y년 %B %e일'
activerecord:
models:
acl: 통행 제한 목록
message: 메시지
node: 노드
node_tag: 노드 태그
- notifier: ì\95\8c림ì\9e\90
+ notifier: ì\95\8c리미
old_node: 이전 노드
old_node_tag: 이전 노드 태그
old_relation: 이전 관계
- old_relation_member: 이전 관계 구성원
+ old_relation_member: 이전 관계 구성 요소
old_relation_tag: 이전 관계 태그
old_way: 이전 길
old_way_node: 이전 길 노드
old_way_tag: 이전 길 태그
relation: 관계
- relation_member: 관계 구성원
+ relation_member: 관계 구성 요소
relation_tag: 관계 태그
session: 세션
trace: 추적
friend: 친구
trace:
user: 사용자
- visible: 일람 가능
+ visible: 보임
name: 이름
size: 크기
latitude: 위도
deleted_by_html: <abbr title='%{title}'>%{time} 전</abbr>에 %{user} 사용자가 삭제함
edited_by_html: <abbr title='%{title}'>%{time} 전</abbr>에 %{user} 사용자가 편집함
closed_by_html: <abbr title='%{title}'>%{time} 전</abbr>에 %{user} 사용자가 닫음
- version: 판
+ version: 버전
in_changeset: 바뀜집합
anonymous: 익명
- no_comment: (덧글 없음)
+ no_comment: (의견 없음)
part_of: '다음의 일부:'
download_xml: XML 다운로드
view_history: 역사 보기
relation:
title: '관계: %{name}'
history_title: '관계 역사: %{name}'
- members: 구성원
+ members: 구성 요소
relation_member:
entry_role: '%{type}에서 %{role}의 %{name}'
type:
changeset: 바뀜집합
redacted:
redaction: 개정 %{id}
- message_html: 이 %{type}의 %{version} 판은 수정한 판으로 볼 수 없습니다. 자세한 내용은 %{redaction_link}(을)를
+ message_html: 이 %{type}의 %{version}판은 비공개 처리되었기 때문에 볼 수 없습니다. 자세한 내용은 %{redaction_link}(을)를
참고하세요.
type:
node: 노드
way: 길
relation: 관계
start_rjs:
- feature_warning: 지물 %{num_features}개를 불러오고 있으며, 브라우저가 느려지거나 응답하지 않을 수 있습니다.
- ì\9d´ ë\8d°ì\9d´í\84°ë¥¼ ë³´ì\97¬ì¤\84ê¹\8cì\9a\94?
+ feature_warning: 지물 %{num_features}개를 불러오고 있기 때문에 브라우저가 느려지거나 응답하지 않을 수 있습니다.
+ ì \95ë§\90 ì\9d´ ë\8d°ì\9d´í\84°ë¥¼ ë³´ì\8b\9cê² ì\8aµë\8b\88ê¹\8c?
load_data: 데이터 불러오기
loading: 불러오는 중...
tag_details:
wiki_link:
key: '%{key} 태그에 대한 위키 설명 문서'
tag: '%{key}=%{value} 태그에 대한 위키 설명 문서'
- wikidata_link: 위키데이터에서의 %{page} 항목
- wikipedia_link: 위키백과의 %{page} 문서
- telephone_link: '%{phone_number} 걸기'
+ wikidata_link: 위키데이터 %{page} 항목
+ wikipedia_link: 위키백과 %{page} 문서
+ telephone_link: '%{phone_number}로 전화 걸기'
note:
title: '참고: %{id}'
new_note: 새 참고
closed_title: '해결된 참고 #%{note_name}'
hidden_title: '숨겨진 참고 #%{note_name}'
open_by: '%{user} 사용자가 <abbr title=''%{exact_time}''>%{when} 전</abbr>에 만듦'
- open_by_anonymous: 익명이 <abbr title='%{exact_time}'>%{when} 전</abbr>에 만듦
+ open_by_anonymous: 익명 사용자가 <abbr title='%{exact_time}'>%{when} 전</abbr>에 만듦
commented_by: '%{user} 사용자가 <abbr title=''%{exact_time}''>%{when} 전</abbr>에
덧글을 남김'
- commented_by_anonymous: 익명이 <abbr title='%{exact_time}'>%{when} 전</abbr>에 덧글을
- 남김
+ commented_by_anonymous: 익명 사용자가 <abbr title='%{exact_time}'>%{when} 전</abbr>에
+ ë\8d§ê¸\80ì\9d\84 ë\82¨ê¹\80
closed_by: '%{user} 사용자가 <abbr title=''%{exact_time}''>%{when} 전</abbr>에 해결함'
- closed_by_anonymous: 익명이 <abbr title='%{exact_time}'>%{when} 전</abbr>에 해결함
+ closed_by_anonymous: 익명 사용자가 <abbr title='%{exact_time}'>%{when} 전</abbr>에 해결함
reopened_by: '%{user} 사용자가 <abbr title=''%{exact_time}''>%{when} 전</abbr>에 다시
활성화함'
- reopened_by_anonymous: 익명이 <abbr title='%{exact_time}'>%{when} 전</abbr>에 다시
- 활성화함
+ reopened_by_anonymous: 익명 사용자가 <abbr title='%{exact_time}'>%{when} 전</abbr>에
+ 다시 활성화함
hidden_by: '%{user} 사용자가 <abbr title=''%{exact_time}''>%{when} 전</abbr>에 숨김'
query:
- title: ì§\80물 쿼리
+ title: ì§\80물 ì \95ë³´
introduction: 근처의 지물을 찾으려면 지도에서 클릭하세요.
nearby: 근처 지물
enclosing: 둘러싸는 지물
next: 다음 »
previous: « 이전
changeset:
- anonymous: 익명
+ anonymous: 익명 사용자
no_edits: (편집 없음)
view_changeset_details: 바뀜집합 자세한 사항 보기
changesets:
timeout:
sorry: 죄송합니다, 요청하는 바뀜집합 목록을 얻는데 너무 오래 걸립니다.
rss:
+ title_all: OpenStreetMap 바뀜집합 토론
+ title_particular: 'OpenStreetMap 바뀜집합 #%{changeset_id} 토론'
+ comment: '바뀜집합 #%{changeset_id}에 %{author}님이 새 덧글을 남김'
commented_at_html: '%{when} 전에 업데이트함'
commented_at_by_html: '%{user} 사용자가 %{when} 전에 업데이트함'
+ full: 전체 토론
diary_entry:
new:
title: 새 일기 항목
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: 케이블 카
chair_lift: 체어 리프트
drag_lift: 드래그 리프트
+ gondola: 곤돌라 리프트
station: 삭도장
aeroway:
aerodrome: 비행장
taxiway: 유도로
terminal: 터미널
amenity:
+ animal_shelter: 동물 쉼터
arts_centre: 예술 회관
atm: ATM
bank: 은행
bicycle_parking: 자전거 주차장
bicycle_rental: 자전거 대여
biergarten: 비어 가든
+ boat_rental: 보트 대여
brothel: 매음굴
bureau_de_change: 환전소
bus_station: 버스 정류장
car_wash: 세차장
casino: 카지노
charging_station: 충전 스테이션
+ childcare: 육아
cinema: 영화관
clinic: 진료소
+ clock: 시계
college: 전문대학
community_centre: 커뮤니티 센터
courthouse: 법원
food_court: 푸드코트
fountain: 분수대
fuel: 주유소
+ gambling: 도박장
grave_yard: 묘지
gym: 피트니스 센터 / 체육관
health_centre: 보건소
library: 도서관
market: 시장
marketplace: 시장
+ monastery: 수도원
+ motorcycle_parking: 모터사이클 주차장
nightclub: 나이트 클럽
nursery: 보육원
nursing_home: 복지관
office: 사무실
parking: 주차장
+ parking_entrance: 주차장 입구
pharmacy: 약국
place_of_worship: 예배당
police: 경찰서
veterinary: 동물병원
village_hall: 주민센터
waste_basket: 쓰레기통
+ waste_disposal: 폐기물 처리장
youth_centre: 청소년 센터
boundary:
administrative: 행정 구역 경계
"yes": 다리
building:
"yes": 건물
+ craft:
+ brewery: 주조공
+ carpenter: 목수
+ electrician: 전기공
+ gardener: 정원사
+ painter: 화가
+ photographer: 사진 작가
+ plumber: 배관공
+ shoemaker: 구두공
+ tailor: 재단사
+ "yes": 공예 가게
emergency:
+ ambulance_station: 구급차 스테이션
+ defibrillator: 제세동기
+ landing_site: 비상 착륙지
phone: 긴급 전화
highway:
+ abandoned: 버려진 고속도로
bridleway: 승마로
bus_guideway: 가이드 버스 차선
bus_stop: 버스 정류장
construction: 건설 중인 고속도로
cycleway: 자전거로
+ elevator: 엘리베이터
emergency_access_point: 긴급 접근 지점
footway: 보도
ford: 여울
tertiary: 3차 도로
tertiary_link: 3차 도로
track: 추적
+ traffic_signals: 교통 신호
trail: 샛길
trunk: 간선 도로
trunk_link: 간선 도로
unclassified: 분류하지 않은 도로
unsurfaced: 비포장 도로
+ "yes": 도로
historic:
archaeological_site: 고고학장
battlefield: 전쟁터
boundary_stone: 경계석
- building: 건물
+ building: 사적 건물
+ bunker: 벙커
castle: 성
church: 교회
+ city_gate: 성문
citywalls: 성벽
fort: 성채
+ heritage: 문화 유산지
house: 주택
icon: 아이콘
manor: 장원
memorial: 기념관
mine: 광산
monument: 기념물
+ roman_road: 로마 도로
ruins: 유적
+ stone: 돌
tomb: 무덤
tower: 탑
wayside_cross: 도로변의 십자가
wayside_shrine: 길가의 신사
wreck: 난파선
+ junction:
+ "yes": 분기점
landuse:
allotments: 텃밭
basin: 웅덩이
road: 도로 지역
village_green: 녹색 마을
vineyard: 포도밭
+ "yes": 토지 이용
leisure:
beach_resort: 해수욕장
bird_hide: 조류 관찰지
+ club: 클럽
common: 공유지
+ dog_park: 개 공원
fishing: 낚시터
+ fitness_centre: 피트니스 센터
fitness_station: 피트니스 스테이션
garden: 정원
golf_course: 골프장
+ horse_riding: 승마
ice_rink: 아이스 링크
marina: 마리나
miniature_golf: 미니어처 골프
pitch: 운동장
playground: 놀이터
recreation_ground: 놀이 공원
+ resort: 리조트
sauna: 사우나
slipway: 슬립 웨이
sports_centre: 스포츠 센터
swimming_pool: 수영장
track: 육상 트랙
water_park: 워터 파크
+ "yes": 여가
+ man_made:
+ lighthouse: 등대
+ pipeline: 파이프라인
+ tower: 탑
+ works: 공장
+ "yes": 인공물
military:
airfield: 군용 비행장
barracks: 막사
forest: 숲
geyser: 간헐천
glacier: 빙하
+ grassland: 초원
heath: 황무지
hill: 언덕
island: 섬
reef: 암초
ridge: 산등성이
rock: 바위
+ saddle: 안부
+ sand: 모래
scree: 급사면
scrub: 우거진 숲
spring: 온천
- stone: 암석
+ stone: 돌
strait: 해협
tree: 나무
valley: 골짜기
wood: 산림
office:
accountant: 회계 사무소
+ administrative: 관리
architect: 건축사
company: 회사
employment_agency: 직업 소개소
travel_agent: 여행사
"yes": 사무실
place:
+ allotments: 텃밭
+ block: 벽돌
airport: 공항
city: 시
country: 국가
town: 마을
unincorporated_area: 비법인 지역
village: 마을
+ "yes": 장소
railway:
- abandoned: 폐지된 철도
+ abandoned: 버려진 철도
construction: 건설 중인 철도
disused: 폐선된 철도
disused_station: 폐선된 철도역
"yes": 상점
tourism:
alpine_hut: 고산장
+ apartment: 아파트먼트
artwork: 예술 작품
attraction: 견인
bed_and_breakfast: 잠자기와 아침 식사(민박)
camp_site: 캠프장
caravan_site: 캐러밴 사이트
chalet: 별장
+ gallery: 갤러리
guest_house: 게스트 하우스
hostel: 호스텔
hotel: 호텔
wadi: 와디
waterfall: 폭포
weir: 어량
+ "yes": 수로
admin_levels:
level2: 국가 경계
level4: 주 경계
results:
no_results: 결과가 없습니다
more_results: 더 많은 결과
- distance:
- one: 약 1km
- zero: 1km보다 적음
- other: 약 %{count}km
- direction:
- south_west: 남서
- south: 남
- south_east: 남동
- east: 동
- north_east: 북동
- north: 북
- north_west: 북서
- west: 서
layouts:
logo:
alt_text: OpenStreetMap 로고
tag_html: |-
<strong>태그</strong>는 음식점의 이름이나 도로의 속도 제한과 같은,
노드나 길에 대한 보충하는 데이터입니다.
+ rules:
+ title: 규칙
questions:
title: 질문 있나요?
paragraph_1_html: |-
url: /welcome
title: OSM에 오신 것을 환영합니다
description: OpenStreetMap 기초를 다루는 이 퀵 가이드로 시작합니다.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Ko:%EC%B4%88%EB%B3%B4%EC%9E%90_%EC%95%88%EB%82%B4%EC%84%9C
+ title: 초보자 가이드
+ description: 커뮤니티에서 유지하는 초보자 가이드
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: OSM의 질문 및 답변 사이트에서 질문하거나 답변을 찾아보세요.
+ mailing_lists:
+ title: 메일링 리스트
+ forums:
+ title: 포럼들
+ irc:
+ title: IRC
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
your_changeset: '%{commenter} 사용자가 당신이 %{time}에 만든 바뀜집합에 덧글을 달았습니다'
commented_changeset: '%{commenter} 사용자가 %{changeset_author}이 %{time}에 만든,
주시 중인 지도 바뀜집합에 덧글을 달았습니다'
+ partial_changeset_with_comment: '''%{changeset_comment}'' 덧글로'
+ partial_changeset_without_comment: 덧글 없이
details: 바뀜집합에 대한 자세한 사항은 %{url} 에서 찾을 수 있습니다.
message:
inbox:
close: 닫기
search:
search: 검색
+ get_directions: 길 찾기
+ get_directions_title: 두 지점 사이의 길 찾기
+ from: 출발지
+ to: 도착지
where_am_i: 내가 어디있나요?
where_am_i_title: 검색 엔진을 사용하여 현재 위치를 나타냅니다
submit_text: 가기
login_button: 로그인
register now: 지금 등록하세요
with username: '이미 OpenStreetMap 계정을 가지고 있나요? 계정 이름과 비밀번호로 로그인하세요:'
- with openid: '또는 OpenID로 로그인하세요:'
+ with external: 다른 제3자 로그인 방식 사용하기
new to osm: OpenStreetMap이 처음이세요?
to make changes: OpenStreetMap 데이터를 바꾸려면 계정이 있어야 합니다.
create account minute: 계정을 만듭니다. 1분도 걸리지 않습니다.
account is suspended: 죄송합니다, 의심스러운 활동으로 인해 계정이 일시 중지되었습니다.<br />이 문제를 토론하려면
<a href="%{webmaster}">웹마스터</a>에게 문의하세요.
auth failure: 죄송합니다, 입력한 정보로 로그인할 수 없습니다.
- openid missing provider: 죄송합니다, OpenID 제공자에 문의할 수 없습니다
- openid invalid: 죄송합니다, OpenID가 잘못된 형식인 것 같습니다
openid_logo_alt: OpenID로 로그인
- openid_providers:
+ auth_providers:
openid:
- title: OpenID로 로그인
+ title: OpenID로 로그인하기
alt: OpenID URL로 로그인
google:
- title: Google로 로그인
- alt: Google OpenID로 로그인
+ title: 구글로 로그인하기
+ alt: Google OpenID로 로그인하기
+ facebook:
+ title: 페이스북으로 로그인
+ alt: 페이스북 계정으로 로그인하기
+ windowslive:
+ title: 윈도 라이브로 로그인하기
+ alt: 윈도 라이브 계정으로 로그인하기
yahoo:
title: 야후로 로그인
- alt: 야후 OpenID로 로그인
+ alt: Yahoo OpenID로 로그인하기
wordpress:
- title: 워드프레스로 로그인
- alt: 워드프레스 OpenID로 로그인
+ title: 워드프레스로 로그인하기
+ alt: Wordpress OpenID로 로그인하기
aol:
- title: AOL로 로그인
- alt: AOL OpenID로 로그인
+ title: AOL로 로그인하기
+ alt: AOL OpenID로 로그인하기
logout:
title: 로그아웃
heading: OpenStreetMap에서 로그아웃
email address: '이메일 주소:'
new password button: 비밀번호 재설정
help_text: 가입할 때 사용한 이메일 주소를 입력하세요, 비밀번호를 재설정하여 사용할 수 있는 링크를 보내드립니다.
- notice email on way: ì£\84ì\86¡í\95©ë\8b\88ë\8b¤, ì\9e\83ì\96´ë²\84ë ¸ì\8aµë\8b\88ë\8b¤ :-( 곧 ì\9e¬ì\84¤ì \95ì\9d\84 í\95 ì\88\98 ì\9e\88ë\8f\84ë¡\9d í\95\98ì§\80ë§\8c, ì\9d´ë©\94ì\9d¼ì\9d\84 ì\82¬ì\9a©í\95 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.
+ notice email on way: ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e\8aì\97\88ë\8b¤ë\8b\88, ì\95\88í\83\80ê¹\9dì\8aµë\8b\88ë\8b¤ :-( ë¹\84ë°\80ë²\88í\98¸ ì\9e¬ì\84¤ì \95ì\9d\84 í\95 ì\88\98 ì\9e\88ë\8f\84ë¡\9d ì\9d´ë©\94ì\9d¼ì\9d´ ë°\9cì\86¡ë\90\98ì\97\88ì\8aµë\8b\88ë\8b¤.
notice email cannot find: 이메일 주소를 찾지 못해 죄송합니다.
reset_password:
title: 비밀번호 재설정
title="이메일 주소에 대한 부분을 포함한 위키 개인 정보 정책">개인 정보 정책</a>을 참고하세요)
display name: '보여줄 이름:'
display name description: 공개적으로 보여질 사용자 이름입니다. 나중에 환경 설정에서 바꿀 수 있습니다.
- openid: '%{logo} OpenID:'
+ external auth: '제3자 인증:'
password: '비밀번호:'
confirm password: '비밀번호 확인:'
- use openid: 또는 %{logo} OpenID를 사용하여 로그인하세요
- openid no password: OpenID로 비밀번호가 필요하지 않지만 몇 가지 추가 도구나 서버는 여전히 비밀번호가 필요할 수 있습니다.
- openid association: |-
- <p>OpenID는 아직 OpenStreetMap 계정과 연결되지 않았습니다.</p>
+ use external auth: 다른 제3자 로그인 방식 사용하기
+ auth association: |-
+ <p>당신의 계정은 아직 오픈스트리트맵 계정과 연동되어 있지 않습니다.</p>
<ul>
- <li>OpenStreetMap에 새로 가입하려면 아래의 양식을 사용하여 새 계정을 만드세요.</li>
+ <li>오픈스트리트맵에 처음이라면, 아래 폼을 이용하여, 새 계정을 만들어주세요.</li>
<li>
- 이미 계정이 있다면 사용자 이름과 비밀번호를 사용해 로그인하고 나서
- 사용자 설정에서 OpenID와 계정을 연결할 수 있습니다.
+ 이미 계정이 있으시다면, 로그인할 수 있습니다.
+ 당신의 사용자명과 비밀번호를 사용하여 계정을 연동할 수 있습니다.
+ 당신의 사용자 설정에 있는 당신의 ID와 함께
</li>
</ul>
continue: 가입하기
my notes: 내 참고
my messages: 내 메시지
my profile: 내 프로필
- my settings: 내 설정
+ my settings: 프로필 설정
my comments: 내 덧글
oauth settings: oauth 설정
blocks on me: 나를 차단
friend: 친구
account:
title: 계정 편집
- my settings: 내 설정
+ my settings: 프로필 설정
current email address: '현재 이메일 주소:'
new email address: '새 이메일 주소:'
email never displayed publicly: (절대 공개하지 않습니다)
+ external auth: '외부 인증:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: 이게 뭐죠?
public editing:
heading: '공개 편집:'
- enabled: í\99\9cì\84±í\99\94í\96\88ì\8aµë\8b\88ë\8b¤. ì\9dµëª\85ì\9d´ ì\95\84ë\8b\8c ì\82¬ì\9a©ì\9e\90ë\8a\94 데이터를 편집할 수 있습니다.
+ enabled: í\99\9cì\84±í\99\94í\96\88ì\8aµë\8b\88ë\8b¤. ì\9dµëª\85ì\9d´ ì\95\84ë\8b\88ë©° 데이터를 편집할 수 있습니다.
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: 이게 뭐죠?
- disabled: ë°\94í\99\9cì\84±í\99\94ë\90\98ì\96´ ë\8d°ì\9d´í\84°ë¥¼ í\8e¸ì§\91í\95 ì\88\98 ì\97\86ì\9c¼ë©°, 모ë\93 ì\9d´ì \84 í\8e¸ì§\91ì\9d\80 ì\9dµëª\85ì\9c¼ë¡\9c ë\90©니다.
+ disabled: ë°\94í\99\9cì\84±í\99\94ë\90\98ì\96´ ë\8d°ì\9d´í\84°ë¥¼ í\8e¸ì§\91í\95 ì\88\98 ì\97\86ì\9c¼ë©°, 모ë\93 ì\9d´ì \84 í\8e¸ì§\91ì\9d\80 ì\9dµëª\85ì\9e\85니다.
disabled link text: 왜 편집할 수 없나요?
public editing note:
heading: 공개 편집
- text: 현재 편집은 익명이고 사람이 당신에게 메시지를 보내거나 위치를 볼 수 없습니다. 당신이 편집한 것으로 나타내고 사람이 웹
- 사이트를 통해 연락을 허용하려면 아래 버튼을 클릭하세요. <b>0.6 API 역전 이후 공개 새용자만 지도 데이터를 편집할 수 있습니다</b>.
- (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">이유 알아보기</a>).<ul><li>이메일
- 주소는 공개함으로서 추가로 공개하지 않습니다.</li><li>이 작업을 되돌릴 수 없고 모든 새 사용자는 지금 기본값으로 공개입니다.</li></ul>
+ text: 현재 편집은 익명으로 나타나며, 다른 사람에게서 메시지를 받을 수 없고 자신의 위치가 공개되지 않습니다. 자신이 편집한 것을
+ 드러내고 다른 사람이 웹 사이트를 통해 연락할 수 있게 하려면 아래 버튼을 클릭하세요. <b>0.6 API 개편 이후 공개 사용자만
+ 지도 데이터를 편집할 수 있습니다</b>. (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">이유
+ 알아보기</a>).<ul><li>공개 사용자가 되더라도 이메일 주소는 공개되지 않습니다.</li><li>이 조치는 취소할 수 없으며,
+ 모든 신규 사용자는 현재 기본적으로 공개 계정입니다.</li></ul>
contributor terms:
heading: '기여자 약관:'
agreed: 새 기여자 약관에 동의했습니다.
introduction_2: 이메일에 있는 링크를 클릭하여 계정을 확인하면 매핑을 시작할 수 있습니다.
press confirm button: 계정을 활성화하려면 아래 확인 버튼을 누르세요.
button: 확인
+ success: 계정을 확인했습니다, 가입해주셔서 감사합니다!
already active: 이 계정은 이미 확인했습니다.
unknown token: 확인 코드가 만료되었거나 존재하지 않습니다.
reconfirm_html: 확인 이메일을 다시 보낼 필요가 있다면, <a href="%{reconfirm}">여기를 클릭하세요</a>.
heading: 이메일 주소 바꾸기 확인
press confirm button: 새 이메일 주소를 확인하여면 아래에 확인 버튼을 누르세요.
button: 확인
- success: 이메일 계정을 확인했습니다, 가입해주셔서 감사합니다!
+ success: 이메일 주소 변경을 확인했습니다!
failure: 이메일 주소는 이미 이 토큰으로 확인했습니다.
+ unknown_token: 확인 코드가 만료되었거나 존재하지 않습니다.
set_home:
flash success: 집 위치를 성공적으로 저장했습니다
go_public:
이 결정은 곧 관리자가 검토할 것입니다. 또는
이 문제를 토론하려면 %{webmaster}에게 문의할 수 있습니다.
</p>
+ auth_failure:
+ connection_failed: 인증 서버와의 연결에 실패했습니다.
+ no_authorization_code: 인증 코드가 없습니다.
+ unknown_signature_algorithm: 알려지지 않은 인증 알고리즘
user_role:
filter:
not_an_administrator: 관리자만 사용자 역할 관리를 수행할 수 있습니다, 당신은 관리자가 아닙니다.
paste_html: HTML을 붙여 넣어 웹사이트에 포함시키세요
view_larger_map: 큰 지도 보기
key:
- title: 지도 키
- tooltip: 지도 키
- tooltip_disabled: 지도 키는 표준 레이어에서만 사용할 수 있습니다
+ title: 범례
+ tooltip: 범례
+ tooltip_disabled: 범례는 표준 레이어에서만 사용할 수 있습니다
map:
zoom:
in: 확대
createnote_disabled_tooltip: 지도에 참고를 추가하려면 확대
map_notes_zoom_in_tooltip: 지도 참고를 보려면 확대
map_data_zoom_in_tooltip: 지도 데이터를 보려면 확대
- queryfeature_tooltip: 지물 쿼리
+ queryfeature_tooltip: 지물 정보
+ queryfeature_disabled_tooltip: 지물 정보를 확인하려면 지도를 확대하세요
changesets:
show:
comment: 덧글
comment_and_resolve: 덧글 & 해결
comment: 덧글
edit_help: 편집하려는 위치에 지도를 이동하고 확대한 다음, 여기를 클릭하세요.
+ directions:
+ engines:
+ graphhopper_bicycle: 자전거 (GraphHopper)
+ graphhopper_foot: 도보 (GraphHopper)
+ mapquest_bicycle: 자전거 (MapQuest)
+ mapquest_car: 자동차 (MapQuest)
+ mapquest_foot: 도보 (MapQuest)
+ osrm_car: 자동차 (OSRM)
+ directions: 길
+ distance: 거리
+ errors:
+ no_route: 두 장소 사이의 경로를 찾을 수 없습니다.
+ no_place: 죄송합니다 - 그 장소를 찾을 수 없습니다.
+ instructions:
+ unnamed: 이름 없음
+ courtesy: '%{link}의 길 풍습'
+ time: 시간
query:
node: 노드
way: 길
feed:
title: 'Set vun Ännerungen: %{id}'
title_comment: Set vun Ännerungen %{id} - %{comment}
+ join_discussion: Loggt Iech an, fir bei der Diskussioun matzemaachen
discussion: Diskussioun
node:
title: 'Knuet: %{name}'
charging_station: Statioun fir ze lueden
cinema: Kino
clinic: Klinik
+ clock: Auer
crematorium: Crematoire
dentist: Zänndokter
doctors: Dokteren
library: Bibliothéik
market: Maart
marketplace: Maartplaz
+ monastery: Klouschter
office: Büro
parking: Parking
pharmacy: Apdikt
"yes": Bréck
building:
"yes": Gebai
+ craft:
+ electrician: Elektriker
+ gardener: Gäertner
+ photographer: Fotograf
+ shoemaker: Schouster
+ tailor: Schneider
emergency:
+ defibrillator: Defibrillator
phone: Noutruff-Telefon
highway:
bridleway: Wee fir Päerd
bus_guideway: Busspur
construction: Autobunn (am Bau)
+ elevator: Lift
footway: Fousswee
ford: Fuert
milestone: Kilometersteen
steps: Trap
street_lamp: Stroosseluucht
tertiary: Kleng Strooss
+ "yes": Strooss
historic:
archaeological_site: Archeologesche Site
battlefield: Schluechtfeld
- building: Gebai
+ building: Historescht Gebai
+ bunker: Bunker
castle: Schlass
church: Kierch
+ city_gate: Stadpaart
citywalls: Stadmaueren
house: Haus
memorial: Monument
monument: Monument
+ roman_road: Réimerwee
ruins: Ruinen
+ stone: Steen
tomb: Graf
tower: Tuerm
wreck: Wrack
residential: Wunngéigend
vineyard: Wéngert
leisure:
+ club: Club
garden: Gaart
golf_course: Golfterrain
ice_rink: Äispist
sauna: Sauna
stadium: Stadion
swimming_pool: Schwämm
+ "yes": Fräizäit
+ man_made:
+ lighthouse: Liichttuerm
+ pipeline: Pipeline
+ tower: Tuerm
+ works: Fabrik
military:
airfield: Militärfluchhafen
barracks: Kasär
glacier: Gletscher
hill: Hiwwel
island: Insel
+ land: Land
marsh: Mouer
moor: Mouer
point: Punkt
rock: Steng
+ sand: Sand
spring: Quell
stone: Steen
tree: Bam
wetland: Fiichtgebitt
wood: Bësch
office:
+ administrative: Verwaltung
architect: Architekt
company: Firma
employment_agency: Aarbechtsamt
travel_agent: Reesbüro
"yes": Büro
place:
+ block: Block
airport: Fluchhafen
city: Stad
country: Land
subdivision: Ënnerdeelung
town: Stad
village: Duerf
+ "yes": Plaz
railway:
abandoned: Fréier Eisebunn
construction: Eisebunn (am Bau)
miniature: Miniatur-Eisebunn
proposed: Proposéiert Eisebunnslinn
station: Gare (Eisebunn)
- subway: Metro-Statioun
+ subway: Metro
tram: Tram
shop:
antiques: Antiquitéitegeschäft
travel_agency: Reesbüro
"yes": Geschäft
tourism:
+ apartment: Appartement
artwork: Konschtwierk
attraction: Attraktioun
cabin: Hütt
camp_site: Camping
chalet: Chalet
+ gallery: Galerie
hotel: Hotel
information: Informatioun
motel: Motel
results:
no_results: Näischt fonnt
more_results: Méi Resultater
- distance:
- one: ongeféier 1km
- zero: manner wéi 1km
- other: ongeféier %{count}km
- direction:
- south_west: südwest
- south: südlech
- south_east: südost
- east: ëstlech
- north_east: nordost
- north: nërdlech
- north_west: nordwest
- west: westlech
layouts:
logo:
alt_text: OpenStreetMap Logo
user_diaries: Benotzer Bloggen
edit_with: Ännere mat %{editor}
intro_header: Wëllkomm bei OpenStreetMap!
+ intro_text: OpenStreetMap ass eng Kaart vun der Welt, déi vu Leit wéi Iech gemaach
+ gouf an déi fräi ënner enger oppener Lizenz benotzt ka ginn.
intro_2_create_account: E Benotzerkont uleeën
partners_partners: Partner
osm_offline: D'OpenStreetMap Datebank ass elo net disponibel well dru geschafft
title: Wëllkomm!
whats_on_the_map:
title: Wat ass op der Kaart
+ rules:
+ title: Regelen!
questions:
title: Nach Froen?
add_a_note:
welcome:
url: /welcome
title: Wëllkomm bäi OSM
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Stellt eng Fro oder kuckt no Äntwerten um OSM-Site mat de Froen
an Äntwerten.
+ mailing_lists:
+ title: Mailing-Lëschten
+ forums:
+ title: Forumen
+ irc:
+ title: IRC
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
next: Weider
local_knowledge_title: Lokaalt Wëssen
open_data_title: Open Data
+ legal_title: Legal
partners_title: Partner
notifier:
diary_comment_notification:
create account minute: Maacht e Benotzerkont. Et dauert nëmmen eng Minutt.
no account: Hutt Dir kee Benotzerkont?
openid_logo_alt: Alogge mat enger OpenID
- openid_providers:
+ auth_providers:
openid:
title: Alogge mat OpenID
alt: Alogge mat enger OpenID URL
google:
title: Alogge mat Google
alt: Alogge mat enger Google OpenID
+ facebook:
+ title: Mat Facebook aloggen
+ alt: Mat engem Facebook Benotzerkont aloggen
+ windowslive:
+ title: Mat Windows Live aloggen
+ alt: Mat engem Windows-Live Benotzerkont aloggen
yahoo:
title: Alogge mat Yahoo
alt: Alogge mat enger Yahoo OpenID
email address: 'E-Mail-Adress:'
confirm email address: 'E-Mail-Adress confirméieren:'
display name: Numm weisen
- openid: '%{logo} OpenID:'
password: 'Passwuert:'
confirm password: 'Passwuert confirméieren:'
continue: Mellt Iech un
confirm_email:
heading: Eng Ännerung vun enger E-Mailadress confirméieren
button: Confirméieren
+ unknown_token: Dee Confirmatiouns-Code ass ofgelaf oder et gëtt en net.
go_public:
flash success: All Är Ännerunge sinn elo ëffentlech, an Dir däerft elo änneren.
make_friend:
empty: Et goufe keng sou Benotzer fonnt
suspended:
webmaster: Webmaster
+ auth_failure:
+ no_authorization_code: Keen Autorisatiouns-Code
user_role:
filter:
not_an_administrator: Nëmmen Administrateure kënnen d'Gestioun vun de Rolle
show:
title: '%{block_on} gespaart vum %{block_by}'
heading: '%{block_on} gespaart vum %{block_by}'
+ ago: viru(n) %{time}}
status: Status
show: Weisen
edit: Änneren
resolve: Léisen
reactivate: Reaktivéieren
comment: Bemierkung
+ directions:
+ directions: Richtungen
+ distance: Distanz
+ instructions:
+ continue_without_exit: Virun op %{name}
+ sharp_right_without_exit: Schaarf riets op %{name}
+ sharp_left_without_exit: Schaarf lénks op %{name}
+ via_point_without_exit: (iwwer de Punkt)
+ leave_roundabout_without_exit: Aus dem Kreesverkéier erausgoen - %{name}
+ stay_roundabout_without_exit: Am Kreesverkéier bleiwen - %{name}
+ unnamed: Strooss ouni Numm
+ time: Zäit
query:
way: Wee
relation: Relatioun
# Messages for Lithuanian (lietuvių)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Aurimas
# Author: Cyklopas
# Author: Eitvys200
# Author: Garas
# Author: Pauliuz
# Author: Pdxx
# Author: Perkunas
+# Author: Ruila
---
lt:
time:
tracetag: Pėdsako žyma
user: Naudotojas
user_preference: Naudotojo nustatymai
- user_token: Vartotojo ženklas
+ user_token: Naudotojo prieigos raktas
way: Kelias
way_node: Kelio mazgas
way_tag: Kelio žyma
wiki_link:
key: Žymos %{key} wiki aprašymo puslapis
tag: Žymos %{key}=%{value} wiki aprašymo puslapis
+ wikidata_link: '%{page} elementas Wikidata svetainėje'
wikipedia_link: '%{page} straipsnis Vikipedijoje'
telephone_link: Skambinti %{phone_number}
note:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Lyno keltuvas
chair_lift: Keltuvas
+ drag_lift: Velkamas keltuvas
+ gondola: Gondola
+ station: Lyno stotis
aeroway:
aerodrome: Aerodromas
apron: Oro uosto aikštelė
taxiway: Riedėjimo takas
terminal: Terminalas
amenity:
+ animal_shelter: Gyvūnų prieglauda
arts_centre: Menų centras
atm: Bankomatas
bank: Bankas
bicycle_parking: Dviračių stovėjimo aikštelė
bicycle_rental: Dviračių nuoma
biergarten: Lauko baras
+ boat_rental: Valčių nuoma
brothel: Viešieji namai
bureau_de_change: Valiutos keitimo punktas
bus_station: Autobusų stotis
car_wash: Automobilių plovykla
casino: Kazino
charging_station: Įkrovimo stotis
+ childcare: Vaikų priežiūra
cinema: Kino teatras
clinic: Klinika
+ clock: Laikrodis
college: Koledžas
community_centre: Bendruomenės centras
courthouse: Teismo pastatas
food_court: Savitarnos kavinė
fountain: Fontanas
fuel: Degalinė
+ gambling: Lošimas
grave_yard: Kapinės
gym: Sveikatingumo centras / sporto salė
health_centre: Sveikatingumo centras
library: Biblioteka
market: Turgus
marketplace: Turgavietė
+ monastery: Vienuolynas
+ motorcycle_parking: Motociklų stovėjimo aikštelė
nightclub: Naktinis klubas
nursery: Seselės kabinetas
nursing_home: Slaugos namai
office: Biuras
parking: Stovėjimo aikštelė
+ parking_entrance: Įvažiavimas į stovėjimo aikštelę
pharmacy: Vaistinė
place_of_worship: Maldos namai
police: Policija
veterinary: Veterinarijos chirurgija
village_hall: Nedidelio miestelio valdžios būstinė
waste_basket: Atliekų krepšelis
+ waste_disposal: Atliekų šalinimas
youth_centre: Jaunimo centras
boundary:
administrative: Administracinė riba
"yes": Tiltas
building:
"yes": Pastatas
+ craft:
+ brewery: Alaus darykla
+ carpenter: Dailidė
+ electrician: Elektrikas
+ gardener: Sodininkas
+ painter: Dažytojas
+ photographer: Fotografas
+ plumber: Santechnikas
+ shoemaker: Batsiuvys
+ tailor: Siuvėjas
+ "yes": Amatų parduotuvė
emergency:
+ ambulance_station: Greitosios medicinos pagalbos stotis
+ defibrillator: Defibriliatorius
+ landing_site: Avarinio nusileidimo aikštelė
phone: Avarinis telefonas
highway:
+ abandoned: Apleistas kelias
bridleway: Jodinėjimo takas
bus_guideway: Bėginio autobuso linija
bus_stop: Autobusų stotelė
construction: Statomas kelias
cycleway: Dviračių takas
+ elevator: Liftas
emergency_access_point: Skubios prieigos punktas
footway: Pėsčiųjų takas
ford: Brasta
tertiary: Trečios reikšmės kelias
tertiary_link: Trečios reikšmės kelias
track: Vėžės
+ traffic_signals: Šviesoforas
trail: Takas
trunk: Magistralinis kelias
trunk_link: Magistralinis kelias
unclassified: Neklasifikuotas kelias
unsurfaced: Kelias be dangos
+ "yes": Kelias
historic:
archaeological_site: Archeologinė vieta
battlefield: Mūšio vieta
boundary_stone: Pasienio akmuo
- building: Pastatas
+ building: Istorinis pastatas
+ bunker: Bunkeris
castle: Pilis
church: Bažnyčia
+ city_gate: Miesto vartai
citywalls: Miesto sienos
fort: Fortas
+ heritage: Paveldas
house: Namas
icon: Ikona
manor: Dvaras
memorial: Memorialas
mine: Kasykla
monument: Paminklas
+ roman_road: Romėnų kelias
ruins: Griuvėsiai
+ stone: Akmuo
tomb: Kapas
tower: Bokštas
wayside_cross: Pakelės kryžius
wayside_shrine: Koplytstulpis
wreck: Nuskendęs laivas
+ junction:
+ "yes": Sandūra
landuse:
allotments: Sodai/sodininkų bendrijos
basin: Baseinas
road: Pakelės
village_green: Gyvenvietės žalioji zona
vineyard: Vynuogynas
+ "yes": Žemėnauda
leisure:
beach_resort: Pajūrio kurortas
bird_hide: paukščių stebėjimo vieta
+ club: Klubas
common: Bendra žemė
+ dog_park: Šunų parkas
fishing: Žvejybos zona
+ fitness_centre: Sveikatingumo centras
fitness_station: Fitneso treniruočių vieta
garden: Sodas
golf_course: Golfo laukas
+ horse_riding: Jodinėjimas žirgais
ice_rink: Slidinėjimo vieta (paklojant užšąlantį vandenį)
marina: Valčių ir nedidelių laivų prieplauka
miniature_golf: Mini golfas
pitch: Sporto aikštė
playground: Žaidimų aikštelė
recreation_ground: Rekreacinis plotas
+ resort: Kurortas
sauna: Sauna
slipway: Slipas
sports_centre: Sporto centras
swimming_pool: Plaukiojimo baseinas
track: Bėgimo takelis
water_park: Vandens parkas
+ "yes": Laisvalaikis
+ man_made:
+ lighthouse: Švyturys
+ pipeline: Vamzdynas
+ tower: Bokštas
+ works: Gamykla
+ "yes": Žmogaus sukurta
military:
airfield: Karinis aerodromas
barracks: Kareivinės
forest: Miškas
geyser: Geizeris
glacier: Ledynas
+ grassland: Žolė
heath: Dykynė
hill: Kalva
island: Sala
reef: Rifas
ridge: Ketera
rock: Uola
+ saddle: Balnas
+ sand: Smėlis
scree: Skardis
scrub: Krūmai
spring: Šaltinis
wood: Medžiai
office:
accountant: Buhalteris
+ administrative: Administracija
architect: Architektas
company: Bendrovė
employment_agency: Įdarbinimo agentūra
travel_agent: Kelionių agentūra
"yes": Biuras
place:
+ allotments: Kolektyviniai sodai
+ block: Blokas
airport: Oro uostas
city: Miestas
country: Šalis
town: Miestas
unincorporated_area: Neįregistruota erdvė
village: Kaimas
+ "yes": Vietovė
railway:
abandoned: Apleistas geležinkelis
construction: Statomas geležinkelis
spur: Geležinkelio atsišakojimas
station: Geležinkelio stotis
stop: Geležinkelio sustojimas
- subway: Metro stotis
+ subway: Metro
subway_entrance: Įėjimas į metro
switch: Geležinkelio punktai
tram: Tramvajus
"yes": Parduotuvė
tourism:
alpine_hut: Kalnų trobelė
+ apartment: Apartamentai
artwork: Meno dirbiniai
attraction: Lankytina vieta
bed_and_breakfast: Nakvynės namai (viešbutis)
camp_site: Stovyklavietė
caravan_site: Kemperių aikštelė
chalet: Trobelė
+ gallery: Galerija
guest_house: Svečių namai
hostel: Hostelis
hotel: Viešbutis
wadi: Vadis
waterfall: Krioklys
weir: Slenkstis
+ "yes": Vandens vektorius
admin_levels:
level2: Šalies sienos
level4: Valstybės sienos
results:
no_results: Daugiau rezultatų nėra
more_results: Daugiau rezultatų
- distance:
- one: maždaug 1km
- zero: mažiau nei 1km
- other: maždaug %{count}km
- direction:
- south_west: pietvakariai
- south: pietūs
- south_east: pietryčiai
- east: rytai
- north_east: šiaurės rytai
- north: šiaurė
- north_west: šiaurės vakarai
- west: vakarai
layouts:
logo:
alt_text: OpenStreetMap logotipas
legal_babble:
title_html: Autorinės teisės ir licencija
intro_1_html: |-
- OpenStreetMap yra <i>laisvai prieinama</i>, licenzijuota pagal <a
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> yra <i>laisvai prieinamas</i>, licencijuotas <a
+ href="http://osmfoundation.org/">OpenStreetMap fondo</a> (OSMF) pagal <a
href="http://opendatacommons.org/licenses/odbl/">„Open Data
Commons Open Database License“</a> (ODbL).
intro_2_html: |-
alt: Pavyzdys kaip galima priskirti paskyrimus OpenStreetMap svetainėje
title: Priskyrimo pavyzdys
more_title_html: Sužinokite daugiau
- more_1_html: Sužinokite daugiau dėl mūsų duomenų naudojimo, kaip pažymėti prisidėjusius,
- svetainėje <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">DUK dėl
- legalumo</a>.
+ more_1_html: |-
+ Sužinokite daugiau apie mūsų duomenų naudojimą, kaip pažymėti prisidėjusius <a
+ href="http://osmfoundation.org/Licence">OSMF licencijavimo puslapyje</a> ir bendruomenės <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">DUK dėl legalumo</a>.
more_2_html: |-
Nors OpenStreetMap duomenys yra atviri, mes negalime pateikti free-of-charge žemėlapių API trečiųjų šalių vystytojams.
contributors_nz_html: |-
<strong>Naujoji Zelandija</strong>: Turi duomenys nuo
Land Information New Zealand. Karūnos išsaugotos autorinės teisės.
+ contributors_si_html: |-
+ <strong>Slovėnija</strong>: Panaudoti duomenys iš <a href="http://www.gu.gov.si/en/">Apžiūros ir kartografavimo valdžios</a> bei
+ <a href="http://www.mkgp.gov.si/en/">Žemės ūkio, miškų ir maisto ministerijos</a>
+ (vieša Slovėnijos informacija).
contributors_za_html: |-
<strong>Pietų Afrika</strong>: Turi duomenis nuo:
<a href="http://www.ngi.gov.za/">Chief Directorate:
<a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">šioje
svetainėje</a> arba užpildykite <a href="http://dmca.openstreetmap.org/">šį
pildymų lapą</a>.
+ trademarks_title_html: <span id="trademarks"></span>Prekių ženklai
+ trademarks_1_html: OpenStreetMap ir lupos logotipas yra registruoti OpenStreetMap
+ fondo prekių ženklai. Jei turite klausimų apie šių ženklų naudojimą, siųskite
+ savo klausimus <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licencijavimo
+ darbinei grupei</a>.
welcome_page:
title: Sveiki atvykę!
introduction_html: Sveikiname prisijungus prie OpenStreetMap - laisvo ir redaguojamo
upeliukas, ežeras ar pastatas.
tag_html: <strong>žyma/tag</strong> - informacija apie tašką ar liniją, pavyzdžiui
restorano pavadinimas arba kelio greičio apribojimas.
+ rules:
+ title: Taisyklės!
+ paragraph_1_html: "OpenStreetMap turi nedaug formalių taisyklių, bet mes tikimės,
+ kad visi dalyviai\nbendradarbiaus ir bendraus su bendruomene. Jei svarstote
+ bet kokius\nveiksmus, išskyrus rankinį redagavimą, perskaitykite ir laikykitės
+ rekomendacijų apie\n<a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>importus</a>
+ ir \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>automatizuotą
+ redagavimą</a>."
questions:
title: Turite klausimų?
paragraph_1_html: |-
other_concerns:
title: Kiti rūpesčiai
explanation_html: Jei abejojate, kaip mūsų duomenys naudojami arba dėl turinio,
- prašome perskaityti mūsų <a href='/copyright'>teisių ir licencijos puslapį</a>,
+ perskaitykite mūsų <a href='/copyright'>teisių ir licencijos puslapį</a>,
kur rasite daugiau teisinės informacijos, arba susisiekite su atitinkama <a
href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF darbo grupe</a>.
help_page:
url: /welcome
title: Sveiki atvykę į OSM
description: Pradėkite šiuo greitu vadovu apie OpenStreetMap pagrindus.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Lt:Beginners%27_guide
+ title: Pradedančiojo vadovas
+ description: Bendruomenės palaikomas vadovas pradedantiesiems.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Užduokite klausimą arba ieškokite atsakymą OSM klausimų-ir-atsakymų
svetainėje.
+ mailing_lists:
+ title: El. pašto grupės
+ description: Užduokite klausimą ar diskutuokite apie įdomius dalykus daugelyje
+ teminių ar regioninių el. pašto grupių.
+ forums:
+ title: Forumai
+ description: Klausimai ir diskusijos tiems, kas teikia pirmenybę el. skelbimų
+ lentos stiliaus sąsajai.
+ irc:
+ title: IRC
+ description: Interaktyvūs pokalbiai daugeliu kalbų, daugeliu temų.
+ switch2osm:
+ title: switch2osm
+ description: Pagalba kompanijoms ir organizacijoms pereinant į OpenStreetMap
+ paremtus žemėlapius ir kitas paslaugas.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
orotofoto nuotraukas, GPS įrenginius ir paprastus lauko žemėlapius, tikrindami,
kad OSM duomenys yra teisingi ir aktualūs.
community_driven_title: Bendruomenės vystomas
+ community_driven_html: OpenStreetMap bendruomenė yra įvairi, aistringa ir auganti
+ kiekvieną dieną. Tarp mūsų talkininkų yra žymėtojai entuziastai, GIS profesionalai,
+ OSM stotis prižiūrintys inžinieriai, žmonės žymintys nelaimių vietas ir daug
+ kitų. Norėdami daugiau sužinoti apie bendruomenę, skaitykite <a href='%{diary_path}'>naudotojų
+ dienoraščius</a>, <a href='http://blogs.openstreetmap.org/'>bendruomenės dienoraščius</a>
+ ir <a href='http://www.osmfoundation.org/'>OSM fondo</a> svetainę.
open_data_title: Atviri duomenys
open_data_html: 'OpenStreetMap yra <i>atviri duomenys</i>: jūs galite laisvai
juos naudoti bet kokiems tikslams, tol kol nepamirštate paminėti OpenStreetMap
ir jo talkininkus. Jei keičiate arba pildote duomenis, galite rezultatą teikti
tik su tokia pačia licencija. Daugiau informacijos rasite <a href=''%{copyright_path}''>Teisės
ir licencija</a>.'
+ legal_title: Teisės
+ legal_html: "Šis puslapis ir daugelis kitų susijusių paslaugų yra formaliai valdomi
+ \n<a href='http://osmfoundation.org/'>OpenStreetMap fondo</a> (OSMF) \nbendruomenės
+ vardu.\n<br> \n<a href='http://osmfoundation.org/Contact'>Susisiekite su OSMF</a>,
+ \njei turite licencijavimo, autoriaus teisių ar kitų teisinių klausimų ar problemų."
partners_title: Partneriai
notifier:
diary_comment_notification:
greeting: Sveiki,
hopefully_you: Kažkas (tikimės, kad tai jūs) nori pakeisti savo elektroninio
pašto adresą iš %{server_url} į %{new_address}.
- click_the_link: Jei tai jūs, prašome paspausti žemiau esančią nuorodą, kad patvirtintumėte
- pakeitimą.
+ click_the_link: Jei tai jūs, paspauskite žemiau esančią nuorodą pakeitimui patvirtinti.
lost_password:
subject: '[OpenStreetMap] Slaptažodžio atstatymo prašymas'
lost_password_plain:
send_button: Siųsti
back_to_inbox: Atgal į gautus
message_sent: Pranešimas išsiųstas
- limit_exceeded: Paskutiniu metu išsiuntėte labai daug žinučių. Prašome šiek
- tiek palaukti, prieš siunčiant dar daugiau žinučių.
+ limit_exceeded: Paskutiniu metu išsiuntėte labai daug žinučių. Šiek tiek palaukite
+ prieš bandydami siųsti daugiau.
no_such_message:
title: Nėra tokio pranešimo
heading: Nėra tokio pranešimo
close: Uždaryti
search:
search: 'Paieška:'
+ get_directions: Gauti nurodymus
+ get_directions_title: Rasti maršruto nurodymus tarp dviejų taškų
+ from: Iš
+ to: Iki
where_am_i: Kur aš dabar?
where_am_i_title: Apibūdinti dabartinę poziciją naudojant paieškos variklį
submit_text: Rodyti
submit: Keisti
show:
title: OAuth informacija programai %{app_name}
- key: 'Vartotojo raktas:'
- secret: 'Vartotojų paslaptis:'
+ key: 'Naudotojo raktas:'
+ secret: 'Naudotojo paslaptis:'
url: 'Teikti prašymą ženklo nuorodai:'
access_url: 'Prieiga ženklo nuorodai:'
authorize_url: 'Leisti nuorodą:'
edit: Keisti detales
delete: Pašąlinti klientą
confirm: Esate tikras?
- requests: Prašoma, kad naudotojas leistų
+ requests: 'Prašoma šių teisių iš naudotojo:'
allow_read_prefs: skaityti savo naudotojo nustatymus.
allow_write_prefs: keisti savo naudotojo nustatymus.
allow_write_diary: kurti dienoraščio įrašus, komentarus ir susirasti draugų.
lost password link: Pamiršote slaptažodį?
login_button: Prisijungti
register now: Užsiregistruoti
- with username: 'Jau turite OpenStreetMap paskyrą? Prašome prisijunkite savo
- naudotojo vardu ir slaptažodžiu:'
- with openid: 'Taipogi prisijungimui galite naudoti savo OpenID:'
+ with username: 'Jau turite OpenStreetMap paskyrą? Prisijunkite savo naudotojo
+ vardu ir slaptažodžiu:'
+ with external: 'Alternatyviai, naudokite trečią šalį prisijungimui:'
new to osm: Nesusipažinę su OpenStreetMap?
to make changes: Norėdami keisti OpenStreetMap duomenis, turite turėti savo
paskyrą.
create account minute: Sukurkite paskyra. Tai užtruks tik minutę.
no account: Neturite savo paskyros?
- account not active: Atsiprašome, jūsų paskyra dar neaktyvuota.<br />Prašome
- pasinaudoti nuoroda, kurią mes nusiuntėme į jūsų el. paštą arba <a href="%{reconfirm}">prašykite
- naujos patvirtinančios nuorodos</a>.
+ account not active: Atsiprašome, jūsų paskyra dar neaktyvuota.<br />Pasinaudokite
+ nuoroda, kurią mes nusiuntėme į jūsų el. paštą arba <a href="%{reconfirm}">prašykite
+ naujo patvirtinimo laiško</a>.
account is suspended: Atsiprašome, jūsų paskyra buvo sustabdyta dėl įtartinos
- veiklos.<br />Prašome kreiptis į <a href="%{webmaster}">administratorių</a>
- jei norite visą tai aptarti.
+ veiklos.<br />Kreipkitės į <a href="%{webmaster}">administratorių</a>, jei
+ norite tai aptarti.
auth failure: Atsiprašome, negalite prisijungti su tokiais duomenimis.
- openid missing provider: Atsiprašome, nepavyko susisiekti su OpenID tiekėju
- openid invalid: Atsiprašome, bet panašu, kad jūsų OpenID blogai suformuotas
openid_logo_alt: Prisijunkite su OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Prisijungti su OpenID
- alt: Prisijungti su savo OpenID URL
+ title: Prisijunkite su OpenID
+ alt: Prisijunkite su OpenID URL
google:
- title: Prisijungti su Google
- alt: Prisijungti su Google OpenID
+ title: Prisijunkite su Google
+ alt: Prisijunkite su Google OpenID
+ facebook:
+ title: Prisijungti su Facebook
+ alt: Prisijungti su Facebook paskyra
+ windowslive:
+ title: Prisijungti su Windows Live
+ alt: Prisijungti su Windows Live paskyra
yahoo:
- title: Prisijungti su Yahoo
- alt: Prisijungti su Yahoo OpenID
+ title: Prisijunkite su Yahoo
+ alt: Prisijunkite su Yahoo OpenID
wordpress:
- title: Prisijungti su Wordpress
- alt: Prisijungti su Wordpress OpenID
+ title: Prisijunkite su Wordpress
+ alt: Prisijunkite su Wordpress OpenID
aol:
- title: Prisijungti su AOL
- alt: Prisijungti su Yahoo OpenID
+ title: Prisijunkite su AOL
+ alt: Prisijunkite su AOL OpenID
logout:
title: Atsijungti
heading: Atsijungti nuo OpenStreetMap
new:
title: Sukurti paskyrą
no_auto_account_create: Deja šiuo metu negalime jums automatiškai sukurti paskyros.
- contact_webmaster: Prašome kreiptis į <a href="mailto:webmaster@openstreetmap.org">administratorių</a>,
- talkinant, kad paskyra būtų sukurta - mes pasižiūrėsime ir susitarsime kaip
- įmanoma greičiau.
+ contact_webmaster: Kreipkitės į <a href="mailto:webmaster@openstreetmap.org">administratorių</a>
+ paskyros sukūrimui organizuoti – mes mėginsime apdoroti užklausą kaip įmanoma
+ greičiau.
about:
header: Laisvas ir redaguojamas
html: <p>Priešingai nei kiti žemėlapiai, OpenStreetMap kuriamas vien tik žmonių,
display name: 'Rodomas vardas:'
display name description: Jūsų viešai rodomas naudotojo vardas. Jei norėsite,
galėsite jį vėliau pakeisti savo nustatymuose.
- openid: '%{logo} OpenID:'
+ external auth: 'Trečios šalies autentikacija:'
password: 'Slaptažodis:'
confirm password: 'Patvirtinkite slaptažodį:'
- use openid: Taip pat galite naudoti %{logo} OpenID prisijungimui
- openid no password: Su OpenID slaptažodis nėra būtinas, tačiau kai kurių papildomų
- įrankių ar serverio gali prireikti.
- openid association: |-
- <p>Jūsų OpenID kol kas nėra susieta su OpenStreetMap paskyra</p>
+ use external auth: Alternatyviai, naudokite trečią šalį prisijungimui
+ auth no password: Naudojant trečios šalies autentikaciją nereikia slaptažodžio,
+ bet kai kuriems papildomiems įrankiams arba serveriui gali jo prireikti.
+ auth association: |-
+ <p>Jūsų ID dar nėra susietas su OpenStreetMap paskyra.</p>
<ul>
- <li>Jei esi naujas OpenStreetMap, sukurkite naują paskyrą, pasitelkiant forma žemiau</li>
+ <li>Jei esate OpenStreetMap naujokas, sukurkite naują paskyrą, naudodami formą žemiau.</li>
<li>
- Jei jau turite paskyrą, jūs galite prisijungti prie jūsų pakyros, naudojant savo naudotojo vardą ir slaptažodį ir tada susieti paskyrą su savo OpenID savo naudotojo nustatymuose
+ Jei jau turite paskyrą, galite prisijungti prie paskyros
+ naudodami savo naudotojo vardą ir slaptažodį, tada susieti
+ paskyrą su savo ID naudotojo nustatymuose.
</li>
</ul>
continue: Užsiregistruoti
terms:
title: Talkininkų sąlygos
heading: Talkininkų sąlygos
- read and accept: Prašome perskaityti sutartį žemiau ir paspausti patvirtinimo
- mygtuką, kad patvirtintumėte, kad sutinkate su sutarties sąlygomis dėl jūsų
- egzistuojančių ir būsimų indėlių į žemėlapį.
+ read and accept: Perskaitykite sutartį ir paspauskite patvirtinimo mygtuką,
+ kad patvirtintumėte, jog sutinkate su sutarties sąlygomis dėl jūsų egzistuojančio
+ ir būsimo prisidėjimo.
consider_pd: Be pirmiau minėto susitarimo, manau, kad mano indėlis būtų viešo
naudojimo
consider_pd_why: kas tai?
stiliaus aprašymas</a> ir keletas <a href="%{translations}">neoficialių vertimų</a>'
agree: Sutinku
decline: Nesutinku
- you need to accept or decline: Prašome perskaityti bei sutikti ar nesutikti
- su Talkininkų sąlygomis.
- legale_select: 'Prašome pasirinkti savo gyvenamąją šalį:'
+ you need to accept or decline: Norėdami tęsti perskaitykite ir sutikite, arba
+ nesutikite su Talkininkų sąlygomis.
+ legale_select: 'Gyvenamoji vieta:'
legale_names:
france: Prancūzija
italy: Italija
current email address: 'Dabartinis e-pašto adresas:'
new email address: 'Naujas e-pašto adresas:'
email never displayed publicly: (niekada viešai nerodomas)
+ external auth: 'Išorinė autentikacija:'
openid:
- openid: 'OpenID:'
link: http://wiki.OpenStreetMap.org/wiki/OpenID
link text: kas tai?
public editing:
save changes button: Įrašyti pakeitimus
make edits public button: Padaryti visus mano pakeitimus viešais
return to profile: Grįžti į profilį
- flash update success confirm needed: Vartotojo informacija sėkmingai atnaujinta.
- Patikrinkite savo pašto dėžutę, kuriame turėtų būti atsiųstas pranešimas,
- kuriame patvirtinkite savo naują el. pašto adresą.
+ flash update success confirm needed: Naudotojo informacija sėkmingai atnaujinta.
+ Patikrinkite savo el. pašto dėžutę, kurioje turėtų būti pranešimas jūsų naujo
+ el. pašto adreso patvirtinimui.
flash update success: Naudotojo informacija sėkmingai atnaujinta.
confirm:
heading: Patikrinkite savo pašto dėžutę!
press confirm button: Norėdami aktyvuoti savo paskyrą paspauskite žemiau esantį
patvirtinimo mygtuką.
button: Patvirtinti
+ success: Jūsų paskyra patvirtinta. Ačiū už registraciją!
already active: Ši paskyra jau yra patvirtinta.
unknown token: Šis patvirtinimo kodas nebegalioja arba neegzistuoja.
reconfirm_html: Jei norite iš naujo siųsti patvirtinimo laišką, <a href="%{reconfirm}">spauskite
press confirm button: Spauskite žemiau esantį patvirtinimo mygtuką, kad patvirtintume
savo naują e-pašto adresą.
button: Patvirtinti
- success: Jūsų e-pašto adresas patvirtintas. Ačiū, kad prisiregistravote!
+ success: Patvirtintas jūsų e-pašto adreso pakeitimas!
failure: Elektroninio pašto adresas jau patvirtintas naudojant šį atpažinimo
ženklą.
+ unknown_token: Šitas patvirtinimo kodas paseno arba neegzistuoja.
set_home:
flash success: Namų pozicija sėkmingai įrašyta
go_public:
body: |-
<p>Atsiprašome, bet jūsų paskyros veikimas buvo pristabdytas dėl įtartinų veiksmų.</p>
<p>Šį sprendimą netrukus peržiūrės administratoriai arba jūs galite susisiekti su %{webmaster}, jei norite tai aptarti.</p>
+ auth_failure:
+ connection_failed: Nepavyko prisijungti prie autentikacijos tiekėjo
+ invalid_credentials: Netinkami autentikacijos duomenys
+ no_authorization_code: Nėra prieigos suteikimo kodo
+ unknown_signature_algorithm: Nežinomas parašo algoritmas
+ invalid_scope: Neteisinga sritis
user_role:
filter:
not_an_administrator: Tik administratoriai gali valdyti roles, o jūs nesate
new:
title: Kuriamas naudotojo %{name} blokavimas
heading: Kuriamas naudotojo %{name} blokavimas
- reason: Priežastis dėl ko %{name} buvo užblokuotas. Būkite kiek įmanoma ramus
- ir supratingas, duodamas kuo daugiau informacijos apie susidariusią situaciją,
- prisimenant, kad pranešimas bus visiems matomas. Turėkite omeny, kad ne visi
- naudotojai supranta bendruomenės žargoną, prašome pamėginti naudoti paprastus,
- bendrus žodžius.
+ reason: Priežastis dėl ko %{name} buvo užblokuotas. Būkite kiek įmanoma ramūs
+ ir supratingi, duodami kuo daugiau informacijos apie susidariusią situaciją,
+ prisimindami, kad pranešimas bus visiems matomas. Turėkite omenyje, kad ne
+ visi naudotojai supranta bendruomenės žargoną, todėl mėginkite naudoti paprastus,
+ ne specialisto terminus.
period: Kiek laiko, pradedant nuo šios minutės, naudotojui bus uždrausta naudotis
API.
submit: Sukurti blokavimą
edit:
title: Keičiamas naudotojo %{name} blokavimas
heading: Keičiamas naudotojo %{name} blokavimas
- reason: Priežastis dėl ko %{name} buvo užblokuotas. Būkite kiek įmanoma ramus
- ir supratingas, duodamas kuo daugiau informacijos apie susidariusią situaciją.
- Turėkite omeny, kad ne visi naudotojai supranta bendruomenės žargoną, prašome
- pamėginti naudoti paprastus, bendrus žodžius.
+ reason: Priežastis dėl ko %{name} buvo užblokuotas. Būkite kiek įmanoma ramūs
+ ir supratingi, duodami kuo daugiau informacijos apie susidariusią situaciją,
+ prisimindami, kad pranešimas bus visiems matomas. Turėkite omenyje, kad ne
+ visi naudotojai supranta bendruomenės žargoną, todėl mėginkite naudoti paprastus,
+ ne specialisto terminus.
period: Kiek laiko, pradedant nuo šios minutės, naudotojui bus uždrausta naudotis
API.
submit: Atnaujinti blokavimą
only_creator_can_edit: Tik šį blokavimą sukūręs moderatorius gali jį keisti.
success: Blokavimas atnaujintas.
index:
- title: Vartotojo blokavimai
+ title: Naudotojų blokavimai
heading: Naudotojo blokavimų sąrašas
empty: Niekas dar nebuvo blokuojamas.
revoke:
heading: Naudotoją %{block_on} blokuoja %{block_by}
time_future: Baigiasi %{time}
time_past: Baigėsi prieš %{time}
+ created: Sukurta
+ ago: prieš %{time}
status: Būsena
show: Rodyti
edit: Keisti
link: Nuoroda arba HTML
long_link: Nuoroda
short_link: TrumpaNuoroda
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Nustatyti savo apimtį
format: 'Formatas:'
scale: 'Mastelis:'
+ image_size: Vaizdas rodys standartinį sluoksnį
download: Atsisiųsti
short_url: Trumpas URL
include_marker: Įtraukti žymeklį
header: Žemėlapio sluoksniai
notes: Žemėlapio pastabos
data: Žemėlapio duomenys
+ overlays: Įjungti papildomus sluoksnius problemų pranešimui
title: Sluoksniai
copyright: © <a href='%{copyright_url}'>OpenStreetMap talkininkai</a>
donate_link_text: <a class='donate-attr' href='%{donate_url}'>Paremkite</a>
new:
intro: Pastebėjote klaidą ar kažko trūksta? Praneškite kitiems žymėtojams,
kad jie galėtų pataisyti. Perkelkite žymeklį į teisingą poziciją ir įrašykite
- pastabą, aprašančią problemą. (Prašome neįvedinėkite asmeninės informacijos
- arba informacijos iš autorinių teisių apsaugotų žemėlapių ar katalogų/registrų.)
+ pastabą, aprašančią problemą. (Neįvedinėkite asmeninės informacijos arba
+ informacijos iš autorinėmis teisėmis apsaugotų žemėlapių ar katalogų/registrų.)
add: Pridėti pastabą
show:
- anonymous_warning: Ši Pastaba turi komentarų nuo anoniminių vartotojų, kurie
- turi patikrinti nepriklausomą auditą.
+ anonymous_warning: Ši pastaba turi komentarų nuo anoniminių naudotojų, kurie
+ turėtų būti nepriklausomai patikrinti.
hide: Slėpti
resolve: Išspręsti
reactivate: Iš naujo suaktyvinti
comment_and_resolve: Komentuoti & išspręsti
comment: Komentuoti
+ edit_help: Pastumkite žemėlapį ir padidinkite vietą, kurią norite keisti, tada
+ spauskite čia.
+ directions:
+ engines:
+ graphhopper_bicycle: Dviračiu (GraphHopper)
+ graphhopper_foot: Pėsčiomis (GraphHopper)
+ mapquest_bicycle: Dviračiu (MapQuest)
+ mapquest_car: Mašina (MapQuest)
+ mapquest_foot: Pėsčiomis (MapQuest)
+ osrm_car: Mašina (OSRM)
+ directions: Nurodymai
+ distance: Atstumas
+ errors:
+ no_route: Nepavyko rasti maršruto tarp šių dviejų vietų.
+ no_place: Atsiprašome - nerandame tokios vietos.
+ instructions:
+ unnamed: bevardis
+ courtesy: Nuorodas pateikė %{link}
+ time: Laikas
query:
node: Taškas
way: Kelias
update:
flash: Pakeitimai išsaugoti.
destroy:
- not_empty: Redakcija nėra tuščia. Prašome atšaukti visas versijas, galiojančias
- šiai redakcijai, prieš ją sunaikinant.
+ not_empty: Redakcija nėra tuščia. Atšaukite visas versijas, priklausančias šiai
+ redakcijai, prieš ją sunaikinant.
flash: Redakcija sunaikinta.
error: Įvyko klaida, naikinant redakciją.
...
# Author: Papuass
# Author: PeterisP
# Author: Raitisx
+# Author: Ruila
# Author: Ttdnet
---
lv:
archaeological_site: Arheoloģisku izrakumu vieta
battlefield: Kaujas lauks
boundary_stone: Robežstabs
- building: Ēka
+ building: Vēsturiska ēka
+ bunker: Bunkurs
castle: Pils
church: Baznīca
+ city_gate: Pilsētas vārti
citywalls: Pilsētas Sienas
fort: Forts
house: Māja
memorial: Memoriāls
mine: Raktuves
monument: Piemineklis
+ roman_road: Romiešu ceļš
ruins: Drupas
+ stone: Akmens
tomb: Kaps
tower: Tornis
wayside_cross: Krusts ceļmalā
results:
no_results: Nav atrasts neviens rezultāts
more_results: Vairāk rezultātu
- distance:
- one: apmēram 1km
- zero: mazāk nekā 1km
- other: apmēram %{count}km
- direction:
- south_west: dienvidrietumi
- south: dienvidi
- south_east: dienvidaustrumi
- east: austrumi
- north_east: ziemeļaustrumi
- north: ziemeļi
- north_west: ziemeļrietumi
- west: rietumi
layouts:
logo:
alt_text: OpenStreetMap logo
url: /sveicināts
title: Laipni lūgti iekš OSM
description: Sāc ar šo īso ceļvedi, kurš aptver OpenStreetMap pamatus.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Lv:Beginners%27_guide
help:
url: http://forum.openstreetmap.org/viewforum.php?id=59
title: help.openstreetmap.org
register now: Reģistrēties
with username: 'Jau ir OpenStreetMap lietotājs? Lūdzu autorizējies ar savu lietotājvārdu
un paroli:'
- with openid: 'Alternatīvi, lūdzu lieto savu OpenID, lai autorizētos:'
new to osm: Jauns iekš OpenStreetMap?
to make changes: Lai veiktu izmaiņas OpenStreetMap datos, jums jābūt savam kontam.
create account minute: Izveidojiet kontu. Tas aizņem mazāk par minūti.
aktivitātes dēļ.<br />Lūdzu kontaktējies ar <a href="%{webmaster}">tīmekļa
pārzini</a>, ja tu vēlies šo diskutēt.
auth failure: Diemžēl nevarēja ieiet ar šiem datiem
- openid missing provider: Atvaino, nevar sazināties ar tavu OpenID sniedzēju
- openid invalid: Atvaino, šķiet, ka tavs OpenID ir izkropļots
openid_logo_alt: Pieteikties ar OpenID
- openid_providers:
- openid:
- title: Pieteikšanās, izmantojot OpenID
- alt: Pieteikties ar OpenID URL
- google:
- title: Pieteikties ar Google
- alt: Pieteikties ar Google OpenID
- yahoo:
- title: Pieteikties ar Yahoo
- alt: Pieteikties ar Yahoo OpenID
- wordpress:
- title: Pieteikties ar Wordpress
- alt: Pieteikties ar Wordpress OpenID
- aol:
- title: Pieteikties ar AOL
- alt: Pieteikties ar AOL OpenID
logout:
title: Iziet
heading: Iziet no OpenStreetMap
display name: 'Rādāmais vārds:'
display name description: Vārds, kas tiks rādīts publiski. Jūs to vēlāk varēsiet
izmainīt iestatījumos.
- openid: '%{logo} OpenID:'
password: 'Parole:'
confirm password: 'Parole (pārbaudei):'
- use openid: Alternatīvi, lieto %{logo} OpenID, lai autorizētos
- openid no password: Ar OpenID parole nav nepieciešama, bet daži papildus rīki
- vai serveris, joprojām to var pieprasīt.
- openid association: |-
- <p>Tavs OpenID vēl nav savienots ar OpenStreetMap lietotāju.</p>
- <ul>
- <li>Ja tu esi jauns OpenStreetMap, lūdzu izveido jaunu lietotāju, izmantojot formu zemāk.</li>
- <li>
- Ja tev jau ir lietotājs, tu vari autorizēties savā lietotājā
- ar savu lietotāju un paroli un tad savienot lietotāju
- ar savu OpenID savos lietotāja uzstādījumos.
- </li>
- </ul>
continue: Reģistrēties
terms accepted: Paldies, ka pieņēmāt jaunos devuma noteikumus!
terms declined: Mums žēl, ka tu izvēlējies nepieņemt jaunos Veidotāju Noteikumus.
new email address: 'Jauna e-pasta adrese:'
email never displayed publicly: (nekad netiek rādīta publiski)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Kas tas ir?
public editing:
varēsi sākt kartēt.
press confirm button: Spied pieņemšanas pogu zemāk, lai aktivizētu savu lietotāju.
button: Apstiprināt
+ success: Jūsu e-pasta adrese ir apstiprināta, paldies par reģistrēšanos!
already active: Šis lietotājs jau ir apstiprināts.
unknown token: Apstiprinājuma kods ir novecojis, nav derīģs vai neeksistē.
reconfirm_html: Ja nepieciešams, lai izsūtam apstiprinājuma e-pastu vēlreiz,
search_osm_nominatim:
prefix:
aerialway:
- chair_lift: Клупна жичарница
- drag_lift: Влечна жичарница
+ cable_car: Кабелски трамвај
+ chair_lift: Клупна жичница
+ drag_lift: Влечна жичница
+ gondola: Кабинска жичница
station: Гондолска станица
aeroway:
aerodrome: Аеродром
taxiway: Рулажна патека
terminal: Терминал
amenity:
+ animal_shelter: Засолниште за животни
arts_centre: Дом на уметности
atm: Банкомат
bank: Банка
bicycle_parking: Велосипедско паркирање
bicycle_rental: Изнајмување велосипеди
biergarten: Пивска градина
+ boat_rental: Изнајмување пловила
brothel: Бордел
bureau_de_change: Менувачница
bus_station: Автобуска станица
car_wash: Автоперална
casino: Казино
charging_station: Напојна станица
+ childcare: Претшколска установа
cinema: Кино
clinic: Клиника
+ clock: Часовник
college: Колеџ
community_centre: Центар на заедница
courthouse: Суд
food_court: Штандови за брза храна
fountain: Фонтана
fuel: Гориво
+ gambling: Коцкање
grave_yard: Гробишта
gym: Теретана / фитнес
health_centre: Здравствен центар
library: Библиотека
market: Пазар
marketplace: Пазар
+ monastery: Манастир
+ motorcycle_parking: Паркиралиште за мотоцикли
nightclub: Ноќен клуб
nursery: Јасли
nursing_home: Старечки дом
office: Канцеларија
parking: Паркинг
+ parking_entrance: Влез на паркиралиште
pharmacy: Аптека
place_of_worship: Верски објект
police: Полиција
veterinary: Ветеринарна клиника
village_hall: Месна заедница
waste_basket: Корпа за отпадоци
+ waste_disposal: Депонија
youth_centre: Младински центар
boundary:
administrative: Административна граница
"yes": Мост
building:
"yes": Градба
+ craft:
+ brewery: Пиварница
+ carpenter: Столар
+ electrician: Електричар
+ gardener: Градинар
+ painter: Сликар
+ photographer: Фотограф
+ plumber: Водоводџија
+ shoemaker: Чевлар
+ tailor: Кројач
+ "yes": Занаетчиски дуќан
emergency:
+ ambulance_station: Итна помош
+ defibrillator: Дефибрилатор
+ landing_site: Место за итно слетување
phone: Итен телефон
highway:
+ abandoned: Напуштен автопат
bridleway: Коњски пат
bus_guideway: Автобуски шини
bus_stop: Автобуска постојка
construction: Автопат во изградба
cycleway: Велосипедска патека
+ elevator: Лифт
emergency_access_point: Прва помош
footway: Тротоар
ford: Брод
tertiary: Третостепен пат
tertiary_link: Третостепен пат
track: Полски пат
+ traffic_signals: Сообраќајна сигнализација
trail: Патека
trunk: Магистрала
trunk_link: Магистрала
unclassified: Некласификуван пат
unsurfaced: Неасфалтиран пат
+ "yes": Пат
historic:
archaeological_site: Археолошки локалитет
battlefield: Бојно поле
boundary_stone: Граничен камен
- building: Градба
+ building: Историска градба
+ bunker: Бункер
castle: Замок
church: Црква
+ city_gate: Градска порта
citywalls: Градски ѕидини
fort: Утврдување
+ heritage: Културно наследство
house: Куќа
icon: Икона
manor: Велепоседнички дом
memorial: Споменик
mine: Рудник
monument: Споменик
+ roman_road: Римски пат
ruins: Рушевини
+ stone: Камен
tomb: Гроб
tower: Кула
wayside_cross: Крајпатен крст
wayside_shrine: Параклис
wreck: Бродолом
+ junction:
+ "yes": Раскрсница
landuse:
allotments: Парцели
basin: Котлина
road: Патно подрачје
village_green: Селско зеленило
vineyard: Лозници
+ "yes": Употреба на земјиште
leisure:
beach_resort: Крајбрежно одморалиште
bird_hide: Набљудувалиште за птици
+ club: Клуб
common: Општествена земја
+ dog_park: Парк за кучиња
fishing: Рибарење
+ fitness_centre: Центар за фитнес
fitness_station: Технички преглед
garden: Градина
golf_course: Голф-терен
+ horse_riding: Јавање
ice_rink: Лизгалиште
marina: Марина
miniature_golf: Миниголф
pitch: Спортски терен
playground: Детско игралиште
recreation_ground: Разонодно место
+ resort: Одморалиште
sauna: Сауна
slipway: Испуст
sports_centre: Спортски центар
swimming_pool: Базен
track: Спортска патека
water_park: Аквапарк
+ "yes": Разонода
+ man_made:
+ lighthouse: Светилник
+ pipeline: Цевковод
+ tower: Кула
+ works: Фабрика
+ "yes": Вештачки
military:
airfield: Воено слетувалиште
barracks: Касарна
forest: Шума
geyser: Гејзер
glacier: Глечер
+ grassland: Полјана
heath: Голет
hill: Рид
island: Остров
reef: Гребен
ridge: Срт
rock: Карпа
+ saddle: Седло
+ sand: Песок
scree: Сип
scrub: Честак
spring: Извор
wood: Шума
office:
accountant: Сметководител
+ administrative: Администрација
architect: Архитект
company: Фирма
employment_agency: Агенција за вработување
travel_agent: Туристичка агенција
"yes": Канцеларија
place:
+ allotments: Парцели
+ block: Блок
airport: Аеродром
city: Град
country: Земја
town: Град
unincorporated_area: Нездружено подрачје
village: Село
+ "yes": Место
railway:
abandoned: Напуштена железничка линија
construction: Железничка линија во изградба
spur: Железнички огранок
station: Железничка станица
stop: Железничка постојка
- subway: Метро станица
+ subway: Метро
subway_entrance: Влез во метро
switch: Железнички пунктови
tram: Трамвајска линија
"yes": Дуќан
tourism:
alpine_hut: Планинска куќарка
+ apartment: Стан
artwork: Уметничко дело
attraction: Атракција
bed_and_breakfast: Полупансион
camp_site: Камп
caravan_site: Автокамп
chalet: Брвнара
+ gallery: Галерија
guest_house: Пансион
hostel: Хостел
hotel: Хотел
wadi: Вади
waterfall: Водопад
weir: Јаз
+ "yes": Воден пат
admin_levels:
level2: Државна граница
level4: Покраинска граница
results:
no_results: Не пронајдов ништо
more_results: Повеќе резултати
- distance:
- one: околу 1 км
- zero: помалку од 1 км
- other: околу %{count} км
- direction:
- south_west: југозападно
- south: јужно
- south_east: југоисточно
- east: источно
- north_east: североисточно
- north: северно
- north_west: северозападно
- west: западно
layouts:
logo:
alt_text: Логотип на OpenStreetMap
mapping_link: почнете да ги работите картите
legal_babble:
title_html: Авторски права и лиценца
- intro_1_html: |-
- OpenStreetMap има <i>отворени податоци</i> под лиценцата <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ intro_1_html: "OpenStreetMap<sup><a href=\"#trademarks\">®</a></sup> има
+ <i>отворени податоци</i> под лиценцата <a\nhref=\"http://opendatacommons.org/licenses/odbl/\">Open
+ Data\nCommons Open Database License</a> (ODbL) од <a\n \t+\t\nhref=\"http://osmfoundation.org/\">фондацијата
+ OpenStreetMap</a> (OSMF)."
intro_2_html: "Нашите податоци слободно можете да ги умножувате, распространувате,
предавате и менувате, \nдоколку ја наведете OpenStreetMap и нејзините\nучесници.
Доколку ги измените или дополните податоците,\nдобиеното можете да го распространувате
more_title_html: Повеќе информации
more_1_html: |-
Повеќе за употребата на податоци и како да не наведувате, ќе најдете на <a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Правни ЧПП</a>.
+ href="http://osmfoundation.org/Licence">лиценцната страница на OSMF</a> и <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Правните ЧПП</a> на заедницата.
more_2_html: |-
Иако OpenStreetMap работи со отворени податоци, ние не можеме да понудиме
бесплатни извршници (API) за карти на трети програмери.
contributors_nz_html: |-
<strong>Нов Зеланд</strong>: Содржи податоци од
Катастарската служба на Нов Зеланд. Крунски авторски права.
+ contributors_si_html: |-
+ <strong>Словенија</strong>: Содржи податоци од
+ <a href="http://www.gu.gov.si/en/">Геодетската управа</a> и
+ <a href="http://www.mkgp.gov.si/en/">Министерството за земјоделство, шумарство и храна</a>
+ (јавни информации од Словенија).
contributors_za_html: |-
<strong>ЈАР</strong>: Содржи податоци од
<a href="http://www.ngi.gov.za/">Главната управа:
href=\"http://www.osmfoundation.org/wiki/License/Takedown_procedure\">процедурата
\nза отстранување</a> или поднесете жалба на \n<a href=\"http://dmca.openstreetmap.org/\">оваа
наменска страница</a>."
+ trademarks_title_html: <span id="trademarks"></span>Заштитни знаци
+ trademarks_1_html: OpenStreetMap и логото со лупа се заштитни знаци на фондацијата
+ OpenStreetMap. Ако имате прашања во врска со употребата на знаците, пишете
+ ѝ на <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Работната
+ група за лиценци</a>.
welcome_page:
title: Добре дојдовте!
introduction_html: Добре дојдовте на OpenStreetMap — слободна и уредлива карта
или објект (здание).
tag_html: <strong>Ознака</strong> е податок за јазол или пат, како на пр. име
на ресторан или дозволената брзина на улица.
+ rules:
+ title: Правила!
+ paragraph_1_html: "OpenStreetMap има само малку формални правила, но очекуваме
+ сите учесници да соработуваат и општат со заедницата. Доколку имате на ум
+ други активности освен рачно уредување, прочитајте и проследете го упатството
+ \n<a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Увоз</a>
+ и \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Автоматизирани
+ уредувања</a>."
questions:
title: Имате прашања?
paragraph_1_html: |-
url: /welcome
title: Добре дојдовте на OSM
description: Започнете со овој брз водич низ основите на OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+ title: Почетен курс
+ description: Напатствија за почетници, напишани од заедницата.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Поставете прашање или побарајте во одговорите на порталот за прашања
и одговори на OSM.
+ mailing_lists:
+ title: Поштенски списоци
+ description: Поставете прашање или разговарајте за интересни прашања на широк
+ опсег на тематски и регионални поштенски списоци.
+ forums:
+ title: Форуми
+ description: Прашања и разговори за оние кои претпочитаат да општат со објави.
+ irc:
+ title: IRC
+ description: Разговор во живо на најразлични јазици и на многу теми.
+ switch2osm:
+ title: Преод на OSM
+ description: Помош за претпријатија и организации кои преоѓаат на карти на
+ OpenStreetMap и други услуги.
wiki:
url: http://wiki.openstreetmap.org/wiki/Mk:Main_Page
title: wiki.openstreetmap.org
OpenStreetMap е проект со <i>отворени податоци</i>: можете слободно да го користите за било која цел
доколку ја наведете OpenStreetMap и нејзините учесници. Ако решите да ги менувате податоците или да се надоврзувате на нив, добиеното дело можете да го распространувате исклучиво
под истата лиценца. Повеќе ќе најдете на страницата <a href='%{copyright_path}'>Авторски права и лиценцирање</a>.
+ legal_title: Правни работи
+ legal_html: "Ова мрежно место и многу други поврзани услуги со кои раководи \n<a
+ href='http://osmfoundation.org/'>Фондацијата OpenStreetMap</a> (OSMF) \nво име
+ на заедницата.\n<br> \nВе молиме <a href='http://osmfoundation.org/Contact'>контактирајте
+ ја OSMF</a> \nако имате прашања во врска со лиценцирањето, авторките права и
+ други правни прашања и проблеми."
partners_title: Партнери
notifier:
diary_comment_notification:
close: Затвори
search:
search: Пребарај
+ get_directions: Дај насоки
+ get_directions_title: Добијте насоки за движење меѓу две точки
+ from: Од
+ to: До
where_am_i: Каде сум?
where_am_i_title: Опишете ја моменталната местоположба со помош на пребарувачот
key:
- Лека железница
- трамвај
cable:
- - клÑ\83пна жиÑ\87аÑ\80ница
- - клÑ\83пна жиÑ\87аÑ\80ниÑ\86а
+ - Ð\9aлÑ\83пна жиÑ\87ница
+ - клупна жичница
runway:
- Аеродромска писта
- рулажна патека
register now: Регистрација
with username: 'Веќе имате сметка на OpenStreetMap? Најавете се со корисничкото
име и лозинката:'
- with openid: 'Во друг случај, најавете се со вашиот OpenID:'
+ with external: 'Во спротивно, најавете преку надворешно место:'
new to osm: За новодојденци на OpenStreetMap
to make changes: Мора да имате сметка за да можете да правите измени на податоците
на OpenStreetMap.
/>Обратете се кај <a href="%{webmaster}">раководителот</a> ако сакате да продискутирате
за проблемот.
auth failure: Жалиме, не можевме да ве најавиме со тие податоци.
- openid missing provider: За жал, не можев да се поврзам со вашиот добавувач
- на OpenID
- openid invalid: За жал, вашиот OpenID е погрешно обликуван
openid_logo_alt: Најава со OpenID
- openid_providers:
+ auth_providers:
openid:
title: Најава со OpenID
alt: Најава со URL за OpenID
google:
title: Најава со Google
alt: Најава со OpenID од Google
+ facebook:
+ title: Најава со Facebook
+ alt: Најава со профил на Facebook
+ windowslive:
+ title: Најава со Windows Live
+ alt: Најава со сметка на Windows Live
yahoo:
title: Најава со Yahoo
alt: Најава со OpenID од Yahoo
display name: 'Име за приказ:'
display name description: Вашето јавно прикажано име. Можете да го смените подоцна
во прилагодувањата.
- openid: '%{logo} OpenID:'
+ external auth: 'Заверка за надворешното место:'
password: 'Лозинка:'
confirm password: 'Потврдете ја лозинката:'
- use openid: Во друг случај, најавете се со %{logo} OpenID
- openid no password: Со OpenID не ви треба лозинка, но може да ја побараат некои
- дополнителни алатки или опслужувачот.
- openid association: |-
- <p>Ð\92аÑ\88иоÑ\82 OpenID сè уште не е здружен со сметка на OpenStreetMap.</p>
+ use external auth: Во спротивно, најавете преку надворешно место
+ auth no password: Ако користите надворешно место, тогаш не ви треба лозинка,
+ но може да Ñ\98а побаÑ\80ааÑ\82 некои дополниÑ\82елни алаÑ\82ки или опÑ\81лÑ\83жÑ\83ваÑ\87оÑ\82.
+ auth association: |-
+ <p>Ð\92аÑ\88аÑ\82а назнака сè уште не е здружен со сметка на OpenStreetMap.</p>
<ul>
<li>Ако сте нови на OpenStreetMap, тогаш направете сметка со долунаведениот образец.</li>
<li>
Ако веќе имате сметка, можете да се најавите со
корисничкото име и лозинката, а потоа во корисничките
- нагдÑ\83ваÑ\9aа да Ñ\98а здÑ\80Ñ\83жиÑ\82е Ñ\81о ваÑ\88иоÑ\82 OpenID.
+ нагдÑ\83ваÑ\9aа да Ñ\98а здÑ\80Ñ\83жиÑ\82е Ñ\81о ваÑ\88аÑ\82а назнака.
</li>
</ul>
continue: Регистрација
current email address: 'Тековна е-пошта:'
new email address: 'Нова е-поштенска адреса:'
email never displayed publicly: (никогаш не се прикажува јавно)
+ external auth: 'Надворешна заверка:'
openid:
- openid: OpenID
link: http://wiki.openstreetmap.org/wiki/MK:OpenID?uselang=mk
link text: што е ова?
public editing:
press confirm button: Притиснете го копчето за потврда подолу за да ја активирате
сметката.
button: Потврди
+ success: Вашата сметка е потврдена. Ви благодариме што се регистриравте!
already active: Оваа сметка е веќе потврдена.
- unknown token: Ð\9fÐ\9eтврдниот код е истечен или не постои.
+ unknown token: Ð\9fотврдниот код е истечен или не постои.
reconfirm_html: Ако сакате повторно да ви ја испратиме потврдната порака, <a
href="%{reconfirm}">стиснете тука</a>.
confirm_resend:
press confirm button: Притиснете го копчето за потврдување за да ја потврдите
новата е-поштенска адреса.
button: Потврди
- success: Ð\92аÑ\88аÑ\82а е-поÑ\88Ñ\82а е поÑ\82вÑ\80дена. Ð\92и благодаÑ\80име Ñ\88Ñ\82о Ñ\81е Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80авÑ\82е!
+ success: Ð\98зменаÑ\82а на ваÑ\88аÑ\82а е-поÑ\88Ñ\82а е поÑ\82вÑ\80дена!
failure: Со оваа шифра е потврдена веќе една е-поштенска адреса
+ unknown_token: Потврдниот код е истечен или не постои.
set_home:
flash success: Матичната местоположба е успешно зачувана
go_public:
Донесената одлуката набргу ќе ја прегледа администратор, но
можете да се обратите кај %{webmaster} ако сакате да продискутирате за овој проблем.
</p>
+ auth_failure:
+ connection_failed: Не успеав да воспоставам врска со услужникот за заверка
+ invalid_credentials: Неважечки податоци за заверка
+ no_authorization_code: Нема код за овластување
+ unknown_signature_algorithm: Непознат алгоритам на потпис
+ invalid_scope: Неважечки делокруг
user_role:
filter:
not_an_administrator: Само администраторите можат да раководат со улоги, а вие
heading: '%{block_on} блокиран од %{block_by}'
time_future: Уредувања во %{time}
time_past: Истечено пред %{time}
+ created: Создадено
+ ago: пред %{time}
status: Статус
show: Прикажи
edit: Уреди
link: Врска или HTML
long_link: Врска
short_link: Кратка врска
+ geo_uri: ГЕО-URI
embed: HTML
custom_dimensions: Димензии по ваш избор
format: 'Формат:'
comment: Коментирај
edit_help: Поместете ја картата и приближете во местото што сакате да го уредите,
па стиснете тука.
+ directions:
+ engines:
+ graphhopper_bicycle: Велосипед (GraphHopper)
+ graphhopper_foot: Пешки (GraphHopper)
+ mapquest_bicycle: Велосипед (MapQuest)
+ mapquest_car: Автомобил (MapQuest)
+ mapquest_foot: Пешки (MapQuest)
+ osrm_car: Автомобил (OSRM)
+ directions: Насоки
+ distance: Растојание
+ errors:
+ no_route: Не можев да најдам маршрута помеѓу тие две места.
+ no_place: За жал, не можев да го најдам тоа место.
+ instructions:
+ continue_without_exit: Продолжете на %{name}
+ slight_right_without_exit: Малку надесно во %{name}
+ turn_right_without_exit: Свртете десно во %{name}
+ sharp_right_without_exit: Остро надесно во %{name}
+ uturn_without_exit: Полукружно свртете долж %{name}
+ sharp_left_without_exit: Остро налево во %{name}
+ turn_left_without_exit: Свртете лево во %{name}
+ slight_left_without_exit: Малку налево во %{name}
+ via_point_without_exit: (преку точката)
+ follow_without_exit: Следете го %{name}
+ roundabout_without_exit: На кружниот тек свртете на %{name}
+ leave_roundabout_without_exit: Напуштете го кружниот тек — %{name}
+ stay_roundabout_without_exit: Останете на кружниот тек — %{name}
+ start_without_exit: Почнете на крајот од %{name}
+ destination_without_exit: Стигнавте на одредиштето
+ against_oneway_without_exit: Оди обратно во еднонасочната на %{name}
+ end_oneway_without_exit: Крај на еднонасочната на %{name}
+ roundabout_with_exit: На кружниот тек, свртете на %{exit} излегувајќи на %{name}
+ unnamed: неименувано
+ courtesy: Насоките ги добивте благодарение на %{link}
+ time: Време
query:
node: Јазол
way: Пат
# Author: Singleton
# Author: V.narsikar
# Author: Vibhavari
+# Author: अभय नातू
---
mr:
time:
forest: वन
geyser: उष्ण झरा
glacier: हिमनदी
+ grassland: गवताळ प्रदेश
heath: माळरान
hill: टेकडी
island: बेट
results:
no_results: परिणाम सापडले नाही
more_results: अधिक निकाल
- distance:
- zero: १ कि.मी.हून कमी
- one: सुमारे १ कि.मी.
- other: सुमारे %{count} कि.मी.
- direction:
- south_west: नैऋत्य
- south: दक्षिण
- south_east: आग्नेय
- east: पूर्व
- north_east: ईशान्य
- north: उत्तर
- north_west: वायव्य
- west: पश्चिम
layouts:
logo:
alt_text: ओपनस्ट्रीटमॅप संकेतचित्र
title: खाते संपादा
my settings: माझ्या मांडण्या
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: हे काय आहे?
public editing:
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Anakmalaysia
+# Author: Karmadunya9-
# Author: Nemo bis
# Author: Pizza1016
---
way_paginated: Jalan (%{x}-%{y} / %{count})
relation: Hubungan (%{count})
relation_paginated: Hubungan (%{x}-%{y} / %{count})
+ comment: Komen (%{count})
+ hidden_commented_by: Sembunyikan komen dari %{user} <abbr title='%{exact_time}'>%{when}
+ ago</abbr>
+ commented_by: Komen oleh %{user} <abbr title='%{exact_time}'>%{when} lalu</abbr>
changesetxml: XML Set Ubah
osmchangexml: XML osmChange
feed:
title: Set Ubah %{id}
title_comment: Set Ubah %{id} - %{comment}
+ join_discussion: Daftar masuk untuk perbincangan
+ discussion: Perbincangan
node:
title: 'Nod: %{name}'
history_title: 'Sejarah Nod: %{name}'
timeout:
sorry: Maaf, senarai set ubah yang anda pohon itu mengambil masa yang terlalu
lama untuk diambil.
+ rss:
+ full: Perbincangan penuh
diary_entry:
new:
title: Catatan Diari Baru
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kereta kabel
chair_lift: Lif Kerusi
drag_lift: Lif Seret
station: Stesen Kereta Gantung
bicycle_parking: Letak Basikal
bicycle_rental: Sewa Basikal
biergarten: Taman Bir
+ boat_rental: Bot Sewa
brothel: Rumah Pelacuran
bureau_de_change: Pengurup Wang
bus_station: Stesen Bas
car_wash: Cuci Kereta
casino: Kasino
charging_station: Stesen Cas
+ childcare: Penjagaan kanak-kanak
cinema: Pawagam
clinic: Klinik
+ clock: Jam
college: Maktab
community_centre: Pusat Komuniti
courthouse: Mahkamah
food_court: Medan Selera
fountain: Air Pancutan
fuel: Minyak
+ gambling: Pusat Perjudian
grave_yard: Perkuburan
gym: Pusat Senaman / Gim
health_centre: Pusat Kesihatan
library: Perpustakaan
market: Pasar
marketplace: Tempat Pasar
+ monastery: Rumah Ibadah
+ motorcycle_parking: Tempatletak motorsikal
nightclub: Kelab Malam
nursery: Tabika
nursing_home: Rumah Penjagaan
office: Pejabat
parking: Letak Kereta
+ parking_entrance: Laluan masuk tempat letak kenderaan
pharmacy: Farmasi
place_of_worship: Tempat Ibadat
police: Polis
veterinary: Doktor Haiwan
village_hall: Balai Raya
waste_basket: Bakul Sampah
+ waste_disposal: Pusat Pembuagan
youth_centre: Pusat Belia
boundary:
administrative: Sempadan Pentadbiran
"yes": Jambatan
building:
"yes": Bangunan
+ craft:
+ carpenter: Tukang Kayu
+ electrician: Juruelektrik
+ gardener: Tukang Kebun
+ painter: Pelukis
+ photographer: Jurugambar
+ plumber: Tukang Paip
+ shoemaker: Tukang kasut
+ tailor: tukang jahit
+ "yes": Kedai kraf
emergency:
+ ambulance_station: Stesen Ambulan
+ defibrillator: Defibrilator
+ landing_site: Tapak pendaratan kecemasan
phone: Telefon Kecemasan
highway:
+ abandoned: Lebuhraya terbiar
bridleway: Lorong Kuda
bus_guideway: Lorong Bas Berpandu
bus_stop: Perhentian Bas
tertiary: Jalan Tertier
tertiary_link: Jalan Tertier
track: Laluan
+ traffic_signals: Isyarat Trafik
trail: Denai
trunk: Jalan Utama
trunk_link: Jalan Utama
unclassified: Jalan Tidak Terkelas
unsurfaced: Jalan Tanpa Turapan
+ "yes": Jalan Raya
historic:
archaeological_site: Tapak Kaji Purba
battlefield: Medan Pertempuran
boundary_stone: Batu Sempadan
- building: Bangunan
+ building: Bangunan Bersejarah
+ bunker: Kubu bawah tanah
castle: Istana
church: Gereja
+ city_gate: Pintu Kota
citywalls: Tembok Bandar
fort: Kubu
+ heritage: Tapak Bersejarah
house: Rumah
icon: Patung
manor: Manor
mine: Lombong
monument: Tugu
ruins: Puing
+ stone: Batu
tomb: Makam
tower: Menara
wayside_cross: Salib Tepi Jalan
wayside_shrine: Tempat Suci Tepi Jalan
wreck: Ranap
+ junction:
+ "yes": Simpang
landuse:
allotments: Taman petak
basin: Lembangan
leisure:
beach_resort: Peranginan Pantai
bird_hide: Kurungan Burung
+ club: Kelab
common: Tanah Awam
+ dog_park: Taman Anjing
fishing: Tempat Memancing
+ fitness_centre: Pusat Kecergasan
fitness_station: Pusat Kesihatan
garden: Kebun
golf_course: Padang Golf
+ horse_riding: Menunggang Kuda
ice_rink: Gelanggang Ais
marina: Marina
miniature_golf: Golf Miniatur
pitch: Padang Sukan
playground: Taman Permainan
recreation_ground: Tempat Berekreasi
+ resort: Resort
sauna: Sauna
slipway: Landasan Kapal
sports_centre: Pusat Sukan
swimming_pool: Kolam Renang
track: Balapan Lumba Lari
water_park: Taman Air
+ man_made:
+ lighthouse: Rumah Api
+ pipeline: Saluran Paip
+ tower: Menara
+ works: Kilang
+ "yes": Buatan Tangan
military:
airfield: Lapangan Terbang Tentera
barracks: Tangsi
forest: Hutan
geyser: Geiser
glacier: Glasier
+ grassland: Padang rumput
heath: Kerangas
hill: Bukit
island: Pulau
reef: Terumbu
ridge: Rabung
rock: Batu
+ saddle: Pelana
+ sand: Pasir
scree: Batu Runtuh
scrub: Belukar
spring: Mata Air
wood: Hutan Kecil
office:
accountant: Juruakaun
+ administrative: Pentadbiran
architect: Jurubina
company: Syarikat
employment_agency: Agensi Pekerjaan
travel_agent: Agensi Pelancongan
"yes": Pejabat
place:
+ block: Blok
airport: Lapangan Terbang
city: Bandar
country: Negara
town: Pekan
unincorporated_area: Kawasan Tak Terperbadan
village: Desa
+ "yes": Tempat
railway:
abandoned: Landasan Keretapi Terbiar
construction: Landasan Keretapi dalam Pembinaan
"yes": Kedai
tourism:
alpine_hut: Pondok Gunung
+ apartment: Apartmen
artwork: Karya Seni
attraction: Tarikan
bed_and_breakfast: Rumah Tumpangan
camp_site: Tapak Perkhemahan
caravan_site: Tapak Karavan
chalet: Chalet
+ gallery: Galeri
guest_house: Rumah Tamu
hostel: Hostel
hotel: Hotel
wadi: Wadi
waterfall: Air Terjun
weir: Tebat
+ "yes": Laluan air
admin_levels:
level2: Sempadan Negara
level4: Sempadan Negeri
results:
no_results: Tiada hasil carian
more_results: Lebih banyak hasil
- distance:
- one: sekitar 1km
- zero: kurang daripada 1km
- other: sekitar %{count}km
- direction:
- south_west: barat daya
- south: selatan
- south_east: tenggara
- east: timur
- north_east: timur laut
- north: utara
- north_west: barat laut
- west: barat
layouts:
logo:
alt_text: Logo OpenStreetMap
sungai, tasik atau bangunan.
tag_html: <strong>Teg</strong> adalah keterangan ringkas mengenai nod atau jalan,
seperti nama restoran atau had laju jalan raya.
+ rules:
+ title: Peraturan!
questions:
title: Ada soalan?
paragraph_1_html: |-
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Tanyakan soalan atau cari jawapan di tapak soal jawab OSM.
+ mailing_lists:
+ title: Senarai Mel
+ forums:
+ title: Forum
+ irc:
+ title: IRC
+ description: Chat interaktif dalam pelbagai bahasa dan pelbagai topik.
+ switch2osm:
+ title: switch2osm
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
commented_note: '%{commenter} telah menghidupkan semula salah satu nota peta
yang pernah anda ulas dekat %{place}.'
details: Butiran lanjut tentang nota berkenaan boleh didapati di %{url}.
+ changeset_comment_notification:
+ greeting: Apa khabar,
+ commented:
+ partial_changeset_with_comment: dengan komen '%{changeset_comment}'
+ partial_changeset_without_comment: tanpa komen
message:
inbox:
title: Peti Masuk
close: Tutup
search:
search: Cari
+ get_directions: Dapatkan Arah
+ get_directions_title: Cari panduan arah antara dua titik
+ from: Daripada
+ to: Kepada
where_am_i: Saya di mana?
where_am_i_title: Huraikan lokasi semasa dengan menggunakan enjin carian
submit_text: Pergi
register now: Daftar sekarang
with username: 'Sudah ada akaun OpenStreetMap? Sila log masuk dengan nama pengguna
dan kata laluan anda:'
- with openid: 'Ataupun, sila gunakan OpenID anda untuk log masuk:'
new to osm: Baru kenal OpenStreetMap?
to make changes: Untuk membuat perubahan pada data OpenStreetMap, anda mesti
mempunyai akaun.
perkara ini.
auth failure: Maaf, log masuk tidak dapat dibenarkan dengan butiran-butiran
itu.
- openid missing provider: Maaf, pembekal OpenID anda tidak dapat dihubungi
- openid invalid: Maaf, OpenID anda nampaknya tidak betul formatnya
openid_logo_alt: Log masuk dengan OpenID
- openid_providers:
+ auth_providers:
openid:
title: Log masuk dengan OpenID
- alt: Log masuk dengan URL OpenID
+ alt: Log masuk dengan OpenID URL
google:
title: Log masuk dengan Google
- alt: Log masuk dengan OpenID Google
+ facebook:
+ title: Log masuk dengan Facebook
+ alt: Log masuk dengan Akuan Facebook
+ windowslive:
+ title: Log masuk dengan Window Live
+ alt: Log masuk dengan Akaun Windows Live
yahoo:
title: Log masuk dengan Yahoo
alt: Log masuk dengan OpenID Yahoo
alt: Log masuk dengan OpenID Wordpress
aol:
title: Log masuk dengan AOL
- alt: Log masuk dengan OpenID AOL
+ alt: Log masuk dengan OpenID Yahoo
logout:
title: Log keluar
heading: Log keluar dari OpenStreetMap
display name: 'Nama Paparan:'
display name description: Nama pengguna anda yang dipaparkan kepada awam. Anda
boleh menukarnya dalam keutamaan anda pada bila-bila masa.
- openid: 'OpenID %{logo}:'
+ external auth: Pengesahan Pihak Ketiga
password: 'Kata laluan:'
confirm password: 'Sahkan Kata Laluan:'
- use openid: Ataupun gunakan OpenID %{logo} untuk log masuk
- openid no password: Dengan OpenID tidak perlunya kata laluan, tetapi sesetengah
- alat tambahan atau pelayan mungkin masih memerlukannya.
- openid association: |-
- <p>OpenID anda belum dikaitkan dengan akaun OpenStreetMap.</p>
- <ul>
- <li>Jika anda pengguna baru OpenStreetMap, sila buka akaun baru dengan mengisi borang di bawah.</li>
- <li>
- Jika anda sudah mempunyai akaun, anda boleh log masuk ke dalam
- akaun anda dengan menggunakan nama pengguna dan kata laluan
- anda, kemudian mengaitkan akaun itu dengan OpenID anda dalam
- tetapan pengguna anda.
- </li>
- </ul>
+ use external auth: Secara alternatif, gunakan khidmat pihak ketiga untuk log
+ masuk
continue: Daftar
terms accepted: Terima kasih kerana menerima terma-terma penyumbang yang baru!
terms declined: Kami berasa kesal kerana anda memutuskan untuk tidak menerima
new email address: 'Alamat E-mel Baru:'
email never displayed publicly: (tidak sesekali dipaparkan kepada umum)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: apakah ini?
public editing:
press confirm button: Tekan butang pengesahan di bawah untuk mengaktifkan akaun
anda.
button: Sahkan
+ success: Akaun anda telah disahkan. Terima kasih kerana mendaftar!
already active: Akaun ini sudah pun disahkan.
unknown token: Kod pengesahan itu telah tamat tempoh atau tidak wujud.
reconfirm_html: Jika anda perlukan kami untuk mengirim semula e-mel penghantaran,
press confirm button: Tekan butang sahkan di bawah untuk mengesahkan alamat
e-mel baru anda.
button: Sahkan
- success: Alamat e-mel anda telah disahkan. Terima kasih kerana mendaftar!
+ success: Sahkan penukaran alamat e-mel
failure: Sudah ada alamat e-mel yang disahkan dengan token ini.
+ unknown_token: Kod pengesahan itu telah tamat tempoh atau tidak wujud.
set_home:
flash success: Lokasi rumah berjaya disimpan
go_public:
heading: '%{block_on} disekat oleh %{block_by}'
time_future: Berakhir dalam masa %{time}
time_past: Berakhir %{time} lalu
+ created: Dicipta
status: Status
show: Tunjukkan
edit: Sunting
createnote_disabled_tooltip: Zum dekat untuk meletakkan nota pada peta
map_notes_zoom_in_tooltip: Zum dekat untuk membaca nota peta
map_data_zoom_in_tooltip: Zum dekat untuk membaca data peta
+ changesets:
+ show:
+ comment: Komen
+ subscribe: Langgan
+ unsubscribe: Berhenti melanggan
+ hide_comment: sorokkan
+ unhide_comment: Dedahkan
notes:
new:
intro: Terjumpa kesilapan atau sesuatu tertinggal? Beritahu pemeta-pemeta
comment: Komen
edit_help: Alihkan peta dan zum dekat pada lokasi yang ingin anda sunting, kemudian
klik di sini.
+ directions:
+ engines:
+ graphhopper_bicycle: Basikal (GraphHopper)
+ graphhopper_foot: Jalan kaki (GraphHopper)
+ mapquest_bicycle: Basikal (MapQuest)
+ mapquest_car: Kereta (MapQuest)
+ mapquest_foot: Jalan kaki (MapQuest)
+ osrm_car: Kereta (OSRM)
+ directions: Arah
+ distance: Jarak
+ errors:
+ no_route: Tidak dapat mencari arah antara dua tempat tersebut
+ no_place: Maaf - Tempat tersebut tidak dapat ditemui
+ instructions:
+ continue_without_exit: Teruskan di %{name}
+ destination_without_exit: Sampai ke destinasi
+ unnamed: jalan tidak bernama
+ courtesy: Arah ihsan dari %{link}
+ time: Masa
+ query:
+ node: Nod
+ way: Jalan
+ relation: Hubungan
redaction:
edit:
description: Keterangan
# Author: Haakon K
# Author: Hansfn
# Author: Janhoy
+# Author: Kingu
# Author: Laaknor
# Author: Nemo bis
# Author: Nghtwlkr
activerecord:
models:
acl: Tilgangskontrolliste
- changeset: Endringssett
+ changeset: Endringsforløp
changeset_tag: Endringssettmerkelapp
country: Land
diary_comment: Dagbokskommentar
edited_by_html: Redigert for <abbr title='%{title}'>%{time} siden</abbr> av %{user}
closed_by_html: Lukket for <abbr title='%{title}'>%{time} siden</abbr> av %{user}
version: Versjon
- in_changeset: Endringssett
+ in_changeset: Endringsforløp
anonymous: anonym
no_comment: (ingen kommentar)
part_of: Del av
view_details: Vis detaljer
location: 'Posisjon:'
changeset:
- title: 'Endringssett: %{id}'
+ title: 'Endringsforløp: %{id}'
belongs_to: Forfatter
node: Noder (%{count})
node_paginated: Noder (%{x}-%{y} av %{count})
way_paginated: Strekninger (%{x}-%{y} av %{count})
relation: Forbindelser (%{count})
relation_paginated: Forbindelser (%{x}-%{y} av %{count})
- changesetxml: XML for endringssett
+ comment: Kommentarer (%{count})
+ hidden_commented_by: Skjult kommentar fra %{user} <abbr title='%{exact_time}'>%{when}
+ siden</abbr>
+ commented_by: Kommentar fra %{user} <abbr title='%{exact_time}'>%{when} siden</abbr>
+ changesetxml: XML for endringsforløp
osmchangexml: osmChange-XML
feed:
- title: Endringssett %{id}
- title_comment: 'Endringssett: %{id} - %{comment}'
+ title: Endringsforløp %{id}
+ title_comment: 'Endringsforløp: %{id} - %{comment}'
+ join_discussion: Logg inn for å delta i diskusjonen
+ discussion: Diskusjon
node:
title: 'Node: %{name}'
history_title: 'Node-historikk: %{name}'
node: node
way: vei
relation: relasjon
- changeset: endringssett
+ changeset: endringsforløp
timeout:
sorry: Beklager, det tok for lang tid å hente data for %{type} med ID %{id}.
type:
node: node
way: vei
relation: relasjon
- changeset: endringssett
+ changeset: endringsforløp
redacted:
redaction: Maskering %{id}
message_html: Versjon %{version} av denne %{type} kan ikke vises fordi den er
reopened_by_anonymous: Gjenaktivisert av anonym bruker <abbr title='%{exact_time}'>%{when}
siden</abbr>
hidden_by: Skjult av %{user} <abbr title='%{exact_time}'>%{when} siden</abbr>
+ query:
+ title: Forespørselsesfunksjoner
+ introduction: Klikk på kartet for å finne nærliggende trekkplaster.
+ nearby: Nærliggende trekkplaster
+ enclosing: Regionstilhørighet
changeset:
changeset_paging_nav:
showing_page: Side %{page}
changeset:
anonymous: Anonym
no_edits: (ingen redigeringer)
- view_changeset_details: Vis detaljer for endringssett
+ view_changeset_details: Vis detaljert endringsforløp
changesets:
id: ID
saved_at: Lagret
comment: Kommentar
area: Område
list:
- title: Endringssett
+ title: Endringsforløp
title_user: Endringssett av %{user}
- title_friend: Endringssett av dine venner
+ title_friend: Endringsforløp av dine venner
title_nearby: Endringssett av brukere i nærheten
- empty: Ingen endringssett funnet.
+ empty: Inget endringsforløp funnet.
empty_area: Ingen endringssett i dette området.
empty_user: Ingen endringssett fra denne brukeren.
no_more: Ingen flere endringssett funnet.
load_more: Last inn mer
timeout:
sorry: Beklager, listen over endringssett som du ba om tok for lang tid å hente.
+ rss:
+ title_all: Openstreetmap endringsforløps-diskusjon
+ title_particular: 'OpenStreetMap endringsforløp #%{changeset_id} diskusjon'
+ comment: Ny kommentar til endringsforløp %{changeset_id} av %{author}
+ commented_at_html: Uppdatert %{when} siden
+ commented_at_by_html: Oppdatert %{when} siden, av %{user}
+ full: Fullstendig diskusjon
diary_entry:
new:
title: Ny dagbokoppføring
advice: 'Hvis eksporten over feiler, vær vennlig å vurdere bruk av en av kildene
i listen under:'
body: Dette området er for stort for å bli eksportert som OpenStreetMap XML-data.
- Vennligst zoom inn eller velg et mindre område. Eller du kan bruke en av
- kildene angitt under for nedlasting av bulkdata.
+ Forstørr utvalg eller velg et mindre område. Eller du kan bruke en av kildene
+ angitt under for nedlasting av bulkdata.
planet:
title: Planet-OSM
description: Regelmessig oppdaterte kopier av hele OpenStreetMap-databasen
scale: Skala
max: maks
image_size: Bildestørrelse
- zoom: Zoom
+ zoom: Forstørr
add_marker: Legg til en markør på kartet
latitude: 'Bre:'
longitude: 'Len:'
prefix_format: '%{name}'
prefix:
aerialway:
+ cable_car: Kabelbane
chair_lift: Stolheis
drag_lift: Skitrekk
+ gondola: Gondolheis
station: Fjellheisstasjon
aeroway:
aerodrome: Flyplass
taxiway: Taksebane
terminal: Terminal
amenity:
+ animal_shelter: Dyrehospits
arts_centre: Kunstsenter
atm: Minibank
bank: Bank
bicycle_parking: Sykkelparkering
bicycle_rental: Sykkelutleie
biergarten: Ølhage
+ boat_rental: Båtutleie
brothel: Bordell
bureau_de_change: Vekslingskontor
bus_station: Busstasjon
car_wash: Bilvask
casino: Kasino
charging_station: Ladestasjon
+ childcare: Barnepass
cinema: Kino
clinic: Klinikk
+ clock: Klokke
college: Høyskole
community_centre: Samfunnshus
courthouse: Rettsbygning
food_court: Serveringssteder
fountain: Fontene
fuel: Drivstoff
+ gambling: Hasard
grave_yard: Gravlund
gym: Treningssenter
health_centre: Helsesenter
library: Bibliotek
market: Marked
marketplace: Markedsplass
+ monastery: Kloster
+ motorcycle_parking: Motorsykkelparkering
nightclub: Nattklubb
nursery: Førskole
nursing_home: Pleiehjem
office: Kontor
parking: Parkeringsplass
+ parking_entrance: Innkjøring til parkeringsgarasje
pharmacy: Apotek
place_of_worship: Tilbedelsesplass
police: Politi
veterinary: Veterinærklinikk
village_hall: Forsamlingshus
waste_basket: Søppelkasse
+ waste_disposal: Avfallshåndtering
youth_centre: Ungdomssenter
boundary:
administrative: Administrativ grense
"yes": Bru
building:
"yes": Bygning
+ craft:
+ brewery: Bryggeri
+ carpenter: Snekker
+ electrician: Elektriker
+ gardener: Gartner
+ painter: Maler
+ photographer: Fotograf
+ plumber: Rørlegger
+ shoemaker: Skomaker
+ tailor: Skredder
+ "yes": Handtverksbutikk
emergency:
+ ambulance_station: Ambulansestasjon
+ defibrillator: Hjertestarter
+ landing_site: Nødlandingsplass
phone: Nødtelefon
highway:
+ abandoned: Forlatt motorvei
bridleway: Ridevei
bus_guideway: Ledet bussfelt
bus_stop: Busstopp
construction: Motorvei under konstruksjon
cycleway: Sykkelsti
+ elevator: Heis
emergency_access_point: Nødtilgangspunkt
footway: Gangsti
ford: Vadested
tertiary: Tertiær vei
tertiary_link: Lokalvei
track: Sti
+ traffic_signals: Trafikksignalering
trail: Sti
trunk: Hovedvei
trunk_link: Hovedvei
unclassified: Uklassifisert vei
unsurfaced: Vei uten dekke
+ "yes": Vei
historic:
archaeological_site: Arkeologisk plass
battlefield: Slagmark
boundary_stone: Grensestein
- building: Bygning
+ building: Historisk bygning
+ bunker: Bunker
castle: Slott
church: Kirke
+ city_gate: Byport
citywalls: Bymurer
fort: Fort
+ heritage: Verdensarvssted
house: Hus
icon: Ikon
manor: Herregård
memorial: Minne
mine: Gruve
monument: Monument
+ roman_road: Romersk vei
ruins: Ruiner
+ stone: Stein
tomb: Grav
tower: Tårn
wayside_cross: Veikant kors
wayside_shrine: Veikant alter
wreck: Vrak
+ junction:
+ "yes": Korsvei
landuse:
allotments: Kolonihager
basin: Elveområde
road: Veiområde
village_green: landsbypark
vineyard: Vingård
+ "yes": Urbant område
leisure:
beach_resort: Strandsted
bird_hide: Fugletårn
+ club: Klubb
common: Allmenning
+ dog_park: Hundepark
fishing: Fiskeområde
+ fitness_centre: Treningssenter
fitness_station: Treningsstudio
garden: Hage
golf_course: Golfbane
+ horse_riding: Ridning
ice_rink: Skøytebane
marina: Båthavn
miniature_golf: Minigolf
pitch: Sportsarena
playground: Lekeplass
recreation_ground: Idrettsplass
+ resort: Utfluktssted
sauna: Sauna
slipway: Slipp
sports_centre: Sportssenter
swimming_pool: Svømmebaseng
track: Løpebane
water_park: Vannpark
+ "yes": Fritid
+ man_made:
+ lighthouse: Fyr
+ pipeline: Rørgate
+ tower: Tårn
+ works: Fabrikk
+ "yes": Menneskeskapt
military:
airfield: Militær flyplass
barracks: Kaserne
forest: Skog
geyser: Geysir
glacier: Isbre
+ grassland: Gresslette
heath: Vidde
hill: Ås
island: Øy
reef: Rev
ridge: Rygg
rock: Stein
+ saddle: Sal
+ sand: Sand
scree: Ur
scrub: Kratt
spring: Kilde
wood: Skog
office:
accountant: Revisor
+ administrative: Administrasjon
architect: Arkitekt
company: Firma
employment_agency: Bemanningsfirma
travel_agent: Reisebyrå
"yes": Kontor
place:
+ allotments: Jordlapper
+ block: Blokk
airport: Flyplass
city: By
country: Land
town: Tettsted
unincorporated_area: Kommunefritt område
village: Landsby
+ "yes": Sted
railway:
abandoned: Forlatt jernbane
construction: Jernbane under konstruksjon
"yes": Butikk
tourism:
alpine_hut: Fjellhytte
+ apartment: Leilighet
artwork: Kunstverk
attraction: Attraksjon
bed_and_breakfast: Bed and Breakfast
camp_site: Teltplass
caravan_site: Campingplass
chalet: Fjellhytte
+ gallery: Galleri
guest_house: Gjestehus
hostel: Vandrerhjem
hotel: Hotell
wadi: Elveleie
waterfall: Foss
weir: Overløpskant \
+ "yes": Vannvei
admin_levels:
level2: Riksgrense
level4: Statsgrense
results:
no_results: Ingen resultat funnet
more_results: Flere resultat
- distance:
- one: omtrent 1 km
- zero: mindre enn 1 km
- other: omtrent %{count} km
- direction:
- south_west: sørvest
- south: sør
- south_east: sørøst
- east: øst
- north_east: nordøst
- north: nord
- north_west: nordvest
- west: vest
layouts:
project_name:
title: OpenStreetMap
Bidragsytere bruker flyfotografier, GPS-enheter og enkle feltkart for å gå god
for at OSM er nøyaktig og oppdatert.
community_driven_title: Fellesskapsdrevet
+ community_driven_html: |-
+ Gemenskapen i OpenStreetMap er mangfoldig, brennende, og den vokser for hver dag som går.
+ I våre rekker kan en finne entusiast-kartografer, GIS-proffer, ingeniører som kjører OSM-tjenere, humanister som kartlegger katestroferammede områder, og flere til.
+ For å lære mer om samholdet, sjekk ut <a href='%{diary_path}'>brukererkjennelser</a>, og <a href='http://www.osmfoundation.org/'>OSM-stiftelsens</a> nettside.
open_data_title: Åpne data
open_data_html: 'OpenStreetMap er <i>åpne data</i>: Du kan fritt bruke det for
alle formål, så lenge du krediterer OpenStreetMap og dets bidragsytere. Hvis
commented_note: '%{commenter} har reaktivert en kartmerknad som du har kommentert
på. Merknaden er i nærheten av %{place}.'
details: Flere opplysninger om merknaden finner du på %{url}.
+ changeset_comment_notification:
+ greeting: Heia,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} har kommentert en av dine endringer'
+ subject_other: '[OpenStreetMap] %{commenter} har kommentert en endring du
+ har vist interesse for'
+ your_changeset: '%{commenter} har kommentert en av dine endringer som ble
+ opprettet %{time}'
+ commented_changeset: '%{commenter} har kommentert en kartendring som du holder
+ oversikten over, opprettet av %{changeset_author} den %{time}'
+ partial_changeset_with_comment: med kommentaren '%{changeset_comment}'
+ partial_changeset_without_comment: uten kommentar
+ details: Flere detaljer om endringen finnes på %{url}.
message:
inbox:
title: Innboks
close: Lukk
search:
search: Søk
+ get_directions: Få veianvisninger
+ get_directions_title: Finn veien mellom to punkter
+ from: Fra
+ to: Til
where_am_i: Hvor er jeg?
where_am_i_title: Bruke søkemotoren til å beskrive gjeldende lokasjon.
submit_text: Gå
register now: Registrer deg nå
with username: 'Har du allerede en OpenStreetMap-konto? Logg inn med brukernavnet
og passordet ditt:'
- with openid: 'Alternativt kan du bruke din OpenID for å logge inn:'
new to osm: Ny på OpenStreetMap?
to make changes: For å gjøre endringer på OpenStreetMap-data, må du ha en konto.
create account minute: Opprett en konto. Det tar bare ett minutt.
aktivitet.<br />Vennligst kontakt <a href="%{webmaster}">webmaster</a> hvis
du ønsker å diskutere dette.
auth failure: Beklager, kunne ikke logge inn med den informasjonen
- openid missing provider: Beklager, fikk ikke kontakt med din OpenID-leverandør
- openid invalid: Beklager, din OpenID ser ut til å være dårlig formatert
openid_logo_alt: Logg inn med en OpenID
- openid_providers:
- openid:
- title: Logg inn med OpenID
- alt: Logg inn med en OpenID-URL
- google:
- title: Logg inn med Google
- alt: Logg inn med en Google OpenID
- yahoo:
- title: Logg inn med Yahoo
- alt: Logg inn med en Yahoo OpenID
- wordpress:
- title: Logg inn med Wordpress
- alt: Logg inn med en Wordpress OpenID
- aol:
- title: Logg inn med AOL
- alt: Logg inn med en AOL OpenID
logout:
title: Logg ut
heading: Logg ut fra OpenStreetMap
display name: 'Visningsnavn:'
display name description: Ditt offentlig fremviste brukernavn. Du kan endre
dette senere i innstillingene.
- openid: '%{logo} OpenID:'
password: 'Passord:'
confirm password: 'Bekreft passord:'
- use openid: Alternativt kan du bruke %{logo} OpenID for å logge inn
- openid no password: Med OpenID kreves ikke et passord, men noen ekstraverktøy
- eller en tjener kan fortsatt kreve et.
- openid association: |-
- <p>Din OpenID er ikke tilknyttet en OpenStreetMap-konto ennå.</p>
- <ul>
- <li>Hvis du er ny på OpenStreetMap, opprett en ny konto ved hjelp av skjemaet nedenfor.</li>
- <li>
- Hvis du allerede har en konto kan du logge inn på kontoen din
- ved hjelp av brukernavnet og passordet ditt og deretter knytte kontoen
- til din OpenID i brukerinnstillingene.
- </li>
- </ul>
continue: Registrer deg
terms accepted: Takk for at du godtok de nye bidragsytervilkårene!
terms declined: Vi beklager at du har besluttet å ikke akseptere de nye bidragsytervilkårene.
new email address: 'Ny e-postadresse:'
email never displayed publicly: ' (vises aldri offentlig)'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: hva er dette?
public editing:
du begynne å lage kartene.
press confirm button: Klikk bekreftknappen nedenfor for å aktivere kontoen din.
button: Bekreft
+ success: Kontoen din er bekreftet - takk for at du registrerte deg.
already active: Denne kontoen har allerede blitt bekreftet.
unknown token: Denne bekreftelseskoden finnes ikke eller har utløpt.
reconfirm_html: Hvis du trenger at vi sender bekreftelseseposten på nytt, <a
tooltip_disabled: Kartnøkkel bare tilgjengelig for standardlag
map:
zoom:
- in: Zoom inn
- out: Zoom ut
+ in: Forstørr utvalg
+ out: Forminsk utvalg
locate:
title: Vis min posisjon
popup: Du er innenfor {distance} {unit} av dette punktet
donate_link_text: <a class='donate-attr' href='%{donate_url}'>Gi en donasjon</a>
site:
edit_tooltip: Rediger kartet
- edit_disabled_tooltip: Zoom inn for å redigere kartet
+ edit_disabled_tooltip: Forstørr utvalg for å redigere kartet
createnote_tooltip: Legg til en merknad på kartet
- createnote_disabled_tooltip: Zoom inn for å legge til en merknad på kartet
- map_notes_zoom_in_tooltip: Zoom inn for å se kartmerknader
- map_data_zoom_in_tooltip: Zoom inn for å se kartdata
+ createnote_disabled_tooltip: Forstørr utvalg for å legge til en merknad på kartet
+ map_notes_zoom_in_tooltip: Forstørr utvalg for å se kartmerknader
+ map_data_zoom_in_tooltip: Forstørr utvalg for å se kartdata
+ queryfeature_tooltip: Forespørselsesfunksjoner
+ queryfeature_disabled_tooltip: Forstørr utvalg for å kjøre spørringsfunksjoner
+ changesets:
+ show:
+ comment: Kommentar
+ subscribe: Abonner
+ unsubscribe: Avbestill
+ hide_comment: skjul
+ unhide_comment: vis
notes:
new:
intro: Oppdaget en feil eller noe som mangler? La andre kartleggere få vite
reactivate: Reaktiver
comment_and_resolve: Kommenter og løs
comment: Kommenter
- edit_help: Flytt kartet og zoom inn på et sted du vil redigere, og klikk så her.
+ edit_help: Flytt kartet og forstørr utvalg til et sted du vil redigere, og klikk
+ så her.
+ directions:
+ engines:
+ graphhopper_bicycle: Trøsykket (GrapHopper)
+ graphhopper_foot: Til fots (GrapHopper)
+ mapquest_bicycle: Trøsykkel (MapQuest)
+ mapquest_car: Bil (MapQuest)
+ mapquest_foot: Til fots (MapQuest)
+ osrm_car: Bil (OSRM)
+ directions: Veianvisninger
+ distance: Avstand
+ errors:
+ no_route: Kunne ikke finne veien mellom de to stedene.
+ no_place: Beklager - kunne ikke finne det stedet.
+ instructions:
+ continue_without_exit: Fortsett på %{name}
+ unnamed: ikke navngitt
+ courtesy: Veianvisninger gitt av %{link}
+ time: Tid
+ query:
+ node: Node
+ way: Vei
+ relation: Relasjon
+ nothing_found: Ingen treff
+ error: 'Fikk ikke kontakt med tjener %{server}: %{error}'
+ timeout: Tidsavbrudd ved kontakt med tjener %{server}
redaction:
edit:
description: Beskrivelse
# Author: Arent
# Author: Carsrac
# Author: Donarreiskoffer
+# Author: Esketti
# Author: Freek
# Author: Fruggo
# Author: Greencaps
# Author: HanV
+# Author: Hansmuller
# Author: Jochempluim
# Author: Ldp
# Author: M!dgard
+# Author: MatthiasS
# Author: McDutchie
+# Author: MedShot
# Author: Pje335
# Author: Robin0van0der0vliet
# Author: Romaine
+# Author: Ruila
# Author: SPQRobin
# Author: Shirayuki
# Author: Siebrand
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kabelbaan
chair_lift: Stoeltjeslift
drag_lift: Sleeplift
+ gondola: Gondel
station: Kabelbaanstation
aeroway:
aerodrome: Luchtvaartterrein
taxiway: Taxibaan
terminal: Terminal
amenity:
+ animal_shelter: Dierenasiel
arts_centre: Kunstcollectief
atm: Geldautomaat
bank: Bank
bicycle_parking: Fietsenstalling
bicycle_rental: Fietsverhuur
biergarten: Biertuin
+ boat_rental: Boot Verhuur
brothel: Bordeel
bureau_de_change: Wisselkantoor
bus_station: Busstation
car_wash: Autowasstraat
casino: Casino
charging_station: Laadstation
+ childcare: Kinderopvang
cinema: Bioscoop
clinic: Kliniek
+ clock: Klok
college: Hogeschool
community_centre: Gemeenschapscentrum
courthouse: Rechtbank
food_court: Foodcourt
fountain: Fontein
fuel: Brandstof
+ gambling: Gokken
grave_yard: Begraafplaats
gym: Fitnesscentrum
health_centre: Gezondheidscentrum
library: Bibliotheek
market: Markt
marketplace: Marktplein
+ monastery: Klooster
+ motorcycle_parking: Motorfiets Parkeerplaats
nightclub: Nachtclub
nursery: Peuterspeelzaal
nursing_home: Verpleeghuis
office: Kantoor
parking: Parkeren
+ parking_entrance: Parkeerplaats Ingang
pharmacy: Apotheek
place_of_worship: Religieuze samenkomstplaats
police: Politie
veterinary: Dierenarts
village_hall: Gemeentehuis
waste_basket: Prullenbak
+ waste_disposal: Afval
youth_centre: Jeugdcentrum
boundary:
administrative: Administratieve grens
"yes": Brug
building:
"yes": Gebouw
+ craft:
+ brewery: Brouwerij
+ carpenter: Timmerman
+ electrician: Elektriciën
+ gardener: Tuinman
+ painter: Schilder
+ photographer: Fotograaf
+ plumber: Loodgieter
+ shoemaker: Schoenmaker
+ tailor: Kleermaker
+ "yes": Ambachts-winkel
emergency:
+ ambulance_station: Ambulance Post
+ defibrillator: Defibrillator
+ landing_site: Noodlandingsbaan
phone: Noodtelefoon
highway:
+ abandoned: Verlaten weg
bridleway: Ruiterpad
bus_guideway: Vrijliggende busbaan
bus_stop: Bushalte
construction: Snelweg in aanbouw
cycleway: Fietspad
+ elevator: Lift
emergency_access_point: Noodafslag
footway: Voetpad
ford: Voorde
tertiary: Tertiaire weg
tertiary_link: Tertiaire weg
track: Pad
+ traffic_signals: Verkeerslichten
trail: Pad
trunk: Autosnelweg
trunk_link: Autoweg
unclassified: Ongeclassificeerde weg
unsurfaced: Onverharde weg
+ "yes": Weg
historic:
archaeological_site: Archeologische vindplaats
battlefield: Slagveld
boundary_stone: Grenspaal
- building: Gebouw
+ building: Historisch gebouw
+ bunker: Bunker
castle: Kasteel
church: Kerk
+ city_gate: Stadspoort
citywalls: Stadsmuren
fort: Fort
+ heritage: Erfgoed
house: Huis
icon: Pictogram
manor: Landgoed
memorial: Herdenkingsmonument
mine: Mijn
monument: Monument
+ roman_road: Romeinse Weg
ruins: Ruïne
+ stone: Steen
tomb: Graf
tower: Toren
wayside_cross: Kruis langs de weg
wayside_shrine: Altaar langs de weg
wreck: Wrak
+ junction:
+ "yes": Splitsing
landuse:
allotments: Volkstuinen
basin: Waterbekken
road: Weggebied
village_green: Stadsgroen
vineyard: Wijngaard
+ "yes": Landgebruik
leisure:
beach_resort: Badplaats
bird_hide: Nestplaats
+ club: Club
common: Meent
+ dog_park: Hondenpark
fishing: Visgrond
+ fitness_centre: Fitnesscentrum
fitness_station: Fitnessstation
garden: Tuin
golf_course: Golfbaan
+ horse_riding: Paardrijden
ice_rink: IJsbaan
marina: Jachthaven
miniature_golf: Midgetgolf
pitch: Sportveld
playground: Speelplaats
recreation_ground: Recreatiegebied
+ resort: Resort
sauna: Sauna
slipway: Trailerhelling
sports_centre: Sportcentrum
swimming_pool: Zwembad
track: Atletiekbaan
water_park: Waterspeelpark
+ "yes": Recreatie
+ man_made:
+ lighthouse: Vuurtoren
+ pipeline: Pijplijn
+ tower: Toren
+ works: Fabriek
+ "yes": Door mensen gemaakt
military:
airfield: Militair vliegveld
barracks: Kazerne
forest: Bos
geyser: Geiser
glacier: Gletsjer
+ grassland: Grasland
heath: Heide
hill: Heuvel
island: Eiland
reef: Rif
ridge: Bergkam
rock: Rotsen
+ saddle: Zadel
+ sand: Zand
scree: Puin
scrub: Struikgewas
spring: Bron
wood: Bos
office:
accountant: Boekhouder
+ administrative: Administratie
architect: Architect
company: Bedrijf
employment_agency: Bureau voor werkgelegenheid
travel_agent: Reisbureau
"yes": Kantoor
place:
+ allotments: Volkstuinen
+ block: Blokkades
airport: Luchthaven
city: Plaats
country: Land
town: Stad
unincorporated_area: Gemeentevrij gebied
village: Dorp
+ "yes": Plaats
railway:
abandoned: Vervallen spoorweg
construction: Spoor in aanbouw
spur: Parallelspoorweg
station: Spoorwegstation
stop: Spoorhalte
- subway: Metrostation
+ subway: Metro
subway_entrance: Metroingang
switch: Wissel
tram: Tramrails
"yes": Winkel
tourism:
alpine_hut: Berghut
+ apartment: Afdeling
artwork: Kunst
attraction: Attractie
bed_and_breakfast: Pension
camp_site: Kampeerterrein
caravan_site: Caravankampeerterrein
chalet: Vakantiehuisje
+ gallery: Gallerij
guest_house: Gastenverblijf
hostel: Jeugdherberg
hotel: Hotel
wadi: Beek
waterfall: Waterval
weir: Stuwdam
+ "yes": Waterweg
admin_levels:
level2: Landsgrens
level4: Staatsgrens
results:
no_results: Geen resultaten gevonden
more_results: Meer resultaten
- distance:
- one: ongeveer 1 km.
- zero: minder dan 1 km.
- other: ongeveer %{count} km.
- direction:
- south_west: zuidwest
- south: zuid
- south_east: zuidoost
- east: oost
- north_east: noordoost
- north: noord
- north_west: noordwest
- west: west
layouts:
logo:
alt_text: Logo OpenStreetMap
legal_babble:
title_html: Auteursrechten en licentie
intro_1_html: |-
- OpenStreetMap is <i>open data</i>, gelicenseerd onder de <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> is <i>open data</i>, onder licentie van de <a
+ href="http: opendatacommons.org="" licenses="" odbl="" "="">Open Data
+ Commons Open Database License</a> (ODbL) door de <a
+ href="http: osmfoundation.org="" "="">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: |-
Het staat u vrij onze gegevens te kopiëren, te distribueren,
weer te geven en aan te passen, zo lang als u OpenStreetMap en haar
title: Voorbeeld naamsvermelding
more_title_html: Meer informatie
more_1_html: |-
- U kunt meer lezen over het gebruik van onze gegevens en hoe naamsvermelding toe te passen in de <a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Veelgestelde juridische
- vragen</a>.
+ Lees meer over het gebruik van onze gegevens, en hoe credit ons, op de <a
+ href="http: osmfoundation.org="" Licence"="">OSMF Licentie pagina</a> en de gemeenschap <a
+ href="http: wiki.openstreetmap.org="" wiki="" Legal_FAQ"="">Legaal
+ FAQ</a>.
more_2_html: |-
Hoewel OpenStreetMap open data is, kunnen we geen gratis
kaart-API voor derde partijen aanbieden.
contributors_nz_html: |-
<strong>Nieuw-Zeeland</strong>: Bevat gegevens van
Land Information New Zealand. Crown Copyright voorbehouden.
+ contributors_si_html: |-
+ <strong>Slovenië</strong>: Bevat gegevens uit
+ <a href="http://www.gu.gov.si/en/">Surveying and Mapping Authority</a> en
+ <a href="http://www.mkgp.gov.si/en/">Ministerie van Landbouw, Bosbouw en Voedsel</a>
+ (openbare informatie van Slovenië).
contributors_za_html: |-
<strong>Zuid-Afrika</strong>: Bevat gegevens afkomstig uit
<a href="http://www.ngi.gov.za/">Chief Directorate:
ongeoorloofd aan de database van OpenStreetMap is toegevoegd, raadpleeg dan
onze <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">takedownprocedure</a>
of meld het direct en formeel via onze <a href="http://dmca.openstreetmap.org/">online claimpagina</a>.
+ trademarks_title_html: <span id="trademarks"></span>Handelsmerken
+ trademarks_1_html: OpenStreetMap en de looking glass-logo zijn geregistreerde
+ handelsmerken van de OpenStreetMap Foundation. Als u vragen hebt over uw gebruik
+ van de merken, stuur uw vragen dan naar de <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Vergunning
+ werkgroep</a>.
welcome_page:
title: Welkom!
introduction_html: Welkom bij OpenStreetMap, de open en te bewerken kaart van
tag_html: Een <strong>label</strong> (tag) is een eigenschap over een node of
een weg, zoals de naam van een restaurant of de maximum snelheid voor een
weg.
+ rules:
+ title: Regels!
+ paragraph_1_html: "OpenStreetMap heeft weinig formele regels, maar we verwachten
+ dat alle deelnemers samenwerken en communiceren met de gemeenschap. Als u
+ van plan bent andere activiteiten te ontwikkelen dan met de hand bewerkingen
+ maken, lees en volg dan de richtlijnen op <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Imports</a>
+ en \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Geautomatiseerde
+ bewerkingen</a>."
questions:
title: Nog vragen?
paragraph_1_html: |-
title: Welkom bij OSM
description: Begin met dit snelle stappenplan dat de basis van OpenSteetMap
uitlegt.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/NL:Beginnershandleiding
+ title: Handleiding voor beginners
+ description: Gemeenschap onderhouden handleiding voor beginners.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Stel een vraag op zoek antwoorden op de vraag- en antwoordsite
van OSM.
+ mailing_lists:
+ title: Mailinglijsten
+ description: Een vraag stellen of het bespreken van interessante zaken op een
+ breed scala van actuele of regionale mailinglijsten.
+ forums:
+ title: Forums
+ description: Vragen en overleg voor als u liever met een interface in bulletin
+ board-stijl werkt
+ irc:
+ title: IRC
+ description: Interactieve chat in vele verschillende talen en over tal van onderwerpen.
+ switch2osm:
+ title: switch2osm
+ description: Hulp voor bedrijven en organisaties schakelen om op basis van OpenStreetMap
+ kaarten en andere diensten.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
Als u de gegevens wijzigt of uitbouwt op bepaalde manieren, dan mag u het resultaat
alleen onder dezelfde licentie verder verspreiden. Zie de <a href=''%{copyright_path}''>pagina
over Auteursrechten en Licentie</a> voor details.'
+ legal_title: Toegestaan
+ legal_html: "Deze site en tal van andere diensten zijn formeel bediend door \n<a
+ href=\"http://osmfoundation.org/\">OpenStreetMap Foundation</a> (OSMF) \nnamens
+ de gemeenschap.\n<br> \nNeem dan <a href=\"http://osmfoundation.org/Contact\">contact
+ op met de OSMF</a> \nals u licenties, auteursrechten of andere juridische vragen
+ en problemen."
partners_title: Partners
notifier:
diary_comment_notification:
close: Sluiten
search:
search: Zoeken
+ get_directions: Routebeschrijving
+ get_directions_title: Routebeschrijving tussen twee punten
+ from: Van
+ to: Naar
where_am_i: Waar ben ik?
where_am_i_title: De huidige locatie via de zoekmachine beschrijven
submit_text: OK
allow_write_gpx: GPS-tracks uploaden
allow_write_notes: opmerkingen wijzigen.
index:
- title: Mijn OAuth-gegeven
+ title: Mijn OAuth-gegevens
my_tokens: Mijn geautoriseerde applicaties
list_tokens: 'De volgende tokens zijn op uw naam voor applicaties uitgegeven:'
application: Applicatienaam
register now: Nu inschrijven
with username: 'Hebt u al een account bij OpenStreetMap? Meld aan met uw gebruikersnaam
en wachtwoord:'
- with openid: 'U kunt ook aanmelden met uw OpenID:'
+ with external: 'U kunt ook gebruik maken van een derde partij om aan te melden:'
new to osm: Is OpenStreetMap nieuw voor u?
to make changes: Om wijzigingen in OpenStreetMap te maken, moet u een gebruiker
hebben.
activiteit.<br />Neem contact op met de <a href="%{webmaster}">webmaster</a>
als u deze handeling wilt bespreken.
auth failure: Met deze gegevens kunt u helaas niet aanmelden.
- openid missing provider: We konden helaas geen contact maken met uw OpenID-provider
- openid invalid: Uw OpenID lijkt helaas misvormd te zijn
openid_logo_alt: Aanmelden met een OpenID
- openid_providers:
+ auth_providers:
openid:
title: Aanmelden met OpenID
alt: Aanmelden met een OpenID URL
google:
title: Aanmelden met Google
alt: Aanmelden met een Google OpenID
+ facebook:
+ title: Login met Facebook
+ alt: Inloggen met een Facebook-Account
+ windowslive:
+ title: Login met Windows Live
+ alt: Inloggen met een Windows Live-Account
yahoo:
title: Aanmelden met Yahoo
alt: Aanmelden met een Yahoo OpenID
display name: 'Weergavenaam:'
display name description: Uw openbare gebruikersnaam. U kunt deze later in uw
voorkeuren wijzigen.
- openid: '%{logo} OpenID:'
+ external auth: 'Derde partijverificatie:'
password: 'Wachtwoord:'
confirm password: 'Wachtwoord bevestigen:'
- use openid: U kunt ook aanmelden met een %{logo} OpenID
- openid no password: Met OpenID is een wachtwoord niet verplicht, maar sommige
- extra hulpmiddelen of servers kunnen het nog steeds nodig hebben.
- openid association: |-
- <p>Uw OpenID is nog niet gekoppeld aan een OpenStreetMapgebruiker.</p>
+ use external auth: U kunt ook gebruik maken van een derde partij om aan te melden
+ auth no password: Met derde partijverificatie is een wachtwoord niet verplicht,
+ maar sommige extra hulpmiddelen of servers kunnen het nog steeds nodig hebben.
+ auth association: |-
+ <p>Uw ID is nog niet gekoppeld aan een OpenStreetMapgebruiker.</p>
<ul>
<li>Als u nieuw bent bij OpenStreetMap, maak dan een gebruiker aan met behulp van het onderstaande formulier.</li>
<li>
current email address: 'Huidige e-mailadres:'
new email address: 'Nieuw e-mailadres:'
email never displayed publicly: (nooit openbaar gemaakt)
+ external auth: 'Externe verificatie:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: wat is dit?
public editing:
flash update success: De gebruikersinformatie is bijgewerkt.
confirm:
heading: Controleer uw e-mail
- introduction_1: Wij u een bevestiging per e-mail gestuurd.
+ introduction_1: We hebben u een bevestiging per e-mail gestuurd.
introduction_2: Bevestig uw gebruiker door op de koppeling in de e-mail te klikken
en dan kunt u kaarten gaan maken.
press confirm button: Klik op de knop "Bevestigen" hieronder om uw gebruiker
te activeren.
button: Bevestigen
+ success: De gebruiker is geactiveerd. Dank u wel voor het registreren!
already active: Deze gebruiker is al bevestigd.
unknown token: De opgegeven bevestigingscode is verlopen of bestaat niet.
reconfirm_html: Als nodig, kunt u <a href="%{reconfirm}">de bevestigingscode
press confirm button: Klik op de knop "Bevestigen" hieronder om uw e-mailadres
te bevestigen.
button: Bevestigen
- success: Uw e-mailadres is bevestigd. Dank u wel voor het registreren!
+ success: Uw e-mailadreswijziging is bevestigd.
failure: Er is al een e-mailadres bevestigd met dit token.
+ unknown_token: De opgegeven bevestigingscode is verlopen of bestaat niet.
set_home:
flash success: De thuislocatie is opgeslagen
go_public:
body: |-
<p>Uw gebruiker is automatisch opgeschort vanwege verdachte activiteit.</p>
<p>Deze beslissing wordt snel beoordeeld door een beheerder, maar u kunt ook contact opnemen met de %{webmaster} als u deze handeling wilt bespreken.</p>
+ auth_failure:
+ connection_failed: Verbinding met verificatieprovider mislukt
+ invalid_credentials: Ongeldige verificatiereferenties
+ no_authorization_code: Geen autorisatiecode
+ unknown_signature_algorithm: Onbekend algoritme voor handtekening
+ invalid_scope: Ongeldige toepassingsgebied
user_role:
filter:
not_an_administrator: Alleen beheerders kunnen gebruikersrollen beheren. U bent
heading: '%{block_on} geblokkeerd door %{block_by}'
time_future: Vervalt over %{time}
time_past: Is %{time} geleden vervallen
+ created: Aangemaakt
+ ago: '%{time} geleden'
status: Status
show: Weergeven
edit: Bewerken
link: Koppeling of HTML
long_link: Koppeling
short_link: Korte koppeling
+ geo_uri: Geo-URI
embed: HTML
custom_dimensions: Aangepaste afmetingen instellen
format: 'Formaat:'
data: Kaartgegevens
overlays: Overlays inschakelen om fouten in de kaart te kunnen identificeren
title: Lagen
- copyright: © <a href='%{copyright_url}'>OpenStreetMapbijdragers</a>
+ copyright: © <a href='%{copyright_url}'>bijdragers OpenStreetMap</a>
donate_link_text: <a class='donate-attr' href='%{donate_url}'>Doneer nu</a>
site:
edit_tooltip: Kaart bewerken
comment: Reageren
edit_help: Verplaats de kaar en zoom in op een plaats die u wilt bewerken. Klik
er daarna op.
+ directions:
+ engines:
+ graphhopper_bicycle: Fiets (GraphHopper)
+ graphhopper_foot: Voet (GraphHopper)
+ mapquest_bicycle: Fiets (MapQuest)
+ mapquest_car: Auto (MapQuest)
+ mapquest_foot: Voet (MapQuest)
+ osrm_car: Auto (OSRM)
+ directions: Routebeschrijving
+ distance: Afstand
+ errors:
+ no_route: Kon geen route vinden tussen deze twee plaatsen.
+ no_place: Sorry - kon deze plaats niet vinden.
+ instructions:
+ continue_without_exit: Verder op %{name}
+ slight_right_without_exit: Flauwe bocht naar rechts naar %{name}
+ turn_right_without_exit: Sla rechtsaf naar %{name}
+ sharp_right_without_exit: Scherp rechtsaf naar %{name}
+ uturn_without_exit: U-bocht langs %{name}
+ sharp_left_without_exit: Scherp linksaf naar %{name}
+ turn_left_without_exit: Sla linksaf naar %{name}
+ slight_left_without_exit: Flauwe bocht naar links naar %{name}
+ via_point_without_exit: (via punt)
+ follow_without_exit: Volg %{name}
+ roundabout_without_exit: Op de rotonde neem %{name}
+ leave_roundabout_without_exit: Verlaat de rotonde - %{name}
+ stay_roundabout_without_exit: Blijf op de rotonde - %{name}
+ start_without_exit: Start op het einde van %{name}
+ destination_without_exit: Bestemming bereiken
+ against_oneway_without_exit: Ga tegen het verkeer in op %{name}
+ end_oneway_without_exit: Einde van eenrichtingsverkeer op %{name}
+ roundabout_with_exit: Neem op de rotonde de afslag %{exit} naar %{name}
+ unnamed: naamloos
+ courtesy: Routebeschrijving met dank aan %{link}
+ time: Tijd
query:
node: Node
way: Weg
# Author: Nghtwlkr
# Author: Njardarlogar
# Author: Pladask
+# Author: Ruila
---
nn:
html:
results:
no_results: Ingen resultat funne
more_results: Fleire resultat
- distance:
- one: omtrent 1 km
- zero: mindre enn 1 km
- other: omtrent %{count} km
- direction:
- south_west: sørvest
- south: sør
- south_east: søraust
- east: aust
- north_east: nordaust
- north: nord
- north_west: nordvest
- west: vest
layouts:
project_name:
title: OpenStreetMap
<a href=\"http://www.osmfoundation.org/wiki/License/Takedown_procedure\">takedown
\nprosedyre</a> eller direkte til vårt <a href=\"http://dmca.openstreetmap.org/\">online
skjema</a>."
+ help_page:
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Nn:Beginners%27_guide
notifier:
diary_comment_notification:
subject: '[OpenStreetMap] %{user} kommenterte på ein oppføring i dagboka di'
register now: Registrer deg no
with username: 'Har du allereie ein OpenStreetMap-konto? Logg inn med brukernavnet
og passordet ditt:'
- with openid: 'Alternativt kan du bruke din OpenID for å logge inn:'
new to osm: Ny på OpenStreetMap?
to make changes: For å gjere endringar på OpenStreetMap-data, må du ha ein konto.
create account minute: Opprett ein konto. Det tek berre eitt minutt.
aktivitet.<br />Vennligst kontakt <a href="%{webmaster}">webmaster</a> viss
du ynskjer å diskutere dette.
auth failure: Beklagar, kunne ikkje logge inn med den informasjonen
- openid missing provider: Beklagar, fekk ikkje kontakt med din OpenID-leverandør
- openid invalid: Beklagar, din OpenID ser ut til å vere dårleg formatert
openid_logo_alt: Logg inn med ein OpenID
- openid_providers:
- openid:
- title: Logg inn med OpenID
- alt: Logg inn med ein OpenID-URL
- google:
- title: Logg inn med Google
- alt: Logg inn med ein Google OpenID
- yahoo:
- title: Logg inn med Yahoo
- alt: Logg inn med ein Yahoo OpenID
- wordpress:
- title: Logg inn med Wordpress
- alt: Logg inn med ein Wordpress OpenID
- aol:
- title: Logg inn med AOL
- alt: Logg inn med ein AOL OpenID
logout:
title: Logg ut
heading: Logg ut frå OpenStreetMap
display name: 'Visningsnavn:'
display name description: Ditt offentleg framviste brukernavn. Du kan endre
dette seinare i innstellingane.
- openid: '%{logo} OpenID:'
password: 'Passord:'
confirm password: 'Stadfest passord:'
- use openid: Alternativt kan du bruke %{logo} OpenID for å logge inn
- openid no password: Med OpenID vert ikkje kravd eit passord, men nokon ekstraverktøy
- eller ein tenar kan enno krevje eit.
- openid association: |-
- <p>Din OpenID er ikkje tilknytta ein OpenStreetMap-konto enno.</p>
- <ul>
- <li>Viss du er ny på OpenStreetMap, opprett ein ny konto ved hjelp av skjemaet nedanfor.</li>
- <li>
- Viss du allereie har ein konto kan du logge inn på kontoen din
- ved hjelp av brukarnamnet og passordet ditt og deretter knyte kontoen
- til din OpenID i brukarinnstillingane.
- </li>
- </ul>
continue: Hald fram
terms accepted: Takk for at du godtok dei nye bidragsytervilkårene!
terms declined: Me beklagar at du har vedteke å ikkje akseptere dei nye bidragsytervilkårene.
new email address: 'Ny e-postadresse:'
email never displayed publicly: ' (vis aldri offentleg)'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: kva er dette?
public editing:
heading: Stadfest ein brukerkonto
press confirm button: Klikk bekreftknappen nedanfor for å aktivare kontoen din.
button: Stadfest
+ success: Kontoen din er stadfesta - takk for at du registrerte deg.
already active: Denne kontoen har allereie stadfesta.
unknown token: Den koda ser ikkje ut til å eksistere.
confirm_resend:
way_paginated: Camins (%{x} a %{y} sus %{count})
relation: Relacions (%{count})
relation_paginated: Relacions (%{x} a %{y} sus %{count})
+ comment: Comentaris (%{count})
+ hidden_commented_by: Comentari amagat de %{user} <abbr title='%{exact_time}'>i
+ a %{when}</abbr>
+ commented_by: Comentari de %{user} <abbr title='%{exact_time}'>i a %{when}</abbr>
changesetxml: Grop de modificacions XML
osmchangexml: osmChange XML
feed:
title: Grop de modificacions %{id}
title_comment: Grop de modificacions %{id} – %{comment}
+ join_discussion: Se connectar per rejónher la discussion
+ discussion: Discussion
node:
title: 'Nosèl : %{name}'
history_title: 'Istoric del nosèl : %{name}'
reopened_by: Reactivat per %{user} fa <abbr title='%{exact_time}'>%{when}</abbr>
reopened_by_anonymous: Reactivat per un utilizaire anonim fa <abbr title='%{exact_time}'>%{when}</abbr>
hidden_by: Amagat per %{user} <abbr title='%{exact_time}'>fa %{when}</abbr>
+ query:
+ title: Requèsta suls objèctes
+ introduction: Clicar sus la mapa per trobar los objèctes a proximitat.
+ nearby: Objèctes a proximitat
+ enclosing: Objèctes englobants
changeset:
changeset_paging_nav:
showing_page: Pagina %{page}
timeout:
sorry: O planhèm, la lista dels gropes de modificacions qu'avètz demandada met
tròp de temps per èsser recuperada.
+ rss:
+ title_all: Discussion sul grop de modificacions OpenStreetMap
+ title_particular: Discussion sul grop de modificacions OpenStreetMap nº %{changeset_id}
+ comment: Comentari novèl sul grop de modificacions nº %{changeset_id} per %{author}
+ commented_at_html: Mes a jorn fa %{when}
+ commented_at_by_html: Mes a jorn fa %{when} per %{user}
+ full: Discussion completa
diary_entry:
new:
title: Novèla entrada del jornal
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Teleferic
chair_lift: Telesèti
drag_lift: Telesquí
+ gondola: Telecabina
station: Gara de telecabina
aeroway:
aerodrome: Aerodròm
taxiway: Via de manòbra
terminal: Terminal
amenity:
+ animal_shelter: Refugi per animals
arts_centre: Centre artistic
atm: Distribuidor automatic de bilhets
bank: Banca
bicycle_parking: Parcatge per bicicletas
bicycle_rental: Logason de bicicletas
biergarten: Braçariá a l’aire liure
+ boat_rental: Logason de vaissèls
brothel: Bordèl
bureau_de_change: Burèu de cambi
bus_station: Arrèst de bus
charging_station: Estacion de recarga
cinema: Cinèma
clinic: Clinica
+ clock: Relòtge
college: Collègi
community_centre: Sala polivalenta
courthouse: Palais de justícia
food_court: Airal de restauracion
fountain: Font
fuel: Carburant
+ gambling: Jòcs d'azard
grave_yard: Cementèri
gym: Fitness /gimnastica
health_centre: Centre de santat
library: Bibliotèca
market: Mercat
marketplace: Plaça del mercat
+ monastery: Mostièr
nightclub: Discotèca
nursery: Grépia
nursing_home: Ostal de santat
"yes": Pont
building:
"yes": Bastiment
+ craft:
+ carpenter: Fustièr
+ electrician: Electrician
+ gardener: Jardinièr
+ painter: Pintre
+ photographer: Fotograf
+ plumber: Plombièr
+ shoemaker: Sabatièr
+ "yes": Botiga d'artesanat
emergency:
phone: Telefòn d'urgéncia
highway:
archaeological_site: Site arqueologic
battlefield: Camp de batalha
boundary_stone: Bòrna frontièra
- building: Bastiment
+ building: Bastiment istoric
+ bunker: Bunker
castle: Castèl
church: Glèisa
citywalls: Muralhas de la vila
results:
no_results: Cap de resultat es pas estat trobat
more_results: Mai de resultats
- distance:
- one: environ 1 km
- zero: mens d'1 km
- other: environ %{count} km
- direction:
- south_west: sud-oèst
- south: sud
- south_east: sud-èst
- east: èst
- north_east: nòrd-èst
- north: nòrd
- north_west: nòrd-oèst
- west: oèst
layouts:
logo:
alt_text: Lògo d'OpenStreetMap
lost password link: Avètz perdut vòstre senhal ?
login_button: Se connectar
register now: S'inscriure ara
- with openid: 'Tanben podètz utilizar OpenID per vos connectar :'
new to osm: Novèl sus OpenStreetMap ?
to make changes: Per aportar de modificacions a las donadas OpenStreetMap, vos
cal possedir un compte.
no account: Avètz pas de compte ?
auth failure: O planhèm, mas las informacions provesidas an pas permés de vos
identificar.
- openid missing provider: O planhèm, impossible de contactar vòstre provesidor
- OpenID
- openid invalid: O planhèm, vòstre OpenID sembla malformat
openid_logo_alt: Se connectar amb un OpenID
- openid_providers:
- openid:
- title: Connexion amb OpenID
- alt: Connexion amb una URL OpenID
- google:
- title: Connexion amb Google
- alt: Connexion amb un OpenID Google
- yahoo:
- title: Connexion amb Yahoo
- alt: Connexion amb un OpenID Yahoo
- wordpress:
- title: Connexion amb Wordpress
- alt: Connexion amb un OpenID Wordpress
- aol:
- title: Connexion amb AOL
- alt: Connexion amb un OpenID AOL
logout:
title: Desconnexion
heading: Desconnexion d'OpenStreetMap
display name: 'Nom afichat :'
display name description: Vòstre nom d'utilizaire afichat publicament. Podètz
cambiar aquò ulteriorament dins las preferéncias.
- openid: '%{logo} OpenID :'
password: 'Senhal :'
confirm password: 'Confirmatz lo senhal :'
- use openid: Tanben podètz utilizar %{logo} OpenID per vos identificar
continue: S’inscriure
terms accepted: Mercé d’aver acceptat los novèls tèrmes del contributor !
terms:
new email address: 'Novèla adreça de corrièr electronic :'
email never displayed publicly: (pas jamai afichat publicament)
openid:
- openid: 'OpenID :'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: qu’es aquò ?
public editing:
results:
no_results: ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ
more_results: ਹੋਰ ਨਤੀਜੇ
- direction:
- south_west: ਦੱਖਣ-ਪੱਛਮ
- south: ਦੱਖਣ
- south_east: ਦੱਖਣ-ਪੂਰਬ
- east: ਪੂਰਬ
- north_east: ਉੱਤਰ-ਪੂਰਬ
- north: ਉੱਤਰ
- north_west: ਉੱਤਰ-ਪੱਛਮ
- west: ਪੱਛਮ
layouts:
logo:
alt_text: ਓਪਨਸਟਰੀਟਮੈਪ ਲੋਗੋ
# Author: Chrumps
# Author: Cysioland
# Author: Dalis
+# Author: Dammat
# Author: Darellur
# Author: Debeet
# Author: Deejay1
# Author: Ireun
# Author: Kaligula
# Author: Kocio
+# Author: Maraf24
# Author: Nemo bis
# Author: Odie2
# Author: Pio387
# Author: RafalR
# Author: Rezonansowy
# Author: RicoElectrico
+# Author: Ruila
# Author: Soeb
# Author: Sp5uhe
# Author: Ty221
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Kolejka linowa
chair_lift: Wyciąg krzesełkowy
drag_lift: Wyciąg orczykowy
+ gondola: Kolej gondolowa
station: Stacja wyciągu krzesełkowego
aeroway:
aerodrome: Lotnisko
taxiway: Droga kołowania
terminal: Terminal
amenity:
+ animal_shelter: Schronisko dla zwierząt
arts_centre: Centrum sztuki
atm: Bankomat
bank: Bank
bicycle_parking: Parking rowerowy
bicycle_rental: Wypożyczalnia rowerów
biergarten: Ogródek piwny
+ boat_rental: Wypożyczalnia łodzi
brothel: Dom publiczny
bureau_de_change: Kantor
bus_station: Stacja autobusowa
car_wash: Myjnia samochodowa
casino: Kasyno
charging_station: Stacja paliw
+ childcare: Opieka nad dziećmi
cinema: Kino
clinic: Przychodnia
+ clock: Zegar
college: Uczelnia
community_centre: Centrum społeczności
courthouse: Sąd
food_court: Targ z żywnością
fountain: Fontanna
fuel: Stacja benzynowa
+ gambling: Hazard
grave_yard: Mniejszy cmentarz
gym: Centrum Fitness / Sala Gimnastyczna
health_centre: Ośrodek zdrowia
library: Biblioteka
market: Targowisko
marketplace: Plac targowy
+ monastery: Klasztor
+ motorcycle_parking: Parking dla motocykli
nightclub: Klub nocny
nursery: Żłobek
nursing_home: Dom opieki
office: Biuro
parking: Parking
+ parking_entrance: Wjazd na parking
pharmacy: Apteka
place_of_worship: Miejsce kultu
- police: Posterunek policji
+ police: Policja
post_box: Skrzynka pocztowa
post_office: Poczta
preschool: Przedszkole
reception_area: Recepcja
recycling: Miejsce recyklingu
restaurant: Restauracja
- retirement_home: Dom starców
+ retirement_home: Dom seniora
sauna: Sauna
school: Szkoła
shelter: Schron
townhall: Urząd miejski
university: Uniwersytet
vending_machine: Automat do sprzedaży
- veterinary: Chirurgia weterynaryjna
+ veterinary: Weterynarz
village_hall: Urząd gminy
waste_basket: Kosz na śmieci
+ waste_disposal: Kosz na śmieci
youth_centre: Centrum młodzieżowe
boundary:
administrative: Granica administracyjna
- census: Granica spisu
+ census: Granica spisu ludności
national_park: Park Narodowy
protected_area: Obszar chroniony
bridge:
"yes": Most
building:
"yes": Budynek
+ craft:
+ brewery: Browar
+ carpenter: Stolarz
+ electrician: Elektryk
+ gardener: Ogrodnik
+ painter: Malarz
+ photographer: Fotograf
+ plumber: Hydraulik
+ shoemaker: Szewc
+ tailor: Krawiec
+ "yes": Warsztat
emergency:
+ ambulance_station: Stacja pogotowia ratunkowego
+ defibrillator: Defibrylator
+ landing_site: Miejsce awaryjnego lądowania
phone: Telefon alarmowy
highway:
+ abandoned: Porzucona droga
bridleway: Droga dla koni
bus_guideway: Droga dla autobusów
bus_stop: Przystanek autobusowy
- construction: Droga budowana
+ construction: Droga w trakcie budowy
cycleway: Ścieżka rowerowa
+ elevator: Winda
emergency_access_point: Punkt awaryjny
footway: Chodnik
ford: Bród
motorway_link: Autostrada – dojazd
path: Ścieżka
pedestrian: Droga dla pieszych
- platform: Podwyższenie
+ platform: Miejsce oczekiwania dla pasażerów
primary: Droga pierwszorzędna (krajowa)
primary_link: Droga pierwszorzędna – dojazd
proposed: Droga planowana
steps: Schody
street_lamp: Lampa uliczna
tertiary: Droga trzeciorzędna
- tertiary_link: Droga trzeciorzędna
- track: Droga gruntowa
+ tertiary_link: Droga trzeciorzędna - łącznik
+ track: Droga polna lub leśna
+ traffic_signals: Sygnalizacja świetlna
trail: Szlak
- trunk: Droga ekspresowa
- trunk_link: Droga ekspresowa – dojazd
+ trunk: Droga szybkiego ruchu
+ trunk_link: Droga szybkiego ruchu – dojazd
unclassified: Droga czwartorzędna
- unsurfaced: Droga nieutwardzona
+ unsurfaced: Droga polna lub leśna
+ "yes": Droga
historic:
archaeological_site: Wykopaliska archeologiczne
battlefield: Miejsce historycznej bitwy
boundary_stone: Graniczny głaz
- building: Budynek
+ building: Budynek historyczny
+ bunker: Bunkier
castle: Zamek
church: Kościół
+ city_gate: Brama miasta
citywalls: Mury miejskie
fort: Fort
+ heritage: Miejsce dziedzictwa
house: Dom
icon: Ikona
manor: Dwór
memorial: Mniejszy pomnik
mine: Kopalnia
monument: Pomnik
+ roman_road: Droga rzymska
ruins: Ruiny
+ stone: Kamień
tomb: Grób
tower: Wieża
wayside_cross: Przydrożny krzyż
wayside_shrine: Przydrożna kaplica
wreck: Wrak
+ junction:
+ "yes": Funkcja
landuse:
allotments: Ogródki działkowe
basin: Dorzecze
orchard: Sad
quarry: Kamieniołom
railway: Teren kolejowy
- recreation_ground: Ziemia rekreacyjna
+ recreation_ground: Teren rekreacyjny
reservoir: Sztuczny zbiornik wodny
reservoir_watershed: Zbiornik wodny
residential: Zabudowa mieszkalna
road: Obszar drogowy
village_green: Nawsie
vineyard: Winnica
+ "yes": Przeznaczenie terenu
leisure:
beach_resort: Strzeżona plaża
bird_hide: Ukryj ptaki
+ club: Klub
common: Błonie
+ dog_park: Park dla psów
fishing: Łowisko
+ fitness_centre: Centrum Fitness
fitness_station: Fitness
garden: Ogród
golf_course: Pole golfowe
+ horse_riding: Jazda konna
ice_rink: Lodowisko
marina: Marina
miniature_golf: Pole do miniaturowego golfa
- nature_reserve: Rezerwat naturalny
+ nature_reserve: Rezerwat przyrody
park: Park
pitch: Boisko sportowe
playground: Plac zabaw
recreation_ground: Pole rekreacyjne
+ resort: Ośrodek wypoczynkowy
sauna: Sauna
slipway: Pochylnia
sports_centre: Centrum sportowe
swimming_pool: Basen
track: Bieżnia
water_park: Park wodny
+ "yes": Rekreacja
+ man_made:
+ lighthouse: Latarnia morska
+ pipeline: Rurociąg
+ tower: Wieża
+ works: Fabryka
+ "yes": Sztuczny
military:
airfield: Lotnisko wojskowe
barracks: Koszary
forest: Las
geyser: Gejzer
glacier: Lodowiec
+ grassland: Łąka
heath: Wrzosowisko
hill: Wzgórze
island: Wyspa
reef: Rafa
ridge: Grzbiet
rock: Skała
- scree: Zsypisko
+ saddle: Przełęcz
+ sand: Piasek
+ scree: Piarg
scrub: Zagajnik
spring: Źródło
stone: Kamieniołom
wood: Puszcza
office:
accountant: Księgowy
+ administrative: Administracja
architect: Architekt
company: Przedsiębiorstwo
employment_agency: Urząd pracy
travel_agent: Biuro podróży
"yes": Biuro
place:
+ allotments: Ogródki działkowe
+ block: Blok
airport: Lotnisko
city: Miasto
country: Kraj
houses: Zabudowanie
island: Wyspa
islet: Wysepka
- isolated_dwelling: Oddzielny dom-gospodarstwo
- locality: Rejon
- moor: Torfowisko
+ isolated_dwelling: Pojedynczy dom-gospodarstwo
+ locality: Miejsce niezaludnione
+ moor: Wrzosowisko
municipality: Gmina
neighbourhood: Sąsiedztwo
postcode: Kod pocztowy
town: Miasteczko
unincorporated_area: Obszar poza miejscowościami
village: Wieś
+ "yes": Miejsce
railway:
abandoned: Dawna linia kolejowa
construction: Budowana linia kolejowa
- disused: Nieczynna trasa kolejowa
- disused_station: Nieużywana stacja kolejowa
+ disused: Nieczynna linia kolejowa
+ disused_station: Nieczynna stacja kolejowa
funicular: Kolejka linowa
halt: Przystanek kolejowy
historic_station: Historyczna stacja kolejowa
narrow_gauge: Kolej wąskotorowa
platform: Peron
preserved: Kolej zabytkowa
- proposed: Planowana trasa kolejowa
+ proposed: Planowana linia kolejowa
spur: Bocznica kolejowa
station: Stacja kolejowa
stop: Przystanek kolejowy
- subway: Stacja metra
+ subway: Metro
subway_entrance: Wejście na stację metra
switch: Zwrotnica
tram: Linia tramwajowa
"yes": Sklep
tourism:
alpine_hut: Chata alpejska
+ apartment: Mieszkanie
artwork: Sztuka
attraction: Atrakcja turystyczna
bed_and_breakfast: Bed and Breakfast
camp_site: Kemping
caravan_site: Miejsce na przyczepę campingową
chalet: Schronisko
+ gallery: Galeria
guest_house: Pensjonat
hostel: Hostel
hotel: Hotel
wadi: Starorzecze
waterfall: Wodospad
weir: Jaz
+ "yes": Szlak wodny
admin_levels:
level2: Granica kraju
level4: 'Granica:'
results:
no_results: Nie znaleziono
more_results: Więcej wyników
- distance:
- one: ok. 1km
- zero: mniej niż 1km
- other: około %{count}km
- direction:
- south_west: na południowy zachód
- south: na południe
- south_east: na południowy wschód
- east: na wschód
- north_east: na północny wschód
- north: na północ
- north_west: na północny zachód
- west: na zachód
layouts:
logo:
alt_text: Logo OpenStreetMap
(<a href="http://www.and.com">www.and.com</a>)
contributors_nz_html: '<strong>Nowa Zelandia</strong>: Zawiera dane uzyskane
z ''Land Information New Zealand''. Crown Copyright reserved.'
+ contributors_si_html: |-
+ <strong>Słowenia</strong>: Zawiera dane
+ <a href="http://www.gu.gov.si/en/">Urzędu Geodezji i Kartografii</a> oraz
+ <a href="http://www.mkgp.gov.si/en/">Ministerstwa Rolnictwa, Leśnictwa i Żywności</a>
+ (informacja publiczna Słowenii).
contributors_za_html: |-
<strong>Południowa Afryka</strong>: zawiera dane pochodzące
z <a href="http://www.ngi.gov.za/">zarządu głównego:
niewłaściwie dodany do bazy OpenStreetMap, zajrzyj pod adres naszej <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procedury
usuwania danych</a> lub <a href="http://dmca.openstreetmap.org/">wypełnij
formularz on-line</a>.
+ trademarks_title_html: <span id="trademarks"></span>Znaki towarowe
welcome_page:
title: Witaj!
introduction_html: Witamy w OpenStreetMap, wolnej mapie świata. Teraz gdy masz
lub budynek.
tag_html: <strong>Tag</strong> to część danych opisująca linię lub węzeł, np.
Nazwa ulicy lub jej ograniczenie prędkości.
+ rules:
+ title: Zasady!
questions:
title: Jakieś pytania?
paragraph_1_html: OpenStreetMap ma wiele zasobów pomocnych w poznawaniu projektu,
url: /welcome
title: Witamy w OSM
description: Zacznij od tego krótkiego przewodnika, obejmującego podstawy OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Pl:Beginners%27_guide
+ title: Podręcznik dla początkujących
+ description: Społeczność wspiera podręcznik dla początkujących.
help:
url: https://help.openstreetmap.org/
title: Strona Pomocy OpenStreetMap
description: Zadaj pytanie lub odszukaj odpowiedzi na stronie pytań i odpowiedzi
OSM.
+ mailing_lists:
+ title: Listy mailignowe
+ description: Zadaj pytanie lub przedyskutuj interesujący temat niezależnie od
+ wybranego tematu lub lokalizacji.
+ forums:
+ title: Forum
+ description: Pytania, dyskusje w formie internetowego forum dyskusyjnego.
+ irc:
+ title: IRC
+ description: Interaktywny czat w różnych językach i na różne tematy.
+ switch2osm:
+ title: switch2osm
+ description: Pomoc firmom i organizacjom w przejściu do mapy OpenStreetMap i
+ inne usługi.
wiki:
url: http://wiki.openstreetmap.org/wiki/Pl:Main_Page
title: Wiki OpenStreetMap
Jeśli zmienisz lub stworzysz coś na podstawie tych danych możesz je dystrybuować,
ale tylko na tej samej licencji. Zobacz <a href=''%{copyright_path}''>Prawa
autorskie i licencja</a> by zobaczyć szczegóły.'
+ legal_title: Pytania prawne
partners_title: Partnerzy
notifier:
diary_comment_notification:
close: Zamknij
search:
search: Szukaj
+ get_directions: Wyznacz trasę
+ get_directions_title: Znajdź trasę pomiędzy dwoma punktami
+ from: Początek
+ to: Koniec
where_am_i: Gdzie jestem?
where_am_i_title: Określ obecną lokalizację przy użyciu wyszukiwarki
submit_text: →
table:
entry:
motorway: Autostrada
- trunk: Droga ekspresowa
+ trunk: Droga szybkiego ruchu
primary: Droga pierwszorzędna
secondary: Droga drugorzędna
unclassified: Drogi niesklasyfikowane
- unsurfaced: Droga nieutwardzona
+ unsurfaced: Droga polna lub leśna
track: Ścieżka
byway: Droga boczna
bridleway: Ścieżka dla koni
private: Wstęp prywatny
permissive: Możliwy wstęp
destination: Dostęp do punktu docelowego
- construction: Drogi w budowie
+ construction: Drogi w budowie / planowane
richtext_area:
edit: Edytuj
preview: Podgląd
register now: Zarejestruj się
with username: 'Masz już konto w OpenStreetMap? Zaloguj się podając nazwę użytkownika
i hasło:'
- with openid: 'Możesz do zalogowania się użyć również OpenID:'
+ with external: 'Alternatywnie, zaloguj używając:'
new to osm: Nowy na OpenStreetMap?
to make changes: Aby wprowadzać zmiany w OpenStreetMap, musisz mieć konto.
create account minute: Utwórz konto. To zajmuje tylko minutę.
aktywność.<br />Skontaktuj się z <a href="%{webmaster}">webmasterem</a>, jeśli
chcesz przedyskutować blokadę.
auth failure: Niestety, podane dane nie pozwoliły na zalogowanie.
- openid missing provider: Niestety kontakt z dostawcą OpenID jest niemożliwy
- openid invalid: Niestety Twój OpenID wydaje się być nieprawidłowy
- openid_logo_alt: Zaloguj używając OpenID
- openid_providers:
+ openid_logo_alt: Zaloguj przez OpenID
+ auth_providers:
openid:
- title: Zaloguj używając OpenID
- alt: Zaloguj używając adresu URL OpenID
+ title: Zaloguj przez OpenID
+ alt: Zaloguj przez URL OpenID
google:
- title: Zaloguj używając Google
- alt: Zaloguj używając Google OpenID
+ title: Zaloguj przez Google
+ alt: Zaloguj przez Google OpenID
+ facebook:
+ title: Zaloguj przez Facebooka
+ alt: Zaloguj przez konto Facebook
+ windowslive:
+ title: Zaloguj przez Windows Live
+ alt: Zaloguj przez konto Windows Live
yahoo:
title: Zaloguj używając Yahoo
alt: Zaloguj używając Yahoo OpenID
wordpress:
- title: Zaloguj używając Wordpress
+ title: Zaloguj przez Wordpress
alt: Zaloguj używając Wordpress OpenID
aol:
- title: Zaloguj używając AOL
+ title: Zaloguj przez AOL
alt: Zaloguj używając AOL OpenID
logout:
title: Wyloguj
display name: 'Przyjazna nazwa:'
display name description: Twoja publiczna nazwa użytkownika. Można ją później
zmienić w ustawieniach.
- openid: '%{logo} OpenID:'
+ external auth: 'Logowanie przez:'
password: Hasło
confirm password: 'Potwierdzenie hasła:'
- use openid: Ewentualnie użyj %{logo} OpenID do zalogowania
- openid no password: Jeśli korzystasz z OpenID hasło nie jest wymagane, jednak
- niektóre dodatkowe narzędzia lub serwer mogą go potrzebować.
- openid association: |-
- <p>Twoje konto OpenID nie jest jeszcze skojarzone z kontem OpenStreetMap.</p>
+ use external auth: 'Zaloguj przez:'
+ auth no password: Jeśli korzystasz z logowania pośredniego, hasło nie jest wymagane,
+ jednak niektóre dodatkowe narzędzia lub serwer mogą go potrzebować.
+ auth association: |-
+ <p>Twoje ID nie jest jeszcze skojarzone z kontem OpenStreetMap.</p>
<ul>
<li>Jeśli jesteś nowym użytkownikiem OpenStreetMap, utwórz nowe konto, korzystając z poniższego formularza.</li>
- <li>Jeśli masz już konto, możesz zalogować się na nie przy użyciu nazwy użytkownika i hasła, a następnie skojarzyć je z kontem OpenID w ustawieniach użytkownika.
+ <li>Jeśli masz już konto, możesz zalogować się na nie przy użyciu nazwy użytkownika i hasła, a następnie skojarzyć je z Twoim ID w ustawieniach użytkownika.
</li>
</ul>
continue: Zarejestruj się
current email address: 'Aktualny adres e-mail:'
new email address: 'Nowy adres e-mail:'
email never displayed publicly: (nie jest wyświetlany publicznie)
+ external auth: 'Zewnętrzne uwierzytelnienie:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/PL:OpenID
link text: co to jest?
public editing:
mapować.
press confirm button: Użyj poniższego przycisku aby aktywować Twoje konto.
button: Potwierdzam
+ success: Twoje konto zostało zatwierdzone, cieszymy się że do nas dołączyłeś!
already active: To konto zostało potwierdzone.
unknown token: Ten kod potwierdzający wygasł lub nie istnieje.
reconfirm_html: Możesz ponownie przesłać wiadomość z potwierdzeniem <a href="%{reconfirm}">klikając
press confirm button: Użyj poniższego przycisku aby potwierdzić Twój nowy adres
e-mail.
button: Potwierdzam
- success: Twój nowy adres został zatwierdzony, cieszymy się że do nas dołączyłeś!
+ success: Potwierdzenie zmiany adresu mailowego
failure: Adres email o tym kodzie był już potwierdzony.
+ unknown_token: Ten kod potwierdzający wygasł lub nie istnieje.
set_home:
flash success: Nowa lokalizacja domowa zapisana
go_public:
Niniejsza decyzja zostanie poddana przeglądowi przez administratora.
Możesz też skontaktować się z %{webmaster}em, jeśli chcesz to omówić.
</p>
+ auth_failure:
+ connection_failed: Połączenie z pośrednikiem logowania nieudane
+ invalid_credentials: Nieprawidłowe dane logownia
+ no_authorization_code: Brak kodu autoryzacyjnego
+ unknown_signature_algorithm: Nieznany algorytm podpisu
user_role:
filter:
not_an_administrator: Tylko administratorzy mogą zarządzać rolami użytkowników,
heading: '%{block_on} zablokowany przez użytkownika %{block_by}'
time_future: Blokada wygasa za %{time}
time_past: Zakończona %{time} temu
+ created: Utworzony
+ ago: '%{time} temu'
status: Status
show: Pokaż
edit: Edytuj
include_marker: Dołącz pinezkę
center_marker: Wyśrodkuj mapę na znaczniku
paste_html: Wklej podany kod HTML do swojej strony
- view_larger_map: Większy widok mapy
+ view_larger_map: Wyświetl większą mapę
key:
title: Legenda
tooltip: Legenda
comment: Dodaj komentarz
edit_help: Przesuń mapę i powiększ miejsce, które chcesz edytować, a następnie
kliknij tutaj.
+ directions:
+ engines:
+ graphhopper_bicycle: Rower (GraphHopper)
+ graphhopper_foot: Pieszo (GraphHopper)
+ mapquest_bicycle: Rower (MapQuest)
+ mapquest_car: Samochód (MapQuest)
+ mapquest_foot: Pieszo (MapQuest)
+ osrm_car: Samochód (OSRM)
+ directions: Opis trasy
+ distance: Odległość
+ errors:
+ no_route: Nie udało się wyznaczyć trasy pomiędzy tymi dwoma punktami.
+ no_place: Przykro mi - nie udało się odnaleźć tego miejsca.
+ instructions:
+ continue_without_exit: Kontynuuj na %{name}
+ slight_right_without_exit: Lekko w prawo w %{name}
+ turn_right_without_exit: Skręć w prawo w %{name}
+ sharp_right_without_exit: Ostro w prawo w %{name}
+ uturn_without_exit: Zawróć wzdłuż %{name}
+ sharp_left_without_exit: Ostro w lewo w %{name}
+ turn_left_without_exit: Skręć w lewo w %{name}
+ slight_left_without_exit: Lekko w lewo w %{name}
+ via_point_without_exit: (przez punkt)
+ follow_without_exit: Jedź wzdłuż %{name}
+ leave_roundabout_without_exit: Opuść rondo - %{name}
+ stay_roundabout_without_exit: Zostań na rondzie - %{name}
+ destination_without_exit: Dojechałeś do celu
+ roundabout_with_exit: Na rondzie zjedź %{exit} zjazdem w %{name}
+ unnamed: bez nazwy
+ courtesy: Wyznaczanie trasy dzięki uprzejmości %{link}
+ time: Czas
query:
node: Węzeł
way: Linia
# Author: Dianakc
# Author: Diego Queiroz
# Author: Fmca
+# Author: Ftrebien
# Author: Fúlvio
# Author: Giro720
# Author: Gmare
# Author: Nemo bis
# Author: Nighto
# Author: Rodrigo Avila
+# Author: Rodrigo codignoli
+# Author: Ruila
# Author: Tuliouel
# Author: Vgeorge
# Author: Wille
old_relation: Relação Antiga
old_relation_member: Membro da Relação Antiga
old_relation_tag: Etiqueta da relação antiga
- old_way: Caminho Antigo
- old_way_node: Ponto do Caminho Antigo
+ old_way: Linha Antiga
+ old_way_node: Ponto da linha antiga
old_way_tag: Etiqueta da linha antiga
relation: Relação
relation_member: Membro da Relação
user: Usuário
user_preference: Preferências do Usuário
user_token: Token do Usuário
- way: Caminho
- way_node: Ponto do Caminho
+ way: Linha
+ way_node: Ponto da Linha
way_tag: Etiqueta da linha
attributes:
diary_comment:
user:
email: E-mail
active: Ativo
- display_name: Nome para exibição
+ display_name: Nome de exibição
description: Descrição
languages: Idiomas
pass_crypt: Senha
default: Padrão (atualmente %{name})
potlatch:
name: Potlatch 1
- description: Potlatch 1 (editar no navegador)
+ description: Potlatch 1 (no navegador)
id:
name: iD
- description: iD (editor no navegador)
+ description: iD (no navegador)
potlatch2:
name: Potlatch 2
- description: Potlatch 2 (editar no navegador)
+ description: Potlatch 2 (no navegador)
remote:
name: Controle Remoto
description: Controle Remoto (JOSM ou Merkaartor)
created_html: Criado <abbr title='%{title}'>%{time} atrás</abbr>
closed_html: Fechado <abbr title='%{title}'>%{time} atrás</abbr>
created_by_html: Criado <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
- deleted_by_html: Apagado <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
+ deleted_by_html: Excluído <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
edited_by_html: Editado <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
closed_by_html: Fechado <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
version: Versão
title: 'Conjunto de alterações: %{id}'
belongs_to: Autor
node: Pontos (%{count})
- node_paginated: Nós (%{x}-%{y} de %{count})
+ node_paginated: Pontos (%{x}-%{y} de %{count})
way: Linhas (%{count})
way_paginated: Linhas (%{x}-%{y} de %{count})
relation: Relações (%{count})
comment: Comentários (%{count})
hidden_commented_by: Comentário oculto de %{user} <abbr title='%{exact_time}'>%{when}
atrás</abbr>
- commented_by: Comentado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ commented_by: Comentário de %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
changesetxml: XML do conjunto de alterações
- osmchangexml: osmChange XML
+ osmchangexml: XML osmChange
feed:
title: Conjunto de alterações %{id}
title_comment: Conjunto de alterações %{id} - %{comment}
- join_discussion: Entre para participar da discussão
+ join_discussion: Entrar para participar da discussão
discussion: Discussão
node:
title: 'Ponto: %{name}'
- history_title: 'Histórico do nó: %{name}'
+ history_title: 'Histórico do ponto: %{name}'
way:
title: 'Linha: %{name}'
history_title: 'Histórico da linha: %{name}'
entry_role: '%{type} %{name} como %{role}'
type:
node: Ponto
- way: Caminho
+ way: Linha
relation: Relação
containing_relation:
entry: Relação %{relation_name}
entry_role: Relação %{relation_name} (como %{relation_role})
not_found:
- sorry: Desculpe, não foi possível encontrar %{type} com id %{id}.
+ sorry: Não foi possível encontrar %{type} com id %{id}.
type:
node: ponto
- way: caminho
+ way: linha
relation: relação
changeset: conjunto de alterações
timeout:
- sorry: Desculpe, mas os dados para %{type} com id %{id} estão demorando muito
- para chegar.
+ sorry: Os dados para %{type} com id %{id} estão demorando demais para chegar.
type:
node: ponto
- way: caminho
+ way: linha
relation: relação
changeset: conjunto de alterações
redacted:
- redaction: Edição %{id}
- message_html: A versão %{version} deste %{type} não pode ser exibida tal como
- foi redigida. Consulte %{redaction_link} para obter mais informações.
+ redaction: Anulação %{id}
+ message_html: A versão %{version} deste(a) %{type} não pode ser exibida porque
+ foi anulado(a). Consulte %{redaction_link} para obter mais informações.
type:
node: ponto
- way: caminho
+ way: linha
relation: relação
start_rjs:
feature_warning: Carregando %{num_features} elementos, o que pode deixar seu
- navegador lento ou sem resposta. Tem certeza que quer exibir estes dados?
+ navegador lento ou travado. Deseja mesmo exibir estes dados?
load_data: Carregar dados
loading: Carregando...
tag_details:
open_title: 'Nota não resolvida #%{note_name}'
closed_title: 'Nota resolvida #%{note_name}'
hidden_title: 'Nota oculta #%{note_name}'
- open_by: Criado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
- open_by_anonymous: Criado por um usuário anônimo há <abbr title='%{exact_time}'>%{when}
+ open_by: Criado por %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ open_by_anonymous: Criado por um usuário anônimo <abbr title='%{exact_time}'>%{when}
atrás</abbr>
- commented_by: Comentado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
- commented_by_anonymous: Comentado por um usuário anônimo há <abbr title='%{exact_time}'>%{when}
+ commented_by: Comentado por %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ commented_by_anonymous: Comentado por um usuário anônimo <abbr title='%{exact_time}'>%{when}
atrás</abbr>
- closed_by: Resolvido por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
- closed_by_anonymous: Resolvido por um usuário anônimo há <abbr title='%{exact_time}'>%{when}
+ closed_by: Resolvido por %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ closed_by_anonymous: Resolvido por um usuário anônimo <abbr title='%{exact_time}'>%{when}
atrás</abbr>
- reopened_by: Reaberto por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
- reopened_by_anonymous: Reaberto por um usuário anônimo há <abbr title='%{exact_time}'>%{when}
+ reopened_by: Reaberto por %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ reopened_by_anonymous: Reaberto por um usuário anônimo <abbr title='%{exact_time}'>%{when}
atrás</abbr>
- hidden_by: Ocultado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ hidden_by: Ocultado por %{user} <abbr title='%{exact_time}'>%{when} atrás</abbr>
query:
- title: Características da consulta
- introduction: Clique no mapa para encontrar características ao redor
- nearby: Características próximas
- enclosing: Características envolventes
+ title: Consultar Elementos
+ introduction: Clique no mapa para achar elementos próximos
+ nearby: Elementos próximos
+ enclosing: Elementos envoltórios
changeset:
changeset_paging_nav:
showing_page: Página %{page}
title_user: Conjuntos de alterações de %{user}
title_friend: Conjuntos de alterações dos seus amigos
title_nearby: Conjuntos de alterações de usuários próximos
- empty: Nenhum conjunto de alterações foi encontrado.
+ empty: Nenhum conjunto de alterações encontrado.
empty_area: Nenhum conjunto de alterações nesta área.
- empty_user: Nenhum conjunto de alterações por este usuário.
- no_more: Nenhum conjunto de alterações foi encontrado.
- no_more_area: Não há mais conjunto de alterações nesta área.
- no_more_user: Não há mais conjunto de alterações para este usuário.
+ empty_user: Nenhum conjunto de alterações deste usuário.
+ no_more: Nenhum conjunto de alterações encontrado.
+ no_more_area: Não há mais conjuntos de alterações nesta área.
+ no_more_user: Não há mais conjuntos de alterações para este usuário.
load_more: Carregar mais
timeout:
- sorry: Desculpe. A lista de conjuntos de alterações que você solicitou está
- demorando muito tempo para ser recuperada.
+ sorry: A lista de conjuntos de alterações solicitada está demorando demais para
+ chegar.
rss:
title_all: Discussão de conjunto de alterações do OpenStreetMap
title_particular: 'Discussão do conjunto de alteração #%{changeset_id} do OpenStreetMap'
comment: 'Comentário novo no conjunto de alterações #%{changeset_id} por %{author}'
commented_at_html: Atualizando %{when} atrás
- commented_at_by_html: Atualizado há %{when} por %{user}
+ commented_at_by_html: Atualizado %{when} atrás por %{user}
full: Discussão completa
diary_entry:
new:
title_nearby: Diários dos usuários próximos
user_title: Diário de %{user}
in_language_title: Entradas de Diário em %{language}
- new: Nova entrada no Diário
- new_title: Escrever nova entrada em seu Diário
- no_entries: Sem entradas no Diário
- recent_entries: Entradas recentes do Diário
+ new: Nova Entrada no Diário
+ new_title: Escrever nova entrada em seu diário
+ no_entries: Sem entradas no diário
+ recent_entries: Entradas recentes do diário
older_entries: Entradas mais antigas
newer_entries: Entradas mais novas
edit:
title: Editar entrada do diário
subject: 'Assunto:'
body: 'Texto:'
- language: 'Língua:'
+ language: 'Idioma:'
location: 'Localização:'
latitude: 'Latitude:'
longitude: 'Longitude:'
no_such_entry:
title: Entrada de diário inexistente
heading: 'Não há entrada no diário com o id: %{id}'
- body: Desculpe, não há entrada no diário ou comentário com o id %{id}. Por favor,
- verifique se digitou corretamente, ou talvez o link que clicou esteja errado.
+ body: Não há entrada no diário ou comentário com o id %{id}. Confira a digitação,
+ ou talvez o link clicado esteja errado.
diary_entry:
posted_by: Publicado por %{link_user} em %{created} em %{language_link}
comment_link: Comentar nesta entrada
export:
title: Exportar
start:
- area_to_export: Área a exportar
- manually_select: Selecionar manualmente uma área diferente
+ area_to_export: Área a Exportar
+ manually_select: Selecionar outra área manualmente
format_to_export: Formato a Exportar
osm_xml_data: Dados XML do OpenStreetMap
- map_image: Imagem do Mapa (mostra a camada padrão)
+ map_image: Imagem do Mapa (exibe a camada padrão)
embeddable_html: HTML para embutir
licence: Licença
- export_details: Os dados do OpenStreetMap estão licenciados sob a licença <a
- href="http://opendatacommons.org/licenses/odbl/1.0/">Open Data Commons Open
- Database License</a> (ODbL).
+ export_details: Os dados do OpenStreetMap são sujeitos à licença <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
+ Data Commons Open Database License</a> (ODbL).
too_large:
- advice: 'Se a exportação acima falhar, por favor considere o uso de uma das
- fontes listadas abaixo:'
+ advice: 'Se a exportação acima falhar, considere o uso de uma das fontes listadas
+ abaixo:'
body: 'Esta área é muito grande para ser exportada como dados em XML do OpenStreetMap.
- Por gentileza, aumente o zoom ou selecione uma área menor, ou use as seguintes
- fontes de downloads de dados em massa:'
+ Aumente o zoom ou selecione uma área menor, ou use as seguintes fontes de
+ downloads de dados em massa:'
planet:
title: Planeta OSM
description: Cópias regularmente atualizadas da base de dados completa do
OpenStreetMap
overpass:
- title: Overpass API
- description: Fazer o download desta caixa delimitadora através de um espelho
- do banco de dados do OpenStreetMap
+ title: API Overpass
+ description: Baixar este retângulo limite através de um espelho do banco
+ de dados do OpenStreetMap
geofabrik:
title: Baixar do Geofabrik
description: Extratos regularmente atualizados de continentes, países, e
cidades selecionadas
metro:
title: Extratos do Portal Metro
- description: Extratos das principais cidades do mundo e suas areas próximas
+ description: Extratos das principais cidades do mundo e suas proximidades
other:
- title: Outras fontes
- description: Fontes adicionais listadas na wiki do OpenStreetMap
+ title: Outras Fontes
+ description: Fontes adicionais listadas no wiki do OpenStreetMap
options: Opções
format: Formato
scale: Escala
- max: max
+ max: máx
image_size: Tamanho da Imagem
- zoom: Zoom
- add_marker: Adicionar um marcador ao mapa
+ zoom: Ampliação
+ add_marker: Incluir um marcador no mapa
latitude: 'Lat:'
longitude: 'Lon:'
output: Saída
uk_postcode: Resultados do <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
Postcode</a>
ca_postcode: Resultados do <a href="http://geocoder.ca/">Geocoder.CA</a>
- osm_nominatim: Resultados de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ osm_nominatim: Resultados do <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
Nominatim</a>
geonames: Resultados do <a href="http://www.geonames.org/">GeoNames</a>
osm_nominatim_reverse: Resultados do <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
prefix_format: '%{name}'
prefix:
aerialway:
- chair_lift: Elevador para cadeirantes
- drag_lift: Elevador de esqui
+ cable_car: Bonde Aéreo
+ chair_lift: Telecadeira
+ drag_lift: Telesquis
+ gondola: Telecabine
station: Estação Teleférica
aeroway:
aerodrome: Aeródromo
- apron: Rampa
+ apron: Pátio de Aeródromo
gate: Portão
- helipad: Heliporto
- runway: Pista
- taxiway: Pista de taxiamento
- terminal: Terminal
+ helipad: Heliponto
+ runway: Pista de pouso
+ taxiway: Pista de Taxiamento
+ terminal: Terminal de Aeródromo
amenity:
- arts_centre: Centro Artístico
- atm: Caixa automático
- bank: Banco
+ animal_shelter: Abrigo para Animais
+ arts_centre: Centro/Escola de Artes
+ atm: Caixa Eletrônico
+ bank: Agência Bancária
bar: Bar
- bbq: Churrasco
- bench: Banco
- bicycle_parking: Estacionamento de bicicletas
- bicycle_rental: Aluguel de bicicletas
- biergarten: Praça de Alimentação
+ bbq: Churrasqueira
+ bench: Assento
+ bicycle_parking: Bicicletário
+ bicycle_rental: Estação de Bicicletas Públicas
+ biergarten: Cervejaria ao Ar Livre
+ boat_rental: Aluguel de Barcos
brothel: Bordel
bureau_de_change: Casa de Câmbio
- bus_station: Estação de Ônibus/Rodoviária
+ bus_station: Estação de Ônibus
cafe: Cafeteria
- car_rental: Aluguel de veículos
- car_sharing: Veículo de Autosserviço
- car_wash: Lava-Carros
+ car_rental: Aluguel de Carros
+ car_sharing: Compartilhamento de Carros
+ car_wash: Lavagem de Carros
casino: Cassino
- charging_station: Estação de Carga
+ charging_station: Eletroposto
+ childcare: Creche
cinema: Cinema
- clinic: Clínica
+ clinic: Clínica médica
+ clock: Relógio
college: Faculdade
- community_centre: Centro comunitário/Salão de festas e eventos
- courthouse: Fórum
+ community_centre: Centro/Clube Comunitário
+ courthouse: Fórum Jurídico
crematorium: Crematório
dentist: Dentista
- doctors: Consultórios
+ doctors: Consultório médico
dormitory: Dormitório
- drinking_water: Água Potável
- driving_school: Autoescola
+ drinking_water: Fonte de Água Potável
+ driving_school: Escola de Condutores
embassy: Embaixada
emergency_phone: Telefone de Emergência
fast_food: Fast-Food
- ferry_terminal: Terminal de balsas
+ ferry_terminal: Terminal de Balsas
fire_hydrant: Hidrante
- fire_station: Corpo de Bombeiros
+ fire_station: Posto de Bombeiros
food_court: Praça de Alimentação
- fountain: Fonte
- fuel: Combustível
- grave_yard: Cemitério
- gym: Academia
- health_centre: Centro de saúde
+ fountain: Chafariz
+ fuel: Posto de Combustível
+ gambling: Casa de Jogos
+ grave_yard: Cemitério Paroquial
+ gym: Academia de Ginástica
+ health_centre: Centro de Saúde
hospital: Hospital
hunting_stand: Estande de Caça
ice_cream: Sorveteria
- kindergarten: Pré-Escola
+ kindergarten: Escola Infantil
library: Biblioteca
market: Mercado
- marketplace: Feira
- nightclub: Boate
- nursery: Berçário
- nursing_home: Asilo
+ marketplace: Mercado/Feira
+ monastery: Monastério
+ motorcycle_parking: Estacionamento de Motocicletas
+ nightclub: Danceteria
+ nursery: Creche/Berçário
+ nursing_home: Clínica Geriátrica
office: Escritório
parking: Estacionamento
- pharmacy: Farmácia
- place_of_worship: Lugar de prática religiosa
- police: Polícia
+ parking_entrance: Entrada de Estacionamento
+ pharmacy: Drogaria
+ place_of_worship: Lugar de Prática Religiosa
+ police: Delegacia de Polícia
post_box: Caixa de Correio
post_office: Agência de Correios
- preschool: Pré-Escola
+ preschool: Pré-escola
prison: Prisão
pub: Pub
public_building: Edifício Público
reception_area: Área de Recepção
recycling: Posto de Reciclagem
restaurant: Restaurante
- retirement_home: Asilo
+ retirement_home: Lar de Idosos
sauna: Sauna
school: Escola
- shelter: Refúgio
+ shelter: Abrigo
shop: Loja
shower: Chuveiro
social_centre: Centro Social
social_club: Clube Recreativo
social_facility: Serviço Social
- studio: Estúdio
+ studio: Estúdio de Gravação/TV/Rádio
swimming_pool: Piscina
- taxi: Táxi
+ taxi: Ponto de Táxi
telephone: Telefone Público
theatre: Teatro
- toilets: Banheiros
+ toilets: Banheiro público
townhall: Prefeitura
university: Universidade
- vending_machine: Máquina de venda automática
- veterinary: Clínica veterinária
+ vending_machine: Máquina de Venda Automática
+ veterinary: Clínica Veterinária
village_hall: Prefeitura
waste_basket: Cesto de Lixo
+ waste_disposal: Ponto de Entrega de Lixo
youth_centre: Centro Juvenil
boundary:
administrative: Limite Administrativo
- census: Limite censitário
+ census: Limite Censitário
national_park: Parque Nacional
protected_area: Área Protegida
bridge:
"yes": Ponte
building:
"yes": Edifício
+ craft:
+ brewery: Cervejaria
+ carpenter: Carpinteiro
+ electrician: Eletricista
+ gardener: Jardineiro
+ painter: Pintor
+ photographer: Fotógrafo
+ plumber: Encanador
+ shoemaker: Sapateiro
+ tailor: Alfaiate
+ "yes": Loja de Artesanato
emergency:
- phone: Telefone de emergência
+ ambulance_station: Posto de Ambulâncias
+ defibrillator: Desfibrilador
+ landing_site: Local de Pouso de Emergência
+ phone: Telefone de Emergência
highway:
- bridleway: Pista para cavalos
- bus_guideway: Corredor de Ônibus
+ abandoned: Via Abandonada
+ bridleway: Hipovia
+ bus_guideway: Guiamento de Ônibus
bus_stop: Ponto de Ônibus
- construction: Estrada em Construção
+ construction: Via em Construção
cycleway: Ciclovia
- emergency_access_point: Ponto de Acesso de Emergência
- footway: Calçada
+ elevator: Elevador
+ emergency_access_point: Ponto de Resgate Emergencial
+ footway: Caminho de Pedestre
ford: Vau
- living_street: Calçadão
+ living_street: Via de Espaço Compartilhado
milestone: Marco
motorway: Autoestrada
- motorway_junction: Trevo de Acesso
- motorway_link: Autoestrada
- path: Caminho
+ motorway_junction: Saída de Trevo
+ motorway_link: Ligação de Autoestrada
+ path: Caminho Informal
pedestrian: Calçadão
platform: Plataforma
primary: Via Primária
- primary_link: Via Primária
- proposed: Via em planejamento
- raceway: Pista de corrida
+ primary_link: Ligação Primária
+ proposed: Via Planejada
+ raceway: Pista de Corrida
residential: Via Residencial
- rest_area: Área de Descanso
+ rest_area: Área de Repouso
road: Estrada
secondary: Via Secundária
- secondary_link: Via Secundária
- service: Via Marginal
- services: Serviços de autoestrada
- speed_camera: Radar
- steps: Degraus
- street_lamp: Iluminação Pública
+ secondary_link: Ligação Secundária
+ service: Via de Serviço
+ services: Serviços de Estrada
+ speed_camera: Controlador de Velocidade
+ steps: Escada
+ street_lamp: Poste de Luz
tertiary: Via Terciária
- tertiary_link: Via Terciária
- track: Trilha
- trail: Trilha
- trunk: Via de entroncamento
- trunk_link: Via Expressa
- unclassified: Via não classificada
- unsurfaced: Rua não pavimentada
+ tertiary_link: Ligação Terciária
+ track: Estrada Informal
+ traffic_signals: Semáforo
+ trail: Caminho
+ trunk: Via Expressa
+ trunk_link: Ligação de Via Expressa
+ unclassified: Via Não Classificada
+ unsurfaced: Estrada Não Pavimentada
+ "yes": Estrada
historic:
- archaeological_site: Sítio arqueológico
- battlefield: Campo de batalha
- boundary_stone: Marco
- building: Edifício
+ archaeological_site: Sítio Arqueológico
+ battlefield: Campo de Batalha Histórico
+ boundary_stone: Marco de Fronteira
+ building: Edifício Histórico
+ bunker: Casamata
castle: Castelo
church: Igreja
- citywalls: Muralhas da Cidade
+ city_gate: Porta da Cidade
+ citywalls: Muralha
fort: Forte
- house: Casa histórica
- icon: Ícone
- manor: Terra arrendada
- memorial: Memorial
- mine: Mina histórica
- monument: Monumento
- ruins: Ruínas
- tomb: Tumba
- tower: Torre histórica
- wayside_cross: Cruz de beira-de-estrada
- wayside_shrine: Túmulo de beira-de-estrada
+ heritage: Local Tombado
+ house: Casa Histórica
+ icon: Ícone Histórico
+ manor: Casa Senhorial
+ memorial: Monumento Comemorativo
+ mine: Mina Histórica
+ monument: Monumento Simbólico
+ roman_road: Estrada Romana
+ ruins: Ruína
+ stone: Pedra Histórica
+ tomb: Túmulo
+ tower: Torre Histórica
+ wayside_cross: Cruz de beira de estrada
+ wayside_shrine: Capelinha de Beira de Estrada
wreck: Naufrágio
+ junction:
+ "yes": Entroncamento
landuse:
- allotments: Horta urbana
+ allotments: Horta Urbana
basin: Bacia
- brownfield: Terreno Industrial
- cemetery: Cemitério
- commercial: Área comercial
+ brownfield: Terreno Abandonado
+ cemetery: Cemitério Secular
+ commercial: Área de Negócios
conservation: Conservação
- construction: Construção em progresso
- farm: Fazenda
- farmland: Área cultivada
+ construction: Área de Construção
+ farm: Lavoura
+ farmland: Lavoura
farmyard: Pátio de Fazenda
- forest: Floresta
+ forest: Floresta Manejada
garages: Garagens
grass: Gramado
- greenfield: Espaço Verde
- industrial: Área industrial
- landfill: Aterro sanitário
- meadow: Gramado
- military: Área militar
+ greenfield: Terreno Virgem
+ industrial: Área Industrial
+ landfill: Aterro Sanitário
+ meadow: Prado
+ military: Área Militar
mine: Mina
orchard: Pomar
quarry: Pedreira
- railway: Terreno de ferrovia
- recreation_ground: Área recreacional
- reservoir: Represa ou Reservatório de Água
- reservoir_watershed: Barragem
- residential: Área residencial
- retail: Varejo
- road: Área de estrada
- village_green: Parque municipal
- vineyard: Vinhedo
+ railway: Área Ferroviária
+ recreation_ground: Área Recreativa
+ reservoir: Lago Artificial
+ reservoir_watershed: Bacia Artificial
+ residential: Área Residencial
+ retail: Área de Varejo
+ road: Área de Estrada
+ village_green: Parque Municipal
+ vineyard: Vinha
+ "yes": Terreno
leisure:
- beach_resort: Balneário
- bird_hide: Observatório de pássaros
- common: Terreno comum
- fishing: Área de pesca
- fitness_station: Academia de ginástica
+ beach_resort: Estação Praiana
+ bird_hide: Observatório de Pássaros
+ club: Clube
+ common: Baldio Comunitário
+ dog_park: Cachorródromo
+ fishing: Área de Pesca
+ fitness_centre: Academia de Ginástica
+ fitness_station: Estação de Ginástica
garden: Jardim
golf_course: Campo de Golfe
- ice_rink: Rinque de patinação no gelo
+ horse_riding: Local de Equitação
+ ice_rink: Pista de Patinação no Gelo
marina: Marina
- miniature_golf: Mini Golfe
+ miniature_golf: Minigolfe
nature_reserve: Reserva Ambiental
park: Parque
- pitch: Campo esportivo
- playground: Playground
- recreation_ground: Área recreativa
+ pitch: Quadra Esportiva
+ playground: Parquinho
+ recreation_ground: Área Recreativa
+ resort: Resorte
sauna: Sauna
- slipway: Rampa de barco
- sports_centre: Centro Esportivo
+ slipway: Rampa de Barco
+ sports_centre: Centro/Clube Esportivo
stadium: Estádio
swimming_pool: Piscina
- track: Pista de corrida
- water_park: Parque aquático
+ track: Pista de Corrida
+ water_park: Parque Aquático
+ "yes": Lazer
+ man_made:
+ lighthouse: Farol
+ pipeline: Tubulação
+ tower: Torre
+ works: Fábrica
+ "yes": Edificação
military:
- airfield: Aeródromo militar
+ airfield: Aeródromo Militar
barracks: Quartel
- bunker: Bunker
+ bunker: Casamata
mountain_pass:
- "yes": Passe de montanha
+ "yes": Passo de Montanha
natural:
bay: Baía
beach: Praia
cape: Cabo
- cave_entrance: Entrada de Gruta
+ cave_entrance: Entrada de Caverna
cliff: Penhasco
crater: Cratera
dune: Duna
fell: Encosta
fjord: Fiorde
- forest: Floresta
+ forest: Floresta manejada
geyser: Gêiser
glacier: Geleira
- heath: Charneca
- hill: Colina/Morro
+ grassland: Relvado
+ heath: Urzal
+ hill: Colina
island: Ilha
- land: Solo
+ land: Ilha
marsh: Pântano
moor: Brejo
- mud: Lama
- peak: Pico
+ mud: Lamaçal
+ peak: Cume
point: Ponto
reef: Recife
ridge: Cordilheira
rock: Rocha
- scree: Cascalho
- scrub: Arbusto
+ saddle: Ponto de Sela
+ sand: Areia
+ scree: Pedregulhos
+ scrub: Matagal
spring: Nascente
stone: Pedra
strait: Estreito
valley: Vale
volcano: Vulcão
water: Água
- wetland: Pântano / Mangue
- wood: Madeira
+ wetland: Zona Úmida
+ wood: Bosque Nativo
office:
- accountant: Contabilista
+ accountant: Contador
+ administrative: Escritório Administrativo
architect: Arquiteto
company: Empresa
- employment_agency: Agência de emprego
- estate_agent: Agente imobiliário
- government: Escritório governamental
+ employment_agency: Agência de Emprego
+ estate_agent: Agente Imobiliário
+ government: Escritório Governamental
insurance: Seguradora
lawyer: Advogado
- ngo: ONG (Escritório)
- telecommunication: Escritório de telecomunicações
- travel_agent: Agência de viagens
+ ngo: Escritório de ONG
+ telecommunication: Escritório de Telecomunicações
+ travel_agent: Agência de Viagens
"yes": Escritório
place:
+ allotments: Horta Urbana
+ block: Quarteirão
airport: Aeroporto
city: Cidade
country: País
- county: Município
- farm: Fazenda
- hamlet: Aldeia
+ county: Condado
+ farm: Lavoura
+ hamlet: Lugarejo
house: Casa
houses: Casas
island: Ilha
islet: Ilhota
- isolated_dwelling: Moradia isolada
+ isolated_dwelling: Moradia Isolada
locality: Localidade
- moor: Pântano
- municipality: Municipalidade
+ moor: Ancoradouro
+ municipality: Município
neighbourhood: Vizinhança
- postcode: CEP
+ postcode: Código Postal
region: Região
sea: Mar
state: Estado
subdivision: Subdivisão
suburb: Bairro
- town: Cidade
- unincorporated_area: Área não incorporada
- village: Vila
+ town: Cidade Menor
+ unincorporated_area: Área Não Incorporada
+ village: Povoado
+ "yes": Lugar
railway:
- abandoned: Trilhos abandonados
- construction: Via férrea em construção
- disused: Ferrovia em desuso
- disused_station: Estação férrea em desuso
+ abandoned: Ferrovia Abandonada
+ construction: Ferrovia em Construção
+ disused: Ferrovia Inativa
+ disused_station: Estação Ferroviária Inativa
funicular: Funicular
- halt: Parada de trem
- historic_station: Estação de trem histórica
- junction: Cruzamento de ferrovia
- level_crossing: Passagem em nível
- light_rail: Trem metropolitano
- miniature: Linhas ferroviárias para miniaturas
+ halt: Parada de Trem
+ historic_station: Estação Ferroviária Histórica
+ junction: Entroncamento Ferroviário
+ level_crossing: Passagem em Nível
+ light_rail: Ferrovia Metropolitana
+ miniature: Mini Ferrovia
monorail: Monotrilho
- narrow_gauge: Ferrovia estreita
- platform: Plataforma de trem
- preserved: Ferrovia preservada
- proposed: Ferrovia em planejamento
- spur: Ramificação de linha
- station: Estação de Trem
- stop: Cruzamento rodoferroviário
- subway: Estação de metrô
- subway_entrance: Entrada do metrô
- switch: Chave de ferrovia
- tram: Rota de bonde
- tram_stop: Parada de bonde
+ narrow_gauge: Ferrovia de Bitola Estreita
+ platform: Plataforma Ferroviária
+ preserved: Ferrovia Preservada
+ proposed: Ferrovia Planejada
+ spur: Ramificação de Ferrovia
+ station: Estação Ferroviária
+ stop: Ponto de Trem
+ subway: Metrô
+ subway_entrance: Entrada de Metrô
+ switch: Chave de Ferrovia
+ tram: Trilho de Bonde
+ tram_stop: Ponto de bonde
shop:
- alcohol: Loja de bebidas alcoolicas
- antiques: Antiguidades
- art: Loja de artigos de arte
+ alcohol: Loja de Bebidas Alcoólicas
+ antiques: Loja de Antiguidades
+ art: Loja de Artigos de Arte
bakery: Padaria
beauty: Salão de Beleza
- beverages: Loja/depósito de bebidas
- bicycle: Loja de bicicletas
+ beverages: Loja de Bebidas Alcoólicas
+ bicycle: Loja de Bicicletas
books: Livraria
- boutique: Boutique
+ boutique: Butique
butcher: Açougue
- car: Loja de carros
- car_parts: Autopeças
- car_repair: Oficina mecânica
- carpet: Loja de tapetes
- charity: Loja beneficente
- chemist: Farmacêutico
- clothes: Loja de roupas
- computer: Loja de computação
- confectionery: Confeitaria
- convenience: Loja de conveniência
- copyshop: Gráfica/copiadora
- cosmetics: Loja de cosméticos
- deli: Petiscaria
- department_store: Loja de departamentos
- discount: Loja de descontos
- doityourself: Faça você mesmo
- dry_cleaning: Lavagem a seco
- electronics: Loja de Eletrônicos
+ car: Loja de Carros
+ car_parts: Loja de Auto Peças
+ car_repair: Oficina Mecânica
+ carpet: Tapeçaria
+ charity: Loja Beneficente
+ chemist: Loja de Cosméticos e Higiene
+ clothes: Loja de Roupas
+ computer: Loja de Informática
+ confectionery: Doçaria
+ convenience: Loja de Conveniência
+ copyshop: Reprografia
+ cosmetics: Loja de Cosméticos
+ deli: Delicatessen
+ department_store: Loja de Departamento
+ discount: Loja de Descontos
+ doityourself: Loja de Ferragens/Bricolagem
+ dry_cleaning: Lavanderia a Seco
+ electronics: Loja de Eletroeletrônicos
estate_agent: Imobiliária
- farm: Loja de produtos agrícolas
- fashion: Loja de roupas
+ farm: Loja de Produtos Agrícolas
+ fashion: Loja de Roupas
fish: Peixaria
- florist: Florista
- food: Loja de alimentação
- funeral_directors: Capela Mortuária
- furniture: Móveis
- gallery: Galeria
- garden_centre: Viveiro
- general: Loja de artigos gerais
- gift: Loja de presentes
- greengrocer: Sacolão/Hortifrutti
- grocery: Loja de alimentos
- hairdresser: Cabeleireiro
- hardware: Material/Equipamentos de construção
- hifi: Loja de artigos de som
+ florist: Floricultura
+ food: Loja de Alimentos
+ funeral_directors: Agência Funerária
+ furniture: Loja de Móveis
+ gallery: Galeria de Vendas
+ garden_centre: Centro de Jardinagem
+ general: Loja de Artigos Gerais
+ gift: Loja de Presentes
+ greengrocer: Verdureira
+ grocery: Mercearia
+ hairdresser: Cabeleireiro/Barbeiro
+ hardware: Loja de Material de Construção
+ hifi: Loja de Aparelhos Hi-Fi
insurance: Seguradora
jewelry: Joalheria
- kiosk: Quiosque
+ kiosk: Quiosque Comercial
laundry: Lavanderia
- mall: Shopping Center
+ mall: Galeria Comercial
market: Mercado
- mobile_phone: Loja de celulares
- motorcycle: Loja de motocicletas
- music: Loja de música
- newsagent: Jornaleiro
- optician: Ótica / Oculista
- organic: Loja de alimentos orgânicos
- outdoor: Loja ao ar livre
+ mobile_phone: Loja de Celulares
+ motorcycle: Loja de Motocicletas
+ music: Loja de Música
+ newsagent: Banca de Revistas
+ optician: Ótica
+ organic: Loja de Produtos Orgânicos
+ outdoor: Loja de Esportes de Aventura
pet: Pet Shop
- pharmacy: Farmácia
- photo: Loja fotográfica
- salon: Salão de beleza
+ pharmacy: Drogaria
+ photo: Loja Fotográfica
+ salon: Salão de Beleza
second_hand: Brechó
- shoes: Sapataria
- shopping_centre: Shopping Center
- sports: Loja de artigos esportivos
+ shoes: Loja de Calçados
+ shopping_centre: Centro Comercial
+ sports: Loja de Artigos Esportivos
stationery: Papelaria
supermarket: Supermercado
- tailor: Alfaiate
- toys: Loja de brinquedos
- travel_agency: Agência de viagens
- video: Loja de vídeo
- wine: Loja de vinhos
+ tailor: Alfaiataria
+ toys: Loja de Brinquedos
+ travel_agency: Agência de Viagens
+ video: Loja/Locadora de Vídeo
+ wine: Loja de Vinhos
"yes": Loja
tourism:
- alpine_hut: Cabana alpina
+ alpine_hut: Abrigo de Montanha
+ apartment: Apart-Hotel
artwork: Obra de Arte
- attraction: Atração
- bed_and_breakfast: Cama e café da manhã
+ attraction: Atração Turística
+ bed_and_breakfast: Hospedagem Domiciliar
cabin: Cabana
- camp_site: Acampamento
- caravan_site: Acampamento de Caravanas
+ camp_site: Local de Acampamento
+ caravan_site: Local de Caravanas
chalet: Chalé
- guest_house: Albergue
- hostel: Abrigo
+ gallery: Galeria de Arte
+ guest_house: Pousada
+ hostel: Hostel
hotel: Hotel
- information: Informações
- motel: Motel
+ information: Informação TurÃstica
+ motel: Hotel de Estrada
museum: Museu
- picnic_site: Área de Piquenique
- theme_park: Parque temático
- viewpoint: Mirador
- zoo: Zoológico
+ picnic_site: Local de Piquenique
+ theme_park: Parque Temático
+ viewpoint: Mirante
+ zoo: Jardim Zoológico
tunnel:
- culvert: Canal
+ culvert: Duto de Drenagem
"yes": Túnel
waterway:
- artificial: Via fluvial artificial
+ artificial: Via Aquática Artificial
boatyard: Estaleiro
- canal: Canal
- dam: Represa
+ canal: Canal Artificial
+ dam: Barragem
derelict_canal: Canal Abandonado
ditch: Vala
dock: Doca
- drain: Canal
- lock: Dique
- lock_gate: Portão de Dique
+ drain: Valeta de Drenagem
+ lock: Eclusa
+ lock_gate: Comporta de Eclusa
mooring: Ancoradouro
rapids: Corredeiras
river: Rio
stream: Córrego
wadi: Uádi
- waterfall: Queda de água
- weir: Açude
+ waterfall: Queda-d'Água
+ weir: Vertedouro
+ "yes": Via Aquática
admin_levels:
level2: Fronteira Nacional
- level4: Fronteira Estadual
- level5: Fronteira Regional
- level6: Fronteira do condado
- level8: Limite de Município
- level9: Limite da Aldeia
- level10: Limite Suburbano
+ level4: Divisa Estadual
+ level5: Limite Regional
+ level6: Limite de Condado
+ level8: Limite Municipal
+ level9: Limite de Distrito Municipal
+ level10: Limite de Bairro
description:
title:
- osm_nominatim: Resultados de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ osm_nominatim: Resultados do <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
Nominatim</a>
geonames: Localização do <a href="http://www.geonames.org/">GeoNames</a>
types:
- cities: Cidades
- towns: Cidades
+ cities: Cidades Maiores
+ towns: Cidades Menores
places: Lugares
results:
no_results: Nenhum resultado encontrado
more_results: Mais resultados
- distance:
- one: a cerca de 1km
- zero: a menos de 1km
- other: a cerca de %{count}km
- direction:
- south_west: sudoeste
- south: sul
- south_east: sudeste
- east: leste
- north_east: nordeste
- north: norte
- north_west: noroeste
- west: oeste
layouts:
project_name:
title: OpenStreetMap
h1: OpenStreetMap
logo:
alt_text: Logotipo do OpenStreetMap
- home: Ir para o seu local
+ home: Ir para o seu local principal
logout: Sair
log_in: Entrar
log_in_tooltip: Entrar com uma conta existente
sign_up: Criar conta
- start_mapping: Começar a mapear
+ start_mapping: Começar a Mapear
sign_up_tooltip: Criar uma conta para editar
edit: Editar
history: Histórico
user_diaries_tooltip: Ver os diários dos usuários
edit_with: Edite com %{editor}
tag_line: O Wiki de Mapas Livres
- intro_header: Bem vindo ao OpenStreetMap!
+ intro_header: Bem-vindo(a) ao OpenStreetMap!
intro_text: O OpenStreetMap é um mapa do mundo, criado por pessoas como você e
de uso livre sob uma licença aberta.
intro_2_create_account: Criar uma conta de usuário
- partners_html: Hospedagem é suportada por %{ucl}, %{ic}, %{bytemark}, e outros
+ partners_html: A hospedagem é apoiada por %{ucl}, %{ic}, %{bytemark}, e outros
%{partners}.
partners_ucl: UCL VR Centre
partners_ic: Imperial College de Londres
- partners_bytemark: Alojamento Bytemark
+ partners_bytemark: Hospedagem Bytemark
partners_partners: parceiros
- osm_offline: A base de dados do OpenStreetMap está off-line devido a operações
- de manutenção.
+ osm_offline: A base de dados do OpenStreetMap está fora do ar para manutenção.
osm_read_only: A base de dados do OpenStreetMap está em modo somente leitura devido
a operações de manutenção.
- donate: 'Ajude o OpenStreetMap fazendo doações para o Fundo de Upgrade de Hardware:
+ donate: 'Ajude o OpenStreetMap fazendo doações para o Fundo de Melhoria de Hardware:
%{link}.'
help: Ajuda
about: Sobre
community_blogs: Blogs da Comunidade
community_blogs_title: Blogs de membros da comunidade OpenStreetMap
foundation: Fundação
- foundation_title: A Fundação OpenStreetMap
+ foundation_title: A OpenStreetMap Foundation
make_a_donation:
title: Ajude o OpenStreetMap com uma doação monetária
text: Faça uma doação
- learn_more: Saiba mais
+ learn_more: Saiba Mais
more: Mais
license_page:
foreign:
legal_babble:
title_html: Direitos Autorais e Licença
intro_1_html: |-
- O OpenStreetMap possui <i>dados abertos</i>, licenciados sob a <a
+ O OpenStreetMap possui <i>dados abertos</i>, sujeitos à <a
href="http://opendatacommons.org/licenses/odbl/">Open Data
Commons Open Database License</a> (ODbL).
intro_2_html: "Você é livre para copiar, distribuir, transmitir e adaptar nossos
completo explica seus direitos e responsabilidades."
intro_3_html: |-
Nosso acervo cartográfico, bem como nossa documentação, são
- licenciados sob a licença <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative
+ sujeitos à licença <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative
Commons Atribuição – Compartilhamento pela mesma Licença 2.0</a> (CC-BY-SA).
- credit_title_html: Como dar crédito ao OpenStreetMap
- credit_1_html: Solicitamos que você faça referência a “contribuidores do © OpenStreetMap”.
- credit_2_html: "Você deve deixar claro que os dados são disponíveis sob a \"Open\nDatabase
- Licence, e se usar nosso acervo cartográfico, que o mesmo é\nlicenciado como
- CC-BY-SA. Você pode proceder ligando a\n<a href=\"http://www.openstreetmap.org/copyright\">esta
+ credit_title_html: Como fazer atribuição ao OpenStreetMap
+ credit_1_html: Requeremos que você faça atribuição citando “contribuidores do
+ © OpenStreetMap”.
+ credit_2_html: "Você deve deixar claro que os dados são disponibilizados mediante
+ a licença \"Open\nDatabase Licence, e se usar nosso acervo cartográfico, que
+ o mesmo é\nlicenciado como CC-BY-SA. Você pode proceder ligando a\n<a href=\"http://www.openstreetmap.org/copyright\">esta
página</a>.\nAlternativamente, e obrigatoriamente, caso esteja distribuindo
o OSM em \nforma de dados, você pode denominar e ligar diretamente à(s) licença(s).
Em veículos\nonde \"links\" não são possíveis (p. ex.: impressos), sugerimos
\nOpenStreetMap ao endereço completo), ao opendatacommons.org, e,\nse for
relevante, ao creativecommons.org."
credit_3_html: |-
- Para um mapa eletrônico explorável, os créditos devem aparecer no canto do mapa.
+ Para um mapa eletrônico navegável, a atribuição deve aparecer no canto do mapa.
Por exemplo:
attribution_example:
- alt: Exemplo de como atribuir o OpenStreetMap a uma página
+ alt: Exemplo de como atribuir o OpenStreetMap numa página web
title: Exemplo de atribuição
more_title_html: Descobrir mais
more_1_html: |-
- Leia mais sobre o uso de nossos dados, e como nos dar crédito, em <a
+ Leia mais sobre o uso de nossos dados, e sobre como nos dar crédito, em <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ?setlang=pt">Legal
FAQ</a>.
more_2_html: |2-
- Embora o OpenStreetMap tenha dados abertos, nós não podemos prover uma
+ Embora o OpenStreetMap tenha dados abertos, não podemos prover uma
API de mapas livre de encargos para desenvolvedores de terceiros.
Veja nossa <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Política de uso da API</a>,
<a href="http://wiki.openstreetmap.org/wiki/Pt-br:Tile_usage_policy">Política de Uso de Imagens</a>
e <a href="http://wiki.openstreetmap.org/wiki/Pt-br:Nominatim#Pol.C3.ADtica_de_uso">Política de Uso do Nominatim</a>.
- contributors_title_html: Nossos colaboradores
+ contributors_title_html: Nossos contribuidores
contributors_intro_html: |-
- Nossos contribuidores são milhares de indivíduos. Nós também incluímos
+ Nossos contribuidores são milhares de indivíduos. Também incluímos
dados, cujas licenças são abertas, de organismos nacionais de cartografia
e de outras fontes, dentre elas:
contributors_at_html: "<strong>Áustria</strong>: Contém dados de \n <a href=\"http://data.wien.gv.at/\">Stadt
(© Departamento de Recursos\n Naturais do Canadá), and StatCan (Divisão
de Geografia e \n Estatística do Canada)."
contributors_fi_html: |-
- <strong>Finlândia</strong>: Dados do Continente do National Land Survey da Finland´s Topographic Database
+ <strong>Finlândia</strong>: Dados do Continente do National Land Survey da Finland's Topographic Database
e outras bases de dados, em <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI Licença</a>.
contributors_fr_html: |-
<strong>França</strong>: Contém dados da
(<a href="http://www.and.com">www.and.com</a>)
contributors_nz_html: "<strong>Nova Zelândia</strong>: Contém dados do \n Land
Information New Zealand. Crown Copyright reserved."
+ contributors_si_html: '<strong>Eslovênia</strong>: Possui dados da <a href="http://www.gu.gov.si/en/">Autoridade
+ de Levantamento e Mapeamento</a> e do <a href="http://www.mkgp.gov.si/en/">Ministério
+ de Agricultura, Silvicultura e Alimentação</a> (informações públicas da Eslovênia).'
contributors_za_html: |-
<strong>Africa do Sul</strong>: contém dados originários de
<a href="http://www.ngi.gov.za/">Chief Directorate:
- National Geo-Spatial Information</a>, com direitos de autor reservados àquele Estado.
+ National Geo-Spatial Information</a>, com direitos autorais reservados àquele Estado.
contributors_gb_html: |-
<strong>Reino Unido</strong>: Contém dados da Ordnance
- Survey © Crown copyright e direitos da base de dados 2010.
+ Survey © Direitos da base e autorais da Crown 2010.
contributors_footer_1_html: Para mais informações sobre estas e outras fontes
utilizadas para melhorar o OpenStreetMap, consulte a <a href="http://wiki.openstreetmap.org/wiki/Contributors?setlang=pt">página
de contribuidores</a> (em inglês) no wiki do OpenStreetMap.
contributors_footer_2_html: "A inclusão de dados no OpenStreetMap não implica
que fornecedor \noriginal apoie o OpenStreetMap, ou dê qualquer garantia,
ou \naceite qualquer responsabilidade."
- infringement_title_html: Violação de direitos autorais
+ infringement_title_html: Violação de Direitos Autorais
infringement_1_html: |2-
- Os colaboradores do OSM são lembrados de nunca adicionar dados de quaisquer
+ Os contribuidores do OSM são lembrados de nunca adicionar dados de quaisquer
fontes com direitos autorais protegidos (ex.: Google Maps ou mapas impressos) sem
permissão expressa dos seus detentores.
infringement_2_html: "Se você acredita que material protegido por direitos autorais
- foi, inapropriadamente,\nadicionado à base de dados do OpenStreetMap ou a
- este sítio, por favor, proceda\nao nosso <a href=\"http://www.osmfoundation.org/wiki/License/Takedown_procedure\">takedown\nprocedure</a>
- (em inglês) ou comunique diretamente em nosso \n<a href=\"http://dmca.openstreetmap.org/\">on-line
- filing page</a> (em inglês)."
+ foi indevidamente\nincluído na base de dados do OpenStreetMap ou a este site,
+ por favor, proceda\nao nosso <a href=\"http://www.osmfoundation.org/wiki/License/Takedown_procedure\">processo
+ de remoção</a> (em inglês) ou registre uma ocorrência diretamente em nosso
+ \n<a href=\"http://dmca.openstreetmap.org/\">página online de registro de
+ ocorrências</a> (em inglês)."
+ trademarks_title_html: <span id="trademarks"></span>Marcas registradas
+ trademarks_1_html: O OpenStreetMap e o logotipo da lupa são marcas registradas
+ da OpenStreetMap Foundation. Se tiver dúvidas sobre o uso das marcas, envie
+ suas questões para o <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licence
+ Working Group</a>.
welcome_page:
title: Bem-vindo(a)!
- introduction_html: Bem vindo ao OpenStreetMap, o mapa livre e editável do mundo.
+ introduction_html: Bem-vindo(a) ao OpenStreetMap, o mapa livre e editável do mundo.
Agora que você se inscreveu, você está pronto para começar a mapear. Aqui está
um guia rápido com as coisas mais importantes que você precisa saber.
whats_on_the_map:
- title: O que tem no mapa
+ title: Conteúdo do Mapa
on_html: |-
OpenStreetMap é o lugar para mapear coisas que são simultaneamente <em>reais e atuais</em> -
- isso inclui milhões de edifícios, estradas, e outros detalhes sobre lugares. Você pode mapear quaisquer características do mundo real que te interessam.
- off_html: O que <em>não está</em> incluído é informação opinativa, como clasificações,
+ isso inclui milhões de edifícios, estradas, e outros detalhes sobre lugares. Você pode mapear qualquer elemento do mundo real que achar interessante.
+ off_html: O que <em>não está</em> incluído é informação opinativa, como classificações,
características históricas ou hipotéticas, bem como dados de fontes protegidas
por direitos autorais. A não ser que você tenha permissão especial, não copie
de outros mapas online ou de mapas em papel.
basic_terms:
- title: Condições Básicas para Mapear
+ title: Regras Básicas para Mapear
paragraph_1_html: OpenStreetMap tem seus próprios jargões. Aqui estão algumas
- palavras-chave que virão comumente.
- editor_html: Um <strong>editor</strong> é um programa ou website que você pode
+ palavras-chave úteis.
+ editor_html: Um <strong>editor</strong> é um programa ou site que você pode
usar para editar o mapa.
node_html: Um <strong>ponto</strong> (ou nó) é um ponto no mapa, como um restaurante
ou uma árvore.
- way_html: Um <strong>caminho</strong> é uma linha ou área, como uma estrada,
- córrego, lago ou edifício.
- tag_html: Uma <strong>etiqueta</strong> é uma porção de dados sobre um ponto
- ou linha, como o nome de um restaurante ou o limite de velocidade de uma rodovia.
+ way_html: Uma <strong>linha</strong> (ou caminho) é uma linha ou o contorno
+ de uma área, como uma estrada, córrego, lago ou edifício.
+ tag_html: Uma <strong>etiqueta</strong> é uma informação sobre um ponto ou linha,
+ como o nome de um restaurante ou o limite de velocidade de uma rodovia.
+ rules:
+ title: Regras!
+ paragraph_1_html: O OpenStreetMap tem poucas regras formas mas espera que todos
+ os participantes contribuam e se comuniquem com a comunidade. Se estiver pensando
+ em atividades que não sejam editar manualmente, lei a e siga as orientações
+ em <a href='http://wiki.openstreetmap.org/wiki/Pt:Import/Guidelines'>Importações</a>
+ e <a href='http://wiki.openstreetmap.org/wiki/Pt:C%C3%B3digo_de_conduta_de_edi%C3%A7%C3%B5es_automatizadas'>Edições
+ Automáticas</a>.
questions:
- title: Alguma pergunta?
+ title: Dúvidas?
paragraph_1_html: |-
- O OpenStreetMap tem vários recursos para saber mais sobre o projeto, perguntar e responder a questões, e colaborativamente discutir e documentar vários tópicos sobre o mapa.
+ O OpenStreetMap oferece vários recursos para você descobrir mais sobre o projeto, perguntar e responder a questões, e colaborativamente discutir e documentar vários tópicos sobre o mapa.
<a href='%{help_url}'>Obtenha ajuda aqui</a>
- start_mapping: Iniciando Mapeamento
+ start_mapping: Começando a Mapear
add_a_note:
- title: Sem tempo para editar? Adicione uma nota!
+ title: Sem tempo para editar? Inclua uma nota!
paragraph_1_html: Se você só quer que algo pequeno seja arrumado, e não tem
tempo para se inscrever e aprender como editar, é fácil adicionar uma nota.
- paragraph_2_html: "Basta ir ao <a href='%{map_url}'>mapa</a> e clique no ícone
- da nota:<span class='icon note'></span> . Isto irá adicionar um marcador ao
- mapa, que você pode mover \narrastando-o. Adicione a sua mensagem e clique
- em salvar, e outros mapeadores irão investigar."
+ paragraph_2_html: "Basta ir ao <a href='%{map_url}'>mapa</a> e clicar no ícone
+ da nota:<span class='icon note'></span> . Isto incluirá um marcador no mapa,
+ que você pode mover \narrastando. Adicione a sua mensagem e clique em salvar,
+ e outros mapeadores vão investigar."
fixthemap:
- title: Reportar um problema / Corrigir o mapa
+ title: Relatar um problema / Corrigir o mapa
how_to_help:
- title: Como ajudar
+ title: Como Ajudar
join_the_community:
title: Junte-se à comunidade
- explanation_html: Se você reparou num problema com os dados do nosso mapa,
- como por exemplo uma estrada ou o seu adereço em falta, a melhor maneira
- de proceder é juntando-se à comunidade do OpenStreetMap e adicionando ou
- reparando os dados por si mesmo.
+ explanation_html: Se você achou um problema nos dados do nosso mapa, como
+ por exemplo uma estrada ou o seu endereço em falta, o melhor a fazer é juntar-se
+ à comunidade do OpenStreetMap e incluir ou reparar os dados você mesmo.
add_a_note:
instructions_html: |-
Apenas clique em <a class='icon note'></a> ou no mesmo ícone na interface do mapa.
- Isto irá adicionar um marcador ao mapa, o qual pode mover arrastando. Adicione a sua mensagem, clique em salvar, e outros utilizadores como você irão investigar.
+ Isto incluirá um marcador ao mapa, que você pode mover arrastando. Adicione a sua mensagem, clique em salvar, e outros utilizadores como você vão investigar.
other_concerns:
title: Outras preocupações
explanation_html: Se você se preocupa com o modo como os nossos dados estão
- sendo usados ou sobre os seus conteúdos, por favor consulte a nossa <a href='/copyright'>página
+ sendo usados ou sobre os seus conteúdos, consulte a nossa <a href='/copyright'>página
de direitos autorais</a> para mais informações legais, ou contate o <a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>grupo
de trabalho OSMF</a> apropriado.
help_page:
title: Obtendo Ajuda
- introduction: O OpenStreetMap tem vários recursos para saber mais sobre o projeto,
- perguntar e responder a questões, e colaborativamente discutir e documentar
- vários tópicos sobre o mapa.
+ introduction: O OpenStreetMap oferece vários recursos para você saber mais sobre
+ o projeto, perguntar e responder a questões, e colaborativamente discutir e
+ documentar vários tópicos sobre o mapa.
welcome:
url: /welcome
- title: Bem vindo ao OSM
+ title: Bem-vindo(a) ao OSM
description: Comece por este guia rápido sobre os princípios básicos do OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Pt-br:Beginners%27_guide
+ title: Introdução
+ description: Guia para iniciantes mantido pela comunidade.
help:
url: http://help.openstreetmap.org/
title: help.openstreetmap.org
description: Faça uma pergunta ou procure por respostas no fórum de perguntas
e respostas do OpenStreetMap.
+ mailing_lists:
+ title: Listas de E-mail
+ description: Tire uma dúvida ou discuta assuntos interessantes em várias listas
+ regionais ou por assunto.
+ forums:
+ title: Fóruns
+ description: Questões e discussões para quem prefere fóruns.
+ irc:
+ title: IRC
+ description: Bate-papo interativo em vários idiomas e sobre vários assuntos.
+ switch2osm:
+ title: switch2osm
+ description: Ajuda para empresas e organizações migrando para mapas baseados
+ no OpenStreetMap e outros serviços.
wiki:
url: http://wiki.openstreetmap.org/wiki/Pt-br:Main_Page?setlang=pt
title: wiki.openstreetmap.org
- description: Navegue na wiki para ver a documentação do OSM com mais detalhes.
+ description: Navegue no wiki para ver a documentação do OSM com mais detalhes.
about_page:
next: Próximo
- copyright_html: <span>©</span>Colaboradores<br>do OpenStreetMap
+ copyright_html: <span>©</span>Contribuidores<br>do OpenStreetMap
used_by: O %{name} fornece dados a centenas de sites na internet, aplicações de
celular e outros dispositivos
lede_text: O OpenStreetMap é desenvolvido por uma comunidade voluntária de mapeadores
que contribuem e mantêm atualizados os dados sobre estradas, trilhos, cafés,
estações ferroviárias e muito mais por todo o mundo.
- local_knowledge_title: Conhecimento local
- local_knowledge_html: O OpenStreetMap valoriza o conhecimento local. Os colaboradores
+ local_knowledge_title: Conhecimento Local
+ local_knowledge_html: O OpenStreetMap valoriza o conhecimento local. Os contribuidores
utilizam fotografias aéreas, dispositivos GPS, e mapas do terreno para verificar
que a informação no OpenStreetMap é rigorosa e atualizada.
- community_driven_title: Dirigido pela comunidade
+ community_driven_title: Impulsionado pela Comunidade
community_driven_html: |-
A comunidade do OpenStreetMap é diversa, apaixonada, e aumenta diariamente.
- Entre os nossos colaboradores encontra-se mapeadores entusiastas,
+ Entre os nossos contribuidores encontram-se mapeadores entusiastas,
profissionais das áreas de sistemas geográficos, engenheiros que utilizam
os servidores do OpenStreetMap, voluntários a mapear áreas afetadas
por grandes desastres, e muitos mais.
open_data_html: |-
O OpenStreetMap é constituído por <i>dados abertos</i>: qualquer
pessoa tem a liberdade de usar os dados para qualquer fim desde
- credite a autoria do OpenStreetMap e os seus colaboradores.
+ credite a autoria do OpenStreetMap e os seus contribuidores.
Se você alterar os dados ou criar algo com os dados, pode distribuir
o produto resultante apenas sob a mesma licença. Consulte <a href='%{copyright_path}'>a página sobre direitos de autor e licenciamento</a> para mais informações.
+ legal_title: Jurídico
+ legal_html: Esta página e vários outros serviços relacionados são formalmente
+ operados pela <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a>
+ (OSMF) em nome da comunidade. <br> Por favor <a href='http://osmfoundation.org/Contact'>contate
+ a OSMF</a> se tiver perguntas sobre licenciamento, direitos autorais ou outras
+ questões e problemas legais.
partners_title: Parceiros
notifier:
diary_comment_notification:
- subject: '[OpenStreetMap] %{user} comentou uma entrada de seu diário'
+ subject: '[OpenStreetMap] %{user} comentou uma entrada do seu diário'
hi: Olá %{to_user},
header: '%{from_user} comentou a sua entrada de diário do OpenStreetMap com
o assunto %{subject}:'
footer_html: Você pode também ler a mensagem em %{readurl} e pode responder
em %{replyurl}
friend_notification:
- subject: '[OpenStreetMap] %{user} adicionou você como amigo'
- had_added_you: '%{user} adicionou você como amigo no OpenStreetMap.'
- see_their_profile: Você pode ver o perfil dele em %{userurl}.
- befriend_them: Você também pode adicioná-lo como amigo em %{befriendurl}.
+ subject: '[OpenStreetMap] %{user} adicionou você como amigo(a)'
+ had_added_you: '%{user} adicionou você como amigo(a) no OpenStreetMap.'
+ see_their_profile: Você pode ver o perfil dele(a) em %{userurl}.
+ befriend_them: Você também pode adicioná-lo(a) como amigo em %{befriendurl}.
gpx_notification:
greeting: Olá,
- your_gpx_file: Este parece ser um arquivo GPX seu
+ your_gpx_file: Isto parece ser o seu arquivo GPX
with_description: com a descrição
and_the_tags: 'e as seguintes etiquetas:'
and_no_tags: e sem etiquetas.
failure:
- subject: '[OpenStreetMap] Importação de arquivo GPX falhou'
+ subject: '[OpenStreetMap] Falha ao importar arquivo GPX'
failed_to_import: 'falha ao importar. Veja a mensagem de erro:'
more_info_1: Mais informações sobre erros de importação de arquivos GPX e
como evitá-los
more_info_2: 'podem ser encontradas em:'
import_failures_url: http://wiki.openstreetmap.org/wiki/GPX_Import_Failures?uselang=pt-br
success:
- subject: '[OpenStreetMap] Arquivo GPX importado com sucesso'
+ subject: '[OpenStreetMap] Sucesso ao importar arquivo GPX'
loaded_successfully: |-
carregado com sucesso com %{trace_points} pontos além dos
%{possible_points} pontos possíveis."
subject: '[OpenStreetMap] Bem-vindo(a) ao OpenStreetMap'
greeting: Olá!
created: Alguém (provavelmente você) acaba de criar uma conta em %{site_url}.
- confirm: 'Antes de qualquer coisa, nós precisamos confirmar que esta solicitação
- veio de você, portanto, se sim, por favor, clique no endereço abaixo para
- confirmar sua conta:'
+ confirm: 'Antes de qualquer coisa, precisamos confirmar que esta solicitação
+ veio de você. Se sim, por favor clique no endereço abaixo para confirmar sua
+ conta:'
welcome: Após confirmar sua conta, você receberá algumas informações adicionais
para começar.
email_confirm:
subject: '[OpenStreetMap] Confirmação de endereço de e-mail'
email_confirm_plain:
greeting: Olá,
- hopefully_you: Alguém (esperamos que você) quer alterar seu endereço de e-mail
+ hopefully_you: Alguém (provavelmente você) quer alterar o seu endereço de e-mail
de %{server_url} para %{new_address}.
click_the_link: Se esta pessoa é você, por favor clique no link abaixo para
confirmar a alteração.
email_confirm_html:
greeting: Olá,
- hopefully_you: Alguém (esperamos que você) quer alterar seu endereço de e-mail
+ hopefully_you: Alguém (provavelmente você) quer alterar o seu endereço de e-mail
de %{server_url} para %{new_address}.
click_the_link: Se esta pessoa é você, por favor clique no link abaixo para
confirmar a alteração.
subject: '[OpenStreetMap] Solicitação de nova senha'
lost_password_plain:
greeting: Olá,
- hopefully_you: Alguém (possivelmente você) pediu uma nova senha para a conta
- no openstreetmap.org ligada a este e-mail.
+ hopefully_you: Alguém (talvez você) pediu uma nova senha para a conta no openstreetmap.org
+ ligada a este e-mail.
click_the_link: Se esta pessoa é você, por favor clique no link abaixo para
receber uma nova senha.
lost_password_html:
greeting: Olá,
- hopefully_you: Alguém (possivelmente você) pediu uma nova senha para a conta
- no openstreetmap.org ligada a este e-mail.
+ hopefully_you: Alguém (talvez você) pediu uma nova senha para a conta no openstreetmap.org
+ ligada a este e-mail.
click_the_link: Se esta pessoa é você, por favor clique no link abaixo para
receber uma nova senha.
note_comment_notification:
anonymous: Um usuário anônimo
greeting: Olá,
commented:
- subject_own: '[OpenStreetMap] %{commenter} comentou uma de suas notas'
- subject_other: '[OpenStreetMap] %{commenter} comentou em uma nota que interessa
+ subject_own: '[OpenStreetMap] %{commenter} comentou uma nota sua'
+ subject_other: '[OpenStreetMap] %{commenter} comentou numa nota que interessa
a você'
- your_note: '%{commenter} deixou um comentário em uma de suas notas no mapa
- próximo a %{place}.'
- commented_note: '%{commenter} deixou um comentário em uma nota de mapa que
- você comentou. A notá está próxima a %{place}.'
+ your_note: '%{commenter} deixou um comentário numa nota sua no mapa perto
+ de %{place}.'
+ commented_note: '%{commenter} deixou um comentário numa nota de mapa que você
+ comentou. A notá está perto de %{place}.'
closed:
- subject_own: '[OpenStreetMap] %{commenter} resolveu uma de suas notas'
+ subject_own: '[OpenStreetMap] %{commenter} resolveu uma nota sua'
subject_other: '[OpenStreetMap] %{commenter} resolveu uma nota que interessa
a você'
- your_note: '%{commenter} resolveu uma de suas notas no mapa próximo a %{place}.'
+ your_note: '%{commenter} resolveu uma nota sua no mapa perto de %{place}.'
commented_note: '%{commenter} resolveu uma nota de um mapa que você comentou.
- A nota está próxima a %{place}.'
+ A nota está perto de %{place}.'
reopened:
- subject_own: '[OpenStreetMap] %{commenter} reativou uma de suas notas'
+ subject_own: '[OpenStreetMap] %{commenter} reativou uma nota sua'
subject_other: '[OpenStreetMap] %{commenter} reativou uma nota que interessa
a você'
- your_note: '%{commenter} reativou uma de suas notas no mapa perto de %{place}.'
- commented_note: '%{commenter} reativou uma nota de um mapa que você comentou.
- A nota está próxima a %{place}.'
- details: Mais detalhes sobre a nota podem ser encontradas em %{url}.
+ your_note: '%{commenter} reativou uma nota sua no mapa perto de %{place}.'
+ commented_note: '%{commenter} reativou uma nota de mapa que você comentou.
+ A nota está perto de %{place}.'
+ details: Mais detalhes sobre a nota podem ser encontrados em %{url}.
changeset_comment_notification:
greeting: Olá,
commented:
- subject_own: '[OpenStreetMap] %{commenter} comentou um de seus conjuntos de
- alterações'
+ subject_own: '[OpenStreetMap] %{commenter} comentou um conjunto de alterações
+ seu'
subject_other: '[OpenStreetMap] %{commenter} comentou um conjunto de alterações
que interessa a você'
- your_changeset: '%{commenter} deixou um comentários em seu conjunto de alterações
- em %{time}'
- commented_changeset: '%{commenter} deixou um comentário em um grupo de alterações
- do mapa criado por %{changeset_author} em %{time}, que você está acompanhando'
+ your_changeset: '%{commenter} deixou um comentário num conjunto de alterações
+ seu em %{time}'
+ commented_changeset: '%{commenter} deixou um comentário num conjunto de alterações
+ que você está acompanhando criado por %{changeset_author} em %{time},'
partial_changeset_with_comment: com comentário %{changeset_comment}
partial_changeset_without_comment: sem comentários
details: Mais detalhes sobre o conjunto de alterações podem ser encontrados
message:
inbox:
title: Caixa de Entrada
- my_inbox: Minha caixa de entrada
+ my_inbox: Minha Caixa de Entrada
outbox: caixa de saída
messages: Você tem %{new_messages} e %{old_messages}
new_messages:
back_to_inbox: Voltar para a caixa de entrada
message_sent: Mensagem enviada
limit_exceeded: Você enviou muitas mensagens recentemente. Por favor espere
- um momento antes de tentar enviar mais.
+ um pouco antes de tentar enviar mais.
no_such_message:
title: Esta mensagem não existe
heading: Esta mensagem não existe
- body: Desculpe, mas não existe uma mensagem com este id.
+ body: Não existe uma mensagem com este id.
outbox:
title: Caixa de Saída
my_inbox: Minha %{inbox_link}
to: Para
subject: Assunto
date: Data
- no_sent_messages: Você ainda não enviou nenhuma mensagem. Porque não entrar
+ no_sent_messages: Você ainda não enviou nenhuma mensagem. Por que não entrar
em contato com %{people_mapping_nearby_link}?
people_mapping_nearby: alguém mapeando por perto
reply:
wrong_user: Você está conectado como `%{user}' mas a mensagem que você quer
- responder não foi enviada para este usuário. Por gentileza, faça o login com
- o usuário correto para poder responder.
+ responder não foi enviada para este usuário. Faça o login com o usuário correto
+ para poder responder.
read:
- title: Ler Mensagem
+ title: Ler mensagem
from: De
subject: Assunto
date: Data
back: Voltar
to: Para
wrong_user: Você está conectado como `%{user}' mas a mensagem que você quer
- ler não foi enviada para este usuário. Por gentileza, faça o login com o usuário
- correto para poder responder.
+ ler não foi enviada para este usuário. Faça o login com o usuário correto
+ para poder responder.
sent_message_summary:
delete_button: Apagar
mark:
JavaScript desativado.
js_2: O OpenStreetMap usa JavaScript para a navegação dos mapas.
permalink: Link Permanente
- shortlink: Atalho
- createnote: Adicionar uma nota
+ shortlink: Link Curto
+ createnote: Incluir uma nota
license:
- copyright: Direitos autorais de OpenStreetMap e contribuidores sob uma licença
+ copyright: Direitos autorais do OpenStreetMap e contribuidores sob uma licença
aberta
- remote_failed: Edição falhou - certifique-se de que o JOSM ou o Merkaartor estão
- carregados e que o Controle Remoto está ativado
+ remote_failed: Falha ao editar - certifique-se de que o JOSM ou o Merkaartor
+ estão carregados e que o Controle Remoto está ativado
edit:
not_public: Você não configurou suas edições para serem públicas.
not_public_description: Você não pode editar o mapa até que você configure suas
user_page_link: página de usuário
anon_edits: (%{link})
anon_edits_link_text: Descubra se é esse o seu caso.
- flash_player_required: Você precisa de um tocador Flash para usar o Potlatch,
- o editor Flash do OpenStreetMap. Você pode <a href="http://get.adobe.com/br/flashplayer/">baixar
- o Flash Player da Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Pt-br:Editing?setlang=pt">Outras
- opções</a> estão disponíveis para editar o OpenStreetMap.
+ flash_player_required: Você precisa de um reprodutor de mídia Flash para usar
+ o Potlatch, o editor Flash do OpenStreetMap. Você pode <a href="http://get.adobe.com/br/flashplayer/">baixar
+ o Flash Player da Adobe.com</a>. Também há <a href="http://wiki.openstreetmap.org/wiki/Pt-br:Editing?setlang=pt">outras
+ opções</a> disponíveis para editar o OpenStreetMap.
potlatch_unsaved_changes: Você tem alterações não salvas. (Para salvar no Potlatch,
- você deve deselecionar a linha ou ponto atual, se editando no modo de edição
- ao vivo, ou clicar em salvar se estiver editando offline.
+ você deve deselecionar a linha ou ponto atual se estiver editando ao vivo,
+ ou clicar em salvar se estiver editando offline.
potlatch2_not_configured: Potlatch 2 não foi configurado - veja http://wiki.openstreetmap.org/wiki/The_Rails_Port
- potlatch2_unsaved_changes: Você tem alterações não salvas. (Para salvar no potlatch
- 2, você deve clicar em Salvar)
+ potlatch2_unsaved_changes: Você tem alterações não salvas. (Para salvar no Potlatch
+ 2, você deve clicar em Salvar.)
id_not_configured: iD não foi configurado
no_iframe_support: Seu navegador não suporta iframes HTML, que são necessários
- para que esse recurso.
+ para esse recurso.
sidebar:
search_results: Resultados da Busca
close: Fechar
search:
search: Buscar
+ get_directions: Obter itinerário
+ get_directions_title: Ache um caminho entre dois pontos
+ from: De
+ to: Para
where_am_i: Onde estou?
where_am_i_title: Descrever a localidade atual usando o motor de busca
submit_text: Ir
key:
table:
entry:
- motorway: Rodovia expressa
- trunk: Via Expressa
- primary: Via Primária
- secondary: Via Secundária
- unclassified: Via Sem Classificação Administrativa
- unsurfaced: Via Não Pavimentada
- track: Trilha
- byway: Trilha Larga
- bridleway: Trilha de Montaria
+ motorway: Autoestrada
+ trunk: Via expressa
+ primary: Via primária
+ secondary: Via secundária
+ unclassified: Via não classificada
+ unsurfaced: Via não pavimentada
+ track: Estrada rústica
+ byway: Trilha larga
+ bridleway: Hipovia
cycleway: Ciclovia
- footway: Passagem para Pedestres
- rail: Trilhos
- subway: Trilhos Subterrâneos
+ footway: Caminho de pedestre
+ rail: Ferrovia
+ subway: Metrô
tram:
- - Trem metropolitano
- - Trem de superfície (bonde)
+ - Ferrovia metropolitana
+ - bonde
cable:
- - Veículo de cabos
- - Elevador de Cadeiras
+ - Bonde aéreo
+ - telecadeira
runway:
- - Pista de aterrissagem
- - Pista de manobras
+ - Pista de Pouso
+ - pista de taxiamento
apron:
- - Pista de estacionamento de aviões
- - Aeroporto
- admin: Limite Administrativo
- forest: Floresta
- wood: Reserva Florestal
- golf: Campo de Golf
+ - Pátio de aeródromo
+ - terminal
+ admin: Limite administrativo
+ forest: Floresta manejada
+ wood: Bosque nativo
+ golf: Campo de golfe
park: Parque
- resident: Área Residencial
- tourist: Atração Turística
+ resident: Área residencial
+ tourist: Atração turística
common:
- - Área pública
- - Vegetação rasteira
- retail: Área Comercial (Lojas)
- industrial: Área Industrial
- commercial: Área Comercial (Escritórios)
- heathland: Área Sem Vegetação
+ - Baldio comunitário
+ - prado
+ retail: Área de varejo
+ industrial: Área industrial
+ commercial: Área de negócios
+ heathland: Urzal
lake:
- Lago
- - Represa ou Reservatório de Água
- farm: Fazenda
- brownfield: Área Livre Pós Demolição
- cemetery: Cemitério
- allotments: Terra Arrendada
- pitch: Campo para Prática de Esportes
- centre: Centro de Esportes/Ginásio
- reserve: Reserva Natural
- military: Área Militar
+ - lago artificial
+ farm: Lavoura
+ brownfield: Terreno abandonado
+ cemetery: Cemitério secular
+ allotments: Horta urbana
+ pitch: Quadra esportiva
+ centre: Centro/clube esportivo
+ reserve: Reserva ambiental
+ military: Área militar
school:
- Escola
- universidade
building: Edificação
- station: Estação de Trem/Metrô
+ station: Estação ferroviária
summit:
- - Monte
- - Pico
- tunnel: Túnel (Envoltória Tracejada)
- bridge: Ponte/Viaduto (Envoltória Sólida)
- private: Acesso Restrito (Propriedade Privada)
- permissive: Acesso por permissão
- destination: Acesso Local Apenas
- construction: Vias em Construção
+ - Cume
+ - cume
+ tunnel: Túnel (contorno tracejado)
+ bridge: Ponte/viaduto (contorno contínuo)
+ private: Acesso restrito
+ permissive: Acesso sob autorização
+ destination: Acesso local apenas
+ construction: Vias em construção
richtext_area:
edit: Editar
preview: Pré-visualizar
markdown_help:
- title_html: Analisado com <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
- headings: Títulos de seções
- heading: Título de seção
+ title_html: Interpretado com o <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
+ headings: Títulos
+ heading: Título
subheading: Subtítulo
unordered: Lista não ordenada
ordered: Lista ordenada
trace:
visibility:
private: Privado (compartilhado apenas como pontos anônimos e não ordenados)
- public: Pública (apresentado na lista como pontos anônimos e não ordenados)
- trackable: Acompanhável (compartilhada anonimamente como pontos ordenados com
+ public: Público (apresentado na lista como pontos anônimos e não ordenados)
+ trackable: Rastreável (compartilhada anonimamente como pontos ordenados com
informação de tempo)
- identifiable: Identificável (mostrado na lista como pontos identificáveis, ordenados
- e com informação de tempo)
+ identifiable: Identificável (exibidos na lista como pontos identificáveis, ordenados
+ e com informação de horário)
create:
upload_trace: Envie as trilhas de GPS
- trace_uploaded: Seu arquivo GPX foi enviado e está aguardando para ser inserido
- no banco de dados. Isso normalmente leva meia hora, e um e-mail será enviado
+ trace_uploaded: Seu arquivo GPX foi recebido e aguarda para ser inserido no
+ banco de dados. Isso normalmente leva meia hora, e um e-mail será enviado
para você quando ocorrer.
edit:
title: Editando trilha %{name}
download: baixar
uploaded_at: 'Enviado em:'
points: 'Pontos:'
- start_coord: 'Coordenada de início:'
+ start_coord: 'Coordenada inicial:'
map: mapa
edit: editar
owner: 'Dono:'
description: 'Descrição:'
tags: 'Etiquetas:'
tags_help: separados por vírgulas
- save_button: Salvar Mudanças
+ save_button: Salvar Alterações
visibility: 'Visibilidade:'
visibility_help: o que isso significa?
visibility_help_url: http://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces?uselang=pt-br
download: baixar
uploaded: 'Enviado em:'
points: 'Pontos:'
- start_coordinates: 'Coordenada de início:'
+ start_coordinates: 'Coordenada inicial:'
map: mapa
edit: editar
owner: 'Dono:'
public_traces_from: Trilhas de GPS públicas de %{user}
description: Consultar últimos carregamentos de trilhas de GPS
tagged_with: ' etiquetadas com %{tags}'
- empty_html: Nada aqui por enquanto. <a href='%{upload_link}'>Carregue uma nova
- trilha</a> ou aprenda mais sobre trilhas de GPS na <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Beginners_Guide_1.2?setlang=pt'>página
+ empty_html: Nada aqui ainda. <a href='%{upload_link}'>Carregue uma nova trilha</a>
+ ou aprenda mais sobre trilhas de GPS na <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Beginners_Guide_1.2?setlang=pt'>página
wiki</a> (em inglês).
delete:
scheduled_for_deletion: Trilha marcada para ser apagada
offline_warning:
message: O sistema de envio de arquivos GPX não está disponível no momento
offline:
- heading: O armazenamento de GPX está offline
+ heading: Armazenamento de GPX Desligado
message: O sistema de armazenamento e envio de arquivos GPX está atualmente
indisponível.
georss:
title: Trilhas de GPS do OpenStreetMap
description:
description_with_count:
- one: Ficheiro GPX com %{count} ponto de %{user}
- other: Ficheiro GPX com %{count} pontos de %{user}
+ one: Arquivo GPX com %{count} ponto de %{user}
+ other: Arquivo GPX com %{count} pontos de %{user}
description_without_count: Arquivo GPX de %{user}
application:
require_cookies:
- cookies_needed: Parece que você está com os <i>cookies</i> não habilitados -
- por favor habilite os <i>cookies</i> no seu browser antes de continuar.
+ cookies_needed: Parece que você está com os <i>cookies</i> desabilitados - habilite-os
+ no seu navegador antes de continuar.
require_moderator:
not_a_moderator: Você precisa ser um moderador para realizar essa ação.
setup_user_auth:
- blocked: Seu acesso à API foi bloqueado. Por favor, acesse a interface web para
- saber de mais detalhes.
- need_to_see_terms: O seu acesso à API está temporariamente suspenso. Por favor,
- faça o login na interface web para ler os Termos do Colaborador. Você não
- precisa concordar, mas você deve vê-los.
+ blocked: Seu acesso à API foi bloqueado. Acesse a interface web para mais detalhes.
+ need_to_see_terms: O seu acesso à API está temporariamente suspenso. Faça o
+ login na interface web para ler os Termos do Contribuidor. Você não precisa
+ concordar, mas você deve vê-los.
oauth:
oauthorize:
title: Autorizar acesso à sua conta
request_access: A aplicação %{app_name} está pedindo acesso à sua conta, %{user}.
- Por favor verifique se você deseja que a aplicação tenha as capacidades a
- seguir. Você pode escolher quaisquer que quiser.
+ Confira se deseja mesmo que a aplicação tenha as capacidades a seguir. Você
+ pode escolher as que quiser.
allow_to: 'Permitir a aplicação cliente:'
allow_read_prefs: ler suas preferências
allow_write_prefs: modificar suas preferências de usuário.
allow_write_notes: alterar notas.
oauthorize_success:
title: Pedido de autorização permitido
- allowed: Forneceu ao programa %{app_name} o acesso à sua conta.
+ allowed: Dar acesso à sua conta ao programa %{app_name}.
verification: O código de verificação é %{code}.
oauthorize_failure:
- title: O pedido de autorização falhou
- denied: Anulou o acesso do programa %{app_name} à sua conta.
+ title: Falha na autorização
+ denied: Negou acesso à sua conta ao programa %{app_name}.
invalid: O token de autorização não é válido.
revoke:
flash: Você cancelou o token para %{application}
title: Editar sua aplicação
submit: Editar
show:
- title: Detalhes OAuth de %{app_name}
+ title: Detalhes do OAuth de %{app_name}
key: Chave de Consumidor
secret: Segredo do Consumidor
url: URL do token de requisição
access_url: 'URL do token de acesso:'
authorize_url: 'URL de autorização:'
- support_notice: Nós adotamos assinaturas HMAC-SHA1 (recomendado) e RSA-SHA1.
+ support_notice: Adotamos assinaturas HMAC-SHA1 (recomendado) e RSA-SHA1.
edit: Editar detalhes
delete: Excluir Cliente
- confirm: Você tem certeza?
+ confirm: Tem certeza?
requests: 'Pedindo as seguintes permissões ao usuário:'
allow_read_prefs: ler suas preferências de usuário.
allow_write_prefs: modificar suas preferências de usuário.
allow_write_gpx: enviar trilhas de GPS.
allow_write_notes: alterar notas.
index:
- title: Meus detalhes OAuth
+ title: Meus detalhes do OAuth
my_tokens: Minhas aplicações autorizadas
list_tokens: 'Os seguintes tokens foram distribuidos para aplicações em seu
nome:'
application: Nome da Aplicação
- issued_at: Distribuido em
+ issued_at: Emitido em
revoke: Cancelar!
my_apps: Minhas Aplicações Cliente
no_apps: Você tem uma aplicação que gostaria de registrar para usar conosco
- usando o padrão %{oauth}? Você deve registrar sua aplicação web antes de ela
- poder fazer requisições OAuth para esse serviço.
+ com o padrão %{oauth}? Você deve registrar sua aplicação web antes que ela
+ possa fazer requisições OAuth para esse serviço.
registered_apps: 'Você tem as seguintes aplicações cliente registradas:'
register_new: Registre sua aplicação
form:
name: Nome
required: Obrigatório
- url: URL principal da aplicação
+ url: URL Principal da Aplicação
callback_url: URL de callback
support_url: URL de suporte
- requests: 'Pedir as seguintes permissões do usuário:'
- allow_read_prefs: ler as suas preferências de usuário.
- allow_write_prefs: modificar suas preferências de usuário.
+ requests: 'Solicitar as seguintes permissões ao usuário:'
+ allow_read_prefs: ler as preferências de usuário dele.
+ allow_write_prefs: modificar as preferências de usuário dele.
allow_write_diary: criar entradas de diário, comentários e adicionar amigos.
allow_write_api: modificar o mapa.
- allow_read_gpx: ler suas trilhas de GPS privadas.
+ allow_read_gpx: ler trilhas de GPS privadas dele.
allow_write_gpx: enviar trilhas de GPS
allow_write_notes: alterar notas.
not_found:
- sorry: Me desculpe, esse %{type} não pôde ser encontrado.
+ sorry: Esse %{type} não pôde ser encontrado.
create:
- flash: A informação foi resgistrada com sucesso
+ flash: Sucesso ao registrar a informação
update:
- flash: As informações do cliente foram atualizadas com sucesso
+ flash: Sucesso ao atualizar as informações do cliente
destroy:
flash: O registro da aplicação cliente foi apagado
user:
login:
title: Entrar
heading: Entrar
- email or username: 'Email ou Nome de Usuário:'
+ email or username: 'E-mail ou Nome de Usuário:'
password: 'Senha:'
openid: '%{logo} OpenID:'
remember: Lembrar neste computador
lost password link: Esqueceu sua senha?
login_button: Entrar
register now: Registre agora
- with username: 'Já tem uma conta no OpenStreetMap? Então por favor faça o login
- com seu nome de usuário e senha:'
- with openid: 'Alternativamente use seu OpenID para conectar:'
- new to osm: Primeira vez no OpenStreetMap?
+ with username: 'Já tem uma conta no OpenStreetMap? Então entre com seu nome
+ de usuário e senha:'
+ with external: 'Ou identifique-se através de terceiros:'
+ new to osm: Novo no OpenStreetMap?
to make changes: Para fazer alterações nos dados do OpenStreetMap, você precisa
criar uma conta.
- create account minute: Crie uma conta. Leva apenas um minuto.
+ create account minute: Crie uma conta. Leva só um minuto.
no account: Não possui uma conta?
- account not active: Desculpe, sua conta não está ativa ainda.<br />Por favor
- use o link do e-mail de confirmação para ativar sua conta ou <a href="%{reconfirm}">solicite
- uma nova confirmação por e-mail</a>.
+ account not active: Sua conta não está ativa ainda.<br />Use o link do e-mail
+ de confirmação para ativar sua conta ou <a href="%{reconfirm}">solicite uma
+ nova confirmação por e-mail</a>.
account is suspended: Desculpe, mas sua conta foi suspensa por causa de atividades
suspeitas.<br />Por favor contate o <a href="%{webmaster}">webmaster</a> se
você deseja discutir isto.
- auth failure: Desculpe, impossível entrar com estas informações.
- openid missing provider: Desculpe, não consegui contatar o seu provedor OpenID
- openid invalid: Desculpe, mas parece que seu OpenID está malformado.
- openid_logo_alt: Faça o login com um OpenID
- openid_providers:
+ auth failure: Impossível entrar com estas informações.
+ openid_logo_alt: Entrar com um OpenID
+ auth_providers:
openid:
- title: Login com OpenID
- alt: Login com uma URL do OpenID
+ title: Entrar com o OpenID
+ alt: Entrar com uma URL do OpenID
google:
- title: Login com Google
- alt: Login como uma OpenID do Google
+ title: Entrar com o Google
+ alt: Entrar com um OpenID da Google
+ facebook:
+ title: Entrar com o Facebook
+ alt: Entrar com uma Conta do Facebook
+ windowslive:
+ title: Entrar com o Windows Live
+ alt: Entrar com uma Conta do Windows Live
yahoo:
- title: Login com Yahoo
- alt: Login como uma OpenID do Yahoo
+ title: Entrar com o Yahoo
+ alt: Entrar com um OpenID da Yahoo
wordpress:
- title: Login com Wordpress
- alt: Login com um OpenID do Wordpress
+ title: Entrar com o Wordpress
+ alt: Entrar com um OpenID da Wordpress
aol:
- title: Login com AOL
- alt: Login com uma OpenID da AOL
+ title: Entrar com a AOL
+ alt: Entrar com um OpenID da AOL
logout:
title: Sair
heading: Sair do OpenStreetMap
lost_password:
title: Senha esquecida
heading: Esqueceu sua senha?
- email address: 'Endereço de Email:'
- new password button: Me envie uma nova senha
- help_text: Digite o endereço de email que você usou para conectar-se e enviaremos
- um link que você poderá usar para reconfigurar sua senha.
- notice email on way: Um email foi enviado para que você possa escolher outra
+ email address: 'Endereço de E-mail:'
+ new password button: Redefinir senha
+ help_text: Digite o endereço de e-mail que você usou para se conectar e enviaremos
+ um link que você poderá usar para redefinir a sua senha.
+ notice email on way: Um e-mail foi enviado para que você possa escolher outra
senha.
- notice email cannot find: Desculpe, não foi possível encontrar esse endereço
- de email.
+ notice email cannot find: Não foi possível encontrar esse endereço de e-mail.
reset_password:
- title: Redefinir Senha
- heading: Resetar senha de %{user}
+ title: Redefinir senha
+ heading: Redefinir Senha de %{user}
password: 'Senha:'
confirm password: 'Confirmar senha:'
- reset: Resetar senha
+ reset: Redefinir Senha
flash changed: Sua senha foi alterada.
flash token bad: O código não confere, verifique a URL.
new:
title: Registrar-se
- no_auto_account_create: Infelizmente não foi possível criar uma conta para você
- automaticamente.
- contact_webmaster: Por favor contate o <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
+ no_auto_account_create: Infelizmente no momento não podemos criar uma conta
+ para você automaticamente.
+ contact_webmaster: Contate o <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
(em inglês) para que uma conta seja criada - nós a criaremos o mais rápido
possível.
about:
html: |-
<p>Diferente de outros mapas, OpenStreetMap é completamente criado por pessoas como você,
e é livre para todos arrumarem, atualizarem, baixarem e usarem.</p>
- <p>Inscreva-se para começar a contribuir. Nós enviaremos um email para confirmar sua conta.</p>
+ <p>Inscreva-se para começar a contribuir. Enviaremos um e-mail para confirmar sua conta.</p>
license_agreement: Quando você confirmar sua conta, você precisará concordar
com os <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">Termos
- de Colaborador</a>.
- email address: 'Endereço de Email:'
- confirm email address: 'Confirme o Endereço de Email:'
+ do Contribuidor</a>.
+ email address: 'Endereço de E-mail:'
+ confirm email address: 'Confirme o Endereço de E-mail:'
not displayed publicly: Não será exibido publicamente (veja a <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
- title="política de privacidade no wiki incluindo seção sobre endereços de
+ title="política de privacidade no wiki incluindo a seção sobre endereços de
e-mail">política de privacidade</a>)
- display name: 'Nome para exibição:'
+ display name: 'Nome de Exibição:'
display name description: Seu nome de usuário disponível publicamente. Você
- pode mudá-lo posteriormente nas preferências.
- openid: '%{logo} OpenID:'
+ pode mudá-lo depois nas preferências.
+ external auth: 'Autenticação de Terceiros:'
password: 'Senha:'
- confirm password: 'Confirmar senha:'
- use openid: Alternativamente, use o %{logo} OpenID para fazer o login
- openid no password: Com o OpenID você não precisa de uma senha, mas algumas
- ferramentas extras talvez precisem de uma.
- openid association: |-
- <p>O seu OpenID ainda não está associado a uma conta do OpenStreetMap.</p>
- <ul>
- <li>Se você é novo no OpenStreetMap, por favor crie uma conta usando o formulário abaixo.</li>
- <li>
- Se você já tem uma conta, você pode fazer o login em sua conta
- usando seu nome de usuário e senha, e então associar este conta
- com seu OpenID nas configurações do usuário.
- </li>
- </ul>
+ confirm password: 'Confirmar Senha:'
+ use external auth: Ou identifique-se através de terceiros
+ auth no password: Com autenticação por terceiros não é necessária uma senha,
+ mas certas ferramentas ou o servidor talvez ainda precisem.
+ auth association: <p>Seu ID ainda não está associado a uma conta do OpenStreetMap.</p>
+ <ul> <li>Se você é novo no OpenStreetMap, crie uma conta usando o formulário
+ a seguir.</li> <li> Se você já tem uma conta, vocẽ pode entrar com ela usando
+ seu nome de usuário e senha, e então associar a conta ao seu ID nas suas configurações
+ de usuário. </li> </ul>
continue: Registrar-se
terms accepted: Obrigado por aceitar os novos termos de contribuição!
terms declined: Lamentamos que você tenha decidido não aceitar os novos Termos
- do Colaborador. Para obter mais informações, consulte <a href="%{url}">esta
- página do wiki</a> .
+ do Contribuidor. Para mais informações, consulte <a href="%{url}">esta página
+ do wiki</a> .
terms:
- title: Termos do Colaborador
- heading: Termos do Colaborador
+ title: Termos do contribuidor
+ heading: Termos do contribuidor
read and accept: Por favor leia o contrato e pressione o botão abaixo para confirmar
que você aceita os termos deste contrato para suas contribuições existentes
e futuras.
declined: http://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
decline: Discordo
you need to accept or decline: Por favor leia e, em seguida, aceite ou recuse
- os novos Termos do Colaborador para continuar.
- legale_select: 'Por favor, selecione o país onde você mora:'
+ os novos Termos do Contribuidor para continuar.
+ legale_select: 'País em que você mora:'
legale_names:
france: França
italy: Itália
no_such_user:
title: Usuário não existe
heading: O usuário %{user} não existe
- body: Desculpe, não há nenhum usuário com o nome %{user}. Por favor verifique
- se você digitou corretamente, ou talvez o link que você tenha clicado esteja
- errado.
+ body: Não há um usuário com o nome %{user}. Confira a digitação, ou talvez o
+ link em que você clicou esteja errado.
view:
- my diary: Meu diário
+ my diary: Meu Diário
new diary entry: nova entrada de diário
- my edits: Minhas edições
+ my edits: Minhas Edições
my traces: Minhas trilhas
- my notes: Minhas notas de mapa
- my messages: Minhas mensagens
- my profile: Meu perfil
- my settings: Minhas configurações
- my comments: Meus comentários
+ my notes: Minhas Notas de Mapa
+ my messages: Minhas Mensagens
+ my profile: Meu Perfil
+ my settings: Minhas Configurações
+ my comments: Meus Comentários
oauth settings: configurações do oauth
- blocks on me: Bloqueios sobre mim
- blocks by me: Bloqueios por mim
- send message: Enviar mensagem
+ blocks on me: Bloqueios sobre Mim
+ blocks by me: Bloqueios por Mim
+ send message: Enviar Mensagem
diary: Diário
edits: Edições
traces: Trilhas
- notes: Notas de mapa
- remove as friend: Desfazer amizade
- add as friend: Adicionar como amigo
+ notes: Notas de Mapa
+ remove as friend: Desfazer Amizade
+ add as friend: Adicionar como Amigo
mapper since: 'Mapeador desde:'
ago: (%{time_in_words_ago} atrás)
- ct status: 'Termos do colaborador:'
+ ct status: 'Termos do contribuidor:'
ct undecided: Não decidido
ct declined: Discordo
ct accepted: Aceito %{ago} atrás
latest edit: 'Última edição %{ago}:'
- email address: 'Endereço de email:'
+ email address: 'Endereço de e-mail:'
created from: 'Criado de:'
status: 'Estado:'
- spam score: 'Contagem de spam:'
+ spam score: 'Contagem de Spam:'
description: Descrição
user location: Local do usuário
- if set location: Defina o local de sua casa na página de %{settings_link} para
+ if set location: Defina seu local principal na página de %{settings_link} para
ver usuários próximos.
settings_link_text: configurações
your friends: Seus amigos
deactivate_user: desativar este usuário
confirm_user: confirmar este usuário
hide_user: esconder esse usuário
- unhide_user: mostrar esse usuário
+ unhide_user: exibir esse usuário
delete_user: excluir este usuário
confirm: Confirmar
- friends_changesets: Conjuntos de alterações dos amigos
- friends_diaries: Entradas de diário dos amigos
- nearby_changesets: Conjuntos de alterações de usuários próximos
- nearby_diaries: Entradas de diário dos usuários próximos
+ friends_changesets: conjuntos de alterações dos amigos
+ friends_diaries: entradas de diário dos amigos
+ nearby_changesets: conjuntos de alterações de usuários próximos
+ nearby_diaries: entradas de diário dos usuários próximos
popup:
your location: Sua localização
nearby mapper: Mapeador próximo
account:
title: Editar conta
my settings: Minhas configurações
- current email address: 'Endereço de e-mail atual:'
- new email address: 'Novo endereço de e-mail:'
- email never displayed publicly: (nunca mostrado publicamente)
+ current email address: 'Endereço de E-mail Atual:'
+ new email address: 'Novo Endereço de E-mail:'
+ email never displayed publicly: (nunca exibido publicamente)
+ external auth: 'Autenticação externa:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID?uselang=pt-br
link text: o que é isto?
public editing:
heading: 'Edição pública:'
- enabled: Ativado. Não é permitido edição anônima.
+ enabled: Ativado. Não é anônimo e pode editar dados.
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits?setlang=pt
enabled link text: o que é isso?
disabled: Desativado e não pode editar dados, todas as edições anteriores
text: Atualmente suas edições são anônimas e ninguém pode lhe enviar mensagens
ou saber sua localização. Para mostrar o que você editou e permitir que
pessoas entrem em contato através do website, clique no botão abaixo. <b>Desde
- as mudanças na API 0.6, apenas usuários públicos podem editar o mapa</b>.
+ as mudanças na API 0.6, somente usuários públicos podem editar o mapa</b>.
(<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">Veja por quê</a>).<ul><li>O
seu endereço de e-mail não será revelado para o público.</li><li>Esta ação
não pode ser desfeita e todos os novos usuários são agora públicos por padrão.</li></ul>
contributor terms:
- heading: 'Termos de Contribuição:'
- agreed: Você aceitou os novos Termos de Contribuição.
- not yet agreed: Você não aceitou os novos Termos de Contribuição.
+ heading: 'Termos do Contribuidor:'
+ agreed: Você aceitou os novos Termos do Contribuidor.
+ not yet agreed: Você não aceitou os novos Termos do Contribuidor.
review link text: Por favor siga este link quando você puder para revisar
e aceitar os novos Termos de Contribuição.
agreed_with_pd: Você também declara que considera suas edições em Domínio
link: http://www.osmfoundation.org/wiki/License/Contributor_Terms
link text: o que é isso?
profile description: 'Descrição do Perfil:'
- preferred languages: 'Preferência de Idioma:'
- preferred editor: 'Editor preferido:'
+ preferred languages: 'Idiomas Preferidos:'
+ preferred editor: 'Editor Preferido:'
image: 'Imagem:'
gravatar:
gravatar: Use o Gravatar
link text: O que é isto?
new image: Adicionar uma imagem
- keep image: Mantenha a imagem atual
- delete image: Remova a imagem atual
- replace image: Substitua a imagem atual
+ keep image: Manter a imagem atual
+ delete image: Remover a imagem atual
+ replace image: Trocar a imagem atual
image size hint: (imagens quadradas, com pelo menos 100x100, funcionam melhor)
- home location: 'Localização:'
- no home location: Você ainda não entrou a sua localização.
+ home location: 'Local Principal:'
+ no home location: Você ainda não definiu o seu local principal.
latitude: 'Latitude:'
longitude: 'Longitude:'
- update home location on click: Atualizar localização ao clicar no mapa?
- save changes button: Salvar Mudanças
- make edits public button: Tornar todas as minhas edições públicas
- return to profile: Retornar para o perfil
+ update home location on click: Atualizar local principal ao clicar no mapa?
+ save changes button: Salvar Alterações
+ make edits public button: Tornar públicas todas as minhas edições
+ return to profile: Retornar ao perfil
flash update success confirm needed: Informação de usuário atualizada com sucesso.
- Verifique sua caixa de entrada do email para confirmar seu novo endereço.
- flash update success: Informação de usuário atualizada com sucesso.
+ Confira o seu e-mail para confirmar seu novo endereço.
+ flash update success: Sucesso ao atualizar informação de usuário.
confirm:
- heading: Verificar o seu e-mail!
- introduction_1: Enviamos um e-mail de confirmação.
- introduction_2: Confirme a sua conta clicando no link no e-mail e você será
- capaz de iniciar o mapeamento.
+ heading: Confira o seu e-mail!
+ introduction_1: Enviamos um e-mail de confirmação para você.
+ introduction_2: Confirme a sua conta clicando no link no e-mail e você poderá
+ de iniciar o mapeamento.
press confirm button: Pressione o botão de confirmação abaixo para ativar sua
conta.
button: Confirmar
+ success: Conta ativada, obrigado!
already active: Esse conta já foi confirmada.
unknown token: Esse código de confirmação expirou ou não existe.
- reconfirm_html: Caso você precisar de nós para reenviar o e-mail de confirmação,
- <a href="%{reconfirm}">clique aqui</a>.
+ reconfirm_html: Caso precise que enviemos de novo o e-mail de confirmação, <a
+ href="%{reconfirm}">clique aqui</a>.
confirm_resend:
- success: Nós enviamos uma nova mensagem de confirmação para %{email} e assim
- que você confirmar o seu cadastro você poderá começar a editar os mapas.<br
- /><br />Se você usa um sistema antispam que exige uma mensagem de confirmação
- então certifique-se que o endereço webmaster@openstreetmap.org esteja na sua
- lista de e-mails confiáveis, já que não conseguimos responder a nenhum pedido
- de confirmação.
+ success: Enviamos uma nova mensagem de confirmação para %{email} e, assim que
+ você confirmar o seu cadastro, poderá começar a editar os mapas.<br /><br
+ />Se você usa um sistema antispam que exige uma mensagem de confirmação certifique-se
+ que o endereço webmaster@openstreetmap.org esteja na sua lista de e-mails
+ confiáveis, já que não conseguimos responder a nenhum pedido de confirmação.
failure: Usuário %{name} não encontrado.
confirm_email:
- heading: Confirmar uma mudança do endereço de email
+ heading: Confirmar uma mudança do endereço de e-mail
press confirm button: Pressione o botão de confirmação abaixo para confirmar
- seu novo endereço de email.
+ seu novo endereço de e-mail.
button: Confirmar
- success: Confirmamos seu endereço de email. Obrigado por se cadastrar!
- failure: Um endereço de email já foi confirmado com esse código.
+ success: Confirmamos a alteração do seu endereço de e-mail!
+ failure: Um endereço de e-mail já foi confirmado com esse código.
+ unknown_token: Este código de confirmação expirou ou não existe.
set_home:
- flash success: Localização salva com sucesso
+ flash success: Local principal salvo com sucesso
go_public:
- flash success: Todas as suas edições agora são públicas, e você está com permissão
- para edição.
+ flash success: Todas as suas edições agora são públicas, e você está com autorizado
+ a editar.
make_friend:
heading: Adicionar %{user} como amigo?
button: Adicionar como amigo
success: '%{name} agora é seu amigo!'
- failed: Desculpe, erro ao adicionar %{name} como seu amigo.
+ failed: Falha ao adicionar %{name} como seu amigo.
already_a_friend: Você já é amigo de %{name}.
remove_friend:
heading: Desfazer amizade com %{user}?
button: Desfazer amizade
- success: '%{name} foi removido de seus amigos.'
- not_a_friend: '%{name} não é um de seus amigos.'
+ success: '%{name} foi removido dos seus amigos.'
+ not_a_friend: '%{name} não é um dos seus amigos.'
filter:
not_an_administrator: Você precisa ser um administrador para executar essa ação.
list:
summary_no_ip: '%{name} criado em %{date}'
confirm: Confirmar Usuários Selecionados
hide: Ocultar Usuários Selecionados
- empty: Não há usuários coincidentes
+ empty: Não há usuários correspondentes
suspended:
title: Conta Suspensa
heading: Conta Suspensa
webmaster: webmaster
- body: "<p>\n Descuple, mas cua conta foi automaticamente suspensa devido a
- \n atividade suspeita.\n</p>\n<p>\n Esta decisão será revisada por um administrador
- em breve, ou\n então você pode entrar em contato com o %{webmaster} se desejar
- discutir esta decisão.\n</p>"
+ body: |-
+ <p>
+ Desculpe, mas sua conta foi automaticamente suspensa devido a atividade suspeita.
+ </p>
+ <p>
+ Um administrador logo revisará esta decisão. Você pode entrar em contato com %{webmaster} se desejar discutir esta decisão.
+ </p>
+ auth_failure:
+ connection_failed: Falha ao conectar ao provedor de autenticação
+ invalid_credentials: Credenciais de autenticação inválidas
+ no_authorization_code: Nenhum código de autorização
+ unknown_signature_algorithm: Algoritmo de assunatura desconhecido
+ invalid_scope: Escopo inválido
user_role:
filter:
not_an_administrator: Somente administradores podem gerenciar papéis de usuários,
mas você não é um administrador.
- not_a_role: A string "%{role}" não é um papel válido.
+ not_a_role: O texto "%{role}" não é um papel válido.
already_has_role: O usuário já tem o papel %{role}.
doesnt_have_role: O usuário não tem o papel %{role}.
grant:
title: Confirmar adição de papel
heading: Confirmar adição de papel
- are_you_sure: Você tem certeza que quer dar o papel "%{role}" para o usuário
- "%{name}"?
+ are_you_sure: Deseja mesmo dar o papel "%{role}" ao usuário "%{name}"?
confirm: Confirmar
- fail: Não foi possível adicionar o papel "%{role}" ao usuário "%{name}". Por
- favor cheque se o usuário e o papel são ambos válidos.
+ fail: Não foi possível dar o papel "%{role}" ao usuário "%{name}". Confira se
+ o usuário e o papel são ambos válidos.
revoke:
title: Confirmar remoção de papel
heading: Confirmar remoção de papel
- are_you_sure: Você tem certeza que deseja retirar o papel "%{role}" do usuário
- "%{name}"?
+ are_you_sure: Deseja mesmo retirar o papel "%{role}" do usuário "%{name}"?
confirm: Confirmar
- fail: Não foi possível retirar o papel "%{role}" do usuário "%{name}". Por favor
- cheque se o usuário e o papel são ambos válidos.
+ fail: Não foi possível retirar o papel "%{role}" do usuário "%{name}". Confira
+ se o usuário e o papel são ambos válidos.
user_block:
model:
non_moderator_update: É necessário ser um moderador para criar ou atualizar
um bloqueio.
non_moderator_revoke: É necessário ser um moderador para retirar um bloqueio.
not_found:
- sorry: Me desculpe, o bloqueio de usuário de ID %{id} não pôde ser encontrado.
+ sorry: O bloqueio de usuário de ID %{id} não foi encontrado.
back: Voltar para o índice
new:
title: Criando bloqueio em %{name}
heading: Criando bloqueio em %{name}
- reason: A razão pela qual %{name} está sendo bloqueado. Por favor seja o mais
- calmo e razoável o quanto possível, dando o máximo de detalhes que você puder
- sobre a situação, lembrando que a mensagem será visível publicamente. Mantenha
- em mente que nem todos usuários entendem os jargões da comunidade, então,
- por favor, use termos leigos.
- period: Quanto tempo, começando de agora, o usuário será bloqueado do uso da
- API.
+ reason: A razão para bloquear %{name}. Por favor seja o mais calmo e razoável
+ possível, dando o máximo de detalhes que você puder sobre a situação, lembrando
+ que a mensagem será visível publicamente. Tenha em mente que nem todos usuários
+ entendem os jargões da comunidade, então, por favor, use termos leigos.
+ period: Começando agora, por quanto tempo impedir o usuário de usar a API.
submit: Criar bloqueio
- tried_contacting: Eu contactei o usuário e o pedi para parar.
+ tried_contacting: Eu contatei o usuário e pedi para parar.
tried_waiting: Eu dei um tempo razoável para o usuário responder a esses comunicados.
needs_view: O usuário precisa se logar para esse bloqueio ser retirado
back: Ver todos bloqueios
heading: Editando bloqueio em %{name}
reason: A razão pela qual %{name} está sendo bloqueado. Por favor seja o mais
calmo e razoável possível, dando tantos detalhes quanto você puder sobre a
- situação. Mantenha em mente que nem todos usuários entendem o jargão da comunidade,
+ situação. Tenha em mente que nem todos usuários entendem o jargão da comunidade,
então tente usar termos gerais.
- period: Quanto tempo, começando de agora, o usuário será bloqueado do uso da
- API.
+ period: Começando agora, por quanto tempo impedir o usuário de usar a API.
submit: Atualizar bloqueio
show: Ver esse bloqueio
back: Ver todos bloqueios
antes de bloqueá-lo.
flash: Bloquear o usuário %{name}.
update:
- only_creator_can_edit: Apenas o moderador que criou esse bloqueio pode editá-lo.
+ only_creator_can_edit: Somente o moderador que criou esse bloqueio pode editá-lo.
success: Bloqueio atualizado.
index:
title: Bloqueios do usuário
heading: Lista de bloqueios do usuário.
- empty: Nenhum bloqueio foi feito ainda.
+ empty: Nenhum bloqueio foi aplicado ainda.
revoke:
title: Retirando bloqueio de %{block_on}
heading: Retirando bloqueio em %{block_on} por %{block_by}
time_future: Esse bloqueio terminará em %{time}.
past: Esse bloqueio terminou há %{time} e não pode ser retirado agora.
- confirm: Você tem certeza que deseja retirar esse bloqueio?
+ confirm: Desejamesmo retirar esse bloqueio?
revoke: Cancelar!
flash: Esse bloqueio foi retirado.
period:
show: Exibir
edit: Editar
revoke: Cancelar!
- confirm: Você tem certeza disso?
+ confirm: Tem certeza?
display_name: Usuário bloqueado
creator_name: Criador
reason: Razão para o bloqueio
- status: Status
+ status: Estado
revoker_name: Retirado por
not_revoked: (não retirado)
showing_page: Página %{page}
blocks_by:
title: Bloqueios por %{name}
heading: Lista de bloqueios por %{name}
- empty: '%{name} ainda não criou nenhum bloqueio.'
+ empty: '%{name} ainda não criou qualquer bloqueio.'
show:
title: '%{block_on} bloqueado por %{block_by}'
heading: '%{block_on} bloqueado por %{block_by}'
time_future: Termina em %{time}
time_past: Terminou há %{time}
- status: Status
+ status: Estado
show: Exibir
edit: Editar
revoke: Cancelar!
- confirm: Você tem certeza disso?
+ confirm: Tem certeza?
reason: 'Razão do bloqueio:'
back: Ver todos os bloqueios
revoker: 'Quem retirou:'
note:
description:
opened_at_html: Criado %{when} atrás
- opened_at_by_html: Criado há %{when} por %{user}
+ opened_at_by_html: Criado %{when} atrás por %{user}
commented_at_html: Atualizado %{when} atrás
- commented_at_by_html: Atualizado há %{when} por %{user}
- closed_at_html: Tratado há %{when}
+ commented_at_by_html: Atualizado %{when} atrás por %{user}
+ closed_at_html: Tratado %{when} atrás
closed_at_by_html: Resolvido %{when} atrás por %{user}
reopened_at_html: Reativado %{when} atrás
- reopened_at_by_html: Reativado há %{when} por %{user}
+ reopened_at_by_html: Reativado %{when} atrás por %{user}
rss:
title: Notas do OpenStreetMap
- description_area: Uma lista de notas reportadas, comentadas ou encerradas na
+ description_area: Uma lista de notas relatadas, comentadas ou encerradas na
sua área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
description_item: Um feed RSS para a nota %{id}
opened: nova nota (perto de %{place})
commented: novo comentário (perto de %{place})
- closed: nota encerrada (próxima a %{place})
+ closed: nota encerrada (perto de %{place})
reopened: reativando nota (perto de %{place})
entry:
comment: Comentar
description: Descrição
created_at: Criado em
last_changed: Última alteração
- ago_html: Há %{when}
+ ago_html: '%{when} atrás'
javascripts:
close: Fechar
share:
custom_dimensions: Definir dimensões personalizadas
format: 'Formato:'
scale: 'Escala:'
- image_size: Imagem irá mostrar camadas padrão em
- download: Download
- short_url: URL Curto
+ image_size: Imagem exibirá a camada padrão em
+ download: Baixar
+ short_url: URL curta
include_marker: Incluir marcador
center_marker: Centralizar o mapa no marcador
paste_html: Cole o HTML para publicar no site
view_larger_map: Ver Mapa Ampliado
key:
- title: Legenda do mapa
- tooltip: Legenda do mapa
- tooltip_disabled: Legenda do mapa disponível só para a camada padrão
+ title: Legenda
+ tooltip: Legenda
+ tooltip_disabled: Legenda disponível só para a camada padrão
map:
zoom:
- in: Aumentar o Zoom
- out: Diminuir o Zoom
+ in: Aproximar
+ out: Afastar
locate:
- title: Mostrar minha localização
- popup: Você está dentro de {distance} {unit} deste ponto
+ title: Exibir Minha Localização
+ popup: Você está a menos de {distance} {unit} deste ponto
base:
standard: Padrão
- cycle_map: Cycle Map
- transport_map: Mapa de transporte público
+ cycle_map: Ciclístico
+ transport_map: Transporte Público
mapquest: MapQuest Open
hot: Humanitário
layers:
donate_link_text: <a class='donate-attr' href='%{donate_url}'>Fazer uma doação</a>
site:
edit_tooltip: Edite o mapa
- edit_disabled_tooltip: Aumente o zoom para editar o mapa
- createnote_tooltip: Adicionar uma nota ao mapa
- createnote_disabled_tooltip: Ampliar para adicionar uma nota ao mapa
- map_notes_zoom_in_tooltip: Zoom para ver notas no mapa
- map_data_zoom_in_tooltip: Zoom para ver dados do mapa
+ edit_disabled_tooltip: Aproxime para editar o mapa
+ createnote_tooltip: Incluir uma nota no mapa
+ createnote_disabled_tooltip: Aproxime para incluir uma nota no mapa
+ map_notes_zoom_in_tooltip: Aproxime para ver notas no mapa
+ map_data_zoom_in_tooltip: Aproxime para ver dados do mapa
queryfeature_tooltip: Consultar elementos
queryfeature_disabled_tooltip: Aproxime para consultar elementos
changesets:
subscribe: Inscrever
unsubscribe: Cancelar inscrição
hide_comment: esconder
- unhide_comment: mostrar
+ unhide_comment: exibir
notes:
new:
- intro: Localizou um erro ou algo faltando? Informe outros mapeadores para
+ intro: Encontrou um erro ou algo faltando? Informe outros mapeadores para
que isso possa ser corrigido. Mova o marcador para a posição correta e digite
uma nota para explicar o problema. (Por favor, não insira informações ou
dados pessoais de mapas protegidos por direitos autorais ou listas do diretório.)
- add: Adicionar nota
+ add: Incluir nota
show:
anonymous_warning: Esta nota contém comentários de usuários anônimos que devem
- ser verificados separadamente.
+ ser conferidos separadamente.
hide: Esconder
resolve: Marcar como Resolvido
reactivate: Reativar
- comment_and_resolve: Comentar e resolver
+ comment_and_resolve: Comentar e Resolver
comment: Comentar
edit_help: Mover o mapa e ampliar uma localização que pretende editar e clique
aqui.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicleta (GraphHopper)
+ graphhopper_foot: Pedestre (GraphHopper)
+ mapquest_bicycle: Bicicleta (MapQuest)
+ mapquest_car: Carro (MapQuest)
+ mapquest_foot: Pedestre (MapQuest)
+ osrm_car: Carro (OSRM)
+ directions: Itinerário
+ distance: Distância
+ errors:
+ no_route: Rota entre esses dois lugares não encontrada.
+ no_place: Não foi possível encontrar esse lugar.
+ instructions:
+ unnamed: sem nome
+ courtesy: Itinerário cortesia de %{link}
+ time: Duração
query:
node: Ponto
way: Linha
redaction:
edit:
description: Descrição
- heading: Editar redação
+ heading: Editar anulação
submit: Salvar redação
- title: Editar redação
+ title: Editar anulação
index:
- empty: Nenhuma redação para mostrar.
- heading: Lista de redações
+ empty: Nenhuma anulação para mostrar.
+ heading: Lista de anulações
title: Lista de redações
new:
description: Descrição
- heading: Digite informações para a nova redação
+ heading: Digite informações para a nova anulação
submit: Criar redação
- title: Criando uma nova redação
+ title: Criando uma nova anulação
show:
description: 'Descrição:'
- heading: Mostrando a edição "%{title}"
- title: Mostrando edição
+ heading: Exibindo a anulação "%{title}"
+ title: Exibindo anulação
user: 'Criador:'
- edit: Reformar esta edição
- destroy: Remover esta edição
+ edit: Editar esta anulação
+ destroy: Remover esta redação
confirm: Tem certeza?
create:
- flash: Edição criada.
+ flash: Anulação criada.
update:
flash: Alterações salvas.
destroy:
- not_empty: A edição não está vazia. Por favor, elimine todas as versões pertencentes
- a esta edição antes de destruí-la.
- flash: Edição destruída.
- error: Houve um erro de destruir esta edição.
+ not_empty: A anulação não está vazia. Desanule todas as versões pertencentes
+ a esta anulação antes de destruí-la.
+ flash: Redação destruída.
+ error: Houve um erro ao destruir esta anulação.
...
--- /dev/null
+# Messages for Portuguese (português)
+# Exported from translatewiki.net
+# Export driver: phpyaml
+# Author: Crazymadlover
+# Author: FranciscoDS
+# Author: Giro720
+# Author: Gmare
+# Author: Hamilton Abreu
+# Author: Imperadeiro90
+# Author: Imperadeiro98
+# Author: Indech
+# Author: JasonZe
+# Author: Jgpacker
+# Author: Jgrocha
+# Author: Luckas
+# Author: Macofe
+# Author: Malafaya
+# Author: McDutchie
+# Author: Nemo bis
+# Author: Rsbarbosa
+# Author: Ruben
+# Author: Ruila
+# Author: SandroHc
+# Author: ViriatoLusitano
+# Author: Vitorvicentevalente
+# Author: Waldir
+---
+pt-PT:
+ time:
+ formats:
+ friendly: '%e %B %Y às %H:%M'
+ activerecord:
+ models:
+ acl: Aceder à Lista de Controlo
+ changeset: Conjunto de alterações
+ changeset_tag: Etiqueta do conjunto de alterações
+ country: País
+ diary_comment: Comentário no Diário
+ diary_entry: Entrada de diário
+ friend: Amigo
+ language: Idioma
+ message: Mensagem
+ node: Nó
+ node_tag: Etiqueta do Nó
+ notifier: Notificador
+ old_node: Nó antigo
+ old_node_tag: Etiqueta do Nó antigo
+ old_relation: Relação Antiga
+ old_relation_member: Membro da Relação Antiga
+ old_relation_tag: Etiqueta da Relação Antiga
+ old_way: Linha antiga
+ old_way_node: Nó de linha antiga
+ old_way_tag: Etiqueta da linha antiga
+ relation: Relação
+ relation_member: Membros da relação
+ relation_tag: Etiqueta da relação
+ session: Sessão
+ trace: Trilho
+ tracepoint: Ponto do Trilho
+ tracetag: Etiqueta do Trilho
+ user: Utilizador
+ user_preference: Preferências do utilizador
+ user_token: Token do Utilizador
+ way: Linha
+ way_node: Nó da linha
+ way_tag: Etiqueta da Linha
+ attributes:
+ diary_comment:
+ body: Conteúdo
+ diary_entry:
+ user: Utilizador
+ title: Assunto
+ latitude: Latitude
+ longitude: Longitude
+ language: Língua
+ friend:
+ user: Utilizador
+ friend: Amigo
+ trace:
+ user: Utilizador
+ visible: Visível
+ name: Nome
+ size: Tamanho
+ latitude: Latitude
+ longitude: Longitude
+ public: Público
+ description: Descrição
+ message:
+ sender: Remetente
+ title: Assunto
+ body: Conteúdo
+ recipient: Destinatário
+ user:
+ email: E-mail
+ active: Ativo
+ display_name: Nome visualizado
+ description: Descrição
+ languages: Línguas
+ pass_crypt: Palavra-passe
+ editor:
+ default: Padrão (atualmente %{name})
+ potlatch:
+ name: Potlatch 1
+ description: Potlatch 1
+ id:
+ name: iD
+ description: iD (editor no navegador)
+ potlatch2:
+ name: Potlatch 2
+ description: Potlatch 2 (editor no navegador)
+ remote:
+ name: Controlo Remoto
+ description: Controlo Remoto (JOSM ou Merkaartor)
+ browse:
+ created: Criado
+ closed: Fechado
+ created_html: Criado há <abbr title='%{title}'>%{time} atrás</abbr>
+ closed_html: Fechado há <abbr title='%{title}'>%{time} atrás</abbr>
+ created_by_html: Criado há <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
+ deleted_by_html: Eliminado há <abbr title='%{title}'>%{time} atrás</abbr> por
+ %{user}
+ edited_by_html: Editado há <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
+ closed_by_html: Fechado há <abbr title='%{title}'>%{time} atrás</abbr> por %{user}
+ version: Versão
+ in_changeset: Conjunto de alterações
+ anonymous: anónimo
+ no_comment: (sem comentário)
+ part_of: Faz parte de
+ download_xml: Descarregar XML
+ view_history: Ver Histórico
+ view_details: Ver Detalhes
+ location: 'Localização:'
+ changeset:
+ title: 'Conjunto de alterações: %{id}'
+ belongs_to: Autor
+ node: Nós (%{count})
+ node_paginated: Nós (%{x}-%{y} of %{count})
+ way: Linhas (%{count})
+ way_paginated: Linhas (%{x}-%{y} de %{count})
+ relation: Relações (%{count})
+ relation_paginated: Relações (%{x}-%{y} of %{count})
+ comment: Comentários (%{count})
+ hidden_commented_by: Comentário oculto de %{user} hà <abbr title='%{exact_time}'>%{when}
+ atrás</abbr>
+ commented_by: Comentário de %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ changesetxml: Conjunto de alterações XML
+ osmchangexml: XML no formato osmChange
+ feed:
+ title: Conjunto de alterações %{id}
+ title_comment: Conjunto de alterações %{id} - %{comment}
+ join_discussion: Inicie sessão para se juntar à discussão
+ discussion: Discussão
+ node:
+ title: 'Nó: %{name}'
+ history_title: 'Histórico do Nó: %{name}'
+ way:
+ title: 'Linha: %{name}'
+ history_title: 'Histórico da Linha: %{name}'
+ nodes: Nós
+ also_part_of:
+ one: parte da linha %{related_ways}
+ other: parte das linhas %{related_ways}
+ relation:
+ title: 'Relação: %{name}'
+ history_title: 'Histórico da Relação: %{name}'
+ members: Membros
+ relation_member:
+ entry_role: '%{type} %{name} como %{role}'
+ type:
+ node: Nó
+ way: Linha
+ relation: Relação
+ containing_relation:
+ entry: Relação %{relation_name}
+ entry_role: Relação %{relation_name} (como %{relation_role})
+ not_found:
+ sorry: 'Lamentamos, não foi possível encontrar %{type} #%{id}.'
+ type:
+ node: nó
+ way: linha
+ relation: relação
+ changeset: conjunto de alterações
+ timeout:
+ sorry: 'Lamentamos, demorou demasiado tempo a obter os dados do pedido: %{type}
+ com o id %{id}.'
+ type:
+ node: nó
+ way: linha
+ relation: relação
+ changeset: alterações
+ redacted:
+ redaction: Revisão %{id}
+ message_html: A versão %{version} do elemento %{type} não pode ser mostrada
+ porque foi suprimida. Por favor consulte %{redaction_link} para obter mais
+ informações.
+ type:
+ node: nó
+ way: linha
+ relation: relação
+ start_rjs:
+ feature_warning: A carregar %{num_features} elementos, o que pode tornar o carregamento
+ bastante lento ou bloquear. Mesmo assim quer ver estes elementos todos?
+ load_data: Carregar Dados
+ loading: A carregar…
+ tag_details:
+ tags: Etiquetas
+ wiki_link:
+ key: A página wiki com a descrição da etiqueta %{key}
+ tag: A página wiki com a descrição da etiqueta %{key}=%{value}
+ wikidata_link: O item %{page} como Wikidata
+ wikipedia_link: A página %{page} na Wikipédia
+ telephone_link: Telefonar %{phone_number}
+ note:
+ title: 'Erro: %{id}'
+ new_note: Reportar Erro
+ description: Descrição
+ open_title: 'Erro não resolvido #%{note_name}'
+ closed_title: 'Erro resolvido #%{note_name}'
+ hidden_title: 'Erro ocultado #%{note_name}'
+ open_by: Reportado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ open_by_anonymous: Reportado por um anónimo há <abbr title='%{exact_time}'>%{when}
+ atrás</abbr>
+ commented_by: Comentário de %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ commented_by_anonymous: Comentário de um anónimo há <abbr title='%{exact_time}'>%{when}
+ atrás</abbr>
+ closed_by: Resolvido por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ closed_by_anonymous: Resolvido por um anónimo há <abbr title='%{exact_time}'>%{when}
+ atrás</abbr>
+ reopened_by: Reaberto por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ reopened_by_anonymous: Reaberto por um anónimo há <abbr title='%{exact_time}'>%{when}
+ atrás</abbr>
+ hidden_by: Ocultado por %{user} há <abbr title='%{exact_time}'>%{when} atrás</abbr>
+ query:
+ title: Consultar elementos em redor
+ introduction: Clique no mapa para descobrir elementos em redor.
+ nearby: Nas proximidades
+ enclosing: Pertence a
+ changeset:
+ changeset_paging_nav:
+ showing_page: Página %{page}
+ next: Seguinte »
+ previous: « Anterior
+ changeset:
+ anonymous: Anónimo
+ no_edits: (nenhuma edição)
+ view_changeset_details: Ver detalhes do conjunto de alterações
+ changesets:
+ id: ID
+ saved_at: Gravado em
+ user: Utilizador
+ comment: Comentário
+ area: Área
+ list:
+ title: Conjuntos de alterações
+ title_user: Conjuntos de alterações de %{user}
+ title_friend: Conjuntos de alterações feitos pelos seus amigos
+ title_nearby: Conjuntos de alterações feitos por utilizadores das redondezas
+ empty: Não foi encontrado nenhum conjunto de alterações.
+ empty_area: Nenhum conjunto de alterações nesta área.
+ empty_user: Nenhum conjunto de alterações deste utilizador.
+ no_more: Sem mais conjuntos de alterações para ver.
+ no_more_area: Sem mais conjunto de alterações nesta área.
+ no_more_user: Sem mais conjunto de alterações deste utilizador.
+ load_more: Ver mais
+ timeout:
+ sorry: Pedimos desculpa, mas a lista de conjuntos de alterações que pediu excedeu
+ o tempo limite de resposta.
+ rss:
+ title_all: Discussão da edição no OpenStreetMap
+ title_particular: 'Discussão sobre a edição #%{changeset_id}'
+ comment: 'Novo comentário sobre a edição #%{changeset_id} por %{author}'
+ commented_at_html: Atualizado há %{when}
+ commented_at_by_html: Atualizado há %{when} por %{user}
+ full: Discussão completa
+ diary_entry:
+ new:
+ title: Nova entrada no diário
+ list:
+ title: Diários dos utilizadores
+ title_friends: Diários dos amigos
+ title_nearby: Diários dos utilizadores próximos
+ user_title: Diário de %{user}
+ in_language_title: Entradas no Diário em %{language}
+ new: Nova Entrada no Diário
+ new_title: Adicionar entrada ao diário
+ no_entries: Diário sem entradas
+ recent_entries: Entradas recentes no diário
+ older_entries: Entradas Mais Antigas
+ newer_entries: Entradas Recentes
+ edit:
+ title: Editar entrada do diário
+ subject: 'Assunto:'
+ body: 'Texto:'
+ language: 'Língua:'
+ location: 'Localização:'
+ latitude: 'Latitude:'
+ longitude: 'Longitude:'
+ use_map_link: usar mapa
+ save_button: Gravar
+ marker_text: Localização da entrada do diário
+ view:
+ title: Diário de %{user} | %{title}
+ user_title: Diário de %{user}
+ leave_a_comment: Deixar um comentário
+ login_to_leave_a_comment: '%{login_link} para deixar um comentário'
+ login: Iniciar sessão
+ save_button: Gravar
+ no_such_entry:
+ title: Esta entrada de diário não existe
+ heading: Não existe a entrada com o identificador (ID) %{id}
+ body: Não foi encontrada nenhuma entrada de diário ou comentário com o identificador
+ (ID) %{id}. Por favor, verifique que escreveu corretamente o endereço; caso
+ contrário a ligação que seguiu está errada ou deixou de existir.
+ diary_entry:
+ posted_by: Colocado por %{link_user} a %{created} em %{language_link}
+ comment_link: Comentar esta entrada
+ reply_link: Responder a esta entrada
+ comment_count:
+ one: '%{count} comentário'
+ zero: Sem comentários
+ other: '%{count} comentários'
+ edit_link: Editar esta entrada
+ hide_link: Ocultar esta entrada
+ confirm: Confirmar
+ diary_comment:
+ comment_from: Comentário de %{link_user} em %{comment_created_at}
+ hide_link: Ocultar este comentário
+ confirm: Confirmar
+ location:
+ location: 'Localização:'
+ view: Ver
+ edit: Editar
+ feed:
+ user:
+ title: Entradas no diário de editores OpenStreetMap de %{user}
+ description: Entradas recentes no diário de editores OpenStreetMap de %{user}
+ language:
+ title: Entradas no diário de editores OpenStreetMap em %{language_name}
+ description: Entradas recentes no diário de editores OpenStreetMap em %{language_name}
+ all:
+ title: Entradas no diário de editores do OpenStreetMap
+ description: Entradas recentes no diário de editores do OpenStreetMap
+ comments:
+ has_commented_on: '%{display_name} comentou nas seguintes entradas de diários'
+ post: Entrada
+ when: Quando
+ comment: Comentário
+ ago: '%{ago} atrás'
+ newer_comments: Comentários mais recentes
+ older_comments: Comentários mais antigos
+ export:
+ title: Exportar
+ start:
+ area_to_export: Área a exportar
+ manually_select: Selecionar manualmente uma área diferente
+ format_to_export: Formato da exportação
+ osm_xml_data: XML OpenStreetMap (.osm) apenas mapa padrão
+ map_image: Imagem (.jpg .pdf .svg .png .ps) apenas mapa padrão
+ embeddable_html: HTML (mostra mapa interativo noutros sites) todos os mapas
+ licence: Licença
+ export_details: Os dados do OpenStreetMap encontram-se sob a <a href="http://opendatacommons.org/licenses/odbl/1.0/">licença
+ Open Data Commons Open Database License</a> (ODbL).
+ too_large:
+ advice: 'Se a exportação acima falhar, por favor, considere o uso de uma das
+ fontes listadas abaixo:'
+ body: Esta área é demasiado grande para exportar em XML do OpenStreetMap.
+ Por favor aproxime a vista ou selecione uma área mais pequena. Para exportar
+ esta área grande utilize uma das seguintes fontes.
+ planet:
+ title: Planeta OSM
+ description: Cópias atualizadas regularmente da base de dados completa do
+ OpenStreetMap
+ overpass:
+ title: Overpass API
+ description: Fazer o download desta caixa delimitadora através de um espelho
+ do banco de dados do OpenStreetMap
+ geofabrik:
+ title: Downloads do Geofabrik
+ description: Extratos atualizados regularmente de continentes, países e
+ cidades selecionadas
+ metro:
+ title: Extratos do Metro
+ description: Extratos das principais cidades do mundo e seus arredores
+ other:
+ title: Outras Fontes
+ description: Fontes adicionais listadas no wiki do OpenStreetMap
+ options: Opções
+ format: Formato
+ scale: Escala
+ max: máx
+ image_size: Tamanho da Imagem
+ zoom: Zoom
+ add_marker: Adicionar um ponto de interesse no mapa
+ latitude: 'Lat:'
+ longitude: 'Lon:'
+ output: Código HTML
+ paste_html: Copie e cole o código num site para mostrar o mapa interativo nesse
+ site
+ export_button: Exportar
+ geocoder:
+ search:
+ title:
+ latlon: Resultados <a href="http://openstreetmap.org/">Internos</a>
+ us_postcode: Resultados de <a href="http://geocoder.us/">Geocoder.us</a>
+ uk_postcode: Resultados de <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
+ Postcode</a>
+ ca_postcode: Resultados de <a href="http://geocoder.ca/">Geocoder.CA</a>
+ osm_nominatim: Resultados de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Resultados de <a href="http://www.geonames.org/">GeoNames</a>
+ osm_nominatim_reverse: Resultados de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames_reverse: Resultados de <a href="http://www.geonames.org/">GeoNames</a>
+ search_osm_nominatim:
+ prefix:
+ aerialway:
+ cable_car: Teleférico
+ chair_lift: Teleférico
+ drag_lift: Elevador de esqui
+ gondola: Gôndola
+ station: Estação de elevador de esqui
+ aeroway:
+ aerodrome: Aeródromo
+ apron: Plataforma de estacionamento
+ gate: Portão
+ helipad: Heliponto
+ runway: Pista de Aterragem e Descolagem
+ taxiway: Pista de taxiamento
+ terminal: Terminal
+ amenity:
+ animal_shelter: Abrigo de Animais
+ arts_centre: Centro Artístico
+ atm: Multibanco
+ bank: Banco
+ bar: Bar
+ bbq: Churrasqueira
+ bench: Banco de sentar
+ bicycle_parking: Estacionamento de bicicletas
+ bicycle_rental: Aluguer de bicicletas
+ biergarten: Biergarten (jardim da cerveja)
+ boat_rental: Aluguer de Barcos
+ brothel: Bordel
+ bureau_de_change: Casa de câmbio
+ bus_station: Estação de autocarros
+ cafe: Café
+ car_rental: Aluguer de automóveis
+ car_sharing: Car Sharing (partilha de carros)
+ car_wash: Lavagem de Automóveis
+ casino: Casino
+ charging_station: Estação de carregamento para veículos elétricos
+ childcare: Guarda de Crianças
+ cinema: Cinema
+ clinic: Clínica
+ clock: Relógio
+ college: Colégio
+ community_centre: Centro Comunitário
+ courthouse: Tribunal
+ crematorium: Crematório
+ dentist: Dentista
+ doctors: Médicos
+ dormitory: Dormitório
+ drinking_water: Água Potável
+ driving_school: Escola de Condução
+ embassy: Embaixada
+ emergency_phone: Telefone de Emergência
+ fast_food: Fast-food
+ ferry_terminal: Terminal de ferry
+ fire_hydrant: Boca de Incêndio
+ fire_station: Quartel de Bombeiros
+ food_court: Praça de Alimentação
+ fountain: Fonte
+ fuel: Combustível
+ gambling: Jogos de Fortuna e Azar
+ grave_yard: Cemitério
+ gym: Centro de Fitness / Ginásio
+ health_centre: Centro de Saúde
+ hospital: Hospital
+ hunting_stand: Cabana de Caça
+ ice_cream: Geladaria
+ kindergarten: Jardim de infância
+ library: Biblioteca
+ market: Mercado
+ marketplace: Feira
+ monastery: Mosteiro
+ motorcycle_parking: Parque de Estacionamento de Motas
+ nightclub: Clube Nocturno
+ nursery: Creche
+ nursing_home: Lar de Idosos
+ office: Escritório
+ parking: Estacionamento
+ parking_entrance: Entrada de Parque de Estacionamento
+ pharmacy: Farmácia
+ place_of_worship: Lugar de Oração
+ police: Polícia
+ post_box: Marco de Correio
+ post_office: Correios
+ preschool: Pré-Escola
+ prison: Prisão
+ pub: Pub
+ public_building: Edifício Público
+ reception_area: Área de Receção
+ recycling: Ecoponto
+ restaurant: Restaurante
+ retirement_home: Casa de Retiro
+ sauna: Sauna
+ school: Escola
+ shelter: Abrigo
+ shop: Loja
+ shower: Chuveiro
+ social_centre: Centro Social
+ social_club: Clube Social
+ social_facility: Serviços Sociais
+ studio: Estúdio
+ swimming_pool: Piscina
+ taxi: Táxi
+ telephone: Telefone Público
+ theatre: Teatro
+ toilets: Casas de Banho
+ townhall: Câmara Municipal / Junta de Freguesia
+ university: Universidade
+ vending_machine: Máquina de venda automática
+ veterinary: Clínica Veterinária
+ village_hall: Junta de Freguesia
+ waste_basket: Caixote do Lixo
+ waste_disposal: Contentor de Lixo
+ youth_centre: Casa da Juventude
+ boundary:
+ administrative: Divisão Administrativa
+ census: Fronteira de Censos
+ national_park: Parque Nacional
+ protected_area: Área Protegida
+ bridge:
+ aqueduct: Aqueduto
+ suspension: Ponte Suspensa
+ swing: Ponte Giratória
+ viaduct: Viaduto
+ "yes": Ponte
+ building:
+ "yes": Edifício
+ craft:
+ brewery: Cervejaria
+ carpenter: Carpinteiro
+ electrician: Eletricista
+ gardener: Jardineiro
+ painter: Pintor
+ photographer: Fotógrafo
+ plumber: Catalisador
+ shoemaker: Sapateiro
+ tailor: Alfaiate
+ "yes": Loja de Artesanato
+ emergency:
+ ambulance_station: Central de Ambulâncias
+ defibrillator: Desfibrilador
+ landing_site: Lugar para Aterragem de Emergência
+ phone: Telefone de Emergência
+ highway:
+ abandoned: Estrada Abandonada
+ bridleway: Pista de Cavalos
+ bus_guideway: Faixa para Autocarros Guiados
+ bus_stop: Paragem de Autocarro
+ construction: Estrada em Construção
+ cycleway: Ciclovia
+ elevator: Elevador
+ emergency_access_point: Ponto de Ccesso de Emergência
+ footway: Caminho Pedonal
+ ford: Vau
+ living_street: Zona de Coexistência
+ milestone: Marco Quilométrico
+ motorway: Autoestrada
+ motorway_junction: Interseção e Saída de Autoestradas
+ motorway_link: Nó de ligação a uma Autoestrada
+ path: Trilho
+ pedestrian: Passeio
+ platform: Plataforma
+ primary: Estrada Primária
+ primary_link: Nó de ligação a uma Estrada Primária
+ proposed: Estrada sob Planeamento
+ raceway: Autódromo
+ residential: Rua Residencial
+ rest_area: Área de Descanso
+ road: Estrada
+ secondary: Estrada Secundária
+ secondary_link: Nó de ligação a uma Estrada Secundária
+ service: Estrada de Serviço
+ services: Serviços de Autoestrada
+ speed_camera: Radar de Velocidade
+ steps: Escadas
+ street_lamp: Poste de Iluminação
+ tertiary: Estrada Terciária
+ tertiary_link: Nó de ligação a uma Estrada Terciária
+ track: Estrada Florestal ou Agrícola
+ traffic_signals: Semáforo
+ trail: Trilho
+ trunk: Via Rápida
+ trunk_link: Nó de ligação a uma Via Rápida
+ unclassified: Estrada sem classificação oficial
+ unsurfaced: Estrada não pavimentada
+ "yes": Estrada
+ historic:
+ archaeological_site: Sítio Arqueológico
+ battlefield: Campo de Batalha
+ boundary_stone: Marco de Fronteira
+ building: Edifício Histórico
+ bunker: Bunker
+ castle: Castelo
+ church: Igreja
+ city_gate: Portas da Cidade
+ citywalls: Muralhas de Cidade
+ fort: Forte
+ heritage: Património da Humanidade
+ house: Casa Histórica
+ icon: Ícone
+ manor: Solar
+ memorial: Memorial
+ mine: Mina histórica
+ monument: Monumento
+ roman_road: Estrada Romana
+ ruins: Ruínas
+ stone: Pedra
+ tomb: Tumba
+ tower: Torre
+ wayside_cross: Cruzeiro
+ wayside_shrine: Alminhas / Nicho / Capelinha
+ wreck: Destroços
+ junction:
+ "yes": Cruzamento
+ landuse:
+ allotments: Hortas urbanas
+ basin: Bacia Hidrográfica
+ brownfield: Campo industrial contaminado
+ cemetery: Cemitério
+ commercial: Zona de Escritórios
+ conservation: Conservação
+ construction: Construção
+ farm: Quinta
+ farmland: Quinta
+ farmyard: Edifícios Agrícolas
+ forest: Floresta
+ garages: Garagens
+ grass: Relva
+ greenfield: Espaço Verde
+ industrial: Zona Industrial
+ landfill: Aterro Sanitário
+ meadow: Prado
+ military: Zona Militar
+ mine: Mina
+ orchard: Pomar
+ quarry: Pedreira
+ railway: Área da Ferrovia
+ recreation_ground: Área Recreativa
+ reservoir: Reservatório
+ reservoir_watershed: Bacia Hidrográfica do Reservatório
+ residential: Zona Residencial
+ retail: Zona de Retalhos
+ road: Área da Estrada
+ village_green: Espaço Verde Urbano
+ vineyard: Vinha
+ "yes": Uso do Solo
+ leisure:
+ beach_resort: Resort de Praia
+ bird_hide: Observatório de Áves
+ club: Clube
+ common: Baldio
+ dog_park: Parque para Cães
+ fishing: Zona de Pesca
+ fitness_centre: Ginásio (fitness)
+ fitness_station: Ginásio
+ garden: Jardim
+ golf_course: Campo de Golfe
+ horse_riding: Corridas de Cavalos
+ ice_rink: Pista de Gelo
+ marina: Marina
+ miniature_golf: Mini-Golfe
+ nature_reserve: Reserva Natural
+ park: Parque
+ pitch: Campo de Desporto
+ playground: Parque infantil
+ recreation_ground: Área recreativa
+ resort: Estação Turística (resorte)
+ sauna: Sauna
+ slipway: Rampa para Barcos
+ sports_centre: Centro Desportivo
+ stadium: Estádio
+ swimming_pool: Piscina
+ track: Pista de Corrida
+ water_park: Parque Aquático
+ "yes": Lazer
+ man_made:
+ lighthouse: Farol
+ pipeline: Pipeline
+ tower: Torre
+ works: Fábrica
+ "yes": Construção
+ military:
+ airfield: Aeródromo Militar
+ barracks: Quartel
+ bunker: Bunker
+ mountain_pass:
+ "yes": Passe de Montanha
+ natural:
+ bay: Baía
+ beach: Praia
+ cape: Cabo
+ cave_entrance: Entrada de Gruta
+ cliff: Precipício
+ crater: Cratera
+ dune: Dunas
+ fell: Encosta
+ fjord: Fiorde
+ forest: Floresta
+ geyser: Geiser
+ glacier: Glaciar
+ grassland: Pradaria
+ heath: Charneca
+ hill: Colinas
+ island: Ilha
+ land: Terra
+ marsh: Pântano
+ moor: Carriço
+ mud: Lama
+ peak: Pico
+ point: Ponto
+ reef: Recife
+ ridge: Cordilheira
+ rock: Rocha
+ saddle: Ponto de Sela
+ sand: Areia
+ scree: Encosta de Rochas Soltas
+ scrub: Matagal
+ spring: Nascente
+ stone: Pedra
+ strait: Estreito
+ tree: Árvore
+ valley: Vale
+ volcano: Vulcão
+ water: Água
+ wetland: Zona Húmida
+ wood: Bosque
+ office:
+ accountant: Contabilista
+ administrative: Administração
+ architect: Arquiteto
+ company: Empresa
+ employment_agency: Agência de Emprego
+ estate_agent: Imobiliária
+ government: Edifício Governamental
+ insurance: Agência de Seguros
+ lawyer: Advogado
+ ngo: Escritório de ONG
+ telecommunication: Escritório de Telecomunicações
+ travel_agent: Agência de Viagens
+ "yes": Escritório
+ place:
+ allotments: Horta Urbana / Comunitária
+ block: Bloco
+ airport: Aeroporto
+ city: Cidade
+ country: País
+ county: Condado
+ farm: Quinta
+ hamlet: Aldeia
+ house: Casa
+ houses: Casas
+ island: Ilha
+ islet: Ilheu
+ isolated_dwelling: Casa Isolada
+ locality: Localidade desabitada
+ moor: Carriço
+ municipality: Município
+ neighbourhood: Lugar
+ postcode: Código Postal
+ region: Região
+ sea: Mar
+ state: Estado
+ subdivision: Subdivisão
+ suburb: Subúrbio
+ town: Cidade
+ unincorporated_area: Área não incorporada
+ village: Vila
+ "yes": Local
+ railway:
+ abandoned: Ferrovia Abandonada
+ construction: Ferrovia sob Construção
+ disused: Ferrovia Não Usada
+ disused_station: Estação Ferroviária Não Usada
+ funicular: Funicular
+ halt: Apeadeiro
+ historic_station: Estação Ferroviária Histórica
+ junction: Entroncamento Ferroviário
+ level_crossing: Passagem de Nível
+ light_rail: Veículo leve sobre trilhos
+ miniature: Ferrovia para Comboios em Miniatura
+ monorail: Monocarril
+ narrow_gauge: Ferrovia de Bitola Estreita
+ platform: Plataforma Ferroviária
+ preserved: Ferrovia Preservada
+ proposed: Ferrovia sob Planeamento
+ spur: Linha Ferroviária Auxiliar
+ station: Estação Ferroviária
+ stop: Paragem Ferroviária
+ subway: Metropolitano
+ subway_entrance: Entrada para Estação de Metropolitano
+ switch: Agulha Ferroviária
+ tram: Linha de Elétrico
+ tram_stop: Paragem de Elétrico
+ shop:
+ alcohol: Venda de Bebidas (Off License)
+ antiques: Antiguidades
+ art: Loja de Arte
+ bakery: Padaria
+ beauty: Loja de Produtos de Beleza
+ beverages: Loja de Bebidas
+ bicycle: Loja de Bicicletas
+ books: Livraria
+ boutique: Boutique
+ butcher: Talho
+ car: Stand Automóvel
+ car_parts: Loja de Peças para Automóvel
+ car_repair: Oficina de Automóveis
+ carpet: Loja de Tapetes e Alcatifas
+ charity: Loja de Caridade
+ chemist: Drogaria
+ clothes: Loja de Roupas
+ computer: Loja de componentes informáticos
+ confectionery: Confeitaria
+ convenience: Loja de Conveniência
+ copyshop: Centro de Cópias
+ cosmetics: Loja de cosméticos
+ deli: Charcutaria
+ department_store: Loja de Departamento / Grande Armazém
+ discount: Loja de Descontos
+ doityourself: Bricolage
+ dry_cleaning: Limpeza a Seco
+ electronics: Loja de Electrónica
+ estate_agent: Imobiliária
+ farm: Loja de produtos agrícolas
+ fashion: Loja de Moda
+ fish: Peixaria
+ florist: Florista
+ food: Loja de alimentos
+ funeral_directors: Funerária
+ furniture: Mobiliário
+ gallery: Galeria
+ garden_centre: Loja de Jardinagem
+ general: Loja de artigos gerais
+ gift: Loja de Lembranças
+ greengrocer: Loja de Frutas e Verduras
+ grocery: Mercearia
+ hairdresser: Cabeleireiro(a)
+ hardware: Loja de Ferragens
+ hifi: Hi-Fi
+ insurance: Seguros
+ jewelry: Joalharia
+ kiosk: Quiosque
+ laundry: Lavandaria
+ mall: Centro Comercial
+ market: Mercado
+ mobile_phone: Loja de Telemóveis
+ motorcycle: Loja de Motas
+ music: Loja de instrumentos musicais
+ newsagent: Loja de Jornais
+ optician: Oftalmologista
+ organic: Loja de alimentos orgânicos
+ outdoor: Loja de artigos para atividades ao ar livre
+ pet: Loja de animais
+ pharmacy: Farmácia
+ photo: Loja de Fotografia
+ salon: Salão de beleza
+ second_hand: Loja de segunda mão
+ shoes: Sapataria
+ shopping_centre: Centro Comercial
+ sports: Loja de Artigos Desportivos
+ stationery: Papelaria
+ supermarket: Supermercado
+ tailor: Alfaiate
+ toys: Loja de Brinquedos
+ travel_agency: Agência de Viagens
+ video: Videoclube
+ wine: Venda de Bebidas (Off License)
+ "yes": Loja
+ tourism:
+ alpine_hut: Albergue de Montanha
+ apartment: Apartamento
+ artwork: Obra de arte
+ attraction: Atracção
+ bed_and_breakfast: Cama com pequeno-almoço incluído
+ cabin: Cabana
+ camp_site: Parque de campismo
+ caravan_site: Parque de caravanas
+ chalet: Chalé
+ gallery: Galeria
+ guest_house: Casa de Hóspedes
+ hostel: Pousada / Hostel
+ hotel: Hotel
+ information: Informação
+ motel: Motel
+ museum: Museu
+ picnic_site: Parque de merendas / piqueniques
+ theme_park: Parque temático
+ viewpoint: Miradouro
+ zoo: Jardim zoológico
+ tunnel:
+ culvert: Conduta
+ "yes": Túnel
+ waterway:
+ artificial: Curso de água artificial
+ boatyard: Estaleiro Naval
+ canal: Canal
+ dam: Barragem
+ derelict_canal: Canal abandonado
+ ditch: Vala
+ dock: Doca
+ drain: Vala de drenagem
+ lock: Eclusa
+ lock_gate: Comporta de Eclusa
+ mooring: Ancoragem
+ rapids: Rápidos
+ river: Rio
+ stream: Ribeiro
+ wadi: Uádi
+ waterfall: Queda de água
+ weir: Represa
+ "yes": Curso de Água
+ admin_levels:
+ level2: Fronteira de País
+ level4: Região
+ level5: Ilha
+ level6: Distrito
+ level8: Freguesia
+ level9: Localidade
+ level10: Lugar
+ description:
+ title:
+ osm_nominatim: Resultado de <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Resultado de <a href="http://www.geonames.org/">GeoNames</a>
+ types:
+ cities: Cidades
+ towns: Cidades
+ places: Lugares
+ results:
+ no_results: Não foram encontrados resultados
+ more_results: Mais resultados
+ layouts:
+ logo:
+ alt_text: Logotipo do OpenStreetMap
+ home: Ir para a sua localização
+ logout: Terminar Sessão
+ log_in: Iniciar Sessão
+ log_in_tooltip: Entrar com uma conta existente
+ sign_up: Criar Conta
+ start_mapping: Começar a Mapear
+ sign_up_tooltip: Criar uma conta para poder editar o mapa
+ edit: Editar
+ history: Histórico
+ export: Exportar
+ data: Dados
+ export_data: Exportar dados
+ gps_traces: Trilhos GPS
+ gps_traces_tooltip: Gerir os trilhos GPS
+ user_diaries: Diários de Utilizadores
+ user_diaries_tooltip: Ver diários dos utilizadores
+ edit_with: Editar com %{editor}
+ tag_line: O Mapa Mundial Livre e Editável
+ intro_header: Bem vindo ao OpenStreetMap!
+ intro_text: O OpenStreetMap é um mapa do mundo, criado por pessoas como você e
+ de uso livre sob uma licença aberta.
+ intro_2_create_account: Crie uma conta de utilizador
+ partners_html: O alojamento é suportado por %{ucl}, %{ic}, %{bytemark} e outros
+ %{partners}.
+ partners_ucl: UCL VR Centre
+ partners_ic: Imperial College London
+ partners_bytemark: Bytemark Hosting
+ partners_partners: parceiros
+ osm_offline: A base de dados do OpenStreetMap não está disponível neste momento
+ enquanto decorrerem trabalhos de manutenção.
+ osm_read_only: A base de dados do OpenStreetMap encontra-se neste momento no modo
+ de leitura, enquanto decorrerem trabalhos de manutenção.
+ donate: Apoie o OpenStreetMap %{link} para o Fundo de Atualização do Hardware.
+ help: Ajuda
+ about: Sobre Nós
+ copyright: Direitos de Autor
+ community: Comunidade
+ community_blogs: Blogues da Comunidade
+ community_blogs_title: Blogues de membros da comunidade OpenStreetMap
+ foundation: Fundação
+ foundation_title: A Fundação OpenStreetMap
+ make_a_donation:
+ title: Suporte o OpenStreetMap com um donativo monetário
+ text: Fazer um Donativo
+ learn_more: Mais Informações
+ more: Mais
+ license_page:
+ foreign:
+ title: Sobre esta tradução
+ text: Caso haja um conflito entre esta página traduzida e %{english_original_link},
+ a página em inglês tem prevalência
+ english_link: o original em inglês
+ native:
+ title: Sobre esta página
+ text: Está a ver a versão em Inglês da página de copyright. Pode voltar à %{native_link}
+ desta página ou, se preferir, %{mapping_link}.
+ native_link: Versão em português
+ mapping_link: começar a mapear
+ legal_babble:
+ title_html: Licença e Direitos de autor
+ intro_1_html: |-
+ O OpenStreetMap<sup><a href="#trademarks">®</a></sup> é disponibilizado em <i>dados abertos</i>, sob a licença <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data
+ Commons Open Database License</a> (ODbL) pela <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
+ intro_2_html: Tem o direito de copiar, distribuir, transmitir e adaptar os nossos
+ dados, desde que atribua a autoria do OpenStreetMap e os seus contribuidores.
+ Se alterar ou adicionar conteúdo dos nossos dados, pode distribuir o resultado
+ apenas com a mesma licença. O <a href="http://opendatacommons.org/licenses/odbl/1.0/">texto
+ legal completo</a> explica os seus direitos e responsabilidades.
+ intro_3_html: A cartografia nas nossas telas de mapas (imagens dos mapas) e
+ a nossa documentação são disponibilizadas sob a licença <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.pt">Creative
+ Commons Atribuição - CompartilhaIgual 2.0 Genérica (CC BY-SA 2.0)</a>.
+ credit_title_html: Como creditar o OpenStreetMap
+ credit_1_html: É necessário indicar “© contribuidores do OpenStreetMap”
+ ou caso seja mais adequado em inglês “© OpenStreetMap contributors”.
+ credit_2_html: Também tem de indicar claramente que os dados estão disponíveis
+ sob a Open Database License (ODbL), e caso utilize as telas de mapas (imagens
+ dos mapas), que a cartografia é disponibilizada sob a licença CC-BY-SA. Pode
+ fazer isto colocando uma hiperligação para <a href="http://www.openstreetmap.org/copyright">esta
+ página sobre licença e direitos de autor</a>. Como alternativa, e obrigatório
+ caso distribua o OpenStreetMap em formato de dados, pode indicar as licenças
+ e colocar hiperligações a apontar para as páginas das licenças. Em suportes
+ que não seja possível colocar hiperligações (por exemplo, obras impressas)
+ sugerimos que indique o endereço do sítio www.openstreetmap.org (talvez substituindo
+ ‘OpenStreetMap’ por este endereço web), para www.opendatacommons.org
+ e, caso se aplique, para www.creativecommons.org
+ credit_3_html: |-
+ Num mapa eletrónico navegável, os créditos devem aparecer num canto do mapa.
+ Por exemplo (em inglês):
+ attribution_example:
+ alt: Exemplo de como indicar os créditos do OpenStreetMap numa página web
+ title: Exemplo de atribuição
+ more_title_html: Saber mais
+ more_1_html: |-
+ Leia mais informações sobre a utilização dos nossos dados e como atribuir a autoria na <a
+ href="http://osmfoundation.org/License">página da licença da OSMF</a> e a página da comunidade <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">Perguntas frequentes - Legais</a> (em inglês).
+ more_2_html: Apesar do OpenStreetMap consistir em dados abertos, não podemos
+ fornecer um serviço mapa API, livre de encargos, a programadores terceiros.
+ Veja a <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Política
+ de Utilização da API</a> (em inglês), <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Política
+ de Utilização de Telas</a> (em inglês) e <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Política
+ de Utilização do Nominatim</a> (em inglês).
+ contributors_title_html: Os nossos contribuidores
+ contributors_intro_html: 'Os contribuidores do OpenStreetMap são milhares. Também
+ são utilizados dados de agências cartográficas nacionais e outras fontes,
+ entre elas:'
+ contributors_at_html: '<strong>Áustria</strong>: Contém dados de <a href="http://data.wien.gv.at/">Stadt
+ Wien</a> (sob a licença <a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC
+ BY</a>), <a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land
+ Vorarlberg</a> e Land Tirol (sob a licença <a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY
+ AT com emendas</a>).'
+ contributors_ca_html: '<strong>Canadá</strong>: Contém dados de GeoBase®,
+ GeoGratis (© Department of Natural Resources Canada), CanVec (©
+ Department of Natural Resources Canada), e StatCan (Geography Division, Statistics
+ Canada).'
+ contributors_fi_html: "<strong>Finlândia</strong>: Contem dados do \nNational
+ Land Survey da Finland´s Topographic Database \nassim como de outras bases
+ de dados, sob a licença <a href=\"http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501\">NLSFI</a>."
+ contributors_fr_html: '<strong>França</strong>: Contém dados provenientes da
+ Direction Générale des Impôts.'
+ contributors_nl_html: '<strong>Países Baixos</strong>: Contém dados © AND,
+ 2007 (<a href="http://www.and.com">www.and.com</a>)'
+ contributors_nz_html: '<strong>Nova Zelândia</strong>: Contém dados provenientes
+ de Land Information New Zealand. Crown Copyright reserved.'
+ contributors_si_html: |-
+ <strong>Eslovénia</strong>: Contém dados da
+ <a href="http://www.gu.gov.si/en/">Autoridade de Cartografia e Topografia (Geodetska uprava Republike Slovenije)</a> e do
+ <a href="http://www.mkgp.gov.si/en/">Ministério da Agricultura, Floresta e Alimentação (Ministrstvo za kmetijstvo, gozdarstvo in prehrano)</a>
+ (informação pública da Eslovénia).
+ contributors_za_html: '<strong>África do Sul</strong>: Contém dados provenientes
+ de <a href="http://www.ngi.gov.za/">Chief Directorate: National Geo-Spatial
+ Information</a>, State copyright reserved.'
+ contributors_gb_html: '<strong>Reino Unido</strong>: Contém dados do Ordnance
+ Survey © Crown copyright and database right 2010-2012.'
+ contributors_footer_1_html: Para mais informações sobre estas e outras fontes
+ utilizadas para melhorar o OpenStreetMap, consulte a <a href="http://wiki.openstreetmap.org/wiki/Contributors">página
+ de contribuidores</a> (em inglês) na wiki do OpenStreetMap.
+ contributors_footer_2_html: ' A inclusão de dados no OpenStreetMap não implica
+ que o fornecedor de dados originais apoie o OpenStreetMap, forneça qualquer
+ garantia, ou aceite algum tipo de responsabilidade.'
+ infringement_title_html: Violação de direitos de autor
+ infringement_1_html: É relembrado aos contribuidores do OpenStreetMap para nunca
+ adicionarem dados de fontes protegidas por direitos de autor (por exemplo
+ o Google Maps ou mapas comerciais impressos) sem permissão explícita dos detentores
+ dos direitos de autor.
+ infringement_2_html: Se acredita que foi adicionado material protegido por direitos
+ de autor indevidamente à base de dados do OpenStreetMap, por favor consulte
+ o <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">procedimento
+ para retirar dados protegidos</a> (em inglês) ou preencha os dados diretamente
+ no <a href="http://dmca.openstreetmap.org/">formulário</a> (em inglês).
+ trademarks_title_html: <span id="trademarks"></span>Marcas registadas
+ trademarks_1_html: OpenStreetMap e o logotipo com a lupa são marcas registadas
+ da OpenStreetMap Foundation. Se tiver alguma questão sobre a utilização das
+ marcas, por favor envie as suas questões para o <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Grupo
+ de Trabalho de Licenças</a>.
+ welcome_page:
+ title: Bem-vindo !
+ introduction_html: Bem-vindo ao OpenStreetMap, o mapa livre e editável do mundo.
+ Agora como estás inscrito, estás também pronto para mapear. Aqui um guia rápido
+ com as coisas mais importantes que precisas de saber.
+ whats_on_the_map:
+ title: O que está no Mapa
+ on_html: OpenStreetMap é um lugar para mapear as coisas que são ambos <em>real
+ e atual</em> - inclui milhões de prédios, estradas, e outros detalhes locais.
+ Podes mapear qualquer elemento do mundo real que lhe interessa.
+ off_html: O que <em>não é</em> incluído são dados subjectivos como notações,
+ factos históricos, objectos inventados, e dados de fontes com copyright. Se
+ não tiveres permissão específica, não copies dados doutro mapa qualquer que
+ seja online ou em papel.
+ basic_terms:
+ title: Vocabulário para mapear
+ paragraph_1_html: OpenStreetMap tem a sua própria linguagem. Aqui a explicação
+ de algumas palavras úteis.
+ editor_html: Um <strong>editor</strong> é um programa ou site usado para editar
+ o mapa.
+ node_html: Um <strong>nó</strong> é um ponto no mapa, como um restaurante ou
+ uma árvore.
+ way_html: Um <strong>caminho</strong> é uma linha ou uma área, como uma estrada,
+ um rio, um lago ou um prédio.
+ tag_html: Uma <strong>etiqueta</strong> é um peça de informação sob um nó ou
+ uma linha, como o nome do restaurante ou o limite de velocidade duma estrada.
+ questions:
+ title: Tens perguntas ?
+ paragraph_1_html: |-
+ O OpenStreetMap tem vários recursos para saber mais sobre o projeto, perguntar e responder a questões, e colaborativamente discutir e documentar vários tópicos sobre o mapa.
+ <a href='%{help_url}'>Obtenha ajuda aqui</a>
+ start_mapping: Começar a mapear
+ add_a_note:
+ title: Falta de tempo para editar ? Adiciona uma nota !
+ paragraph_1_html: Se quiseres fazer uma pequena alteração más falta tempo para
+ inscrever-se e aprender a editar, é muito simples deixar uma nota.
+ paragraph_2_html: |-
+ Vá apenas para <a href='%{map_url}'>o mapa</a> e clique no ícone de nota: <span class='icon note'></span>. Isto irá adicionar um marcador no mapa, que poderá ser reposicionado.
+ Adiciona a sua mensagem e, em seguida, clique em salvaguardar, assim outros mapeadores irão investigar.
+ fixthemap:
+ title: Reportar um problema / Corrigir o mapa
+ how_to_help:
+ title: Como Ajudar
+ join_the_community:
+ title: Junte-se à comunidade
+ explanation_html: Se você reparou num problema com os dados do nosso mapa,
+ como por exemplo uma estrada ou o seu adereço em falta, a melhor maneira
+ de proceder é juntando-se à comunidade do OpenStreetMap e adicionando ou
+ reparando os dados por si mesmo.
+ add_a_note:
+ instructions_html: |-
+ Apenas clique em <a class='icon note'></a> ou no mesmo ícone na interface do mapa.
+ Isto irá adicionar um marcador ao mapa, o qual pode mover arrastando. Adicione a sua mensagem, clique em salvar, e outros utilizadores como você irão investigar.
+ other_concerns:
+ title: Outras preocupações
+ explanation_html: Se você tem preocupações sobre o modo como os nossos dados
+ estão a ser usados ou sobre os conteúdos, por favor consulte a nossa <a href='/copyright'>página
+ de direitos de autor</a> para mais informações legais, ou contacte o <a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>grupo
+ de trabalho OSMF</a> apropriado.
+ help_page:
+ title: Obter Ajuda
+ introduction: O OpenStreetMap tem vários recursos para saber mais sobre o projeto,
+ perguntar e responder a questões, e colaborativamente discutir e documentar
+ vários tópicos sobre o mapa.
+ welcome:
+ url: /welcome
+ title: Bem vindo ao OpenStreetMap
+ description: Comece por este guia rápido sobre os princípios básicos do OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Pt:Beginners%27_guide
+ title: Guia de Iniciantes
+ description: Guia para iniciantes criado pela comunidade.
+ help:
+ url: https://help.openstreetmap.org/
+ title: help.openstreetmap.org
+ description: Coloque uma questão ou procure por respostas no fórum de perguntas
+ e respostas do OpenStreetMap.
+ mailing_lists:
+ title: Listas de discussão
+ description: Faça uma pergunta ou discuta sobre temas interessantes numa vasta
+ gama de listas de discussão regionais e temáticas.
+ forums:
+ title: Fóruns
+ description: Questões e discussões para quem preferir uma área na internet do
+ tipo fórum.
+ irc:
+ title: IRC
+ description: Sala de discussão IRC em várias línguas e vários tópicos.
+ switch2osm:
+ title: switch2osm
+ description: Informações para empresas e organizações que queiram mudar para
+ os mapas do OpenStreetMap e outros serviços.
+ wiki:
+ url: http://wiki.openstreetmap.org/wiki/Pt:Main_Page
+ title: wiki.openstreetmap.org
+ description: Navegue na wiki de documentação sobre o OpenStreetMap.
+ about_page:
+ next: Seguinte
+ copyright_html: <span>©</span>Colaboradores<br>do OpenStreetMap
+ used_by: O %{name} fornece dados a centenas de sítios na internet, aplicações
+ de telemóveis e outros dispositivos
+ lede_text: O OpenStreetMap é desenvolvido por uma comunidade voluntária de mapeadores
+ que contribuem e mantêm atualizados os dados sobre estradas, trilhos, cafés,
+ estações ferroviárias e muito mais por todo o mundo.
+ local_knowledge_title: Conhecimento Local
+ local_knowledge_html: O OpenStreetMap valoriza o conhecimento local. Os colaboradores
+ utilizam fotografias aéreas, dispositivos GPS, e mapas do terreno para verificar
+ que a informação no OpenStreetMap é rigorosa e atualizada.
+ community_driven_title: Dirigido pela Comunidade
+ community_driven_html: |-
+ A comunidade do OpenStreetMap é diversa, apaixonada, e aumenta diariamente.
+ Entre os nossos colaboradores encontra-se mapeadores entusiastas,
+ profissionais das áreas de sistemas geográficos, engenheiros que utilizam
+ os servidores do OpenStreetMap, voluntários a mapear áreas afetadas
+ por grandes desastres, e muitos mais.
+ Para saber mais sobre a nossa comunidade, veja os <a href='%{diary_path}'>diários dos editores</a>,
+ <a href='http://blogs.openstreetmap.org/'>blogues da comunidade</a>, e o sítio da <a href='http://www.osmfoundation.org/'>OSM Foundation</a>.
+ open_data_title: Dados Abertos
+ open_data_html: |-
+ O OpenStreetMap é constituído por <i>dados abertos</i>: qualquer
+ pessoa tem a liberdade de usar os dados para qualquer fim desde
+ credite a autoria do OpenStreetMap e os seus colaboradores.
+ Se você alterar os dados ou criar algo com os dados, pode distribuir
+ o produto resultante apenas sob a mesma licença. Consulte <a href='%{copyright_path}'>a página sobre direitos de autor e licenciamento</a> para mais informações.
+ legal_title: Termos legais
+ legal_html: "Este site e outros serviços relacionados são formalmente geridos
+ pela \n<a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF)
+ \nem nome da comunidade.\n<br> \nPor favor <a href='http://osmfoundation.org/Contact'>contacte
+ a OSMF</a> \nse tiver questões sobre a licença, direitos de autor, questões
+ legais ou problemas."
+ partners_title: Parceiros
+ notifier:
+ diary_comment_notification:
+ subject: '[OpenStreetMap] %{user} comentou numa entrada do seu diário'
+ hi: Olá %{to_user},
+ header: '%{from_user} comentou na sua entrada recente do diário no OpenStreetMap
+ com o assunto %{subject}:'
+ footer: Também pode ler o comentário em %{readurl} e comentar em %{commenturl}
+ ou responder em %{replyurl}
+ message_notification:
+ hi: Olá %{to_user},
+ header: '%{from_user} enviou-lhe uma mensagem através do OpenStreetMap com o
+ assunto %{subject}:'
+ footer_html: Também pode ler a mensagem em %{readurl} e pode responder em %{replyurl}
+ friend_notification:
+ subject: '[OpenStreetMap] %{user} adicionou-o como amigo'
+ had_added_you: '%{user} adicionou-o como amigo no OpenStreetMap.'
+ see_their_profile: Pode ver o perfil do editor em %{userurl}.
+ befriend_them: Também pode adicioná-lo como amigo em %{befriendurl}.
+ gpx_notification:
+ greeting: Olá,
+ your_gpx_file: Parece que seu ficheiro GPX
+ with_description: com a descrição
+ and_the_tags: 'e com as seguintes etiquetas:'
+ and_no_tags: e sem etiquetas.
+ failure:
+ subject: '[OpenStreetMap] Erro de importação GPX'
+ failed_to_import: 'falhou na importação. Erro:'
+ more_info_1: Pode encontrar mais informação sobre erros em importações GPX
+ e como evitar
+ more_info_2: 'que ocorram novamente em:'
+ success:
+ subject: '[OpenStreetMap] Importação de GPX bem sucedida'
+ loaded_successfully: foi carregado com sucesso com %{trace_points} de %{possible_points}
+ pontos possíveis.
+ signup_confirm:
+ subject: '[OpenStreetMap] Bem vindo(a) ao OpenStreetMap'
+ greeting: Olá!
+ created: Alguém (provavelmente você) acaba de criar uma conta em %{site_url}.
+ confirm: 'Antes de fazermos outra coisa, necessitamos que confirme que o pedido
+ partiu de si. Se fez o pedido clique na ligação seguinte para confirmar a
+ conta:'
+ welcome: Depois de confirmar a sua conta, forneceremos algumas informações para
+ começar a editar.
+ email_confirm:
+ subject: '[OpenStreetMap] Confirme o seu endereço de e-mail'
+ email_confirm_plain:
+ greeting: Olá,
+ hopefully_you: Alguém (provavelmente você) pediu para alterar o endereço de
+ email registado na conta em %{server_url} para o endereço %{new_address}.
+ click_the_link: Se foi você que fez o pedido, clique na ligação seguinte para
+ confirmar o pedido.
+ email_confirm_html:
+ greeting: Olá,
+ hopefully_you: Foi feito um pedido no site do OpenStreetMap para alterar o endereço
+ de e-mail da sua conta de %{server_url} para %{new_address}.
+ click_the_link: Se foi você que fez o pedido, clique na ligação seguinte para
+ confirmar a alteração.
+ lost_password:
+ subject: '[OpenStreetMap] Pedido de uma nova palavra-passe'
+ lost_password_plain:
+ greeting: Olá,
+ hopefully_you: Alguém (provavelmente você) pediu para ser enviada uma nova palavra-passe
+ da conta no openstreetmap.org
+ click_the_link: Se foi você que fez o pedido, clique na ligação seguinte para
+ lhe ser enviada uma nova palavra-passe, invalidando a anterior.
+ lost_password_html:
+ greeting: Olá,
+ hopefully_you: Foi feito um pedido para obter uma nova palavra-passe nesta conta
+ do openstreetmap.org associada a este e-mail.
+ click_the_link: Se foi você que fez o pedido, clique na ligação seguinte para
+ lhe ser enviada uma nova palavra-passe, invalidando a anterior.
+ note_comment_notification:
+ anonymous: Um utilizador anónimo
+ greeting: Olá,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} deixou um comentário num erro do
+ mapa que você reportou'
+ subject_other: '[OpenStreetMap] %{commenter} deixou um comentário num erro
+ do mapa que você reportou'
+ your_note: '%{commenter} deixou um comentário num erro do mapa que você reportou
+ perto de %{place}.'
+ commented_note: '%{commenter} deixou um comentário num erro do mapa no mapa
+ que você reportou. O erro reportado encontra-se perto de %{place}.'
+ closed:
+ subject_own: '[OpenStreetMap] %{commenter} resolveu um erro do mapa que você
+ reportou'
+ subject_other: '[OpenStreetMap] %{commenter} resolveu um erro no mapa que
+ você está interessado'
+ your_note: '%{commenter} resolveu um erro do mapa perto de %{place}.'
+ commented_note: '%{commenter} resolveu um erro do mapa que você comentou.
+ O erro do mapa encontra-se perto de %{place}.'
+ reopened:
+ subject_own: '[OpenStreetMap] %{commenter} reabriu um dos erros no mapa reportados
+ por si'
+ subject_other: '[OpenStreetMap] %{commenter} reabriu um dos erros no mapa
+ em que você está interessado'
+ your_note: '%{commenter} reabriu um erro no mapa reportado por si perto de
+ %{place}.'
+ commented_note: '%{commenter} reabriu um erro no mapa em que você comentou.
+ O erro encontra-se perto de %{place}.'
+ details: Ver mais detalhes sobre o erro reportado em %{url}.
+ changeset_comment_notification:
+ greeting: Olá,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} comentou uma das suas edições'
+ subject_other: '[OpenStreetMap] %{commenter} comentou uma edição em que está
+ interessado'
+ your_changeset: '%{commenter} deixou um comentário numa das suas edições em
+ %{time}'
+ commented_changeset: '%{commenter} deixou um comentário numa edição em que
+ está interessado criada por %{changeset_author} há %{time}'
+ partial_changeset_with_comment: com o comentário '%{changeset_comment}'
+ partial_changeset_without_comment: sem comentários
+ details: Pode encontrar mais informações sobre a edição em %{url}.
+ message:
+ inbox:
+ title: Caixa de Entrada
+ my_inbox: A minha caixa de entrada
+ outbox: caixa de saída
+ messages: Tem %{new_messages} e %{old_messages}
+ new_messages:
+ one: '%{count} mensagem nova'
+ other: '%{count} mensagens novas'
+ old_messages:
+ one: '%{count} mensagem antiga'
+ other: '%{count} mensagens antigas'
+ from: De
+ subject: Assunto
+ date: Data
+ no_messages_yet: Ainda não tem mensagens. Por que não entrar em contacto com
+ algumas %{people_mapping_nearby_link}?
+ people_mapping_nearby: pessoas a mapear nas redondezas
+ message_summary:
+ unread_button: Marcar como não lida
+ read_button: Marcar como lido
+ reply_button: Responder
+ delete_button: Eliminar
+ new:
+ title: Enviar mensagem
+ send_message_to: Enviar uma nova mensagem para %{name}
+ subject: Assunto
+ body: Mensagem
+ send_button: Enviar
+ back_to_inbox: Voltar à caixa de entrada
+ message_sent: Mensagem enviada
+ limit_exceeded: Enviou muitas mensagens recentemente. Por favor aguarde e envie
+ mais tarde.
+ no_such_message:
+ title: Esta mensagem não existe
+ heading: Esta mensagem não existe.
+ body: Desculpe, não existe nenhuma mensagem com esse identificador (ID).
+ outbox:
+ title: Caixa de saída
+ my_inbox: A minha %{inbox_link}
+ inbox: caixa de entrada
+ outbox: caixa de saída
+ messages:
+ one: Tem %{count} mensagem enviada
+ other: Tem %{count} mensagens enviadas
+ to: Para
+ subject: Assunto
+ date: Data
+ no_sent_messages: Ainda não tem mensagens enviadas. Por que não entrar em contacto
+ com algumas %{people_mapping_nearby_link}?
+ people_mapping_nearby: pessoas a mapear nas redondezas
+ reply:
+ wrong_user: Está autenticado como o utilizador `%{user}' mas a mensagem que
+ pediu para responder não foi enviada para esse utilizador. Por favor entre
+ na conta de utilizador correta para responder.
+ read:
+ title: Ler mensagem
+ from: De
+ subject: Assunto
+ date: Data
+ reply_button: Responder
+ unread_button: Marcar como não lida
+ back: Voltar
+ to: Para
+ wrong_user: Está autenticado com a conta `%{user}', mas a mensagem que pediu
+ para ler não foi enviada por, ou para, essa conta de utilizador. Por favor,
+ entre na conta de utilizador correta para ler a mensagem.
+ sent_message_summary:
+ delete_button: Eliminar
+ mark:
+ as_read: Mensagem marcada como lida
+ as_unread: Mensagem marcada como não lida
+ delete:
+ deleted: Mensagem eliminada
+ site:
+ index:
+ js_1: Está a usar um navegador de Internet que não suporta JavaScript ou tem
+ o JavaScript desativado.
+ js_2: É necessário ter o JavaScript ativado para visualizar mapas no OpenStreetMap.
+ permalink: Ligação permanente
+ shortlink: Ligação curta
+ createnote: Reportar um erro no mapa
+ license:
+ copyright: Copyright OpenStreetMap e contribuidores, sob uma licença aberta
+ remote_failed: Erro na edição - confirme se o JOSM ou o Merkaartor está aberto
+ e a opção de Controlo Removo (Remote Control) está ativada
+ edit:
+ not_public: Não configurou as suas edições como públicas.
+ not_public_description: Não pode editar mais o mapa a não ser que torne as suas
+ edições públicas. Pode fazer essa alteração na sua %{user_page}.
+ user_page_link: página de utilizador
+ anon_edits_link_text: Descubra a que se deve isto.
+ flash_player_required: Necessita do Flash instalado e ativado para usar o Potlatch,
+ o editor em Flash do OpenStreetMap. Pode <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">descarregar
+ o Flash do site Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Também
+ estão disponíveis outras opções</a> para editar o OpenStreetMap.
+ potlatch_unsaved_changes: Tem alterações por gravar (Para gravar no Potlatch,
+ deve desselecionar o ponto ou linha atual, se estiver a editar no modo direto,
+ ou clicar no botão gravar se este estiver disponível.)
+ potlatch2_not_configured: O Potlatch 2 não foi configurado - por favor veja
+ http://wiki.openstreetmap.org/wiki/The_Rails_Port
+ potlatch2_unsaved_changes: Tem alterações que não foram gravadas. (Para gravar
+ no Potlatch 2, deve clicar no botão Gravar.)
+ id_not_configured: O editor iD não foi configurado
+ no_iframe_support: O seu navegador de Internet não suporta ou tem desativado
+ as iframes HTML, que são necessárias para esta funcionalidade.
+ sidebar:
+ search_results: Resultados da Pesquisa
+ close: Fechar
+ search:
+ search: Pesquisar
+ get_directions: Obter direções
+ get_directions_title: Obtenha as direções de uma rota entre 2 pontos
+ from: De
+ to: Para
+ where_am_i: Onde estou?
+ where_am_i_title: Pesquisa a localização atual do mapa
+ submit_text: Ir
+ key:
+ table:
+ entry:
+ motorway: Auto-Estrada
+ trunk: Via Rápida
+ primary: Estrada Nacional (Primária)
+ secondary: Estrada Regional (Secundária)
+ unclassified: Estrada sem classificação oficial
+ unsurfaced: Estrada não pavimentada
+ track: Carreiro florestal ou agrícola
+ byway: Byway (atalho proibido a veículos motorizados)
+ bridleway: Via para cavaleiros
+ cycleway: Ciclovia
+ footway: Via pedonal
+ rail: Ferrovia
+ subway: Metropolitano
+ tram:
+ - Metropolitano de Superfície
+ - elétrico
+ cable:
+ - Teleférico
+ - telecadeira
+ runway:
+ - Pista de Aeroporto
+ - Via de Circulação (taxiway)
+ apron:
+ - Estacionamento de aviões
+ - terminal de aeroporto
+ admin: Divisão Administrativa
+ forest: Floresta
+ wood: Bosque
+ golf: Campo de golfe
+ park: Parque
+ resident: Área residencial
+ tourist: Atração turística
+ common:
+ - Baldio
+ - prado
+ retail: Área de retalho (lojas)
+ industrial: Área industrial
+ commercial: Área comercial (escritórios)
+ heathland: Charneca / mato de vegetação rasteira
+ lake:
+ - Lago
+ - reservatório
+ farm: Quinta
+ brownfield: Edifícios industriais em ruínas e contaminados
+ cemetery: Cemitério
+ allotments: Lotes
+ pitch: Campo desportivo
+ centre: Centro desportivo
+ reserve: Reserva natural
+ military: Área militar
+ school:
+ - Escola
+ - universidade
+ building: Edifício significativo
+ station: Estação ferroviária
+ summit:
+ - Cume
+ - pico
+ tunnel: Linha tracejada = túnel
+ bridge: Linha cheia = ponte
+ private: Acesso restrito (propriedade privada)
+ permissive: Acesso permitido
+ destination: Acesso a clientes / fornecedores
+ construction: Estradas em construção
+ richtext_area:
+ edit: Editar
+ preview: Mostrar previsão
+ markdown_help:
+ title_html: Tabela de códigos (<a href="http://daringfireball.net/projects/markdown/">Markdown</a>)
+ headings: Cabeçalhos
+ heading: Cabeçalho
+ subheading: Sub-secção
+ unordered: Lista
+ ordered: Lista numerada
+ first: Primeiro item
+ second: Segundo item
+ link: Hiperligação
+ text: Texto
+ image: Imagem
+ alt: Texto alternativo
+ url: URL
+ trace:
+ visibility:
+ private: Privado (apenas partilhado como anónimo, pontos não ordenados)
+ public: Público (mostrado na lista de trilhos GPS como anónimo, pontos não ordenados)
+ trackable: Controlável (apenas partilhado como anónimo, pontos ordenados com
+ data e hora)
+ identifiable: Identificável (mostrado na lista de trilhos GPS e identificável,
+ pontos ordenados com data e hora)
+ create:
+ upload_trace: Enviar Trilho GPS
+ trace_uploaded: O seu ficheiro GPX (GPS) foi enviado e está a aguardar a inclusão
+ na base de dados. Normalmente este processo dura cerca de uma hora. Quando
+ for incluído na base de dados será enviado um email a informá-lo.
+ edit:
+ title: A editar o trilho %{name}
+ heading: A editar o trilho %{name}
+ filename: 'Nome do ficheiro:'
+ download: descarregar
+ uploaded_at: 'Enviado em:'
+ points: 'Pontos:'
+ start_coord: 'Coordenada de início:'
+ map: mapa
+ edit: editar
+ owner: 'Autor:'
+ description: 'Descrição:'
+ tags: 'Etiquetas:'
+ tags_help: separadas por vírgulas
+ save_button: Gravar Alterações
+ visibility: 'Visibilidade:'
+ visibility_help: o que significa isto?
+ trace_form:
+ upload_gpx: 'Enviar Ficheiro GPX:'
+ description: 'Descrição:'
+ tags: 'Etiquetas:'
+ tags_help: separadas por vírgulas
+ visibility: 'Visibilidade:'
+ visibility_help: o que significa isto?
+ upload_button: Enviar
+ help: Ajuda
+ trace_header:
+ upload_trace: Enviar trilho GPS
+ see_all_traces: Ver todos os trilhos
+ see_your_traces: Ver todos os meus trilhos GPS
+ traces_waiting:
+ one: Tem %{count} trilho GPS na fila para ser colocado na base de dados do
+ OpenStreetMap. Por favor, antes de enviar mais trilhos aguarde um pouco
+ para terminar a inclusão do trilho enviado, de modo a não bloquear a fila
+ para outros utilizadores.
+ other: Tem %{count} trilhos GPS na fila para serem colocados na base de dados
+ do OpenStreetMap. Por favor, antes de enviar mais trilhos aguarde um pouco
+ para terminar a inclusão dos trilhos enviados, de modo a não bloquear a
+ fila para outros utilizadores.
+ trace_optionals:
+ tags: Etiquetas
+ view:
+ title: A ver o trilho %{name}
+ heading: A ver o trilho %{name}
+ pending: PENDENTE
+ filename: 'Nome do ficheiro:'
+ download: descarregar
+ uploaded: 'Enviado:'
+ points: 'Pontos:'
+ start_coordinates: 'Coordenada de início:'
+ map: mapa
+ edit: editar
+ owner: 'Autor:'
+ description: 'Descrição:'
+ tags: 'Etiquetas:'
+ none: Nenhum
+ edit_track: Editar este trilho
+ delete_track: Eliminar este trilho
+ trace_not_found: Não foi encontrado o trilho!
+ visibility: 'Visibilidade:'
+ trace_paging_nav:
+ showing_page: Página %{page}
+ older: Trilhos GPS mais antigos
+ newer: Trilhos GPS mais recentes
+ trace:
+ pending: PENDENTE
+ count_points: '%{count} pontos'
+ ago: Há %{time_in_words_ago}
+ more: mais
+ trace_details: Ver Detalhes do Trilho
+ view_map: Ver Mapa
+ edit: editar
+ edit_map: Editar Mapa
+ public: PÚBLICO
+ identifiable: IDENTIFICÁVEL
+ private: PRIVADO
+ trackable: CONTROLÁVEL
+ by: por
+ in: em
+ map: mapa
+ list:
+ public_traces: Trilhos GPS públicos
+ your_traces: Os seus trilhos GPS
+ public_traces_from: Trilhos GPS públicos do utilizador %{user}
+ description: Ver trilhos GPS enviados recentemente
+ tagged_with: ' etiquetado com %{tags}'
+ empty_html: Ainda não enviou nenhum trilho GPS. <a href='%{upload_link}'>Envie
+ um novo trilho GPS</a> ou saiba mais sobre trilhos GPS na <a href='http://wiki.openstreetmap.org/wiki/Pt:Beginners_Guide_1.2'>página
+ wiki</a>.
+ delete:
+ scheduled_for_deletion: Trilho programado para eliminação
+ make_public:
+ made_public: Trilho tornado público
+ offline_warning:
+ message: O sistema de envio de ficheiros GPX está atualmente indisponível
+ offline:
+ heading: Armazenamento de GPX indisponível
+ message: O sistema de envio e armazenamento GPX está neste momento indisponível.
+ georss:
+ title: Trilhos GPS do OpenStreetMap
+ description:
+ description_with_count:
+ one: Ficheiro GPX com %{count} ponto de %{user}
+ other: Ficheiro GPX com %{count} pontos de %{user}
+ description_without_count: Ficheiro GPX de %{user}
+ application:
+ require_cookies:
+ cookies_needed: Parece que tem os "cookies" desativados - por favor ative-os
+ no seu navegador de Internet antes de continuar.
+ require_moderator:
+ not_a_moderator: Tem de ser um moderador para poder fazer essa ação.
+ setup_user_auth:
+ blocked: O seu acesso à API foi bloqueado. Por favor aceda à página web do OpenStreetMap
+ e entre na sua conta para saber mais.
+ need_to_see_terms: O seu acesso à API está temporariamente suspenso. Por favor
+ aceda à página web do OpenStreetMap e entre na sua conta para ver os Termos
+ de Colaborador. Não precisa de aceitar os termos mas tem de os ver.
+ oauth:
+ oauthorize:
+ title: Autorizar acesso à sua conta
+ request_access: O programa %{app_name} está a pedir acesso à sua conta, %{user}.
+ Por favor escolha as permissões que o programa pode ter. Pode escolher as
+ que quiser.
+ allow_to: 'Dar permissão ao programa para:'
+ allow_read_prefs: ler as minhas preferências de utilizador.
+ allow_write_prefs: alterar as minhas preferências.
+ allow_write_diary: criar entradas no diário, comentários e adicionar amigos.
+ allow_write_api: alterar o mapa.
+ allow_read_gpx: ler os meus trilhos GPS privados.
+ allow_write_gpx: enviar trilhos GPS.
+ allow_write_notes: alterar erros reportados.
+ oauthorize_success:
+ title: Pedido de autorização permitido
+ allowed: Forneceu ao programa %{app_name} o acesso à sua conta.
+ verification: O código de verificação é %{code}.
+ oauthorize_failure:
+ title: Falhou o pedido de autorização.
+ denied: Anulou o acesso do programa %{app_name} à sua conta.
+ invalid: O token de autorização não é válido.
+ revoke:
+ flash: Revogou o Token para %{application}
+ oauth_clients:
+ new:
+ title: Registar um novo programa
+ submit: Registar
+ edit:
+ title: Editar o programa
+ submit: Editar
+ show:
+ title: Detalhes do OAuth de %{app_name}
+ key: 'Chave de Utilizador:'
+ secret: 'Segredo de Utilizador:'
+ url: 'URL do Token de Pedido:'
+ access_url: URL do Token de Acesso
+ authorize_url: 'URL de Autorização:'
+ support_notice: Suportamos HMAC-SHA1 (recomendado) e RSA-SHA1.
+ edit: Editar Detalhes
+ delete: Eliminar programa
+ confirm: Tem a certeza?
+ requests: 'Pedir as seguintes permissões do utilizador:'
+ allow_read_prefs: ler as preferências do utilizador.
+ allow_write_prefs: alterar as preferências do utilizador.
+ allow_write_diary: criar entradas no diário, comentários e adicionar amigos.
+ allow_write_api: alterar o mapa.
+ allow_read_gpx: ler os trilhos GPS privados do utilizador.
+ allow_write_gpx: enviar trilhos GPS.
+ allow_write_notes: alterar erros reportados.
+ index:
+ title: Minhas preferências do OAuth
+ my_tokens: Meus programas autorizados
+ list_tokens: 'Os seguintes tokens forem emitidos a programas em seu nome:'
+ application: Nome do Programa
+ issued_at: Emitido em
+ revoke: Anular!
+ my_apps: Meus programas
+ no_apps: Tem um programa que queira registar para ser utilizado com o OpenStreetMap
+ utilizando o %{oauth}? Tem de registar o programa para poder fazer solicitações
+ OAuth.
+ registered_apps: 'Tem os seguintes programas registados:'
+ register_new: Registar um programa
+ form:
+ name: Nome
+ required: obrigatório
+ url: URL do programa principal
+ callback_url: URL de retorno
+ support_url: URL de suporte
+ requests: 'Pedir as seguintes permissões do utilizador:'
+ allow_read_prefs: ler as preferências do utilizador.
+ allow_write_prefs: alterar as preferências do utilizador.
+ allow_write_diary: criar entradas no diário, comentários e adicionar amigos.
+ allow_write_api: alterar o mapa.
+ allow_read_gpx: ler os trilhos GPS privados do utilizador.
+ allow_write_gpx: enviar trilhos GPS.
+ allow_write_notes: alterar erros reportados.
+ not_found:
+ sorry: Desculpe, não foi possível encontrar esse %{type}.
+ create:
+ flash: As informações foram registadas com sucesso
+ update:
+ flash: A atualização da informação do programa foi feita com sucesso
+ destroy:
+ flash: O registo do programa foi eliminado
+ user:
+ login:
+ title: Entrar
+ heading: Iniciar sessão
+ email or username: 'E-mail ou Utilizador:'
+ password: 'Palavra-passe:'
+ openid: '%{logo} OpenID:'
+ remember: 'Lembrar-me:'
+ lost password link: Perdeu a sua palavra-passe?
+ login_button: Entrar
+ register now: Criar conta agora
+ with username: 'Já tem uma conta no OpenStreetMap? Por favor introduza o nome
+ de utilizador e a palavra-passe:'
+ with external: Como alternativa, utilize um serviço externo para iniciar sessão
+ new to osm: É a primeira vez que está no OpenStreetMap?
+ to make changes: Para editar no OpenStreetMap, é necessário ter uma conta.
+ create account minute: Crie uma conta. Leva apenas um minuto.
+ no account: Não possui uma conta?
+ account not active: Desculpe, a sua conta ainda não está ativa.<br />Por favor
+ clique na ligação presente no email que lhe foi enviado para ativar a sua
+ conta, ou<a href="%{reconfirm}">peça uma nova mensagem de email para confirmação</a>.
+ account is suspended: Pedimos desculpa, mas a sua conta foi suspensa devido
+ a atividades suspeitas.<br />Por favor contacte o <a href="%{webmaster}">administrador
+ do site</a> para resolver o problema.
+ auth failure: Pedimos desculpa, mas não pode entrar na conta com os detalhes
+ fornecidos.
+ openid_logo_alt: Iniciar sessão com OpenID
+ auth_providers:
+ openid:
+ title: Iniciar sessão com OpenID
+ alt: Iniciar sessão com URL OpenID
+ google:
+ title: Iniciar sessão com Google
+ alt: Iniciar sessão com OpenID do Google
+ facebook:
+ title: Iniciar sessão com o Facebook
+ alt: Iniciar sessão com uma conta do Facebook
+ windowslive:
+ title: Iniciar sessão com Windows Live
+ alt: Iniciar sessão com uma conta do Windows Live
+ yahoo:
+ title: Iniciar sessão com Yahoo
+ alt: Iniciar sessão com OpenID Yahoo
+ wordpress:
+ title: Iniciar sessão com Wordpress
+ alt: Iniciar sessão com OpenID Wordpress
+ aol:
+ title: Iniciar sessão com AOL
+ alt: Iniciar sessão com OpenID AOL
+ logout:
+ title: Sair
+ heading: Sair do OpenStreetMap
+ logout_button: Sair
+ lost_password:
+ title: Palavra-passe esquecida
+ heading: Palavra-passe esquecida?
+ email address: 'E-mail:'
+ new password button: Alterar Palavra-passe
+ help_text: Introduza o endereço de e-mail que utilizou para criar a conta, enviaremos
+ uma ligação para esse e-mail para que possa pedir outra palavra-passe.
+ notice email on way: Já vai um e-mail a caminho para que possa utilizar outra
+ palavra-passe.
+ notice email cannot find: Não foi possível encontrar o e-mail, desculpe.
+ reset_password:
+ title: Repor palavra-passe
+ heading: Repor palavra-passe para o %{user}
+ password: 'Palavra-passe:'
+ confirm password: 'Confirmar Palavra-passe:'
+ reset: Repor Palavra-passe
+ flash changed: A sua palavra-passe foi alterada.
+ flash token bad: O Token não foi encontrado. Verifique por favor o URL.
+ new:
+ title: Criar conta
+ no_auto_account_create: Infelizmente neste momento não poderemos criar uma conta
+ automaticamente.
+ contact_webmaster: Entre em contacto com o <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
+ para uma conta ser criada - vamos tentar lidar com o pedido o mais rapidamente
+ possível.
+ about:
+ header: Livre e editável
+ html: |-
+ <p>Ao contrário de outros mapas, o OpenStreetMap é completamente criado por pessoas como você, e é disponibilizado gratuitamente para que qualquer pessoa possa corrigir, atualizar, descarregar e utilizar.</p>
+ <p>Crie uma conta de utilizador para começar a colaborar. Enviaremos um email para confirmar a sua conta.</p>
+ license_agreement: Quando confirmar a sua conta, será necessário aceitar os
+ <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">Termos
+ de Colaboração</a>.
+ email address: 'E-mail:'
+ confirm email address: 'Confirmar E-mail:'
+ not displayed publicly: Não será visível publicamente (ver <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
+ title="política de privacidade incluindo secção sobre endereços de e-mail">política
+ de privacidade</a>)
+ display name: 'Nome de utilizador:'
+ display name description: O nome de utilizador será visível publicamente. Poderá
+ alterar o nome posteriormente nas preferências.
+ external auth: 'Início de sessão por terceiros:'
+ password: 'Palavra-passe:'
+ confirm password: 'Confirmar senha:'
+ use external auth: Como alternativa, utilize um serviço externo para iniciar
+ sessão
+ auth no password: Não é necessário introduzir a palavra-passe com o iniciar
+ da sessão por serviço externo, mas o servidor ou as ferramenas externas podem
+ necessitar de uma.
+ auth association: |-
+ <p>O seu identificador ainda não está associado a uma conta no OpenStreetMap.</p>
+ <ul>
+ <li>Se nunca criou uma conta no OpenStreetMap, por favor crie uma no formulário seguinte.</li>
+ <li>
+ Se já tiver uma conta, pode iniciar sessão utilizando o nome de utilizador e a palavra-passe e então associar a sua conta
+ com o seu identificador nas configurações da conta.
+ </li>
+ </ul>
+ continue: Criar conta
+ terms accepted: Obrigado por aceitar os novos termos de colaborador!
+ terms declined: Lamentamos não ter aceitado os novos Termos de Colaborador.
+ Para obter mais informações consulte <a href="%{url}">esta página wiki</a>.
+ terms:
+ title: Termos de colaborador
+ heading: Termos de colaborador
+ read and accept: Por favor leia o acordo seguinte e clique no botão "Aceitar"
+ para confirmar que aceita os termos deste acordo para as suas contribuições
+ anteriores e futuras.
+ consider_pd: para além do acordo exposto acima, considero que as minhas contribuições
+ se encontram em Domínio Público.
+ consider_pd_why: O que é isto?
+ guidance: 'Informação para ajudar a compreender os termos: um <a href="%{summary}">resumo
+ inteligível</a> e algumas <a href="%{translations}">traduções informais</a>'
+ agree: Aceitar
+ decline: Rejeitar
+ you need to accept or decline: Por favor leia e depois aceite ou recuse os novos
+ Termos de Colaborador para continuar.
+ legale_select: 'por favor selecione o seu país de residência:'
+ legale_names:
+ france: França
+ italy: Itália
+ rest_of_world: Resto do mundo
+ no_such_user:
+ title: Este utilizador não existe
+ heading: O utilizador %{user} não existe
+ body: Não existe nenhum utilizador com o nome %{user}. Verifique se o endereço
+ está correto ou talvez a hiperligação que clicou esteja errada.
+ view:
+ my diary: Meu diário
+ new diary entry: adicionar entrada no meu diário
+ my edits: As minhas edições
+ my traces: Meus trilhos GPS
+ my notes: Erros reportados por mim
+ my messages: As Minhas Mensagens
+ my profile: Meu Perfil
+ my settings: As minhas configurações
+ my comments: Meus comentários
+ oauth settings: configurações do OAuth
+ blocks on me: Bloqueios sobre mim
+ blocks by me: Bloqueados por mim
+ send message: Enviar mensagem
+ diary: Diário
+ edits: Edições
+ traces: Trilhos
+ notes: Erros reportados no mapa
+ remove as friend: Remover amigo
+ add as friend: Adicionar aos amigos
+ mapper since: 'Mapeando desde:'
+ ago: (%{time_in_words_ago} atrás)
+ ct status: 'Termos de Colaborador:'
+ ct undecided: Indeciso
+ ct declined: Rejeitou
+ ct accepted: Aceite há %{ago}
+ latest edit: 'Última edição %{ago}:'
+ email address: 'E-mail:'
+ created from: 'Criado em:'
+ status: 'Estado:'
+ spam score: 'Pontuação de Spam:'
+ description: Descrição
+ user location: Localização do utilizador
+ if set location: Indique a sua localização habitual na página %{settings_link}
+ para ver outros editores nas redondezas.
+ settings_link_text: configurações
+ your friends: Os seus amigos
+ no friends: Ainda não adicionou nenhum amigo.
+ km away: '%{count}km de distância'
+ m away: '%{count}m de distância'
+ nearby users: Outros editores nas redondezas
+ no nearby users: Não existem outros editores nas redondezas que admitam que
+ estão nas redondezas.
+ role:
+ administrator: Este utilizador é administrador
+ moderator: Este utilizador é um moderador
+ grant:
+ administrator: Dar acesso de administrador
+ moderator: Dar acesso de moderador
+ revoke:
+ administrator: Retirar acesso de administrador
+ moderator: Retirar acesso de moderador
+ block_history: bloqueios recebidos
+ moderator_history: bloqueios feitos
+ comments: Comentários
+ create_block: bloquear este utilizador
+ activate_user: ativar este utilizador
+ deactivate_user: desativar este utilizador
+ confirm_user: confirmar esse utilizador
+ hide_user: ocultar este utilizador
+ unhide_user: descobrir este utilizador
+ delete_user: eliminar este utilizador
+ confirm: Confirmar
+ friends_changesets: alterações dos amigos
+ friends_diaries: ver as entradas em diários dos amigos
+ nearby_changesets: Ver alterações de editores das redondezas
+ nearby_diaries: entradas em diários de editores das redondezas
+ popup:
+ your location: Tua localização
+ nearby mapper: Mapeador das redondezas
+ friend: Amigo
+ account:
+ title: Editar conta
+ my settings: Minhas definições
+ current email address: 'E-mail Actual:'
+ new email address: 'Novo E-mail:'
+ email never displayed publicly: (nunca é mostrado publicamente)
+ external auth: 'Início de sessão externo:'
+ openid:
+ link: http://wiki.openstreetmap.org/wiki/OpenID
+ link text: o que é isto?
+ public editing:
+ heading: 'Edição pública:'
+ enabled: Ativado. Não anónimo e pode editar.
+ enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
+ enabled link text: o que é isto?
+ disabled: Desativado e não pode editar. Todas as edições anteriores são anónimas.
+ disabled link text: porque não posso editar?
+ public editing note:
+ heading: Edição pública
+ text: Neste momento as suas edições são anónimas e as outras pessoas não lhe
+ podem enviar mensagens nem ver onde se encontra. Para mostrar as suas edições
+ e permitir que o contactem através do OpenStreetMap, clique na ligação seguinte.
+ <b>Desde a migração 0.6 da API, apenas utilizadores com edições públicas
+ podem editar dados do mapa</b>. (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">mais
+ informações</a>).<ul><li>Ao tornar as suas edições públicas o seu endereço
+ de email não será revelado.</li><li>Esta ação não pode ser revertida e todos
+ os novos utilizadores têm as edições disponibilizadas publicamente.</li></ul>
+ contributor terms:
+ heading: 'Termos de Colaborador:'
+ agreed: Aceitou os novos Termos de Colaborador.
+ not yet agreed: Ainda não aceitou os novos Termos de Colaborador.
+ review link text: Por favor clique na ligação seguinte para rever e aceitar
+ os Termos de Colaborador.
+ agreed_with_pd: Também declarou que as suas edições são disponibilizadas em
+ Domínio Público.
+ link text: o que é isto?
+ profile description: 'Descrição do perfil:'
+ preferred languages: 'Línguas preferidas:'
+ preferred editor: 'Editor Preferido:'
+ image: 'Imagem:'
+ gravatar:
+ gravatar: Usar imagem do site Gravatar
+ link text: o que é isto?
+ new image: Adicionar imagem
+ keep image: Manter a imagem atual
+ delete image: Remover a imagem atual
+ replace image: Substituir a imagem atual
+ image size hint: (funcionam melhor as imagens quadradas com pelo menos 100x100
+ pixeis)
+ home location: Localização Habitual
+ no home location: Não inseriu a sua localização habitual.
+ latitude: 'Latitude:'
+ longitude: 'Longitude:'
+ update home location on click: Atualizar local onde me encontro normalmente
+ quando clico no mapa?
+ save changes button: Gravar Alterações
+ make edits public button: Tornar todas as minhas edições públicas
+ return to profile: Regressar ao perfil
+ flash update success confirm needed: As informações do utilizador foram atualizadas
+ com sucesso. Verifica o teu e-mail para confirmar o teu endereço de e-mail.
+ flash update success: As informações do utilizador foram atualizadas com sucesso.
+ confirm:
+ heading: Verifique o seu email!
+ introduction_1: Enviámos-lhe um e-mail de confirmação.
+ introduction_2: Confirme a sua conta clicando no link no e-mail e assim poderá
+ iniciar o mapeamento.
+ press confirm button: Pressione o botão de confirmação abaixo para ativar a
+ tua conta.
+ button: Confirmar
+ success: Conta confirmada, obrigado por te registares!
+ already active: Esta conta já foi confirmada.
+ unknown token: Esse código de confirmação expirou ou não existe.
+ reconfirm_html: Se precisar lhe reenviemos o e-mail de confirmação, <a href="%{reconfirm}">clique
+ aqui</a>.
+ confirm_resend:
+ success: Já enviámos um email de confirmação para %{email} e mal confirme a
+ sua conta, poderá mapear.<br /><br />Caso utilize um sistema anti-spam que
+ envie pedidos de confirmação, por favor coloque na lista branca de remetentes
+ seguros o endereço webmaster@openstreetmap.org uma vez que não temos possibilidade
+ de responder a pedidos de confirmação.
+ failure: Utilizador %{name} não foi encontrado.
+ confirm_email:
+ heading: Confirmar a alteração de e-mail
+ press confirm button: Clique no botão confirmar para confirmar o seu e-mail.
+ button: Confirmar
+ success: A alteração do seu email foi confirmada!
+ failure: Um e-mail já foi confirmado com este código.
+ unknown_token: Este código de confirmação expirou ou não existe.
+ set_home:
+ flash success: Localização gravada com êxito
+ go_public:
+ flash success: Todas as suas edições são agora públicas e agora poderá editar
+ o mapa.
+ make_friend:
+ heading: Adicionar %{user} à lista de amigos?
+ button: Adicionar aos amigos
+ success: '%{name} já faz parte da sua lista de amigos!'
+ failed: Desculpe, falha ao adicionar %{name} como um amigo.
+ already_a_friend: Já é amigo de %{name}.
+ remove_friend:
+ heading: Remover %{user}da lista de amigos?
+ button: Remover amigo
+ success: '%{name} foi removido(a) da lista de seus amigos.'
+ not_a_friend: '%{name} não está na lista de seus amigos.'
+ filter:
+ not_an_administrator: É necessário ser administrador para realizar esta operação.
+ list:
+ title: Utilizadores
+ heading: Utilizadores
+ showing:
+ one: Página %{page} (%{first_item} de %{items})
+ other: Página %{page} (%{first_item}-%{last_item} de %{items})
+ summary: '%{name} criado com o ip %{ip_address} em %{date}'
+ summary_no_ip: '%{name} criado na %{date}'
+ confirm: Confirmar utilizadores selecionados
+ hide: Ocultar utilizadores selecionados
+ empty: Não foi encontrado nenhum utilizador correspondente
+ suspended:
+ title: Conta Suspensa
+ heading: Conta Suspensa
+ webmaster: administrador do site
+ body: |-
+ <p>
+ Pedimos desculpa, mas a sua conta foi automaticamente suspensa devido
+ a atividades suspeitas.
+ </p>
+ <p>
+ Esta decisão será revista brevemente por um administrador.
+ Pode contactar o %{webmaster} se desejar.
+ </p>
+ auth_failure:
+ connection_failed: Não foi possível fazer a ligação ao serviço externo de início
+ de sessão
+ invalid_credentials: As credenciais de início de sessão não são válidas
+ no_authorization_code: Sem código de autorização
+ unknown_signature_algorithm: Algoritmo de assinatura desconhecido
+ invalid_scope: Âmbito inválido
+ user_role:
+ filter:
+ not_an_administrator: Apenas os administradores podem gerir cargos, e você não
+ é administrador.
+ not_a_role: A expressão `%{role}' não é um cargo válido.
+ already_has_role: O utilizador já tem o cargo %{role}.
+ doesnt_have_role: O utilizador não tem o cargo %{role}.
+ grant:
+ title: Confirmar a concessão do cargo
+ heading: Confirmar concessão do cargo
+ are_you_sure: Tem a certeza que deseja conceder o cargo `%{role}' ao utilizador
+ `%{name}'?
+ confirm: Confirmar
+ fail: Não foi possível conceder o cargo `%{role}' ao utilizador `%{name}'. Por
+ favor verifique se o utilizador e o cargo são válidos.
+ revoke:
+ title: Confirmar revogação de cargo
+ heading: Confirmar revogação de cargo
+ are_you_sure: Tem a certeza que deseja retirar o cargo `%{role}' ao utilizador
+ `%{name}'?
+ confirm: Confirmar
+ fail: Não foi possível retirar o cargo `%{role}' ao utilizador `%{name}'. Por
+ favor verifique se o utilizador e o cargo são válidos.
+ user_block:
+ model:
+ non_moderator_update: Tem de ser um moderador para criar ou atualizar um bloqueio.
+ non_moderator_revoke: Tem de ser um moderador para revogar um bloqueio.
+ not_found:
+ sorry: Pedimos desculpa mas não foi encontrado um utilizador com o identificador
+ (ID) %{id}.
+ back: Voltar ao índice
+ new:
+ title: A criar um bloqueio em %{name}
+ heading: A criar um bloqueio em %{name}
+ reason: O motivo porque %{name} está a ser bloqueado. Por favor escreva de forma
+ calma e razoável, fornecendo o máximo de detalhes sobre a situação e tendo
+ em conta que a mensagem será visível publicamente. Note que nem todos os utilizadores
+ entendem o jargão da comunidade, por isso escreva de forma clara e compreensível
+ para qualquer outra pessoa leiga.
+ period: Por quanto tempo, a partir deste momento, o utilizador será bloqueado
+ na utilização da API.
+ submit: Criar bloqueio
+ tried_contacting: Já contactei o utilizador e pedi-lhe para parar.
+ tried_waiting: Já dei um tempo razoável para o utilizador responder a esta comunicações
+ needs_view: O utilizador necessita de autenticar-se antes deste bloqueio terminar
+ back: Ver todos os bloqueios
+ edit:
+ title: A editar o bloqueio em %{name}
+ heading: A editar o bloqueio em %{name}
+ reason: O motivo porque %{name} está a ser bloqueado. Por favor escreva de forma
+ calma e razoável, fornecendo o máximo de detalhes sobre a situação. Tenha
+ em conta que nem todos os utilizadores entendem o jargão da comunidade, por
+ isso escreva de forma clara e compreensível para qualquer outra pessoa leiga.
+ period: Por quanto tempo, a partir deste momento, o utilizador será bloqueado
+ na utilização da API.
+ submit: Atualizar o bloqueio
+ show: Ver este bloqueio
+ back: Ver todos os bloqueios
+ needs_view: O utilizador necessita de entrar na conta antes do bloqueio terminar?
+ filter:
+ block_expired: Este bloqueio já terminou e por isso não pode ser editado.
+ block_period: O período de tempo do bloqueio tem de ser um dos valores da lista
+ deslizante.
+ create:
+ try_contacting: Por favor tente contactar o utilizador antes de o bloquear e
+ dê-lhe algum tempo para responder.
+ try_waiting: Por favor dê um tempo razoável para o utilizador responder antes
+ de o bloquear.
+ flash: Bloqueou o utilizador %{name}.
+ update:
+ only_creator_can_edit: Apenas o moderador que criou este bloqueio pode editá-lo.
+ success: Bloqueio atualizado.
+ index:
+ title: Bloqueio de utilizador
+ heading: Lista de bloqueios de utilizadores
+ empty: Ainda não foram feitos bloqueios.
+ revoke:
+ title: Revocando bloqueio de %{block_on}
+ heading: Revocando bloqueio de %{block_on} por %{block_by}
+ time_future: Este bloqueio terminará em %{time}.
+ past: Este bloqueio terminou há %{time} atrás e já não pode ser revocado.
+ confirm: Tem a certeza que quer revocar este bloqueio?
+ revoke: Revogar!
+ flash: Este bloqueio foi revogado.
+ period:
+ one: 1 hora
+ other: '%{count} horas'
+ partial:
+ show: Mostrar
+ edit: Editar
+ revoke: Revogar!
+ confirm: Tem a certeza?
+ display_name: Utilizador Bloqueado
+ creator_name: Criador
+ reason: Motivo do bloqueio
+ status: Estado
+ revoker_name: Revogado por
+ not_revoked: (não revogado)
+ showing_page: Página %{page}
+ next: Seguinte »
+ previous: « Anterior
+ helper:
+ time_future: Termina em %{time}.
+ until_login: Ativo até o utilizador entrar na conta.
+ time_past: Terminou há %{time} atrás.
+ blocks_on:
+ title: Bloqueios em %{name}
+ heading: Lista de bloqueios em %{name}
+ empty: '%{name} nunca foi bloqueado(a).'
+ blocks_by:
+ title: Bloqueios por %{name}
+ heading: Lista de bloqueios feitos por %{name}
+ empty: '%{name} ainda não bloqueou ninguém.'
+ show:
+ title: '%{block_on} bloqueado por %{block_by}'
+ heading: '%{block_on} bloqueado por %{block_by}'
+ time_future: Termina em %{time}
+ time_past: Terminou há %{time} atrás
+ status: Estado
+ show: Mostrar
+ edit: Editar
+ revoke: Revogar!
+ confirm: Tem a certeza?
+ reason: 'Razão do bloqueio:'
+ back: Ver todos os bloqueios
+ revoker: 'Revogador:'
+ needs_view: O utilizador necessita de autenticar-se antes deste bloqueio terminar.
+ note:
+ description:
+ opened_at_html: Criado %{when} atrás
+ opened_at_by_html: Criado %{when} atrás por %{user}
+ commented_at_html: Atualizado %{when}
+ commented_at_by_html: Atualizado %{when} por %{user}
+ closed_at_html: Resolvido %{when} atrás
+ closed_at_by_html: Resolvido %{when} atrás por %{user}
+ reopened_at_html: Reaberto em %{when}
+ reopened_at_by_html: Reaberto %{when} por %{user}
+ rss:
+ title: Erros reportados no OpenStreetMap
+ description_area: Lista de erros reportados, comentados ou resolvidos na sua
+ área [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+ description_item: Uma fonte RSS para o erro %{id} reportado
+ opened: novo erro no mapa (perto de %{place})
+ commented: Novo comentário (perto de %{place})
+ closed: erro reportado resolvido (perto de %{place})
+ reopened: erro no mapa reaberto (perto de %{place})
+ entry:
+ comment: Comentário
+ full: Erro reportado completo
+ mine:
+ title: Erros reportados ou comentados por %{user}
+ heading: Erros reportados por %{user}
+ subheading: Erros reportados ou comentados por %{user}
+ id: Identificador
+ creator: Criador
+ description: Descrição
+ created_at: Criado em
+ last_changed: Última alteração
+ ago_html: há %{when}
+ javascripts:
+ close: Fechar
+ share:
+ title: Partilhar
+ cancel: Cancelar
+ image: Imagem
+ link: Ligação ou HTML
+ long_link: Link
+ short_link: Lig.Curta
+ embed: HTML
+ custom_dimensions: Definir dimensões personalizadas
+ format: 'Formato:'
+ scale: 'Escala:'
+ image_size: A imagem mostrará a camada padrão em
+ download: Descarregar
+ short_url: URL curto
+ include_marker: Incluir marcador
+ center_marker: Centrar o mapa no marcador
+ paste_html: Colar HTML para incorporar na página web
+ view_larger_map: Ver mapa maior
+ key:
+ title: Legenda do mapa
+ tooltip: Legenda do mapa
+ tooltip_disabled: Legenda do Mapa disponível apenas no Mapa Padrão
+ map:
+ zoom:
+ in: Aproximar
+ out: Afastar
+ locate:
+ title: Mostrar a minha localização
+ popup: Está a {distance} {unit} deste ponto
+ base:
+ standard: Mapa Padrão
+ cycle_map: Mapa de Ciclismo
+ transport_map: Transportes Públicos
+ hot: Humanitário
+ layers:
+ header: Camadas do Mapa
+ notes: Erros reportados no mapa
+ data: Dados técnicos do mapa
+ overlays: Ativar sobreposições para solucionar problemas do mapa
+ title: Camadas
+ copyright: © <a href='%{copyright_url}'>Colaboradores do OpenStreetMap</a>
+ donate_link_text: <a class='donate-attr' href='%{donate_url}'>Fazer um donativo</a>
+ site:
+ edit_tooltip: Editar o mapa
+ edit_disabled_tooltip: Área demasiado grande. Amplie para poder editar
+ createnote_tooltip: Reportar erro no mapa
+ createnote_disabled_tooltip: A área do mapa é demasiado grande. Amplie o mapa
+ para poder reportar um erro
+ map_notes_zoom_in_tooltip: Aproxime para ver erros reportados
+ map_data_zoom_in_tooltip: Aproxime para ver dados do mapa
+ queryfeature_tooltip: Consultar elementos em redor
+ queryfeature_disabled_tooltip: Aproxime a vista para consultar elementos em
+ redor
+ changesets:
+ show:
+ comment: Comentário
+ subscribe: Subscrever
+ unsubscribe: Anular subscrição
+ hide_comment: ocultar
+ unhide_comment: desocultar
+ notes:
+ new:
+ intro: Encontrou um erro ou existe algo em falta? Avise os outros mapeadores
+ para que eles possam consertar a anomalia. Basta posicionar o marcador na
+ a posição desejada e escrever uma nota que explique o problema. (Por favor,
+ não insira informações pessoais nem informação de mapas ou listas com direitos
+ de autor.)
+ add: Reportar Erro
+ show:
+ anonymous_warning: Este erro reportado inclui comentários de utilizadores
+ anónimos que devem ser confirmados por fonte independente.
+ hide: Esconder
+ resolve: Marcar como Resolvido
+ reactivate: Reabrir
+ comment_and_resolve: Gravar como Resolvido
+ comment: Gravar
+ edit_help: Mova o mapa e amplie a localização que pretende editar e depois clique
+ aqui.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicleta (GraphHopper)
+ graphhopper_foot: A pé (GraphHopper)
+ mapquest_bicycle: Bicicleta (MapQuest)
+ mapquest_car: Carro (MapQuest)
+ mapquest_foot: A pé (MapQuest)
+ osrm_car: Carro (OSRM)
+ directions: Direções
+ distance: Distância
+ errors:
+ no_route: Não foi encontrada uma rota entre os dois pontos.
+ no_place: Desculpe - não foi possível encontrar esse local.
+ instructions:
+ unnamed: sem nome
+ courtesy: Direções fornecidas por %{link}
+ time: Tempo
+ query:
+ node: Nó
+ way: Linha
+ relation: Relação
+ nothing_found: Nenhum elemento encontrado
+ error: 'Erro ao comunicar com %{server}: %{error}'
+ timeout: Tempo limite excedido ao ligar a %{server}
+ redaction:
+ edit:
+ description: Descrição
+ heading: Editar supressão
+ submit: Gravar supressão
+ title: Editar supressão
+ index:
+ empty: Não existem supressões a mostrar.
+ heading: Lista de supressões
+ title: Lista de supressões
+ new:
+ description: Descrição
+ heading: Introduza a informação da nova supressão
+ submit: Criar supressão
+ title: A criar uma nova supressão
+ show:
+ description: 'Descrição:'
+ heading: A mostrar a supressão "%{title}"
+ title: A mostrar a supressão
+ user: 'Criador:'
+ edit: Editar esta supressão
+ destroy: Remover esta supressão
+ confirm: Tem a certeza?
+ create:
+ flash: A supressão foi criada.
+ update:
+ flash: As alterações foram gravadas.
+ destroy:
+ not_empty: A supressão não está vazia. Por favor retire a supressão de todas
+ as versões pertencentes a esta supressão antes de a eliminar
+ flash: Supressão eliminada.
+ error: Ocorreu um erro ao tentar eliminar esta supressão.
+...
# Author: AMDmi3
# Author: AOleg
# Author: AZISS
+# Author: Aideih
# Author: Aleksandr Dezhin
# Author: Amire80
# Author: Andrewsh
# Author: CM3X
# Author: Calibrator
# Author: Chilin
+# Author: D1g
# Author: DCamer
+# Author: Dmitry-s93
# Author: Dr&mx
# Author: Eleferen
+# Author: Ergo
# Author: EugeneZelenko
# Author: Express2000
# Author: Ezhick
# Author: Nemo bis
# Author: Okras
# Author: Putnik
+# Author: Riliam
+# Author: Ruila
# Author: Santacloud
# Author: Spider
# Author: TarzanASG
# Author: Tourorist
+# Author: WindEwriX
# Author: XAN
# Author: Yuri Nazarov
# Author: Zverik
# Author: Александр Сигачёв
+# Author: Дмитрий
# Author: Сrower
---
ru:
relation_member: Участник отношения
relation_tag: Тег отношения
session: Сессия
- trace: ТÑ\80ек
- tracepoint: Точка трека
- tracetag: Тег трека
+ trace: Ð\9cаÑ\80Ñ\88Ñ\80Ñ\83Ñ\82
+ tracepoint: Точка маршрута
+ tracetag: Тег маршрута
user: Пользователь
user_preference: Настройки пользователя
user_token: Маркер пользователя
size: Размер
latitude: Широта
longitude: Долгота
- public: Ð\9eбÑ\89ий
+ public: Ð\9fÑ\83блиÑ\87нÑ\8bй
description: Описание
message:
sender: Отправитель
relation: Отношения (%{count})
relation_paginated: Отношения (%{x}-%{y} из %{count})
comment: Комментарии (%{count})
+ hidden_commented_by: Скрытый комментарий от %{user} <abbr title='%{exact_time}'>%{when}
+ назад</abbr>
+ commented_by: Комментарий пользователя %{user} <abbr title='%{exact_time}'>%{when}
+ назад</abbr>
changesetxml: XML пакета правок
osmchangexml: osmChange XML
feed:
new_note: Новая заметка
description: Описание
open_title: 'Необработанная заметка #%{note_name}'
- closed_title: 'Ð\9eбÑ\80абоÑ\82анная заметка #%{note_name}'
+ closed_title: 'РазÑ\80еÑ\88Ñ\91нная заметка #%{note_name}'
hidden_title: 'Скрытая заметка #%{note_name}'
open_by: Создано пользователем %{user} <abbr title='%{exact_time}'>%{when} назад</abbr>
open_by_anonymous: Создано анонимом <abbr title='%{exact_time}'>%{when} назад</abbr>
назад</abbr>
commented_by_anonymous: Комментарий анонима <abbr title='%{exact_time}'>%{when}
назад</abbr>
- closed_by: Обработана %{user} <abbr title='%{exact_time}'>%{when} назад</abbr>
- closed_by_anonymous: Обработана анонимом <abbr title='%{exact_time}'>%{when}
+ closed_by: Решена пользователем %{user} <abbr title='%{exact_time}'>%{when}
+ назад</abbr>
+ closed_by_anonymous: Разрешена анонимом <abbr title='%{exact_time}'>%{when}
назад</abbr>
- reopened_by: Обработана %{user} <abbr title='%{exact_time}'>%{when} назад</abbr>
- reopened_by_anonymous: Обработана анонимом <abbr title='%{exact_time}'>%{when}
+ reopened_by: Переоткрыта пользователем %{user} <abbr title='%{exact_time}'>%{when}
+ назад</abbr>
+ reopened_by_anonymous: Переоткрыта анонимом <abbr title='%{exact_time}'>%{when}
назад</abbr>
hidden_by: Скрыта %{user} <abbr title='%{exact_time}'>%{when} назад</abbr>
+ query:
+ title: Информация об объектах
+ introduction: Щелкните по карте, чтобы найти ближайшие объекты
+ nearby: Ближайшие объекты
+ enclosing: Местоположение
changeset:
changeset_paging_nav:
showing_page: Страница %{page}
sorry: К сожалению, список пакетов правок, который вы запросили, слишком большой
для извлечения.
rss:
+ title_all: Обсуждение пакета правок OpenStreetMap
+ title_particular: 'Обсуждение пакета правок OpenStreetMap #%{changeset_id}'
+ comment: 'Новый комментарий на пакет правок #%{changeset_id} от %{author}'
commented_at_html: Обновлена %{when} назад
commented_at_by_html: Обновлена %{when} назад %{user}
full: Полное обсуждение
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Канатная дорога
chair_lift: Кресельный канатный подъёмник
drag_lift: Якорный (бугельный) подъёмник
+ gondola: Канатная дорога
station: Станция канатного подъёмника
aeroway:
aerodrome: Аэродром
taxiway: Рулёжная дорожка
terminal: Терминал
amenity:
+ animal_shelter: Приют для животных
arts_centre: Дом искусств
atm: Банкомат
bank: Банк
bicycle_parking: Велопарковка
bicycle_rental: Прокат велосипедов
biergarten: Пивная на открытом воздухе
+ boat_rental: Прокат лодок
brothel: Бордель
bureau_de_change: Обмен валют
bus_station: Автобусная станция
car_wash: Автомойка
casino: Казино
charging_station: Станция зарядки электромобилей
+ childcare: Служба ухода за детьми
cinema: Кинотеатр
clinic: Поликлиника
+ clock: Часы
college: Колледж
community_centre: Общественный центр
courthouse: Помещение суда
food_court: Фудкорт
fountain: Фонтан
fuel: Заправка
+ gambling: Игорный дом
grave_yard: Место захоронения
gym: Фитнес-центр / Тренажёрный зал
health_centre: Оздоровительный центр
library: Библиотека
market: Магазин
marketplace: Рыночная площадь
+ monastery: Монастырь
+ motorcycle_parking: Парковка для мотоциклов
nightclub: Ночной клуб
nursery: Пансионат
nursing_home: Дом престарелых
office: Офис
parking: Стоянка
+ parking_entrance: Въезд на стоянку
pharmacy: Аптека
place_of_worship: Место поклонения
police: Милиция
veterinary: Ветеринарная клиника
village_hall: Усадьба
waste_basket: Мусорка
+ waste_disposal: Мусорный бак
youth_centre: Молодёжный центр
boundary:
administrative: Административная граница
"yes": Мост
building:
"yes": Здание
+ craft:
+ brewery: Пивоварня
+ carpenter: Плотник
+ electrician: Электрик
+ gardener: Садовник
+ painter: Художник
+ photographer: Фотограф
+ plumber: Сантехник
+ shoemaker: Сапожник
+ tailor: Портной
+ "yes": Мастерская
emergency:
+ ambulance_station: Станция скорой медицинской помощи
+ defibrillator: Дефибриллятор
+ landing_site: Место аварийной посадки
phone: Телефон экстренной связи
highway:
+ abandoned: Заброшенная дорога
bridleway: Конный путь
bus_guideway: Автобусная полоса-рельс
bus_stop: Автобусная остановка
construction: Ремонт дороги
cycleway: Велодорожка
+ elevator: Лифт
emergency_access_point: Пункт первой помощи
footway: Тротуар
ford: Брод
primary_link: Главная дорога
proposed: Проектируемая дорога
raceway: Гоночная трасса
- residential: УлиÑ\86а обÑ\8bÑ\87наÑ\8f
+ residential: Ð\94оÑ\80ога
rest_area: Зона отдыха
road: Дорога
secondary: Второстепенная дорога
tertiary: Дорога третьего класса
tertiary_link: Дорога третьего класса
track: Неофициальная грунтовка
+ traffic_signals: Светофор
trail: Тропа
trunk: Трасса
trunk_link: Развязка
unclassified: Дорога местная
unsurfaced: Дорога без покрытия
+ "yes": Дорога
historic:
archaeological_site: Раскопки
battlefield: Поле боя
boundary_stone: Пограничный камень
- building: Здание
+ building: Историческое здание
+ bunker: Бункер
castle: Крепость
church: Церковь
+ city_gate: Городские ворота
citywalls: Исторические укрепления
fort: Форт
+ heritage: Объект культурного наследия
house: Дом
icon: Икона
manor: Поместье
memorial: Памятник
mine: Рудник
monument: Памятник
+ roman_road: Римская дорога
ruins: Развалины
+ stone: Камень
tomb: Могила
tower: Башня
wayside_cross: Придорожный крест
wayside_shrine: Придорожная святыня
wreck: Остов судна
+ junction:
+ "yes": Перекрёсток
landuse:
allotments: Сады-огороды
basin: Бассейн
road: Зона дорожной сети
village_green: Зелёная деревня
vineyard: Виноградник
+ "yes": Землепользование
leisure:
beach_resort: Пляж с насаждениями
bird_hide: Засидка (пункт скрытого наблюдения за птицами)
+ club: Клуб
common: Альменда
+ dog_park: Площадка для собак
fishing: Рыбалка
+ fitness_centre: Фитнес-центр
fitness_station: Фитнес-станция
garden: Сад
golf_course: Поле для гольфа
+ horse_riding: Конная база
ice_rink: Каток
marina: Пристань для яхт
miniature_golf: Минигольф
pitch: Спортивный газон
playground: Детская игровая площадка
recreation_ground: Зона отдыха
+ resort: Курорт
sauna: Сауна
slipway: Эллинг
sports_centre: Спортивный центр
swimming_pool: Бассейн
track: Спортивная дорожка
water_park: Аквапарк
+ "yes": Досуг
+ man_made:
+ lighthouse: Маяк
+ pipeline: Трубопровод
+ tower: Башня
+ works: Фабрика
+ "yes": Искусственный
military:
airfield: Военный аэродром
barracks: Казармы
forest: Лес
geyser: Гейзер
glacier: Ледник
+ grassland: Луг
heath: Пустошь
hill: Холм
island: Остров
reef: Риф
ridge: Хребет
rock: Скала
+ saddle: Перевал
+ sand: Песок
scree: Осыпь камней
scrub: Кустарник
spring: Родник
wood: Лес
office:
accountant: Бухгалтер
+ administrative: Администрация
architect: Архитектор
company: Компания
employment_agency: Агентство занятости
travel_agent: Туристическое агентство
"yes": Офисы
place:
+ allotments: Сады-огороды, дачные участки
+ block: Квартал
airport: Аэропорт
city: Город
country: Страна
town: Городок
unincorporated_area: Загородная зона
village: Деревня
+ "yes": Местоположение
railway:
abandoned: Разобранные железнодорожные пути
construction: Ремонт ж/д путей
"yes": Магазин
tourism:
alpine_hut: Альпийский Домик
+ apartment: Квартира
artwork: Произведения искусства
attraction: Аттракцион
bed_and_breakfast: Полупансион
camp_site: Лагерь
caravan_site: Стоянка для домов на колёсах
chalet: Шале
+ gallery: Галерея
guest_house: Домик для гостей
hostel: Хостел
hotel: Гостиница
wadi: Высохшее русло
waterfall: Водопад
weir: Плотина
+ "yes": Водный маршрут
admin_levels:
level2: Граница страны
level4: Граница штата, субъекта
results:
no_results: Ничего не найдено
more_results: Ещё результаты
- distance:
- one: около %{count} км
- zero: менее 1 км
- other: около %{count} км
- direction:
- south_west: юго-западнее
- south: южнее
- south_east: юго-восточнее
- east: восточнее
- north_east: северо-восточнее
- north: севернее
- north_west: северо-западнее
- west: западнее
layouts:
logo:
alt_text: Логотип OpenStreetMap
url: /welcome
title: Добро пожаловать на OSM
description: Начните с этого краткого руководства, охватывающего основы OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/RU:%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BD%D0%BE%D0%B2%D0%B8%D1%87%D0%BA%D0%B0
+ title: Руководство для начинающих
+ description: Сообщество поддерживает руководство для начинающих.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Задать вопрос или найти ответы на сайте вопросов и ответов OSM.
+ mailing_lists:
+ title: Списки рассылок
+ forums:
+ title: Форумы
+ irc:
+ title: IRC
+ switch2osm:
+ title: switch2osm
+ description: Помощь компаниям и организациям в переходе на OpenStreetMap карты
+ и другие услуги.
wiki:
url: http://wiki.openstreetmap.org/wiki/RU:Main_Page
title: wiki.openstreetmap.org
земель для проверки того, что данные OSM являются точными и актуальными.
community_driven_title: Силами сообщества
community_driven_html: |-
- СообÑ\89еÑ\81Ñ\82во OpenStreetMap â\80\94 Ñ\80азнообÑ\80азное, неÑ\80авнодÑ\83Ñ\89ное и растущее с каждым днём.
+ СообÑ\89еÑ\81Ñ\82во OpenStreetMap â\80\94 Ñ\80азнообÑ\80азное, неÑ\80авнодÑ\83Ñ\88ное и растущее с каждым днём.
Наши участники — это энтузиасты-картографы, ГИС-профессионалы, инженеры, содержащие серверы OSM, люди, отмечающие районы, пострадавшие от бедствий, и многие другие.
Чтобы узнать больше о сообществе, читайте <a href='%{diary_path}'>дневники участников</a>,
<a href='http://blogs.openstreetmap.org/'>блоги сообщества</a> и сайт <a href='http://www.osmfoundation.org/'>Фонда OSM</a>.
open_data_html: 'OpenStreetMap являются <i>открытыми данными</i>: вы можете использовать
их для любых целей до тех пор, пока вы указываете авторские права OpenStreetMap
и его участников. Если вы изменяете данные или определенным образом основываетесь
- на ниÑ\85, вÑ\8b можеÑ\82е Ñ\80аÑ\81пÑ\80оÑ\81Ñ\82Ñ\80анÑ\8fÑ\82Ñ\8c Ñ\81вой Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82 Ñ\82олÑ\8cко под Ñ\82ой же лиÑ\86ензии.
+ на ниÑ\85, вÑ\8b можеÑ\82е Ñ\80аÑ\81пÑ\80оÑ\81Ñ\82Ñ\80анÑ\8fÑ\82Ñ\8c Ñ\81вой Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82 Ñ\82олÑ\8cко под Ñ\82ой же лиÑ\86ензией.
Смотрите <a href=''%{copyright_path}''>Авторские права и Страница лицензии</a>
для более подробной информации.'
+ legal_title: Юридический
partners_title: Партнёры
notifier:
diary_comment_notification:
commented_note: '%{commenter} оставил комментарий к одной из картографических
заметок, которую вы тоже комментировали. Заметка находится около %{place}.'
closed:
- subject_own: '[OpenStreetMap] %{commenter} обработал вашу заметку'
+ subject_own: '[OpenStreetMap] %{commenter} разрешил вашу заметку'
subject_other: '[OpenStreetMap] %{commenter} обработал интересную вам заметку'
your_note: '%{commenter} разрешил одну из ваших отметок на карте недалеко
от %{place}.'
commented_note: '%{commenter} разрешил одну из отметок, которые вы комментировали.
Отметка недалеко от %{place}.'
reopened:
- subject_own: '[OpenStreetMap] %{комментатор} переоткрыл вашу заметку'
- subject_other: '[OpenStreetMap] %{комментатор} переоткрыл интересную вам заметку'
+ subject_own: '[OpenStreetMap] %{commenter} переоткрыл вашу заметку'
+ subject_other: '[OpenStreetMap] %{commenter} переоткрыл интересную вам заметку'
your_note: '%{commenter} переоткрыл одну из ваших отметок на карте недалеко
от %{place}.'
commented_note: '%{commenter} переоткрыл одну из отметок, которые вы комментировали.
changeset_comment_notification:
greeting: Привет,
commented:
+ subject_own: '[OpenStreetMap] %{commenter} прокомментировал один из ваших
+ пакетов правок'
+ subject_other: '[OpenStreetMap] %{commenter} прокомментировал пакет правок,
+ который вас интересует'
+ your_changeset: '%{commenter} оставил комментарий на один из ваших пакетов
+ правок, созданный %{time}'
+ commented_changeset: '%{commenter} оставил комментарий к пакету правок, который
+ вы отслеживаете и созданный %{changeset_author} %{time}'
partial_changeset_with_comment: с комментарием '%{changeset_comment}'
partial_changeset_without_comment: без комментария
+ details: Дополнительные сведения о пакете правок можно найти на %{url}.
message:
inbox:
title: Входящие
close: Закрыть
search:
search: Поиск
+ get_directions: Проложить маршрут
+ get_directions_title: Поиск маршрута между двумя точками
+ from: Старт
+ to: Финиш
where_am_i: Где я?
where_am_i_title: Опишите ваше местоположение, воспользовавшись инструментом
поиска
- submit_text: Ð\9fеÑ\80ейти
+ submit_text: Ð\9dайти
key:
table:
entry:
register now: Зарегистрируйтесь
with username: 'У вас уже есть учётная запись OpenStreetMap? Пожалуйста, войдите
с вашим именем пользователя и паролем:'
- with openid: 'Вы также можете использовать для входа ваш OpenID:'
new to osm: Впервые на OpenStreetMap?
to make changes: Чтобы вносить изменения в данные OpenStreetMap, вы должны иметь
учётную запись.
подозрительной активности.<br />Пожалуйста, свяжитесь с <a href="%{webmaster}">веб-мастером</a>,
если вы хотите выяснить подробности.
auth failure: Извините, вход с этими именем или паролем невозможен.
- openid missing provider: К сожалению, не удалось связаться с вашим поставщиком
- OpenID
- openid invalid: Извините, похоже, что ваш OpenID введён неправильно
openid_logo_alt: Войти с помощью OpenID
- openid_providers:
+ auth_providers:
openid:
title: Войти с помощью OpenID
alt: Войти с помощью OpenID URL
google:
- title: Войти с помощью Google
+ title: Войти с помощью Google
alt: Войти с помощью Google OpenID
yahoo:
title: Войти с помощью Yahoo
display name: 'Отображаемое имя:'
display name description: Ваше имя, как оно будет видно другим пользователям.
Вы сможете изменить его позже в настройках.
- openid: '%{logo} OpenID:'
password: 'Пароль:'
confirm password: 'Повторите пароль:'
- use openid: Или используйте для входа %{logo} OpenID
- openid no password: При использовании OpenID пароль не требуется, но некоторым
- дополнительным инструменты и серверам он всё-таки нужен.
- openid association: |-
- <p>Ваш OpenID ещё не связан с учётной записью OpenStreetMap.</p>
- <ul>
- <li>Если вы новичок на OpenStreetMap, пожалуйста, создайте новую учётную запись, используя приведённую ниже форму.</li>
- <li>
- Если у вас уже есть учётная запись, вы можете войти
- используя ваше имя пользователя и пароль, а затем связать учётную запись
- с вашим OpenID через меню настроек.
- </li>
- </ul>
continue: Зарегистрироваться
terms accepted: Спасибо за принятие новых условий участия!
terms declined: Нам жаль, что вы решили не принимать новые условия участия.
nearby_diaries: дневники соседей
popup:
your location: Ваше местоположение
- nearby mapper: Ð\91лижайÑ\88ий полÑ\8cзоваÑ\82елÑ\8c
+ nearby mapper: Ð\91лижайÑ\88ий каÑ\80Ñ\82огÑ\80аÑ\84
friend: Друг
account:
title: Изменить учетную запись
current email address: 'Текущий адрес электронной почты:'
new email address: 'Новый адрес электронной почты:'
email never displayed publicly: (не будет показан)
+ external auth: 'Внешняя аутентификация:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/RU:OpenID
link text: что это?
public editing:
править карту.
press confirm button: Нажмите кнопку ниже, чтобы активировать вашу учетную запись.
button: Подтвердить
+ success: Ваша учётная запись подтверждена, спасибо за регистрацию!
already active: Эта учётная запись уже подтверждена.
unknown token: Такой код подтверждения истек или не существует.
reconfirm_html: Если хотите, чтобы мы выслали ещё одно подтверждение по электронной
press confirm button: Нажмите кнопку подтверждения чтобы подтвердить ваш новый
адрес электронной почты.
button: Подтвердить
- success: Ð\92аÑ\88 адÑ\80еÑ\81 Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82Ñ\8b подÑ\82веÑ\80ждÑ\91н, Ñ\81паÑ\81ибо за Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8e!
+ success: Ð\92аÑ\88 адÑ\80еÑ\81 Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82Ñ\8b бÑ\8bл Ñ\83Ñ\81пеÑ\88но изменÑ\91н!
failure: Адрес электронной почты уже был подтверждён этим токеном.
+ unknown_token: Такой код подтверждения истёк или не существует.
set_home:
flash success: Домашнее местоположение сохранено
go_public:
Это решение может быть вскоре пересмотрено администратором, или
вы можете связаться с %{webmaster}, если вы хотите это обсудить.
</p>
+ auth_failure:
+ invalid_credentials: Недопустимые учётные данные для аутентификации
user_role:
filter:
not_an_administrator: Только администраторы могут управлять ролями пользователей,
heading: '%{block_on}, наложил блокировку: %{block_by}'
time_future: Заканчивается %{time}
time_past: Закончилась %{time} назад
+ ago: '%{time} назад'
status: Состояние
show: Показывать
edit: Изменить
title: Заметки, созданные или прокомментированный участником %{user}
heading: Заметки участника %{user}
subheading: Заметки, созданные или прокомментированные участником %{user}
- id: Ð\98Ð\94
+ id: Ð\98денÑ\82иÑ\84икаÑ\82оÑ\80
creator: Автор
description: Описание
created_at: Создана
createnote_disabled_tooltip: Приблизьте карту, чтобы добавить заметку
map_notes_zoom_in_tooltip: Увеличьте масштаб, чтобы увидеть примечания к карте
map_data_zoom_in_tooltip: Увеличьте масштаб, чтобы увидеть данные карты
+ queryfeature_tooltip: Информация об объектах
+ queryfeature_disabled_tooltip: Приблизьте карту для информации об объектах
changesets:
show:
comment: Комментарий
anonymous_warning: Эта заметка содержит комментарии анонимных участников.
Требуется независимая проверка сведений.
hide: Скрыть
- resolve: Ð\9eбÑ\80абоÑ\82ана
+ resolve: РазÑ\80еÑ\88иÑ\82Ñ\8c
reactivate: Переоткрыть
comment_and_resolve: Прокомментировать и обработать
comment: Прокомментировать
edit_help: Передвиньте карту и увеличьте место, которые вы хотите править, затем
кликните здесь.
+ directions:
+ engines:
+ graphhopper_bicycle: На велосипеде (GraphHopper)
+ graphhopper_foot: Пешком (GraphHopper)
+ mapquest_bicycle: На велосипеде (MapQuest)
+ mapquest_car: На машине (MapQuest)
+ mapquest_foot: Пешком (MapQuest)
+ osrm_car: На машине (OSRM)
+ directions: Маршрут
+ distance: Длина пути
+ errors:
+ no_route: Не удалось найти маршрут между этими двумя точками.
+ no_place: К сожалению, данное место не найдено.
+ instructions:
+ unnamed: без имени
+ courtesy: Маршрут предоставлен %{link}
+ time: Время
query:
node: Точка
way: Линия
relation: Отношение
+ nothing_found: Объектов поблизости нет
error: 'Ошибка связи с %{server}: %{error}'
timeout: Тайм-аут обращения к %{server}
redaction:
--- /dev/null
+# Messages for Sicilian (sicilianu)
+# Exported from translatewiki.net
+# Export driver: phpyaml
+# Author: Gmelfi
+# Author: Pippinu
+# Author: SurdusVII
+---
+scn:
+ time:
+ formats:
+ friendly: '%e %B %Y ê %H:%M'
+ activerecord:
+ models:
+ acl: Lista di cuntrollu d’accessu
+ changeset: Gruppu di canciamenti
+ changeset_tag: Etichetta dû gruppu di canciamenti
+ country: Paìsi
+ diary_comment: Cummentu ntô diariu
+ diary_entry: Vuci dû diariu
+ friend: Amicu
+ language: Lingua
+ message: Missaggiu
+ node: Gruppu
+ node_tag: Etichetta dû gruppu
+ notifier: Nutìfica
+ old_node: Gruppu vecchiu
+ old_node_tag: Etichetta vecchia dû gruppu
+ old_relation: Rilazzioni vecchia
+ old_relation_member: Membru vecchiu dâ rilazzioni
+ old_relation_tag: Etichetta vecchia dâ rilazzioni
+ old_way: Caminu vecchiu
+ old_way_node: Gruppu vecchiu dû caminu
+ old_way_tag: Etichetta vecchia dû caminu
+ relation: Rilazzioni
+ relation_member: Membru dâ rilazzioni
+ relation_tag: Etichetta dâ rilazzioni
+ session: Sissioni
+ trace: Tracciatu
+ tracepoint: Puntu dû tracciatu
+ tracetag: Etichetta dû tracciatu
+ user: Utenti
+ user_preference: Prifirenza di l’utenti
+ user_token: Lassa-passari ill’utenti
+ way: Caminu
+ way_node: Gruppu dû caminu
+ way_tag: Etichetta dû caminu
+ attributes:
+ diary_comment:
+ body: Corpu
+ diary_entry:
+ user: Utenti
+ title: Oggettu
+ latitude: Latitùdini
+ longitude: Longitùdini
+ language: Lingua
+ friend:
+ user: Utenti
+ friend: Amicu
+ trace:
+ user: Utenti
+ visible: Visìbbili
+ name: Nomu
+ size: Grannizza
+ latitude: Latitùdini
+ longitude: Longitùdini
+ public: Pùbblicu
+ description: Discrizzioni
+ message:
+ sender: Mittenti
+ title: Oggettu
+ body: Corpu
+ recipient: Distinatariu
+ user:
+ email: Posta elittrònica
+ active: Attivu
+ display_name: Nomu mmustratu
+ description: Discrizzioni
+ languages: Lingui
+ pass_crypt: Palora d’òrdini
+ editor:
+ default: Pridifinutu (com’ad ora %{name})
+ potlatch:
+ name: Potlatch 1
+ description: Potlatch 1 (editor ntô browser)
+ id:
+ name: iD
+ description: iD (editor ntô browser)
+ potlatch2:
+ name: Potlatch 2
+ description: Potlatch 2 (editor ntô browser)
+ remote:
+ name: Telicumannu
+ description: Telicumannu (JOSM or Merkaartor)
+ browse:
+ created: Criatu
+ closed: Chiudutu
+ created_html: Criatu <abbr title='%{title}'>%{time} fa</abbr>
+ closed_html: Chiudutu <abbr title='%{title}'>%{time} fa</abbr>
+ created_by_html: Criatu <abbr title='%{title}'>%{time} fa</abbr> di %{user}
+ deleted_by_html: Cancillatu <abbr title='%{title}'>%{time} fa</abbr> di %{user}
+ edited_by_html: Canciatu <abbr title='%{title}'>%{time} fa</abbr> di %{user}
+ closed_by_html: Chiudutu <abbr title='%{title}'>%{time} fa</abbr> di %{user}
+ version: Virsioni
+ in_changeset: Gruppu di canciamenti
+ anonymous: anònimu
+ no_comment: (nuḍḍu cummentu)
+ part_of: Fa’ parti di
+ download_xml: Scàrrica ntô furmatu XML
+ view_history: Talìa a cronuluggìa
+ view_details: Talìa i dittagghî
+ location: 'Locu:'
+ changeset:
+ title: 'Gruppu di canciamenti: %{id}'
+ belongs_to: Auturi
+ node: Gruppa (%{count})
+ node_paginated: Gruppa (%{x}-%{y} di %{count})
+ way: Camini (%{count})
+ way_paginated: Camini (%{x}-%{y} di %{count})
+ relation: Rilazzioni (%{count})
+ relation_paginated: Rilazzioni (%{x}-%{y} di %{count})
+ comment: Cummenti (%{count})
+ hidden_commented_by: Cummentu mmucciatu di %{user} <abbr title='%{exact_time}'>%{when}
+ fa</abbr>
+ commented_by: Cummentu di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ changesetxml: XML dû gruppu di canciamenti
+ osmchangexml: osmChange XML
+ feed:
+ title: Gruppu di canciamenti %{id}
+ title_comment: Gruppu di canciamenti %{id} - %{comment}
+ join_discussion: Pi’ participari ntâ discussioni trasi
+ discussion: Discussioni
+ node:
+ title: 'Gruppu: %{name}'
+ history_title: 'Cronuluggìa dû gruppu: %{name}'
+ way:
+ title: 'Caminu: %{name}'
+ history_title: 'Cronuluggìa dû caminu: %{name}'
+ nodes: Gruppa
+ also_part_of:
+ one: parti dû caminu %{related_ways}
+ other: parti dî camini %{related_ways}
+ relation:
+ title: 'Rilazzioni: %{name}'
+ history_title: 'Cronuluggìa dâ rilazzioni: %{name}'
+ members: Membri
+ relation_member:
+ entry_role: '%{type} %{name} comu %{role}'
+ type:
+ node: Gruppu
+ way: Caminu
+ relation: Rilazzioni
+ containing_relation:
+ entry: Rilazzioni %{relation_name}
+ entry_role: Rilazzioni %{relation_name} (comu %{relation_role})
+ not_found:
+ sorry: 'Purtroppu, %{type} #%{id} nun si potti truvari.'
+ type:
+ node: u gruppu
+ way: u caminu
+ relation: a rilazzioni
+ changeset: u gruppu di canciamenti
+ timeout:
+ sorry: Purtroppu, cci vosi troppu tempu pi’ pigghiari i dati %{type} cu’ id
+ %{id}.
+ type:
+ node: dû gruppu
+ way: dû caminu
+ relation: dâ rilazzioni
+ changeset: dû gruppu di canciamenti
+ redacted:
+ redaction: Occultamentu %{id}
+ message_html: A virsioni %{version} di %{type} nun si po’ mmustrari picchì fu’
+ occultata. Pi’ favuri talìa %{redaction_link} pî dittagghî.
+ type:
+ node: stu gruppu
+ way: stu caminu
+ relation: sta rilazzioni
+ start_rjs:
+ feature_warning: Si vannu a’ carricari %{num_features} elimenti, e sta cosa
+ ti purrìa rallintari u browser o puru bluccàrilu. Si’ sicuru chi’ voi mmustrari
+ sti dati?
+ load_data: Càrrica i dati
+ loading: Carricamentu...
+ tag_details:
+ tags: Etichetti
+ wiki_link:
+ key: A pàggina dâ wiki chi’ discrivi l’etichetta %{key}
+ tag: A pàggina dâ wiki chi’ discrivi l’etichetta %{key}=%{value}
+ wikidata_link: U suggettu %{page} supra a’ Wikidata
+ wikipedia_link: L’artìculu %{page} supra a’ Wikipedia
+ telephone_link: Chiama u %{phone_number}
+ note:
+ title: 'Nota: %{id}'
+ new_note: Nota nova
+ description: Discrizzioni
+ open_title: 'Nota nun risulvuta #%{note_name}'
+ closed_title: 'Nota risulvuta #%{note_name}'
+ hidden_title: 'Nota mmucciata #%{note_name}'
+ open_by: Criata di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ open_by_anonymous: Criata di n’anònimu <abbr title='%{exact_time}'>%{when} fa</abbr>
+ commented_by: Cummentu di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ commented_by_anonymous: Cummentu di n’anònimu <abbr title='%{exact_time}'>%{when}
+ fa</abbr>
+ closed_by: Risulvuta di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ closed_by_anonymous: Risulvuta di n’anònimu <abbr title='%{exact_time}'>%{when}
+ fa</abbr>
+ reopened_by: Riapruta di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ reopened_by_anonymous: Riapruta di n’anònimu <abbr title='%{exact_time}'>%{when}
+ fa</abbr>
+ hidden_by: Mmucciata di %{user} <abbr title='%{exact_time}'>%{when} fa</abbr>
+ query:
+ title: Risciduta di l’elimenti
+ introduction: Clicca supra â cartina pi’ circari l’elimenti vicini.
+ nearby: Elimenti vicini
+ enclosing: Elimenti chi’ cuntènunu
+ changeset:
+ changeset_paging_nav:
+ showing_page: Pàggina %{page}
+ next: Appressu »
+ previous: « Prima
+ changeset:
+ anonymous: Anònimu
+ no_edits: (nuḍḍu canciamentu)
+ view_changeset_details: Ammustra i dittagghî dû gruppu di canciamenti
+ changesets:
+ id: ID
+ saved_at: Sarvatu u
+ user: Utenti
+ comment: Cummentu
+ area: Aria
+ list:
+ title: Gruppi di canciamenti
+ title_user: Gruppi di canciamenti di %{user}
+ title_friend: Gruppi di canciamenti dî to amici
+ title_nearby: Gruppi di canciamenti di l’utenti vicini
+ empty: Nuḍḍu gruppu di canciamenti truvatu.
+ empty_area: Nuḍḍu gruppu di canciamenti nta st’aria.
+ empty_user: Nuḍḍu gruppu di canciamenti fattu di st’utenti.
+ no_more: Nuḍḍu autru gruppu di canciamenti truvatu.
+ no_more_area: Nuḍḍu autru gruppu di canciamenti nta st’aria.
+ no_more_user: Nuḍḍu autru gruppu di canciamenti fattu di st’utenti.
+ load_more: Carricànni autri
+ timeout:
+ sorry: Purtroppu, cci vosi troppu tempu pi’ pigghiari a lista dî gruppi di canciamenti
+ ch’addumannasti.
+ rss:
+ title_all: Discussioni supra ô gruppu di canciamenti di OpenStreetMap
+ title_particular: 'Discussioni supra ô gruppu di canciamenti di OpenStreetMap
+ #%{changeset_id}'
+ comment: 'Cummentu novu supra ô gruppu di canciamenti #%{changeset_id} di %{author}'
+ commented_at_html: Aggiurnatu %{when} fa
+ commented_at_by_html: Aggiurnatu %{when} fa di %{user}
+ full: Discussioni intera
+ diary_entry:
+ new:
+ title: Vuci nova dû diariu
+ list:
+ title: Diarî di l’utenti
+ title_friends: Diarî di l’amici
+ title_nearby: Diarî di l’utenti vicini
+ user_title: Diariu di %{user}
+ in_language_title: Vuci di diariu in %{language}
+ new: Vuci nova dû diariu
+ new_title: Scrivi na vuci nova ntô to diariu di l’utenti
+ no_entries: Nuḍḍa vuci ntô diariu
+ recent_entries: Vuci di diariu ricenti
+ older_entries: Vuci cchiu’ vecchî
+ newer_entries: Vuci cchiu’ novi
+ edit:
+ title: Cancia sta vuci dû diariu
+ subject: 'Oggettu:'
+ body: 'Corpu:'
+ language: 'Lingua:'
+ location: 'Locu:'
+ latitude: 'Latitùdini:'
+ longitude: 'Longitùdini:'
+ use_map_link: adòpira a cartina
+ save_button: Sarva
+ marker_text: Locu dâ vuci dû diariu
+ view:
+ title: Diariu di %{user} | %{title}
+ user_title: Diariu di %{user}
+ leave_a_comment: Lassa nu cummentu
+ login_to_leave_a_comment: Pi’ lassari cummenti %{login_link}
+ login: trasi
+ save_button: Sarva
+ no_such_entry:
+ title: Nuḍḍa vuci dû diariu currispunni
+ heading: 'Nuḍḍa vuci havi l’id: %{id}'
+ body: Purtroppu nun cc’è nuḍḍa vuci dû diariu o puru cummentu chi’ havi l’id
+ %{id}. Pi’ favuri cuntrolla chi’ scrivisti bonu; o puru po’ jèssiri chi’ u
+ culligamentu chi’ cliccasti è sbagghiatu.
+ diary_entry:
+ posted_by: Pubblicatu di %{link_user} u %{created} in %{language_link}
+ comment_link: Cummenta sta vuci
+ reply_link: Rispunni a’ sta vuci
+ comment_count:
+ zero: Nuḍḍu cummentu
+ one: '%{count} cummentu'
+ other: '%{count} cummenti'
+ edit_link: Cancia sta vuci
+ hide_link: Mmuccia sta vuci
+ confirm: Cunfirma
+ diary_comment:
+ comment_from: Cummentu di %{link_user} u %{comment_created_at}
+ hide_link: Mmuccia stu cummentu
+ confirm: Cunfirma
+ location:
+ location: 'Locu:'
+ view: Talìa
+ edit: Cancia
+ feed:
+ user:
+ title: Vuci dû diariu di OpenStreetMap di %{user}
+ description: Vuci ricenti dû diariu di OpenStreetMap di %{user}
+ language:
+ title: Vuci dû diariu di OpenStreetMap in %{language_name}
+ description: Vuci ricenti dû diariu di OpenStreetMap in %{language_name}
+ all:
+ title: Vuci dû diariu di OpenStreetMap
+ description: Vuci ricenti dû diariu di l’utenti di OpenStreetMap
+ comments:
+ has_commented_on: '%{display_name} cummintàu i siguenti vuci dû diariu'
+ post: Pùbblica
+ when: Quannnu
+ comment: Cummentu
+ ago: '%{ago} fa'
+ newer_comments: Cummenti cchiu’ novi
+ older_comments: Cummenti cchiu’ vecchî
+ export:
+ title: Espurtazzioni
+ start:
+ area_to_export: Aria di espurtari
+ manually_select: Scegghî manualmenti n’aria diffirenti
+ format_to_export: Furmatu di espurtari
+ osm_xml_data: Dati XML di OpenStreetMap
+ map_image: Mmàgini dâ cartina (ammustra u stratu standard)
+ embeddable_html: HTML ncurpuràbbili
+ licence: Licenza
+ export_details: I dati di OpenStreetMap sunnu sutta a licenza <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
+ Data Commons Open Database License</a> (ODbL).
+ too_large:
+ advice: 'Si’ l’espurtazzioni ccassupra nun rinesci, poi pruvari cu’ una dî
+ fonti ccassutta:'
+ body: St’aria è troppu granni p’espurtàrila comu Dati XML di OpenStreetMap.
+ Pi’ favuri zumma, o scegghî n’aria cchiu’ picciriḍḍa, o puru pû scarricamentu
+ massizzu di dati adòpira una dî fonti ccassutta.
+ planet:
+ title: Pianeta OSM
+ description: Copî aggiurnati rigularmenti dâ basi di dati cumpleta di OpenStreetMap
+ overpass:
+ title: API Overpass
+ description: Scàrrica stu riquatru dûn mirror dâ basi di dati di OpenStreetMap
+ geofabrik:
+ title: Scarricamenti dâ Geofabrik
+ description: Estratti di cuntinenti, paìsi, e na silizzioni di città aggiurnati
+ rigularmenti
+ metro:
+ title: Metro Extracts
+ description: Estratti dî principali città dû munnu e ill’àrii circustanti
+ other:
+ title: Autri fonti
+ description: Autri fonti elincati ntâ wiki di OpenStreetMap
+ options: Opzioni
+ format: Furmatu
+ scale: Scala
+ max: max
+ image_size: Grannizza dâ mmàggini
+ zoom: Ngrannimentu
+ add_marker: Agghiunci un signu ntâ cartina
+ latitude: 'Lat:'
+ longitude: 'Lon:'
+ output: Pruduttu
+ paste_html: Ncoḍḍa l’HTML pi’ncurpurari ntôn situ web
+ export_button: Esporta
+ geocoder:
+ search:
+ title:
+ latlon: Risultati di <a href="http://openstreetmap.org/">Nternu</a>
+ us_postcode: Risultati di <a href="http://geocoder.us/">Geocoder.us</a>
+ uk_postcode: Risultati di <a href="http://www.npemap.org.uk/">NPEMap / FreeThe
+ Postcode</a>
+ ca_postcode: Risultati di <a href="http://geocoder.ca/">Geocoder.CA</a>
+ osm_nominatim: Risultati di <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Risultati di <a href="http://www.geonames.org/">GeoNames</a>
+ osm_nominatim_reverse: Risultati di <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames_reverse: Risultati di <a href="http://www.geonames.org/">GeoNames</a>
+ search_osm_nominatim:
+ prefix:
+ aerialway:
+ cable_car: Funivìa
+ chair_lift: Seggiuvìa
+ drag_lift: Sciuvìa
+ gondola: Cabbinuvìa
+ station: Stazzioni dâ funivìa
+ aeroway:
+ aerodrome: Ariuportu
+ apron: Piazzali
+ gate: Porta di mbarcu
+ helipad: Eliportu
+ runway: Pista d’attirraggiu
+ taxiway: Pista di rullaggiu
+ terminal: Terminal
+ amenity:
+ animal_shelter: Rifuggiu di l’armali
+ arts_centre: Centru d’arti
+ atm: Bancomat
+ bank: Banca
+ bar: Bar
+ bbq: Fucuni
+ bench: Bancu
+ bicycle_parking: Pusteggiu dî bicicletti
+ bicycle_rental: Affitta-bicicletti
+ biergarten: Biergarten
+ boat_rental: Affitta-barchi
+ brothel: Burdellu
+ bureau_de_change: Scanciaturi di muniti
+ bus_station: Stazzioni ill’autobus
+ cafe: Cafè
+ car_rental: Affitta-màchini
+ car_sharing: Car Sharing
+ car_wash: Lavaggiu dî màchini
+ casino: Casa di jocu
+ charging_station: Stazzioni di ricàrrica
+ childcare: Asilu nidu
+ cinema: Cinema
+ clinic: Clinica
+ clock: Ruloggiu
+ college: Accademia
+ community_centre: Centru cìvicu
+ courthouse: Tribbunali
+ crematorium: Crimatoriu
+ dentist: Dintista
+ doctors: Dutturi
+ dormitory: Durmitoriu
+ drinking_water: Acqua pi’ mbìviri
+ driving_school: Scola guida
+ embassy: Mmasciata
+ emergency_phone: Telèfunu d’emirgenza
+ fast_food: Fast Food
+ ferry_terminal: Attraccu dû traghettu
+ fire_hydrant: Idranti
+ fire_station: Pumperi
+ food_court: Zona di risturazzioni
+ fountain: Funtana
+ fuel: Pompa dâ binzina
+ gambling: Scummissi
+ grave_yard: Cimiteru
+ gym: Palestra
+ health_centre: Casa di cura
+ hospital: Spitali
+ hunting_stand: Barracca dî cacciatura
+ ice_cream: Gilatarìa
+ kindergarten: Asilu
+ library: Libbrarìa
+ market: Mircatu
+ marketplace: Mircatu
+ monastery: Munasteru
+ motorcycle_parking: Pusteggiu dî muturi
+ nightclub: Night Club
+ nursery: Asilu
+ nursing_home: Casa di riposu
+ office: Ufficiu
+ parking: Pusteggiu
+ parking_entrance: Trasuta dû pusteggiu
+ pharmacy: Farmacìa
+ place_of_worship: Locu di cultu
+ police: Guardia
+ post_box: Buca dâ posta
+ post_office: Ufficiu pustali
+ preschool: Asilu
+ prison: Càrciri
+ pub: Pub
+ public_building: Edificiu pùbblicu
+ reception_area: Accittazzioni
+ recycling: Ìsula eculòggica
+ restaurant: Risturanti
+ retirement_home: Casa di riposu
+ sauna: Sauna
+ school: Scola
+ shelter: Pinnata
+ shop: Nigozziu
+ shower: Doccia
+ social_centre: Centru sociali
+ social_club: Cìrculu
+ social_facility: Sirvizzî suciali
+ studio: Studiu di riggistrazzioni
+ swimming_pool: Piscina
+ taxi: Taxi
+ telephone: Telèfunu pùbblicu
+ theatre: Tiatru
+ toilets: Cessi
+ townhall: Municipiu
+ university: Università
+ vending_machine: Machinetta chi’ vinni
+ veterinary: Veterinariu
+ village_hall: Municipiu
+ waste_basket: Biduni dâ munnizza
+ waste_disposal: Cassuni dâ munnizza
+ youth_centre: Centru giuvanili
+ boundary:
+ administrative: Cunfini amministrativu
+ census: Cunfini censuariu
+ national_park: Parcu nazziunali
+ protected_area: Aria prutetta
+ bridge:
+ aqueduct: Catusatu
+ suspension: Ponti suspisu
+ swing: Ponti firriàbbili
+ viaduct: Viaduttu
+ "yes": Ponti
+ building:
+ "yes": Edificiu
+ craft:
+ brewery: Birrificiu
+ carpenter: Mastru d’ascia
+ electrician: Elittricista
+ gardener: Jardinaru
+ painter: Pitturi
+ photographer: Fotògrafu
+ plumber: Funtaneri
+ shoemaker: Scarparu
+ tailor: Custureri
+ "yes": Putìa dû mastru
+ emergency:
+ ambulance_station: Stazzioni ill’ambulanzi
+ defibrillator: Defibbrillaturi
+ landing_site: Pista d’attirraggiu d’emirgenza
+ phone: Telèfunu d’emirgenza
+ highway:
+ abandoned: Strata abbannunata
+ bridleway: Caminu pî cavaḍḍi
+ bus_guideway: Cursia ill’autobus a’ guida vinculata
+ bus_stop: Firmata ill’autobus
+ construction: Strata in custruzzioni
+ cycleway: Pista ciclàbbili
+ elevator: Ascinsuri
+ emergency_access_point: Puntu di cugghiuta d’emirgenza
+ footway: Caminu pidunali
+ ford: Sguazzu
+ living_street: Living Street
+ milestone: Petra miliari
+ motorway: Autustrata
+ motorway_junction: Svìnculu ill’autustrata
+ motorway_link: Autustrata
+ path: Caminu
+ pedestrian: Stata pidunali
+ platform: Firmata
+ primary: Strata primaria
+ primary_link: Strata primaria
+ proposed: Strata pruggittata
+ raceway: Pista
+ residential: Strata risidinziali
+ rest_area: Aria di pusteggiu
+ road: Strata
+ secondary: Strata secunnaria
+ secondary_link: Strata secunnaria
+ service: Strata di sirvizziu
+ services: Aria di sirvizziu
+ speed_camera: Autovelox
+ steps: Scala
+ street_lamp: Lampiuni
+ tertiary: Strata tirziaria
+ tertiary_link: Strata tirziaria
+ track: Trazzera
+ traffic_signals: Simàfuru
+ trail: Caminu
+ trunk: Supirstrata
+ trunk_link: Supirstrata
+ unclassified: Strata senza classificazzioni
+ unsurfaced: Strata stirrata
+ "yes": Strata
+ historic:
+ archaeological_site: Zona archiulòggica
+ battlefield: Campu di battagghia
+ boundary_stone: Petra finàita
+ building: Edificiu stòricu
+ bunker: Bunker
+ castle: Casteḍḍu
+ church: Chiesa
+ city_gate: Porta dâ città
+ citywalls: Mura dâ città
+ fort: Forti
+ heritage: Situ di ntiressi stòricu-culturali
+ house: Casa stòrica
+ icon: Cona
+ manor: Casa patrunali
+ memorial: Munumentu â mimoria
+ mine: Minera
+ monument: Munumentu
+ roman_road: Strata rumana
+ ruins: Ruìni
+ stone: Petra stòrica
+ tomb: Sepultura
+ tower: Turri
+ wayside_cross: Crucifissu
+ wayside_shrine: Cona
+ wreck: Barca nfunnata
+ junction:
+ "yes": Cruci di via
+ landuse:
+ allotments: Jardinu familiari
+ basin: Gebbia
+ brownfield: Zona luttizzata
+ cemetery: Cimiteru
+ commercial: Zona cummirciali
+ conservation: Zona prutetta
+ construction: Zona in custruzzioni
+ farm: Massarìa
+ farmland: Terra cultivata
+ farmyard: Aria
+ forest: Furesta
+ garages: Garage
+ grass: Erba
+ greenfield: Zona luttizzata
+ industrial: Zona innustriali
+ landfill: Munnizzaru
+ meadow: Pratu
+ military: Zona militari
+ mine: Minera
+ orchard: Fruttera
+ quarry: Pirrera
+ railway: Ferruvìa
+ recreation_ground: Chianu di ricrìu
+ reservoir: Lagu artificiali
+ reservoir_watershed: Gebbia
+ residential: Zona risidinziali
+ retail: Putìa
+ road: Aria dâ strata
+ village_green: Parcu urbanu
+ vineyard: Vigna
+ "yes": Usu dâ terra
+ leisure:
+ beach_resort: Lidu
+ bird_hide: Ossirvatoriu pi’ l’aceḍḍi
+ club: Cìrculu
+ common: Cumuni
+ dog_park: Parcu dî cani
+ fishing: Riserva di pisca
+ fitness_centre: Palestra
+ fitness_station: Attrezzi pâ ginnastica
+ garden: Jardinu
+ golf_course: Campu di golf
+ horse_riding: Maniggiu
+ ice_rink: Pista ghiacciata
+ marina: Portu turìsticu
+ miniature_golf: Minigolf
+ nature_reserve: Riserva naturali
+ park: Villa
+ pitch: Campu di jocu
+ playground: Jochi pî picciriḍḍi
+ recreation_ground: Chianu di ricrìu
+ resort: Villaggiu turìsticu
+ sauna: Sauna
+ slipway: Rampa d’alaggiu
+ sports_centre: Centru spurtivu
+ stadium: Stadiu
+ swimming_pool: Piscina
+ track: Pista dâ cursa
+ water_park: Acquapark
+ "yes": Ricrìu
+ man_made:
+ lighthouse: Faru
+ pipeline: Cunnuttu
+ tower: Turri
+ works: Fàbbrica
+ "yes": Artificiali
+ military:
+ airfield: Ariuportu militari
+ barracks: Caserma
+ bunker: Bunker
+ mountain_pass:
+ "yes": Passu di muntagna
+ natural:
+ bay: Gulfu
+ beach: Praja
+ cape: Capu
+ cave_entrance: Trasuta dâ grutta
+ cliff: Sdirrupu
+ crater: Crateri
+ dune: Duna
+ fell: Viggitazzioni d’auta muntagna
+ fjord: Fiordu
+ forest: Furesta
+ geyser: Geyser
+ glacier: Ghiacciaju
+ grassland: Pratu
+ heath: Brughiera
+ hill: Cuḍḍina
+ island: Ìsula
+ land: Terra
+ marsh: Margiu
+ moor: Molu
+ mud: Fangu
+ peak: Muntagna
+ point: Puntu
+ reef: Scogghiu summersu
+ ridge: Serra
+ rock: Massu
+ saddle: Seḍḍa
+ sand: Rina
+ scree: Agghiara
+ scrub: Troffi
+ spring: Surgiva
+ stone: Petra
+ strait: Strittu
+ tree: Àrvulu
+ valley: Vaḍḍi
+ volcano: Vulcanu
+ water: Acqua
+ wetland: Pantanu
+ wood: Boscu
+ office:
+ accountant: Raggiuneri
+ administrative: Ufficiu pùbblicu lucali
+ architect: Architettu
+ company: Società
+ employment_agency: Agginzìa pû travagghiu
+ estate_agent: Agginzìa Immobbiliari
+ government: Ufficiu pùbblicu
+ insurance: Assicurazzioni
+ lawyer: Avvucatu
+ ngo: Organizzazzioni Nun Guvernativa
+ telecommunication: Società di telicumunicazzioni
+ travel_agent: Agginzìa dî viaggi
+ "yes": Ufficiu
+ place:
+ allotments: Territoriu agrìculu o ricriativu
+ block: Isulatu
+ airport: Ariuportu
+ city: Città
+ country: Paìsi
+ county: Cuntèa
+ farm: Massarìa
+ hamlet: Casali
+ house: Casa
+ houses: Casi
+ island: Ìsula
+ islet: Isuletta
+ isolated_dwelling: Casi isulati
+ locality: Cuntrata
+ moor: Molu
+ municipality: Cumuni
+ neighbourhood: Quarteri
+ postcode: CAP
+ region: Riggioni
+ sea: Mari
+ state: Statu
+ subdivision: Suttadivisioni
+ suburb: Quarteri
+ town: Cittateḍḍa
+ unincorporated_area: Aria nun ncurpurata
+ village: Paìsi
+ "yes": Locu
+ railway:
+ abandoned: Ferruvìa abbannunata
+ construction: Ferruvìa in custruzzioni
+ disused: Ferruvìa in disusu
+ disused_station: Stazzioni dû trenu abbannunata
+ funicular: Funiculari
+ halt: Firmata dû trenu
+ historic_station: Stazzioni dû trenu storica
+ junction: Biviu ferruviariu
+ level_crossing: Passaggiu a’ liveḍḍu
+ light_rail: Metrupulitana liggira
+ miniature: Binariu in miniatura
+ monorail: Monurutaja
+ narrow_gauge: Ferruvia a’ scartamentu ridduciutu
+ platform: Binariu dâ stazzioni
+ preserved: Ferruvìa storica
+ proposed: Ferruvìa in pruggettu
+ spur: Binariu di sirvizziu
+ station: Stazzioni dâ ferruvìa
+ stop: Firmata dû trenu
+ subway: Metrupulitana
+ subway_entrance: Trasuta dâ metrupulitana
+ switch: Scanciu ferruviariu
+ tram: Tram
+ tram_stop: Firmata dû tram
+ shop:
+ alcohol: Putìa di bivanni alcolici
+ antiques: Antiquariu
+ art: Nigòzziu d’arti
+ bakery: Furnu
+ beauty: Nigòzziu di biḍḍizza
+ beverages: Putìa dî buttigghî
+ bicycle: Nigozziu dî bicicletti
+ books: Nigozziu dî libbra
+ boutique: Boutique
+ butcher: Chiancheri
+ car: Cuncissiunaria dî màchini
+ car_parts: Ricambî dî màchini
+ car_repair: Officina dî màchini
+ carpet: Nigozziu di tappiti
+ charity: Nigozziu di binificienza
+ chemist: Sanitaria
+ clothes: Nigozziu dî vistiti
+ computer: Nigozziu dî computer
+ confectionery: Pastizzarìa
+ convenience: Minimarket
+ copyshop: Copistirìa
+ cosmetics: Nigòzziu di cusmètici
+ deli: Salumarìa
+ department_store: Granni maggazzinu
+ discount: Discount
+ doityourself: Fai-da-te
+ dry_cleaning: Lavasiccu
+ electronics: Nigozziu d’elittrònica
+ estate_agent: Agginzìa mmubbiliari
+ farm: Putìa dû viḍḍanu
+ fashion: Boutique
+ fish: Piscarìa
+ florist: Ciuraru
+ food: Putìa dû manciari
+ funeral_directors: Casciamurtaru
+ furniture: Putìa dî mòbbili
+ gallery: Gallaria d’arti
+ garden_centre: Putìa dû jardinaggiu
+ general: Putìa
+ gift: Àrticuli di riggalu
+ greengrocer: Putìa dâ frutta
+ grocery: Putìa
+ hairdresser: Piluccheri
+ hardware: Firramenta
+ hifi: Hi-Fi
+ insurance: Assicurazzioni
+ jewelry: Giujellirìa
+ kiosk: Cioscu
+ laundry: Lavannarìa
+ mall: Centru cummirciali
+ market: Mircatu
+ mobile_phone: Nigozziu di tilifunini
+ motorcycle: Nigozziu di muturi
+ music: Nigozziu di mùsica
+ newsagent: Giurnalaru
+ optician: Òtticu
+ organic: Manciari biulòggicu
+ outdoor: Àrticuli di campìu
+ pet: Nigozziu ill’armali
+ pharmacy: Farmacìa
+ photo: Àrticuli di futugrafìa
+ salon: Saluni di biḍḍizza
+ second_hand: Artìculi i secunna manu
+ shoes: Scarparu
+ shopping_centre: Centru Cummirciali
+ sports: Artìculi spurtivi
+ stationery: Cartaru
+ supermarket: Supirmircatu
+ tailor: Custureri
+ toys: Nigozziu dî jucàttuli
+ travel_agency: Agginzìa di viaggi
+ video: Vidiuteca
+ wine: Putìa dû vinu
+ "yes": Nigozziu
+ tourism:
+ alpine_hut: Rifuggiu
+ apartment: Appartamentu
+ artwork: Òpira d’arti
+ attraction: Attrazzioni turìstica
+ bed_and_breakfast: Bed and Breakfast
+ cabin: Barracca
+ camp_site: Campìu
+ caravan_site: Campìu pî roulotte
+ chalet: Bungalow
+ gallery: Gallaria d’arti
+ guest_house: Guest House
+ hostel: Ostellu
+ hotel: Albergu
+ information: Nfurmazzioni turìstichi
+ motel: Motel
+ museum: Musèu
+ picnic_site: Aria di pic-nic
+ theme_park: Parcu dî divirtimenti
+ viewpoint: Postu panuràmicu
+ zoo: Zoo
+ tunnel:
+ culvert: Tumbinatura
+ "yes": Gallarìa
+ waterway:
+ artificial: Cursu d’acqua artificiali
+ boatyard: Canteri navali
+ canal: Canali
+ dam: Diga
+ derelict_canal: Saja abbannunata
+ ditch: Fossu
+ dock: Bacinu
+ drain: Saja
+ lock: Conca di navigazzioni
+ lock_gate: Chiusa
+ mooring: Molu
+ rapids: Catarratti
+ river: Ciumi
+ stream: Vaḍḍuni
+ wadi: Uadi
+ waterfall: Cascata
+ weir: Brigghia fluviali
+ "yes": Cursu d’acqua
+ admin_levels:
+ level2: Cunfini di nazzioni
+ level4: Cunfini di riggioni
+ level5: Cunfini di riggioni èstira
+ level6: Cunfini di pruvincia
+ level8: Cunfini di cumuni
+ level9: Cunfini di villàggiu
+ level10: Cunfini di quarteri
+ description:
+ title:
+ osm_nominatim: Lucalizzazzioni di <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
+ Nominatim</a>
+ geonames: Lucalizzazzioni di <a href="http://www.geonames.org/">GeoNames</a>
+ types:
+ cities: Città
+ towns: Paìsi
+ places: Posti
+ results:
+ no_results: Nuḍḍu risultatu truvatu
+ more_results: Autri risultati
+ layouts:
+ logo:
+ alt_text: Logu di OpenStreetMap
+ home: Vai â casa
+ logout: Nesci
+ log_in: Trasi
+ log_in_tooltip: Trasi cûn cuntu esistenti
+ sign_up: Scrìviti
+ start_mapping: Accumencia a’ mappari
+ sign_up_tooltip: Crea un cuntu pi’ fari canciamenti
+ edit: Cancia
+ history: Cronuluggìa
+ export: Esporta
+ data: Dati
+ export_data: Esporta i dati
+ gps_traces: Tracciati GPS
+ gps_traces_tooltip: Gistisci i tracciati GPS
+ user_diaries: Diarî ill’utenti
+ user_diaries_tooltip: Talìa i diarî ill’utenti
+ edit_with: Cancia cu’ %{editor}
+ tag_line: A Cartina-wiki dû Munnu Lìbbira
+ intro_header: Binvinuti nta OpenStreetMap!
+ intro_text: OpenStreetMap è na cartina dû munnu, criata di genti comu a’ tia e
+ lìbbira a’ adupirari secunnu na licenza aperta.
+ intro_2_create_account: Crìa un cuntu di utenti
+ partners_html: L’hosting veni sustinutu di %{ucl}, %{ic} e %{bytemark}, e autri
+ %{partners}.
+ partners_ucl: the UCL VR Centre
+ partners_ic: Imperial College London
+ partners_bytemark: Bytemark Hosting
+ partners_partners: cullabburatura
+ osm_offline: A basi di dati di OpenStreetMap comu ad ora nun è in lìnia picchì
+ si stannu facennu travagghî di manutinizioni funnamintali.
+ osm_read_only: A basi di dati di OpenStreetMap comu ad ora è ntâ mudalità di sula
+ littura picchì si stannu facennu travagghî di manutinizioni funnamintali.
+ donate: Susteni a’ OpenStreetMap %{link} ô funnu pi’ l’aggiurnamentu ill’hardware.
+ help: Guida
+ about: Nfurmazzioni
+ copyright: Dritti d’auturi
+ community: Cumunità
+ community_blogs: Blog dâ cumunità
+ community_blogs_title: Blog di membri dâ cumunità di OpenStreetMap
+ foundation: Funnazzioni
+ foundation_title: A Funnazzioni OpenStreetMap
+ make_a_donation:
+ title: Susteni a’ OpenStreetMap cu na dunazzioni di dinaru
+ text: Fai na dunazzioni
+ learn_more: Sapìrinni cchiu’ ssai
+ more: Autri cosi
+ license_page:
+ foreign:
+ title: A’ prupòsitu di sta traduzzioni
+ text: In casu di cunflittu tra di sta pàggina traduciuta e %{english_original_link},
+ fa’ fidi a pàggina in ngrisi
+ english_link: l’origginali in lingua ngrisi
+ native:
+ title: A’ prupòsitu di sta pàggina
+ text: Stai taliannu a virsioni in lingua ngrisi dâ pàggina dû drittu d’auturi.
+ Poi turnari â %{native_link} di sta pàggina o puru poi finiri di nfurmàriti
+ supra ô drittu d’auturi e %{mapping_link}.
+ native_link: virsioni in sicilianu
+ mapping_link: accuminciari a’ mappari
+ legal_babble:
+ title_html: Dritti d’auturi e Licenza
+ intro_1_html: |-
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> è fattu di <i>dati aperti</i>, cunciduti sutta â licenza <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data
+ Commons Open Database License</a> (ODbL) dâ <a
+ href="http://osmfoundation.org/">Funnazzioni OpenStreetMap</a> (OSMF).
+ intro_2_html: |-
+ Si’ lìbbiru di cupiari, diffùnniri, trasmèttiri e adattari i nostri dati, fintantu chi’ l’attribuisci a’ OpenStreetMap e ê so cuntribbutura. Si’ canci i dati o l’adòpiri comu puntu di partenza, poi distribbuiri u travagghiu risultanti sulamenti sutta â stissa licenza. U <a href="http://opendatacommons.org/licenses/odbl/1.0/">còdici ligali
+ code</a> cumpletu spiega quali sunnu i to dritti e i to rispunsabbilità.
+ intro_3_html: |-
+ A cartugrafìa ntê mattunelli dâ nostra cartina, e a nostra ducumintazzioni, sunnu sutta â licenza <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative
+ Commons Attribution-ShareAlike 2.0</a> (CC BY-SA).
+ credit_title_html: Comu s’attribbuìsci a’ OpenStreetMap
+ credit_1_html: Richiedemu chi’ si usa l’attribbuzzioni «© i cuntribbutura
+ di OpenStreetMap».
+ credit_2_html: "S’havi a’ rènniri chiaru ch’i dati sunnu misi a’ dispusizzioni
+ sutta dâ Open\nDatabase License, e si’ s’adòpirunu i mattunelli dâ nostra
+ cartina, ch’a cartugrafìa è sutta dâ licenza CC BY-SA. Sta cosa si po’ fari
+ mittennu nu culligamentu a’ \n<a href=\"http://www.openstreetmap.org/copyright\">sta
+ pàggina dû drittu d’auturi</a>.\nComu altirnativa, e obbligaturiamenti quannu
+ si diffunni OSM sutta forma di dati, si ponnu mintuari i licenzi pi’ nomu
+ e cûn culligamentu direttu chi’ porta unn’iḍḍi. Nta ḍḍi menzi unni i culligamenti
+ nun sunnu pussìbbili (ad esempiu ntâ carta stampata), suggiremu di mannari
+ i littura direttamenti unni openstreetmap.org (macari espannennu \n‘OpenStreetMap’
+ a’ stu nnirizzu cumpletu), unni opendatacommons.org, e, quann’è oppurtunu,
+ unni\n creativecommons.org."
+ credit_3_html: |-
+ Nta na cartina elittronica navigàbbili, l’attribbuzzioni avissi a’ spuntari nta l’àngulu dâ cartina.
+ Ad esempiu:
+ attribution_example:
+ alt: Esempiu di comu s’attribbuìsci a’ OpenStreetMap nta na pàggina web
+ title: Esempiu di attribbuzzioni
+ more_title_html: Pi’ sapìrinni cchiu’ ssai
+ more_1_html: |-
+ Trova autri nfurmazzioni a’ prupòsitu di comu s’adòpirunu i nostri dati, e comu nni si duna attribbuzioni, ntâ <a
+ href="http://osmfoundation.org/Licence">pàggina dâ licenza di l’OSMF</a> e ntê <a
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">dumanni friquenti ligali</a> gistuti dâ cumunità.
+ more_2_html: "Macari si’ OpenStreetMap è fattu di dati aperti, nun putemu furniri
+ n’API cartugràfica gratùita ê sviluppatura di terza parti.\nTalìa a nostra
+ <a href=\"http://wiki.openstreetmap.org/wiki/API_usage_policy\">Pulìtica pi’
+ l’utilizzu ill’API</a>, \na <a href=\"http://wiki.openstreetmap.org/wiki/Tile_usage_policy\">Pulìtica
+ pi’ l’utilizzu dî mattunelli</a>\n e a <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy\">Pulìtica
+ pi’ l’utilizzu di Nominatim</a>."
+ contributors_title_html: I nostri cuntribbutura
+ contributors_intro_html: 'I nostri cuntribbutura sunnu migghiara di genti. Pigghiamu
+ macari dati cu’ licenza aperta furnuti di l’agginzìi cartugràfichi nazziunali
+ e di autri fonti, tra dî quali:'
+ contributors_at_html: "<strong>Austria</strong>: Cunteni dati dâ\n<a href=\"http://data.wien.gv.at/\">Stadt
+ Wien</a> (sutta a’ \n<a href=\"http://creativecommons.org/licenses/by/3.0/at/deed.de\">CC
+ BY</a>),\n<a href=\"http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm\">Land
+ Vorarlberg</a> e\nLand Tirol (sutta a’ <a href=\"http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/\">CC
+ BY AT cu’ canciamenti</a>)."
+ contributors_ca_html: "<strong>Canadà</strong>: Cunteni dati di \nGeoBase®,
+ GeoGratis (© Department of Natural\nResources Canada), CanVec (©
+ Department of Natural\nResources Canada), e StatCan (Geography Division,\nStatistics
+ Canada)."
+ contributors_fi_html: "<strong>Finlannia</strong>: Cunteni dati dâ Basi di Dati
+ Topugràfica dû National Land Survey dâ Finlannia \ne di autri insiemi di dati,
+ sutta â \n<a href=\"http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501\">Licenza
+ NLSFI</a>."
+ contributors_fr_html: "<strong>Francia</strong>: Cunteni dati furnuti dâ \nDirection
+ Générale des Impôts."
+ contributors_nl_html: |-
+ <strong>Paìsi Vasci</strong>: Cunteni dati © AND, 2007
+ (<a href="http://www.and.com">www.and.com</a>)
+ contributors_nz_html: "<strong>Nova Zilanna</strong>: Cunteni dati furnuti dâ
+ \nLand Information New Zealand. Crown Copyright reserved."
+ contributors_si_html: "<strong>Sluvenia</strong>: Counteni dati dâ \n<a href=\"http://www.gu.gov.si/en/\">Surveying
+ and Mapping Authority</a> e dû\n<a href=\"http://www.mkgp.gov.si/en/\">Ministeru
+ di l’Agricultura, dî Furesti e di l’Alimintazzioni</a>\n(nfurmazzioni pùbblichi
+ dâ Sluvenia)."
+ contributors_za_html: "<strong>Àfrica dû Sud</strong>: Cunteni dati dû \n<a
+ href=\"http://www.ngi.gov.za/\">Chief Directorate:\nNational Geo-Spatial Information</a>,
+ State copyright reserved."
+ contributors_gb_html: |-
+ <strong>Regnu Unitu</strong>: Cunteni dati di l’Ordnance
+ Survey © Crown copyright and database right
+ 2010-12.
+ contributors_footer_1_html: |-
+ Pi’ canùsciri autri dittagghî supra a’ chisti e autri fonti chi’ furu adupirati pi’ migghiurari OpenStreetMap, poi taliari <a
+ href="http://wiki.openstreetmap.org/wiki/Contributors">a pàggina dî cuntribbutura</a> supra â wiki di OpenStreetMap.
+ contributors_footer_2_html: A nclusioni dî dati nta OpenStreetMap nun ìmplica
+ ch’u so furnituri origginali susteni OpenStreetMap, furnisci na quarchi’ garanzìa,
+ o accetta na quarchi’ rispunsabbilità.
+ infringement_title_html: Viulazzioni dû drittu d’auturi
+ infringement_1_html: Ê cuntribbutura di OSM si ricorda di nun agghiùnciri mai
+ dati chi’ vènunu di fonti prutetti dû drittu d’auturi (ad esempiu Google Maps
+ o puru i carti stampati) senza aviri n’auturizzazzioni esplìcita dû titulari
+ dû drittu d'auturi.
+ infringement_2_html: "Si’ pensi chi fu’ gghiunciutu a’ manera indèbita matiriali
+ prutettu dû drittu d’auturi ntâ basi di dati di OpenStreetMap o puru ntâ stu
+ situ, pi’ favuri fai rifirimentu â nostra\n <a href=\"http://www.osmfoundation.org/wiki/License/Takedown_procedure\">prucidura
+ di cancillazzioni</a> o puru signalinnillu direttamenti pi’ menzu dû nostru
+ \n<a href=\"http://dmca.openstreetmap.org/\">mòdulu di signalazzioni in linia</a>."
+ trademarks_title_html: <span id="trademarks"></span>Marchi riggistrati
+ trademarks_1_html: OpenStreetMap e u logu dâ lenti di ngrannimentu sunnu marchi
+ riggistrati dâ Funnazzioni OpenStreetMap. Si’ hai quarchi’ dumanna supra a’
+ l’utilizzu chi’ poi fari di sti marchi, a poi mannari ô <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Gruppu
+ di travagghiu dî licenzi</a>.
+ welcome_page:
+ title: Binvinuti!
+ introduction_html: Binvinuti nta OpenStreetMap, a cartina du munnu lìbbira e mudificàbbili.
+ Ora chi’ siti scritti, siti pronti p’accuminciari a’ mappari. Cca cc’è na guida
+ chi’ spiega i cosi cchiu’ mpurtanti ch’haviti a’ sapiri.
+ whats_on_the_map:
+ title: Chiḍḍu chi’ cc'è supra â cartina
+ on_html: |-
+ OpenStreetMap è nu postu pi’ mappari cosi chi’ su’ <em>veri e attuali</em> -
+ cunteni miliuna d’edificî, strati e autri dittagghî dî posti. Poi mappari chiḍḍu chi’ è jè dû munnu riali chi’ ti ntiressa.
+ off_html: |-
+ Chiḍḍu chi’ nveci <em>nun cc’è</em> sunnu i dati d’opinioni comu ad esempiu i giudizzî, l’elimenti chi’ nun esìstunu cchiu’ o
+ chi’ sunnu iputètici, e i dati chi’ vènunu di fonti prutetti dû drittu d’auturi. A’ menu chi’ nun hai n’auturizzazzioni spiciali,
+ nun cupiari mai di mappi online o di carta.
+ basic_terms:
+ title: Tèrmini funnamintali dâ mappatura
+ paragraph_1_html: OpenStreetMap havi nu so linguaggiu particulari. Cca’ cci
+ su’ na para di palori chi’ ti ponnu giuvari.
+ editor_html: N’<strong>editor</strong> è nu prugramma o nu situ web chi’ poi
+ adupirari pi’ fari canciamenti ntâ cartina.
+ node_html: Un <strong>gruppu</strong> è nu puntu sìngulu supra â cartina, comu
+ ad esempiu nu risturanti o n’àrvulu.
+ way_html: Nu <strong>caminu</strong> è na linia o puru n’aria, comu ponnu èssiri
+ na strata, un ciumi, un lagu o puru n’edificiu.
+ tag_html: |-
+ N’<strong>etichetta</strong> è na sìngula nfurmazzioni a’ prupòsitu dûn gruppu o dûn caminu, comu
+ ad esempiu u nomu dûn risturanti o u lìmiti di vilucità di na strata.
+ rules:
+ title: Règuli!
+ paragraph_1_html: "OpenStreetMap havi picca règuli furmali, però nni spittamu
+ chi’ tutti i participanti cullabburannu\ne cumunicannu câ cumunità. Si’ stai
+ pigghiannu a’ cunsiddirazzioni di canciari a carta a’ quarchi’ n’autra manera
+ rispettu a’ fàrilu a’ manu, pi’ favuri leggi e rispetta i lìnî guida ca poi
+ truvari nta\n<a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Impurtazzioni</a>
+ e \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Canciamenti
+ autumatizzati</a>."
+ questions:
+ title: Hai dumanni?
+ paragraph_1_html: |-
+ OpenStreetMap havi tanti risorsi pi’ nzignàrisi comu funziona u pruggettu, pi’ fari dumanni e dari risposti,
+ e pi’ discùtiri d’argumenti chi’ riguàrdunu a mappatura e ducumintàrili in cullabburazzioni.
+ <a href='%{help_url}'>Poi truvari ajutu cca</a>.
+ start_mapping: Accumencia a’ mappari
+ add_a_note:
+ title: Nun hai tempu pi’ fari canciamenti? Allura agghiunci na nota!
+ paragraph_1_html: |-
+ Si’ voi sulamenti cunsata quarchi’ cosa picciriḍḍa, e nun hai u tempu pi’ scrìviriti e nzignàriti a’ mappari, è
+ cchiu’ fàcili lassari na nota.
+ paragraph_2_html: |-
+ Basta chi’ vai <a href='%{map_url}'>supra â cartina</a> e clicchi a cona dâ nota:
+ <span class='icon note'></span>. A’ sta manera s’agghiunci un signali supra â cartina, e u poi spustari strascinànnulu. Agghiunci u to missàggiu, clicca sarva, e a stu puntu l’autri mappatura darannu n’occhiata.
+ fixthemap:
+ title: Signalari prubblemi / Cunsari a cartina
+ how_to_help:
+ title: Comu ajutari
+ join_the_community:
+ title: Tràsiri ntâ cumunità
+ explanation_html: Si’ t’accurgisti chi’ cc’è quarchi’ prubblema ntê dati dâ
+ nostra cartina, ad esempiu manca na strata o puru u to nnirizzu è sbagghiatu,
+ a megghiu cosa di fari è di scrìviriti ntâ cumunità di OpenStreetMap e agghiùnciri
+ o cunsari i dati tu stissu.
+ add_a_note:
+ instructions_html: |-
+ Basta chi’ clicchi <a class='icon note'></a> o puru a stissa cona ntâ carta.
+ Facennu accussì si piazza un signali supra â carta, chi’ si po’ spustari strascinannulu.
+ S’agghiunci nu propiu missaggiu, ppoi si clicca «sarva», e l’autri mappatura taliirannu a situazzioni.
+ other_concerns:
+ title: Autri dubbî
+ explanation_html: "Si’ hai dubbî a’ prupòsitu di comu vènunu adupirati i nostri
+ dati, o a’ prupòsitu dî cuntinuti, pi’ favuri cunsulta a nostra \n<a href='/copyright'>pàggina
+ dû drittu d’auturi</a> p’aviri autri nfurmazzioni ligali, o puru cuntatta
+ u \n<a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>gruppu di
+ travagghiu OSMF</a> apprupriatu."
+ help_page:
+ title: Truvari ajutu
+ introduction: |-
+ OpenStreetMap havi tanti risorsi pi’ nzignàrisi comu funziona u pruggettu, pi’ fari dumanni e dari risposti,
+ e pi’ discùtiri d’argumenti chi’ riguàrdunu a mappatura e ducumintàrili in cullabburazzioni.
+ welcome:
+ url: /welcome
+ title: Binvinuti nta OSM
+ description: Accumencia cu’ sta guida ràpida chi’ nzigna i funnamenti di OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/IT:Beginners%27_guide
+ title: Guida dî principianti
+ description: Guida pî principianti mantinuta dâ cumunità.
+ help:
+ url: https://help.openstreetmap.org/
+ title: help.openstreetmap.org
+ description: Fai na dumanna o cerca na risposta ntô situ di dumanni e risposti
+ di OSM.
+ mailing_lists:
+ title: Mailing list
+ description: Fai dumanni o discuti di questioni ntirissanti ntâ na gamma ampia
+ di mailing list spicializzati pi’ tema o pi’ riggioni.
+ forums:
+ title: Forum
+ description: Dumanni e discussioni pi’ chiḍḍi chi’ prifirìsciunu na ntirfaccia
+ fatta a’ bacheca.
+ irc:
+ title: IRC
+ description: Chat ntirattiva nta tanti lingui e supra a’ tanti argumenti diffirenti.
+ switch2osm:
+ title: switch2osm
+ description: Ajutu pi’ mprisi e assuciazzioni chi’ vannu a’ passari ê cartini
+ e a’ l’autri sirvizzi basati supra a’ OpenStreetMap.
+ wiki:
+ url: http://wiki.openstreetmap.org/
+ title: wiki.openstreetmap.org
+ description: Sfogghia â wiki pi’ truvari a ducumintazzioni apprufunnuta di OSM.
+ about_page:
+ next: Appressu
+ copyright_html: <span>©</span>I cuntribbutura<br>di OpenStreetMap
+ used_by: '%{name} furnisci i dati giugràfici a’ cintinara di siti web, applicazzioni
+ mòbbili e apparicchî hardware'
+ lede_text: |-
+ OpenStreetMap veni custruutu di na cumunità di mappatura chi’ cuntribbuìsciunu e mantènunu dati
+ chi’ riguàrdunu strati, trazzeri, bar, stazzioni dî treni, e tanti autri cosi, nta tuttu u munnu.
+ local_knowledge_title: Canuscenza lucali
+ local_knowledge_html: |-
+ OpenStreetMap metti l’accentu supra â canuscenza lucali. I cuntribbutura adòpirunu mmagini aerii, dispusitivi GPS, accussì comu cartini a’ bascia tecnuluggìa, pi’ virificari chi’ OpenStreetMap
+ è accuratu e resta aggiurnatu.
+ community_driven_title: Guidatu dâ cumunità
+ community_driven_html: |-
+ A cumunità di OpenStreetMap è varia, appassiunata, e crisci ognin jornu.
+ Tra dî nostri cuntribbutura cci sunnu mappatura entusiasti, prufissiunisti dî GIS, ngigneri chi’ mànnunu avanti i serventi di OSM, vuluntarî chi’ màppunu i zoni afflitti dî disastri, e autri genti ancora.
+ Pi’ sapiri cchiu’ ssai a’ prupòsitu dâ cumunità, talìa <a href='%{diary_path}'>i diari ill’utenti</a>,
+ <a href='http://blogs.openstreetmap.org/'>i blog dâ cumunità</a>, e u situ dâ <a href='http://www.osmfoundation.org/'>Funnazzioni OSM</a>.
+ open_data_title: Dati aperti
+ open_data_html: 'OpenStreetMap è fattu di <i>dati aperti</i>: si’ lìbbiru d’adupiràrili
+ pi’ quali mutivu voi voi, finattantu chi’ duni l’attribbuzioni a’ OpenStreetMap
+ e i so cuntribbutura. Si’ canci i dati o l’adòpiri comu puntu di partenza, u
+ travagghiu chi’ nni risulta u poi distribbuìri sulu sutta â stissa licenza.
+ Talìa a <a href=''%{copyright_path}''>pàggina dû drittu d’auturi e dâ licenza</a>
+ pî dittagghî.'
+ legal_title: Noti ligali
+ legal_html: "Stu situ e tanti autri sirvizzî assuciati sunnu gistuti dâ \n<a
+ href='http://osmfoundation.org/'>Funnazzioni OpenStreetMap</a> (OSMF) \npi’
+ cuntu dâ cumunità.\n<br> \nVi prigamu di <a href='http://osmfoundation.org/Contact'>cuntattari
+ l’OSMF</a> \ns’aviti dumanni o autri prubblemi a’ prupòsitu di licenza, drittu
+ d’auturi o autri quistioni ligali."
+ partners_title: Cullabburatura
+ notifier:
+ diary_comment_notification:
+ subject: '[OpenStreetMap] %{user} cummintau na vuci dû to diariu'
+ hi: Salutamu %{to_user},
+ header: '%{from_user} cummintau na vuci recenti dû to diariu di OpenStreetMap
+ chi’ havi oggettu %{subject}:'
+ footer: Poi puru lèggiri u cummentu nta %{readurl} e poi cummintari di %{commenturl}
+ o puru rispùnniri di %{replyurl}
+ message_notification:
+ hi: Salutamu %{to_user},
+ header: '%{from_user} ti mannàu pi’ menzu di OpenStreetMap nu missaggiu cu’
+ l’oggettu %{subject}:'
+ footer_html: Poi lèggiri u missaggiu macari nta %{readurl} e cci poi rispùnniri
+ di %{replyurl}
+ friend_notification:
+ subject: '[OpenStreetMap] %{user} t’agghiuncìu comu amicu'
+ had_added_you: '%{user} t’agghiuncìu comu amicu nta OpenStreetMap.'
+ see_their_profile: Poi taliari u so prufilu nta %{userurl}.
+ befriend_them: U poi macari agghiùnciri comu amicu nta %{befriendurl}.
+ gpx_notification:
+ greeting: Salutamu,
+ your_gpx_file: Parirìa ch’u to file GPX
+ with_description: cu’ discrizzioni
+ and_the_tags: 'e st’etichetti cca:'
+ and_no_tags: e senza nuḍḍa etichetta.
+ failure:
+ subject: '[OpenStreetMap] Mpurtazzioni GPX nun rinisciuta'
+ failed_to_import: 'nun riniscìu a’ èssiri mpurtatu. Cca cc’è l’erruri:'
+ more_info_1: Autri nfurmazzioni a’ prupòsitu ill’erruri di mpurtazzioni GPX
+ e di comu fari pi’ evitàrili
+ more_info_2: 'si ponnu truvari nta:'
+ success:
+ subject: '[OpenStreetMap] Mpurtazzioni GPX rinisciuta'
+ loaded_successfully: fu’ carricatu bonu cu’ %{trace_points} dî %{possible_points}
+ punti pussìbbili.
+ signup_confirm:
+ subject: '[OpenStreetMap] Binvinutu nta OpenStreetMap'
+ greeting: A’ tia!
+ created: Quarchidunu (speramu chi’ fusti tu) criàu ora ora un cuntu nta %{site_url}.
+ confirm: 'Avanti chi’ facemu chiḍḍu chi’ è jè, nni giuva a cunfirma chi’ sta
+ richiesta vinni di tia; pi’ ciò, s’i cosi stannu accussì, pi’ favuri clicca
+ u culligamentu ccassutta pi’ cunfirmari u to cuntu:'
+ welcome: U forti chi’ hai cunfirmatu u to cuntu, ti furnemu autri nfurmazzioni
+ pi’ spiegàriti comu s’accumencia.
+ email_confirm:
+ subject: '[OpenStreetMap] Cunfirma u to nnirizzu di posta elittrònica'
+ email_confirm_plain:
+ greeting: Salutamu,
+ hopefully_you: Quarchidunu (speramu chi’ fusti tu) vurrìa canciari u so nnirizzu
+ di posta elittrònica nta %{server_url} mittennu comu nnirizzu novu %{new_address}.
+ click_the_link: Si’ fusti tu, pi’ favuri clicca u culligamentu ccassutta pi’
+ cunfirmari stu canciamentu.
+ email_confirm_html:
+ greeting: Salutamu,
+ hopefully_you: Quarchidunu (speramu chi’ fusti tu) vurrìa canciari u so nnirizzu
+ di posta elittrònica nta %{server_url} mittennu comu nnirizzu novu %{new_address}.
+ click_the_link: Si’ fusti tu, pi’ favuri clicca u culligamentu ccassutta pi’
+ cunfirmari stu canciamentu.
+ lost_password:
+ subject: '[OpenStreetMap] Richiesta d’azziramentu dâ palora d’òrdini'
+ lost_password_plain:
+ greeting: Salutamu,
+ hopefully_you: Quarchidunu (speramu chi’ fusti tu) dumannàu d’azzirari a palora
+ d’òrdini dû cuntu di openstreetmap.org assuciatu a’ stu nnirizzu di posta
+ elittrònica.
+ click_the_link: Si’ fusti tu, pi’ favuri clicca u culligamentu cassutta p’azzirari
+ a to palora d’òrdini.
+ lost_password_html:
+ greeting: Salutamu,
+ hopefully_you: Quarchidunu (speramu chi’ fusti tu) dumannàu d’azzirari a palora
+ d’òrdini dû cuntu di openstreetmap.org assuciatu a’ stu nnirizzu di posta
+ elittrònica.
+ click_the_link: Si’ fusti tu, pi’ favuri clicca u culligamentu cassutta p’azzirari
+ a to palora d’òrdini.
+ note_comment_notification:
+ anonymous: N’utenti anònimu
+ greeting: Salutamu,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} lassau nu cummentu nta una dî to
+ noti'
+ subject_other: '[OpenStreetMap] %{commenter} lassau nu cummentu nta una dî
+ noti chi’ ti ntirèssunu'
+ your_note: '%{commenter} lassàu nu cummentu supra a’ una dî to noti dâ cartina
+ chi’ si trova vicinu a’ %{place}.'
+ commented_note: '%{commenter} lassàu nu cummentu supra a na nota dâ cartina
+ unni tu hai cummintatu macari. A nota si trova vicinu a’ %{place}.'
+ closed:
+ subject_own: '[OpenStreetMap] %{commenter} risulvìu una dî to noti'
+ subject_other: '[OpenStreetMap] %{commenter} risulvìu una dî noti chi’ ti
+ ntirèssunu'
+ your_note: '%{commenter} risulvìu una dî to noti chi’ si trova vicinu a’ %{place}.'
+ commented_note: '%{commenter} risulvìu na nota dâ cartina unni tu hai cummintatu.
+ A nota si trova vicinu a’ %{place}.'
+ reopened:
+ subject_own: '[OpenStreetMap] %{commenter} attivàu n’autra vota una dî to
+ noti'
+ subject_other: '[OpenStreetMap] %{commenter} attivàu n’autra vota una dî noti
+ chi’ ti ntirèssunu'
+ your_note: '%{commenter} attivàu n’autra vota una dî to noti dâ cartina chi’
+ si trova vicinu a’ %{place}.'
+ commented_note: '%{commenter} attivàu n’autra vota na nota dâ cartina unni
+ tu hai cummintatu. A nota si trova vicinu a’ %{place}.'
+ details: Poi truvari autri dittagghî di sta nota nta %{url}.
+ changeset_comment_notification:
+ greeting: Salutamu,
+ commented:
+ subject_own: '[OpenStreetMap] %{commenter} cummintàu unu dî to gruppa di canciamenti'
+ subject_other: '[OpenStreetMap] %{commenter} cummintàu unu dî gruppa di canciamenti
+ chi’ ti ntirèssunu'
+ your_changeset: '%{commenter} lassàu nu cummentu nta unu dî to gruppa di canciamenti
+ criatu u %{time}'
+ commented_changeset: '%{commenter} lassàu nu cummentu ntôn gruppu di canciamenti
+ dâ cartina chi’ tu stai taliannu, criatu di %{changeset_author} u %{time}'
+ partial_changeset_with_comment: cû cummentu «%{changeset_comment}»
+ partial_changeset_without_comment: senza cummentu
+ details: Si ponnu truvari autri dittagghî a’ prupòsitu di stu gruppu di canciamenti
+ nta %{url}.
+ message:
+ inbox:
+ title: Posta rrivata
+ my_inbox: A me posta rrivata
+ outbox: posta mannata
+ messages: Hai %{new_messages} e %{old_messages}
+ new_messages:
+ one: '%{count} missaggiu novu'
+ other: '%{count} missaggî novi'
+ old_messages:
+ one: '%{count} missaggiu vecchiu'
+ other: '%{count} missaggî vecchî'
+ from: Di
+ subject: Oggettu
+ date: Data
+ no_messages_yet: Ancora nun hai nuḍḍu missaggiu. Picchì nun fai canuscenza cu’
+ quarchidunu dî %{people_mapping_nearby_link}?
+ people_mapping_nearby: mappatura vicinu a’ tia
+ message_summary:
+ unread_button: Signa comu di lèggiri
+ read_button: Signa comu gia’ liggiutu
+ reply_button: Rispunni
+ delete_button: Cancella
+ new:
+ title: Manna un missaggiu
+ send_message_to: Manna un missaggiu novu a’ %{name}
+ subject: Oggettu
+ body: Corpu
+ send_button: Manna
+ back_to_inbox: Ritorna â posta rrivata
+ message_sent: Missaggiu mannatu
+ limit_exceeded: Hai mannatu un saccu di missaggi nta stu tempu. Pi’ favuri spetta
+ na picca avanti di pruvari a’ mannàrinni autri.
+ no_such_message:
+ title: Nuḍḍu missaggiu accussì
+ heading: Nuḍḍu missaggiu accussì
+ body: Purtroppu nun cc’è nuḍḍu missaggiu cu’ ḍḍ’id.
+ outbox:
+ title: Posta mannata
+ my_inbox: A me %{inbox_link}
+ inbox: posta rrivata
+ outbox: posta mannata
+ messages:
+ one: Hai %{count} missaggiu mannatu
+ other: Hai %{count} missaggî mannati
+ to: A’
+ subject: Oggettu
+ date: Data
+ no_sent_messages: Ancora nun hai mannatu nuḍḍu missaggiu. Picchì nun fai canuscenza
+ cu’ quarchidunu dî %{people_mapping_nearby_link}?
+ people_mapping_nearby: mappatura vicinu a’ tia
+ reply:
+ wrong_user: Si’ trasutu comu «%{user}» però u missaggiu ô quali vulivi rispùnniri
+ nun fu’ mannatu a’ ḍḍ’utenti. Pi’ favuri trasi comu l’utenti giustu pi’ putiri
+ rispùnniri.
+ read:
+ title: Leggi u missaggiu
+ from: Di
+ subject: Oggettu
+ date: Data
+ reply_button: Rispunni
+ unread_button: Signa comu di lèggiri
+ back: Torna arreti
+ to: A
+ wrong_user: Si’ trasutu comu «%{user}» però u missaggiu chi’ vulivi lèggiri
+ nun fu’ mannatu a’ ḍḍ’utenti. Pi’ favuri trasi comu l’utenti giustu pû putiri
+ lèggiri.
+ sent_message_summary:
+ delete_button: Cancella
+ mark:
+ as_read: Missaggiu signatu comu già liggiutu
+ as_unread: Missaggiu marcatu comu di lèggiri
+ delete:
+ deleted: Missaggiu cancillatu
+ site:
+ index:
+ js_1: O stai adupirannu nu browser chi’ nun supporta u JavaScript, o puru hai
+ u JavaScript disattivatu.
+ js_2: OpenStreetMap adòpira u JavaScript pâ so cartina scurritura.
+ permalink: Culligamentu permanenti
+ shortlink: Culligamentu scurzatu
+ createnote: Agghiunci na nota
+ license:
+ copyright: Copyright OpenStreetMap e i so cuntribbutura, sutta a na licenza
+ aperta
+ remote_failed: 'U canciamentu nun riniscìu: assicùriti chi’ JOSM o Merkaartor
+ sunnu aperti e hannu l’opzioni telicumannu attivata'
+ edit:
+ not_public: Nun hai mpustatu i to canciamenti pi’ èssiri pùbblici.
+ not_public_description: Non poi canciari cchiu’ a cartina nfina a’ quannu nô
+ fai. Poi mpustari i to canciamenti comu pùbblici dâ to %{user_page}.
+ user_page_link: pàggina ill’utenti
+ anon_edits_link_text: Ti spiegamu picchì.
+ flash_player_required: Ti giuva u Flash player p’adupirari Potlatch, u prugramma
+ pi’ canciari OpenStreetMap fattu cû Flash. Poi <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">scarricari
+ u Flash Player di Adobe.com</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Cci
+ sunnu macari autri alternativi</a> pi’ fari canciamenti nta OpenStreetMap.
+ potlatch_unsaved_changes: Hai canciamenti senza sarvati. (Pi’ sarvari nta Potlatch,
+ avissi a’ disilizziunari u caminu o u puntu currenti, si’ stai facennu canciamenti
+ ntâ mudalità diretta, o si’ ll’hai carcari u buttuni «sarva».)
+ potlatch2_not_configured: Potlatch 2 nun havi statu cunfiguratu - pi’ favuri
+ talìa http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2 p’aviri
+ nfurmazzioni
+ potlatch2_unsaved_changes: Hai canciamenti senza sarvati. (Pi’ sarvari nta Potlach
+ 2, hâ’ carcari «sarva».)
+ id_not_configured: iD nun havi statu cunfiguratu
+ no_iframe_support: U to browser nun supporta l’iframe ill’HTML, chi’ sunnu nicissarî
+ pi’ sta funziunalità.
+ sidebar:
+ search_results: Risultati dâ risciduta
+ close: Chiudi
+ search:
+ search: Risciduta
+ get_directions: Fatti dari innicazzioni
+ get_directions_title: Trova innicazzioni pi’ jiri dûn puntu a n’autru
+ from: Di
+ to: A’
+ where_am_i: Unni sugnu?
+ where_am_i_title: Discrivi a pusizzioni attuali pi’ menzu dûn muturi di risciduta
+ submit_text: Vai
+ key:
+ table:
+ entry:
+ motorway: Autustrata
+ trunk: Supirstrata
+ primary: Strata primaria
+ secondary: Strata secunnaria
+ unclassified: Strata senza classificazzioni
+ unsurfaced: Strata stirrata
+ track: Trazzera
+ byway: Trazzera
+ bridleway: Caminu pî cavaḍḍi
+ cycleway: Pista ciclàbbili
+ footway: Caminu pidunali
+ rail: Ferruvìa
+ subway: Metrupulitana
+ tram:
+ - Metrupulitana liggera
+ - tram
+ cable:
+ - Funivìa
+ - seggiuvìa
+ runway:
+ - Pista d’attirraggiu
+ - pista di rullaggiu
+ apron:
+ - Ària di parcheggiu ariupurtuali
+ - terminal
+ admin: Cunfini amministrativu
+ forest: Furesta
+ wood: Boscu
+ golf: Campu di golf
+ park: Villa
+ resident: Zona risidinziali
+ tourist: Attrazzioni turìstica
+ common:
+ - Cumuni
+ - Pratu
+ retail: Zona di nigozzî
+ industrial: Zona innustriali
+ commercial: Zona cummirciali
+ heathland: Brughiera
+ lake:
+ - Lagu
+ - lagu artificiali
+ farm: Massarìa
+ brownfield: Zona di bunìfica
+ cemetery: Cimiteru
+ allotments: Territorî agrìculi o ricriativi
+ pitch: Campu di jocu
+ centre: Centru spurtivu
+ reserve: Riserva naturali
+ military: Zona militari
+ school:
+ - Scola
+ - Università
+ building: Edificiu mpurtanti
+ station: Stazzioni dâ ferruvìa
+ summit:
+ - Muntagna
+ - Muntagna
+ tunnel: Cuntornu trattizzatu = gallarìa
+ bridge: Cuntornu nirittu = ponti
+ private: Accessu privatu
+ permissive: Accesso permissivu
+ destination: Sirvitù di passaggiu
+ construction: Strati in custruzzioni
+ richtext_area:
+ edit: Cancia
+ preview: Antiprima
+ markdown_help:
+ title_html: Testu cu’ <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
+ headings: Ntistazzioni
+ heading: Ntistazzioni
+ subheading: Suttantistazzioni
+ unordered: Elencu puntatu
+ ordered: Elencu nummiratu
+ first: Prima vuci
+ second: Secunna vuci
+ link: Culligamentu
+ text: Testu
+ image: Mmàggini
+ alt: Testu alternativu
+ url: URL
+ trace:
+ visibility:
+ private: Privata (cunnivisu sulu comu anònimu, òrdini dî punti nun mantinutu)
+ public: Pùbblica (mmustratu ntâ lista dî tracciati e comu anònimu, òrdini dî
+ punti nun mantinutu)
+ trackable: Tracciàbbili (cunnivisu sulu comu anònimu, punti ordinati e cu’ marchi
+ tempurali)
+ identifiable: Idintificàbbili (mmustratu ntâ lista dî tracciati e comu idintificàbbili,
+ punti ordinati e cu’ marchi tempurali)
+ create:
+ upload_trace: Càrrica nu tracciatu GPS
+ trace_uploaded: U to file GPX fu’ carricatu e ora sta spittannu d’èssiri misu
+ ntâ basi di dati. Sta cosa di sòlitu veni fatta entru na menz’ura, e na vota
+ ch’u sirvizzu veni spicciatu ti veni mannatu nu missaggiu di posta elittrònica.
+ edit:
+ title: Canciamentu dû tracciatu %{name}
+ heading: Canciamentu dû tracciatu %{name}
+ filename: 'Nomu dû file:'
+ download: scàrrica
+ uploaded_at: 'Carricatu u:'
+ points: 'Punti:'
+ start_coord: 'Coordinata di principiu:'
+ map: mappa
+ edit: cancia
+ owner: 'Prupietariu:'
+ description: 'Discrizzioni:'
+ tags: 'Etichetti:'
+ tags_help: spartuti câ vìrgula
+ save_button: Sarva i canciamenti
+ visibility: 'Visibbilità:'
+ visibility_help: chi’ voli diri?
+ trace_form:
+ upload_gpx: 'Càrrica u file GPX:'
+ description: 'Discrizzioni:'
+ tags: 'Etichetti:'
+ tags_help: spartuti câ vìrgula
+ visibility: 'Visibbilità:'
+ visibility_help: chi’ voli diri?
+ upload_button: Càrrica
+ help: Ajutu
+ trace_header:
+ upload_trace: Càrrica nu tracciatu
+ see_all_traces: Talìa tutti i tracciati
+ see_your_traces: Talìa i to tracciati
+ traces_waiting:
+ one: Già hai %{count} tracciatu chi’ si sta’ carricannu. Pi’ favuri cunsìddira
+ si’ poi spittari chi’ finisci chiḍḍu avanti di carricàrinni autri, accussì
+ nun blocchi a fila pi’ l’autri utenti.
+ other: Già hai %{count} tracciati chi’ si stannu carricannu. Pi’ favuri cunsìddira
+ si’ poi spittari chi’ finisciunu chiḍḍi avanti di carricàrinni autri, accussì
+ nun blocchi a fila pi’ l’autri utenti.
+ trace_optionals:
+ tags: Etichetti
+ view:
+ title: Visioni dû tracciatu %{name}
+ heading: Visioni dû tracciatu %{name}
+ pending: IN CUDA
+ filename: 'Nomu dû file:'
+ download: scàrrica
+ uploaded: 'Carricatu u:'
+ points: 'Punti:'
+ start_coordinates: 'Coordinata di principiu:'
+ map: mappa
+ edit: cancia
+ owner: 'Prupietariu:'
+ description: 'Discrizzioni:'
+ tags: 'Etichetti:'
+ none: Nuḍḍa
+ edit_track: Cancia stu tracciatu
+ delete_track: Cancella stu tracciatu
+ trace_not_found: Tracciatu nun truvatu!
+ visibility: 'Visibbilità:'
+ trace_paging_nav:
+ showing_page: Pàggina %{page}
+ older: Tracciati cchiu’ vecchî
+ newer: Tracciati cchiu’ novi
+ trace:
+ pending: IN CUDA
+ count_points: '%{count} punti'
+ ago: '%{time_in_words_ago} fa'
+ more: dittagghî
+ trace_details: Talìa i dittagghî dû tracciatu
+ view_map: Talìa supra â carta
+ edit: cancia
+ edit_map: Cancia a carta unni stu tracciatu
+ public: PÙBBLICA
+ identifiable: IDINTIFICÀBBILI
+ private: PRIVATA
+ trackable: TRACCIÀBBILI
+ by: di
+ in: nta
+ map: carta
+ list:
+ public_traces: Tracciati GPS pùbblici
+ your_traces: I to tracciati GPS
+ public_traces_from: Tracciati GPS pùbblici di %{user}
+ description: Talìa i tracciati GPS carricati di picca tempu
+ tagged_with: ' etichittati cu’ %{tags}'
+ empty_html: Ancora nun nn’havi nuḍḍu. <a href='%{upload_link}'>Càrrica nu tracciatu
+ novu</a>, o puru nfòrmiti cchiu’ ssai a’ prupòsitu dî tracciati GPS nta sta
+ <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>pàggina dâ
+ wiki</a>.
+ delete:
+ scheduled_for_deletion: Tracciatu ntâ spittata dâ cancillazzioni
+ make_public:
+ made_public: Tracciatu fattu pùbblicu
+ offline_warning:
+ message: U sistema di carricamentu dî file GPX pi’ com’ora è fora sirvizziu
+ offline:
+ heading: Memurizzazzioni dî GPX fora sirvizziu
+ message: U sistema di mimurizzazzioni e carricamentu dî file GPX pi’ com’ora
+ è fora sirvizziu.
+ georss:
+ title: Tracciati GPS di OpenStreetMap
+ description:
+ description_with_count:
+ one: File GPX cu’ %{count} punti di %{user}
+ other: File GPX cu’ %{count} punti di %{user}
+ description_without_count: File GPX di %{user}
+ application:
+ require_cookies:
+ cookies_needed: Pari chi’ hai i cookie disattivati; pi’ favuri attìvili ntô
+ to browser prima chi’ cuntinui.
+ require_moderator:
+ not_a_moderator: Hâ’ jèssiri nu mudiraturi pi’ fari st’opirazzioni.
+ setup_user_auth:
+ blocked: Fu’ bluccatu u to accessu a’ l’API. Pi’ favuri trasi via web pi’ sapìrinni
+ cchiu’ ssai.
+ need_to_see_terms: Fu’ suspinnutu timpuraniamenti u to accessu a’ l’API. Pi’
+ favuri trasi dû situ pi’ taliari i cunnizzioni di cuntribbuzioni. Nun ll’hâ’
+ accittari pi’ forza, però ll’hâ’ taliari.
+ oauth:
+ oauthorize:
+ title: Auturizzari l’accessu ô to cuntu
+ request_access: L’applicazzioni %{app_name} dumanna accessu ô to cuntu, %{user}.
+ Pi’ favuri cuntrolla si’ ti piaci chi’ l’applicazzioni havi accessu a’ sti
+ funziunalità. Poi scègghîri chiḍḍi chi’ voi, a’ to piaciri.
+ allow_to: 'Duna a’ l’applicazzioni clienti u pirmissu di:'
+ allow_read_prefs: lèggiri i mpustazzioni dû to utenti.
+ allow_write_prefs: canciari i mpustazzioni dû to utenti.
+ allow_write_diary: criari vuci dû diariu e cummenti, e fari amici.
+ allow_write_api: canciari a cartina.
+ allow_read_gpx: lèggiri i to tracciati GPS privati.
+ allow_write_gpx: carricari i tracciati GPS.
+ allow_write_notes: canciari i noti.
+ oauthorize_success:
+ title: Richiesta di auturizzazzioni cunciduta
+ allowed: Cuncidisti l’accessu ô to cuntu a’ l’applicazzioni %{app_name}.
+ verification: U còdici di virifica è %{code}.
+ oauthorize_failure:
+ title: Richiesta di auturizzazzioni nigata
+ denied: Nigasti l’accessu ô to cuntu a’ l’applicazzioni %{app_name}.
+ invalid: U token di auturizzazzioni nun è bonu.
+ revoke:
+ flash: Rivucasti u lassa-passari pi’ %{application}
+ oauth_clients:
+ new:
+ title: Riggistrazzioni di n’applicazzioni nova
+ submit: Riggìstra
+ edit:
+ title: Cancia a to applicazzioni
+ submit: Cancia
+ show:
+ title: Dittagghî di OAuth pi’ %{app_name}
+ key: 'Consumer Key:'
+ secret: 'Consumer Secret:'
+ url: 'URL pû Request Token:'
+ access_url: 'URL pi’ l’Access Token:'
+ authorize_url: 'URL di auturizzazzioni:'
+ support_notice: Suppurtamu i firmi HMAC-SHA1 (cunsigghiati) e RSA-SHA1.
+ edit: Cancia i dittagghî
+ delete: Cancella stu clienti
+ confirm: Si’ sicuru?
+ requests: 'Dumanna a’ l’utenti sti pirmissi:'
+ allow_read_prefs: lèggiri i so mpustazzioni ill’utenti.
+ allow_write_prefs: canciari i so mpustazzioni ill’utenti.
+ allow_write_diary: criari vuci dû diariu e cummenti, e fari amici.
+ allow_write_api: canciari a carta.
+ allow_read_gpx: lèggiri i so tracciati GPS privati.
+ allow_write_gpx: carricari i tracciati GPS.
+ allow_write_notes: canciari i noti.
+ index:
+ title: I me dittagghî OAuth
+ my_tokens: I me applicazzioni auturizzati
+ list_tokens: 'A’ l’applicazzioni furu assignati sti lassa-passari a’ nomu toi:'
+ application: Nomu ill’applicazzioni
+ issued_at: Cuncidutu in data
+ revoke: Rèvuca!
+ my_apps: I me applicazzioni clienti
+ no_apps: Hai n’applicazzzioni chi’ vulissi riggistrari unni nui adupirannu u
+ standard %{oauth}? A to applicazzioni web s’havi a’ riggistrari prima chi’
+ po’ fari richiesti OAuth unni stu sirvizziu.
+ registered_apps: 'Hai riggistrati st’applicazzioni clienti:'
+ register_new: Riggistra a to applicazzioni
+ form:
+ name: Nomu
+ required: Obbligatoriu
+ url: URL principali ill’applicazzioni
+ callback_url: URL di callback
+ support_url: URL ill’assistenza
+ requests: 'Dumanna a’ l’utenti sti pirmissi:'
+ allow_read_prefs: lèggiri i so mpustazzioni ill’utenti.
+ allow_write_prefs: canciari i so mpustazzioni ill’utenti.
+ allow_write_diary: criari vuci dû diariu e cummenti, e fari amici.
+ allow_write_api: canciari a carta.
+ allow_read_gpx: lèggiri i so tracciati GPS privati.
+ allow_write_gpx: carricari i tracciati GPS.
+ allow_write_notes: canciari i noti.
+ not_found:
+ sorry: Purtroppu ḍḍu %{type} nun si potti truvari.
+ create:
+ flash: Nfurmazzioni riggistrati boni
+ update:
+ flash: I nfurmazzioni dû clienti furu aggiurnati boni
+ destroy:
+ flash: Fu’ distruggiuta a riggistrazzioni ill’applicazzioni clienti
+ user:
+ login:
+ title: Trasi
+ heading: Trasi
+ email or username: 'Nnirizzu di posta elittrònica o nomu utenti:'
+ password: 'Palora d’òrdini:'
+ openid: '%{logo} OpenID:'
+ remember: Ricòrditi i mia
+ lost password link: Pirdisti a to palora d’òrdini?
+ login_button: Trasi
+ register now: Scrìviti ora
+ with username: 'Già hai un cuntu di OpenStreetMap? Pi’ favuri trasi cû to nomu
+ utenti e palora d’òrdini:'
+ with external: 'O puru, trasi pi’ menzu di na terza parti:'
+ new to osm: Si’ novu nta OpenStreetMap?
+ to make changes: Pi’ fari canciamenti ntê dati di OpenStreetMap, prima hâ’ aviri
+ un cuntu.
+ create account minute: Crìa un cuntu. Cci voli sulu un minutu.
+ no account: Nun hai un cuntu?
+ account not active: Purtroppu u to cuntu ancora nun è attivatu.<br />P’attivàrulu,
+ pi’ favuri adòpira u culligamentu chi’ ti rrivàu ntô missaggiu di posta elittrònica
+ di cunfirma, o puru <a href="%{reconfirm}">dumanna chi’ ti mànnunu n’autru
+ missaggiu di cunfirma</a>.
+ account is suspended: Purtroppu u to cuntu fu’ suspinnutu pi’ causa di attività
+ suspetti.<br/>Pi’ favuri cuntatta <a href="%{webmaster}">u webmaster</a> si’
+ nni voi discùtiri.
+ auth failure: Purtroppu nun fu’ pussìbili tràsiri cu’ sti dittagghî.
+ openid_logo_alt: Trasi cu n’OpenID
+ auth_providers:
+ openid:
+ title: Trasi cu n’OpenID
+ alt: Trasi cu n’URL OpenID
+ google:
+ title: Trasi cu’ Google
+ alt: Trasi cu n’OpenID di Google
+ facebook:
+ title: Trasi cu’ Facebook
+ alt: Trasi cûn cuntu di Facebook
+ windowslive:
+ title: Trasi cu’ Windows Live
+ alt: Trasi cûn cuntu di Windows Live
+ yahoo:
+ title: Trasi cu’ Yahoo
+ alt: Trasi cu n’OpenID di Yahoo
+ wordpress:
+ title: Trasi cu’ Wordpress
+ alt: Trasi cu n’OpenID di Wordpress
+ aol:
+ title: Trasi cu’ AOL
+ alt: Trasi cu n’OpenID di AOL
+ logout:
+ title: Nesci
+ heading: Nesci di OpenStreetMap
+ logout_button: Nesci
+ lost_password:
+ title: Palora d’òrdini pirduta
+ heading: Ti scurdasti a palora d’òrdini?
+ email address: 'Nnirizzu di posta elittrònica:'
+ new password button: Azzera a palora d’òrdini
+ help_text: Scrivi u nnirizzu di posta elittrònica ch’adupirasti quannu ti scrivisti,
+ e cci manniremu nu culligamentu chi’ purrai adupirari p’azzirari a to palora
+ d’òrdini.
+ notice email on way: Nni dispiaci ch’a pirdisti :-( però ti sta rrivannu nu
+ missaggiu di posta elittrònica pi’ menzu dû quali prestu a purrai azzirari.
+ notice email cannot find: Putroppu nun si trova stu nnirizzu di posta elittrònica.
+ reset_password:
+ title: Azzera a palora d’òrdini
+ heading: Azziramentu dâ palora d’òrdini di %{user}
+ password: 'Palora d’òrdini:'
+ confirm password: 'Cunfirma a palora d’òrdini:'
+ reset: Azzera a palora d’òrdini
+ flash changed: A to palora d’òrdini fu’ canciata.
+ flash token bad: Stu còdici nun si trova, picchì nun cuntrolli l’URL?
+ new:
+ title: Scrìviti
+ no_auto_account_create: Purtroppu comu ad ora nun semu n gradu di criàriti un
+ cuntu di manera autumàtica.
+ contact_webmaster: Pi’ favuri cuntatta ô <a href="mailto:webmaster@openstreetmap.org">webmaster</a>
+ pi’ fàriti criari un cuntu; pruviremu a’ pigghiari a’ cunsiddirazzioni a to
+ richiesta nta cchiu’ picca tempu pussìbbili.
+ about:
+ header: Lìbbira e canciàbbili
+ html: |-
+ <p>A’ diffirenza di autri cartini, OpenStreetMap è criata cumplitamenti di genti comu a’ tia,
+ e tutti sunnu lìbbiri di cunsàrila, aggiurnàrila, scarricàrila e adupiràrila.</p>
+ <p>Scrìviti p’accuminciari a’ dari u to cuntribbutu. Ti manniremu nu missaggiu di posta elittrònica pi’ cunfirmari u to cuntu.</p>
+ license_agreement: Quannu cunfirmi u to cuntu hâ’ accittari i <a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">cunnizziuni
+ di cuntribbuzzioni</a>.
+ email address: 'Nnirizzu di posta elittrònica:'
+ confirm email address: 'Cunfirma u nnirizzu di posta elittrònica:'
+ not displayed publicly: Nun veni mmustratu pubblicamenti (talìa <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
+ title="wiki privacy policy including section on email addresses">a pulitica
+ dâ risirvatizza</a>)
+ display name: 'Nomu mmustratu:'
+ display name description: U nomu dû to utenti comu veni mmustratu pubblicamenti.
+ Ppoi u poi canciari ntê prifirenzi.
+ external auth: 'Autenticazzioni di terzi parti:'
+ password: 'Palora d’òrdini:'
+ confirm password: 'Cunfirma a palora d’òrdini:'
+ use external auth: O puru, trasi pi’ menzu di na terza parti
+ auth no password: Cu’ l’autenticazzioni di terzi parti nun cci voli na palora
+ d'òrdini, però certi strumenti o serventi nni ponnu richièdiri una u stissu.
+ auth association: |-
+ <p>A to ID ancora nun è assuciata a’ nuḍḍu cuntu di OpenStreetMap.</p>
+ <ul>
+ <li>Si’ si’ novu nta OpenStreetMap, pi’ favuri crìa un cuntu novu adupirannu u mòdulu ccassutta.</li>
+ <li>
+ Si’ già hai un cuntu, cci poi tràsiri
+ adupirannu u to nomu utenti e a to palora d’ordini, pi’ ppoi assuciàrilu
+ câ to OpenID ntê to mpustazzioni ill’utenti.
+ </li>
+ </ul>
+ continue: Scrìviti
+ terms accepted: Ti ringrazziamu d’aviri accittatu i cunnizzioni di cuntribbuzzioni
+ novi!
+ terms declined: Nni dispiaci chi’ dicidisti di nun accitari i cunnizzioni di
+ cuntribbuzzioni novi. Pi’ maggiuri nfurmazzioni, pi’ favuri talìa <a href="%{url}">sta
+ pàggina dâ wiki</a>.
+ terms:
+ title: Cunnizzioni di cuntribbuzzioni
+ heading: Cunnizzioni di cuntribbuzzioni
+ read and accept: Pi’ favuri lèggiti stu cuntrattu e carca u buttuni «accettu»
+ pi’ cunfirmari chi’ accetti i cunnizzioni di stu cuntrattu pî to cuntribbuti
+ esistenti e futuri.
+ consider_pd: Sparti dû cuntrattu ccassupra, cunsìddiru ch’i me cuntribbuti sunnu
+ ntô Pùbblicu Duminiu
+ consider_pd_why: chi’ voli diri?
+ guidance: 'Nfurmazzioni chi’ ti ponnu ajutari a’ capiri sti cunnizzioni: nu
+ <a href="%{summary}">riassuntu liggìbbili dî genti</a> e quarchi’ <a href="%{translations}">traduzzioni
+ infurmali</a>'
+ agree: Accettu
+ decline: Rifiutu
+ you need to accept or decline: Pi’ cuntinuari, pi’ favuri leggi i cunnizzioni
+ di cuntribbuzzioni novi e ppoi accèttili o rifiùtili.
+ legale_select: 'Paìsi di risidenza:'
+ legale_names:
+ france: Francia
+ italy: Italia
+ rest_of_world: Restu dû munnu
+ no_such_user:
+ title: St’utenti nun cc’è
+ heading: L’utenti %{user} nun esisti
+ body: Purtroppu nun cc’è nuḍḍu utenti chi’ si chiama %{user}. Pi’ favuri cuntrolla
+ chi’ scrivisti bonu, o puru po’ jèssiri ch’u culligamentu chi’ cliccasti è
+ sbagghiatu.
+ view:
+ my diary: U me diariu
+ new diary entry: vuci nova dû diariu
+ my edits: I me canciamenti
+ my traces: I me tracciati
+ my notes: I me noti
+ my messages: I me missaggi
+ my profile: U me prufilu
+ my settings: I me mpustazzioni
+ my comments: I me cummenti
+ oauth settings: mpustazzioni di oauth
+ blocks on me: Cu blocca a’ mia
+ blocks by me: A’ cu bloccu io
+ send message: Manna nu missaggiu
+ diary: Diariu
+ edits: Canciamenti
+ traces: Tracciati
+ notes: Noti dâ cartina
+ remove as friend: Leva ill’amici
+ add as friend: Agghiunci a’ l’amici
+ mapper since: 'Mappaturi di:'
+ ago: (%{time_in_words_ago} fa)
+ ct status: 'Cunnizzioni di cuntribbuzzioni:'
+ ct undecided: Nun havi dicidutu
+ ct declined: Rifiutati
+ ct accepted: Accittati %{ago} fa
+ latest edit: 'Ùltimu canciamentu %{ago}:'
+ email address: 'Nnirizzu di posta elittrònica:'
+ created from: 'Criatu di:'
+ status: 'Statu:'
+ spam score: 'Punteggiu di Spam:'
+ description: Discrizzioni
+ user location: Pusizzioni ill’utenti
+ if set location: Mposta a to pusizzioni basi ntâ pàggina dî %{settings_link}
+ pi’ vìdiri quali utenti stannu vicinu a’ tia.
+ settings_link_text: mpustazzioni
+ your friends: I to amici
+ no friends: Ancora nun hai gghiunciutu nuḍḍu amicu.
+ km away: luntanu %{count} km
+ m away: luntanu %{count} m
+ nearby users: Autri utenti vicinu
+ no nearby users: Ancora nun cci sunnu autri utenti chi’ si dichiàrunu mappatura
+ cca vicinu.
+ role:
+ administrator: St’utenti è n’amministraturi
+ moderator: St’utenti è nu mudiraturi
+ grant:
+ administrator: Cuncedi l’accessu comu amministraturi
+ moderator: Cuncedi l’accessu comu mudiraturi
+ revoke:
+ administrator: Rèvuca l’accessu comu amministraturi
+ moderator: Rèvuca l’accessu comu mudiraturi
+ block_history: blocchi ricivuti
+ moderator_history: blocchi dati
+ comments: Cummenti
+ create_block: blocca a’ st’utenti
+ activate_user: attiva a’ st’utenti
+ deactivate_user: disattiva a’ st’utenti
+ confirm_user: cunfirma a’ st’utenti
+ hide_user: mmuccia a’ st’utenti
+ unhide_user: mmustra a st’utenti
+ delete_user: cancella a’ st’utenti
+ confirm: Cunfirma
+ friends_changesets: gruppa di canciamenti ill’amici
+ friends_diaries: vuci dî diarî ill’amici
+ nearby_changesets: gruppa di canciamenti ill’utenti vicini
+ nearby_diaries: vuci dî diarî ill’utenti vicini
+ popup:
+ your location: A to pusizzioni
+ nearby mapper: Mappaturi vicinu
+ friend: Amicu
+ account:
+ title: Cancia u cuntu
+ my settings: I me mpustazzioni
+ current email address: 'Nnirizzu di posta elittrònica attuali:'
+ new email address: 'Nnirizzu di posta elittrònica novu:'
+ email never displayed publicly: (nun veni mmustratu mai pubblicamenti)
+ external auth: 'Autenticazzioni esterna:'
+ openid:
+ link: http://wiki.openstreetmap.org/wiki/IT:OpenID
+ link text: chi’ voli diri?
+ public editing:
+ heading: 'Canciamenti pùbblici:'
+ enabled: Attivati. Nun si’ anònimu e poi canciari i dati.
+ enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
+ enabled link text: chi’ voli diri?
+ disabled: Disattivati, e nun po’ canciari i dati, tutti i canciamenti pricidenti
+ sunnu anònimi.
+ disabled link text: picchì nun pozzu fari canciamenti?
+ public editing note:
+ heading: Canciamenti pùbblici
+ text: Com’ad ora i to canciamenti sunnu anònimi e i genti nun ti ponnu mannari
+ missaggi o vìdiri unni si’. Pi’ fari a’ vìdiri chiḍḍu chi’ canci e pirmèttiri
+ ê genti di cuntattàriti pi’ menzu dû situ web, carca u buttuni cassutta.
+ <b>A’ pàrtiri ill’introduzzioni ill’API 0.6, sulu l’utenti pùbblici ponnu
+ canciari i dati dâ carta</b>. (<a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">vidi
+ picchì</a>).<ul><li>Si’ diventi n’utenti pùbblicu u to nnirizzu i posta
+ nun sarravi pùbblicatu.</li><li>Sta dicisioni nun si po’ annullari, e a’
+ ccuminciari di ora tutti l’utenti novi su’ pùbblici comu mpustazzioni pridifinuta.</li></ul>
+ contributor terms:
+ heading: 'Cunnizzioni di cuntribbuzzioni:'
+ agreed: Accittasti i cunnizzioni di cuntribbuzzioni novi.
+ not yet agreed: Ancora nun hai accittatu i cunnizzioni di cuntribbuzioni novi.
+ review link text: Quannu voi tu vai nta stu link pi’ lèggiri e accittari i
+ cunnizzioni di cuntribbuzioni novi.
+ agreed_with_pd: Dichiarasti macari chi’ cunsìddiri i to canciamenti nto Pùbblicu
+ Duminiu.
+ link text: chi’ voli diri?
+ profile description: 'Discrizzioni dû prufilu:'
+ preferred languages: 'Lingui prifiruti:'
+ preferred editor: 'Editor prifirutu:'
+ image: 'Mmàggini:'
+ gravatar:
+ gravatar: Adòpira Gravatar
+ link text: chi’ voli diri?
+ new image: Agghiunci na mmàggini
+ keep image: Manteni a mmàggini attuali
+ delete image: Leva a mmàggini attuali
+ replace image: Rimpiazza a mmàggini attuali
+ image size hint: (su’ mègghiu i mmàggini quatrati 100x100 o cchiu’ grossi)
+ home location: 'Pusizzioni basi:'
+ no home location: Ancora nun hai mpustatu a to pusizzioni basi.
+ latitude: 'Latitùdini:'
+ longitude: 'Longitùdini:'
+ update home location on click: Aggiorna a pusizzioni basi quannu cliccu supra
+ â carta?
+ save changes button: Sarva i canciamenti
+ make edits public button: Renni tutti i me canciamenti pùbblici
+ return to profile: Ritorna ô prufilu
+ flash update success confirm needed: I nfurmazziuni ill’utenti furu aggiurnati
+ boni. Cuntrolla a to posta elittronica chi’ t’havi a’ rrivari un missaggiu
+ pi’ cunfirmari u nnirizzu di posta novu.
+ flash update success: I nfurmazziuni ill’utenti furu aggiurnati boni.
+ confirm:
+ heading: Talìa a to posta!
+ introduction_1: Ti mannammu nu missaggiu di posta elittrònica di cunfirma.
+ introduction_2: Cunfirma u to cuntu cliccannu u link ntô missaggiu e poi ccuminciari
+ a’ mappari.
+ press confirm button: Carca u buttuni «cunfirma» ccassutta p’attivari u to cuntu.
+ button: Cunfirma
+ success: Cunfirmasti u to cuntu, ti ringrazziamu p’avìriti scrivutu!
+ already active: Già stu cuntu havi statu cunfirmatu.
+ unknown token: Ḍḍu còdici di cunfirma o scadìu o nun esisti.
+ reconfirm_html: Si’ voi chi’ ti mannamu n’autra vota u missaggiu di cunfirma,
+ <a href="%{reconfirm}">clicca cca</a>.
+ confirm_resend:
+ success: Ti mannammu n’autru missaggiu di cunfirma unni %{email}, e u forti
+ chi’ cunfirmi u to cuntu poi ccuminciari a’ mappari.<br /><br />S’adòpiri
+ nu sistema anti-spam chi’ manna richiesti di cunfirma, pi’ favuri hâ’ mèttiri
+ u nnirizzu webmaster@openstreetmap.org ntâ so lista janca, picchì nuiautri
+ nun putemu rispùnniri a’ nuḍḍa richiesta di cunfirma.
+ failure: Utenti %{name} nun truvatu.
+ confirm_email:
+ heading: Cunfirma dû canciu dû nnirizzu di posta
+ press confirm button: Carca u buttuni «cunfirma» ccassutta pi’ cunfirmari u
+ to nnirizzu di posta elittrònica novu.
+ button: Cunfirma
+ success: Cunfirmasti u canciamentu dû to nnirizzu di posta!
+ failure: Già cu’ stu còdici fu’ cunfirmatu nu nnirizzu di posta.
+ unknown_token: Ḍḍu còdici di cunfirma o scadìu o nun esisti.
+ set_home:
+ flash success: Pusizzioni basi sarvata bona.
+ go_public:
+ flash success: Ora tutti i to canciamnti sunnu pùbblici, e hai u pirmissu di
+ fari canciamenti.
+ make_friend:
+ heading: Agghiunciri a’ %{user} comu amicu?
+ button: Agghiunci comu amicu
+ success: Ora %{name} è amicu toi!
+ failed: Purtroppu a junta di %{name} comu amicu nun riniscìu.
+ already_a_friend: Già siti amici cu’ %{name}.
+ remove_friend:
+ heading: Livari %{user} ill’amici?
+ button: Leva ill’amici
+ success: '%{name} fu’ livatu dî to amici.'
+ not_a_friend: '%{name} nun è amicu toi.'
+ filter:
+ not_an_administrator: Hâ’ jèssiri n’amministraturi pi’ fari st’opirazzioni.
+ list:
+ title: Utenti
+ heading: Utenti
+ showing:
+ one: Pàggina %{page} (%{first_item} di %{items})
+ other: Pàggina %{page} (%{first_item}-%{last_item} di %{items})
+ summary: '%{name} criatu di %{ip_address} u %{date}'
+ summary_no_ip: '%{name} criatu u %{date}'
+ confirm: Cunfirma a’ l’utenti scigghiuti
+ hide: Mmuccia a’ l’utenti scigghiuti
+ empty: Nun fu’ truvatu nuḍḍu utenti chi’ currispunni
+ suspended:
+ title: Cuntu suspinnutu
+ heading: Cuntu suspinnutu
+ webmaster: webmaster
+ body: |-
+ <p>
+ Purtroppu, u to cuntu fu’ suspinnutu di manera autumatica pi’ attività suspetti.
+ </p>
+ <p>
+ Tra picca tempu sta dicisioni sarravi esaminata di n’amministraturi,
+ o puru poi cuntattari u %{webmaster} si’ nni voi discùtiri.
+ </p>
+ auth_failure:
+ connection_failed: U culligamentu cû furnituri ill’autenticazzioni nun riniscìu
+ invalid_credentials: Cridinziali d’autenticazzioni nun vàlidi
+ no_authorization_code: Nuḍḍu còdici d’auturizzazzioni
+ unknown_signature_algorithm: Alguritmu di firma scanusciutu
+ invalid_scope: Àmmitu nun vàlidu
+ user_role:
+ filter:
+ not_an_administrator: Sulu l’amministratura ponnu gistiri i roli, e tu nun si’
+ amministraturi.
+ not_a_role: A stringa «%{role}» nun è un rolu vàlidu.
+ already_has_role: L’utenti già havi u rolu %{role}.
+ doesnt_have_role: L’utenti nun havi u rolu %{role}.
+ grant:
+ title: Cunfirma a cuncissioni dûn rolu
+ heading: Cunfirma a cuncissioni dûn rolu
+ are_you_sure: Si’ sicuru chi’ voi cuncèdiri u rolu «%{role}» a’ l’utenti «%{name}»?
+ confirm: Cunfirma
+ fail: Nun fu’ pussìbbili cuncèdiri u rolu «%{role}» a’ l’utenti «%{name}». Pi’
+ favuri cuntrolla chi’ tantu l’utenti quantu u rolu sunnu vàlidi.
+ revoke:
+ title: Cunfirma a rèvuca dûn rolu
+ heading: Cunfirma a rèvuca dûn rolu
+ are_you_sure: Si’ sicuru chi’ voi rivucari u rolu «%{role}» a’ l’utenti «%{name}»?
+ confirm: Cunfirma
+ fail: Nun fu’ pussìbbili rivucari u rolu «%{role}» a’ l’utenti «%{name}». Pi’
+ favuri cuntrolla chi’ tantu l’utenti quantu u rolu sunnu vàlidi.
+ user_block:
+ model:
+ non_moderator_update: Hâ’ jèssiri nu mudiraturi pi’ criari o canciari un bloccu.
+ non_moderator_revoke: Hâ’ jèssiri nu mudiraturi pi’ rivucari un bloccu.
+ not_found:
+ sorry: Purtroppu u bloccu cu’ ID %{id} nun si potti truvari.
+ back: Ritorna a’ l’ìnnici
+ new:
+ title: Criazzioni dûn bloccu di %{name}
+ heading: Criazzioni dûn bloccu di %{name}
+ reason: U mutivu picchì si sta’ bluccannu a’ %{name}. Pi’ favuri hâ’ jèssiri
+ u cchiu’ calmu e raggiunìvuli pussìbbili, spiegannu tutti i dittagghî dâ situazzioni,
+ e ricurdànnusi chi’ stu missaggiu sarravi visìbbili pubblicamenti. Teni prisenti
+ chi’ nun tutti l’utenti capìsciunu u gergu dâ cumunità, pi’ chistu cerca d’adupirari
+ tèrmini chi’ tutti ponnu cumprènniri.
+ period: Pi’ quantu tempu, a’ partiri di ora, l’utenti sarravi bluccatu ill’usu
+ ill’API.
+ submit: Crìa u bloccu
+ tried_contacting: Haju cuntattatu l’utenti e cc’haju dumannatu di finìrila.
+ tried_waiting: Cci desi tempu a’ sufficienza pi’ rispùnniri â me cumunicazzioni.
+ needs_view: L’utenti havi a’ tràsiri prima chi’ stu bloccu veni cancillatu
+ back: Talìa tutti i blocchi
+ edit:
+ title: Canciamentu dû bloccu di %{name}
+ heading: Canciamentu dû bloccu di %{name}
+ reason: U mutivu picchì si sta’ bluccannu a’ %{name}. Pi’ favuri hâ’ jèssiri
+ u cchiu’ calmu e raggiunìvuli pussìbbili, spiegannu tutti i dittagghî dâ situazzioni.
+ Teni prisenti chi’ nun tutti l’utenti capìsciunu u gergu dâ cumunità, pi’
+ chistu cerca d’adupirari tèrmini chi’ tutti ponnu cumprènniri.
+ period: Pi’ quantu tempu, a’ partiri di ora, l’utenti sarravi bluccatu ill’usu
+ ill’API.
+ submit: Aggiorna u bloccu
+ show: Talìa stu bloccu
+ back: Talìa tutti i blocchi
+ needs_view: Havi a’ tràsiri l’utenti avanti chi’ stu bloccu veni cancillatu?
+ filter:
+ block_expired: U bloccu già scadìu e nun si po’ canciari.
+ block_period: U pirìudu di bloccu havi a’ jèssiri unu di valuri chi’ si ponnu
+ scègghîri ill’elencu a’ scinnuta.
+ create:
+ try_contacting: Pi’ favuri prova a’ cuntattari l’utenti prima i bluccàrilu e
+ dacci tempu a’ sufficienza pi’ rispùnniri.
+ try_waiting: Pi’ favuri duna a’ l’utenti tempu a’ sufficienza pi’ rispùnniri
+ prima ch’u blocchi.
+ flash: Fu’ criatu nu bloccu contra a’ l’utenti %{name}.
+ update:
+ only_creator_can_edit: Sulu u mudiraturi chi’ criàu stu bloccu u po’ canciari.
+ success: Bloccu aggiurnatu.
+ index:
+ title: Blocchi ill’utenti
+ heading: Elencu dî blocchi ill’utenti
+ empty: Ancura nun fu’ fattu nuḍḍu bloccu.
+ revoke:
+ title: Rèvuca dû bloccu di %{block_on}
+ heading: Rèvuca dû bloccu di %{block_on} fattu di %{block_by}
+ time_future: Stu bloccu finiravi tra %{time}.
+ past: Stu bloccu finìu %{time} fa e ora nun si po’ rivucari cchiu’.
+ confirm: Si’ sicuru chi’ voi rivucari stu bloccu?
+ revoke: Rèvuca!
+ flash: Stu bloccu fu’ rivucatu.
+ period:
+ one: 1 ura
+ other: '%{count} uri'
+ partial:
+ show: Mmustra
+ edit: Cancia
+ revoke: Rèvuca!
+ confirm: Si’ sicuru?
+ display_name: Utenti bluccatu
+ creator_name: Criaturi
+ reason: Mutivu dû bloccu
+ status: Statu
+ revoker_name: Rivucatu di
+ not_revoked: (nun rivucatu)
+ showing_page: Pàggina %{page}
+ next: Appressu »
+ previous: « Arreti
+ helper:
+ time_future: Finisci tra %{time}
+ until_login: Attivatu nfina a’ quannu l’utenti trasi.
+ time_past: Finìu %{time} fa.
+ blocks_on:
+ title: Blocchi di %{name}
+ heading: Elencu dî blocchi contra a’ %{name}
+ empty: '%{name} nun hâ statu bluccatu ancora.'
+ blocks_by:
+ title: Blocchi fatti di %{name}
+ heading: Elencu dî blocchi fatti di %{name}
+ empty: '%{name} nun havi fattu nuḍḍu bloccu ancora.'
+ show:
+ title: '%{block_on} bluccatu di %{block_by}'
+ heading: '%{block_on} bluccatu di %{block_by}'
+ time_future: Finisci tra %{time}
+ time_past: Finìu %{time} fa
+ created: Criatu
+ ago: '%{time} fa'
+ status: Statu
+ show: Ammustra
+ edit: Cancia
+ revoke: Rèvuca!
+ confirm: Si’ sicuru?
+ reason: 'Mutivu dû bloccu:'
+ back: Talìa tutti i blocchi
+ revoker: 'Rivucaturi:'
+ needs_view: L’utenti havi a’ tràsiri prima chi’ stu bloccu veni cancillatu.
+ note:
+ description:
+ opened_at_html: Criatu %{when} fa
+ opened_at_by_html: Criatu %{when} fa di %{user}
+ commented_at_html: Aggiurnatu %{when} fa
+ commented_at_by_html: Aggiurnatu %{when} fa di %{user}
+ closed_at_html: Risulvuta %{when} fa
+ closed_at_by_html: Risulvuta %{when} fa di %{user}
+ reopened_at_html: Riapruta %{when} fa
+ reopened_at_by_html: Riapruta %{when} fa di %{user}
+ rss:
+ title: Noti di OpenStreetMap
+ description_area: N’elencu dî noti signalati, cummintati o risulvuti ntâ to
+ zona [(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]
+ description_item: Un flussu RSS pâ nota %{id}
+ opened: nota nova (vicinu a’ %{place})
+ commented: cummentu novu (vicinu a’ %{place})
+ closed: nota risulvuta (vicinu a’ %{place})
+ reopened: nota riattivata (vicinu a’ %{place})
+ entry:
+ comment: Cummentu
+ full: Nota cumpleta
+ mine:
+ title: Noti scritti o cummintati ill’utenti %{user}
+ heading: Noti di %{user}
+ subheading: Noti scritti o cummintati ill’utenti %{user}
+ id: Id
+ creator: Criaturi
+ description: Discrizzioni
+ created_at: Criata u
+ last_changed: Canciata l’ùltima vota u
+ ago_html: '%{when} fa'
+ javascripts:
+ close: Chiudi
+ share:
+ title: Cunnividi
+ cancel: Annulla
+ image: Mmàggini
+ link: Culligamentu o HTML
+ long_link: Culligamentu
+ short_link: Culligamentu scurzatu
+ geo_uri: Geo-URI
+ embed: HTML
+ custom_dimensions: Mposta diminsioni pirsunalizzati
+ format: 'Furmatu:'
+ scale: 'Scala:'
+ image_size: A mmàggini farravi a’ vìdiri u stratu standard a’
+ download: Scàrrica
+ short_url: URL curta
+ include_marker: Ncludi u signali
+ center_marker: Centra a cartina ntô signali
+ paste_html: Ncoḍḍa l’HTML pi’ ncurpurari ntôn situ web
+ view_larger_map: Talìa na cartina cchiu’ granni
+ key:
+ title: Legenda
+ tooltip: Legenda
+ tooltip_disabled: A legenda cc’è sulu pû stratu Standard
+ map:
+ zoom:
+ in: Zumma pi’ d’intra
+ out: Zumma pi’ fora
+ locate:
+ title: Ammustra unni sugnu
+ popup: Ti trovi nta {distance} {unit} di stu puntu
+ base:
+ standard: Standard
+ cycle_map: Cartina pî bicicletti
+ transport_map: Mappa dî trasporti
+ hot: Umanitaria
+ layers:
+ header: Strati dâ cartina
+ notes: Noti dâ cartina
+ data: Dati dâ cartina
+ overlays: Attiva i strati chi’ giùvunu pi’ risòlviri i prubblemi dâ cartina
+ title: Strati
+ copyright: © <a href='%{copyright_url}'>i cuntribbutura di OpenStreetMap</a>
+ donate_link_text: <a class='donate-attr' href='%{donate_url}'>Fai na dunazzioni</a>
+ site:
+ edit_tooltip: Cancia a cartina
+ edit_disabled_tooltip: Zumma pi’ putiri canciari a cartina
+ createnote_tooltip: Agghiunci na nota ntâ cartina
+ createnote_disabled_tooltip: Zumma pi’ putiri agghiùnciri noti ntâ cartina
+ map_notes_zoom_in_tooltip: Zumma pi’ putiri a’ vìdiri i noti ntâ cartina
+ map_data_zoom_in_tooltip: Zumma pi‘ putiri a’ vìdiri i dati dâ cartina
+ queryfeature_tooltip: Ricerca elimenti
+ queryfeature_disabled_tooltip: Zumma pi’ putiri circari l’elimenti
+ changesets:
+ show:
+ comment: Cummentu
+ subscribe: Abbòniti
+ unsubscribe: Annulla l’abbunamentu
+ hide_comment: mmuccia
+ unhide_comment: mmustra
+ notes:
+ new:
+ intro: Truvasti nu sbagghiu o quarchi’ cosa chi’ manca? Faccillu sapiri a’
+ l’autri mappatura, accussì u putemu cunsari. Sposta u signali ntâ pusizzioni
+ curretta e scrivi na nota pi’ spiegari quali è u prubblema. (Pi’ favuri
+ nun mèttiri nfurmazzioni pirsunali, o puru chi’ vènunu di cartini o elenchi
+ chi’ sunnu prutetti di drittu d’auturi.)
+ add: Agghiunci a nota
+ show:
+ anonymous_warning: Sta nota cunteni cummenti di utenti anònimi, chi’ s’avìssuru
+ a’ virificari di fonti innipinnenti.
+ hide: Mmuccia
+ resolve: Risolvi
+ reactivate: Attiva di novu
+ comment_and_resolve: Cummenta & risolvi
+ comment: Cummenta
+ edit_help: Sposta a cartina e zumma ntôn postu chi’ voi canciari, e ppoi clicca
+ cca.
+ directions:
+ engines:
+ graphhopper_bicycle: Bicicletta (GraphHopper)
+ graphhopper_foot: A’ pedi (GraphHopper)
+ mapquest_bicycle: Bicicletta (MapQuest)
+ mapquest_car: Màchina (MapQuest)
+ mapquest_foot: A’ pedi (MapQuest)
+ osrm_car: Màchina (OSRM)
+ directions: Innicazzioni
+ distance: Distanza
+ errors:
+ no_route: Nun si potti truvari nu caminu tra di sti du posti.
+ no_place: Purtroppu nun si potti truvari ḍḍu postu.
+ instructions:
+ continue_without_exit: Cuntinuari pi’ %{name}
+ slight_right_without_exit: Vutari na picca a’ manu dritta nta %{name}
+ turn_right_without_exit: Vutari a’ manu dritta nta %{name}
+ sharp_right_without_exit: Vutari tuttu a’ manu dritta nta %{name}
+ uturn_without_exit: Fari nvirsioni a’ U nta %{name}
+ sharp_left_without_exit: Vutari tuttu a’ manu manca nta %{name}
+ turn_left_without_exit: Vutari a’ manu manca nta %{name}
+ slight_left_without_exit: Vutari picca a’ manu manca nta %{name}
+ via_point_without_exit: (puntu dû traggittu)
+ follow_without_exit: Sicutari %{name}
+ roundabout_without_exit: Â rutunna pigghiari %{name}
+ leave_roundabout_without_exit: Nèsciri dâ rutunna - %{name}
+ stay_roundabout_without_exit: Ristari ntâ rutunna - %{name}
+ start_without_exit: Ccuminciari â fini di %{name}
+ destination_without_exit: Arrivu â distinazzioni
+ against_oneway_without_exit: Caminari contra dû sensu ùnicu nta %{name}
+ end_oneway_without_exit: Fini dû sensu ùnicu nta %{name}
+ roundabout_with_exit: Â rutunna pigghiari a nisciuta %{exit} nta %{name}
+ unnamed: senza nomu
+ courtesy: Innicazzioni pi’ gintili cuncissioni di %{link}
+ time: Tempu
+ query:
+ node: Gruppu
+ way: Caminu
+ relation: Rilazzioni
+ nothing_found: Nuḍḍu elimentu truvatu
+ error: 'Erruri ntô cuntattari %{server}: %{error}'
+ timeout: Tempu scadutu ntô cuntattari %{server}
+ redaction:
+ edit:
+ description: Discrizzioni
+ heading: Cancia occultamentu
+ submit: Sarva occultamentu
+ title: Cancia occultamentu
+ index:
+ empty: Nuḍḍu occultamentu di mmustrari.
+ heading: Lista ill’occultamenti
+ title: Lista ill’occultamenti
+ new:
+ description: Discrizzioni
+ heading: Immèttiri i nfurmazzioni dû novu occultamentu
+ submit: Crìa l’occultamentu
+ title: Criazzioni dûn novu occultamentu
+ show:
+ description: 'Discrizzioni:'
+ heading: Occultamentu «%{title}»
+ title: Occultamentu
+ user: 'Criaturi:'
+ edit: Cancia st’occultamentu
+ destroy: Leva st’occultamentu
+ confirm: Si’ sicuru?
+ create:
+ flash: Occultamentu criatu.
+ update:
+ flash: Canciamenti sarvati.
+ destroy:
+ not_empty: St’occultamentu nun è vacanti. Pi’ favuri leva ill’occultamentu tutti
+ i virsioni chi’ nni fannu parti avanti ch’u distruggi.
+ flash: Occultamentu distruggiutu.
+ error: Mmattìu n’erruri ntô distrùggiri st’occultamentu.
+...
results:
no_results: No results foond
more_results: Mair results
- distance:
- zero: less nor 1km
- one: aboot 1km
- other: aboot %{count}km
- direction:
- south_west: sooth-wast
- south: sooth
- south_east: sooth-east
- east: east
- north_east: north-east
- north: north
- north_west: north-wast
- west: wast
layouts:
logo:
alt_text: OpenStreetMap logo
# Author: KuboF
# Author: Kusavica
# Author: Lesny skriatok
+# Author: MartinSNV
# Author: MichalP
+# Author: Mikulas1
# Author: Mimarik
# Author: Nemo bis
# Author: Rudko
+# Author: Ruila
# Author: Teslaton
# Author: Vladolc
---
way_paginated: Cesty (%{x}–%{y} z %{count})
relation: Relácie (%{count})
relation_paginated: Relácie (%{x}–%{y} z %{count})
+ comment: Komentáre (%{count})
+ hidden_commented_by: Skrytý komentár od %{user} <abbr title='%{exact_time}'>pred
+ %{when}</abbr>
+ commented_by: Komentár od %{user} <abbr title='%{exact_time}'>pred %{when}</abbr>
changesetxml: XML sady zmien
osmchangexml: osmChange XML
feed:
title: Sada zmien %{id}
title_comment: Sada zmien %{id} - %{comment}
+ join_discussion: Zapojte sa do diskusie
+ discussion: Diskusia
node:
title: 'Uzol: %{name}'
history_title: 'História uzlu: %{name}'
way: cesta
relation: vzťah
start_rjs:
+ feature_warning: Načíta sa %{num_features} funkcií, ktoré môžu sposobiť, že
+ Váš prehliadač bude spomalený alebo nebude reagovať. Ste si istý, že chcete
+ zobraziť tieto údaje?
load_data: Načítať údaje
loading: Nahrávanie...
tag_details:
key: Stránka s popisom značky %{key} na wiki
tag: Stránka s popisom značky %{key}=%{value} na wiki
wikipedia_link: Článok %{page} na Wikipédii
+ telephone_link: Vytočiť %{phone_number}
note:
title: 'Poznámka: %{id}'
new_note: Nová poznámka
description: Popis
open_title: 'Nevyriešená chyba #%{note_name}'
closed_title: 'Vyriešená chyba #%{note_name}'
+ hidden_title: Skrytá poznámka %{note_name}
+ open_by: Vytvoril %{user} <abbr title='%{exact_time}'>pred %{when}</abbr>
+ open_by_anonymous: Vytvoril anonym <abbr title='%{exact_time}'>pred %{when}</abbr>
+ commented_by: Komentár od %{user} <abbr title='%{exact_time}'>pred %{when}</abbr>
+ commented_by_anonymous: Komentoval anonym <abbr title='%{exact_time}'>pred %{when}</abbr>
+ closed_by: Vyriešil %{user} <abbr title='%{exact_time}'>pred %{when}</abbr>
+ closed_by_anonymous: Vyriešil anonym <abbr title='%{exact_time}'>pred %{when}</abbr>
+ hidden_by: Skryl %{user} <abbr title='%{exact_time}'>pred %{when}</abbr>
changeset:
changeset_paging_nav:
showing_page: Stránka %{page}
bicycle_parking: Parkovisko bicyklov
bicycle_rental: Požičovňa bicyklov
biergarten: Záhradná krčma
+ boat_rental: Požičovňa lodí
brothel: Nevestinec
bureau_de_change: Zmenáreň
bus_station: Autobusová stanica
library: Knižnica
market: Obchod
marketplace: Tržnica
+ monastery: Kláštor
nightclub: Nočný klub
nursery: Jasle
nursing_home: Sanatórium
"yes": Most
building:
"yes": Budova
+ craft:
+ brewery: Pivovar
+ electrician: Elektrikár
+ gardener: Záhradník
+ painter: Maliar
+ photographer: Fotograf
+ plumber: Inštalatér
+ shoemaker: Obuvník
+ tailor: Krajčír
emergency:
+ ambulance_station: Stanica záchrannej služby
+ defibrillator: Defibrilátor
phone: Núdzový telefón
highway:
bridleway: Cesta pre kone
bus_stop: Zastávka autobusu
construction: Cesta vo výstavbe
cycleway: Cyklistický chodník
+ elevator: Výťah
emergency_access_point: Stanica prvej pomoci
footway: Chodník
ford: Brod
primary_link: Cesta I. triedy
proposed: Navrhovaná cesta
raceway: Pretekárska dráha
- residential: Ulica
+ residential: Ulica v obytnej štvrti
rest_area: Odpočívadlo
road: Cesta
secondary: Cesta II. triedy
tertiary: Cesta III. triedy
tertiary_link: Cesta III. triedy
track: Nespevnená cesta
+ traffic_signals: Semafor
trail: Chodník
trunk: Cesta pre motorové vozidlá
trunk_link: Privádzač k ceste pre motorové vozidlá
unclassified: Neklasifikovaná cesta
unsurfaced: Nespevnená cesta
+ "yes": Cesta
historic:
archaeological_site: Archeologické nálezisko
battlefield: Bojisko
boundary_stone: Hraničný kameň
- building: Budova
+ building: Historická budova
+ bunker: Bunker
castle: Hrad
church: Kostol
+ city_gate: Mestská brána
citywalls: Mestské hradby
fort: Pevnosť
+ heritage: Lokalita historického dedičstva
house: Dom
icon: Ikona
manor: Šľachtické sídlo
memorial: Pomník
mine: Baňa
monument: Pamätník
+ roman_road: Rímska cesta
ruins: Ruina
tomb: Náhrobok
tower: Veža
bird_hide: Vtáčia pozorovateľňa
common: Verejné priestranstvo
fishing: Rybolov (športový)
+ fitness_centre: Fitnescentrum
fitness_station: Fitnes zastávka
garden: Záhrada
golf_course: Golfové ihrisko
swimming_pool: Plaváreň
track: Bežecká dráha
water_park: Aquapark
+ man_made:
+ lighthouse: Maják
+ pipeline: Vodovod
+ tower: Veža
+ works: Továreň
military:
airfield: Vojenské letisko
barracks: Kasárne
forest: Les (udržiavaný)
geyser: Gejzír
glacier: Ľadovec
+ grassland: Trvalé trávne porasty
heath: Vresovisko
hill: Kopec
island: Ostrov
reef: Bradlo, Skalisko
ridge: Hrebeň
rock: Skala
+ saddle: Sedlo
+ sand: Piesok
scree: Sutina
scrub: Rúbanisko
spring: Prameň
spur: Železničná vlečka
station: Železničná stanica
stop: Železničná zastávka
- subway: Stanica metra
+ subway: Metro
subway_entrance: Vchod do metra
switch: Železničná výhybka
tram: Električka
wadi: Občasné riečisko(Vádí)
waterfall: Vodopád
weir: Splav
+ "yes": Vodná cesta
admin_levels:
level2: Štátna hranica
level4: Hranica kraja (state)
results:
no_results: Neboli nájdené žiadne výsledky
more_results: Viac výsledkov
- distance:
- one: asi 1 km
- zero: menej ako 1 km
- other: asi %{count} km
- direction:
- south_west: juhozápad
- south: juh
- south_east: juhovýchod
- east: východ
- north_east: severovýchod
- north: sever
- north_west: severozápad
- west: západ
layouts:
logo:
alt_text: Logo OpenStreetMap
help_page:
welcome:
title: Vitajte na OSM
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Sk:Beginners%27_guide
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
+ forums:
+ title: Fóra
+ irc:
+ title: IRC
about_page:
next: Ďalej
partners_title: Partneri
close: Zavrieť
search:
search: Hľadať
+ get_directions: Nájsť trasu
+ get_directions_title: Vyhľadať trasu medzi dvoma bodmi
+ from: Odkiaľ
+ to: Kam
where_am_i: Kde som?
where_am_i_title: Opis aktuálnej polohy pomocou vyhľadávača
submit_text: hľ.
register now: Zaregistrujte se
with username: 'Už máte na OpenStreetMap konto? Prihláste sa svojim menom a
heslom:'
- with openid: 'Alternatívne sa môžete prihlásiť svojím OpenID:'
new to osm: Ste na OpenStreetMap nový?
to make changes: Ak chcete upravovať OpenStreetMap, musíte mať používateľské
konto.
account is suspended: Ľutujeme, ale vaše konto bolo pozastavené vzhľadom na
podozrivú aktivitu.<br>Ak to chcete riešiť, môžete kontaktovať <a href="%{webmaster}">webmastera</a>.
auth failure: Ľutujeme, s uvedenými údajmi sa nie je možné prihlásiť.
- openid missing provider: Ľutujeme, nepodarilo se spojiť s vaším OpenID poskytovateľom
- openid invalid: Ľutujeme, ale vaše OpenID sa zdá byť nesprávne
openid_logo_alt: Prihlásenie pomocou OpenID
- openid_providers:
- openid:
- title: Prihlásenie pomocou OpenID
- alt: Prihlásenie pomocou OpenID URL
- google:
- title: Prihlásenie pomocou Google
- alt: Prihlásenie pomocou Google OpenID
- yahoo:
- title: Prihlásenie pomocou Yahoo
- alt: Prihlásenie pomocou Yahoo OpenID
- wordpress:
- title: Prihlásenie pomocou Wordpress
- alt: Prihlásenie pomocou Wordpress OpenID
- aol:
- title: Prihlásenie pomocou AOL
- alt: Prihlásenie pomocou AOL OpenID
logout:
title: Odhlásenie
heading: Odhlásenie z OpenStreetMap
display name: 'Zobrazované meno:'
display name description: Vaše verejne zobrazené meno užívateľa. Môžete ho potom
zmeniť v nastaveniach.
- openid: '%{logo} OpenID:'
password: 'Heslo:'
confirm password: 'Potvrdiť heslo:'
- use openid: Prípadne sa môžete prihlásiť pomocou %{logo} OpenID
- openid no password: S OpenID nie je heslo potrebné. Niektoré ďalšie nástroje
- alebo servery ho však vyžadovať môžu.
- openid association: |-
- <p>Vaše OpenID zatiaľ nebolo prepojené s kontom na OpenStreetMap.</p>
- <ul>
- <li>Ak ste na OpenStreetMap nový, vytvorte si konto pomocou formulára nižšie.</li>
- <li>
- Ak už konto máte, môžete sa prihlásiť
- pomocou používateľského mena a hesla a následne ho
- v používateľskom nastavení prepojiť s OpenID.
- </li>
- </ul>
continue: Zaregistrovať sa
terms accepted: Ďakujeme za odsúhlasenie nových podmienok prispievania!
terms declined: Je nám ľúto, že ste sa rozhodli neprijať nové Podmienky prispievania.
new email address: 'Nová e-mailová adresa:'
email never displayed publicly: (nikde se verejne nezobrazuje)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/CS:OpenID
link text: čo to znamená?
public editing:
press confirm button: Stlačte tlačítko na potvrdenie dole, pre aktiváciu vášho
účtu.
button: Potvrdiť
+ success: Váš účet je založený, ďakujeme, že ste sa zapísali!
already active: Toto používateľské konto už bolo potvrdené.
unknown token: Zadaný potvrdzovací kód vypršal alebo neexistuje.
reconfirm_html: Ak potrebujete, aby sme vám potvrdzovací e-mail poslali znova,
revoker: 'Odvolal:'
needs_view: Aby sa blok zmazal, požívateľ sa musí najprv prihlásiť.
note:
+ description:
+ opened_at_html: Vytvorené pred %{when}
mine:
creator: Autor
description: Popis
+ created_at: Vytvorené
javascripts:
close: Zavrieť
share:
add: Pridať poznámku
show:
hide: Skryť
+ directions:
+ engines:
+ graphhopper_bicycle: Bicykel (GraphHopper)
+ graphhopper_foot: Pešo (GraphHopper)
+ mapquest_bicycle: Bicykel (MapQuest)
+ mapquest_car: Automobil (MapQuest)
+ mapquest_foot: Pešo (MapQuest)
+ osrm_car: Automobil (OSRM)
+ directions: Trasa
+ distance: Vzdialenosť
+ errors:
+ no_route: Nepodarilo sa nájsť trasu medzi týmito miestami.
+ no_place: Ospravedlňujeme sa - nepodarilo sa nájsť toto miesto.
+ instructions:
+ unnamed: nepomenované
+ time: Čas
redaction:
edit:
description: Popis
# Author: Eleassar
# Author: Lesko987
# Author: Mateju
+# Author: Ruila
+# Author: Skalcaa
# Author: Stefanb
---
sl:
body: Besedilo
recipient: Prejemnik
user:
- email: Naslov e-pošte
+ email: Elektronski naslov
active: Aktiven
display_name: Prikazno ime
description: Opis
relation: zveza
changeset: Paket sprememb
timeout:
- sorry: Oprostite, podatki za %{type}, ID %{id}, ID se predolgo prenašajo.
+ sorry: Oprostite, podatki za %{type} z ID-jem %{id} se predolgo prenašajo.
type:
node: vozlišče
way: pot
reopened_by_anonymous: Ponovno aktiviral anonimni <abbr title='%{exact_time}'>%{when}
nazaj</abbr>
hidden_by: Skril %{user} <abbr title='%{exact_time}'>%{when} nazaj</abbr>
+ query:
+ nearby: Značilnosti v neposredni bližini
changeset:
changeset_paging_nav:
showing_page: Stran %{page}
title_user: Paketi sprememb uporabnika %{user}
title_friend: Paket sprememb vaših prijateljev
title_nearby: Paketi sprememb bližnjih uporabnikov
+ empty: Ni najdenih množic sprememb.
+ empty_area: Na tem področju ni množic sprememb.
load_more: Naloži več
timeout:
sorry: Žal je seznam zahtevanih sprememb predolg za prenos.
rss:
+ commented_at_html: Posodobljeno %{when} nazaj
+ commented_at_by_html: Posodobil %{user} %{when} nazaj
full: Celoten pogovor
diary_entry:
new:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Nihalka
chair_lift: Sedežnica
drag_lift: Vlečnica
+ gondola: Kabinska žičnica
station: Žičniška postaja
aeroway:
aerodrome: Aerodrom
taxiway: Vozna steza
terminal: Terminal
amenity:
+ animal_shelter: Zavetišče za živali
arts_centre: Umetnostni center
atm: Bankomat
bank: Banka
bicycle_parking: Parkirišče za kolesa
bicycle_rental: Izposoja koles
biergarten: Pivski vrt
+ boat_rental: Najem čolna
brothel: Javna hiša
bureau_de_change: Menjalnica
bus_station: Avtobusna postaja
car_wash: Avtopralnica
casino: Kazino
charging_station: Polnilna postaja
+ childcare: Varstvo otrok
cinema: Kinematograf
clinic: Klinika
+ clock: Ura
college: Srednja šola
community_centre: Center skupnosti
courthouse: Sodišče
fire_station: Gasilska postaja
fountain: Vodomet
fuel: Bencinska črpalka
+ gambling: Igre na srečo
grave_yard: Pokopališče
gym: Fitnes / Telovadnica
health_centre: Dom zdravja
library: Knjižnica
market: Trg
marketplace: Tržnica
+ monastery: Samostan
+ motorcycle_parking: Parkirišče motornih koles
nightclub: Nočni klub
nursery: Vrtec
nursing_home: Dom za ostarele
office: Pisarne
parking: Parkirišče
+ parking_entrance: Vhod v parkirišče
pharmacy: Lekarna
place_of_worship: Cerkev
police: Policija
"yes": Most
building:
"yes": Zgradba
+ craft:
+ brewery: Pivovarna
+ carpenter: Mizarstvo
+ electrician: Elektrikar
+ gardener: Vrtnar
+ painter: Soboslikar
+ photographer: Fotograf
+ plumber: Vodovodar
+ shoemaker: Čevljar
+ tailor: Krojač
+ "yes": Obrtnik
emergency:
+ ambulance_station: Reševalna postaja
+ defibrillator: Defibrilator
phone: Klic v sili
highway:
+ abandoned: Opuščena cesta
bridleway: Jahalna pot
bus_guideway: Turistični avtobus
bus_stop: Avtobusna postaja
construction: Autocesta v izgradnji
cycleway: Kolesarska steza
+ elevator: Dvigalo
emergency_access_point: Dostop za interventna vozila
footway: Pešpot
ford: Prehod
trunk_link: Priključek na hitro cesto
unclassified: Neopredeljena cesta
unsurfaced: Makadamska pot
+ "yes": Cesta
historic:
archaeological_site: Arheološko najdbišče
battlefield: Bojišče
boundary_stone: Mejni kamen
- building: Zgradba
+ building: Zgodovinska stavba
+ bunker: Bunker
castle: Grad
church: Cerkev
+ city_gate: Mestna vrata
citywalls: Mestno obzidje
fort: Trdnjava
house: Hiša
memorial: Spomenik
mine: Rudnik
monument: Spomenik
+ roman_road: Rimska cesta
ruins: Ruševine
+ stone: Skala
tomb: Grobnica
tower: Stolp
wayside_cross: Križ
wayside_shrine: Kapelica
wreck: Razbitina
+ junction:
+ "yes": Križišče
landuse:
allotments: Vrtički
basin: Čistilni bazen
road: Območje ceste
village_green: Zelenica
vineyard: Vinograd
+ "yes": Raba tal
leisure:
beach_resort: kopališče
bird_hide: Ptičja opazovalnica
+ club: Klub
common: Javno zemljišče
fishing: Ribolovno območje
+ fitness_centre: Fitnes center
fitness_station: Fitnes center
garden: Vrt
golf_course: Igrišče za Golf
+ horse_riding: Jahanje
ice_rink: Drsališče
marina: Marina
miniature_golf: Mini golf
swimming_pool: Bazen
track: Tekaška proga
water_park: Vodni park
+ "yes": Prosti čas
+ man_made:
+ lighthouse: Svetilnik
+ pipeline: Cevovod
+ tower: Stolp
+ works: Tovarna
military:
airfield: Vojaško letališče
barracks: Vojašnica
reef: Greben
ridge: Greben
rock: Skala
+ saddle: Sedlo
+ sand: Pesek
scree: Melišče
scrub: Grmovje
spring: Izvir
wood: Pragozd
office:
accountant: Računovodja
+ administrative: Administracija
architect: Arhitekt
company: Podjetje
employment_agency: Agencija za zaposlovanje
travel_agent: Potovalna agencija
"yes": Pisarne
place:
+ allotments: Vrtički
airport: Letališče
city: Mesto
country: Država
spur: Tir
station: Železniška postaja
stop: Železniško postajališče
- subway: Podzemna postaja
+ subway: Podzemna železnica
subway_entrance: Vhod na podzemno
switch: Kretnica
tram: Tramvaj
"yes": Trgovina
tourism:
alpine_hut: Koča
+ apartment: Apartma
artwork: Umetnina
attraction: Zanimivost
bed_and_breakfast: Nočitev z zajtrkom
camp_site: Kamp
caravan_site: Kamp
chalet: Apartma
+ gallery: Galerija
guest_house: Penzion
hostel: Hostel
hotel: Hotel
wadi: Vadi
waterfall: Slap
weir: Zapornica
+ "yes": Vodotok
admin_levels:
level2: Državna meja
level4: Meja pokrajine
results:
no_results: Ni zadetkov
more_results: Več zadetkov
- distance:
- zero: manj kot en km
- other: približno %{count} km
- direction:
- south_west: jugozahodno
- south: južno
- south_east: jugovzhodno
- east: vzhodno
- north_east: severovzhodno
- north: severno
- north_west: severozahodno
- west: zahodno
layouts:
logo:
alt_text: OpenStreetMap logotip
mapping_link: začnete kartirati
legal_babble:
title_html: Avtorske pravice in licenca
- intro_1_html: OpenStreetMap so <i>prosti podatki</i> z <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
- Data Commons Open Database License</a> (ODbL) licenco.
+ intro_1_html: OpenStreetMap<sup><a href="#trademarks">®</a></sup> so <i>prosti
+ podatki</i> z dovoljenjem <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
+ Data Commons Open Database License</a> (ODbL) <a href="http://osmfoundation.org/">Fundacije
+ OpenStreetMap</a> (OSMF).
contributors_title_html: Naši sodelavci
+ contributors_si_html: |-
+ <strong>Slovenija</strong>: Vsebuje javne podatke
+ <a href="http://www.gu.gov.si">Geodetske uprave republike slovenije</a> in
+ <a href="http://www.mkgp.gov.si">Ministrstva za kmetijsktvo, gozdarstvo in prehrano</a>.
infringement_title_html: Kršitev avtorskih pravic
welcome_page:
title: Dobrodošli!
welcome:
title: Dobrodošli v OSM
description: Začnite s tem hitrim vodičem, ki zajema osnove OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Sl:Beginners%27_guide
help:
description: Zastavite vprašanje ali poiščete odgovore v OSM zbirki vprašanj
in odgovorov.
close: Zapri
search:
search: Iskanje
+ get_directions: Pridobite navodila za pot
+ get_directions_title: Navodila za pot med dvema točkama
+ from: Od
+ to: Do
where_am_i: Kje sem?
where_am_i_title: Opišite trenutno lokacijo z uporabo iskalnika
submit_text: Išči
register now: Registriraj se
with username: 'Že imate OpenStreetMap račun? Prosim, prijavite se s svojim
uporabniškim imenom in geslom:'
- with openid: 'Lahko se prijavite tudi s svojim OpenID-jrm:'
new to osm: Ste novi na OpenStreetMap?
to make changes: Če želite spreminjati podatke na OpenStreetMap, morate imeti
račun.
account is suspended: Žal je bil vaš račun ustavljen zaradi sumljive aktivnosti.<br>Prosimo,
obrnite se na <a href="%{webmaster}">webmaster</a>, če želite o tem razpravljati.
auth failure: Oprostite, prijava s temi podatki ni uspela.
- openid missing provider: Žal se ni bilo mogoče obrniti na ponudnika OpenID
- openid invalid: Oprostite, vaš OpenID ni pravilen
openid_logo_alt: Prijavite se z OpenID
- openid_providers:
+ auth_providers:
openid:
title: Prijava z OpenID
- alt: Prijavite se z OpenID povezavo
+ alt: Prijava s povezavo OpenID
google:
title: Prijava z Googlom
- alt: Prijava z Google OpenID
+ alt: Prijava z Google OpenID-jem
yahoo:
- title: Prijavite se z Yahoo
+ title: Prijava z Yahoo
alt: Prijava z Yahoo OpenID
wordpress:
- title: Prijava z Wordpress
- alt: Prijava z Wordpress OpenID
- aol:
- title: Prijava z AOL
- alt: Prijava z AOL OpenID
+ title: Prijava z Wordpressom
+ alt: Prijava z Wordpress OpenID-jem
logout:
title: Odjava
heading: Odjava iz OpenStreetMap
display name: 'Prikazno ime:'
display name description: Javno prikazano uporabniško ime. To lahko spremenite
kasneje v nastavitvah.
- openid: '%{logo} OpenID:'
password: 'Geslo:'
confirm password: 'Potrdite geslo:'
- use openid: Lahko pa uporabite %{logo} OpenID za prijavo
- openid no password: Z OpenID geslo ni potrebno, vendar pa nekaj dodatnih orodij
- ali strežnikov še vedno potrebujete geslo.
- openid association: |-
- <p>Vaš OpenID še ni povezan z OpenStreetMap računom.</p>
- <ul>
- <li>Če ste novi v OpenStreetMap, ustvarite nov račun s pomočjo spodnjega obrazca.</li>
- <li>Če že imate račun, se prijavite na svoj račun z vašim uporabniškim imenom in geslom in nato povežete račun z OpenID-jem v uporabniških nastavitvah.</li>
- </ul>
continue: Prijavite se
terms accepted: Hvala za sprejem novih pogojev prispevanja!
terms declined: Žal nam je, da ste se odločili, da ne sprejmete novih "contributor
current email address: 'E-poštni naslov:'
new email address: 'Nov e-poštni naslov:'
email never displayed publicly: (nikoli javno objavljen)
+ external auth: 'Zunanje preverjanje pristnosti:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: kaj je to?
public editing:
press confirm button: Za aktivacijo vašega uporabniškega računa pritisnite na
gumb Potrdi spodaj.
button: Potrdi
+ success: Vaš uporabniški račun je potrjen. Hvala, da ste se vpisali!
already active: Ta račun je že bil potrjen.
unknown token: Ta potrditvena koda je potekla ali ne obstaja.
reconfirm_html: Če hočete da vam znova pošljemo potrditveno e-pošto, <a href="%{reconfirm}">kliknite
press confirm button: Za potrditev spremembe vašega naslova elektronske pošte
pritisnite na gumb Potrdi spodaj.
button: Potrdi
- success: Vaš naslov elektronske pošte je potrjen. Hvala, da ste se vpisali!
+ success: Potrdili smo vašo spremembo e-poštnega naslova!
failure: Naslov elektronske pošte je že bil potrjen s tem žetonom.
+ unknown_token: Ta potrditvena koda je potekla ali pa ne obstaja.
set_home:
flash success: Domača lokacija uspešno shranjena
go_public:
body: |-
<p>Žal je bil vaš račun avtomatično začasno ustavljen zaradi sumljivih dejavnosti.</p>
<p>To odločitev bo pregledal administrator v kratkem ali pa se obrnete na %{webmaster}, če imate pripombe.</p>
+ auth_failure:
+ connection_failed: Povezava do storitve za preverjanje pristnosti ni uspela
+ invalid_credentials: Neveljavne poverilnice za preverjanje pristnosti
user_role:
filter:
not_an_administrator: Samo skrbniki lahko upravljajo vlogo uporabnika, vi pa
subscribe: Naroči me
unsubscribe: Odjavi me
hide_comment: skrij
+ unhide_comment: razkrij
notes:
new:
+ intro: Ste opazili napako ali pa kaj manjka? Obvestite ostale kartografe o
+ tem, da lahko to popravijo. Premaknite oznako na pravilno lokacijo in vpišite
+ opombo, kjer pojasnite problem. (Prosimo, ne vnašajte osebnih podatkov ali
+ informacij pridobljenih iz zemljevidov zaščitenih z avtorskimi pravicami
+ ali imeniških seznamov.)
add: Dodaj opombo
show:
anonymous_warning: To opomba vključuje pripombe anonimnih uporabnikov, ki
reactivate: Znova aktiviraj
comment_and_resolve: Komentiraj in razreši
comment: Komentar
+ edit_help: Premaknite zemljevid in približajte lokacijo, ki jo želite urediti,
+ nato pa kliknite tukaj.
+ directions:
+ engines:
+ graphhopper_bicycle: Kolo (GraphHopper)
+ graphhopper_foot: Peš (GraphHopper)
+ mapquest_bicycle: Kolo (MapQuest)
+ mapquest_car: Avto (MapQuest)
+ mapquest_foot: Peš (MapQuest)
+ osrm_car: Avto (OSRM)
+ directions: Navodila
+ distance: Razdalja
+ errors:
+ no_route: Ni mogoče najti poti med tema dvema položajema.
+ instructions:
+ unnamed: neimenovano
+ courtesy: Navodila je ponudil %{link}
+ time: Čas
query:
node: Vozlišče
way: Pot
results:
no_results: Nema rezultata
more_results: Više rezultata
- distance:
- one: oko jednog kilometra
- zero: manje od jednog kilometra
- other: oko %{count} kilometra
- direction:
- south_west: jugozapadno
- south: južno
- south_east: jugoistočno
- east: istočno
- north_east: severoistočno
- north: severno
- north_west: severozapadno
- west: zapadno
layouts:
project_name:
title: Openstritmap
login_button: Prijavi me
register now: Otvorite nalog
with username: 'Već imate nalog? Prijavite se s korisničkim imenom i lozinkom:'
- with openid: 'Rezervni način je da koristite OpenID:'
new to osm: Novi ste na sajtu?
to make changes: Da biste pravili izmene, morate imati nalog.
create account minute: Otvorite nalog. Potrebno je samo nekoliko trenutaka.
/>Obratite se <a href="%{webmaster}">administratoru</a> ako želite da porazgovarate
o problemu.
auth failure: Ne mogu da vas prijavim s unetim podacima.
- openid missing provider: Ne mogu da se povežem s OpenID dobavljačem
- openid invalid: Izgleda da OpenID nije ispravan
openid_logo_alt: Prijavite se s OpenID-jem
- openid_providers:
- openid:
- title: Prijava putem OpenID-ja
- alt: Prijavite se s OpenID-jem
- google:
- title: Prijava putem Gugla
- alt: Prijavite se preko Gugla
- yahoo:
- title: Prijava putem Jahua
- alt: Prijavite se preko Jahua
- wordpress:
- title: Prijava putem Vordpresa
- alt: Prijavite se preko Vordpresa
- aol:
- title: Prijava putem AOL-a
- alt: Prijavite se preko AOL-a
logout:
title: Odjava
heading: Odjava
display name: 'Ime prikaza:'
display name description: Javno prikazano korisničko ime. Kasnije ga možete
promeniti u postavkama.
- openid: '%{logo} OpenID:'
password: 'Lozinka:'
confirm password: 'Potvrdite lozinku:'
- use openid: Rezervni način je da koristite %{logo} OpenID
- openid no password: S OpenID-jem, lozinka nije potrebna, ali neke dodatne alatke
- ipak zahtevaju lozinku.
- openid association: |-
- <p>Vaš OpenID nije povezan s nalogom na Openstritmapu.</p>
- <ul>
- <li>Ako još uvek nemate nalog, otvorite ga koristeći obrazac ispod.</li>
- <li>
- Ako imate nalog, prijavite se sa svojim korisničkim imenom
- i lozinkom, pa ga onda povežite s OpenID-jem u postavkama.
- </li>
- </ul>
continue: Nastavi
terms accepted: Hvala vam što prihvatate nove uslove uređivanja.
terms declined: Žao nam je što ste odlučili da ne prihvatite nove uslove uređivanja.
new email address: 'Nova e-adresa:'
email never displayed publicly: (nikada se ne prikazuje javno)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: šta je ovo?
public editing:
heading: Potvrda korisničkog naloga
press confirm button: Pritisnite dugme za potvrdu da biste aktivirali nalog.
button: Potvrdi
+ success: Vaš nalog je potvrđen. Hvala vam na upisu!
already active: Ovaj nalog je već potvrđen.
unknown token: Izgleda da taj novčić ne postoji.
confirm_resend:
results:
no_results: Нема резултата
more_results: Још резултата
- distance:
- one: око једног километра
- zero: мање од једног километра
- other: око %{count} километра
- direction:
- south_west: југозападно
- south: јужно
- south_east: југоисточно
- east: источно
- north_east: североисточно
- north: северно
- north_west: северозападно
- west: западно
layouts:
project_name:
title: OpenStreetMap
login_button: Пријави ме
register now: Отворите налог
with username: 'Већ имате налог? Пријавите се с корисничким именом и лозинком:'
- with openid: 'Резервни начин је да користите OpenID:'
new to osm: Нови сте на сајту?
to make changes: Да бисте правили измене, морате имати налог.
create account minute: Отворите налог. Потребно је само неколико тренутака.
/>Обратите се <a href="%{webmaster}">администратору</a> ако желите да поразговарате
о проблему.
auth failure: Не могу да вас пријавим с унетим подацима.
- openid missing provider: Не могу да се повежем с OpenID добављачем
- openid invalid: Изгледа да OpenID није исправан
openid_logo_alt: Пријавите се с OpenID-јем
- openid_providers:
- openid:
- title: Пријава путем OpenID-ја
- alt: Пријавите се с OpenID-јем
- google:
- title: Пријава путем Гугла
- alt: Пријавите се преко Гугла
- yahoo:
- title: Пријава путем Јахуа
- alt: Пријавите се преко Јахуа
- wordpress:
- title: Пријава путем Вордпреса
- alt: Пријавите се преко Вордпреса
- aol:
- title: Пријава путем AOL-а
- alt: Пријавите се преко AOL-а
logout:
title: Одјава
heading: Одјава
display name: 'Име приказа:'
display name description: Јавно приказано корисничко име. Касније га можете
променити у поставкама.
- openid: '%{logo} OpenID:'
password: 'Лозинка:'
confirm password: 'Потврдите лозинку:'
- use openid: Резервни начин је да користите %{logo} OpenID
- openid no password: С OpenID-јем, лозинка није потребна, али неке додатне алатке
- ипак захтевају лозинку.
- openid association: |-
- <p>Ваш OpenID није повезан с налогом на Опенстритмапу.</p>
- <ul>
- <li>Ако још увек немате налог, отворите га користећи образац испод.</li>
- <li>
- Ако имате налог, пријавите се са својим корисничким именом
- и лозинком, па га онда повежите с OpenID-јем у поставкама.
- </li>
- </ul>
continue: Пријави се
terms accepted: Хвала вам што прихватате нове услове уређивања.
terms declined: Жао нам је што сте одлучили да не прихватите нове услове уређивања.
new email address: 'Нова е-адреса:'
email never displayed publicly: (никада се не приказује јавно)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: шта је ово?
public editing:
моћићеш да почнеш са цртањем карте.
press confirm button: Притисните дугме за потврду да бисте активирали налог.
button: Потврди
+ success: Ваш налог је потврђен. Хвала вам на упису!
already active: Овај налог је већ потврђен.
unknown token: Тај код за потврду је истекао или не постоји.
reconfirm_html: Ако треба да нам поново пошаљеш е-писмо, <a href="%{reconfirm}">кликни
# Messages for Swedish (svenska)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Aaoo
# Author: Abbedabb
# Author: Adrianod
# Author: Ainali
# Author: Balp
# Author: Cohan
# Author: Cybjit
+# Author: Dan Koehl
# Author: Fader
# Author: Grillo
# Author: Haxpett
# Author: Jas
+# Author: Jenniesarina
# Author: Jopparn
# Author: Liftarn
# Author: Lokal Profil
# Author: Luen
# Author: Magol
# Author: Malmis
+# Author: Nastoshka
# Author: Nemo bis
# Author: Per
# Author: Pladask
# Author: Poxnar
+# Author: Ruila
# Author: Sannab
# Author: Sendelbach
# Author: Sertion
sedan</abbr>
hidden_by: Gömd av %{user} <abbr title='%{exact_time}'>%{when} sedan</abbr>
query:
+ title: Frågan Funktioner
introduction: Klicka på kartan för att hitta närliggande funktioner.
+ nearby: Finns i närheten
changeset:
changeset_paging_nav:
showing_page: Sida %{page}
sorry: Kunde tyvärr inte lista begärda ändringsset. Begäran tog för lång tid
att hämta.
rss:
+ title_all: Diskussion om OpenStreetMaps ändringsset
+ title_particular: Diskussion nummer %{changeset_id} om OpenStreetMaps ändringsset
+ comment: Ny kommentar på ändringsset nummer %{changeset_id} av %{author}
commented_at_html: Uppdaterades för %{when} sedan
+ commented_at_by_html: Uppdaterades för %{when} sedan av %{user}
full: Fullständig diskussion
diary_entry:
new:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Linbana
chair_lift: Stollift
drag_lift: Släplift
+ gondola: Gondolbanan
station: Linbanestation
aeroway:
aerodrome: Flygfält
taxiway: Taxibana
terminal: Terminal
amenity:
+ animal_shelter: Djurhemmet
arts_centre: Konstcenter
atm: Bankomat
bank: Bank
bicycle_parking: Cykelparkering
bicycle_rental: Cykeluthyrning
biergarten: Uteservering
+ boat_rental: Båtuthyrning
brothel: Bordell
bureau_de_change: Växlingskontor
bus_station: Busstation
car_wash: Biltvätt
casino: Kasino
charging_station: Laddningsstation
+ childcare: Barnomsorg
cinema: Biograf
clinic: Klinik
+ clock: Klocka
college: College
community_centre: Allaktivitetshus
courthouse: Tingshus
food_court: Food Court
fountain: Fontän
fuel: Bränsle
+ gambling: Spel
grave_yard: Begravningsplats
gym: Fitnesscenter / Gym
health_centre: Vårdcentral
marketplace: |2-
Marknad
+ monastery: Kloster
+ motorcycle_parking: Motorcykelparkering
nightclub: Nattklubb
nursery: Förskola
nursing_home: Vårdhem
office: Kontor
parking: Parkeringsplats
+ parking_entrance: Parkeringsinfart
pharmacy: Apotek
place_of_worship: Plats för tillbedjan
police: Polis
veterinary: Veterinärkirurgi
village_hall: Byastuga
waste_basket: Papperskorg
+ waste_disposal: Avfallshantering
youth_centre: Ungdomscenter
boundary:
administrative: Administrativ gräns
"yes": Bro
building:
"yes": Byggnad
+ craft:
+ brewery: Bryggeri
+ carpenter: Snickare
+ electrician: Elektriker
+ gardener: Trädgårdsmästare
+ painter: Målare
+ photographer: Fotograf
+ plumber: Rörmokare
+ shoemaker: Skomakare
+ tailor: Skräddare
+ "yes": Hantverksbutik
emergency:
+ ambulance_station: Ambulansstation
+ defibrillator: Defibrillator
+ landing_site: Nödlandningsplats
phone: Nödtelefon
highway:
+ abandoned: Övergiven motorväg
bridleway: Ridstig
bus_guideway: Spårbussväg
bus_stop: Busshållplats
construction: Väg under konstruktion
cycleway: Cykelspår
+ elevator: Hiss
emergency_access_point: Utryckningsplats
footway: Gångväg
ford: Vadställe
tertiary: Landsväg
tertiary_link: Landsväg
track: Traktorväg
+ traffic_signals: Trafiksignaler
trail: Vandringsled
trunk: Stamväg
trunk_link: På-/avfart till stamväg/motortrafikled
unclassified: Oklassificerad väg
unsurfaced: Oasfalterad väg
+ "yes": Väg
historic:
archaeological_site: Arkeologisk plats
battlefield: Slagfält
boundary_stone: Gränssten
- building: Byggnad
+ building: Historisk byggnad
+ bunker: Bunker
castle: Slott
church: Kyrka
+ city_gate: stadsporten
citywalls: Stadsmurar
fort: Fort
+ heritage: Världsarv
house: Hus
icon: Ikon
manor: Herrgård
memorial: Minnesmärke
mine: Gruva
monument: Monument
+ roman_road: Romersk väg
ruins: Ruin
+ stone: Sten
tomb: Grav
tower: Torn
wayside_cross: Landmärke
wayside_shrine: Vägkants-helgedom
wreck: Vrak
+ junction:
+ "yes": Korsning
landuse:
allotments: Kolonilotter
basin: Bäcken
road: Vägområde
village_green: Landsbypark
vineyard: Vingård
+ "yes": Markanvändning
leisure:
beach_resort: Badort
bird_hide: Fågeltorn
+ club: Klubb
common: Allmänning
+ dog_park: Hundpark
fishing: Fiskevatten
+ fitness_centre: Gym
fitness_station: Gym
garden: Trädgård
golf_course: Golfbana
+ horse_riding: Ridning
ice_rink: Isrink
marina: Marina
miniature_golf: Minigolf
pitch: Idrottsplan
playground: Lekplats
recreation_ground: Rekreationsområde
+ resort: Resort
sauna: Bastu
slipway: Stapelbädd
sports_centre: Sporthall
swimming_pool: Simbassäng
track: Löparbana
water_park: Vattenpark
+ "yes": Fritid
+ man_made:
+ lighthouse: Fyr
+ pipeline: Pipeline
+ tower: Torn
+ works: Fabrik
+ "yes": handgjord
military:
airfield: Militärt flygfält
barracks: Kaserner
forest: Skog
geyser: Gejser
glacier: Glaciär
+ grassland: Betesmark
heath: Ljunghed
hill: Kulle
island: Ö
reef: Rev
ridge: Bergskam
rock: Klippa
+ saddle: Sadel
+ sand: Sand
scree: Taluskon
scrub: Buskskog
spring: Källa
wood: Skog
office:
accountant: Revisor
+ administrative: Administration
architect: Arkitekt
company: Företag
employment_agency: Bemanningsföretag
travel_agent: Resebyrå
"yes": Kontor
place:
+ allotments: Kolonilotter
+ block: Blockera
airport: Flygplats
city: Stad
country: Land
town: Ort
unincorporated_area: Kommunfritt område
village: By
+ "yes": Plats
railway:
abandoned: Övergiven järnväg
construction: Järnväg under anläggande
spur: Sidospår
station: Tågstation
stop: Järnvägshållplats
- subway: Tunnelbanestation
+ subway: Tunnelbana
subway_entrance: Tunnelbaneingång
switch: Järnvägsväxel
tram: Spårväg
"yes": Affär
tourism:
alpine_hut: Fjällstuga
+ apartment: Lägenhet
artwork: Konstverk
attraction: Attraktion
bed_and_breakfast: Bed and breakfast
camp_site: Campingplats
caravan_site: Husvagnsuppställningsplats
chalet: Stuga
+ gallery: Galleri
guest_house: Gäststuga
hostel: Vandrarhem
hotel: Hotell
wadi: Uttorkad flod
waterfall: Vattenfall
weir: Överfallsvärn
+ "yes": Vattenväg
admin_levels:
level2: Landsgräns
level4: Statsgräns
results:
no_results: Inga resultat hittades
more_results: Fler resultat
- distance:
- zero: mindre än 1 km
- one: ungefär 1 km
- other: ungefär %{count} km
- direction:
- south_west: sydväst
- south: syd
- south_east: sydöst
- east: öst
- north_east: nordöst
- north: norr
- north_west: nordväst
- west: väst
layouts:
project_name:
title: OpenStreetMap
legal_babble:
title_html: Upphovsrätt och licens
intro_1_html: |-
- OpenStreetMap är <i>öppen data</i>, gjord tillgänglig under licensen <a
- href="http://opendatacommons.org/licenses/odbl/">Open Data
- Commons Open Database License</a> (ODbL).
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> är <i>öppen data</i>, gjord tillgänglig under licensen <a
+ href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) av <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: |-
Du är fri att kopiera, distribuera, överföra och anpassa vår data,
så länge du anger OpenStreetMap och dess bidragsgivare som källa.
title: Exempel på källhänvisning.
more_title_html: Mer information
more_1_html: |-
- Läs mer om användning av vår data, och hur du anger oss som källa, på vår <a
+ Läs mer om användning av vår data, och hur du anger oss som källa, på <a
+ href="http://osmfoundation.org/Licence">OSMF licenssida</a> och gemenskapens <a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">juridiska
FAQ</a>.
more_2_html: |-
url: /welcome
title: Välkommen till OSM
description: Börja med den här snabbguiden som täcker grunderna i OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Sv:Beginners%27_guide
+ title: Guide för nybörjare
+ description: Guide för nybörjare som underhålls av gemenskapen.
help:
url: https://help.OpenStreetMap.org/
title: help.openstreetmap.org
description: Ställ en fråga eller kolla upp svar på OSM:s sida med svar på ofta
förekommande frågor.
+ mailing_lists:
+ title: E-postlistor
+ description: Ställ en fråga eller diskutera intressanta saker på ett brett utbud
+ av lokala eller regionala e-postlistor.
+ forums:
+ title: Forum
+ description: Frågor och diskussioner för de som föredrar ett gränssnitt liknande
+ en anslagstavla.
+ irc:
+ title: IRC
+ description: Interaktiv chatt på flera olika språk rörande mängder av ämnen.
+ switch2osm:
+ title: switch2osm
+ description: Hjälp för företag och organisationer att byta till OpenStreetMap-baserade
+ kartor och andra tjänster.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
källa. Om du förändrar eller bygger vidare på datan på vissa sätt, kan du endast
distribuera resultatet under samma licens. Se <a href=''%{copyright_path}''>sidan
för Upphovsrätt och Licens</a> för detaljer.'
+ legal_title: Juridik
partners_title: Partners
notifier:
diary_comment_notification:
changeset_comment_notification:
greeting: Hej,
commented:
+ subject_own: '[OpenStreetMap] %{commenter} har kommenterat på en av dina ändringsset'
+ subject_other: '[OpenStreetMap] %{commenter} har kommenterat på ett ändringsset
+ du är intresserad av'
+ your_changeset: '%{commenter} har lämnat en kommentar på ett av dina ändringsset
+ skapas den %{time}'
+ commented_changeset: '%{commenter} har lämnat en kommentar på ändringarna
+ på en karta du bevakar, skapad av %{changeset_author} %{time}'
partial_changeset_with_comment: med kommentar '%{changeset_comment}'
partial_changeset_without_comment: utan kommentar
+ details: Mer detaljer om ändringssetet finns på %{url}.
message:
inbox:
title: Inkorg
close: Stäng
search:
search: Sök
+ get_directions: Få vägbeskrivningar
+ get_directions_title: Hitta vägen mellan två punkter
+ from: Från
+ to: Till
where_am_i: Var är jag?
where_am_i_title: Beskriv den aktuella platsen med hjälp av sökmotorn
submit_text: Gå
register now: Registrera dig nu
with username: 'Har du redan ett OpenStreetMap-konto? Logga in med ditt användarnamn
och lösenord:'
- with openid: 'Du kan även använda ditt OpenID-konto för att logga in:'
+ with external: 'Alternativt kan du använda en tredje part för att logga in:'
new to osm: Ny på OpenStreetMap?
to make changes: För att göra ändringar i OpenStreetMaps data måste du ha ett
konto.
Tyvärr har ditt konto stängts av på grund av tvivelaktig aktivitet.<br />Kontakta <a href="%
{webmaster}">webbansvarig</a> om du vill diskutera saken.
auth failure: Kunde inte logga in med de uppgifterna.
- openid missing provider: Kunde inte nå din OpenID-leverantör
- openid invalid: Tyvärr verkar ditt OpenID vara felaktigt formaterat.
openid_logo_alt: Logga in med ett OpenID
- openid_providers:
+ auth_providers:
openid:
title: Logga in med OpenID
alt: Logga in med en OpenID-URL
google:
title: Logga in med Google
alt: Logga in med ett Google OpenID
+ facebook:
+ title: Logga in med Facebook
+ alt: Logga in med ett Facebook-konto
+ windowslive:
+ title: Logga in med Windows Live
+ alt: Logga in med ett Windows Live-konto
yahoo:
title: Logga in med Yahoo
alt: Logga in med ett Yahoo OpenID
display name: 'Visat namn:'
display name description: Ditt offentligt visade användarnamn. Du kan ändra
detta senare i inställningarna.
- openid: '%{logo} OpenID:'
+ external auth: 'Tredjepartsautentisering:'
password: 'Lösenord:'
confirm password: 'Bekräfta lösenord:'
- use openid: Alternativt, använd %{logo} OpenID för att logga in
- openid no password: Med OpenID behövs inget lösenord, men en del extra verktyg
- och vissa servrar kan fortfarande behöva ett.
- openid association: |-
- <p>Ditt OpenID är ännu inte associerad med ett OpenStreetMap konto ännu.</p>
- <ul>
- <li>Om du är ny på OpenStreetMap, skapa ett nytt konto med hjälp av formuläret nedan.</li>
- <li>
- Om du redan har ett konto, kan du logga in
- med hjälp av ditt användarnamn och lösenord, för att sedan associera kontot
- med ditt OpenID i användarinställningarna.
- </li>
- </ul>
+ use external auth: Alternativt kan du använda en tredje part för att logga in
+ auth no password: Med autentisering av tredje part krävs inte lösenord, men
+ en del extra verktyg eller server kan fortfarande behöva det.
continue: Skapa ett konto
terms accepted: Tack för att du accepterat de nya villkoren för bidrag till
kartan!
current email address: 'Nuvarande e-postadress:'
new email address: 'Ny e-postadress:'
email never displayed publicly: (visas aldrig offentligt)
+ external auth: 'Extern autentisering:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: vad är detta?
public editing:
press confirm button: Klicka på bekräftelseknappen nedan för att aktivera ditt
konto.
button: Bekräfta
+ success: Ditt konto är bekräftat, tack för att du registrerade dig.
already active: Detta konto har redan bekräftats.
unknown token: Denna bekräftelsekod har gått ut eller finns inte.
reconfirm_html: Om du vill att vi ska skicka bekräftelsemailet igen, <a href="%{reconfirm}">klicka
press confirm button: Klicka på bekräftaknappen nedan för att bekräfta din nya
e-postadress.
button: Bekräfta
- success: E-postadressen är bekräftad. Tack för att du registrerade dig!
+ success: Ditt byte av e-postadress har bekräftats!
failure: En e-postadress har redan bekräftats med den här nyckeln.
+ unknown_token: Den bekräftelsekoden har löpt ut eller existerar inte.
set_home:
flash success: Hemposition sparad
go_public:
Detta beslut kommer granskas av en administratör inom kort, eller
så kan du kontakta %{webmaster} om vill diskutera saken.
</p>
+ auth_failure:
+ connection_failed: Anslutning till autentiseringsleverantören misslyckades
+ invalid_credentials: Ogiltiga autentiseringsuppgifter
user_role:
filter:
not_an_administrator: Endast adminstratörer kan ändra användares roller och
createnote_disabled_tooltip: Zooma in för att lägga till anteckningar på kartan
map_notes_zoom_in_tooltip: Zooma in för att se kartanteckningar
map_data_zoom_in_tooltip: Zooma in för att se kartdata
+ queryfeature_tooltip: Fråge funktioner
+ queryfeature_disabled_tooltip: Zooma in för att fråga om funktioner
changesets:
show:
comment: Kommentera
comment: Kommentera
edit_help: Flytta kartan och zooma in på en plats som du vill redigera, klicka
sedan här.
+ directions:
+ engines:
+ graphhopper_bicycle: Cykel (GraphHopper)
+ graphhopper_foot: Gående (GraphHopper)
+ mapquest_bicycle: Cykel (MapQuest)
+ mapquest_car: Bil (MapQuest)
+ mapquest_foot: Gående (MapQuest)
+ osrm_car: Bil (OSRM)
+ directions: Vägbeskrivning
+ distance: Avstånd
+ errors:
+ no_route: Kunde inte hitta en väg mellan dessa två platser.
+ no_place: Ledsen - kunde inte hitta platsen.
+ instructions:
+ unnamed: namnlös
+ courtesy: Vägbeskrivning med tillstånd av %{link}
+ time: Tid
query:
node: Nod
way: Sträcka
old_node: పాత అంశం
old_node_tag: పాత అంశం యొక్క ట్యాగ్
old_relation: పాత సంబంధం
+ old_way: పాత పద్ధతి
relation: సంబంధం
session: సెషన్
user: వాడుకరి
geonames: <a href="http://www.geonames.org/">GeoNames</a> నుండి ఫలితాలు
search_osm_nominatim:
prefix:
+ aerialway:
+ cable_car: కేబుల్ కారు
+ chair_lift: చెయిర్ లిఫ్ట్
+ drag_lift: డ్రాగ్ లిఫ్ట్
+ gondola: గొండోలా లిఫ్ట్
+ station: ఆకాశమార్గ స్టేషను
aeroway:
+ aerodrome: విమానాశ్రయం
+ apron: విమానాశ్రయ విమానరహదారి
gate: గేటు
helipad: హెలిప్యాడ్
runway: రన్వే
taxiway: ట్యాక్సీదారి
+ terminal: ఆఖరి స్టేషను
amenity:
+ animal_shelter: పశుగృహం
+ arts_centre: కళాకేంద్రం
atm: ఏటీఎం
bank: బ్యాంకు
bar: బార్
+ bbq: బార్బెక్
bench: బెంచీ
bicycle_parking: సైకిళ్ళు నిలుపు స్థలం
bicycle_rental: సైకిల్ అద్దెకిచ్చు స్థలం
+ biergarten: బీరు తోట
+ boat_rental: బోట్ అద్దెకు
brothel: వేశ్యావాటిక
bus_station: బస్సలు ఆగు చోటు
cafe: కెఫే
casino: జూదగృహం
cinema: సినిమా
clinic: ఆసుపత్రి
+ clock: గడియారం
college: కళాశాల
community_centre: సామాజిక కేంద్రం
courthouse: న్యాయస్థానం
results:
no_results: ఫలితాలేమీ దొరకలేదు
more_results: మరిన్ని ఫలితాలు
- distance:
- one: దాదాపు 1కిమీ
- other: దాదాపు %{count}కిమీ
- direction:
- south_west: నైరుతి
- south: దక్షిణం
- south_east: ఆగ్నేయం
- east: తూర్పు
- north_east: ఈశాన్యం
- north: ఉత్తరం
- north_west: వాయువ్యం
- west: పడమర
layouts:
logo:
alt_text: ఓపెన్‌స్ట్రీట్‌మాప్ చిహ్నం
new to osm: ఓపెన్స్ట్రీట్మ్యాప్కి కొత్తా?
create account minute: ఒక ఖాతాను సృష్టించుకోండి. కేవలం నిమిషంలో అయిపోతుంది.
no account: మీకు ఖాతా లేదా?
- openid_providers:
- wordpress:
- title: వర్డ్ప్రెస్తో ప్రవేశించండి
logout:
title: నిష్క్రమించు
heading: ఓపెన్స్ట్రీట్మ్యాప్ నుండి నిష్క్రమించండి
title="wiki privacy policy including section on email addresses">గోప్యతా విధానాన్ని</a>
చూడండి)
display name: 'చూపించే పేరు:'
- openid: '%{logo} ఓపెన్ఐడీ:'
password: 'సంకేతపదం:'
confirm password: 'సంకేతపదాన్ని నిర్ధారించండి:'
continue: నమోదవ్వండి
new email address: 'కొత్త ఈమెయిల్ చిరునామా:'
email never displayed publicly: (బహిరంగంగా ఎన్నటికీ చూపించబడదు)
openid:
- openid: 'ఓపెన్ఐడీ:'
link text: ఇది ఏమిటి?
public editing:
enabled link text: ఇది ఏమిటి?
results:
no_results: Walang natagpuang mga kinalabasan
more_results: Marami pang mga kinalabasan
- distance:
- one: humigit-kumulang sa 1km
- zero: mas mababa kaysa 1km
- other: humigit-kumulang sa %{count}km
- direction:
- south_west: timog-kanluran
- south: timog
- south_east: timog-silangan
- east: silangan
- north_east: hilaga-silangan
- north: hilaga
- north_west: hilaga-kanluran
- west: kanluran
layouts:
project_name:
title: OpenStreetMap
register now: Magpatala na ngayon
with username: 'Mayroon ka na bang akawnt sa OpenStreetMap? Mangyaring lumagda
sa pamamagitan ng iyong pangalan ng tagagamit at hudyat:'
- with openid: 'O kaya ay gamitin ang OpenID mo upang lumagda:'
new to osm: Bago pa lamang sa OpenStreetMap?
to make changes: Upang makagawa ng mga pagbabago sa dato ng OpenStreetMap data,
kailangang mayroon kang isang akawnt.
gawain.<br />Mangyaring makipag-uganayan sa <a href="%{webmaster}">webmaster</a>
kung nais mong talakayin ito.
auth failure: Paumanhin, hindi makalagda sa pamamagitan ng mga detalyeng iyan.
- openid missing provider: Paumahin, hindi nagawang makipag-ugnayan sa tagapagbigay
- mo ng OpenID
- openid invalid: Paumanhin, tila may pinsala ang OpenID mo
openid_logo_alt: Lumagda sa pamamagitan ng isang OpenID
- openid_providers:
- openid:
- title: Lumagda sa pamamagitan ng OpenID
- alt: Lumagda sa pamamagitan ng isang URL ng OpenID
- google:
- title: Lumagda sa pamamagitan ng Google
- alt: Lumagda sa pamamagitan ng OpenID ng Google
- yahoo:
- title: Lumagda sa pamamagitan ng Yahoo
- alt: Lumagda sa pamamagitan ng OpenID ng Yahoo
- wordpress:
- title: Lumagda sa pamamagitan ng Wordpress
- alt: Lumagda sa pamamagitan ng OpenID ng Wordpress
- aol:
- title: Lumagda sa pamamagitan ng AOL
- alt: Lumagda sa pamamagitan ng isang OpenID ng AOL
logout:
title: Umalis sa pagkakalagda
heading: Umalis sa pagkakalagda mula sa OpenStreetMap
display name: 'Pangalang Ipinapakita:'
display name description: Ang iyong pangalan ng tagagamit na ipinapakita sa
madla. Maaari mo itong baguhin mamaya sa loob ng mga kanaisan.
- openid: '%{logo} OpenID:'
password: 'Password:'
confirm password: 'Tiyakin ang Hudyat:'
- use openid: Bilang kahalili, gamitin ang %{logo} OpenID upang lumagda
- openid no password: Hindi kailangan ang hudyat sa OpenID, subalit ang ilan sa
- dagdag na mga kagamitan o tagapaghain ay maaaring mangailangan ng isa.
- openid association: "<p>Ang OpenID mo ay hindi pa nakaugnay sa isang akawnt
- ng OpenStreetMap.</p>\n<ul>\n <li>Kung bago ka pa lang sa OpenStreetMap,
- mangyaring lumikha ng isang bagong akawnt sa pamamagitan ng pormularyong nasa
- ibaba.</li>\n <li>\n Kung mayroon ka nang akawnt, makakalagda ka na sa
- akawnt mo\n sa pamamagitan ng iyong pangalan ng tagagamit at hudyat at
- pagkaraan ay iugnay ang akawnt \n sa OpenID mo doon sa loob ng mga katakdaan
- mo na pangtagagamit.\n </li>\n</ul>"
continue: Magpatuloy
terms accepted: Salamat sa pagtanggap ng bagong mga tuntunin ng tagapag-ambag!
terms declined: Ikinalulungkot namin na nagpasya kang huwag tanggapin ang bagong
new email address: 'Bagong Tirahan ng E-liham:'
email never displayed publicly: (hindi kailanman ipinapakita sa madla)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ano ba ito?
public editing:
press confirm button: Pindtuin ang pindutan ng pagtitiyak na nasa ibaba upang
buhayin ang akawnt mo.
button: Tiyakin
+ success: Natiyak ang akawnt mo, salamat sa pagpapatala!
already active: Natiyak na ang akawnt na ito.
unknown token: Tila hindi yata umiiral ang kahalip na iyan.
confirm_resend:
# Author: Incelemeelemani
# Author: Joseph
# Author: Katpatuka
+# Author: Mavrikant
# Author: Meelo
+# Author: Ruila
# Author: SalihB
# Author: Sayginer
# Author: Sucsuzz
# Author: Tarikozket
# Author: Trncmvsr
# Author: Trockya
+# Author: Uğurkent
+# Author: Watermelon juice
# Author: Zeugma
# Author: 아라
---
notifier: Bildiren
old_node: Eski Nokta
old_node_tag: Eski Nokta Etiketi
- old_relation: Eski Relasyon
+ old_relation: Eski İlişki
+ old_relation_member: Eski İlişki Üyesi
+ old_relation_tag: Eski İlişki Etiketi
old_way: Eski Yol
+ old_way_node: Eski Yol Noktası
old_way_tag: Eski Yol Etiketi
relation: İlişki
- relation_member: Relasyon Üyesi
+ relation_member: İlgili Üye
+ relation_tag: İlişki Etiketi
session: Oturum
trace: Rota
tracepoint: İzleme Noktası
node_paginated: Nokta (%{x}-%{y} - toplam %{count})
way: Yollar (%{count})
way_paginated: Yol (%{x}-%{y} - toplam %{count})
- relation: Relasyonlar (%{count})
- relation_paginated: Relasyon (%{x}-%{y} - toplam %{count})
+ relation: İlişkiler (%{count})
+ relation_paginated: İlişkiler (%{x}-%{y} - toplam %{count})
comment: Yorumlar (%{count})
+ hidden_commented_by: Gizli yorum %{user} <abbr title="%{exact_time}">%{when}
+ önce</abbr>
+ commented_by: '%{user} kullanıcıdan yorum <abbr title="%{exact_time}">%{when}
+ önce</abbr>'
changesetxml: Değişiklik takımı XML
osmchangexml: osmChange XML
feed:
title: 'Yol: %{name}'
history_title: 'Yol geçmişi: %{name}'
nodes: Noktalar
+ also_part_of:
+ one: yol parçası %{related_ways}
+ other: yol parçası %{related_ways}
relation:
- title: 'Relasyon: %{name}'
- history_title: 'Relasyon Geçmişi: %{name}'
+ title: 'İlişki: %{name}'
+ history_title: 'İlişki Geçmişi: %{name}'
members: Üyeler
relation_member:
entry_role: '%{type} %{name}, adı %{role}'
relation: ilişki
changeset: değişiklik takımı
timeout:
+ sorry: Üzgünüz, %{type} olan verisi %{id} almak için çok uzun sürdü.
type:
node: nokta
way: yol
relation: ilişki
changeset: değişiklik takımı
redacted:
+ redaction: Redaksiyon %{id}
type:
node: nokta
way: yol
description: Açıklama
open_title: 'Çözümlenmemiş not: #%{note_name}'
closed_title: 'Çözümlenmiş not: #%{note_name}'
- hidden_title: 'Saklı not #%{note_name}'
+ hidden_title: 'Gizli not #%{note_name}'
open_by: '%{user} tarafından <abbr title=''%{exact_time}''>%{when} önce</abbr>
oluşturuldu'
open_by_anonymous: Anonim olarak <abbr title='%{exact_time}'>%{when} önce</abbr>
empty_area: Bu alanda da değişiklik kümesi bulunmuyor.
empty_user: Bu kullanıcının hiçbir değişiklik kümeleri yok.
no_more: Daha fazla değişiklik kümeleri yok.
+ no_more_area: Bu alanda daha fazla değişiklik seti bulunmuyor.
+ no_more_user: Bu kullanıcı tarafından daha fazla değişiklik seti yok.
load_more: Daha fazla
timeout:
sorry: Üzgünüz, değişiklik kayıtlarının listelenmesi fazla sürdü.
rss:
title_all: Değişiklik takımı tartışması
title_particular: 'Değişiklik takımı #%{changeset_id} tartışması'
+ comment: 'Değişiklik seti #%{changeset_id} hakkında %{author} tarafından yeni
+ bir yorum yaptı.'
commented_at_html: '%{when} önce güncelleştirilmiş'
commented_at_by_html: '%{when} önce %{user} tarafından güncelleştirilmiş'
full: Bütün tartışma
one: 1 yorum
zero: yorumsuz
other: '%{count} yorum'
- edit_link: Bu girdisi düzenle
- hide_link: Bu girdisi gizle
+ edit_link: Bu girdiyi düzenle
+ hide_link: Bu girdiyi gizle
confirm: Onayla
diary_comment:
comment_from: '%{link_user} tarafından %{comment_created_at} tarihindeki yorum'
search_osm_nominatim:
prefix:
aerialway:
+ chair_lift: Chair Lift
+ drag_lift: Sürükleyen Asansör
+ gondola: Telesiyej
station: Teleferik İstasyonu
aeroway:
aerodrome: Havaalanı
taxiway: Taksi yolu
terminal: Terminal
amenity:
+ animal_shelter: Hayvan Barınağı
arts_centre: Sanat Merkezi
atm: Bankamatik
bank: Banka
bicycle_parking: Bisiklet Parkı
bicycle_rental: Bisiklet kiralama
biergarten: Bira Bahçesi
+ boat_rental: Tekne Kiralama
brothel: Genelev
bureau_de_change: Döviz bürosu
bus_station: Otogar
car_wash: Oto Yıkama
casino: Kasino
charging_station: Şarj İstasyonu
+ childcare: Çocuk Bakımı
cinema: Sinema
clinic: Klinik
+ clock: Saat
college: Lise
+ community_centre: Topluluk Merkezi
courthouse: Adliye
crematorium: Krematoryum
dentist: Diş hekimi
fire_station: Itfaiye
fountain: Fıskiye
fuel: Petrol ofisi
+ gambling: Kumarhane
grave_yard: Mezarlık
gym: Fitness Merkezi / Spor Salonu
health_centre: Sağlık Merkezi
ice_cream: Dondurma
kindergarten: Kreş
library: Kütüphane
- market: Pazar yeri
+ market: Pazar
marketplace: Pazar yeri
+ monastery: Manastır
+ motorcycle_parking: Motosiklet Park Yeri
nightclub: Gece Kulübü
nursery: Kreş
nursing_home: Huzurevi
office: Ofis
parking: Otopark
+ parking_entrance: Park Yerinin Girişi
pharmacy: Eczane
place_of_worship: İbadethane / Tapınak
police: Polis
veterinary: Veteriner
village_hall: Köy odası
waste_basket: Çöp sepeti
+ waste_disposal: Atık Alanı
youth_centre: Gençlik Merkezi
boundary:
administrative: İdari Sınır
+ census: Nüfus Sayımı Sınırı
national_park: Milli Park
protected_area: Korumalı Alan
bridge:
"yes": Köprü
building:
"yes": Bina
+ craft:
+ brewery: Bira Fabrikası
+ carpenter: Marangoz
+ electrician: Elektrikçi
+ gardener: Bahçıvan
+ painter: Badanacı
+ photographer: Fotoğrafçı
+ plumber: Tesisatçı
+ shoemaker: Ayakkabıcı
+ tailor: Terzi
+ "yes": El Sanatları Mağazası
emergency:
+ ambulance_station: Ambulans İstasyonu
+ defibrillator: Defibrilatör
+ landing_site: Acil İniş Alanı
phone: Acil Durum Telefonu
highway:
+ abandoned: Terk Edilmiş Karayolu
bridleway: At yürüyüş yolu
bus_guideway: Güdümlü otobüs yolu
bus_stop: Otobüs durağı
construction: İnşaa halinde yolu
cycleway: Bisiklet Yolu
+ elevator: Asansör
emergency_access_point: Acil Erişim Noktası
footway: Yaya yolu
ford: Akarsu geçidi
tertiary: Köy arası yolu
tertiary_link: Köy arası yolu
track: Toprak yolu
+ traffic_signals: Trafik İşaretleri
trail: İz
trunk: Bölünmüş anayol
trunk_link: Bölünmüş anayol bağlantısı
unclassified: Sınıflandırılmamış yolu
unsurfaced: Ham yolu
+ "yes": Yol
historic:
archaeological_site: Arkeolojik Alan
battlefield: Savaş alanı
boundary_stone: Sınır Taşı
- building: Bina
+ building: Tarihi Bina
+ bunker: Sığınak
castle: Kale
church: Kilise
+ city_gate: Şehir Kapısı
citywalls: Şehir Surları
fort: Hisar
+ heritage: Miras Alanı
house: Tarihi Konak
icon: Simge
manor: Köşk
memorial: Anıt
mine: Maden Ocağı
monument: Anıt
+ roman_road: Roma Yolu
ruins: Harabe
+ stone: Taş
tomb: Mezar
tower: Kule
wreck: Batık Gemi
+ junction:
+ "yes": Yol Ayrımı
landuse:
allotments: Bostan
basin: Havuz
road: Yol Alanı
village_green: Yeşil Alan
vineyard: Bağ
+ "yes": Arazi kullanımı
leisure:
beach_resort: Plajlı tatilköyü
bird_hide: Kuş Gözleme Yeri
+ club: Klüb
common: Genel Arazi
+ dog_park: Köpek Parkı
fishing: Balıkçılık alanı
+ fitness_centre: Fitness Merkezi
fitness_station: Spor Merkezi
garden: Bahçe
golf_course: Golf Sahası
+ horse_riding: At Binme
ice_rink: Buz pateni
marina: Marina
miniature_golf: Minyatür Golf
swimming_pool: Yüzme Havuzu
track: Koşuş yolu
water_park: Su Parkı
+ "yes": Serbest Zaman
+ man_made:
+ lighthouse: Deniz Feneri
+ pipeline: Boru Hattı
+ tower: Kule
+ works: Fabrika
+ "yes": İnsan yapımı
military:
airfield: Askeri Havaalanı
barracks: Kışla
forest: Orman
geyser: Gayzer
glacier: Buzul
+ grassland: Otlak
heath: Fundalık
hill: Tepe
island: Ada
reef: Resif
ridge: Sırt
rock: Kayaç
+ saddle: Eyer
+ sand: Kum
scree: Kayşat
scrub: Çalılık
spring: Pınar
wood: Orman
office:
accountant: Muhasebeci
+ administrative: Yönetim
architect: Mimar
company: Şirket
employment_agency: İş ve İşçi Bulma Kurumu
travel_agent: Seyahat Acentası
"yes": Ofis
place:
+ allotments: Bostan
+ block: Blok
airport: Havaalanı
city: Büyükşehir / İl Merkezi
country: Ülke
subdivision: Alt bölümü
suburb: Mahalle / Banliyö
town: Şehir / ilçe merkezi
- unincorporated_area: Arazi
+ unincorporated_area: Tüzel Kişiliği Olmayan Bölge
village: Köy
+ "yes": Yer
railway:
abandoned: Terkedilmiş Demiryolu
construction: Yapım aşamasında Demiryolu
historic_station: Tarihi tren istasyonu
junction: Demiryolu Kavşağı
level_crossing: Demiryolu Geçidi
- light_rail: Dar raylı demiryolu
+ light_rail: Hafif raylı demiryolu
+ miniature: Minyatür Demiryolu
+ narrow_gauge: Dar Hat Demiryolu
platform: Peron
+ preserved: Korunmuş Demiryolu
+ proposed: Planlanmış Demiryolu
station: Tren istasyonu
stop: Tren Durağı
- subway: Metro istasyonu
+ subway: Metro
subway_entrance: Metro Giriş
switch: Demiryolu makası
tram: Tramvay
dry_cleaning: Kuru Temizleme
electronics: Elektronik Mağazası
estate_agent: Emlakçı
- farm: Tarım Ürünleri Dükkanı
+ farm: Manav
fashion: Moda Dükkanı
fish: Balık Dükkanı
florist: Çiçekçi
gallery: Galeri
garden_centre: Bahçe Merkezi
general: Bakkal
- gift: Hediye eşya
+ gift: Hediyelik Eşya Dükkanı
greengrocer: Manav
grocery: Manav
hairdresser: Kuaför
"yes": Dükkan
tourism:
alpine_hut: Dağ evi
+ apartment: Daire
artwork: Sanat eseri
attraction: Gezelim görelim yeri
bed_and_breakfast: Oda Kahvaltı
camp_site: Kamp yeri
caravan_site: Karavan yeri
chalet: Yayla evi
+ gallery: Galeri
guest_house: Konuk Evi
hostel: Hostel
hotel: Hotel
museum: Müze
picnic_site: Piknik yeri
theme_park: Lunapark
- viewpoint: Panoramik view
+ viewpoint: Manzara noktası
zoo: Hayvanat bahçesi
tunnel:
culvert: Menfez
wadi: Vadi
waterfall: Şelale
weir: Küçük köprü
+ "yes": Suyolu
admin_levels:
level2: Ülke Sınırı
level4: Eyalet Sınırı
results:
no_results: Sonuç bulunamadı
more_results: Daha fazla sonuç
- distance:
- one: yaklaşık 1km
- zero: 1km'den az
- other: yaklaşık %{count}km
- direction:
- south_west: güney-batı
- south: güney
- south_east: güney-doğu
- east: doğu
- north_east: kuzey-doğu
- north: kuzey
- north_west: kuzey-batı
- west: batı
layouts:
logo:
alt_text: OpenStreetMap logosu
- home: Kendin Konuma Git
+ home: Kendi Konumuna Git
logout: Çıkış
log_in: Oturum aç
log_in_tooltip: Var olan bir hesapla giriş yapın
mapping_link: harita çizmeye başla
legal_babble:
title_html: Telif Hakkı ve Lisans
+ credit_title_html: OpenStreetMap nasıl atıf edinir
+ credit_1_html: |-
+ Atıf şu şekilde yazmak gerekir: “© OpenStreetMap
+ katılımcıları”.
credit_3_html: |-
Bir gezinebilir elektronik haritanın sağ alt köşesinde kredisi görünmesi lazım.
Örnegin:
+ attribution_example:
+ alt: Web sayfasıında OpenStreetMap atıf etmek için bir örnek
+ title: Atıf örneği
contributors_title_html: Katkıcılarımız
welcome_page:
title: Hoş geldiniz!
ya da bina olabilir.
tag_html: <strong>Etiket</strong>, bir düğümün ya da yolun veri parçasıdır.
Bu bir restoranın ismi ya da yolun hız sınırı olabilir.
+ rules:
+ title: Kuralları!
questions:
title: Sorularınız var mı?
paragraph_1_html: OpenStreetMap, proje hakkında bilgiler içeren, soru sormak
welcome:
title: OSM'ye hoşgeldin!
description: OpenStreetMap temellerini öğrenmek için kısa bir kılavuz ile başla.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Tr:Beginners%27_guide
+ title: Yeni Başlayanlar Kılavuzu
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Bir soru sor veya OSM'ın soru-ve-cevap sitesinde yanıtları ara.
+ mailing_lists:
+ title: E-Posta Listeleri
+ forums:
+ title: Forumlar
+ irc:
+ title: IRC
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
local_knowledge_title: Yerel Bilgi
community_driven_title: Katılım Kaynaklı
open_data_title: Açık Veri
+ legal_title: Yasal
partners_title: Ortaklar
notifier:
diary_comment_notification:
heathland: Fundalık
lake:
- Göl
- - baraj
+ - rezervuar
farm: Çiftlik
brownfield: Çıplak arazi
cemetery: Mezarlık
işlem genellikle yarım saat içinde gerçekleşir ve tamamlandığında sana bir
e-posta gönderiliyor.
edit:
- title: '%{name} izisi düzenleniyor'
- heading: '%{name} izini düzenleniyor'
+ title: '%{name} izi düzenleniyor'
+ heading: '%{name} izi düzenleniyor'
filename: 'Dosya adı:'
download: indir
- uploaded_at: 'Gönderme tarihi:'
+ uploaded_at: 'Yüklendi:'
points: 'Nokta sayısı:'
- start_coord: 'Başlangıç koordinat:'
+ start_coord: 'Başlangıç koordinatı:'
map: harita
edit: düzenle
owner: 'Sahibi:'
register now: Şimdi kayıt ol
with username: 'OpenStreetMap hesabınız var mı? Lütfen kullanıcı adı ve şifrenizle
giriş yapınız:'
- with openid: 'Bunun yerine, OpenID kullanarak giriş yapın:'
new to osm: OpenStreetMap sitesinde yeni misiniz?
to make changes: OpenStreetMap verileri değiştirmek için bir hesabın olması
gerekir.
onaylama e-postasında ki bağlantı tıkla veya <a href="%{reconfirm}">yeni bir
onaylama e-posta</a> iste.
auth failure: Üzgünüz, bu giriş ile oturum açılamadı.
- openid missing provider: Üzgünüz, OpenID sağlayınızla iletişim kurulamadı
- openid invalid: Üzgünüz, OpenID hatalı biçimlendirilmiş gözüküyor
openid_logo_alt: OpenID ile giriş
- openid_providers:
- openid:
- title: OpenID kullanarak oturum aç
- alt: OpenID URL ile giriş
+ auth_providers:
google:
- title: Google ile giriş
- alt: Google OpenID ile giriş
+ title: Google ile oturum aç
yahoo:
- title: Yahoo ile giriş
- alt: Yahoo OpenID ile giriş
+ title: Yahoo ile oturum aç
wordpress:
- title: Wordpress ile giriş
- alt: Wordpress OpenID ile giriş
- aol:
- title: AOL ile giriş
- alt: AOL OpenID ile giriş
+ title: Wordpress ile oturum aç
logout:
title: Çıkış
heading: OpenStreetMap'den çıkış
display name: 'Görünen Ad:'
display name description: Herkes tarafından görünen ad. Bu adı istediği zaman
'tercihlerim' bölümünde değiştirebilirsin.
- openid: '%{logo} OpenID:'
password: 'Şifre:'
confirm password: 'Şifre Onayla:'
- use openid: Bunun yerine, %{logo} kullanarak giriş yapın
continue: Kaydol
terms accepted: Yeni katılımcı şartları kabul ettiğin için teşekkür ederiz!
terms:
new email address: 'Yeni E-posta Adresi:'
email never displayed publicly: (hiçbir zaman görüntülenmez)
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: Bu nedir?
public editing:
introduction_2: E-postadaki bağlantıya tıklayarak hesabınızı doğrulayın ve daha
sonra haritalama yapmanız mümkün olacak.
button: Onayla
+ success: Hesabın onaylandı, teşekkür ve iyi çalışmalar!<br /><br /><a href="http://wiki.openstreetmap.org/wiki/Tr:Main_Page">Hoşgeldin
+ sayfasında</a> Türkiye'deki harita durumu konusunda bilgi alabilirsin.
reconfirm_html: Doğrulama e-postasının tekrar gönderimi için bize ihtiyacınız
varsa, <a href="%{reconfirm}">buraya tıklayın</a>.
confirm_resend:
note:
description:
opened_at_by_html: '%{when} önce %{user} tarafından oluşturuldu'
+ mine:
+ creator: Oluşturan
javascripts:
share:
title: Paylaş
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: AS
+# Author: Alex Blokha
+# Author: Alex Khimich
# Author: Andriykopanytsia
# Author: Andygol
# Author: Arturyatsko
# Author: Olvin
# Author: Prima klasy4na
# Author: Riwnodennyk
+# Author: Ruila
# Author: Sev
# Author: Shirayuki
# Author: SteveR
relation: Зв’язок
relation_member: Елемент зв’язку
relation_tag: Теґ зв’язку
- session: Сесія
+ session: Сеанс
trace: Трек
tracepoint: Точка треку
tracetag: Теґ треку
feature_warning: Завантаження %{num_features} об’єктів, яке може призвести до
уповільнення або неможливості роботи вашого оглядача. Ви справді бажаєте переглянути
ці дані?
- load_data: Ð\97аванÑ\82ажиÑ\82и Ð\94ані
+ load_data: Ð\97аванÑ\82ажиÑ\82и дані
loading: Завантаження…
tag_details:
tags: Теґи
no_more_user: Немає більше наборів змін від цього учасника.
load_more: Завантажити ще
timeout:
- sorry: На жаль, список наборів змін який ви запросили, потребує забагато часу
+ sorry: На жаль, список наборів змін, який ви запросили, потребує забагато часу
для завантаження.
rss:
title_all: Обговорення наборів змін в OpenStreetMap
new:
title: Створити новий запис у щоденнику
list:
- title: Щоденник
+ title: Щоденник користувача
title_friends: Щоденники друзів
title_nearby: Щоденники користувачів поряд з вами
user_title: Щоденник користувача %{user}
- in_language_title: Записи щоденника, мова — %{language}
+ in_language_title: Записи щоденника мовою %{language}
new: Нова нотатка у щоденнику
new_title: Зробити новий запис у своєму щоденнику
no_entries: В щоденнику немає записів
older_entries: Старі записи
newer_entries: Нові записи
edit:
- title: Ð\9fÑ\80авити нотатку
+ title: РедагÑ\83вати нотатку
subject: 'Тема:'
body: 'Текст:'
language: 'Мова:'
title: Немає такого запису в щоденнику
heading: Немає запису з id %{id}
body: На жаль, запис чи коментар з id %{id} не знайдені. Перевірте правильність
- введеннÑ\8f адÑ\80еÑ\81и. Ð\9cожливо, поÑ\81иланнÑ\8f, по Ñ\8fкомÑ\83 ви перейшли, хибне.
+ введеннÑ\8f адÑ\80еÑ\81и. Ð\9cожливо, поÑ\81иланнÑ\8f, на Ñ\8fке ви перейшли, хибне.
diary_entry:
- posted_by: 'Ð\92Ñ\96дпÑ\80авив %{link_user} %{created}, мова: %{language_link}'
- comment_link: Коментувати
- reply_link: Відповісти
+ posted_by: 'Ð\94одано коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87ем %{link_user} %{created}, мова: %{language_link}'
+ comment_link: Коментувати запис
+ reply_link: Відповісти на запис
comment_count:
few: '%{count} коментарі'
one: '%{count} коментар'
export_details: Дані OpenStreetMap ліцензуються на умовах <a href="http://opendatacommons.org/licenses/odbl/1.0/">Ліцензії
Open Data Commons Open Database License</a> (ODbL).
too_large:
- advice: 'ЯкÑ\89о екÑ\81поÑ\80Ñ\82 виÑ\89е не вдавÑ\81Ñ\8f, Ñ\82о Ñ\80озглÑ\8fнÑ\8cÑ\82е можливÑ\96Ñ\81Ñ\82Ñ\8c викоÑ\80иÑ\81Ñ\82аннÑ\8f
- одного з пеÑ\80елÑ\96Ñ\87ениÑ\85 нижÑ\87е джеÑ\80ел:'
+ advice: 'ЯкÑ\89о даний екÑ\81поÑ\80Ñ\82 не вдавÑ\81Ñ\8f, по можливоÑ\81Ñ\82Ñ\96 викоÑ\80иÑ\81Ñ\82айÑ\82е одне з пеÑ\80елÑ\96Ñ\87ениÑ\85
+ джерел:'
body: 'Ця ділянка дуже велика для експорту у вигляді XML-даних OpenStreetMap.
Будь ласка наблизьтесь або виберіть меншу ділянку, або скористайтеся одним
з наступних джерел для завантаження великого обсягу даних:'
zoom: Збільшити
add_marker: Додати маркер на мапу
latitude: 'Шир.:'
- longitude: 'Дов.:'
+ longitude: 'Довг.:'
output: Результат
paste_html: HTML-код для вбудовування до сайту
export_button: Експортувати
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Канатна дорога
chair_lift: Крісельний підйомник
drag_lift: Бугельний підйомник
+ gondola: З підвісними кабінами
station: Канатна станція
aeroway:
aerodrome: Аеродром
apron: Перон
gate: Вихід на посадку
helipad: Вертолітний майданчик
- runway: Ð\97лÑ\96Ñ\82но-поÑ\81адкова Ñ\81мÑ\83га
+ runway: Злітна смуга
taxiway: Руліжна доріжка
terminal: Термінал
amenity:
+ animal_shelter: Притулок для тварин
arts_centre: Мистецький центр
atm: Банкомат
bank: Банк
bar: Бар
bbq: Барбекю
bench: Лавка
- bicycle_parking: Ð\9cÑ\96Ñ\81Ñ\86е Ñ\81Ñ\82оÑ\8fнки длÑ\8f велосипедів
+ bicycle_parking: СÑ\82оÑ\8fнка велосипедів
bicycle_rental: Прокат велосипедів
biergarten: Пивний сад
+ boat_rental: Прокат човнів
brothel: Бордель
bureau_de_change: Обмін валют
bus_station: Автовокзал
cafe: Кафе
car_rental: Прокат автомобілів
- car_sharing: Ð\9fÑ\80окаÑ\82 авÑ\82о
+ car_sharing: Ð\9aоÑ\80оÑ\82коÑ\87аÑ\81ний авÑ\82опÑ\80окаÑ\82
car_wash: Автомийка
casino: Казино
charging_station: Станція для зарядки електромобілів
+ childcare: Догляд за дітьми
cinema: Кінотеатр
clinic: Клініка
+ clock: Годинник
college: Коледж
community_centre: Громадський центр
courthouse: Суд
food_court: Фуд-корт
fountain: Фонтан
fuel: Пальне
+ gambling: Азартні ігри
grave_yard: Цвинтар
gym: Тренажерний зал
- health_centre: ЦенÑ\82Ñ\80 здоÑ\80ов'я
- hospital: Ð\9bÑ\96каÑ\80нÑ\8f
+ health_centre: Ð\9bÑ\96каÑ\80ня
+ hospital: ШпиÑ\82алÑ\8c
hunting_stand: Мисливська вежа
ice_cream: Морозиво
kindergarten: Дитячий садок
library: Бібліотека
market: Ринок
marketplace: Ринок
+ monastery: Монастир
+ motorcycle_parking: Стоянка мотоциклів
nightclub: Нічний клуб
- nursery: Ð\94иÑ\82Ñ\81адок
+ nursery: ЯÑ\81ла
nursing_home: Будинок престарілих
office: Офіс
- parking: Автостоянка
+ parking: Стоянка
+ parking_entrance: В’їзд на стоянку
pharmacy: Аптека
place_of_worship: Культова споруда
- police: Ð\9cÑ\96лÑ\96Ñ\86Ñ\96Ñ\8f (Ð\9fоліція)
- post_box: Ð\9fоÑ\88Ñ\82ова Ñ\81кÑ\80инÑ\8f
+ police: Ð\9fолÑ\96Ñ\86Ñ\96Ñ\8f (мÑ\96ліція)
+ post_box: Ð\9fоÑ\88Ñ\82ова Ñ\81кÑ\80инÑ\8cка
post_office: Пошта
preschool: Дошкільний заклад
prison: В’язниця
reception_area: Зона прийому
recycling: Місце переробки відходів
restaurant: Ресторан
- retirement_home: Ð\91Ñ\83динки для людей похилого віку
+ retirement_home: Ð\91Ñ\83динок для людей похилого віку
sauna: Сауна
school: Школа
- shelter: УкÑ\80иÑ\82Ñ\82Ñ\8f
+ shelter: Ð\9fÑ\80иÑ\82Ñ\83лок
shop: Магазин
shower: Душ
social_centre: Суспільний центр
telephone: Телефон
theatre: Театр
toilets: Туалет
- townhall: Ð\9cÑ\96Ñ\81Ñ\8cквиконком
+ townhall: РаÑ\82Ñ\83Ñ\88а
university: Університет
vending_machine: Торговий автомат
veterinary: Ветлікарня
- village_hall: СÑ\96лÑ\8cÑ\80ада
+ village_hall: СÑ\96лÑ\8cÑ\81Ñ\8cка Ñ\83пÑ\80ава
waste_basket: Контейнер для сміття
+ waste_disposal: Утилізація відходів
youth_centre: Молодіжний центр
boundary:
- administrative: Ð\90дмÑ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82ивний коÑ\80дон
+ administrative: Ð\90дмÑ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82ивна межа
census: Межа переписної ділянки
national_park: Національний парк
- protected_area: Ð\9eÑ\85оÑ\80онÑ\8eвана ділянка
+ protected_area: Ð\97аповÑ\96дна ділянка
bridge:
aqueduct: Акведук
suspension: Підвісний міст
"yes": Міст
building:
"yes": Будівля
+ craft:
+ brewery: Пивоварня
+ carpenter: Столяр
+ electrician: Електрик
+ gardener: Садівник
+ painter: Художник
+ photographer: Фотограф
+ plumber: Сантехнік
+ shoemaker: Ремонт взуття
+ tailor: Кравець
+ "yes": Товари для рукоділля
emergency:
+ ambulance_station: Станція швидкої медичної допомоги
+ defibrillator: Дефібрилятор
+ landing_site: Місце аварійної посадки
phone: Телефон для екстрених викликів
highway:
- bridleway: Дорога для їзди кіньми
+ abandoned: Покинута дорога
+ bridleway: Дорога для їзди верхи
bus_guideway: Рейковий автобус
bus_stop: Автобусна зупинка
construction: Будівництво автомагістралі
cycleway: Велосипедна доріжка
+ elevator: Ліфт
emergency_access_point: Пункт швидкої допомоги
footway: Пішохідна доріжка
- ford: Броди
+ ford: Брід
living_street: Житлова зона
- milestone: Ð\92Ñ\96Ñ\85а
+ milestone: Ð\9aÑ\96ломеÑ\82Ñ\80овий Ñ\81Ñ\82овпÑ\87ик
motorway: Автомагістраль
motorway_junction: В’їзд на автомагістраль
motorway_link: З’єднання з автомагістраллю
speed_camera: Камера контролю швидкості
steps: Сходи
street_lamp: Вуличний ліхтар
- tertiary: Третинна дорога
- tertiary_link: Виїзд на третинну дорогу
+ tertiary: Третьорядна дорога
+ tertiary_link: Виїзд на третьорядну дорогу
track: Путівець
+ traffic_signals: Світлофор
trail: Стежка
trunk: Шосе
trunk_link: З’їзд з/на шосе
unclassified: Дорога без класифікації
unsurfaced: Дорога без покриття
+ "yes": Дорога
historic:
archaeological_site: Археологічні дослідження
battlefield: Поле битви
- boundary_stone: Прикордонний камінь
- building: Будівля
+ boundary_stone: Межовий камінь
+ building: Історична будівля
+ bunker: Бункер
castle: За́мок
church: Храм
- citywalls: Міські стіни
+ city_gate: Міські ворота
+ citywalls: Міський мур
fort: Форт
+ heritage: Об’єкт культурної спадщини
house: Дім
icon: Ікона
manor: Маєток
memorial: Меморіал
mine: Копальня
monument: Пам’ятник
+ roman_road: Римська дорога
ruins: Руїни
+ stone: Камінь
tomb: Гробниця
- tower: Ð\91аÑ\88Ñ\82а
+ tower: Ð\92ежа
wayside_cross: Придорожній хрест
wayside_shrine: Придорожній храм
wreck: Місце катастрофи
+ junction:
+ "yes": Перехресття
landuse:
allotments: Сади-городи
basin: Резервуар
- brownfield: Ð\9eÑ\87иÑ\89ена Ñ\82еÑ\80иÑ\82оÑ\80Ñ\96Ñ\8f пÑ\96д забÑ\83довÑ\83
+ brownfield: Ð\9aолиÑ\88нÑ\8f пÑ\80омзона
cemetery: Кладовище
commercial: Торгівельно-офісна територія
conservation: Заповідник
forest: Ліс
garages: Гаражі
grass: Трава
- greenfield: Ð\97неÑ\81еннÑ\8f пÑ\96д забÑ\83довÑ\83
+ greenfield: Ð\9fоле
industrial: Промзона
landfill: Звалище
- meadow: Луг
+ meadow: Левада
military: Військова зона
mine: Копальня
orchard: Сад
quarry: Кар’єр
railway: Залізниця
- recreation_ground: Ð\91аза відпочинку
+ recreation_ground: Ð\97она відпочинку
reservoir: Водосховище
- reservoir_watershed: Ð\92ододÑ\96л водосховища
+ reservoir_watershed: Ð\92одозбÑ\96Ñ\80на плоÑ\89а водосховища
residential: Житловий квартал
retail: Роздрібна торгівля
road: Зона дорожньої мережі
- village_green: СÑ\96лÑ\8cÑ\81Ñ\8cка галÑ\8fвина
+ village_green: СÑ\96лÑ\8cÑ\81Ñ\8cкий майдан
vineyard: Виноградник
+ "yes": Землекористування
leisure:
beach_resort: Пляжний курорт
bird_hide: Засідка (пункт спостереження за птахами)
+ club: Клуб
common: Громадська земля
+ dog_park: Майданчик для собак
fishing: Район риболовлі
- fitness_station: Фітнес станція
+ fitness_centre: Фітнес-центр
+ fitness_station: Фітнес-центр
garden: Сад
golf_course: Поле для гольфу
+ horse_riding: Верхова їзда
ice_rink: Ковзанка
marina: Гавань для екскурсійних суден
miniature_golf: Міні-гольф
pitch: Спортмайданчик
playground: Дитячий майданчик
recreation_ground: База відпочинку
+ resort: Курорт
sauna: Сауна
slipway: Сліп (спуск на воду)
sports_centre: Спортивний центр
swimming_pool: Басейн
track: Бігова доріжка
water_park: Аквапарк
+ "yes": Дозвілля
+ man_made:
+ lighthouse: Маяк
+ pipeline: Трубопровід
+ tower: Вежа
+ works: Фабрика
+ "yes": Штучні споруди
military:
airfield: Військовий аеродром
barracks: Казарма
forest: Ліс
geyser: Гейзер
glacier: Льодовик
+ grassland: Пасовище
heath: Степ
hill: Пагорб
island: Острів
- land: Ð\97емлÑ\8f
+ land: СÑ\83Ñ\88а
marsh: Болото
- moor: Торф
+ moor: Торфовище
mud: Грязюка
peak: Пік
point: Точка
reef: Риф
- ridge: Ð\93Ñ\96Ñ\80Ñ\81Ñ\8cкий Ñ\85ребет
+ ridge: Ð¥ребет
rock: Скеля
+ saddle: Перевал
+ sand: Пісок
scree: Щебінь
scrub: Чагарник
spring: Джерело
stone: Камінь
- strait: Перешийок
+ strait: Протока
tree: Дерево
valley: Долина
volcano: Вулкан
water: Вода
wetland: Заболочені землі
- wood: Ð\94еÑ\80ева
+ wood: Ð\9bÑ\96Ñ\81
office:
accountant: Бухгалтер
+ administrative: Адміністрація
architect: Архітектор
company: Компанія
employment_agency: Агентство зайнятості
travel_agent: Туристична агенція
"yes": Офіси
place:
+ allotments: Сади-городи, дачні ділянки
+ block: Квартал
airport: Аеропорт
city: Місто
country: Країна
farm: Ферма
hamlet: Хутір
house: Будинок
- houses: Ð\94ома
+ houses: Ð\91Ñ\83динки
island: Острів
islet: Острівець
- isolated_dwelling: Ð\86золÑ\8cоване жиÑ\82ло
- locality: Ð\9dаÑ\81елений пÑ\83нкÑ\82
- moor: Ð\9cÑ\83Ñ\80
+ isolated_dwelling: Ð\9eкÑ\80еме гоÑ\81подаÑ\80Ñ\81Ñ\82во
+ locality: Ð\9cÑ\96Ñ\81Ñ\86евÑ\96Ñ\81Ñ\82Ñ\8c
+ moor: Ð\9fÑ\83Ñ\81Ñ\82иÑ\89е
municipality: Муніципалітет
- neighbourhood: Ð\9eколиÑ\86Ñ\96
+ neighbourhood: Ð\9cÑ\96кÑ\80оÑ\80айон
postcode: Індекс
region: Район
sea: Море
- state: Ð\9eблаÑ\81Ñ\82Ñ\8c/ШÑ\82аÑ\82
+ state: Штат
subdivision: Підрозділ
suburb: Передмістя
town: Місто
unincorporated_area: Неприєднанні території
village: Село
+ "yes": Квартал
railway:
abandoned: Занедбані колії
construction: Будівництво колії
narrow_gauge: Вузькоколійка
platform: Залізнична платформа
preserved: Законсервовані колії
- proposed: Ð\9fÑ\80опоновані залізничні колії
+ proposed: Ð\97апÑ\80оекÑ\82овані залізничні колії
spur: Залізнична гілка
station: Залізнична станція
stop: Залізнична зупинка
- subway: СÑ\82анÑ\86Ñ\96Ñ\8f метро
+ subway: Ð\9cетро
subway_entrance: Вхід в метро
switch: Стрілка
tram: Трамвайні колії
tram_stop: Трамвайна зупинка
shop:
- alcohol: Спиртні напої
+ alcohol: Спиртні напої на винос
antiques: Антикваріат
art: Художній салон
bakery: Хліб
butcher: М’ясо
car: Автомагазин
car_parts: Автозапчастини
- car_repair: Авто майстерня
+ car_repair: Автомайстерня
carpet: Килими
charity: Соціальний магазин
- chemist: Ð¥Ñ\96мÑ\82оваÑ\80и
+ chemist: ФаÑ\80маÑ\86Ñ\96Ñ\8f
clothes: Одяг
computer: Комп’ютерна крамниця
confectionery: Кондитерська
convenience: Мінімаркет
copyshop: Послуги копіювання
cosmetics: Магазин косметики
- deli: Ð\9cагазин делÑ\96каÑ\82еÑ\81Ñ\96в
+ deli: Ð\94елÑ\96каÑ\82еÑ\81и
department_store: Універмаг
discount: Уцінені товари
doityourself: Зроби сам
dry_cleaning: Хімчистка
electronics: Магазин електроніки
estate_agent: Агентство нерухомості
- farm: ФеÑ\80меÑ\80Ñ\81Ñ\8cкий магазин
+ farm: СÑ\96лÑ\8cÑ\81Ñ\8cка кÑ\80амниÑ\86Ñ\8f
fashion: Модний одяг
fish: Риба
florist: Квіти
greengrocer: Овочі, фрукти
grocery: Бакалія
hairdresser: Перукар
- hardware: Хозтовари
+ hardware: Ð\93оÑ\81подаÑ\80Ñ\81Ñ\8cкÑ\96 товари
hifi: Аудіо-техніка
insurance: Страхування
jewelry: Ювелірний магазин
laundry: Пральня
mall: Торгівельно-розважальний центр
market: Магазин
- mobile_phone: Мобільні телефони
+ mobile_phone: Мобільний салон
motorcycle: Мотоцикли
music: Музика
newsagent: Газетний кіоск
toys: Іграшки
travel_agency: Туристична агенція
video: Відео
- wine: Ð\92ино
+ wine: СпиÑ\80Ñ\82нÑ\96 напоÑ\97 на виноÑ\81
"yes": Крамниця
tourism:
alpine_hut: Гірський притулок
- artwork: Образотворче мистецтво
+ apartment: Квартира
+ artwork: Мистецтво
attraction: Цікаві місця
bed_and_breakfast: Ліжко та сніданок
- cabin: Ð\9aабÑ\96на
+ cabin: ХаÑ\82ина
camp_site: Турбаза
caravan_site: Майданчик для трейлерів
chalet: Шале
+ gallery: Галерея
guest_house: Гостьовий будинок
- hostel: Ð¥остел
+ hostel: Ð\93остел
hotel: Готель
information: Інформація
motel: Мотель
viewpoint: Оглядовий майданчик
zoo: Зоопарк
tunnel:
- culvert: Ð\9aÑ\83лÑ\8cвеÑ\80Ñ\82
+ culvert: Ð\94Ñ\80енажна Ñ\82Ñ\80Ñ\83ба
"yes": Тунель
waterway:
artificial: Штучні водний шлях
derelict_canal: Покинутий канал
ditch: Рів
dock: Док
- drain: Ð\94Ñ\80енажний канал
+ drain: СÑ\82Ñ\96к
lock: Шлюз
lock_gate: Шлюзові ворота
mooring: Якірна стоянка
rapids: Пороги
river: Річка
stream: Струмок
- wadi: Ð\92адÑ\96
+ wadi: Ð Ñ\83Ñ\81ло
waterfall: Водоспад
weir: Гребля
+ "yes": Водний маршрут
admin_levels:
level2: Державний кордон
level4: Межа краю, штату, республіки
results:
no_results: Нічого не знайдено
more_results: Більше результатів
- distance:
- one: менше ніж 1 км
- zero: майже 1 км
- other: майже %{count} км
- direction:
- south_west: на південний захід
- south: на південь
- south_east: на південний схід
- east: на схід
- north_east: на північний схід
- north: на північ
- north_west: на північний захід
- west: на захід
layouts:
logo:
alt_text: Логотип OpenStreetMap
sign_up: Реєстрація
start_mapping: Почати мапити
sign_up_tooltip: Створити обліковий запис для редагування
- edit: Ð\9fÑ\80авка
+ edit: РедагÑ\83ваÑ\82и
history: Історія
export: Експорт
data: Дані
gps_traces_tooltip: Управління GPS треками
user_diaries: Щоденники
user_diaries_tooltip: Подивитись щоденники
- edit_with: Ð\9fÑ\80авиÑ\82и Ñ\83 %{editor}
+ edit_with: РедагÑ\83ваÑ\82и Ñ\87еÑ\80ез %{editor}
tag_line: Вільна Вікі-мапа Світу
intro_header: Ласкаво просимо до OpenStreetMap!
intro_text: OpenStreetMap — мапа світу, створена такими ж людьми, як і ви, для
вільного використання під відкритою ліцензією.
intro_2_create_account: Створіть обліковий запис
- partners_html: Хостинг підтримується %{ucl}, %{ic} та %{bytemark}, та іншими %{partners}.
+ partners_html: Хостинг підтримується %{ucl}, %{ic} та %{bytemark}, а також іншими
+ %{partners}.
partners_ucl: UCL VR Centre
partners_ic: Імперський коледж Лондона
partners_bytemark: Bytemark Hosting
partners_partners: партнерами
- osm_offline: База даних OpenStreetMap в даний момент не доступна, так як проводиться
+ osm_offline: База даних OpenStreetMap в даний момент недоступна, бо саме проводиться
необхідне технічне обслуговування.
osm_read_only: База даних OpenStreetMap в даний момент доступна тільки для читання,
тому що проводиться необхідне технічне обслуговування.
- donate: Підтримайте OpenStreetMap %{link} у Фонді оновлення обладнання.
+ donate: Підтримайте OpenStreetMap через %{link} до Фонду оновлення обладнання.
help: Довідка
about: Про проект
copyright: Авторські права
title: Про цей переклад
text: У разі суперечностей між цим перекладом та %{english_original_link}, оригінал
англійською має перевагу.
- english_link: оригіналом англійською
+ english_link: оригінал англійською
native:
title: Про цю сторінку
text: Ви переглядаєте англійську версію сторінки авторських прав. Ви можете
native_link: української версії
mapping_link: почати створення мапи
legal_babble:
- title_html: Ð\90вÑ\82оÑ\80Ñ\81Ñ\8cкÑ\96 пÑ\80ава Ñ\82а Ð\9bіцензування
+ title_html: Ð\90вÑ\82оÑ\80Ñ\81Ñ\8cкÑ\96 пÑ\80ава Ñ\82а ліцензування
intro_1_html: |-
- Дані OpenStreetMap є <i>відкрити даними</i>, що ліцензуються на
- умовах Ліцензії <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL)
+ Дані OpenStreetMap<sup><a href="#trademarks">®</a></sup> є <i>відкритими даними</i>, що ліцензуються на
+ умовах Ліцензії <a href="http://opendatacommons.org/licenses/odbl/">Open Data Commons Open Database License</a> (ODbL) організацією <a
+ href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: Ви можете вільно копіювати, поширювати, передавати й змінювати
- наші дані, посилаючись при цьому на OpenStreetMap та його спільноту. Якщо
- ви змÑ\96нÑ\8eÑ\94Ñ\82е наÑ\88Ñ\96 данÑ\96 Ñ\87и Ñ\81Ñ\82воÑ\80Ñ\8eÑ\94Ñ\82е на Ñ\97Ñ\85 оÑ\81новÑ\96 Ñ\81воÑ\97, ви повиннÑ\96 Ñ\80озповÑ\81Ñ\8eджÑ\83ваÑ\82и
+ наші дані, посилаючись при цьому на OpenStreetMap та її спільноту. Якщо ви
+ змінюєте наші дані чи створюєте на їх основі свої, ви повинні розповсюджувати
результати під такою ж Ліцензією. Повний <a href="http://opendatacommons.org/licenses/odbl/1.0/">чинний
текст</a> Ліцензії пояснює ваші права та обов’язки.
intro_3_html: "Мапи в графічному вигляді, а також документація розповсюджуються
Creative \nCommons Attribution-ShareAlike 2.0</a> (CC-BY-SA)."
credit_title_html: Як вказати посилання на OpenStreetMap
credit_1_html: Ми вимагаємо, щоб ви зазначали “© OpenStreetMap contributors”.
- credit_2_html: Ви повинні також чітко розуміти, що дані доступні на умовах ліцензії
- Open Database License, а у разі, коли ви використовуєте графічні мапи з нашого
- сервера, на них розповсюджуються умови CC-BY-SA. Ви можете зробити це надавши
- посилання на <a href="http://www.openstreetmap.org/copyright">цю сторінку
- з роз’ясненням ліцензійних вимог</a>. Або ж, для виконання наших вимог під
- час розповсюдження даних OSM, ви можете безпосередньо вказувати назву ліцензії(й)
- та посилання на її(їх) текст. Якщо ви користуєтесь носіями, де використання
- гіпертекстових посилань неможливе (наприклад друковані матеріали), ми пропонуємо
- посилатися безпосередньо на www.openstreetmap.org (або розширено "www.openstreetmap.org,
- OpenStreetMap"), opendatacommons.org, а якщо треба, і на creativecommons.org.
+ credit_2_html: Ви повинні також чітко вказувати, що дані доступні на умовах
+ ліцензії Open Database License, а у разі, коли ви використовуєте графічні
+ мапи з нашого сервера, на них розповсюджуються умови CC-BY-SA. Ви можете зробити
+ це, навівши посилання на <a href="http://www.openstreetmap.org/copyright">цю
+ сторінку з роз’ясненням ліцензійних вимог</a>. Або ж, для виконання наших
+ вимог під час розповсюдження даних OSM, ви можете безпосередньо вказувати
+ назву ліцензії(й) та посилання на її(їх) текст. Якщо ви користуєтесь носіями,
+ де використання гіпертекстових посилань неможливе (наприклад друковані матеріали),
+ ми пропонуємо посилатися безпосередньо на www.openstreetmap.org (або розширено
+ "www.openstreetmap.org, OpenStreetMap"), opendatacommons.org, а якщо треба,
+ і на creativecommons.org.
credit_3_html: |-
Для електронних мап, згадка про джерело даних повинна знаходитись у кутку мапи.
Наприклад:
alt: Приклад того, як треба посилатись на OpenStreetMap на веб-сторінці
title: Приклад зазначення авторства
more_title_html: Дізнатися більше
- more_1_html: Дізнайтеся більше про використання наших даних та про те, як вказувати
- нас як джерело походження даних у <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">відповідях
- з правових питань</a>.
+ more_1_html: Дізнайтеся більше про використання наших даних та про те, як посилатися
+ на нас як на джерело, на <a href="http://osmfoundation.org/Licence">сторінці
+ ліцензії OSMF</a> та у <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">відповідях
+ спільноти щодо юридичних питань</a>.
more_2_html: Хоча дані OpenStreetMap є відкритими даними, ми не в змозі надавати
безкоштовний API для сторонніх розробників. Ознайомтесь із нашими <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">Правилами
використання API</a>, <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">Правилами
\n (<a href=\"http://www.and.com\">www.and.com</a>)"
contributors_nz_html: '<strong>Нова Зеландія</strong>: дані отримані з інформації
про земельні ресурси Нової Зеландії. Crown Copyright reserved.'
+ contributors_si_html: '<strong>Словенія</strong>: містить дані <a href="http://www.gu.gov.si/en/">Управління
+ Геодезії і картографії</a> та <a href="http://www.mkgp.gov.si/en/">Міністерства
+ сільського і лісового господарства та продовольства</a> (публічна інформація
+ Словенії).'
contributors_za_html: "<strong>Південна Африка</strong>: Містить дані з \n <a
href=\"http://www.ngi.gov.za/\">Chief Directorate:\n National Geo-Spatial
Information</a>, State copyright reserved."
із нашим <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">порядком
з вилучення таких даних</a> або скористуйтесь безпосередньо нашою <a href="http://dmca.openstreetmap.org/">сторінкою
для онлайн звернень</a>.
+ trademarks_title_html: <span id="trademarks"></span>Торгові марки
+ trademarks_1_html: OpenStreetMap і логотип з лупою є зареєстрованими торговими
+ марками OpenStreetMap Foundation. Якщо у Вас є запитання щодо використання
+ Вами цих марок. будь ласка, надсилайте свої запитання до <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">Licence
+ Working Group</a>.
welcome_page:
title: Ласкаво просимо!
introduction_html: Ласкаво просимо до OpenStreetMap, безкоштовної та доступної
дороги, струмка, озера або будівлі.
tag_html: <strong>Теґ</strong> — одиниця опису точки чи лінії на кшталт назви
ресторану або обмеження швидкості на дорозі.
+ rules:
+ title: Правила!
+ paragraph_1_html: "В OpenStreetMap є кілька формальних правил, але ми сподіваємось,
+ що всі учасники співпрацюватимуть зі спільнотою. Якщо ви плануєте заходи,
+ окрім ручного внесення даних, будь ласка, прочитайте та дотримуйтесь наступних
+ настанов з \n<a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>Імпорту
+ даних</a> та \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>Автоматичного
+ редагування</a>."
questions:
title: Є питання?
paragraph_1_html: |-
url: /welcome
title: Ласкаво просимо до OSM
description: Розпочніть з цього короткого посібника, що охоплює основи OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Uk:Beginners%27_guide
+ title: Посібник новачка
+ description: Посібник для новачків від спільноти.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Поставте запитання або знайдіть відповіді на сайті OSM питання-відповідь.
+ mailing_lists:
+ title: Списки розсилки
+ description: Поставте запитання або обговоріть цікаві речі у широкому виборі
+ тематичних або регіональних списків розсилки.
+ forums:
+ title: Форуми
+ description: Запитання та дискусії для тих, хто віддає перевагу інтерфейсу дошки
+ обговорень.
+ irc:
+ title: IRC
+ description: Інтерактивний чат багатьма мовами на багато тем.
+ switch2osm:
+ title: switch2osm
+ description: Допомога компаніям та організаціям, які переходять на карти та
+ інші послуги OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
open_data_html: |-
OpenStreetMap — це <i>відкриті дані</i>: ви можете вільно використовувати їх для будь-яких цілей до тих пір, поки ви згадуєте OpenStreetMap і його учасників. Якщо ви змінюєте дані або на основі даних будуєте власні певним чином, ви можете розповсюджувати результат лише під тією ж самою ліцензією. Дивіться сторінку <a href='%{copyright_path}'>авторські права і
ліцензії</a>, щоб отримати докладну інформацію.
+ legal_title: Правова інформація
+ legal_html: "Цей сайт та багато інших пов’язаних сервісів формально керуються
+ \n<a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF) \nвід
+ імені спільноти.\n<br> \nБудь ласка, <a href='http://osmfoundation.org/Contact'>зв'яжіться
+ з OSMF</a>, \nякщо у Вас є запитання чи проблеми щодо ліцензування, авторських
+ прав та інших юридичних питань."
partners_title: Партнери
notifier:
diary_comment_notification:
close: Закрити
search:
search: Пошук
+ get_directions: Прокласти маршрут
+ get_directions_title: Знайти маршрут між двома точками
+ from: Від
+ to: До
where_am_i: Що на мапі?
where_am_i_title: Опишіть ваше місце знаходження, скориставшись інструментом
пошуку
register now: Зареєструйтеся зараз
with username: 'Вже є обліковий запис OpenStreetMap? Будь ласка, введіть ваше
ім''я користувача та пароль:'
- with openid: 'Крім того, для входу ви можете скористатись вашим OpenID:'
+ with external: 'Або використовуйте, облікові записи з інших ресурсів:'
new to osm: Вперше на OpenStreetMap?
to make changes: Щоб вносити зміни до даних OpenStreetMap, ви повинні мати обліковий
запис.
діяльність.<br />Будь ласка, зв'яжіться з <a href="%{webmaster}">адміністратором</a>,
якщо ви маєте заперечення.
auth failure: Вибачте, вхід з цими ім'ям або паролем неможливий.
- openid missing provider: На жаль, не вдається зв’язатись з вашим постачальником
- OpenID
- openid invalid: На жаль, схоже ваш OpenID спотворений
openid_logo_alt: Увійти з допомогою OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Увійти з допомогою OpenID
- alt: Увійти з допомогою OpenID URL
+ title: Увійти за допомогою OpenID
+ alt: Увійти за допомогою OpenID URL
google:
- title: Увійти з Google
- alt: Увійти з Google OpenID
+ title: Увійти через Google
+ alt: Увійти через Google OpenID
+ facebook:
+ title: Увійти з Facebook
+ alt: Увійти з облікового запису Facebook
+ windowslive:
+ title: Увійти з Windows Live
+ alt: Увійти з облікового запису Windows Live
yahoo:
- title: Увійти з Yahoo
+ title: Увійти через Yahoo
alt: Увійти з Yahoo OpenID
wordpress:
- title: Увійти з Wordpress
- alt: Увійти з Wordpress OpenID
+ title: Увійти через Wordpress
+ alt: Увійти через Wordpress OpenID
aol:
- title: Увійти з AOL
- alt: Увійти з AOL OpenID
+ title: Увійти через AOL
+ alt: Увійти через AOL OpenID
logout:
title: Вийти
heading: Вийти з OpenStreetMap
display name: 'Показувати ім’я:'
display name description: Ваше загальнодоступне ім’я. Ви можете змінити його
потім у ваших налаштуваннях.
- openid: '%{logo} OpenID:'
+ external auth: 'Автентифікація через:'
password: 'Пароль:'
confirm password: 'Повторіть пароль:'
- use openid: Або використовуйте для входу %{logo} OpenID
- openid no password: Під час використання OpenID пароль не потрібний, але для
- деяких додаткових інструментів або серверів він все ще потрібен.
- openid association: "<p>Ваш OpenID, ще не пов’язаний з вашим обліковим записом
- OpenStreetMap.</p>\n<ul>\n<li>Якщо ви новачок в OpenStreetMap, будь ласка,
- створіть новий обліковий запис, використовуючи форму нижче.</li>\n<li>\n Якщо
- у вас вже є обліковий запис, ви можете увійти до нього, \n використовуючи
- своє ім'я користувача і пароль, і асоціювати свій обліковий запис\n з вашим
- OpenID у налаштуваннях.\n</li>\n</ul>"
+ use external auth: Або використовуйте, облікові записи з інших ресурсів для
+ входу
+ auth no password: Під час використання автентифікації через третю сторону пароль
+ не потрібен, але для деяких додаткових інструментів або серверів він все ще
+ знадобиться.
+ auth association: "<p>Ваш ID, ще не пов’язаний з вашим обліковим записом OpenStreetMap.</p>\n<ul>\n<li>Якщо
+ ви новачок в OpenStreetMap, будь ласка, створіть новий обліковий запис, використовуючи
+ форму нижче.</li>\n<li>\n Якщо у вас вже є обліковий запис, ви можете увійти
+ до нього, \n використовуючи ваші ім'я користувача і пароль, і асоціювати
+ свій обліковий запис з вашим ID в налаштуваннях.\n</li>\n</ul>"
continue: Зареєструватись
terms accepted: Дякуємо за прийняття нових умов співпраці!
terms declined: Нам шкода, що ви вирішили не приймати нові Умови Співпраці.
email never displayed publicly: |2-
(ніколи не показується загальнодоступно)
+ external auth: 'Зовнішня автентифікація:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/Uk:OpenID
link text: що це?
public editing:
press confirm button: Натисніть на кнопку підтвердження нижче, щоб активувати
ваш профіль.
button: Підтвердити
+ success: Ваш обліковий запис підтверджено, дякуємо за реєстрацію!
already active: Цей обліковий запис вже підтверджений.
unknown token: Термін дії коду підтвердження вже минув або він не існує.
reconfirm_html: Якщо ви бажаєте, аби ми повторно надіслали ще одне підтвердження
press confirm button: Натисніть кнопку підтвердження нижче, щоб підтвердити
вашу нову адресу електронної пошти.
button: Підтвердити
- success: Ð\90дÑ\80еÑ\81Ñ\83 ваÑ\88оÑ\97 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и пÑ\96дÑ\82веÑ\80джено, дÑ\8fкÑ\83Ñ\94мо за Ñ\80еÑ\94Ñ\81Ñ\82Ñ\80аÑ\86Ñ\96Ñ\8e!
+ success: Ð\97мÑ\96нÑ\83 вами адÑ\80еÑ\81и елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и пÑ\96дÑ\82веÑ\80джено!
failure: Електронна адреса вже була підтверджена цим посиланням.
+ unknown_token: Цей код підтвердження недійсний або просторочений.
set_home:
flash success: Ваше місце розташування збережено
go_public:
підозрілу\n діяльність. \n </p>\n <p>\n Це рішення буде розглянуто найближчим
часом адміністратором, або\n ви можете зв’язатися з %{webmaster}, якщо
ви хочете обговорити це.\n </p>"
+ auth_failure:
+ connection_failed: З’єднання з джерелом автентифікації не вдалося
+ invalid_credentials: Недійсні облікові дані для автентифікації
+ no_authorization_code: Немає коду авторизації
+ unknown_signature_algorithm: Невідомий алгоритм підпису
+ invalid_scope: Недійсна область
user_role:
filter:
not_an_administrator: Тільки адміністратори можуть керувати ролями користувачів,
heading: '%{block_on}, заблокував: %{block_by}'
time_future: Закінчується %{time}
time_past: Закінчилось %{time} назад
+ created: Створено
+ ago: '%{time} тому'
status: Стан
show: Показувати
edit: Правити
link: Посилання або HTML
long_link: Посилання
short_link: Кор.посил.
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: Встановити власні розміри
format: 'Формат:'
comment: Коментар
edit_help: Перемістіть мапу і наблизьтесь до місця, яке ви бажаєте змінити, потім
клацніть тут.
+ directions:
+ engines:
+ graphhopper_bicycle: Велосипед (GraphHopper)
+ graphhopper_foot: Пішки (GraphHopper)
+ mapquest_bicycle: Велосипед (MapQuest)
+ mapquest_car: Машина (MapQuest)
+ mapquest_foot: Пішки (MapQuest)
+ osrm_car: Машина (OSRM)
+ directions: Маршрут
+ distance: Відстань
+ errors:
+ no_route: Не вдалося знайти маршрут між цими двома точками.
+ no_place: Вибачте - не можу знайти це місце.
+ instructions:
+ roundabout_with_exit: На кільці поверніть на %{exit} виїзд на %{name}
+ unnamed: без імені
+ courtesy: Маршрут наданий %{link}
+ time: Час
query:
node: Точка
way: Лінія
# Messages for Vietnamese (Tiếng Việt)
# Exported from translatewiki.net
# Export driver: phpyaml
+# Author: Dinhxuanduyet
+# Author: KhangND
# Author: Minh Nguyen
# Author: Nemo bis
# Author: Ninomax
+# Author: Ruila
# Author: Trần Nguyễn Minh Huy
---
vi:
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: Xe Cáp treo Lớn
chair_lift: Ghế Cáp treo
drag_lift: Thang kéo trên Mặt đất
+ gondola: Xe Cáp treo Nhỏ
station: Trạm Cáp treo
aeroway:
aerodrome: Sân bay
taxiway: Đường lăn
terminal: Nhà ga Sân bay
amenity:
+ animal_shelter: Trạm Bảo vệ Động vật
arts_centre: Trung tâm Nghệ thuật
atm: Máy Rút tiền Tự động
bank: Ngân hàng
bicycle_parking: Chỗ Đậu Xe đạp
bicycle_rental: Chỗ Mướn Xe đạp
biergarten: Quán rượu Ngoài trời
+ boat_rental: Cho thuê Tàu
brothel: Nhà chứa
bureau_de_change: Tiệm Đổi tiền
bus_station: Bến Xe buýt
car_wash: Tiệm Rửa Xe
casino: Sòng bạc
charging_station: Trạm Sạc Pin
+ childcare: Nhà Giữ Trẻ
cinema: Rạp phim
clinic: Phòng khám
+ clock: Đồng hồ
college: Trường Cao đẳng
community_centre: Trung tâm Cộng đồng
courthouse: Tòa
food_court: Khu Ẩm thực
fountain: Vòi nước
fuel: Cây xăng
+ gambling: Xe Cáp treo Lớn
grave_yard: Nghĩa địa
gym: Nhà Thể dục
health_centre: Trung tâm Y tế
library: Thư viện
market: Chợ
marketplace: Chợ phiên
+ monastery: Nhà tu
+ motorcycle_parking: Chỗ Đậu Xe máy
nightclub: Câu lạc bộ Đêm
nursery: Nhà trẻ
nursing_home: Viện Dưỡng lão
office: Văn phòng
parking: Chỗ Đậu xe
+ parking_entrance: Lối vào Bãi đậu xe
pharmacy: Nhà thuốc
place_of_worship: Nơi Thờ phụng
police: Cảnh sát
veterinary: Phẫu thuật Thú y
village_hall: Trụ sở Làng
waste_basket: Thùng rác
+ waste_disposal: Thùng rác
youth_centre: Trung tâm Thanh niên
boundary:
administrative: Biên giới Hành chính
"yes": Cầu
building:
"yes": Tòa nhà
+ craft:
+ brewery: Nhà máy Bia
+ carpenter: Thợ Đóng Đồ Gỗ
+ electrician: Thợ Lắp điện
+ gardener: Thợ Làm vườn
+ painter: Thợ Sơn
+ photographer: Nhà Chụp hình
+ plumber: Thợ Sửa Ống nước
+ shoemaker: Thợ Đóng giày
+ tailor: Tiệm May
+ "yes": Doanh nghiệp Thủ công
emergency:
+ ambulance_station: Trạm Xe cứu thương
+ defibrillator: Máy Khử Rung Tim
+ landing_site: Nơi Hạ cánh Khẩn cấp
phone: Điện thoại Khẩn cấp
highway:
+ abandoned: Đường Bỏ hoang
bridleway: Đường Cưỡi ngựa
bus_guideway: Làn đường Dẫn Xe buýt
bus_stop: Trạm Xe buýt
construction: Đường Đang Xây
cycleway: Đường Xe đạp
+ elevator: Thang máy
emergency_access_point: Địa điểm Truy nhập Khẩn cấp
footway: Đường Đi bộ
ford: Khúc Sông Cạn
tertiary: Phố
tertiary_link: Phố
track: Đường mòn
+ traffic_signals: Đèn Giao thông
trail: Đường mòn
trunk: Xa lộ
trunk_link: Xa lộ
unclassified: Ngõ
unsurfaced: Đường Không Lát
+ "yes": Đường
historic:
archaeological_site: Khu vực Khảo cổ
battlefield: Chiến trường
boundary_stone: Mốc Biên giới
- building: Tòa nhà
+ building: Tòa nhà Lịch sử
+ bunker: Boong ke
castle: Lâu đài
church: Nhà thờ
+ city_gate: Cổng Thành phố
citywalls: Tường Thành phố
fort: Pháo đài
+ heritage: Nơi Di sản
house: Nhà ở
icon: Thánh tượng
manor: Trang viên
memorial: Vật Tưởng niệm
mine: Mỏ
monument: Công trình Tưởng niệm
+ roman_road: Đường La Mã
ruins: Tàn tích
+ stone: Đá
tomb: Mộ
tower: Tháp
wayside_cross: Thánh Giá Dọc đường
wayside_shrine: Đền thánh Dọc đường
wreck: Xác Tàu Đắm
+ junction:
+ "yes": Giao lộ
landuse:
allotments: Khu Vườn Gia đình
basin: Lưu vực
road: Đất của con Đường
village_green: Sân Làng
vineyard: Vườn Nho
+ "yes": Sử dụng đất
leisure:
beach_resort: Khu Nghỉ mát Ven biển
bird_hide: Căn nhà Quan sát Chim
+ club: Câu lạc bộ
common: Đất Công
+ dog_park: Công viên Chó
fishing: Hồ Đánh cá
+ fitness_centre: Trung tâm Thể dục
fitness_station: Trạm Thể dục
garden: Vườn
golf_course: Sân Golf
+ horse_riding: Cưỡi Ngựa
ice_rink: Sân băng
marina: Bến tàu
miniature_golf: Golf Nhỏ
pitch: Sân cỏ
playground: Sân chơi
recreation_ground: Sân Giải trí
+ resort: Khu Nghỉ mát
sauna: Nhà Tắm hơi
slipway: Bến tàu
sports_centre: Trung tâm Thể thao
swimming_pool: Hồ Bơi
track: Đường Chạy
water_park: Công viên Nước
+ "yes": Giải trí
+ man_made:
+ lighthouse: Hải đăng
+ pipeline: Ống dẫn
+ tower: Tháp
+ works: Nhà máy
+ "yes": Nhân tạo
military:
airfield: Sân bay Không quân
barracks: Trại Lính
forest: Rừng
geyser: Mạch nước Phun
glacier: Sông băng
+ grassland: Đồng cỏ
heath: Bãi Hoang
hill: Đồi
island: Đảo
reef: Rạn san hô
ridge: Luống đất
rock: Đá
+ saddle: Đèo
+ sand: Cát
scree: Sườn Núi Đá
scrub: Đất Bụi rậm
spring: Suối
wood: Rừng
office:
accountant: Kế toán viên
+ administrative: Công sở
architect: Kiến trúc sư
company: Công ty
employment_agency: Trung tâm Tuyển dụng
travel_agent: Văn phòng Du lịch
"yes": Văn phòng
place:
+ allotments: Khu Vườn Gia đình
+ block: Khối phố
airport: Sân bay
city: Thành phố
country: Quốc gia
town: Thị xã/trấn
unincorporated_area: Khu Chưa Hợp nhất
village: Làng
+ "yes": Nơi
railway:
abandoned: Đường sắt Bỏ hoang
construction: Đường sắt Đang Xây
spur: Đường sắt Phụ
station: Nhà ga
stop: Chỗ Xe lửa Dừng lại
- subway: Trạm Xe điện Ngầm
+ subway: Đường ngầm
subway_entrance: Cửa vào Nhà ga Xe điện ngầm
switch: Ghi Đường sắt
tram: Đường Xe điện
"yes": Tiệm
tourism:
alpine_hut: Túp lều Trên Núi
+ apartment: Khu chung cư
artwork: Tác phẩm Nghệ thuật
attraction: Nơi Du lịch
bed_and_breakfast: Nhà trọ
camp_site: Nơi Cắm trại
caravan_site: Bãi Đậu Nhà lưu động
chalet: Nhà ván
+ gallery: Phòng Tranh
guest_house: Nhà khách
hostel: Nhà trọ
hotel: Khách sạn
wadi: Dòng sông Vào mùa
waterfall: Thác
weir: Đập Tràn
+ "yes": Đường thủy
admin_levels:
level2: Biên giới Quốc gia
level4: Biên giới Tỉnh bang
results:
no_results: Không tìm thấy kết quả
more_results: Thêm kết quả
- distance:
- one: khoảng 1 km
- zero: không tới 1 km
- other: khoảng %{count} km
- direction:
- south_west: tây nam
- south: nam
- south_east: đông nam
- east: đông
- north_east: đông bắc
- north: bắc
- north_west: tây bắc
- west: tây
layouts:
logo:
alt_text: Biểu trưng OpenStreetMap
legal_babble:
title_html: Bản quyền và Giấy phép
intro_1_html: |-
- OpenStreetMap là <i>dữ liệu mở</i> được phát hành theo <a
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup> là <i>dữ liệu mở</i> được phát hành theo <a
href="http://opendatacommons.org/licenses/odbl/">Giấy phép Cơ sở dữ liệu Mở của Open Data
- Commons</a> (ODbL).
+ Commons</a> (ODbL) bởi <a href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
intro_2_html: Bạn được tự do sao chép, phân phối, truyền, và tạo ra các tác
phẩm phái sinh từ các dữ liệu của chúng ta, miễn là bạn ghi công OpenStreetMap
và những người đóng góp vào nó. Nếu bạn sửa đổi hoặc tạo sản phẩm dựa trên
alt: Ví dụ ghi công OpenStreetMap trên một trang Web
title: Ví dụ ghi công
more_title_html: Tìm hiểu thêm
- more_1_html: Hãy đọc thêm chi tiết về việc sử dụng dữ liệu của chúng tôi và
- cách ghi công chúng tôi trong <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ?uselang=vi">Hỏi
- đáp Pháp lý</a>.
+ more_1_html: |-
+ Hãy đọc thêm chi tiết về việc sử dụng dữ liệu của chúng tôi và cách ghi công chúng tôi tại <a href="http://osmfoundation.org/Licence">OSMF Licence page</a> and the community <a
+ <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ?uselang=vi">Hỏi đáp Pháp lý</a>.
more_2_html: Tuy OpenStreetMap là một nguồn dữ liệu mở, nhưng chúng tôi không
thể cung cấp API miễn phí cho những nhà phát triển bên thứ ba truy cập bản
đồ. Hãy xem <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy?uselang=vi">Quy
href="http://www.and.com">www.and.com</a>)'
contributors_nz_html: '<strong>New Zealand</strong>: Bao gồm dữ liệu bắt nguồn
từ Land Information New Zealand. Bản quyền Crown Copyright được bảo lưu.'
+ contributors_si_html: "<strong>Slovenia</strong>: Bao gồm dữ liệu từ \n<a href=\"http://www.gu.gov.si/en/\">Cơ
+ quan Khảo sát và Bản đồ</a> và\n<a href=\"http://www.mkgp.gov.si/en/\">Cục
+ Nông nghiệp, Lâm nghiệp, và Thức ăn</a>\n(thông tin công cộng của Slovenia)."
contributors_za_html: '<strong>Nam Phi</strong>: Bao gồm dữ liệu từ <a href="http://www.ngi.gov.za/">Tổng
cục: Thông tin Không gian địa lý Quốc gia</a>, bản quyền nhà nước được bảo
lưu.'
xin vui lòng tham khảo <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure?uselang=vi">quá
trình <i>takedown</i></a> hoặc nộp đơn trực tiếp tại <a href="http://dmca.openstreetmap.org/">trang
khiếu nại trực tuyến</a> của chúng tôi.
+ trademarks_title_html: <span id="trademarks"></span>Nhãn hiệu
+ trademarks_1_html: OpenStreetMap và biểu trưng kính lúp đều là nhãn hiệu đăng
+ ký của Quỹ OpenStreetMap. Nếu bạn có thắc mắc về cách sử dụng các nhãn hiệu
+ này, xin vui lòng liên lạc với <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group?uselang=vi">Nhóm
+ làm việc Giấy phép</a>.
welcome_page:
title: Hoan nghênh!
introduction_html: Chào mừng bạn đã đến OpenStreetMap, bản đồ thế giới có dữ liệu
dòng nước, hồ nước, hoặc tòa nhà.
tag_html: <strong>Thẻ</strong> là một chi tiết về một nốt hoặc lối, thí dụ tên
của một nhà hàng hoặc tốc độ tối đa của một con đường.
+ rules:
+ title: Quy định!
+ paragraph_1_html: "OpenStreetMap có ít quy định chính thức, nhưng chúng ta mong
+ muốn tất cả mọi người tham gia mà cộng tác và giao thiệp với cộng đồng. Nếu
+ bạn tính hoạt động ngoài việc sửa đổi thủ công, xin vui lòng đọc và tuân theo
+ các hướng dẫn về việc <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines?uselang=vi'>nhập</a>
+ và \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct?uselang=vi'>tự
+ động sửa đổi</a>."
questions:
title: Có thắc mắc?
paragraph_1_html: |-
url: /welcome
title: Chào mừng đến với OSM
description: Bắt đầu với cẩm nang các điều cơ bản OpenStreetMap.
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_guide
+ title: Hướng dẫn Bắt đầu
+ description: Hướng dẫn bắt đầu do cộng đồng biên tập.
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: Hỏi hang hoặc tìm kiếm các câu trả lời tại trung tâm hỏi đáp của
OSM.
+ mailing_lists:
+ title: Danh sách thư
+ description: Hỏi han hoặc thảo luận về các chuyện quan trọng trên nhiều danh
+ sách thư được sắp xếp theo chủ đề hoặc khu vực.
+ forums:
+ title: Diễn đàn
+ description: Hỏi han và thảo luận trong một giao diện bảng tin.
+ irc:
+ title: IRC
+ description: Trò chuyện tương tác trong nhiều ngôn ngữ về nhiều chủ đề.
+ switch2osm:
+ title: switch2osm
+ description: Trợ giúp cho những công ty và tổ chức muốn đổi qua các bản đồ và
+ dịch vụ dựa trên OpenStreetMap.
wiki:
url: http://wiki.openstreetmap.org/wiki/Vi:Main_Page?uselang=vi
title: wiki.openstreetmap.org
theo một số cách nhất định, bạn chỉ được phép phân phối tác phẩm kết quả dưới
cùng giấy phép này. Hãy xem chi tiết tại <a href=''%{copyright_path}''>trang
Bản quyền và Giấy phép</a>.'
+ legal_title: Pháp luật
+ legal_html: |-
+ Trang Web này và nhiều dịch vụ có liên quan được hoạt động chính thức bởi <a href='http://osmfoundation.org/?uselang=vi'>Quỹ OpenStreetMap</a> (OSMF) thay mặt cho cộng đồng.
+ <br>
+ Xin vui lòng <a href='http://osmfoundation.org/Contact?uselang=vi'>liên lạc với OSMF</a> nếu bạn có thắc mắc về giấy phép, bản quyền, hoặc vấn đề pháp luật khác.
partners_title: Nhà bảo trợ
notifier:
diary_comment_notification:
close: Đóng
search:
search: Tìm kiếm
+ get_directions: Chỉ đường
+ get_directions_title: Chỉ đường từ một địa điểm tới địa điểm khác
+ from: Từ
+ to: Đến
where_am_i: Tôi ở đâu?
where_am_i_title: Miêu tả vị trí đang ở dùng máy tìm kiếm
submit_text: Đi
register now: Mở tài khoản ngay
with username: 'Đã có tài khoản OpenStreetMap? Hãy đăng nhập với tên người dùng
và mật khẩu của bạn:'
- with openid: 'Hoặc đăng nhập dùng OpenID của bạn:'
+ with external: 'Hoặc đăng nhập qua dịch vụ bên thứ ba:'
new to osm: Mới đến OpenStreetMap?
to make changes: Bạn phải có tài khoản để thay đổi dữ liệu OpenStreetMap.
create account minute: Chỉ mất một phút để mở tài khoản mới.
bị nghi ngờ.<br />Xin vui lòng liên lạc với <a href="%{webmaster}">webmaster</a>
để thảo luận về điều này.
auth failure: Rất tiếc, không thể đăng nhập với những chi tiết đó.
- openid missing provider: Rất tiếc, không thể kết nối với nhà cung cấp OpenID
- của bạn
- openid invalid: Rất tiếc, hình như OpenID của bạn không hợp lệ
openid_logo_alt: Đăng nhập dùng OpenID
- openid_providers:
+ auth_providers:
openid:
- title: Đăng nhập dùng OpenID
+ title: Đăng nhập qua OpenID
alt: Đăng nhập dùng URL OpenID
google:
- title: Đăng nhập với Google
- alt: Đăng nhập với OpenID của Google
+ title: Đăng nhập qua Google
+ alt: Đăng nhập dùng OpenID của Google
+ facebook:
+ title: Đăng nhập qua Facebook
+ alt: Đăng nhập dùng tài khoản Facebook
+ windowslive:
+ title: Đăng nhập qua Windows Live
+ alt: Đăng nhập dùng tài khoản Windows Live
yahoo:
- title: Đăng nhập với Yahoo!
- alt: Đăng nhập với OpenID của Yahoo!
+ title: Đăng nhập qua Yahoo!
+ alt: Đăng nhập dùng OpenID của Yahoo!
wordpress:
- title: Đăng nhập với WordPress
- alt: Đăng nhập với OpenID của WordPress
+ title: Đăng nhập qua WordPress
+ alt: Đăng nhập dùng OpenID của WordPress
aol:
- title: Đăng nhập với AOL
- alt: Đăng nhập với OpenID của AOL
+ title: Đăng nhập qua AOL
+ alt: Đăng nhập dùng OpenID của AOL
logout:
title: Đăng xuất
heading: Đăng xuất OpenStreetMap
display name: 'Tên hiển thị:'
display name description: Tên người dùng của bạn được hiển thị công khai. Bạn
có thể thay đổi tên này về sau trong tùy chọn.
- openid: '%{logo} OpenID:'
+ external auth: 'Xác minh qua Dịch vụ Bên thứ ba:'
password: 'Mật khẩu:'
confirm password: 'Xác nhận Mật khẩu:'
- use openid: Hoặc đăng nhập dùng %{logo} OpenID
- openid no password: Khi đăng nhập dùng OpenID, bạn sẽ không cần đưa vào mật
- khẩu. Tuy nhiên, một số công cụ hoặc máy chủ phụ vẫn có thể cần mật khẩu.
- openid association: |-
- <p>OpenID của bạn chưa được nối với một tài khoản OpenStreetMap.</p>
+ use external auth: Hoặc đăng nhập qua dịch vụ bên thứ ba
+ auth no password: Nếu xác minh qua dịch vụ bên thứ ba, bạn không cần nhập mật
+ khẩu, nhưng một số công cụ hoặc máy chủ khác có thể vẫn yêu cầu mật khẩu.
+ auth association: |-
+ <p>ID của bạn chưa được liên kết với một tài khoản OpenStreetMap.</p>
<ul>
- <li>Nếu bạn mới đến OpenStreetMap, hãy mở tài khoản dùng biểu mẫu ở dưới.</li>
- <li>Nếu đã có tài khoản, bạn có thể đăng nhập vào tài khoản của bạn dùng tên người dùng và một khẩu thường và nối tài khoản với OpenID của bạn tại trang tùy chọn.</li>
+ <li>Nếu bạn mới đến OpenStreetMap, xin vui lòng tạo tài khoản mới dùng biểu mẫu bên dưới.</li>
+ <li>
+ Nếu bạn đã có tài khoản, đăng nhập dùng tên người dùng và mật khẩu của bạn, rồi liên kết tài khoản với ID của bạn trong trang tùy chọn.
+ </li>
</ul>
continue: Mở tài khoản
terms accepted: Cám ơn bạn đã chấp nhận các điều khoản đóng góp mới!
current email address: 'Địa chỉ Thư điện tử Hiện tại:'
new email address: 'Địa chỉ Thư điện tử Mới:'
email never displayed publicly: (không lúc nào hiện công khai)
+ external auth: 'Xác minh Bên ngoài:'
openid:
- openid: 'OpenID:'
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: đây là gì?
public editing:
tử để bắt đầu đóng góp vào bản đồ.
press confirm button: Bấm nút Xác nhận ở dưới để xác nhận tài khoản.
button: Xác nhận
+ success: Đã xác nhận tài khoản của bạn. Cám ơn bạn đã mở tài khoản!
already active: Tài khoản này đã được xác nhận rồi.
unknown token: Dấu hiệu xác nhận này đã hết hạn hoặc không tồn tại.
reconfirm_html: <a href="%{reconfirm}">Nhấn vào đây</a> để gửi thư điện tử xác
press confirm button: Bấm nút Xác nhận ở dưới để xác nhận địa chỉ thư điện tử
mới.
button: Xác nhận
- success: Đã xác nhận địa chỉ thư điện tử mới. Cám ơn bạn đã mở tài khoản!
+ success: Đã xác nhận địa chỉ thư điện tử mới!
failure: Một địa chỉ thư điện tử đã được xác nhận dùng dấu hiệu này.
+ unknown_token: Dấu hiệu xác nhận này đã hết hạn hoặc không tồn tại.
set_home:
flash success: Đã lưu vị trí nhà thành công
go_public:
Quyết định này sẽ được một quản lý viên xem lại không lâu.
Có thể liên lạc với %{webmaster} để thảo luận về vụ cấm này.
</p>
+ auth_failure:
+ connection_failed: Kết nối đến dịch vụ xác minh bị thất bại
+ invalid_credentials: Chứng nhận xác minh không hợp lệ
+ no_authorization_code: Không có mã cho phép
+ unknown_signature_algorithm: Thuật toán chữ ký không rõ
+ invalid_scope: Phạm vi không hợp lệ
user_role:
filter:
not_an_administrator: Chỉ các quản lý viên có quyền quản lý quyền của người
heading: '%{block_on} bị cấm bởi %{block_by}'
time_future: Hết hạn %{time}
time_past: Đã hết hạn cách đây %{time}
+ created: Tạo
+ ago: cách đây %{time}
status: Trạng thái
show: Hiện
edit: Sửa đổi
link: Liên kết hoặc HTML
long_link: Liên kết
short_link: Liên kết Ngắn gọn
+ geo_uri: URI geo
embed: HTML
custom_dimensions: Tùy biến kích thước
format: 'Định dạng:'
comment: Bình luận
edit_help: Di chuyển bản đồ và phóng to một vị trí mà bạn muốn sửa đổi, rồi nhấn
chuột vào đây.
+ directions:
+ engines:
+ graphhopper_bicycle: Xe đạp (GraphHopper)
+ graphhopper_foot: Đi bộ (GraphHopper)
+ mapquest_bicycle: Xe đạp (MapQuest)
+ mapquest_car: Xe hơi (MapQuest)
+ mapquest_foot: Đi bộ (MapQuest)
+ osrm_car: Xe hơi (OSRM)
+ directions: Chỉ đường
+ distance: Tầm xa
+ errors:
+ no_route: Không tìm thấy tuyến đường giữa hai địa điểm này.
+ no_place: Rất tiếc, không tìm thấy địa điểm này.
+ instructions:
+ continue_without_exit: Chạy tiếp trên %{name}
+ slight_right_without_exit: Nghiêng về bên phải vào %{name}
+ turn_right_without_exit: Quẹo phải vào %{name}
+ sharp_right_without_exit: Quẹo gắt bên phải vào %{name}
+ uturn_without_exit: Quay trở lại vào %{name}
+ sharp_left_without_exit: Quẹo gắt bên trái vào %{name}
+ turn_left_without_exit: Quẹo trái vào %{name}
+ slight_left_without_exit: Nghiêng về bên trái vào %{name}
+ via_point_without_exit: (địa điểm trên đường)
+ follow_without_exit: Chạy theo %{name}
+ roundabout_without_exit: Tại bùng binh, đi ra tại %{name}
+ leave_roundabout_without_exit: Đi ra khỏi bùng binh – %{name}
+ stay_roundabout_without_exit: Chạy tiếp xung quanh bùng binh – %{name}
+ start_without_exit: Bắt đầu tại cuối %{name}
+ destination_without_exit: Tới nơi
+ against_oneway_without_exit: Chạy ngược chiều trên %{name}
+ end_oneway_without_exit: Kết thúc khúc một chiều trên %{name}
+ roundabout_with_exit: Tại bùng binh, đi ra tại đường thứ %{exit} tức %{name}
+ unnamed: không tên
+ courtesy: Chỉ đường do %{link} cung cấp
+ time: Thời gian
query:
node: Nốt
way: Lối
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Anakmalaysia
+# Author: Boyuan Yang
# Author: Dimension
# Author: Duolaimi
# Author: Hydra
# Author: Xiaomingyan
# Author: Yfdyh000
# Author: 乌拉跨氪
+# Author: 阿pp
+# Author: 아라
---
zh-CN:
html:
time:
formats:
friendly: '%Y 年%B %e 日 %H:%M'
- blog: '%Y年 %B e日'
+ blog: '%Y年%B%e日'
activerecord:
models:
acl: 访问控制列表
title_particular: 'OpenStreetMap 修改集合 #%{changeset_id} 讨论'
comment: '%{author} 对修改集合 #%{changeset_id} 的新评论'
commented_at_html: 更新于 %{when} 前
- commented_at_by_html: '%{user} 上传于 %{when} 前'
+ commented_at_by_html: 由 %{user} 更新于 %{when} 前
full: 完整讨论
diary_entry:
new:
save_button: 保存
no_such_entry:
title: 没有这篇日记文章
- heading: 没有文章 ID 为:%{id}
+ heading: 没有 ID 为:%{id} 的文章
body: 对不起,没有 id 为 %{id} 的日记文章或评论。请检查您的拼写,或是您可能点击了错误的链接。
diary_entry:
posted_by: '%{link_user} 于 %{created} 以%{language_link}发表'
prefix_format: '%{name}'
prefix:
aerialway:
+ cable_car: 缆车
chair_lift: 登山吊椅
drag_lift: 上山牵引机
+ gondola: 索道
station: 缆车站台
aeroway:
aerodrome: 小型飞机场
taxiway: 滑行道
terminal: 航站楼
amenity:
+ animal_shelter: 动物收养所
arts_centre: 艺术中心
atm: 自动提款机
bank: 银行
bicycle_parking: 自行车停车处
bicycle_rental: 自行车出租点
biergarten: 露天啤酒店
+ boat_rental: 租船处
brothel: 妓院
bureau_de_change: 外汇兑换点
bus_station: 公共汽车枢纽
car_wash: 洗车
casino: 赌场
charging_station: 充电站
+ childcare: 托儿所
cinema: 电影院
clinic: 诊所
+ clock: 时钟
college: 学院
community_centre: 社区中心
courthouse: 法院
food_court: 美食广场
fountain: 喷泉
fuel: 加油站
+ gambling: 赌博
grave_yard: 墓地
gym: 健身中心/健身房
health_centre: 医疗中心
library: 图书馆
market: 市场
marketplace: 市场
+ monastery: 修道院
+ motorcycle_parking: 摩托车停放处
nightclub: 夜总会
nursery: 托儿所
nursing_home: 疗养院
office: 办公室
parking: 停车场
+ parking_entrance: 停车场入口
pharmacy: 药店
place_of_worship: 宗教场所
police: 警察局
veterinary: 兽医
village_hall: 村政厅
waste_basket: 垃圾桶
+ waste_disposal: 废物处理
youth_centre: 青少年中心
boundary:
administrative: 行政区边界
"yes": 桥
building:
"yes": 建筑物
+ craft:
+ brewery: 啤酒厂
+ carpenter: 木匠
+ electrician: 电工
+ gardener: 园丁
+ painter: 画家
+ photographer: 摄影师
+ plumber: 管道工
+ shoemaker: 鞋匠
+ tailor: 裁缝
+ "yes": 工艺品店
emergency:
+ ambulance_station: 救护站
+ defibrillator: 除颤仪
+ landing_site: 紧急着陆地点
phone: 紧急电话
highway:
+ abandoned: 弃用公路
bridleway: 马道
bus_guideway: 导轨公交车道
bus_stop: 公共汽车站
construction: 在建公路
cycleway: 自行车道
+ elevator: 电梯
emergency_access_point: 紧急求救点
footway: 人行道
ford: 浅滩
tertiary: 三级道路
tertiary_link: 三级道路
track: 小路
+ traffic_signals: 交通信号灯
trail: 小路
- trunk: 干道
+ trunk: 主干道路
trunk_link: 干道
unclassified: 无等级道路
unsurfaced: 无铺面道路
+ "yes": 道路
historic:
archaeological_site: 遗址
battlefield: 战场
boundary_stone: 界碑
- building: 建筑物
+ building: 古建筑
+ bunker: 地堡
castle: 城堡
church: 教堂
+ city_gate: 城门
citywalls: 城墙
fort: 堡垒
+ heritage: 遗产地
house: 房屋
icon: 圣像画
manor: 庄园
memorial: 纪念碑
mine: 矿井
monument: 纪念碑
+ roman_road: 罗马道路
ruins: 遗迹
+ stone: 石头
tomb: 墓
tower: 塔
wayside_cross: 路旁十字架
wayside_shrine: 路旁神龛
wreck: 残骸
+ junction:
+ "yes": 交叉点
landuse:
allotments: 小块园地
basin: 盆地
road: 道路区
village_green: 乡村草坪
vineyard: 葡萄园
+ "yes": 土地利用
leisure:
beach_resort: 海滩度假村
bird_hide: 野生动物观察站
+ club: 俱乐部
common: 公共用地
+ dog_park: 狗公园
fishing: 垂钓区
+ fitness_centre: 健身中心
fitness_station: 健身设施
garden: 花园
golf_course: 高尔夫球场
+ horse_riding: 骑马运动
ice_rink: 滑冰场
marina: 小船坞
miniature_golf: 迷您高尔夫球场
pitch: 体育场
playground: 儿童游乐场
recreation_ground: 游乐场
+ resort: 度假胜地
sauna: 桑拿
slipway: 船台
sports_centre: 体育中心
swimming_pool: 游泳池
track: 跑道
water_park: 水上公园
+ "yes": 闲暇
+ man_made:
+ lighthouse: 灯塔
+ pipeline: 管道
+ tower: 塔
+ works: 工厂
+ "yes": 人造
military:
airfield: 军用机场
barracks: 营房
forest: 森林
geyser: 间歇泉
glacier: 冰川
+ grassland: 草地
heath: 希思地貌
hill: 希尔地貌
island: 岛
reef: 礁
ridge: 山脊
rock: 岩
+ saddle: 鞍
+ sand: 沙滩
scree: 岩屑堆
scrub: 灌木丛
spring: 泉
wood: 树林
office:
accountant: 会计师事务所
+ administrative: 管理
architect: 设计院
company: 公司
employment_agency: 职业介绍所
travel_agent: 旅行社
"yes": 办公室
place:
+ allotments: 分配的土地
+ block: 块
airport: 机场
city: 城市
country: 国家
town: 镇
unincorporated_area: 非建制地区
village: 村
+ "yes": 地方
railway:
abandoned: 已拆除铁路
construction: 在建铁路
spur: 铁路支线
station: 火车站
stop: 火车停车点
- subway: 地铁站
+ subway: 地铁
subway_entrance: 地铁入口
switch: 道岔
tram: 电车轨道
"yes": 商店
tourism:
alpine_hut: 高山小屋
+ apartment: 公寓
artwork: 艺术品
attraction: 景点
bed_and_breakfast: 家庭旅馆
camp_site: 宿营地
caravan_site: 房车宿营地
chalet: 小屋
+ gallery: 图库
guest_house: 旅馆
hostel: 招待所
hotel: 酒店
wadi: 干河
waterfall: 瀑布
weir: 堰
+ "yes": 航道
admin_levels:
level2: 国界
level4: 州界
results:
no_results: 没有找到结果
more_results: 更多结果
- distance:
- zero: 小于 1 千米
- one: 约 1 千米
- other: 约 %{count} 千米
- direction:
- south_west: 西南
- south: 南
- south_east: 东南
- east: 东
- north_east: 东北
- north: 北
- north_west: 西北
- west: 西
layouts:
project_name:
title: OpenStreetMap
legal_babble:
title_html: 著作权与许可
intro_1_html: |-
- OpenStreetMap 是<i>开放数据</i>,采用<a
- href="http://opendatacommons.org/licenses/odbl/">开放数据共享开放数据库许可协议</a> (ODbL)授权。
+ OpenStreetMap<sup><a href="#trademarks">®</a></sup>是<i>开放数据</i>,由<a
+ href="http://osmfoundation.org/">OpenStreetMap基金会</a>(OSMF)采用<a
+ href="http://opendatacommons.org/licenses/odbl/">开放数据共享开放数据库许可协议</a>(ODbL)授权。
intro_2_html: 只要您表明来源为 OpenStreetMap 及其贡献者,您就可以自由地复制、分发、传送和改编我们的数据。如果您想转换或者以我们的数据为基础进行创作,您只能采用相同的许可协议发表您的作品。完整的<a
href="http://opendatacommons.org/licenses/odbl/1.0/">法律文本</a>阐明了您的权利和义务。
intro_3_html: 我们的地图图块中的绘图数据以及我们的文档采用<a href="http://creativecommons.org/licenses/by-sa/2.0/deed.zh">知识共享“署名-相同方式共享
more_title_html: 了解更多
more_1_html: |-
请在<a
+ href="http://osmfoundation.org/Licence">OSMF许可协议页面</a>和<a
href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">法律常见问题</a>阅读更多关于使用我们的数据,以及如何表明我们是作者的信息。
more_2_html: 尽管 OpenStreetMap 开放数据,但是我们无法为第三方开发人员提供免费的地图 API。详见我们的 <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API使用政策</a>、<a
href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">图块使用政策</a>及<a
的数据。
contributors_nl_html: <strong>荷兰</strong>:含有© AND data, 2007(<a href="http://www.and.com">www.and.com</a>)
contributors_nz_html: <strong>新西兰</strong>:包含来自新西兰土地信息部的数据。Crown 版权所有。
+ contributors_si_html: |-
+ <strong>斯洛文尼亚</strong>:包含来自
+ <a href="http://www.gu.gov.si/en/">Surveying and Mapping Authority</a>和
+ <a href="http://www.mkgp.gov.si/en/">Ministry of Agriculture, Forestry and Food</a>(斯洛文尼亚公开信息)的数据。
contributors_za_html: <strong>南非</strong>:包含来自<a href="http://www.ngi.gov.za/">行政局:国家地球空间信息</a>,国家版权所有。
contributors_gb_html: <strong>英国</strong>:包含来自 Ordnance 的调查数据,© Crown 版权所有及数据库权利,2010-12。
contributors_footer_1_html: |-
infringement_1_html: OSM 的贡献者会被提醒,绝不要在没有著作权人的明确许可时添加来自任何有著作权的来源的数据(如谷歌地图或印刷地图)。
infringement_2_html: 如果您认为版权的材料已被不恰当地添加的 OpenStreetMap 数据库或该网站,请参见我们的<a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">撤除程序</a>,或直接在我们的<a
href="http://dmca.openstreetmap.org/">在线申报页面</a>上提出。
+ trademarks_title_html: <span id="trademarks"></span>商标
+ trademarks_1_html: OpenStreetMap和放大镜标志是OpenStreetMap基金会的注册商标。如果您对使用这些标志有任何问题,请在<a
+ href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">授权工作组</a>提出您的问题。
welcome_page:
title: 欢迎!
introduction_html: 欢迎访问 OpenStreeMap,自由且可编辑的世界地图。您已经登录,可以开始绘制地图。这里是含有您需要知道的最重要的信息的快速指南。
node_html: <strong>节点</strong>是地图上的点,例如一个餐馆或一棵树。
way_html: <strong>路径</strong>是线或区域,例如一条路、一条溪、一个湖或一个建筑物。
tag_html: <strong>标签</strong>是关于节点或路径的简短数据,例如餐馆的名字或者道路的速度限制。
+ rules:
+ title: 规则!
questions:
title: 还有疑问吗?
paragraph_1_html: OpenStreetMap 有若干资源用于学习该项目,提问和回答问题,以及讨论与制作地图相关的话题并且撰写相关文档。<a
url: /welcome
title: 欢迎访问 OSM
description: 本快速指南涵盖了快速入门 OpenStreetMap 的基本知识。
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Zh-hans:Beginners%27_guide
+ title: 初学者指南
+ description: 社群维护的新手指南。
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
description: 在 OSM 的问答网站提问或查找回答。
+ mailing_lists:
+ title: 邮件列表
+ forums:
+ title: 论坛
+ irc:
+ title: IRC
+ description: 在很多不同的语言和在很多话题间交互聊天。
+ switch2osm:
+ title: switch2osm
+ description: 协助公司与组织改用 OpenStreetMap 为基础的地图与相关服务。
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
open_data_title: 开放数据
open_data_html: OpenStreetMap 是<i>开源数据</i>:只要您表明使用了 OpenStreetMap 并承认其贡献者的工作,您就可以使用
OpenStreetMap。如果您改变或者使用这些数据,您必须按照相同的版权协议发布结果。详情请参见<a href='%{copyright_path}'>版权协议</a>。
+ legal_title: 法律
+ legal_html: |-
+ 此网站和很多其他相关服务已由<a href='http://osmfoundation.org/'>OpenStreetMap基金会</a>(OSMF)正式代表社群运营。
+ <br>
+ 如果您有许可协议、版权或其他法律问题,请<a href='http://osmfoundation.org/Contact'>联络OSMF</a>。
partners_title: 合作伙伴
notifier:
diary_comment_notification:
close: 关闭
search:
search: 搜索
+ get_directions: 获取方向
+ get_directions_title: 查找两点之间的方向
+ from: 从
+ to: 至
where_am_i: 我在哪里?
where_am_i_title: 使用搜索引擎说明当前位置
submit_text: 提交
table:
entry:
motorway: 高速公路
- trunk: 城市快速道路
+ trunk: 主干道路
primary: 一级道路
secondary: 二级道路
- unclassified: æ\9cªå\88\86ç±»道路
+ unclassified: æ\97 ç\89级道路
unsurfaced: 无铺面道路
track: 小路
byway: 小路
login_button: 登录
register now: 现在就注册
with username: 已经有 OpenStreetMap 账户?请使用您的用户名和密码登录:
- with openid: 或使用 OpenID 登录:
+ with external: 或者使用第三方服务登录:
new to osm: 第一次来到 OpenStreetMap?
to make changes: 要修改 OpenStreetMap 的数据,您必须拥有一个帐户。
create account minute: 创建账户。只需花费一分钟。
account not active: 对不起,您的账户尚未激活。<br />请点击在账户确认邮件中的链接来激活您的账户,或<a href="%{reconfirm}">请求新的确认电子邮件</a>。
account is suspended: 对不起,您的帐户因可疑活动已被暂停。<br />如果您想讨论这个,请联系<a href="%{webmaster}">网站管理员</a>。
auth failure: 对不起,凭这些信息您无法登录。
- openid missing provider: 对不起,无法联系您的 OpenID 提供者
- openid invalid: 对不起,您的 OpenID 格式似乎不正确
openid_logo_alt: 使用 OpenID 登录
- openid_providers:
+ auth_providers:
openid:
- title: OpenID 登录
- alt: 使用 OpenID URL 登录
+ title: 使用OpenID登录
+ alt: 使用OpenID URL登录
google:
- title: Google 登录
- alt: 使用Google OpenID 登录
+ title: 使用Google登录
+ alt: 使用Google OpenID登录
+ facebook:
+ title: 使用脸书登录
+ alt: 使用Facebook账户登录
+ windowslive:
+ title: 使用Windows Live登录
+ alt: 使用一个Windows Live账户登录
yahoo:
- title: Yahoo 登录
- alt: 使用 Yahoo OpenID 登录
+ title: 使用Yahoo登录
+ alt: 使用Yahoo OpenID登录
wordpress:
- title: Wordpress 登录
+ title: 使用Wordpress登录
alt: 使用 Wordpress OpenID 登录
aol:
- title: AOL 登录
- alt: 使用 AOL OpenID 登录
+ title: 使用AOL登录
+ alt: 使用AOL OpenID登录
logout:
title: 退出
heading: 退出 OpenStreetMap
title="wiki privacy policy including section on email addresses">隐私政策</a>)
display name: 显示名称:
display name description: 您公开显示的用户名。您可以稍后在首选项中进行修改。
- openid: '%{logo} OpenID:'
+ external auth: 第三方身份验证:
password: 密码:
confirm password: 确认密码:
- use openid: 或者,使用 %{logo} OpenID 登录
- openid no password: 使用 OpenID 时密码不是必需的,但一些额外的工具或服务器可能需要一个。
- openid association: |-
- <p>您的 OpenID 尚未与一个 OpenStreetMap 帐户相关联。</p>
+ use external auth: 或者使用第三方服务登录
+ auth no password: 通过第三方身份验证,您不再需要密码,但一些额外工具或服务器可能仍然需要。
+ auth association: |-
+ <p>您的ID目前尚未与一个OpenStreetMap账户相关联。</p>
<ul>
- <li>如果您是新来到 OpenStreetMap,请使用下面的表单创建一个新的帐户。</li>
+ <li>如果您刚刚接触OpenStreetMap,请使用下方的表格创建一个账户。</li>
<li>
- 如果您已经有一个帐户,您可以使用您的
- 用户名和密码登录到您的帐户,然后在您
- 的用户首选项中关联您的 OpenID。
+ 如果您已经拥有了一个账户,您可以使用您的用户名和密码
+ 登陆您的账户,之后可以在用户设置中将账户与您的ID关联。
</li>
</ul>
continue: 注册
current email address: 当前电子邮件地址:
new email address: 新电子邮件地址:
email never displayed publicly: (从不公开显示)
+ external auth: 外部身份验证:
openid:
- openid: OpenID:
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: 这是什么?
public editing:
introduction_2: 点击电子邮件中的链接确认您的账户,然后您就可以开始绘制地图了。
press confirm button: 按下面的确认按钮激活您的账户。
button: 确认
+ success: 已确认您的账号,感谢您的注册!
already active: 该账户已经确认。
unknown token: 确认码已经过期或不存在。
reconfirm_html: 如果您需要我们重新发送确认邮件,<a href="%{reconfirm}">请点击这里</a>。
heading: 确认电子邮件地址修改
press confirm button: 按下面的确认按钮以确认您的新电子邮件地址。
button: 确认
- success: 已确认您的电子邮件地址,感谢您的注册!
+ success: 已确认您对电子邮件地址的更改!
failure: 具有此令牌的电子邮件地址已经确认过了。
+ unknown_token: 那个确认代码已过期或不存在。
set_home:
flash success: 成功保存您所在位置
go_public:
这项决定将在短时间内由管理员审核,或者如果您想讨论这一点
,可以联系 %{webmaster}。
</p>
+ auth_failure:
+ connection_failed: 连接身份验证提供方失败
+ invalid_credentials: 无效的身份验证凭证
+ no_authorization_code: 没有授权码
+ unknown_signature_algorithm: 未知签名算法
+ invalid_scope: 无效范围
user_role:
filter:
not_an_administrator: 只有管理员可以执行用户角色管理,而您不是管理员。
heading: '%{block_on} 被 %{block_by} 封禁'
time_future: 结束于 %{time}
time_past: 结束于 %{time} 前
+ created: 已创建
+ ago: '%{time}前'
status: 状态
show: 显示
edit: 编辑
link: 链接或 HTML
long_link: 链接
short_link: 短链接
+ geo_uri: Geo URI
embed: HTML
custom_dimensions: 设定自定义尺寸
format: 格式:
show:
comment: 评论
subscribe: 订阅
- unsubscribe: 退订
+ unsubscribe: 取消订阅
hide_comment: 隐藏
unhide_comment: 取消隐藏
notes:
comment_and_resolve: 评论与解决
comment: 评论
edit_help: 移动地图并在您想编辑的位置放大,然后点击这里。
+ directions:
+ engines:
+ graphhopper_bicycle: 自行车(GraphHopper)
+ graphhopper_foot: 步行(GraphHopper)
+ mapquest_bicycle: 自行车(MapQuest)
+ mapquest_car: 汽车(MapQuest)
+ mapquest_foot: 步行(MapQuest)
+ osrm_car: 汽车(OSRM)
+ directions: 方向
+ distance: 距离
+ errors:
+ no_route: 找不到那两个地方之间的路径。
+ no_place: 抱歉——找不到那个地方。
+ instructions:
+ continue_without_exit: 在%{name}上直走
+ slight_right_without_exit: 稍向右转至%{name}
+ turn_right_without_exit: 右转至%{name}
+ sharp_right_without_exit: 向右急转至%{name}
+ uturn_without_exit: 沿着%{name}掉头
+ sharp_left_without_exit: 向左急转至%{name}
+ turn_left_without_exit: 左转至%{name}
+ slight_left_without_exit: 稍向左转至%{name}
+ via_point_without_exit: (通过点)
+ follow_without_exit: 关注%{name}
+ roundabout_without_exit: 在转盘驶入%{name}
+ leave_roundabout_without_exit: 离开转盘 - %{name}
+ stay_roundabout_without_exit: 在转盘停留 - %{name}
+ start_without_exit: 在%{name}终点开始
+ destination_without_exit: 到达目的地
+ against_oneway_without_exit: '%{name}单向行驶'
+ end_oneway_without_exit: '%{name}单向终点'
+ roundabout_with_exit: 在环形交叉的%{exit}号出口离开前往%{name}
+ unnamed: 未命名道路
+ courtesy: 方向经由%{link}
+ time: 时间
query:
node: 节点
way: 路径
# Author: Mywood
# Author: Orinx
# Author: Pesder
+# Author: Ruila
# Author: Shangkuanlc
# Author: Simon Shek
# Author: StephDC
# Author: SupaplexTW
# Author: Wehwei
# Author: Wrightbus
+# Author: 아라
---
zh-TW:
time:
formats:
- friendly: '%Y年 %B %e日 %H 時 %M 分'
- blog: '%Y年 %B %e日'
+ friendly: '%Y 年 %B %e 日 %H 時 %M 分'
+ blog: '%Y年%B%e日'
activerecord:
models:
acl: 存取控制清單
- changeset: 變更組合
- changeset_tag: 變更組合標籤
+ changeset: 變更集
+ changeset_tag: 變更集標籤
country: 國家
- diary_comment: æ\97¥è¨\98註解
+ diary_comment: æ\97¥è¨\98è©\95è«\96
diary_entry: 日記項目
- friend: 朋友
+ friend: 好友
language: 語言
message: 訊息
node: 節點
notifier: 通知
old_node: 舊的節點
old_node_tag: 舊的節點標籤
- old_relation: 舊的關係
- old_relation_member: 舊的關係成員
- old_relation_tag: 舊的關係標籤
+ old_relation: 舊的關聯
+ old_relation_member: 舊的關聯成員
+ old_relation_tag: 舊的關聯標籤
old_way: 舊的路徑
old_way_node: 舊的路徑節點
old_way_tag: 舊的路徑標籤
- relation: 關係
- relation_member: 關係成員
- relation_tag: 關係標籤
+ relation: 關聯
+ relation_member: 關聯成員
+ relation_tag: 關聯標籤
session: 作業階段
trace: 軌跡
tracepoint: 軌跡點
tracetag: 軌跡標籤
user: 使用者
user_preference: 使用者偏好設定
- user_token: 使用者記號
+ user_token: 使用者密鑰
way: 路徑
way_node: 路徑節點
way_tag: 路徑標籤
language: 語言
friend:
user: 使用者
- friend: 朋友
+ friend: 好友
trace:
user: 使用者
visible: 可見性
recipient: 收件者
user:
email: Email
- active: 啟用
+ active: 開啟
display_name: 顯示名稱
description: 描述
languages: 語言
browse:
created: 已建立於
closed: 已關閉於
- created_html: 於<abbr title='%{title}'>%{time}前</abbr>建立
- closed_html: 於<abbr title='%{title}'>%{time}前</abbr>關閉
- created_by_html: 於<abbr title='%{title}'>%{time}前</abbr>由%{user}建立
- deleted_by_html: 於<abbr title='%{title}'>%{time}前</abbr>由%{user}刪除
- edited_by_html: 於<abbr title='%{title}'>%{time}前</abbr>由%{user}編輯
- closed_by_html: 於<abbr title='%{title}'>%{time}前</abbr>由%{user}關閉
+ created_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>建立
+ closed_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>關閉
+ created_by_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>由 %{user} 建立
+ deleted_by_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>由 %{user} 刪除
+ edited_by_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>由 %{user} 編輯
+ closed_by_html: 已於 <abbr title='%{title}'>%{time} 前</abbr>由 %{user} 關閉
version: 版本
- in_changeset: 變更組合
+ in_changeset: 變更集
anonymous: 匿名
no_comment: (沒有評論)
part_of: 屬於:
view_details: 檢視詳細資訊
location: 位置:
changeset:
- title: 變更組合:%{id}
+ title: 變更集:%{id}
belongs_to: 作者
- node: 節點 (共%{count}項)
- node_paginated: 節點 (共%{count}項中的第%{x}-%{y}項)
- way: 路徑 (共%{count}項)
- way_paginated: 路線(%{count}的%{x}-%{y})
- relation: 關係(%{count})
- relation_paginated: 關係(%{count}的%{x}-%{y})
- comment: 留言(%{count})
- hidden_commented_by: 隱藏來自%{user},<abbr title='%{exact_time}'>%{when} ago</abbr>的評論
- commented_by: '%{user}於<abbr title=''%{exact_time}''>%{when}前</abbr>發表的評論'
- changesetxml: 變更組合 XML
- osmchangexml: osmChange格式 XML
+ node: 節點 (共 %{count} 項)
+ node_paginated: 節點 (共 %{count} 項中的第 %{x}-%{y} 項)
+ way: 路徑 (共 %{count} 項)
+ way_paginated: 路線 (%{count} 的 %{x}-%{y})
+ relation: 關聯 (%{count})
+ relation_paginated: 關聯 (%{count} 的 %{x}-%{y})
+ comment: 評論 (%{count})
+ hidden_commented_by: 隱藏來自 %{user} 於 <abbr title='%{exact_time}'>%{when} 前</abbr>的評論
+ commented_by: 來自 %{user} 於 <abbr title='%{exact_time}'>%{when} 前</abbr>的評論
+ changesetxml: 變更集 XML
+ osmchangexml: osmChange 格式 XML
feed:
- title: 變更組合 %{id}
- title_comment: 變更組合 %{id} - %{comment}
- join_discussion: 登入後參與討論
+ title: 變更集 %{id}
+ title_comment: 變更集 %{id} - %{comment}
+ join_discussion: 登入以加入討論
discussion: 討論
node:
title: 節點:%{name}
history_title: 路徑歷史:%{name}
nodes: 節點
also_part_of:
- one: 路徑%{related_ways}的部份
- other: 路徑%{related_ways}的部份
+ one: 路徑 %{related_ways} 的部份
+ other: 路徑 %{related_ways} 的部份
relation:
- title: '關係: %{name}'
- history_title: '關係修訂歷史: %{name}'
+ title: 關聯:%{name}
+ history_title: 關聯歷史:%{name}
members: 成員
relation_member:
entry_role: '%{type} %{name} 作為 %{role}'
type:
node: 節點
way: 路徑
- relation: 關係
+ relation: 關聯
containing_relation:
- entry: 關係 %{relation_name}
- entry_role: 關係 %{relation_name} (作為 %{relation_role})
+ entry: 關聯 %{relation_name}
+ entry_role: 關聯 %{relation_name} (作為 %{relation_role})
not_found:
- sorry: 抱歉,找不到%{type}#%{id}。
+ sorry: 抱歉,找不到 %{type}#%{id}。
type:
node: 節點
way: 路徑
- relation: 關係
- changeset: 變更組合
+ relation: 關聯
+ changeset: 變更集
timeout:
- sorry: 抱歉,索取id為%{id}的%{type}資料,花費時間過長。
+ sorry: 抱歉,索取 id 為 %{id} 的 %{type} 資料,花費時間過長。
type:
node: 節點
way: 路徑
- relation: 關係
- changeset: 變更組合
+ relation: 關聯
+ changeset: 變更集
redacted:
- redaction: 刪蓋程序%{id}
- message_html: 此%{type}的版本%{version}已被刪蓋,因此未能顯示。詳細資訊請參閱%{redaction_link}。
+ redaction: 編修程序 %{id}
+ message_html: 此 %{type} 的版本 %{version} 已被編修,因此未能顯示。詳細資訊請參閱 %{redaction_link}。
type:
node: 節點
way: 路徑
- relation: 關係
+ relation: 關聯
start_rjs:
- feature_warning: 載入%{num_features}項物件的資料,可能會使你的瀏覽器操作緩慢或反應遲緩。你確定要顯示這些資料嗎?
+ feature_warning: 載入 %{num_features} 項物件的資料,可能會使你的瀏覽器操作緩慢或反應遲緩。你確定要顯示這些資料嗎?
load_data: 載入資料
loading: 正在載入...
tag_details:
tags: 標籤
wiki_link:
- key: '%{key}標籤的wiki說明頁面'
- tag: '%{key}=%{value}標籤的wiki說明頁面'
- wikidata_link: 維基數據上的%{page}項目
- wikipedia_link: ç¶å\9fºç\99¾ç§\91ä¸\8aç\9a\84 %{page} æ¢\9dç\9b®
+ key: '%{key} 標籤的 wiki 描述頁面'
+ tag: '%{key}=%{value} 標籤的 wiki 描述頁面'
+ wikidata_link: 維基數據上的 %{page} 項目
+ wikipedia_link: ç¶å\9fºç\99¾ç§\91ä¸\8aç\9a\84 %{page} æ\96\87ç«
telephone_link: 打給 %{phone_number}
note:
- title: 節點:%{id}
- new_note: 新增節點
- description: '描述:'
- open_title: '未解決的筆記: #%{note_name}'
- closed_title: 已解決的筆記:#%{note_name}
- hidden_title: 已隱藏的筆記:#%{note_name}
- open_by: 於<abbr title='%{exact_time}'>%{when}前</abbr>由%{user}建立
- open_by_anonymous: 於<abbr title='%{exact_time}'>%{when}前</abbr>由匿名用户建立
- commented_by: '%{user}於<abbr title=''%{exact_time}''>%{when}前</abbr>發表的評論'
- commented_by_anonymous: 匿名用户於<abbr title='%{exact_time}'>%{when}前</abbr>發表的評論
- closed_by: 於<abbr title='%{exact_time}'>%{when}前</abbr>由%{user}解決
- closed_by_anonymous: 於<abbr title='%{exact_time}'>%{when}前</abbr>由匿名用户解決
- reopened_by: 於<abbr title='%{exact_time}'>%{when}前</abbr>由%{user}重開
- reopened_by_anonymous: 於<abbr title='%{exact_time}'>%{when}前</abbr>由匿名用户重開
- hidden_by: 於<abbr title='%{exact_time}'>%{when}前</abbr>由%{user}隱藏
+ title: 註記:%{id}
+ new_note: 新增註記
+ description: 描述
+ open_title: 未解決的註記:#%{note_name}
+ closed_title: 已解決的註記:#%{note_name}
+ hidden_title: 已隱藏的註記:#%{note_name}
+ open_by: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由 %{user} 建立
+ open_by_anonymous: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由匿名使用者建立
+ commented_by: '%{user} 於 <abbr title=''%{exact_time}''>%{when} 前</abbr>的評論'
+ commented_by_anonymous: 匿名使用者於 <abbr title='%{exact_time}'>%{when} 前</abbr>的評論
+ closed_by: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由 %{user} 解決
+ closed_by_anonymous: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由匿名使用者解決
+ reopened_by: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由 %{user} 重新開啟
+ reopened_by_anonymous: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由匿名使用者重新開啟
+ hidden_by: 已於 <abbr title='%{exact_time}'>%{when} 前</abbr>由 %{user} 隱藏
query:
title: 查詢圖徵
- introduction: 點擊地圖以尋找附近的圖徵
+ introduction: 點選地圖以尋找附近的圖徵
nearby: 附近圖徵
enclosing: 區域內圖徵
changeset:
changeset_paging_nav:
- showing_page: 第%{page}頁
+ showing_page: 第 %{page} 頁
next: 下一頁 »
previous: « 上一頁
changeset:
anonymous: 匿名
no_edits: (沒有編輯)
- view_changeset_details: 檢視變更組合詳細資訊
+ view_changeset_details: 檢視變更集詳細資訊
changesets:
id: ID
- saved_at: 儲存於
+ saved_at: å·²å\84²å\98æ\96¼
user: 使用者
comment: 評論
area: 區域
list:
- title: 變更組合
- title_user: '%{user}的變更組合'
- title_friend: 您朋友的變更組合
- title_nearby: é\84°è¿\91使ç\94¨è\80\85ç\9a\84è®\8aæ\9b´çµ\84å\90\88
- empty: 發現沒有變更組合。
- empty_area: 這一地區沒有變更組合。
- empty_user: 此用戶沒有變更組合。
- no_more: æ²\92æ\9c\89æ\9b´å¤\9aè®\8aæ\9b´çµ\84å\90\88。
- no_more_area: 這一地區沒有更多變更組合。
- no_more_user: 此用戶沒有更多變更組合。
+ title: 變更集
+ title_user: '%{user} 的變更集'
+ title_friend: 您好友的變更集
+ title_nearby: é\99\84è¿\91使ç\94¨è\80\85ç\9a\84è®\8aæ\9b´é\9b\86
+ empty: 查無變更集。
+ empty_area: 此地區沒有變更集。
+ empty_user: 此使用者沒有變更集。
+ no_more: æ\9f¥ç\84¡æ\9b´å¤\9aè®\8aæ\9b´é\9b\86。
+ no_more_area: 此地區沒有更多變更集。
+ no_more_user: 此使用者沒有更多變更集。
load_more: 載入更多
timeout:
- sorry: 對不起,索取您所要求的變更組合清單,花費時間過長。
+ sorry: 抱歉,您請求的變更集清單取得時間過長。
rss:
- title_all: OpenStreetMap變更組合討論
- title_particular: OpenStreetMap變更組合%{changeset_id}討論
- comment: '%{author}對變更組合#%{changeset_id}的新評論'
- commented_at_html: 於%{when}前更新
- commented_at_by_html: 於%{when}前由%{user}更新
+ title_all: OpenStreetMap 變更集討論
+ title_particular: OpenStreetMap 變更集 %{changeset_id} 討論
+ comment: '%{author} 對變更集 #%{changeset_id} 發表新評論'
+ commented_at_html: 已於 %{when} 前更新
+ commented_at_by_html: 已於 %{when} 前由 %{user} 更新
full: 完整討論
diary_entry:
new:
title: 新日記項目
list:
title: 日記
- title_friends: 朋友的日記
+ title_friends: 好友的日記
title_nearby: 附近的使用者的日記
- user_title: '%{user}的日記'
+ user_title: '%{user} 的日記'
in_language_title: 日記 (語言為 %{language})
new: 新增日記項目
new_title: 在您的日記中撰寫新的項目
save_button: 儲存
marker_text: 日記項目位置
view:
- title: '%{user}的日記 | %{title}'
- user_title: '%{user}的日記'
+ title: '%{user} 的日記 | %{title}'
+ user_title: '%{user} 的日記'
leave_a_comment: 留下評論
- login_to_leave_a_comment: '%{login_link}以留下評論'
+ login_to_leave_a_comment: '%{login_link} 以留下評論'
login: 登入
save_button: 儲存
no_such_entry:
title: 沒有這個日記項目
- heading: 沒有項目的id為:%{id}
- body: 抱歉,沒有日記項目或評論的id是%{id}。請檢查您的拼字,或者可能是您按到錯誤的連結。
+ heading: 沒有項目的 id 為:%{id}
+ body: 抱歉,沒有日記項目或評論的 id 是 %{id}。請檢查您的拼字,或者可能是您按到錯誤的連結。
diary_entry:
- posted_by: 於%{created}由%{link_user}以%{language_link}張貼
+ posted_by: 於 %{created} 由 %{link_user} 以 %{language_link} 發表
comment_link: 對這個項目的評論
reply_link: 回覆這個項目
comment_count:
- one: 1項評論
+ one: 1 項評論
zero: 沒有評論
- other: '%{count}項評論'
+ other: '%{count} 項評論'
edit_link: 編輯此項目
hide_link: 隱藏此項目
confirm: 確認
diary_comment:
- comment_from: 由%{link_user}於%{comment_created_at}發表的評論
+ comment_from: 由 %{link_user} 於 %{comment_created_at} 發表的評論
hide_link: 隱藏此評論
confirm: 確認
location:
edit: 編輯
feed:
user:
- title: '%{user}的OpenStreetMap日記項目'
- description: '%{user}最近的OpenStreetMap日記項目'
+ title: '%{user} 的 OpenStreetMap 日記項目'
+ description: '%{user} 最近的 OpenStreetMap 日記項目'
language:
- title: OpenStreetMap日記項目 (語言為 %{language_name})
- description: OpenStreetMap使用者最近的日記項目 (語言為 %{language_name})
+ title: OpenStreetMap 日記項目 (語言為 %{language_name})
+ description: OpenStreetMap 使用者最近的日記項目 (語言為 %{language_name})
all:
- title: OpenStreetMap日記項目
- description: OpenStreetMap使用者最近的日記項目
+ title: OpenStreetMap 日記項目
+ description: OpenStreetMap 使用者最近的日記項目
comments:
- has_commented_on: '%{display_name}在以下的日記項目發表了評論'
- post: 張貼
+ has_commented_on: '%{display_name} 在以下的日記項目發表了評論'
+ post: 發表
when: 於
comment: 評論
- ago: '%{ago}前'
+ ago: '%{ago} 前'
newer_comments: 較新的評論
older_comments: 較舊的評論
export:
format_to_export: 要匯出的格式
osm_xml_data: OpenStreetMap XML 資料
map_image: 地圖影像 (顯示標準圖層)
- embeddable_html: 內嵌式HTML
+ embeddable_html: 內嵌式 HTML
licence: 授權
- export_details: OpenStreetMap 資料是以<a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
- Data Commons 開放資料庫授權條款</a>(ODbL)授權。
+ export_details: OpenStreetMap 的資料採用 <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open
+ Data Commons 開放資料庫授權條款</a> (ODbL) 授權。
too_large:
- advice: 如果上述工具匯出失敗,請考慮使用下列的來源:
+ advice: 若以上匯出失敗,請考慮使用下列來源:
body: 這個區域太大,無法匯出 OpenStreetMap XML 資料。請放大或選擇一個較小的區域,或使用下列大量資料下載源:
planet:
- title: 地球OSM
- description: 定期更新的完整OpenStreetMap資料庫副本
+ title: 地球 OSM
+ description: 定期更新的完整 OpenStreetMap 資料庫副本
overpass:
title: Overpass API
- description: 從OpenStreetMap資料庫的鏡像,下載此區域
+ description: 從 OpenStreetMap 資料庫的鏡像,下載此區域
geofabrik:
- title: Geofabrik下載
+ title: Geofabrik 下載
description: 定期更新的洲、國家及特定城市之摘錄資料
metro:
title: 都會區的摘錄資料
search_osm_nominatim:
prefix:
aerialway:
+ cable_car: 纜車
chair_lift: 登山吊椅
drag_lift: 上山牽引梯
+ gondola: 空中纜車
station: 航空站
aeroway:
aerodrome: 機場
helipad: 直升機停機坪
runway: 跑道
taxiway: 滑行道
- terminal: 終端
+ terminal: 航廈
amenity:
+ animal_shelter: 動物收容所
arts_centre: 藝術中心
atm: ATM
bank: 銀行
bicycle_parking: 單車停車
bicycle_rental: 自行車租賃
biergarten: 啤酒花園
+ boat_rental: 租船
brothel: 妓院
bureau_de_change: 找換店
bus_station: 客運站
car_wash: 洗車
casino: 賭場
charging_station: 充電站
+ childcare: 安親托兒
cinema: 電影院
clinic: 診所
+ clock: 時鐘
college: 學院
- community_centre: 社區中心
+ community_centre: 社群中心
courthouse: 法院
crematorium: 火葬場
dentist: 牙醫
food_court: 美食廣場
fountain: 噴泉
fuel: 油店
+ gambling: 賭場
grave_yard: 墓地
gym: 健身中心 / 健身房
health_centre: 健康中心
library: 圖書館
market: 市場
marketplace: 市場
+ monastery: 修道院
+ motorcycle_parking: 機車停車場
nightclub: 夜總會
nursery: 托兒所
nursing_home: 護理院
office: 辦公室
parking: 停車場
+ parking_entrance: 停車場入口
pharmacy: 藥房
place_of_worship: 宗教場所
police: 警察
- post_box: 郵箱
+ post_box: 郵件
post_office: 郵局
preschool: 學前教育
prison: 監獄
veterinary: 獸醫
village_hall: 村公所
waste_basket: 垃圾桶
+ waste_disposal: 廢棄物處理
youth_centre: 青少年中心
boundary:
administrative: 行政區邊界
"yes": 橋
building:
"yes": 建築物
+ craft:
+ brewery: 釀酒廠
+ carpenter: 木匠
+ electrician: 電工
+ gardener: 園丁
+ painter: 畫家
+ photographer: 攝影師
+ plumber: 管道工
+ shoemaker: 鞋匠
+ tailor: 裁縫
+ "yes": 工藝品店
emergency:
+ ambulance_station: 急救站
+ defibrillator: 除顫器
+ landing_site: 緊急降落點
phone: 緊急電話
highway:
+ abandoned: 廢棄公路
bridleway: 馬道
bus_guideway: 軌道巴士線
bus_stop: 巴士站
construction: 建造中道路
cycleway: 單車徑
+ elevator: 電梯
emergency_access_point: 緊急求助點
footway: 行人路
ford: 淺灘
platform: 車站月台
primary: 主要道路
primary_link: 主要道路
- proposed: 擬議道路
+ proposed: 計畫道路
raceway: 賽道
residential: 住宅區道路
rest_area: 休息區
tertiary: 三級道路
tertiary_link: 三級道路連接路
track: 軌道
+ traffic_signals: 交通號誌
trail: 小徑
trunk: 主要幹道
trunk_link: 主要幹道連接路
unclassified: 無分級道路
unsurfaced: 未平整道路
+ "yes": 道路
historic:
archaeological_site: 考古遺址
battlefield: 戰場
boundary_stone: 界碑
- building: 建築物
+ building: 歷史建物
+ bunker: 掩體
castle: 城堡
church: 教堂
+ city_gate: 城門
citywalls: 城牆
fort: 堡疊
+ heritage: 遺產
house: 房屋
icon: 圖示
manor: 莊園
memorial: 紀念館
mine: 礦場
monument: 古蹟
+ roman_road: 羅馬道路
ruins: 廢墟
+ stone: 石頭
tomb: 墳墓
tower: 塔
wayside_cross: 路邊十字架
wayside_shrine: 路邊神龕
wreck: 殘骸
+ junction:
+ "yes": 路口
landuse:
allotments: 小園地
basin: 盆地
brownfield: 棕地
- cemetery: å¢³å ´
+ cemetery: å¢\93å\9c\92
commercial: 商業區
conservation: 保育區
construction: 建設中區域
road: 道路用地
village_green: 鄉村草地
vineyard: 葡萄園
+ "yes": 土地利用
leisure:
beach_resort: 海灘度假村
bird_hide: 鳥類觀察站
+ club: 俱樂部
common: 公共用地
+ dog_park: 狗狗公園
fishing: 垂釣區
+ fitness_centre: 健身房
fitness_station: 健身站
garden: 花園
golf_course: 高爾夫球道
+ horse_riding: 騎馬
ice_rink: 溜冰場
marina: 小船塢
miniature_golf: 小型高爾夫球場
pitch: 運動場地
playground: 遊樂場
recreation_ground: 遊樂場
+ resort: 度假村
sauna: 桑拿
slipway: 船臺
sports_centre: 體育中心
swimming_pool: 游泳池
track: 跑道
water_park: 水上公園
+ "yes": 休閒
+ man_made:
+ lighthouse: 燈塔
+ pipeline: 管線
+ tower: 塔
+ works: 工廠
+ "yes": 人工設施
military:
airfield: 軍用機場
barracks: 軍營
forest: 森林
geyser: 間歇泉
glacier: 冰川
+ grassland: 草地
heath: 石南樹叢
hill: 小山
island: 島
reef: 礁
ridge: 山脊
rock: 岩石
+ saddle: 鞍部
+ sand: 沙地
scree: 岩屑堆
scrub: 灌木
spring: 泉
wood: 樹林
office:
accountant: 會計師事務所
+ administrative: 管理局
architect: 建築師樓
company: 公司
employment_agency: 就業中介
travel_agent: 旅行社
"yes": 辦公室
place:
+ allotments: 小園地
+ block: 區塊
airport: 機場
city: 城市
country: 國家
town: 鄉鎮
unincorporated_area: 非建制地區
village: 村落
+ "yes": 地點
railway:
- abandoned: 鐵路線跡
+ abandoned: 已拆除鐵路
construction: 建造中鐵路
disused: 廢棄鐵路
disused_station: 廢棄火車站
spur: 鐵路支線
station: 鐵路站
stop: 鐵路停車處
- subway: 地鐵站
+ subway: 地鐵
subway_entrance: 地鐵出入口
switch: 道岔
tram: 電車軌道
tram_stop: 電車站
shop:
- alcohol: 無許可證
+ alcohol: 無授權條款
antiques: 古玩店
art: 藝術品店
bakery: 麵包店
toys: 玩具店
travel_agency: 旅行社
video: 音像店
- wine: 無許可證
+ wine: 無授權條款
"yes": 商店
tourism:
alpine_hut: 高山小屋
+ apartment: 公寓
artwork: 美工
attraction: 景點
bed_and_breakfast: 家庭旅館
camp_site: 營地
caravan_site: 房車宿營地
chalet: 小屋
+ gallery: 藝廏
guest_house: 賓館
hostel: 旅舍
hotel: 酒店
wadi: 乾河
waterfall: 瀑布
weir: 堰
+ "yes": 水道
admin_levels:
level2: 國界
level4: 省界
results:
no_results: 找不到任何結果
more_results: 更多結果
- distance:
- one: 大約1公里
- zero: 1公里以內
- other: 大約%{count}公里
- direction:
- south_west: 西南方
- south: 南方
- south_east: 東南方
- east: 東方
- north_east: 東北方
- north: 北方
- north_west: 西北方
- west: 西方
layouts:
logo:
alt_text: OpenStreetMap 標誌
intro_header: 歡迎來到 OpenStreetMap!
intro_text: OpenStreetMap 是一幅世界地圖,由像您這樣的人們所建立,在開放授權下可以自由使用。
intro_2_create_account: 建立使用者帳號
- partners_html: 主機由%{ucl}、%{ic}、%{bytemark},和其他%{partners}所支援。
+ partners_html: 主機由 %{ucl}、%{ic}、%{bytemark},和其他 %{partners} 所支援。
partners_ucl: 倫敦大學學院 VR 中心
partners_ic: 倫敦帝國學院
partners_bytemark: Bytemark 主機代管
partners_partners: 合作夥伴
osm_offline: OpenStreetMap 資料庫目前正在離線,直到必要的資料庫維護工作完成為止。
osm_read_only: OpenStreetMap 資料庫目前處於唯讀模式,直到必要的資料庫維護工作完成為止。
- donate: 以%{link}給硬體升級基金來支援 OpenStreetMap。
- help: 求助
+ donate: 以 %{link} 給硬體升級基金來支援 OpenStreetMap。
+ help: 說明
about: 關於
copyright: 版權
community: 社群
foundation: 基金會
foundation_title: OpenStreetMap 基金會
make_a_donation:
- title: 以æ\8d\90è´\88é\87\91é\8c¢ä¾\86æ\94¯æ\8c\81 OpenStreetMap
+ title: 以æ\8d\90è´\88é\87\91é\8c¢ä¾\86æ\94¯æ\8f´ OpenStreetMap
text: 進行捐款
- learn_more: 了解更多
+ learn_more: 瞭解更多
more: 更多
license_page:
foreign:
title: 關於這個翻譯
- text: 這個翻譯頁面和%{english_original_link}若有衝突,會以英文頁面為準
+ text: 這個翻譯頁面和 %{english_original_link} 若有衝突,會以英文頁面為準
english_link: 英文原文
native:
title: 關於此頁
- text: 您正在檢閱英文版本的版權頁。你可以返回這個網頁的%{native_link},您亦可以停止閱讀版權並%{mapping_link}。
+ text: 您正在檢閱英文版本的版權頁。你可以返回這個網頁的 %{native_link},您亦可以停止閱讀版權並 %{mapping_link}。
native_link: 台灣正體中文版
mapping_link: 開始製圖
legal_babble:
title_html: 版權與授權條款
- intro_1_html: OpenStreetMap為<i>開放資料</i>,以<a href="http://opendatacommons.org/licenses/odbl/">Open
- Data Commons 開放資料庫授權條款</a>(ODbL)授權。
+ intro_1_html: OpenStreetMap 為<i>開放資料</i>,以<a href="http://opendatacommons.org/licenses/odbl/">Open
+ Data Commons 開放資料庫授權條款</a> (ODbL) 授權。
intro_2_html: |-
- 您可以自由地複製、散布、傳輸及修改我們的資料,前提是您須標明作者為OpenStreetMap及其貢獻者。若您在我們的資料上作修改或據之衍生其他資料
+ 您可以自由地複製、散布、傳輸及修改我們的資料,前提是您須標明作者為 OpenStreetMap 及其貢獻者。若您在我們的資料上作修改或據之衍生其他資料
,則只可依相同授權條款散佈有關成果。授權的<a href="http://opendatacommons.org/licenses/odbl/1.0/">法律原文</a>詳述您的權責。
- intro_3_html: 我們地圖影像塊的製圖法以及我們的文件,以<a href="http://creativecommons.org/licenses/by-sa/2.0/">共享創意-署名-相同方式共享2.0</a>(CC
- BY-SA)條款授權。
- credit_title_html: 如何標明作者是OpenStreetMap
- credit_1_html: 我們要求您以“© OpenStreetMap貢獻者”標明作者。
- credit_2_html: 您亦須清晰註明,有關數據可透過開放資料庫授權條款取得。若使用我們的影像塊,則須註明其製圖法是按CC-BY-SA授權。您可以透過連結至<a
- href="http://www.openstreetmap.org/copyright">此版權頁</a>以作註明。您亦可以指明並直接連結至授權文本(但若您要以數據形式發布OSM,這是必要條件)。在無法作出連結的媒體(如印刷品),我們建議你引導你的讀者至
- openstreetmap.org(如註明OpenStreetMap的完整網址)、opendatacommons.org,及(如相關的話)creativecommons.org。
+ intro_3_html: 我們地圖影像塊的製圖法以及我們的文件,以<a href="http://creativecommons.org/licenses/by-sa/2.0/">共享創意-署名-相同方式共享
+ 2.0</a>(CC BY-SA) 條款授權。
+ credit_title_html: 如何標明作者是 OpenStreetMap
+ credit_1_html: 我們要求您以“© OpenStreetMap 貢獻者”標明作者。
+ credit_2_html: 您亦須清晰註明,有關資料可透過開放資料庫授權條款取得。若使用我們的影像塊,則須註明其製圖法是按 CC-BY-SA 授權。您可以透過連結至<a
+ href="http://www.openstreetmap.org/copyright">此版權頁</a>以作註明。您亦可以指明並直接連結至授權內容
+ (但若您要以資料形式發布 OSM,這是必要條件) 。在無法作出連結的媒體 (如印刷品) ,我們建議你引導你的讀者至 openstreetmap.org
+ (如註明 OpenStreetMap 的完整網址) 、opendatacommons.org,及 (如相關的話) creativecommons.org。
credit_3_html: |-
對於可瀏覽的電子地圖,標明出處的文字應放在地圖的一角。
例如:
attribution_example:
- alt: 如何在網頁上署名OpenStreetMap的例子
+ alt: 如何在網頁上署名 OpenStreetMap 的例子
title: 署名的例子
- more_title_html: 了解更多
+ more_title_html: 尋找更多
more_1_html: |-
在<a
- href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">常見法律問題</a>中,可閱讀更多關於使用我們的數據,以及如何標明我們是作者的資料。
- more_2_html: 雖然 OpenStreetMap 是開放資料,但我們無法為第三方開發人員提供免費的地圖 API。詳見我們的<a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API使用政策</a>、<a
- href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">地圖影像塊使用政策</a>及<a
- href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim服務使用政策</a>。
+ href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">常見法律問題</a>中,可閱讀更多關於使用我們的資料,以及如何標明我們是作者的資料。
+ more_2_html: 雖然 OpenStreetMap 是開放資料,但我們無法為第三方開發人員提供免費的地圖 API。詳見我們的<a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API
+ 使用政策</a>、<a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">地圖影像塊使用政策</a>及<a
+ href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim
+ 服務使用政策</a>。
contributors_title_html: 我們的貢獻者
contributors_intro_html: 我們的貢獻者為成千上萬的人。我們也收納了從國家測繪機構及其他來源等取得的開放版權資料,其中包括:
contributors_at_html: <strong>奧地利</strong>:包含來自 <a href="http://data.wien.gv.at/">Stadt
- Wien</a>(<a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC
- BY</a>授權)、<a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land
- Vorarlberg</a>及 Land Tirol(修訂的<a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY
- AT</a>授權)的資料。
+ Wien</a> (<a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC
+ BY</a>授權) 、<a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land
+ Vorarlberg</a>及 Land Tirol (修訂的<a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY
+ AT</a>授權) 的資料。
contributors_ca_html: |-
- <strong>加拿大</strong>:包含來自GeoBase®,GeoGratis(© Department of Natural
- Resources Canada),CanVec(© Department of Natural
- Resources Canada)和 StatCan(Geography Division,
- Statistics Canada)的資料。
+ <strong>加拿大</strong>:包含來自 GeoBase®,GeoGratis (© Department of Natural
+ Resources Canada) ,CanVec (© Department of Natural
+ Resources Canada) 和 StatCan (Geography Division,
+ Statistics Canada) 的資料。
contributors_fi_html: |-
<strong>芬蘭</strong>: 包含來自
National Land Survey of Finland's Topographic Database
<a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI License</a>授權。
contributors_fr_html: |-
<strong>法國</strong>: 包含來自
- Direction Générale des Impôts的資料。
+ Direction Générale des Impôts 的資料。
contributors_nl_html: |-
<strong>荷蘭</strong>: 包含來自© AND data, 2007
- (<a href="http://www.and.com">www.and.com</a>)的資料。
+ (<a href="http://www.and.com">www.and.com</a>) 的資料。
contributors_nz_html: |-
<strong>紐西蘭</strong>: 包含來自
- Land Information New Zealand(Crown Copyright reserved)的資料。
+ Land Information New Zealand (Crown Copyright reserved) 的資料。
contributors_za_html: |-
<strong>南非</strong>: 包含來自
<a href="http://www.ngi.gov.za/">Chief Directorate:
- National Geo-Spatial Information</a>(State copyright reserved)的資料。
+ National Geo-Spatial Information</a> (State copyright reserved) 的資料。
contributors_gb_html: |-
- <strong>英國</strong>: 包含來自Ordnance
- Survey data(© Crown copyright and database right
- 2010-12)的資料。
+ <strong>英國</strong>: 包含來自 Ordnance
+ Survey data (© Crown copyright and database right
+ 2010-12) 的資料。
contributors_footer_1_html: |-
若需要進一步詳情,以及其他曾用以協助改進
OpenStreetMap 的資料來源,請參閱 OpenStreetMap Wiki 上的 <a
href="http://wiki.openstreetmap.org/wiki/Contributors">貢獻者
頁面</a>。
- contributors_footer_2_html: OpenStreetMap 收錄一項資料,並不意味原本的資料提供者認可OpenStreetMap、提供任何保證或承擔任何法律責任。
+ contributors_footer_2_html: OpenStreetMap 收錄一項資料,並不意味原本的資料提供者認可 OpenStreetMap、提供任何保證或承擔任何法律責任。
infringement_title_html: 侵犯版權
- infringement_1_html: OSM的貢獻者會被提醒,絕不要在沒有版權持有人的明確淮許下,添加來自任何有版權的來源的資料(如Google地圖或印刷地圖)。
- infringement_2_html: 如果你認為有版權的材料被不恰當地添加到 OpenStreetMap 資料庫或此網站,請參見我們的<a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">撤除程序</a>,或直接在我們的<a
+ infringement_1_html: OSM 的貢獻者會被提醒,絕不要在沒有版權所有人的明確淮許下,加入來自任何有版權的來源的資料 (如 Google
+ 地圖或印刷地圖)。
+ infringement_2_html: 如果你認為有版權的材料被不恰當地加入到 OpenStreetMap 資料庫或此網站,請請參考我們的<a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">撤除程序</a>,或直接在我們的<a
href="http://dmca.openstreetmap.org/">網上申報頁面</a>提出。
+ trademarks_title_html: <span id="trademarks"></span>商標
welcome_page:
title: 歡迎!
- introduction_html: 歡迎來到 OpenStreetMap,自由和可編輯的世界地圖。您目前已經登錄,可以開始繪製地圖。這裡有一份您須知道最重要事項的快速指南。
+ introduction_html: 歡迎來到 OpenStreetMap,自由和可編輯的世界地圖。您目前已經登入,可以開始繪製地圖。這裡有一份您須知道最重要事項的快速指南。
whats_on_the_map:
title: 地圖上有什麼
on_html: |-
off_html: 然而它<em>不包含</em>一些例如評分的主觀意見資料、歷史或假設性的地理特徵,以及有版權的來源資料。除非你獲特別許可,不要抄襲網上或印刷的地圖。
basic_terms:
title: 繪製地圖的基本術語
- paragraph_1_html: OpenStreetMap有自己的術語。以下是一些常用的關鍵詞。
+ paragraph_1_html: OpenStreetMap 有自己的術語。以下是一些常用的關鍵詞。
editor_html: <strong>編輯器</strong>是你可以用於編輯地圖的程序或網站。
node_html: <strong>節點</strong>是地圖上的一個點,例如一間餐廳或一棵樹。
way_html: <strong>路徑</strong>是一條線或一個區域,例如一條道路、一條溪、一個湖或一棟建築物。
tag_html: <strong>標籤</strong>是關於節點或路徑的簡要資料,例如餐廳的名字或道路的速度限制。
+ rules:
+ title: 規則!
questions:
title: 有任何問題嗎?
- paragraph_1_html: OpenStreetMap有一些資源,可用於學習本計劃、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。 <a
- href='%{help_url}'>按此獲取幫助</a>。
+ paragraph_1_html: OpenStreetMap 有一些資源,可用於學習本專案、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。 <a
+ href='%{help_url}'>按此取得說明</a>。
start_mapping: 開始製圖
add_a_note:
- title: 沒有時間編輯嗎?可加入筆記!
- paragraph_1_html: 如果你只想做一些微小改動,而沒有時間登錄來學習如何編輯,那麼加入一項筆記還是非常容易的。
- paragraph_2_html: 只要到<a href='%{map_url}'>地圖</a>並點擊筆記圖示: <span class='icon note'></span>。這將在地圖上添加一個標記,你可以拖動它,並添加你的筆記,然後點擊保存,其他製圖者會作出查證。
+ title: 沒有時間編輯嗎?可加入註記!
+ paragraph_1_html: 如果你只想做一些微小改動,而沒有時間登入來學習如何編輯,那麼加入一項註記還是非常容易的。
+ paragraph_2_html: 只要到<a href='%{map_url}'>地圖</a>並點選註記圖示: <span class='icon note'></span>。這將在地圖上加入一個標記,你可以拖動它,並新增你的註記,然後點選儲存,其他製圖者會作出查證。
fixthemap:
title: 回報問題/改進地圖
how_to_help:
title: 如何協助
join_the_community:
title: 加入社群
- explanation_html: 如果你發現我們的地圖資料有問題,例如缺少某條道路或者你的地址,最好的方法就是加入OpenStreetMap社群,然後自己添加或者改進資料。
+ explanation_html: 如果你發現我們的地圖資料有問題,例如缺少某條道路或者你的地址,最好的方法就是加入 OpenStreetMap 社群,然後自己加入或者改進資料。
add_a_note:
instructions_html: |-
- 只須點擊 <a class='icon note'></a>或地圖上的同一圖示,
- 這將在地圖上添加一個標記,你可以拖動它,並添加你的筆記,然後點擊保存,其他製圖者會作出查證。
+ 只須點選 <a class='icon note'></a>或地圖上的同一圖示,
+ 這將在地圖上加入一個標記,你可以拖動它,並新增你的註記,然後點選儲存,其他製圖者會作出查證。
other_concerns:
title: 其他問題
- explanation_html: 如果您對我們的資料如何被應用或有關的內容有任何問題,請參閱我們的<a href='/copyright'>版權頁</a>了解更多法律訊息,或聯繫適當的<a
- href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF working group</a>。
+ explanation_html: 如果您對我們的資料如何被應用或有關的內容有任何問題,請參閱我們的<a href='/copyright'>版權頁</a>瞭解更多法律資訊,或聯絡適當的<a
+ href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF 工作小組</a>。
help_page:
title: 取得協助
- introduction: OpenStreetMap有一些資源,可用於學習本計劃、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。
+ introduction: OpenStreetMap 有一些資源,可用於學習本專案、提出和回答問題,以及討論和紀錄與製作地圖相關的話題。
welcome:
url: /welcome
- title: 歡迎來到 OSM
- description: 這個快速指南涵蓋了 OpenStreetMap 基礎知識。
+ title: 歡迎來到開放街圖
+ description: 這個快速指南涵蓋了開放街圖的基礎知識。
+ beginners_guide:
+ url: http://wiki.openstreetmap.org/wiki/Zh-hant:Beginners%27_guide
+ title: 新手指南
+ description: 社群維護的新手指南
help:
url: https://help.openstreetmap.org/
title: help.openstreetmap.org
- description: 在OSM的問答網站提出問題或搜尋答案。
+ description: 在 OSM 的問答網站提出問題或搜尋答案。
+ mailing_lists:
+ title: 郵件論壇
+ forums:
+ title: 論壇
+ irc:
+ title: IRC
+ description: 使用各種不同語言在各種主題聊天互動。
+ switch2osm:
+ title: switch2osm
+ description: 協助公司與組織改用 OpenStreetMap 為基礎的地圖與相關服務。
wiki:
url: http://wiki.openstreetmap.org/
title: wiki.openstreetmap.org
- description: 瀏覽wiki,取得詳盡的OSM文件。
+ description: 瀏覽 wiki,取得詳盡的 OSM 文件。
about_page:
next: 下一頁
copyright_html: <span>©</span>OpenStreetMap<br>貢獻者
- used_by: '%{name}為數以百計的網站、行動 app 與硬體設備,提供地圖資料'
- lede_text: OpenStreetMap是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。
- local_knowledge_title: 當地的知識
+ used_by: '%{name} 為數以百計的網站、行動 app 與硬體裝置,提供地圖資料'
+ lede_text: OpenStreetMap 是由製圖者社群所建立,他們提供及不斷更新包括有關世界各地的道路、路徑、咖啡館、火車站等等的資料。
+ local_knowledge_title: 地方知識
local_knowledge_html: |-
- OpenStreetMap強調當地的知識。貢獻者使用
- 航照圖、GPS裝置與低科技的實地考察製圖,來驗證OSM
- æ\98¯æ£ç¢ºè\80\8c最新的。
+ OpenStreetMap 強調地方知識。貢獻者們使用
+ 航照圖、GPS 裝置與低技術的實地考察製圖,來檢驗 OSM
+ æ\98¯æº\96確è\80\8cä¸\94最新的。
community_driven_title: 社群推動
community_driven_html: |-
- OpenStreetMap的社群多元化、懷有熱情,而且日益壯大。我們的貢獻者包括地圖製作愛好者,地理信息系統的專業人員,提供OSM伺服器的工程師,為受災害影響區域製圖的人道主義志願人士,以及其他各界人士。
- 想進一步了解這個社群,請參閱<a href='%{diary_path}'>用戶日記</a>,
- <a href='http://blogs.openstreetmap.org/'>社群博客</a>,以及<a href='http://www.osmfoundation.org/'>OSM基金會</a> 網站。
+ OpenStreetMap 的社群多元化、懷有熱情,而且日益壯大。我們的貢獻者包括地圖製作愛好者,地理訊息系統的專業人員,提供 OSM 伺服器的工程師,為受災害影響區域製圖的人道主義志願人士,以及其他各界人士。
+ 想進一步了解這個社群,請參閱<a href='%{diary_path}'>使用者日記</a>,
+ <a href='http://blogs.openstreetmap.org/'>社群部落格</a>,以及<a href='http://www.osmfoundation.org/'>OSM 基金會</a> 網站。
open_data_title: 開放資料
- open_data_html: |-
- OpenStreetMap是<i>開放資料</i>: 您可以自由地使用作任何用途,前提是您須標明作者為OpenStreetMap及其貢獻者。若您在我們的資料上作修改或以之透過某些方式衍生其他資料
- ,則只可依相同授權條款散佈有關成果。詳情請參閱<a href='%{copyright_path}'>版權及授權頁面</a>。
+ open_data_html: OpenStreetMap 是<i>開放資料</i>的:您可以自由地使用作任何用途,前提是您須標明作者為 OpenStreetMap
+ 及其貢獻者。若您在我們的資料上作修改或以之透過某些方式衍生其他資料,則只可依相同授權條款散佈有關成果。詳情請參閱<a href='%{copyright_path}'>版權及授權條款頁面</a>。
+ legal_title: 法律資訊
+ legal_html: "本站以及許多相關的服務正式由<a href='http://osmfoundation.org/'>OpenStreetMap 基金會</a>
+ (OSMF) 代表社群所營運。\n<br> \n若您有任何授權、版權或其他法律諮詢與問題,請<a href='http://osmfoundation.org/Contact'>聯絡
+ OSMF</a>。"
partners_title: 合作夥伴
notifier:
diary_comment_notification:
- subject: '[OpenStreetMap] %{user}在您的日記項目留下評論'
- hi: '%{to_user}您好,'
- header: '%{from_user}在您最近主旨為%{subject}的 OpenStreetMap 日記項目留下評論:'
+ subject: '[OpenStreetMap] %{user} 已評論於您的日記項目'
+ hi: '%{to_user} 您好,'
+ header: '%{from_user} 在您最近主旨為 %{subject} 的 OpenStreetMap 日記項目留下評論:'
footer: 您也可以在 %{readurl} 閱讀評論,並且在 %{commenturl} 留下評論,或在 %{replyurl} 回覆
message_notification:
- hi: '%{to_user}您好,'
- header: '%{from_user}透過 OpenStreetMap 寄給您主旨為%{subject}的訊息:'
+ hi: '%{to_user} 您好,'
+ header: '%{from_user} 透過 OpenStreetMap 寄給您主旨為 %{subject} 的訊息:'
footer_html: 您也可以在 %{readurl} 閱讀訊息,並且在 %{replyurl} 回覆
friend_notification:
- subject: '[OpenStreetMap] %{user}將您加入為朋友'
- had_added_you: '%{user}已在 OpenStreetMap 將您加入為朋友。'
- see_their_profile: 您可以在 %{userurl} 查看他的資料。
- befriend_them: 您可以在 %{befriendurl} 把他加入為朋友。
+ subject: '[OpenStreetMap] %{user} 將您加入為好友'
+ had_added_you: '%{user} 已在 OpenStreetMap 將您加入為好友。'
+ see_their_profile: 您可以在 %{userurl} 查看他的基本資料。
+ befriend_them: 您可以在 %{befriendurl} 把他加入為好友。
gpx_notification:
greeting: 您好,
your_gpx_file: 您的 GPX 檔案
成功載入可能為 %{possible_points} 點中的
%{trace_points} 點。
signup_confirm:
- subject: '[OpenStreetMap] 歡迎加入OpenStreetMap'
+ subject: '[OpenStreetMap] 歡迎加入 OpenStreetMap'
greeting: 您好!
- created: 有人(希望是您)剛在 %{site_url} 建立了帳戶。
- confirm: 在我們作出任何動作之前,我們需要確認這是您提出的要求。如果確實是這樣,請按以下連結,以確認你的帳戶:
- welcome: 在確認你的帳戶後,我們將提供一些額外的訊息,幫助你開始使用OpenStreetMap。
+ created: 有人 (希望是您) 剛在 %{site_url} 建立了帳號。
+ confirm: 在我們作出任何動作之前,我們需要確認這是您提出的要求。如果確實是這樣,請按以下連結,以確認你的帳號:
+ welcome: 在確認你的帳號後,我們將提供一些額外的訊息,幫助你開始使用 OpenStreetMap。
email_confirm:
- subject: '[OpenStreetMap] 確認您的電子郵件位址'
+ subject: '[OpenStreetMap] 確認您的電子郵件地址'
email_confirm_plain:
greeting: 您好,
- hopefully_you: 有人(希望是您)希望在 %{server_url} 更改電郵地址至 %{new_address} 。
+ hopefully_you: 有人 (希望是您) 希望在 %{server_url} 更改電子郵件地址至 %{new_address} 。
click_the_link: 如果這是您,請按下列連結確認此變更。
email_confirm_html:
greeting: 您好,
- hopefully_you: 有人 (希望是您) 想將他的電郵地址 %{server_url} 改變為 %{new_address}。
+ hopefully_you: 有人 (希望是您) 想將他的電子郵件地址 %{server_url} 改變為 %{new_address}。
click_the_link: 如果這是您,請按下列連結確認此變更。
lost_password:
subject: '[OpenStreetMap] 密碼重設要求'
lost_password_plain:
greeting: 您好,
- hopefully_you: 有人 (或許是您) 要求將以此電郵位址註冊的 openstreetmap.org 帳戶,重設密碼。
+ hopefully_you: 有人 (或許是您) 要求將以此電子郵件地址註冊的 openstreetmap.org 帳號,重設密碼。
click_the_link: 如果這是您,請按下列連結重設您的密碼。
lost_password_html:
greeting: 您好,
- hopefully_you: 有人 (或許是您) 要求將以此電郵位址註冊的 openstreetmap.org 帳戶,重設密碼。
+ hopefully_you: 有人 (或許是您) 要求將以此電子郵件地址註冊的 openstreetmap.org 帳號,重設密碼。
click_the_link: 如果這是您,請按下列連結重設您的密碼。
note_comment_notification:
anonymous: 匿名使用者
greeting: 您好,
commented:
- subject_own: '[OpenStreetMap] %{commenter}% 在您的筆記留言'
- subject_other: '[OpenStreetMap] %{commenter} 就您感興趣的筆記留言'
- your_note: '%{commenter}在%{place}附近的地圖筆記留言。'
- commented_note: '%{commenter} 在你感興趣的地圖筆記留言。該筆記在 %{place} 附近。'
+ subject_own: '[OpenStreetMap] %{commenter}% 在您的註記評論'
+ subject_other: '[OpenStreetMap] %{commenter} 就您感興趣的註記評論'
+ your_note: '%{commenter} 在 %{place} 附近的地圖註記評論。'
+ commented_note: '%{commenter} 在你感興趣的地圖註記評論。該註記在 %{place} 附近。'
closed:
- subject_own: '[OpenStreetMap] %{commenter} 解決你其中一筆筆記%{commenter}'
- subject_other: '[OpenStreetMap]%{commenter}已經解決一筆你興趣的筆記'
- your_note: '%{commenter} 已經解決你其中一筆接近 %{place} 的筆記。'
- commented_note: '%{commenter} 已經解決一筆你留言過的地圖筆記。這筆在 %{place} 附近。'
+ subject_own: '[OpenStreetMap] %{commenter} 解決你其中一筆註記 %{commenter}'
+ subject_other: '[OpenStreetMap]%{commenter} 已經解決一筆你興趣的註記'
+ your_note: '%{commenter} 已經解決你其中一筆接近 %{place} 的註記。'
+ commented_note: '%{commenter} 已經解決一筆你留言過的地圖註記。這筆在 %{place} 附近。'
reopened:
- subject_own: '[OpenStreetMap] %{commenter} 再次開啟你其中一筆筆記。'
- subject_other: '[OpenStreetMap] %{commenter} 再次開啟你感興趣的筆記。'
- your_note: '%{commenter} 已經再次開啟你其中一筆接近 %{place} 的地圖筆記。'
- commented_note: '%{commenter}重新啟用了一個您曾留言的地圖註記。該註記位於%{place}附近。'
- details: 關於註記的更多詳細訊息可在%{url}找到。
+ subject_own: '[OpenStreetMap] %{commenter} 再次開啟你其中一筆註記。'
+ subject_other: '[OpenStreetMap] %{commenter} 再次開啟你感興趣的註記。'
+ your_note: '%{commenter} 已經再次開啟你其中一筆接近 %{place} 的地圖註記。'
+ commented_note: '%{commenter} 重新開啟了一個您曾評論的地圖註記。該註記位於 %{place} 附近。'
+ details: 關於註記的更多詳細訊息可在 %{url} 找到。
changeset_comment_notification:
greeting: 您好,
commented:
- subject_own: '[OpenStreetMap] %{commenter}% 在您的變更組合留言'
- subject_other: '[OpenStreetMap] %{commenter} 就您感興趣的變更組合留言'
- your_changeset: '%{commenter} å\9c¨æ\82¨æ\96¼ %{time} å\89µå»ºç\9a\84è®\8aæ\9b´çµ\84å\90\88ç\95\99è¨\80'
- commented_changeset: '%{commenter} å\9c¨æ\82¨ç\9b£è¦\96ï¼\8cç\94± %{changeset_author} æ\96¼ %{time} å\89µå»ºç\9a\84è®\8aæ\9b´çµ\84å\90\88ç\95\99è¨\80'
- partial_changeset_with_comment: 評論“%{changeset_comment}”
+ subject_own: '[OpenStreetMap] %{commenter}% 在您的變更集評論'
+ subject_other: '[OpenStreetMap] %{commenter} 就您感興趣的變更集評論'
+ your_changeset: '%{commenter} å\9c¨æ\82¨æ\96¼ %{time} 建ç«\8bç\9a\84è®\8aæ\9b´é\9b\86è©\95è«\96'
+ commented_changeset: '%{commenter} å\9c¨æ\82¨ç\9b£è¦\96ï¼\8cç\94± %{changeset_author} æ\96¼ %{time} 建ç«\8bç\9a\84è®\8aæ\9b´é\9b\86è©\95è«\96'
+ partial_changeset_with_comment: 評論 "%{changeset_comment}"
partial_changeset_without_comment: 沒有評論
- details: 關於變更組合的詳情可在%{url}找到。
+ details: 關於變更集的詳情可在 %{url} 找到。
message:
inbox:
title: 收件匣
my_inbox: 我的收件匣
outbox: 寄件匣
- messages: 您有%{new_messages}及%{old_messages}。
+ messages: 您有 %{new_messages} 及 %{old_messages}。
new_messages:
- one: '%{count}項新訊息'
- other: '%{count}項新訊息'
+ one: '%{count} 項新訊息'
+ other: '%{count} 項新訊息'
old_messages:
- one: '%{count}項舊訊息'
- other: '%{count}項舊訊息'
+ one: '%{count} 項舊訊息'
+ other: '%{count} 項舊訊息'
from: 寄件者
subject: 主旨
date: 日期
- no_messages_yet: 您還沒有訊息。何不跟一些%{people_mapping_nearby_link}接觸看看?
- people_mapping_nearby: 附近製作地圖的用戶
+ no_messages_yet: 您還沒有訊息。何不跟一些 %{people_mapping_nearby_link} 接觸看看?
+ people_mapping_nearby: 在附近製作地圖的人們
message_summary:
unread_button: 標記為未讀
read_button: 標記為已讀
delete_button: 刪除
new:
title: 寄出訊息
- send_message_to: 寄出新訊息給%{name}
+ send_message_to: 寄出新訊息給 %{name}
subject: 主旨
body: 內文
send_button: 寄出
body: 抱歉,並沒有這個 id 的訊息。
outbox:
title: 寄件匣
- my_inbox: 我的%{inbox_link}
+ my_inbox: 我的 %{inbox_link}
inbox: 收件匣
outbox: 寄件匣
messages:
- one: 您有%{count}項已寄訊息
- other: 您有%{count}項已寄訊息
+ one: 您有 %{count} 項已寄訊息
+ other: 您有 %{count} 項已寄訊息
to: 收件者
subject: 主旨
date: 日期
- no_sent_messages: 您還沒有已寄訊息。何不跟一些%{people_mapping_nearby_link}接觸看看?
- people_mapping_nearby: 附近製作地圖的用戶
+ no_sent_messages: 您還沒有已寄訊息。何不跟一些 %{people_mapping_nearby_link} 接觸看看?
+ people_mapping_nearby: 附近製作地圖的使用者
reply:
- wrong_user: 您已經以「%{user}」的身份登入,但是您想要回覆的訊息並非寄給這個使用者。請以正確的使用者身份登入以回覆這個訊息。
+ wrong_user: 您已經以 "%{user}" 的身份登入,但是您想要回覆的訊息並非寄給這個使用者。請以正確的使用者身份登入以回覆這個訊息。
read:
title: 閱讀訊息
from: 寄件者
unread_button: 標記為未讀
back: 返回
to: 收件者
- wrong_user: 您已經以「%{user}」的身份登入,但是您想要閱讀的訊息並非寄給那個使用者。請以正確的使用者身份登入以閱讀它。
+ wrong_user: 您已經以 "%{user}" 的身份登入,但是您想要閱讀的訊息並非寄給那個使用者。請以正確的使用者身份登入以閱讀它。
sent_message_summary:
delete_button: 刪除
mark:
index:
js_1: 您使用不支援 JavaScript 的瀏覽器,或者停用了 JavaScript。
js_2: OpenStreetMap 使用 JavaScript 讓地圖更平順。
- permalink: 固定連結
+ permalink: 靜態連結
shortlink: 簡短連結
- createnote: æ·»å\8a ç\86記
+ createnote: æ\96°å¢\9e註記
license:
- copyright: 版權所有,由OpenStreetMap及貢獻者根據開放的授權協議提供
- remote_failed: 編輯失敗 - 請確定已載入 JOSM 或 Merkaartor 並啟用遠端控制選項
+ copyright: 版權所有,由 OpenStreetMap 及貢獻者根據開放的授權協議提供
+ remote_failed: 編輯失敗 - 請確定已載入 JOSM 或 Merkaartor 並開啟遠端控制選項
edit:
not_public: 您尚未將您的編輯設為公開。
- not_public_description: 在您這麼做之前將無法再編輯地圖。您可以在您的%{user_page}將自己的編輯設定為公開。
+ not_public_description: 在您這麼做之前將無法再編輯地圖。您可以在您的 %{user_page} 將自己的編輯設定為公開。
user_page_link: 使用者頁面
- anon_edits_link_text: 了解為什麼這很重要。
+ anon_edits_link_text: 瞭解為什麼這很重要。
flash_player_required: 您需要 Flash player 才能使用 Potlatch,OpenStreetMap Flash 編輯器。您可以<a
href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">在
Adobe.com 下載 Flash Player</a>。<a href="http://wiki.openstreetmap.org/wiki/Editing">還有其他許多選擇</a>也可以編輯
OpenStreetMap。
- potlatch_unsaved_changes: 您還有未儲存的變更。 (要在 Potlatch 中儲存,您應該取消選擇目前的路徑或節點(如果是在清單模式編輯),或是點選儲存(如果有儲存按鈕)。)
- potlatch2_not_configured: Potlatch 2尚未設定 - 請參閱http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2
- 以獲取更多資訊
- potlatch2_unsaved_changes: 您有未儲存的更改。(要在 Potlatch 2 中儲存,您應按一下儲存。)
+ potlatch_unsaved_changes: 您還有未儲存的變更。 (要在 Potlatch 中儲存,您應該取消選擇目前的路徑或節點 (如果是在清單模式編輯),或是點選儲存
+ (如果有儲存按鈕)。)
+ potlatch2_not_configured: Potlatch 2 尚未設定 - 請參閱 http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2
+ 以取得更多資訊
+ potlatch2_unsaved_changes: 您有未儲存的更改。 (要在 Potlatch 2 中儲存,您應按一下儲存。)
id_not_configured: iD 尚未設定
- no_iframe_support: æ\82¨ç\9a\84ç\80\8f覽å\99¨ä¸\8dæ\94¯æ\8c\81 HTML 嵌入式框架,這是這項功能所必要的。
+ no_iframe_support: æ\82¨ç\9a\84ç\80\8f覽å\99¨ä¸\8dæ\94¯æ\8f´ HTML 嵌入式框架,這是這項功能所必要的。
sidebar:
search_results: 搜尋結果
close: 關閉
search:
search: 搜尋
+ get_directions: 取得方向指引
+ get_directions_title: 尋找兩點之間的路線
+ from: 來自
+ to: 到
where_am_i: 我在哪裡?
where_am_i_title: 使用搜尋引擎描述目前的位置
submit_text: 出發
primary: 主要道路
secondary: 次要道路
unclassified: 未分級道路
- unsurfaced: æ\9cªé\8bªè£\9d道路
+ unsurfaced: æ\9cªé\8bªè¨道路
track: 行車小徑
- byway: 鄉間小路
+ byway: 小路
bridleway: 馬道
cycleway: 自行車道
footway: 步道
rail: 鐵路
- subway: 地下鐵路
+ subway: 地鐵
tram:
- - 輕便鐵路
+ - 輕軌
- 電車
cable:
- 纜車
- - å\90\8aæ¤\85
+ - å\8d\87é\99\8dçº\9cè»\8a
runway:
- 機場跑道
- 飛機滑行道
apron:
- 機場停機坪
- - 機場客運大樓
+ - 航廈
admin: 行政區邊界
forest: 森林
wood: 樹木
- golf: 高爾夫球道
+ golf: 高爾夫球場
park: 公園
resident: 住宅區
- tourist: 旅遊景站
+ tourist: 旅遊景點
common:
- - å\85¬地
+ - å\85±æ\9c\89地
- 草地
retail: 零售區
industrial: 工業區
heathland: 荒地
lake:
- 湖泊
- - 水庫
+ - æ± å¡\98
farm: 農田
- brownfield: 棕地
- cemetery: å¢³å ´
+ brownfield: 廢棄工業區
+ cemetery: å¢\93å\9c°
allotments: 小園地
- pitch: 運動場地
+ pitch: 運動場
centre: 體育中心
reserve: 自然保護區
military: 軍事區
- 學校
- 大學
building: 重要建築
- station: 鐵路站
+ station: 火車站
summit:
- - 頂峰
- - å±±頂
- tunnel: 虛線描邊 = 隧道
- bridge: 黑線描邊 = 橋樑
- private: 私有
- permissive: 獲准許者可使用
- destination: 只限前往目的地
- construction: 建築中路段
+ - 山峰
+ - å³°頂
+ tunnel: 虛線邊框 = 隧道
+ bridge: 黑線邊框 = 橋樑
+ private: 私人進出
+ permissive: 許可進出
+ destination: 目的地進出
+ construction: 道路施工中
richtext_area:
edit: 編輯
preview: 預覽
markdown_help:
- title_html: 以 <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
+ title_html: 使ç\94¨ <a href="http://daringfireball.net/projects/markdown/">Markdown</a>
解析
headings: 標題
heading: 標題
owner: 擁有者:
description: 描述:
tags: 標籤:
- tags_help: 以逗點分隔
+ tags_help: 以逗號分隔
save_button: 儲存變更
visibility: 可見性:
visibility_help: 這是什麼意思?
visibility: 可見性:
visibility_help: 這是什麼意思?
upload_button: 上傳
- help: 求助
+ help: 說明
trace_header:
upload_trace: 上傳軌跡
see_all_traces: 查看所有的軌跡
trace_not_found: 找不到軌跡!
visibility: 可見性:
trace_paging_nav:
- showing_page: 第%{page}頁
+ showing_page: 第 %{page} 頁
older: 較舊軌跡
newer: 較新軌跡
trace:
pending: 等候
count_points: '%{count} 個點'
- ago: '%{time_in_words_ago}之前'
+ ago: '%{time_in_words_ago} 之前'
more: 更多
trace_details: 檢視軌跡詳細資訊
view_map: 檢視地圖
title: OpenStreetMap GPS 軌跡
description:
description_with_count:
- one: 由%{user}上載的 GPX 檔案,含有%{count}點
- other: 由%{user}上載的 GPX 檔案,含有%{count}點
- description_without_count: 由%{user}上載的 GPX 檔案
+ one: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
+ other: 由 %{user} 上傳的 GPX 檔案,含有 %{count} 點
+ description_without_count: 由 %{user} 上傳的 GPX 檔案
application:
require_cookies:
- cookies_needed: 您似乎已停用 cookies - 請在瀏覽器中啟用 cookies,然後繼續。
+ cookies_needed: 您似乎已停用 cookies - 請在瀏覽器中開啟 cookies,然後繼續。
require_moderator:
not_a_moderator: 您需要是管理人員,才可執行該動作。
setup_user_auth:
- blocked: 您已經被封禁使用API。請登入網頁介面以了解更多資訊。
- need_to_see_terms: 我們已暫時中止您使用API的權限,請登入網頁介面查閱貢獻者條款,您不需要同意有關條款,但必須查閱它們。
+ blocked: 您已經被封鎖使用 API。請登入網頁介面以瞭解更多資訊。
+ need_to_see_terms: 我們已暫時中止您使用 API 的權限,請登入網頁介面查閱貢獻者條款,您不需要同意有關條款,但必須查閱它們。
oauth:
oauthorize:
- title: 授權使用您的帳戶
- request_access: 應用程式 %{app_name} 要求使用您的帳戶,%{user}。請確定您要讓此應用程式使用下列功能。您可以依自己喜好,選擇多少項功能。
- allow_to: 允許客戶端應用程式:
+ title: 授權使用您的帳號
+ request_access: 應用程式 %{app_name} 要求使用您的帳號,%{user}。請確定您要讓此應用程式使用下列功能。您可以依自己喜好,選擇多少項功能。
+ allow_to: 允許用戶端應用程式:
allow_read_prefs: 讀取您的使用者偏好設定。
allow_write_prefs: 修改您的使用者偏好設定。
- allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81註解å\92\8cå\8a å\85¥æ\9c\8b友。
+ allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81è©\95è«\96å\92\8cå\8a å\85¥å¥½友。
allow_write_api: 修改地圖。
allow_read_gpx: 讀取您的私人 GPS 軌跡。
allow_write_gpx: 上傳 GPS 軌跡。
- allow_write_notes: 修改筆記。
+ allow_write_notes: 修改註記。
oauthorize_success:
title: 允許授權請求
- allowed: 您已授權應用程式 %{app_name} 使用您的帳戶。
+ allowed: 您已授權應用程式 %{app_name} 使用您的帳號。
verification: 驗證碼是 %{code}。
oauthorize_failure:
title: 授權請求失敗
- denied: 您已拒絕應用程式 %{app_name} 使用您的帳戶。
- invalid: 授權記號並不合法。
+ denied: 您已拒絕應用程式 %{app_name} 使用您的帳號。
+ invalid: 授權密鑰無效。
revoke:
- flash: 您已經註銷 %{application} 的授權記號。
+ flash: 您已經撤銷 %{application} 的授權密鑰。
oauth_clients:
new:
title: 註冊新的應用程式
title: '%{app_name} 的 OAuth 詳細資料'
key: 消費者金鑰:
secret: 消費者密鑰:
- url: è¦\81æ±\82è¨\98è\99\9f URL:
+ url: è«\8bæ±\82å¯\86é\91° URL:
access_url: 存取記號 URL:
authorize_url: 授權 URL:
- support_notice: 我們支援 HMAC-SHA1 (建議) 和RSA-SHA1署名。
+ support_notice: 我們支援 HMAC-SHA1 (建議) 和 RSA-SHA1 署名。
edit: 編輯詳細資料
- delete: 刪除用戶端
+ delete: 刪除客戶端
confirm: 您確定嗎?
requests: 向使用者要求下列權限:
allow_read_prefs: 讀取他們的使用者偏好設定。
allow_write_prefs: 修改他們的使用者偏好設定。
- allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81註解å\92\8cè¨å®\9aæ\9c\8b友。
+ allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81è©\95è«\96å\92\8cè¨å®\9a好友。
allow_write_api: 修改地圖。
allow_read_gpx: 讀取他們的私人 GPS 軌跡。
allow_write_gpx: 上傳 GPS 軌跡。
- allow_write_notes: 修改筆記。
+ allow_write_notes: 修改註記。
index:
title: 我的 OAuth 詳細資料
my_tokens: 我授權的應用程式
- list_tokens: 下列授權記號已發給您名下的應用程式:
+ list_tokens: 下列密鑰已核發給您名下的應用程式:
application: 應用程式名稱
issued_at: 簽發於
- revoke: 註銷!
+ revoke: 撤銷!
my_apps: 我的用戶端應用程式
no_apps: 您是否有想要註冊以使用於 %{oauth} 標準的應用程式?您必須先註冊您的網頁應用程式,才能對這個服務進行 OAuth 要求。
- registered_apps: 您已經註冊下列客戶端應用程式:
+ registered_apps: 您已經註冊下列用戶端應用程式:
register_new: 註冊您的應用程式
form:
name: 名稱
required: 必要的
url: 主要應用程式 URL
- callback_url: å\8f¬å\9b\9eï¼\88Callback) URL
+ callback_url: å\9b\9eå\91¼ (Callback) URL
support_url: 支援 URL
requests: 向使用者要求下列權限:
allow_read_prefs: 讀取他們的使用者偏好設定。
allow_write_prefs: 修改他們的使用者偏好設定。
- allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81註解å\92\8cè¨å®\9aæ\9c\8b友。
+ allow_write_diary: 建ç«\8bæ\97¥è¨\98ã\80\81è©\95è«\96å\92\8cè¨å®\9a好友。
allow_write_api: 修改地圖。
allow_read_gpx: 讀取他們的私人 GPS 軌跡。
allow_write_gpx: 上傳 GPS 軌跡。
- allow_write_notes: 修改筆記。
+ allow_write_notes: 修改註記。
not_found:
sorry: 抱歉,找不到此 %{type}。
create:
flash: 註冊資訊成功
update:
- flash: 更新用戶端資訊成功
+ flash: 更新客戶端資訊成功
destroy:
- flash: 已銷毀此客戶端應用程式註冊
+ flash: 已銷毀此用戶端應用程式註冊
user:
login:
title: 登入
heading: 登入
- email or username: 電子郵件位址或使用者名稱:
+ email or username: 電子郵件地址或使用者名稱:
password: 密碼:
openid: '%{logo} OpenID:'
- remember: 記住我:
+ remember: 記住我
lost password link: 忘記您的密碼?
login_button: 登入
register now: 立即註冊
- with username: 已經有 OpenStreetMap 的帳戶嗎?請使用您的使用者名和密碼登錄:
- with openid: 或者請使用 OpenID 登錄:
+ with username: 已經有 OpenStreetMap 的帳號嗎?請使用您的使用者名和密碼登入:
+ with external: 或者使用第三方服務登入
new to osm: 第一次來到 OpenStreetMap?
- to make changes: 要更改的 OpenStreetMap 的資料,您必須擁有一個帳戶。
- create account minute: 建立一個帳戶。只需要一分鐘。
- no account: 還沒有帳戶嗎?
- account not active: 抱歉,您的帳戶尚未啟用。<br />請點選帳戶確認電子郵件中的連結來啟用您的帳戶,或<a href="%{reconfirm}">要求發出新的確認電郵</a>。
- account is suspended: 很抱歉,您的帳戶已經因可疑活動被暫停。<br>請如果您想要討論這個問題,請與<a href="%{webmaster}">網站管理員</a>聯繫。
+ to make changes: 要更改的 OpenStreetMap 的資料,您必須擁有一個帳號。
+ create account minute: 建立一個帳號。只需要一分鐘。
+ no account: 還沒有帳號嗎?
+ account not active: 抱歉,您的帳號尚未開啟。<br />請點選帳號確認電子郵件中的連結來開啟您的帳號,或<a href="%{reconfirm}">要求發出新的確認電子郵件</a>。
+ account is suspended: 很抱歉,您的帳號已經因可疑活動被暫停。<br>請如果您想要討論這個問題,請與<a href="%{webmaster}">網站管理員</a>聯繫。
auth failure: 很抱歉,無法以這些資料登入。
- openid missing provider: 很抱歉,無法聯繫您的 OpenID 提供者
- openid invalid: 很抱歉,您的 OpenID 格式似乎不正確
openid_logo_alt: 使用 OpenID 登入
- openid_providers:
+ auth_providers:
openid:
title: 使用 OpenID 登入
- alt: 使用 OpenID URL 登入
+ alt: 使用 OpenID 網址登入
google:
- title: 使用 Google 登入
+ title: 使用 Google 帳號登入
alt: 使用 Google OpenID 登入
+ facebook:
+ title: 使用臉書登入
+ alt: 使用臉書帳號登入
+ windowslive:
+ title: 使用 Windows Live 登入
+ alt: 使用 Windows Live 帳號登入
yahoo:
title: 使用 Yahoo 登入
alt: 使用 Yahoo OpenID 登入
lost_password:
title: 遺失密碼
heading: 忘記密碼?
- email address: 電子郵件位址:
+ email address: 電子郵件地址:
new password button: 重設密碼
- help_text: 輸入您的電子郵件位址來註冊,我們會將連結送至該位址,而您可以用它來重設密碼。
+ help_text: 輸入您的電子郵件地址來註冊,我們會將連結送至該地址,而您可以用它來重設密碼。
notice email on way: 很遺憾您忘了它 :-( 不過讓您可以重設它的電子郵件已經寄出,您待會便可重設。
- notice email cannot find: 找不到該電子郵件地址,抱歉。
+ notice email cannot find: 很抱歉,找不到該電子郵件地址。
reset_password:
title: 重設密碼
heading: 重設 %{user} 的密碼
confirm password: 確認密碼:
reset: 重設密碼
flash changed: 您的密碼已經變更。
- flash token bad: 找不到該記號,可能要檢查一下 URL?
+ flash token bad: 找不到該密鑰,可能要檢查一下 URL?
new:
title: 註冊
- no_auto_account_create: 很不幸的我們現在無法自動為您建立帳戶。
- contact_webmaster: 請聯絡 <a href="mailto:webmaster@openstreetmap.org">網站管理者</a>安排要建立的帳戶,我們會儘快嘗試並處理這個要求。
+ no_auto_account_create: 很不幸的我們現在無法自動為您建立帳號。
+ contact_webmaster: 請聯絡 <a href="mailto:webmaster@openstreetmap.org">網站管理者</a>安排要建立的帳號,我們會儘快嘗試並處理這個要求。
about:
header: 自由及可編輯
html: |-
- <p>與其他地圖不同,OpenStreetMap是完全由像你一樣的人們創建的,而且任何人都可自由地修正、更新、下載和使用。</p>
- <p>請註冊以開始貢獻吧。我們將發出電郵以確認你的帳戶。</p>
- license_agreement: 當您確認您的帳戶,您需要同意<a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">貢獻者條款</a>
+ <p>與其他地圖不同,OpenStreetMap 是完全由像你一樣的人們建立的,而且任何人都可自由地修正、更新、下載和使用。</p>
+ <p>請註冊以開始貢獻吧。我們將發出電子郵件以確認你的帳號。</p>
+ license_agreement: 當您確認您的帳號,您需要同意<a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">貢獻者條款</a>
。
- email address: 電子郵件位址:
- confirm email address: 確認電子郵件位址:
+ email address: 電子郵件地址:
+ confirm email address: 確認電子郵件地址:
not displayed publicly: 不要公開顯示 (請看 <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
title="wiki privacy policy including section on email addresses">隱私權政策</a>)
display name: 顯示名稱:
display name description: 您公開顯示的使用者名稱。您可以稍後在偏好設定中改變它。
- openid: '%{logo} OpenID:'
+ external auth: 第三方身份認證
password: 密碼:
confirm password: 確認密碼:
- use openid: 或者,使用 %{logo} OpenID 登入
- openid no password: 使用 OpenID 時密碼不是必需的,但可能仍需要一些額外的工具或伺服器。
- openid association: "<p>你的 OpenID 尚未與一個 OpenStreetMap 帳戶相關聯。</p>\n<ul>\n <li>如果你是新來到OpenStreetMap,請使用下面的表單建立一個新的帳戶。
- </li>\n <li>\n 如果你已經有一個帳戶,你可以使用你的用戶名稱和密碼登入你的帳戶,然後在你的用戶設置中關聯你的OpenID。 \n
- </li>\n</ul>"
+ use external auth: 或者使用第三方服務登入
+ auth no password: 使用第三方認証無須填寫密碼,但部份額外工具或伺服器可能仍需要使用密碼。
+ auth association: |-
+ <p>您的 ID 尚未連結至 OpenStreetMap 帳號。</p>
+ <ul>
+ <li>若您是 OpenStreetMap 的新使用者,請使用以下表單建立新帳號。</li>
+ <li>
+ 若您已有帳號,您可以使用您的使用者名稱及密碼登入您的帳號,然後於您的使用者設定中連結您的帳號至 ID。
+ </li>
+ </ul>
continue: 註冊
terms accepted: 感謝您接受新的貢獻條款!
- terms declined: 我們很遺憾你已決定不接受新的貢獻者條款。有關詳細資訊,請參閱<a href="%{url}">此wiki頁面</a>。
+ terms declined: 我們很遺憾你已決定不接受新的貢獻者條款。有關詳細資訊,請參閱<a href="%{url}">此 wiki 頁面</a>。
terms:
title: 貢獻者條款
heading: 貢獻者條款
new diary entry: 新增日記項目
my edits: 我的編輯
my traces: 我的軌跡
- my notes: 我的筆記
+ my notes: 我的註記
my messages: 我的訊息
- my profile: 帳戶設定
+ my profile: 我的基本資料
my settings: 我的設定值
my comments: 我的評論
oauth settings: oauth 設定值
- blocks on me: 對我的封禁
- blocks by me: 我所設的封禁
+ blocks on me: 對我的封鎖
+ blocks by me: 我所設的封鎖
send message: 傳送訊息
diary: 日記
edits: 編輯
traces: 軌跡
- notes: 地圖筆記
- remove as friend: 移除朋友
- add as friend: 加入為朋友
+ notes: 地圖註記
+ remove as friend: 移除好友
+ add as friend: 加入為好友
mapper since: 註冊為製圖者日期:
- ago: (%{time_in_words_ago}之前)
+ ago: (%{time_in_words_ago} 之前)
ct status: 貢獻者條款:
ct undecided: 未決定
ct declined: 已拒絕
- ct accepted: 於%{ago}前接受
- latest edit: 上次編輯於%{ago}:
- email address: 電子郵件位址:
+ ct accepted: 於 %{ago} 前接受
+ latest edit: 上次編輯於 %{ago}:
+ email address: 電子郵件地址:
created from: 建立於:
status: 狀態:
spam score: 垃圾郵件分數:
description: 說明
user location: 使用者位置
- if set location: 您可以在%{settings_link}頁面設定您家的位置,以檢視附近的使用者。
+ if set location: 您可以在 %{settings_link} 頁面設定您家的位置,以檢視附近的使用者。
settings_link_text: 設定
- your friends: 您的朋友
- no friends: 您尚未加入任何朋友。
- km away: '%{count}公里遠'
- m away: '%{count}公尺遠'
+ your friends: 您的好友
+ no friends: 您尚未加入任何好友。
+ km away: '%{count} 公里遠'
+ m away: '%{count} 公尺遠'
nearby users: 其他附近的使用者
no nearby users: 附近沒有已加入製圖的使用者。
role:
administrator: 授予行政員權限
moderator: 授予管理者權限
revoke:
- administrator: æ\92\87銷行政員權限
- moderator: æ\92\87銷管理者權限
- block_history: 接受封禁
- moderator_history: 給予封禁
+ administrator: æ\92¤銷行政員權限
+ moderator: æ\92¤銷管理者權限
+ block_history: 接受封鎖
+ moderator_history: 給予封鎖
comments: 評論
- create_block: 封禁這個使用者
- activate_user: 啟用這個使用者
+ create_block: 封鎖這個使用者
+ activate_user: 開啟這個使用者
deactivate_user: 停用這個使用者
confirm_user: 確認這個使用者
hide_user: 隱藏這個使用者
unhide_user: 取消隱藏這個使用者
delete_user: 刪除這個使用者
confirm: 確認
- friends_changesets: 朋友的變更組合
- friends_diaries: 朋友的日記項目
- nearby_changesets: 附近使用者的變更組合
+ friends_changesets: 好友的變更集
+ friends_diaries: 好友的日記項目
+ nearby_changesets: 附近使用者的變更集
nearby_diaries: 附近使用者的日記項目
popup:
your location: 您的位置
nearby mapper: 附近的製圖者
- friend: 朋友
+ friend: 好友
account:
- title: 編輯帳戶
+ title: 編輯帳號
my settings: 我的設定值
- current email address: 目前的電子郵件位址:
- new email address: 新的電子郵件位址:
+ current email address: 目前的電子郵件地址:
+ new email address: 新的電子郵件地址:
email never displayed publicly: (永遠不公開顯示)
+ external auth: 外部認証:
openid:
- openid: OpenID:
link: HTTP://wiki.openstreetmap.org/wiki/OpenID
link text: 這是什麼?
public editing:
heading: 公開編輯:
- enabled: 已啟用。非匿名且可以編輯資料。
+ enabled: 已開啟。非匿名且可以編輯資料。
enabled link: http://wiki.openstreetmap.org/wiki/Disabling_anonymous_edits
enabled link text: 這是什麼?
disabled: 已停用且不能編輯資料,所有先前的編輯都會成為匿名的。
disabled link text: 為什麼我不能編輯?
public editing note:
heading: 公開編輯
- text: 目前您的編輯是匿名的,人們不能發送郵件給您或看到您的位置。為了顯示你的編輯,讓別人透過網站與您聯繫,請點擊下面的按鈕。 <b>由於 0.6
- API 的轉換,只有公開的使用者可以編輯地圖資料</b> 。 ( <a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">知道為什麼</a>
- )。 <ul><li>您的電子郵件地址將不會被因為成為公開使用者而被透露。 </li><li>這個動作不能逆轉,所有新的使用者現在都預設為公開的。
+ text: 目前您的編輯是匿名的,人們不能發送郵件給您或看到您的位置。為了顯示你的編輯,讓別人透過網站與您聯繫,請點選下面的按鈕。 <b>由於 0.6
+ API 的轉換,只有公開的使用者可以編輯地圖資料</b> 。 ( <a href="http://wiki.openstreetmap.org/wiki/Anonymous_edits">知道為什麼</a>
+ ) 。 <ul><li>您的電子郵件地址將不會被因為成為公開使用者而被透露。 </li><li>這個動作不能逆轉,所有新的使用者現在都預設為公開的。
</li></ul>
contributor terms:
heading: 貢獻者條款:
review link text: 請跟隨此連結,方便你檢視並接受新的貢獻者條款。
agreed_with_pd: 您亦同意將您的編輯放到公共領域
link text: 這是什麼?
- profile description: å\80\8b人æª\94æ¡\88描述:
+ profile description: å\9fºæ\9c¬è³\87æ\96\99描述:
preferred languages: 偏好的語言:
preferred editor: '偏好編輯器:'
image: 圖片:
gravatar:
- gravatar: 使用Gravatar
+ gravatar: 使用 Gravatar
link text: 這是什麼?
new image: 加入圖片
keep image: 保持目前的圖片
delete image: 移除目前的圖片
replace image: 取代目前的圖片
- image size hint: (方形圖片至少 100x100 的效果最好)
+ image size hint: ' (方形圖片至少 100x100 的效果最好)'
home location: 家的位置:
no home location: 您尚未輸入家的位置。
latitude: 緯度:
update home location on click: 當我點選地圖時更新家的位置?
save changes button: 儲存變更
make edits public button: 將我所有的編輯設為公開
- return to profile: 回到設定檔
+ return to profile: 返回基本資料
flash update success confirm needed: 使用者資訊成功的更新。請檢查您的電子郵件,以確認收到新電子郵件地址的通知。
flash update success: 使用者資訊已成功更新。
confirm:
heading: 請檢查您的電子郵件!
- introduction_1: 我們寄給您一封確認電郵。
- introduction_2: 按電子郵件中的連結以確認你的帳戶,然後你就可以開始繪製地圖。
- press confirm button: 按下確認按鈕以啟用您的帳戶。
+ introduction_1: 我們寄給您一封確認電子郵件。
+ introduction_2: 按電子郵件中的連結以確認你的帳號,然後你就可以開始繪製地圖。
+ press confirm button: 按下確認按鈕以開啟您的帳號。
button: 確認
- already active: 該帳戶已經確認。
+ success: 已確認您的帳號,感謝您的註冊!
+ already active: 該帳號已經確認。
unknown token: 確認碼已經過期或不存在。
- reconfirm_html: 如果你需要我們重新發送確認電郵,<a href="%{reconfirm}">請按這裡</a>。
+ reconfirm_html: 如果你需要我們重新發送確認電子郵件,<a href="%{reconfirm}">請按這裡</a>。
confirm_resend:
- success: 我們已經發送一封新的確認電郵到%{email},只要你確認你的帳戶,你就可以開始製圖了。 <br /><br />如果你使用會發送確認請求的反垃圾郵件系統,請確保你將webmaster@openstreetmap.org加入白名單中,因為我們無法回覆任何確認請求。
+ success: 我們已經發送一封新的確認電子郵件到 %{email},只要你確認你的帳號,你就可以開始製圖了。 <br /><br />如果你使用會發送確認請求的反垃圾郵件系統,請確保你將
+ webmaster@openstreetmap.org 加入白名單中,因為我們無法回覆任何確認請求。
failure: 找不到使用者 %{name}。
confirm_email:
- heading: 確認電子郵件位址的變更
+ heading: 確認電子郵件地址的變更
press confirm button: 按下確認按鈕以確認您的新電子郵件地址。
button: 確認
- success: 已確認您的電子郵件地址,感謝您的註冊!
- failure: 具有此記號的電子郵件地址已經確認過了。
+ success: 已確認您變更的電子郵件地址!
+ failure: 電子郵件地址已使用此密鑰確認過。
+ unknown_token: 確認碼已經過期或不存在。
set_home:
flash success: 家的位置成功的儲存
go_public:
flash success: 現在您所有的編輯都是公開的,而您已獲准編輯。
make_friend:
- heading: 將%{user}加入為朋友?
- button: 加入為朋友
- success: '%{name}現在已成為您的朋友!'
- failed: 抱歉,無法將%{name}加入為朋友。
- already_a_friend: 您已經是%{name}的朋友了。
+ heading: 將 %{user} 加入為好友?
+ button: 加入為好友
+ success: '%{name} 現在已成為您的好友!'
+ failed: 抱歉,無法將 %{name} 加入為好友。
+ already_a_friend: 您已經是 %{name} 的好友了。
remove_friend:
- heading: 移除朋友%{user}?
- button: 移除朋友
- success: '%{name}已從您的朋友中移除。'
- not_a_friend: '%{name}並不是您的朋友。'
+ heading: 移除好友 %{user}?
+ button: 移除好友
+ success: '%{name} 已從您的好友中移除。'
+ not_a_friend: '%{name} 並不是您的好友。'
filter:
not_an_administrator: 您需要一個行政員才可執行該動作。
list:
showing:
one: 頁面 %{page} (%{first_item} / %{items})
other: 頁面 %{page} (%{first_item}-%{last_item} / %{items})
- summary: '%{name}由%{ip_address}於%{date}建立'
- summary_no_ip: '%{name}建立於:%{date}'
+ summary: '%{name} 由 %{ip_address} 於 %{date} 建立'
+ summary_no_ip: '%{name} 建立於:%{date}'
confirm: 確認選取的使用者
hide: 隱藏選取的使用者
empty: 找不到符合的使用者
suspended:
- title: 帳戶已暫停
- heading: 帳戶已暫停
+ title: 帳號已暫停
+ heading: 帳號已暫停
webmaster: 網站管理員
- body: "<p>\n對不起,您的帳戶已因可疑\n活動被自動暫停。 \n</p>\n<p>\n這項決定將在短期內由行政員審核,或是如果你想討論這一點\n,可以聯絡%{webmaster}。
- \n</p>"
+ body: "<p>\n對不起,您的帳號已因可疑\n活動被自動暫停。 \n</p>\n<p>\n這項決定將在短期內由行政員審核,或是如果你想討論這一點\n,可以聯絡
+ %{webmaster}。 \n</p>"
+ auth_failure:
+ connection_failed: 連線至認証供應者失敗
+ invalid_credentials: 無效的認証憑証
+ no_authorization_code: 無授權碼
+ unknown_signature_algorithm: 不明的簽章演算法
+ invalid_scope: 無效範圍
user_role:
filter:
- not_an_administrator: å\8fªæ\9c\89è¡\8cæ\94¿å\93¡å\8f¯ä»¥é\80²è¡\8c使ç\94¨è\80\85è§\92è\89²管理,但是您並不是行政員。
- not_a_role: 字串「%{role}」不是有效的角色。
- already_has_role: 這個使用者已經有%{role}角色。
- doesnt_have_role: 這個使用者沒有%{role}角色。
+ not_an_administrator: å\8fªæ\9c\89è¡\8cæ\94¿å\93¡å\8f¯ä»¥é\80²è¡\8c使ç\94¨è\80\85身份管理,但是您並不是行政員。
+ not_a_role: 字串 "%{role}" 不是有效的身份。
+ already_has_role: 這個使用者已經有 %{role} 身份。
+ doesnt_have_role: 這個使用者沒有 %{role} 身份。
grant:
- title: 確èª\8dæ\8e\88è\88\87è§\92è\89²
- heading: 確èª\8dæ\8e\88è\88\87è§\92è\89²
- are_you_sure: 您確定要授予使用者「%{name}」「%{role}」的角色?
+ title: 確èª\8dæ\8e\88è\88\87身份
+ heading: 確èª\8dæ\8e\88è\88\87身份
+ are_you_sure: 您確定要授予使用者 "%{name}" "%{role}" 的身份?
confirm: 確認
- fail: 無法授予使用者「%{name}」「%{role}」的角色。請檢查使用者和角色是否都正確。
+ fail: 無法授予使用者 "%{name}" "%{role}" 的身份。請檢查使用者和身份是否都正確。
revoke:
- title: 確èª\8dæ\92\87é\8a·è§\92è\89²
- heading: 確èª\8dæ\92\87é\8a·è§\92è\89²
- are_you_sure: æ\82¨ç¢ºå®\9aè¦\81æ\92\87é\8a·ä½¿ç\94¨è\80\85ã\80\8c%{name}ã\80\8dã\80\8c%{role}ã\80\8dç\9a\84è§\92è\89²?
+ title: 確èª\8dæ\92¤é\8a·èº«ä»½
+ heading: 確èª\8dæ\92¤é\8a·èº«ä»½
+ are_you_sure: æ\82¨ç¢ºå®\9aè¦\81æ\92¤é\8a·ä½¿ç\94¨è\80\85 "%{name}" "%{role}" ç\9a\84身份?
confirm: 確認
- fail: ç\84¡æ³\95æ\92\87é\8a·ä½¿ç\94¨è\80\85ã\80\8c%{name}ã\80\8dã\80\8c%{role}ã\80\8dç\9a\84è§\92è\89²ã\80\82è«\8b檢æ\9f¥ä½¿ç\94¨è\80\85å\92\8cè§\92è\89²是否都正確。
+ fail: ç\84¡æ³\95æ\92¤é\8a·ä½¿ç\94¨è\80\85 "%{name}" "%{role}" ç\9a\84身份ã\80\82è«\8b檢æ\9f¥ä½¿ç\94¨è\80\85å\92\8c身份是否都正確。
user_block:
model:
- non_moderator_update: 只有管理者才可作出或更新封禁。
- non_moderator_revoke: å\8fªæ\9c\89管ç\90\86è\80\85æ\89\8då\8f¯æ\92\87é\8a·å°\81ç¦\81。
+ non_moderator_update: 只有管理者才可作出或更新封鎖。
+ non_moderator_revoke: å\8fªæ\9c\89管ç\90\86è\80\85æ\89\8då\8f¯æ\92¤é\8a·å°\81é\8e\96。
not_found:
- sorry: 抱歉,找不到 ID 為%{id}的使用者封禁。
+ sorry: 抱歉,找不到 ID 為 %{id} 的使用者封鎖。
back: 返回索引
new:
- title: 正在建立對 %{name} 的封禁
- heading: 正在建立對 %{name} 的封禁
- reason: '%{name} 之所以被封禁的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住訊息會公開讓所有人看到,而並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。'
+ title: 正在建立對 %{name} 的封鎖
+ heading: 正在建立對 %{name} 的封鎖
+ reason: '%{name} 之所以被封鎖的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住訊息會公開讓所有人看到,而並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。'
period: 從現在開始,這個使用者將被禁止使用 API 多久。
- submit: 建立封禁
+ submit: 建立封鎖
tried_contacting: 我已聯緊這個使用者並請他停止。
tried_waiting: 我已經給予這位使用者合理的時間回應這些問題。
- needs_view: 需要使用者登入才能解除這項封禁
- back: 檢視所有封禁
+ needs_view: 需要使用者登入才能解除這項封鎖
+ back: 檢視所有封鎖
edit:
- title: 正在編輯對%{name}的封禁
- heading: 正在編輯對%{name}的封禁
- reason: '%{name}之所以被封禁的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。'
+ title: 正在編輯對 %{name} 的封鎖
+ heading: 正在編輯對 %{name} 的封鎖
+ reason: '%{name} 之所以被封鎖的理由。請盡量以平靜、合理的態度,詳細的說明有關情況。請記住並非所有使用者都了解社群的術語,所以請嘗試使用較為通用的說法。'
period: 從現在開始,這個使用者將被禁止使用 API 多久。
- submit: 更新封禁
- show: 檢視這項封禁
- back: 檢視所有的封禁
- needs_view: 在清除這項封禁之前是否需要使用者登入?
+ submit: 更新封鎖
+ show: 檢視這項封鎖
+ back: 檢視所有的封鎖
+ needs_view: 在清除這項封鎖之前是否需要使用者登入?
filter:
- block_expired: 這項封禁已經逾期並且不能被編輯。
- block_period: 封禁期間必須是在下拉式選單中可選擇的其中一項數值。
+ block_expired: 這項封鎖已經逾期並且不能被編輯。
+ block_period: 封鎖期間必須是在下拉式選單中選填擇的其中一項數值。
create:
- try_contacting: 在封禁使用者之前請先嘗試聯繫他,並給予他一段合理的時間作出回應。
- try_waiting: 在封禁使用者之前請先嘗試給使用者一段合理的時間來回應。
- flash: 已建立對使用者%{name}的封禁。
+ try_contacting: 在封鎖使用者之前請先嘗試聯絡他,並給予他一段合理的時間作出回應。
+ try_waiting: 在封鎖使用者之前請先嘗試給使用者一段合理的時間來回應。
+ flash: 已建立對使用者 %{name} 的封鎖。
update:
- only_creator_can_edit: 只有建立這項封禁的管理者可作出編輯。
- success: 封禁已更新。
+ only_creator_can_edit: 只有建立這項封鎖的管理者可作出編輯。
+ success: 封鎖已更新。
index:
- title: 使用者封禁
- heading: 使用者封禁清單
- empty: 尚未設定任何使用者封禁。
+ title: 使用者封鎖
+ heading: 使用者封鎖清單
+ empty: 尚未設定任何使用者封鎖。
revoke:
- title: æ£å\9c¨æ\92\87é\8a·å°\8d%{block_on}ç\9a\84å°\81ç¦\81
- heading: æ£å\9c¨æ\92\87é\8a·%{block_by}å°\8d%{block_on}ç\9a\84å°\81ç¦\81
- time_future: 這項封禁將於%{time}結束。
- past: 這項封禁已在%{time}之前結束,現在不能被撇銷了。
- confirm: ä½ ç¢ºå®\9aè¦\81æ\92\87é\8a·é\80\99é \85å°\81ç¦\81?
- revoke: æ\92\87銷!
- flash: 這項封禁已被撇銷。
+ title: æ£å\9c¨æ\92¤é\8a·å°\8d %{block_on} ç\9a\84å°\81é\8e\96
+ heading: æ£å\9c¨æ\92¤é\8a· %{block_by} å°\8d %{block_on} ç\9a\84å°\81é\8e\96
+ time_future: 這項封鎖將於 %{time} 結束。
+ past: 這項封鎖已在 %{time} 之前結束,現在不能被撤銷了。
+ confirm: ä½ ç¢ºå®\9aè¦\81æ\92¤é\8a·é\80\99é \85å°\81é\8e\96?
+ revoke: æ\92¤銷!
+ flash: 這項封鎖已被撤銷。
period:
- one: 1小時
- other: '%{count}小時'
+ one: 1 小時
+ other: '%{count} 小時'
partial:
show: 顯示
edit: 編輯
- revoke: æ\92\87銷!
+ revoke: æ\92¤銷!
confirm: 您確定嗎?
- display_name: 被封禁的使用者
+ display_name: 被封鎖的使用者
creator_name: 建立者
- reason: 封禁的理由
+ reason: 封鎖的理由
status: 狀態
- revoker_name: æ\92\87銷者
- not_revoked: (æ²\92æ\9c\89æ\92\87銷)
- showing_page: 第%{page}頁
+ revoker_name: æ\92¤銷者
+ not_revoked: (æ²\92æ\9c\89æ\92¤銷)
+ showing_page: 第 %{page} 頁
next: 下一頁 »
previous: « 上一頁
helper:
- time_future: 於%{time}結束。
+ time_future: 於 %{time} 結束。
until_login: 生效直至這個使用者登入為止。
- time_past: 於%{time}之前結束。
+ time_past: 於 %{time} 之前結束。
blocks_on:
- title: 對%{name}的封禁
- heading: 對%{name}封禁的清單
- empty: '%{name}尚未被封禁。'
+ title: 對 %{name} 的封鎖
+ heading: 對 %{name} 封鎖的清單
+ empty: '%{name} 尚未被封鎖。'
blocks_by:
- title: '%{name}設的封禁'
- heading: 列出%{name}所設定的封禁
- empty: '%{name}尚未設定任何封禁。'
+ title: '%{name} 設的封鎖'
+ heading: 列出 %{name} 所設定的封鎖
+ empty: '%{name} 尚未設定任何封鎖。'
show:
- title: '%{block_on}被%{block_by}封禁'
- heading: '%{block_on}被%{block_by}封禁'
- time_future: 於%{time}內終止
- time_past: 於%{time}前終止
+ title: '%{block_on} 被 %{block_by} 封鎖'
+ heading: '%{block_on} 被 %{block_by} 封鎖'
+ time_future: 於 %{time} 內終止
+ time_past: 於 %{time} 前終止
+ created: 已建立
+ ago: '%{time} 前'
status: 狀態
show: 顯示
edit: 編輯
- revoke: æ\92\87銷!
+ revoke: æ\92¤銷!
confirm: 您確定嗎?
- reason: 封禁的理由:
- back: 檢視所有封禁
- revoker: æ\92\87銷者:
- needs_view: 在撇銷這個封禁之前,該使用者需要先登入。
+ reason: 封鎖的理由:
+ back: 檢視所有封鎖
+ revoker: æ\92¤銷者:
+ needs_view: 在還原這個封鎖之前,該使用者需要先登入。
note:
description:
- opened_at_html: 於%{when}前建立
- opened_at_by_html: 於%{when}前由%{user}建立
- commented_at_html: 於%{when}前更新
- commented_at_by_html: 於%{when}前由%{user}更新
- closed_at_html: 於%{when}前關閉
- closed_at_by_html: 於%{when}前由%{user}關閉
- reopened_at_html: 於%{when}前重啟
- reopened_at_by_html: 於%{when}前由%{user}重啟
+ opened_at_html: 於 %{when} 前建立
+ opened_at_by_html: 於 %{when} 前由 %{user} 建立
+ commented_at_html: 於 %{when} 前更新
+ commented_at_by_html: 於 %{when} 前由 %{user} 更新
+ closed_at_html: 已解決於 %{when} 前
+ closed_at_by_html: 於 %{when} 前由 %{user} 關閉
+ reopened_at_html: 於 %{when} 前重新開啟
+ reopened_at_by_html: 於 %{when} 前由 %{user} 重新開啟
rss:
- title: OpenStreetMap 筆記
- description_area: 在你的區域[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]所報告、評論或關閉的筆記的列表
- description_item: 筆記%{id}的 RSS feed
- opened: 新的筆記(在%{place}附近)
- commented: 新的評論(在%{place}附近)
- closed: 關閉的筆記(在%{place}附近)
- reopened: 重啟的筆記(在%{place}附近)
+ title: OpenStreetMap 註記
+ description_area: 在你的區域[(%{min_lat}|%{min_lon}) -- (%{max_lat}|%{max_lon})]所報告、評論或關閉的註記的清單
+ description_item: 註記 %{id} 的 RSS feed
+ opened: 新的註記 (在 %{place} 附近)
+ commented: 新的評論 (在 %{place} 附近)
+ closed: 關閉的註記 (在 %{place} 附近)
+ reopened: 重新開啟的註記 (在 %{place} 附近)
entry:
comment: 評論
- full: 筆記原文
+ full: 註記原文
mine:
- title: 由%{user}提交或評論的筆記
- heading: '%{user}的筆記'
- subheading: '%{user}提交或評論的註記'
- id: Id
+ title: 由 %{user} 送出或評論的註記
+ heading: '%{user} 的註記'
+ subheading: '%{user} 送出或評論的註記'
+ id: ID
creator: 建立者
description: 說明
created_at: 建立於:
last_changed: 最新變更
- ago_html: '%{when}前'
+ ago_html: '%{when} 前'
javascripts:
close: 關閉
share:
title: 分享
cancel: 取消
image: 圖片
- link: 連結或HTML
+ link: 連結或 HTML
long_link: 連結
short_link: 簡短連結
embed: HTML
- custom_dimensions: 設置自訂的尺寸
+ custom_dimensions: 設定自訂的尺寸
format: 格式:
scale: 比例:
image_size: 標準圖層圖片顯示尺寸為
download: 下載
- short_url: 簡短URL
+ short_url: 簡短 URL
include_marker: 包括標記
center_marker: 將標記設為地圖中心點
- paste_html: 貼上HTML以嵌入網站
+ paste_html: 貼上 HTML 以嵌入網站
view_larger_map: 查看更大的地圖
key:
title: 圖例
out: 縮小
locate:
title: 顯示我的位置
- popup: 你在該點的{distance}{unit}範圍內
+ popup: 你在該點的 {distance}{unit} 範圍內
base:
standard: 標準
- cycle_map: Cycle Map
- transport_map: Transport Map
+ cycle_map: 單車地圖
+ transport_map: 交通運輸地圖
mapquest: MapQuest Open
- hot: Humanitarian
+ hot: 人道救援
layers:
header: 地圖圖層
- notes: 地圖筆記
+ notes: 地圖註記
data: 地圖資料
- overlays: 啟用覆蓋層,以為地圖解決問題
+ overlays: 開啟覆蓋層,以為地圖解決問題
title: 圖層
- copyright: © <a href='%{copyright_url}'>OpenStreetMap貢獻者</a>
- donate_link_text: <a class='donate-attr' href='%{donate_url}'>ä½\9cå\87ºæ\8d\90è´\88</a>
+ copyright: © <a href='%{copyright_url}'>OpenStreetMap 貢獻者</a>
+ donate_link_text: <a class='donate-attr' href='%{donate_url}'>ä¾\86æ\8d\90款å\90§</a>
site:
edit_tooltip: 編輯地圖
edit_disabled_tooltip: 放大以編輯地圖
- createnote_tooltip: 在地圖加入筆記
- createnote_disabled_tooltip: 放大以在地圖加入筆記
- map_notes_zoom_in_tooltip: 放大以查看筆記
+ createnote_tooltip: 在地圖加入註記
+ createnote_disabled_tooltip: 放大以在地圖加入註記
+ map_notes_zoom_in_tooltip: 放大以查看註記
map_data_zoom_in_tooltip: 放大以查看地圖圖資
queryfeature_tooltip: 查詢圖徵
queryfeature_disabled_tooltip: 放大地圖以查询圖徵
changesets:
show:
- comment: 留言
+ comment: 評論
subscribe: 訂閱
unsubscribe: 取消訂閱
hide_comment: 隱藏
unhide_comment: 取消隱藏
notes:
new:
- intro: 發現錯誤或缺少些什麼東西嗎?請告訴其他地圖製作者以便於我們處理。將標記移動到正確的位置並輸入筆記,以解釋問題。(切勿在此輸入個人資料、抄襲自其他地圖的資訊,或者目錄清單。)
- add: 提交筆記
+ intro: 發現錯誤或缺少些什麼東西嗎?請告訴其他地圖製作者以便於我們處理。將標記移動到正確的位置並輸入註記,以解釋問題。 (切勿在此輸入個人資料、抄襲自其他地圖的資訊,或者目錄清單。)
+ add: 送出註記
show:
- anonymous_warning: 此項筆記包含來自匿名用戶的評論,應作獨立核實。
+ anonymous_warning: 此項註記包含來自匿名使用者的評論,應作獨立核實。
hide: 隱藏
- resolve: 關閉
- reactivate: 重啟
- comment_and_resolve: 評論並關閉
- comment: 提交評論
+ resolve: 解決
+ reactivate: 重新開啟
+ comment_and_resolve: 評論並解決
+ comment: 送出評論
edit_help: 將地圖移至你想編輯的位置並放大,然後按這裡。
+ directions:
+ engines:
+ graphhopper_bicycle: 腳踏車 (GraphHopper)
+ graphhopper_foot: 徒步 (GraphHopper)
+ mapquest_bicycle: 腳踏車 (MapQuest)
+ mapquest_car: 開車 (MapQuest)
+ mapquest_foot: 徒步 (MapQuest)
+ osrm_car: 開車 (OSRM)
+ directions: 路線
+ distance: 距離
+ errors:
+ no_route: 查無兩個地點間的路徑。
+ no_place: 抱歉 - 查無該地點。
+ instructions:
+ continue_without_exit: 繼續行駛 %{name}
+ slight_right_without_exit: 靠右至 %{name}
+ turn_right_without_exit: 右轉至 %{name}
+ sharp_right_without_exit: 右急轉至 %{name}
+ uturn_without_exit: 迴轉沿著 %{name}
+ sharp_left_without_exit: 左急轉至 %{name}
+ turn_left_without_exit: 左轉至 %{name}
+ slight_left_without_exit: 靠左至 %{name}
+ via_point_without_exit: (通過點)
+ follow_without_exit: 延著 %{name}
+ roundabout_without_exit: 於圓環進入 %{name}
+ leave_roundabout_without_exit: 離開圓環 - %{name}
+ stay_roundabout_without_exit: 繼續在圓環 - %{name}
+ start_without_exit: 於 %{name} 的終點開始
+ destination_without_exit: 到達目地
+ against_oneway_without_exit: 沿著單行道 %{name} 行駛
+ end_oneway_without_exit: 單行道終點於 %{name}
+ roundabout_with_exit: 於圓環進入出口 %{name} 至 %{name}
+ unnamed: 未命名
+ courtesy: 感謝 %{link} 提供路線資訊
+ time: 時間
query:
node: 節點
way: 路徑
- relation: 關係
+ relation: 關聯
nothing_found: 找不到圖徵
- error: '%{server}連線錯誤:%{error}'
- timeout: '%{server}連線逾時'
+ error: '%{server} 連線錯誤:%{error}'
+ timeout: '%{server} 連線逾時'
redaction:
edit:
description: 說明
title: 編輯修訂
index:
empty: 沒有可顯示的修訂。
- heading: 修訂列表
- title: 修訂列表
+ heading: 修訂清單
+ title: 修訂清單
new:
description: 說明
heading: 輸入新增修訂資訊
title: 建立修訂中
show:
description: 說明:
- heading: 正顯示修訂「%{title}」
+ heading: 正顯示修訂 "%{title}"
title: 顯示修訂
user: 建立者:
edit: 編輯此修訂
match "/user/:display_name/history" => "changeset#list", :via => :get
match "/user/:display_name/history/feed" => "changeset#feed", :via => :get, :defaults => { :format => :atom }
match "/user/:display_name/notes" => "notes#mine", :via => :get
- match "/history/friends" => "changeset#list", :via => :get, :friends => true, :as => "friend_changesets"
- match "/history/nearby" => "changeset#list", :via => :get, :nearby => true, :as => "nearby_changesets"
+ match "/history/friends" => "changeset#list", :via => :get, :friends => true, :as => "friend_changesets", :defaults => { :format => :html }
+ match "/history/nearby" => "changeset#list", :via => :get, :nearby => true, :as => "nearby_changesets", :defaults => { :format => :html }
get "/browse/way/:id", :to => redirect(:path => "/way/%{id}")
get "/browse/way/:id/history", :to => redirect(:path => "/way/%{id}/history")
get "/create-account.html", :to => redirect(:path => "/user/new")
get "/forgot-password.html", :to => redirect(:path => "/user/forgot-password")
+ # omniauth
+ match "/auth/failure" => "user#auth_failure", :via => :get
+ match "/auth/:provider/callback" => "user#auth_success", :via => [:get, :post], :as => :auth_success
+ match "/auth/:provider" => "user#auth", :via => [:get, :post], :as => :auth
+
# permalink
match "/go/:code" => "site#permalink", :via => :get, :code => /[a-zA-Z0-9_@~]+[=-]*/
match "/preview/:format" => "site#preview", :via => :post, :as => :preview
# traces
- match "/user/:display_name/traces/tag/:tag/page/:page" => "trace#list", :via => :get
+ match "/user/:display_name/traces/tag/:tag/page/:page" => "trace#list", :via => :get, :page => /[1-9][0-9]*/
match "/user/:display_name/traces/tag/:tag" => "trace#list", :via => :get
- match "/user/:display_name/traces/page/:page" => "trace#list", :via => :get
+ match "/user/:display_name/traces/page/:page" => "trace#list", :via => :get, :page => /[1-9][0-9]*/
match "/user/:display_name/traces" => "trace#list", :via => :get
match "/user/:display_name/traces/tag/:tag/rss" => "trace#georss", :via => :get, :defaults => { :format => :rss }
match "/user/:display_name/traces/rss" => "trace#georss", :via => :get, :defaults => { :format => :rss }
match "/user/:display_name/traces/:id" => "trace#view", :via => :get
match "/user/:display_name/traces/:id/picture" => "trace#picture", :via => :get
match "/user/:display_name/traces/:id/icon" => "trace#icon", :via => :get
- match "/traces/tag/:tag/page/:page" => "trace#list", :via => :get
+ match "/traces/tag/:tag/page/:page" => "trace#list", :via => :get, :page => /[1-9][0-9]*/
match "/traces/tag/:tag" => "trace#list", :via => :get
- match "/traces/page/:page" => "trace#list", :via => :get
+ match "/traces/page/:page" => "trace#list", :via => :get, :page => /[1-9][0-9]*/
match "/traces" => "trace#list", :via => :get
match "/traces/tag/:tag/rss" => "trace#georss", :via => :get, :defaults => { :format => :rss }
match "/traces/rss" => "trace#georss", :via => :get, :defaults => { :format => :rss }
- match "/traces/mine/tag/:tag/page/:page" => "trace#mine", :via => :get
+ match "/traces/mine/tag/:tag/page/:page" => "trace#mine", :via => :get, :page => /[1-9][0-9]*/
match "/traces/mine/tag/:tag" => "trace#mine", :via => :get
match "/traces/mine/page/:page" => "trace#mine", :via => :get
match "/traces/mine" => "trace#mine", :via => :get
match "/user/:display_name/diary/rss" => "diary_entry#rss", :via => :get, :defaults => { :format => :rss }
match "/diary/:language/rss" => "diary_entry#rss", :via => :get, :defaults => { :format => :rss }
match "/diary/rss" => "diary_entry#rss", :via => :get, :defaults => { :format => :rss }
- match "/user/:display_name/diary/comments/:page" => "diary_entry#comments", :via => :get, :page => /\d+/
+ match "/user/:display_name/diary/comments/:page" => "diary_entry#comments", :via => :get, :page => /[1-9][0-9]*/
match "/user/:display_name/diary/comments/" => "diary_entry#comments", :via => :get
match "/user/:display_name/diary" => "diary_entry#list", :via => :get
match "/diary/:language" => "diary_entry#list", :via => :get
--- /dev/null
+test:
+ adapter: postgresql
+ database: openstreetmap
+ username: postgres
+ encoding: utf8
key:
lanes: Bg:Key:lanes
tag:
+ natural=heath: Bg:Tag:natural=heath
railway=crossing: Bg:Tag:railway=crossing
railway=level_crossing: Bg:Tag:railway=level crossing
ca:
key:
name: Ca:Key:name
+ operator:type: Ca:Key:operator:type
tag:
landuse=farmland: Ca:Tag:landuse=farmland
leisure=swimming_pool: Ca:Tag:leisure=swimming pool
+ shop=frozen_food: Ca:Tag:shop=frozen food
cs:
key:
addr: Cs:Key:addr
aeroway: Cs:Key:aeroway
alt_name: Cs:Key:alt name
amenity: Cs:Key:amenity
+ area: Cs:Key:area
+ artwork_type: Cs:Key:artwork type
barrier: Cs:Key:barrier
building: Cs:Key:building
building:flats: Cs:Key:building:flats
castle_type: Cs:Key:castle type
contact: Cs:Key:contact
craft: Cs:Key:craft
+ cutting: Cs:Key:cutting
+ distance: Cs:Key:distance
emergency: Cs:Key:emergency
geological: Cs:Key:geological
+ height: Cs:Key:height
highway: Cs:Key:highway
historic: Cs:Key:historic
image: Cs:Key:image
+ information: Cs:Key:information
int_name: Cs:Key:int name
intermittent: Cs:Key:intermittent
landuse: Cs:Key:landuse
+ leaf_cycle: Cs:Key:leaf cycle
leaf_type: Cs:Key:leaf type
leisure: Cs:Key:leisure
+ length: Cs:Key:length
loc_name: Cs:Key:loc name
man_made: Cs:Key:man made
+ maxlength: Cs:Key:maxlength
+ mountain_pass: Cs:Key:mountain pass
mtb:scale: Cs:Key:mtb:scale
mtb:scale:uphill: Cs:Key:mtb:scale:uphill
name: Cs:Key:name
office: Cs:Key:office
official_name: Cs:Key:official name
old_name: Cs:Key:old name
+ parking: Cs:Key:parking
place: Cs:Key:place
population: Cs:Key:population
power: Cs:Key:power
salt: Cs:Key:salt
shop: Cs:Key:shop
short_name: Cs:Key:short name
+ smoothness: Cs:Key:smoothness
sorting_name: Cs:Key:sorting name
sport: Cs:Key:sport
+ surface: Cs:Key:surface
tourism: Cs:Key:tourism
tracktype: Cs:Key:tracktype
water: Cs:Key:water
waterway: Cs:Key:waterway
+ width: Cs:Key:width
tag:
amenity=baby_hatch: Cs:Tag:amenity=baby hatch
baby_hatch=yes: Cs:Tag:baby hatch=yes
building=farm: Cs:Tag:building=farm
+ building=roof: Cs:Tag:building=roof
building=school: Cs:Tag:building=school
building=university: Cs:Tag:building=university
historic=cannon: Cs:Tag:historic=cannon
landuse=basin: Cs:Tag:landuse=basin
landuse=brownfield: Cs:Tag:landuse=brownfield
landuse=greenfield: Cs:Tag:landuse=greenfield
+ leaf_cycle=deciduous: Cs:Tag:leaf cycle=deciduous
+ leaf_cycle=evergreen: Cs:Tag:leaf cycle=evergreen
+ leaf_cycle=mixed: Cs:Tag:leaf cycle=mixed
+ leaf_cycle=semi_deciduous: Cs:Tag:leaf cycle=semi deciduous
+ leaf_cycle=semi_evergreen: Cs:Tag:leaf cycle=semi evergreen
leaf_type=broadleaved: Cs:Tag:leaf type=broadleaved
leaf_type=leafless: Cs:Tag:leaf type=leafless
leaf_type=mixed: Cs:Tag:leaf type=mixed
leaf_type=needleleaved: Cs:Tag:leaf type=needleleaved
+ man_made=adit: Cs:Tag:man made=adit
+ man_made=mineshaft: Cs:Tag:man made=mineshaft
+ natural=arete: Cs:Tag:natural=arete
+ natural=cave_entrance: Cs:Tag:natural=cave entrance
+ natural=peak: Cs:Tag:natural=peak
+ natural=ridge: Cs:Tag:natural=ridge
+ natural=rock: Cs:Tag:natural=rock
+ natural=sinkhole: Cs:Tag:natural=sinkhole
+ natural=stone: Cs:Tag:natural=stone
+ natural=tree_row: Cs:Tag:natural=tree row
natural=water: Cs:Tag:natural=water
route=trolleybus: Cs:Tag:route=trolleybus
+ tourism=artwork: Cs:Tag:tourism=artwork
+ tourism=information: Cs:Tag:tourism=information
cz:
key:
historic: Cz:Key:historic
access: Da:Key:access
fee: Da:Key:fee
lit: Da:Key:lit
+ man_made: Da:Key:man made
maxheight: Da:Key:maxheight
maxspeed: Da:Key:maxspeed
+ surface: Da:Key:surface
tag:
amenity=community_centre: Da:Tag:amenity=community centre
amenity=nightclub: Da:Tag:amenity=nightclub
key:
AlpinRes_ID: DE:Key:AlpinRes ID
TODO: DE:Key:TODO
+ abandoned:*: DE:Key:abandoned:*
abutters: DE:Key:abutters
access: DE:Key:access
addr: DE:Key:addr
addr:city: DE:Key:addr:city
+ addr:country: DE:Key:addr:country
addr:housenumber: DE:Key:addr:housenumber
addr:postcode: DE:Key:addr:postcode
addr:street: DE:Key:addr:street
aerialway: DE:Key:aerialway
aeroway: DE:Key:aeroway
+ agricultural: DE:Key:agricultural
amenity: DE:Key:amenity
area: DE:Key:area
asb: DE:Key:asb
basin: DE:Key:basin
beds: DE:Key:beds
bicycle: DE:Key:bicycle
+ bicycle:backward: DE:Key:bicycle:backward
bicycle_parking: DE:Key:bicycle parking
bicycle_road: DE:Key:bicycle road
+ bin: DE:Key:bin
biosphärenwirt: DE:Key:biosphärenwirt
+ board_type: DE:Key:board type
+ boat: DE:Key:boat
bollard: DE:Key:bollard
+ boundary: DE:Key:boundary
brewery: DE:Key:brewery
bridge: DE:Key:bridge
+ bridge:movable: DE:Key:bridge:movable
+ bridge:structure: DE:Key:bridge:structure
+ buiding: DE:Key:buiding
building: DE:Key:building
+ building:architecture: DE:Key:building:architecture
building:condition: DE:Key:building:condition
+ building:levels: DE:Key:building:levels
building:material: DE:Key:building:material
+ bunker_type: DE:Key:bunker type
+ busway: DE:Key:busway
capacity: DE:Key:capacity
castle_type: DE:Key:castle type
+ cemetery: DE:Key:cemetery
+ city_limit: DE:Key:city limit
+ class:bicycle: DE:Key:class:bicycle
clothes: DE:Key:clothes
club: DE:Key:club
+ collection_times: DE:Key:collection times
comment: DE:Key:comment
+ communication:bos: DE:Key:communication:bos
+ communication:microwave: DE:Key:communication:microwave
+ communication:mobile_phone: DE:Key:communication:mobile phone
+ communication:radio: DE:Key:communication:radio
+ communication:television: DE:Key:communication:television
construction: DE:Key:construction
contact: DE:Key:contact
+ contact:facebook: DE:Key:contact:facebook
contact:fax: DE:Key:contact:fax
+ contact:google_plus: DE:Key:contact:google plus
contact:phone: DE:Key:contact:phone
contact:website: DE:Key:contact:website
content: DE:Key:content
+ conveying: DE:Key:conveying
country: DE:Key:country
covered: DE:Key:covered
craft: DE:Key:craft
created_by: DE:Key:created by
crossing: DE:Key:crossing
+ crossing:activation: DE:Key:crossing:activation
+ crossing:barrier: DE:Key:crossing:barrier
+ crossing:bell: DE:Key:crossing:bell
+ crossing:light: DE:Key:crossing:light
+ crossing:on_demand: DE:Key:crossing:on demand
+ crossing:saltire: DE:Key:crossing:saltire
cuisine: DE:Key:cuisine
currency: DE:Key:currency
currency:BTC: DE:Key:currency:BTC
currency:EUR: DE:Key:currency:EUR
currency:USD: DE:Key:currency:USD
- currency:XXX: DE:Key:currency:XXX
currency:others: DE:Key:currency:others
cutting: DE:Key:cutting
cycleway: DE:Key:cycleway
diet: DE:Key:diet
diet:*: DE:Key:diet:*
direction: DE:Key:direction
+ distance: DE:Key:distance
+ disused: DE:Key:disused
+ 'disused:': 'DE:Key:disused:'
drink: DE:Key:drink
drive_through: DE:Key:drive through
ele: DE:Key:ele
embankment: DE:Key:embankment
emergency: DE:Key:emergency
entrance: DE:Key:entrance
+ fair_trade: DE:Key:fair trade
fee: DE:Key:fee
fence_type: DE:Key:fence type
fetish: DE:Key:fetish
+ fireplace: DE:Key:fireplace
fixme: DE:Key:fixme
foot: DE:Key:foot
footway: DE:Key:footway
ford: DE:Key:ford
+ frequency: DE:Key:frequency
+ fuel: DE:Key:fuel
+ gauge: DE:Key:gauge
generator:method: DE:Key:generator:method
generator:output: DE:Key:generator:output
+ generator:output:biogas: DE:Key:generator:output:biogas
generator:output:electricity: DE:Key:generator:output:electricity
generator:output:heat: DE:Key:generator:output:heat
generator:output:hot_water: DE:Key:generator:output:hot water
+ generator:output:steam: DE:Key:generator:output:steam
generator:source: DE:Key:generator:source
generator:type: DE:Key:generator:type
geological: DE:Key:geological
hazard: DE:Key:hazard
hazmat: DE:Key:hazmat
height: DE:Key:height
+ hgv: DE:Key:hgv
+ highspeed: DE:Key:highspeed
highway: DE:Key:highway
historic: DE:Key:historic
horse: DE:Key:horse
incline: DE:Key:incline
informal: DE:Key:informal
information: DE:Key:information
+ inscription: DE:Key:inscription
+ int_name: DE:Key:int name
intermittent: DE:Key:intermittent
internet_access: DE:Key:internet access
is_in: DE:Key:is in
+ is_in:continent: DE:Key:is in:continent
junction: DE:Key:junction
+ kms: DE:Key:kms
landuse: DE:Key:landuse
lanes: DE:Key:lanes
+ lanes:bus: DE:Key:lanes:bus
+ lanes:psv: DE:Key:lanes:psv
+ lanes:psv:backward: DE:Key:lanes:psv:backward
+ lanes:psv:forward: DE:Key:lanes:psv:forward
layer: DE:Key:layer
+ leaf_cycle: DE:Key:leaf cycle
+ leaf_type: DE:Key:leaf type
+ left: DE:Key:left
leisure: DE:Key:leisure
+ length: DE:Key:length
level: DE:Key:level
lit: DE:Key:lit
+ loc_name: DE:Key:loc name
+ location: DE:Key:location
lock: DE:Key:lock
lock_name: DE:Key:lock name
man_made: DE:Key:man made
manhole: DE:Key:manhole
+ max_age: DE:Key:max age
+ maxaxleload: DE:Key:maxaxleload
maxheight: DE:Key:maxheight
maxspeed: DE:Key:maxspeed
maxstay: DE:Key:maxstay
maxweight: DE:Key:maxweight
maxwidth: DE:Key:maxwidth
+ megalith_type: DE:Key:megalith type
+ memorial:type: DE:Key:memorial:type
military: DE:Key:military
+ min_age: DE:Key:min age
minspeed: DE:Key:minspeed
+ mofa: DE:Key:mofa
+ monitoring:air_quality: DE:Key:monitoring:air quality
+ monitoring:gps: DE:Key:monitoring:gps
+ monitoring:groundwater: DE:Key:monitoring:groundwater
+ monitoring:noise: DE:Key:monitoring:noise
+ monitoring:radiation: DE:Key:monitoring:radiation
+ monitoring:seismic_activity: DE:Key:monitoring:seismic activity
+ monitoring:tide_gauge: DE:Key:monitoring:tide gauge
+ monitoring:traffic: DE:Key:monitoring:traffic
+ monitoring:water_level: DE:Key:monitoring:water level
+ monitoring:weather: DE:Key:monitoring:weather
+ monument:genesis: DE:Key:monument:genesis
+ moped: DE:Key:moped
+ motor_vehicle: DE:Key:motor vehicle
+ motorboat: DE:Key:motorboat
+ motorcar: DE:Key:motorcar
+ motorcycle: DE:Key:motorcycle
motorroad: DE:Key:motorroad
mountain_pass: DE:Key:mountain pass
mtb:scale: DE:Key:mtb:scale
name:en: DE:Key:name:en
name:fr: DE:Key:name:fr
name:it: DE:Key:name:it
+ narrow: DE:Key:narrow
natural: DE:Key:natural
network: DE:Key:network
noexit: DE:Key:noexit
note: DE:Key:note
office: DE:Key:office
+ old_name: DE:Key:old name
oneway: DE:Key:oneway
oneway:bicycle: DE:Key:oneway:bicycle
oneway:moped: DE:Key:oneway:moped
onkz: DE:Key:onkz
opening_hours: DE:Key:opening hours
operator: DE:Key:operator
+ operator:MNC: DE:Key:operator:MNC
+ organic: DE:Key:organic
+ osak: DE:Key:osak
osmc:status: DE:Key:osmc:status
osmc:symbol: DE:Key:osmc:symbol
overtaking: DE:Key:overtaking
parking:lane: DE:Key:parking:lane
+ parking:lane:hgv: DE:Key:parking:lane:hgv
phone: DE:Key:phone
piste:difficulty: DE:Key:piste:difficulty
piste:type: DE:Key:piste:type
plant:output: DE:Key:plant:output
playground: DE:Key:playground
population: DE:Key:population
+ postal_code: DE:Key:postal code
power: DE:Key:power
priority: DE:Key:priority
priority_road: DE:Key:priority road
proposed: DE:Key:proposed
+ public_bookcase:type: DE:Key:public bookcase:type
public_transport: DE:Key:public transport
+ pump: DE:Key:pump
railway: DE:Key:railway
+ railway:preserved: DE:Key:railway:preserved
+ ramp: DE:Key:ramp
recycling_type: DE:Key:recycling type
ref: DE:Key:ref
ref:bufa: DE:Key:ref:bufa
ref:mobil-parken.de: DE:Key:ref:mobil-parken.de
+ reg_name: DE:Key:reg name
religion: DE:Key:religion
resource: DE:Key:resource
+ right: DE:Key:right
roof:material: DE:Key:roof:material
rooms: DE:Key:rooms
route: DE:Key:route
seamark:type: DE:Key:seamark:type
segregated: DE:Key:segregated
service: DE:Key:service
+ service_times: DE:Key:service times
shelter_type: DE:Key:shelter type
shop: DE:Key:shop
sidewalk: DE:Key:sidewalk
+ site_type: DE:Key:site type
smoking: DE:Key:smoking
smoothness: DE:Key:smoothness
social_facility: DE:Key:social facility
speisebezirk: DE:Key:speisebezirk
sport: DE:Key:sport
start_date: DE:Key:start date
+ station: DE:Key:station
step_count: DE:Key:step count
surface: DE:Key:surface
symbol: DE:Key:symbol
tactile_paving: DE:Key:tactile paving
+ tidal: DE:Key:tidal
todo: DE:Key:todo
+ toilets:wheelchair: DE:Key:toilets:wheelchair
toll: DE:Key:toll
tourism: DE:Key:tourism
+ tower:type: DE:Key:tower:type
+ tracks: DE:Key:tracks
tracktype: DE:Key:tracktype
traffic_calming: DE:Key:traffic calming
traffic_sign: DE:Key:traffic sign
+ traffic_signals:direction: DE:Key:traffic signals:direction
trail_visibility: DE:Key:trail visibility
+ trees: DE:Key:trees
tunnel: DE:Key:tunnel
turn: DE:Key:turn
turn:lanes: DE:Key:turn:lanes
type: DE:Key:type
usage: DE:Key:usage
+ vehicle: DE:Key:vehicle
verbindung: DE:Key:verbindung
voltage: DE:Key:voltage
waste: DE:Key:waste
wheelchair: DE:Key:wheelchair
width: DE:Key:width
wiki:symbol: DE:Key:wiki:symbol
+ wikidata: DE:Key:wikidata
+ wikimedia_commons: DE:Key:wikimedia commons
wikipedia: DE:Key:wikipedia
+ winter_road: DE:Key:winter road
wires: DE:Key:wires
wood: DE:Key:wood
+ workrules: DE:Key:workrules
zone:maxspeed: DE:Key:zone:maxspeed
tag:
+ abandoned:amenity=prison: DE:Tag:abandoned:amenity=prison
abandoned=village: DE:Tag:abandoned=village
abandoned=yes: DE:Tag:abandoned=yes
access=designated: DE:Tag:access=designated
access=private: DE:Tag:access=private
+ admin_level=2: DE:Tag:admin level=2
aerialway=cable_car: DE:Tag:aerialway=cable car
+ aeroway=aerodrome: DE:Tag:aeroway=aerodrome
+ aeroway=apron: DE:Tag:aeroway=apron
+ aeroway=gate: DE:Tag:aeroway=gate
+ aeroway=hangar: DE:Tag:aeroway=hangar
aeroway=helipad: DE:Tag:aeroway=helipad
+ aeroway=runway: DE:Tag:aeroway=runway
+ aeroway=taxiway: DE:Tag:aeroway=taxiway
+ aeroway=terminal: DE:Tag:aeroway=terminal
+ airmark=beacon: DE:Tag:airmark=beacon
amenity=administration: DE:Tag:amenity=administration
amenity=animal_boarding: DE:Tag:amenity=animal boarding
amenity=animal_shelter: DE:Tag:amenity=animal shelter
amenity=bench: DE:Tag:amenity=bench
amenity=bicycle_parking: DE:Tag:amenity=bicycle parking
amenity=bicycle_rental: DE:Tag:amenity=bicycle rental
+ amenity=bicycle_repair_station: DE:Tag:amenity=bicycle repair station
amenity=biergarten: DE:Tag:amenity=biergarten
amenity=brothel: DE:Tag:amenity=brothel
amenity=bureau_de_change: DE:Tag:amenity=bureau de change
amenity=car_rental: DE:Tag:amenity=car rental
amenity=car_sharing: DE:Tag:amenity=car sharing
amenity=car_wash: DE:Tag:amenity=car wash
+ amenity=casino: DE:Tag:amenity=casino
amenity=charging_station: DE:Tag:amenity=charging station
amenity=cinema: DE:Tag:amenity=cinema
amenity=clock: DE:Tag:amenity=clock
+ amenity=community_centre: DE:Tag:amenity=community centre
amenity=compressed_air: DE:Tag:amenity=compressed air
+ amenity=conference_centre: DE:Tag:amenity=conference centre
amenity=courthouse: DE:Tag:amenity=courthouse
amenity=crematorium: DE:Tag:amenity=crematorium
amenity=customs: DE:Tag:amenity=customs
+ amenity=dancing_school: DE:Tag:amenity=dancing school
+ amenity=dentist: DE:Tag:amenity=dentist
+ amenity=dive_centre: DE:Tag:amenity=dive centre
+ amenity=doctors: DE:Tag:amenity=doctors
amenity=drinking_water: DE:Tag:amenity=drinking water
amenity=driving_school: DE:Tag:amenity=driving school
amenity=embassy: DE:Tag:amenity=embassy
amenity=emergency_phone: DE:Tag:amenity=emergency phone
+ amenity=exhibition_centre: DE:Tag:amenity=exhibition centre
amenity=fast_food: DE:Tag:amenity=fast food
amenity=ferry_terminal: DE:Tag:amenity=ferry terminal
+ amenity=fire_hydrant: DE:Tag:amenity=fire hydrant
amenity=fire_station: DE:Tag:amenity=fire station
+ amenity=fish_spa: DE:Tag:amenity=fish spa
amenity=fountain: DE:Tag:amenity=fountain
amenity=fuel: DE:Tag:amenity=fuel
amenity=grave_yard: DE:Tag:amenity=grave yard
amenity=kneipp_water_cure: DE:Tag:amenity=kneipp water cure
amenity=library: DE:Tag:amenity=library
amenity=marketplace: DE:Tag:amenity=marketplace
+ amenity=medical_supply: DE:Tag:amenity=medical supply
+ amenity=monastery: DE:Tag:amenity=monastery
amenity=motorcycle_parking: DE:Tag:amenity=motorcycle parking
amenity=nightclub: DE:Tag:amenity=nightclub
amenity=nursing_home: DE:Tag:amenity=nursing home
amenity=post_box: DE:Tag:amenity=post box
amenity=post_office: DE:Tag:amenity=post office
amenity=prison: DE:Tag:amenity=prison
+ amenity=prison_camp: DE:Tag:amenity=prison camp
amenity=pub: DE:Tag:amenity=pub
+ amenity=public_bookcase: DE:Tag:amenity=public bookcase
amenity=recycling: DE:Tag:amenity=recycling
amenity=register_office: DE:Tag:amenity=register office
+ amenity=research_institute: DE:Tag:amenity=research institute
amenity=restaurant: DE:Tag:amenity=restaurant
amenity=school: DE:Tag:amenity=school
amenity=shelter: DE:Tag:amenity=shelter
+ amenity=shower: DE:Tag:amenity=shower
amenity=social_facility: DE:Tag:amenity=social facility
amenity=studio: DE:Tag:amenity=studio
amenity=taxi: DE:Tag:amenity=taxi
amenity=theatre: DE:Tag:amenity=theatre
amenity=toilets: DE:Tag:amenity=toilets
amenity=townhall: DE:Tag:amenity=townhall
+ amenity=trolley_bay: DE:Tag:amenity=trolley bay
amenity=university: DE:Tag:amenity=university
+ amenity=vehicle_inspection: DE:Tag:amenity=vehicle inspection
amenity=vending_machine: DE:Tag:amenity=vending machine
amenity=veterinary: DE:Tag:amenity=veterinary
amenity=waste_basket: DE:Tag:amenity=waste basket
amenity=watering_place: DE:Tag:amenity=watering place
+ amenity=weighbridge: DE:Tag:amenity=weighbridge
+ amenity=youth_centre: DE:Tag:amenity=youth centre
atm=yes: DE:Tag:atm=yes
barrier=bollard: DE:Tag:barrier=bollard
barrier=cattle_grid: DE:Tag:barrier=cattle grid
+ barrier=city_wall: DE:Tag:barrier=city wall
barrier=cycle_barrier: DE:Tag:barrier=cycle barrier
barrier=fence: DE:Tag:barrier=fence
barrier=gate: DE:Tag:barrier=gate
barrier=toll_booth: DE:Tag:barrier=toll booth
barrier=wall: DE:Tag:barrier=wall
bicycle=designated: DE:Tag:bicycle=designated
+ bicycle=use_sidepath: DE:Tag:bicycle=use sidepath
biosphärenwirt=yes: DE:Tag:biosphärenwirt=yes
boundary=national_park: DE:Tag:boundary=national park
+ boundary=postal_code: DE:Tag:boundary=postal code
boundary=protected_area: DE:Tag:boundary=protected area
boundary=water_protection_area: DE:Tag:boundary=water protection area
+ bridge:movable=bascule: DE:Tag:bridge:movable=bascule
+ bridge:movable=drawbridge: DE:Tag:bridge:movable=drawbridge
+ bridge:movable=lift: DE:Tag:bridge:movable=lift
+ bridge:movable=submersible: DE:Tag:bridge:movable=submersible
+ bridge:movable=swing: DE:Tag:bridge:movable=swing
+ bridge:movable=transporter: DE:Tag:bridge:movable=transporter
+ bridge:structure=arch: DE:Tag:bridge:structure=arch
+ bridge:structure=beam: DE:Tag:bridge:structure=beam
+ bridge:structure=cable-stayed: DE:Tag:bridge:structure=cable-stayed
+ bridge:structure=floating: DE:Tag:bridge:structure=floating
+ bridge:structure=humpback: DE:Tag:bridge:structure=humpback
+ bridge:structure=suspension: DE:Tag:bridge:structure=suspension
+ bridge:structure=truss: DE:Tag:bridge:structure=truss
+ bridge=aqueduct: DE:Tag:bridge=aqueduct
+ bridge=boardwalk: DE:Tag:bridge=boardwalk
+ bridge=cantilever: DE:Tag:bridge=cantilever
+ bridge=covered: DE:Tag:bridge=covered
+ bridge=trestle: DE:Tag:bridge=trestle
+ bridge=viaduct: DE:Tag:bridge=viaduct
+ building=apartments: DE:Tag:building=apartments
building=barn: DE:Tag:building=barn
+ building=cathedral: DE:Tag:building=cathedral
+ building=chapel: DE:Tag:building=chapel
+ building=church: DE:Tag:building=church
+ building=commercial: DE:Tag:building=commercial
+ building=detached: DE:Tag:building=detached
+ building=dormitory: DE:Tag:building=dormitory
building=entrance: DE:Tag:building=entrance
building=garage: DE:Tag:building=garage
building=garages: DE:Tag:building=garages
+ building=greenhouse: DE:Tag:building=greenhouse
+ building=hospital: DE:Tag:building=hospital
+ building=hotel: DE:Tag:building=hotel
+ building=house: DE:Tag:building=house
+ building=houseboat: DE:Tag:building=houseboat
building=industrial: DE:Tag:building=industrial
+ building=public: DE:Tag:building=public
+ building=residential: DE:Tag:building=residential
+ building=retail: DE:Tag:building=retail
building=roof: DE:Tag:building=roof
building=school: DE:Tag:building=school
building=stable: DE:Tag:building=stable
+ building=sty: DE:Tag:building=sty
+ building=tech_cab: DE:Tag:building=tech cab
+ building=terrace: DE:Tag:building=terrace
+ bunker_type=hardened_aircraft_shelter: DE:Tag:bunker type=hardened aircraft shelter
+ bunker_type=pillbox: DE:Tag:bunker type=pillbox
+ castle_type=castrum: DE:Tag:castle type=castrum
+ castle_type=defensive: DE:Tag:castle type=defensive
+ castle_type=fortress: DE:Tag:castle type=fortress
+ castle_type=manor: DE:Tag:castle type=manor
+ castle_type=palace: DE:Tag:castle type=palace
+ castle_type=stately: DE:Tag:castle type=stately
+ cemetery=grave: DE:Tag:cemetery=grave
+ club=automobile: DE:Tag:club=automobile
+ club=fan: DE:Tag:club=fan
+ club=scout: DE:Tag:club=scout
+ club=sport: DE:Tag:club=sport
craft=agricultural_engines: DE:Tag:craft=agricultural engines
+ craft=basket_maker: DE:Tag:craft=basket maker
+ craft=beekeeper: DE:Tag:craft=beekeeper
+ craft=boatbuilder: DE:Tag:craft=boatbuilder
+ craft=bookbinder: DE:Tag:craft=bookbinder
craft=car_repair: DE:Tag:craft=car repair
+ craft=carpenter: DE:Tag:craft=carpenter
+ craft=carpet_layer: DE:Tag:craft=carpet layer
+ craft=distillery: DE:Tag:craft=distillery
+ craft=dressmaker: DE:Tag:craft=dressmaker
+ craft=electrican: DE:Tag:craft=electrican
+ craft=electrician: DE:Tag:craft=electrician
+ craft=floorer: DE:Tag:craft=floorer
+ craft=gardener: DE:Tag:craft=gardener
+ craft=handicraft: DE:Tag:craft=handicraft
craft=hvac: DE:Tag:craft=hvac
craft=information_electronics: DE:Tag:craft=information electronics
+ craft=joiner: DE:Tag:craft=joiner
craft=metal_construction: DE:Tag:craft=metal construction
craft=on_street: DE:Tag:craft=on street
craft=optician: DE:Tag:craft=optician
+ craft=organ_builder: DE:Tag:craft=organ builder
craft=painter: DE:Tag:craft=painter
craft=paperhanger: DE:Tag:craft=paperhanger
+ craft=parquet_layer: DE:Tag:craft=parquet layer
+ craft=photographer: DE:Tag:craft=photographer
craft=plumber: DE:Tag:craft=plumber
+ craft=roofer: DE:Tag:craft=roofer
+ craft=saddler: DE:Tag:craft=saddler
craft=sawmill: DE:Tag:craft=sawmill
craft=scaffolder: DE:Tag:craft=scaffolder
+ craft=shoemaker: DE:Tag:craft=shoemaker
craft=stonemason: DE:Tag:craft=stonemason
+ craft=tiler: DE:Tag:craft=tiler
+ craft=tinsmith: DE:Tag:craft=tinsmith
+ craft=upholsterer: DE:Tag:craft=upholsterer
+ craft=watchmaker: DE:Tag:craft=watchmaker
+ craft=winery: DE:Tag:craft=winery
cuisine=coffee_shop: DE:Tag:cuisine=coffee shop
- disused=yes: DE:Tag:disused=yes
+ cycleway=lane: DE:Tag:cycleway=lane
+ cycleway=share_busway: DE:Tag:cycleway=share busway
+ cycleway=track: DE:Tag:cycleway=track
+ defensive=bergfried: DE:Tag:defensive=bergfried
+ defensive=donjon: DE:Tag:defensive=donjon
+ defensive=keep: DE:Tag:defensive=keep
+ emergency=access_point: DE:Tag:emergency=access point
emergency=aed: DE:Tag:emergency=aed
emergency=ambulance_station: DE:Tag:emergency=ambulance station
emergency=assembly_point: DE:Tag:emergency=assembly point
emergency=water_rescue_station: DE:Tag:emergency=water rescue station
foot=designated: DE:Tag:foot=designated
footway=sidewalk: DE:Tag:footway=sidewalk
+ generator:method=anaerobic_digestion: DE:Tag:generator:method=anaerobic digestion
generator:method=barrage: DE:Tag:generator:method=barrage
+ generator:method=combustion: DE:Tag:generator:method=combustion
+ generator:method=fission: DE:Tag:generator:method=fission
+ generator:method=fusion: DE:Tag:generator:method=fusion
+ generator:method=gasification: DE:Tag:generator:method=gasification
generator:method=photovoltaic: DE:Tag:generator:method=photovoltaic
generator:method=run-of-the-river: DE:Tag:generator:method=run-of-the-river
+ generator:method=stream: DE:Tag:generator:method=stream
generator:method=thermal: DE:Tag:generator:method=thermal
generator:method=water-pumped-storage: DE:Tag:generator:method=water-pumped-storage
generator:method=water-storage: DE:Tag:generator:method=water-storage
+ generator:method=wind_turbine: DE:Tag:generator:method=wind turbine
+ generator:source=biofuel: DE:Tag:generator:source=biofuel
+ generator:source=biogas: DE:Tag:generator:source=biogas
+ generator:source=biomass: DE:Tag:generator:source=biomass
+ generator:source=coal: DE:Tag:generator:source=coal
generator:source=gas: DE:Tag:generator:source=gas
generator:source=geothermal: DE:Tag:generator:source=geothermal
generator:source=hydro: DE:Tag:generator:source=hydro
generator:source=nuclear: DE:Tag:generator:source=nuclear
generator:source=solar: DE:Tag:generator:source=solar
generator:source=tidal: DE:Tag:generator:source=tidal
+ generator:source=waste: DE:Tag:generator:source=waste
generator:source=wave: DE:Tag:generator:source=wave
generator:source=wind: DE:Tag:generator:source=wind
+ generator:type=combined_cycle: DE:Tag:generator:type=combined cycle
generator:type=francis_turbine: DE:Tag:generator:type=francis turbine
generator:type=gas_turbine: DE:Tag:generator:type=gas turbine
+ generator:type=heat_pump: DE:Tag:generator:type=heat pump
generator:type=horizontal_axis: DE:Tag:generator:type=horizontal axis
generator:type=hydrodynamic_screw: DE:Tag:generator:type=hydrodynamic screw
generator:type=kaplan_turbine: DE:Tag:generator:type=kaplan turbine
generator:type=solar_photovoltaic_panel: DE:Tag:generator:type=solar photovoltaic
panel
generator:type=solar_thermal_collector: DE:Tag:generator:type=solar thermal collector
+ generator:type=steam_generator: DE:Tag:generator:type=steam generator
generator:type=steam_turbine: DE:Tag:generator:type=steam turbine
generator:type=vertical_axis: DE:Tag:generator:type=vertical axis
geological=moraine: DE:Tag:geological=moraine
geological=outcrop: DE:Tag:geological=outcrop
geological=palaeontological_site: DE:Tag:geological=palaeontological site
+ highway=abandoned: DE:Tag:highway=abandoned
+ highway=access: DE:Tag:highway=access
highway=bridleway: DE:Tag:highway=bridleway
highway=bus_guideway: DE:Tag:highway=bus guideway
highway=bus_stop: DE:Tag:highway=bus stop
+ highway=byway: DE:Tag:highway=byway
+ highway=centre_line: DE:Tag:highway=centre line
highway=crossing: DE:Tag:highway=crossing
highway=cycleway: DE:Tag:highway=cycleway
+ highway=disused: DE:Tag:highway=disused
+ highway=door: DE:Tag:highway=door
highway=elevator: DE:Tag:highway=elevator
highway=emergency_access_point: DE:Tag:highway=emergency access point
+ highway=emergency_bay: DE:Tag:highway=emergency bay
+ highway=escape: DE:Tag:highway=escape
highway=footway: DE:Tag:highway=footway
highway=give_way: DE:Tag:highway=give way
+ highway=kerb: DE:Tag:highway=kerb
highway=living_street: DE:Tag:highway=living street
highway=mini_roundabout: DE:Tag:highway=mini roundabout
highway=motorway: DE:Tag:highway=motorway
highway=motorway_junction: DE:Tag:highway=motorway junction
highway=motorway_link: DE:Tag:highway=motorway link
+ highway=no: DE:Tag:highway=no
highway=path: DE:Tag:highway=path
highway=pedestrian: DE:Tag:highway=pedestrian
+ highway=planned: DE:Tag:highway=planned
highway=platform: DE:Tag:highway=platform
highway=primary: DE:Tag:highway=primary
highway=primary_link: DE:Tag:highway=primary link
highway=raceway: DE:Tag:highway=raceway
+ highway=razed: DE:Tag:highway=razed
highway=residential: DE:Tag:highway=residential
highway=rest_area: DE:Tag:highway=rest area
highway=road: DE:Tag:highway=road
+ highway=rural: DE:Tag:highway=rural
highway=secondary: DE:Tag:highway=secondary
highway=service: DE:Tag:highway=service
highway=services: DE:Tag:highway=services
highway=speed_camera: DE:Tag:highway=speed camera
highway=steps: DE:Tag:highway=steps
highway=street_lamp: DE:Tag:highway=street lamp
+ highway=street_light: DE:Tag:highway=street light
highway=tertiary: DE:Tag:highway=tertiary
highway=track: DE:Tag:highway=track
+ highway=traffic_sign: DE:Tag:highway=traffic sign
highway=traffic_signals: DE:Tag:highway=traffic signals
highway=trunk: DE:Tag:highway=trunk
highway=trunk_link: DE:Tag:highway=trunk link
highway=turning_circle: DE:Tag:highway=turning circle
+ highway=turning_loop: DE:Tag:highway=turning loop
highway=unclassified: DE:Tag:highway=unclassified
+ highway=unknown: DE:Tag:highway=unknown
+ highway=yes: DE:Tag:highway=yes
historic=aircraft: DE:Tag:historic=aircraft
historic=archaeological_site: DE:Tag:historic=archaeological site
+ historic=battlefield: DE:Tag:historic=battlefield
historic=boundary_stone: DE:Tag:historic=boundary stone
historic=castle: DE:Tag:historic=castle
historic=city_gate: DE:Tag:historic=city gate
historic=mine: DE:Tag:historic=mine
historic=monastery: DE:Tag:historic=monastery
historic=monument: DE:Tag:historic=monument
+ historic=optical_telegraph: DE:Tag:historic=optical telegraph
historic=pillory: DE:Tag:historic=pillory
historic=rune_stone: DE:Tag:historic=rune stone
historic=ship: DE:Tag:historic=ship
historic=wayside_shrine: DE:Tag:historic=wayside shrine
historic=wreck: DE:Tag:historic=wreck
horse=designated: DE:Tag:horse=designated
+ information=guidepost: DE:Tag:information=guidepost
+ information=map: DE:Tag:information=map
junction=roundabout: DE:Tag:junction=roundabout
landuse=allotments: DE:Tag:landuse=allotments
+ landuse=aquaculture: DE:Tag:landuse=aquaculture
landuse=basin: DE:Tag:landuse=basin
landuse=brownfield: DE:Tag:landuse=brownfield
landuse=cemetery: DE:Tag:landuse=cemetery
landuse=garages: DE:Tag:landuse=garages
landuse=grass: DE:Tag:landuse=grass
landuse=greenfield: DE:Tag:landuse=greenfield
+ landuse=greenhouse_horticulture: DE:Tag:landuse=greenhouse horticulture
landuse=industrial: DE:Tag:landuse=industrial
landuse=landfill: DE:Tag:landuse=landfill
landuse=meadow: DE:Tag:landuse=meadow
landuse=quarry: DE:Tag:landuse=quarry
landuse=railway: DE:Tag:landuse=railway
landuse=recreation_ground: DE:Tag:landuse=recreation ground
+ landuse=religious: DE:Tag:landuse=religious
landuse=reservoir: DE:Tag:landuse=reservoir
landuse=residential: DE:Tag:landuse=residential
landuse=retail: DE:Tag:landuse=retail
landuse=salt_pond: DE:Tag:landuse=salt pond
landuse=village_green: DE:Tag:landuse=village green
landuse=vineyard: DE:Tag:landuse=vineyard
+ leaf_type=broadleaved: DE:Tag:leaf type=broadleaved
+ leaf_type=leafless: DE:Tag:leaf type=leafless
+ leaf_type=mixed: DE:Tag:leaf type=mixed
+ leaf_type=needleleaved: DE:Tag:leaf type=needleleaved
+ leisure=adult_gaming_centre: DE:Tag:leisure=adult gaming centre
leisure=beach_resort: DE:Tag:leisure=beach resort
+ leisure=bowling_alley: DE:Tag:leisure=bowling alley
leisure=dog_park: DE:Tag:leisure=dog park
+ leisure=firepit: DE:Tag:leisure=firepit
+ leisure=fish_spa: DE:Tag:leisure=fish spa
+ leisure=fitness_centre: DE:Tag:leisure=fitness centre
leisure=foot_bath: DE:Tag:leisure=foot bath
leisure=garden: DE:Tag:leisure=garden
leisure=golf_course: DE:Tag:leisure=golf course
leisure=miniature_golf: DE:Tag:leisure=miniature golf
leisure=nature_reserve: DE:Tag:leisure=nature reserve
leisure=park: DE:Tag:leisure=park
+ leisure=picnic_table: DE:Tag:leisure=picnic table
leisure=pitch: DE:Tag:leisure=pitch
leisure=playground: DE:Tag:leisure=playground
+ leisure=sauna: DE:Tag:leisure=sauna
leisure=slipway: DE:Tag:leisure=slipway
leisure=sports_centre: DE:Tag:leisure=sports centre
leisure=stadium: DE:Tag:leisure=stadium
leisure=swimming_pool: DE:Tag:leisure=swimming pool
+ leisure=table_tennis_table: DE:Tag:leisure=table tennis table
+ leisure=tanning_salon: DE:Tag:leisure=tanning salon
leisure=track: DE:Tag:leisure=track
leisure=water_park: DE:Tag:leisure=water park
+ level_crossing=automatic_barrier: DE:Tag:level crossing=automatic barrier
+ level_crossing=traffic_signals: DE:Tag:level crossing=traffic signals
level_crossing=uncontrolled: DE:Tag:level crossing=uncontrolled
+ man_made=MDF: DE:Tag:man made=MDF
man_made=adit: DE:Tag:man made=adit
+ man_made=antenna: DE:Tag:man made=antenna
man_made=breakwater: DE:Tag:man made=breakwater
man_made=bunker_silo: DE:Tag:man made=bunker silo
+ man_made=cellar_entrance: DE:Tag:man made=cellar entrance
+ man_made=chimney: DE:Tag:man made=chimney
man_made=communications_tower: DE:Tag:man made=communications tower
man_made=crane: DE:Tag:man made=crane
man_made=cutline: DE:Tag:man made=cutline
man_made=dyke: DE:Tag:man made=dyke
man_made=embankment: DE:Tag:man made=embankment
+ man_made=flagpole: DE:Tag:man made=flagpole
man_made=gasometer: DE:Tag:man made=gasometer
man_made=groyne: DE:Tag:man made=groyne
man_made=lighthouse: DE:Tag:man made=lighthouse
man_made=mast: DE:Tag:man made=mast
man_made=mineshaft: DE:Tag:man made=mineshaft
+ man_made=monitoring_station: DE:Tag:man made=monitoring station
man_made=offshore_platform: DE:Tag:man made=offshore platform
man_made=petroleum_well: DE:Tag:man made=petroleum well
man_made=pier: DE:Tag:man made=pier
man_made=windmill: DE:Tag:man made=windmill
man_made=works: DE:Tag:man made=works
microbrewery=yes: DE:Tag:microbrewery=yes
+ military=airfield: DE:Tag:military=airfield
+ military=barracks: DE:Tag:military=barracks
military=bunker: DE:Tag:military=bunker
+ military=danger_area: DE:Tag:military=danger area
+ military=naval_base: DE:Tag:military=naval base
+ military=nuclear_explosion_site: DE:Tag:military=nuclear explosion site
+ military=range: DE:Tag:military=range
+ military=training_area: DE:Tag:military=training area
natural=arete: DE:Tag:natural=arete
natural=bare_rock: DE:Tag:natural=bare rock
natural=bay: DE:Tag:natural=bay
natural=saddle: DE:Tag:natural=saddle
natural=scree: DE:Tag:natural=scree
natural=scrub: DE:Tag:natural=scrub
+ natural=shingle: DE:Tag:natural=shingle
natural=sinkhole: DE:Tag:natural=sinkhole
natural=spring: DE:Tag:natural=spring
natural=stone: DE:Tag:natural=stone
natural=tree: DE:Tag:natural=tree
+ natural=tree_group: DE:Tag:natural=tree group
natural=tree_row: DE:Tag:natural=tree row
natural=volcano: DE:Tag:natural=volcano
natural=water: DE:Tag:natural=water
natural=wetland: DE:Tag:natural=wetland
natural=wood: DE:Tag:natural=wood
+ network=icn: DE:Tag:network=icn
+ network=iwn: DE:Tag:network=iwn
+ network=lcn: DE:Tag:network=lcn
+ network=lhn: DE:Tag:network=lhn
+ network=lwn: DE:Tag:network=lwn
+ network=ncn: DE:Tag:network=ncn
+ network=nwn: DE:Tag:network=nwn
+ network=rcn: DE:Tag:network=rcn
+ network=rhn: DE:Tag:network=rhn
+ network=rwn: DE:Tag:network=rwn
+ office=employment_agency: DE:Tag:office=employment agency
+ office=estate_agent: DE:Tag:office=estate agent
+ office=insurance: DE:Tag:office=insurance
office=lawyer: DE:Tag:office=lawyer
office=political_party: DE:Tag:office=political party
+ office=travel_agent: DE:Tag:office=travel agent
parking:lane:hgv=on_street: DE:Tag:parking:lane:hgv=on street
pipeline=marker: DE:Tag:pipeline=marker
pipeline=valve: DE:Tag:pipeline=valve
place=archipelago: DE:Tag:place=archipelago
place=city: DE:Tag:place=city
+ place=continent: DE:Tag:place=continent
+ place=country: DE:Tag:place=country
+ place=county: DE:Tag:place=county
place=hamlet: DE:Tag:place=hamlet
place=island: DE:Tag:place=island
+ place=islet: DE:Tag:place=islet
place=isolated_dwelling: DE:Tag:place=isolated dwelling
place=locality: DE:Tag:place=locality
place=neighbourhood: DE:Tag:place=neighbourhood
+ place=state: DE:Tag:place=state
place=suburb: DE:Tag:place=suburb
place=town: DE:Tag:place=town
place=village: DE:Tag:place=village
power=cable: DE:Tag:power=cable
power=cable_distribution_cabinet: DE:Tag:power=cable distribution cabinet
power=generator: DE:Tag:power=generator
+ power=heliostat: DE:Tag:power=heliostat
power=line: DE:Tag:power=line
power=minor_line: DE:Tag:power=minor line
power=plant: DE:Tag:power=plant
power=tower: DE:Tag:power=tower
power=transformer: DE:Tag:power=transformer
public_transport=platform: DE:Tag:public transport=platform
+ public_transport=station: DE:Tag:public transport=station
public_transport=stop_area: DE:Tag:public transport=stop area
public_transport=stop_position: DE:Tag:public transport=stop position
+ pump=manual: DE:Tag:pump=manual
+ pump=powered: DE:Tag:pump=powered
railway=abandoned: DE:Tag:railway=abandoned
+ railway=buffer_stop: DE:Tag:railway=buffer stop
railway=crossing: DE:Tag:railway=crossing
railway=derail: DE:Tag:railway=derail
railway=disused: DE:Tag:railway=disused
+ railway=funicular: DE:Tag:railway=funicular
railway=halt: DE:Tag:railway=halt
railway=level_crossing: DE:Tag:railway=level crossing
+ railway=light_rail: DE:Tag:railway=light rail
railway=monorail: DE:Tag:railway=monorail
+ railway=narrow_gauge: DE:Tag:railway=narrow gauge
railway=platform: DE:Tag:railway=platform
+ railway=preserved: DE:Tag:railway=preserved
railway=rail: DE:Tag:railway=rail
+ railway=railway_crossing: DE:Tag:railway=railway crossing
+ railway=roundhouse: DE:Tag:railway=roundhouse
+ railway=signal: DE:Tag:railway=signal
railway=station: DE:Tag:railway=station
+ railway=stop: DE:Tag:railway=stop
+ railway=subway: DE:Tag:railway=subway
+ railway=subway_entrance: DE:Tag:railway=subway entrance
+ railway=switch: DE:Tag:railway=switch
railway=tram: DE:Tag:railway=tram
railway=tram_stop: DE:Tag:railway=tram stop
railway=turntable: DE:Tag:railway=turntable
+ route=bicycle: DE:Tag:route=bicycle
+ route=bus: DE:Tag:route=bus
route=ferry: DE:Tag:route=ferry
+ route=foot: DE:Tag:route=foot
+ route=hiking: DE:Tag:route=hiking
+ route=horse: DE:Tag:route=horse
+ route=inline_skates: DE:Tag:route=inline skates
+ route=light_rail: DE:Tag:route=light rail
+ route=mtb: DE:Tag:route=mtb
+ route=nordic_walking: DE:Tag:route=nordic walking
+ route=piste: DE:Tag:route=piste
+ route=railway: DE:Tag:route=railway
+ route=road: DE:Tag:route=road
+ route=running: DE:Tag:route=running
route=ski: DE:Tag:route=ski
+ route=subway: DE:Tag:route=subway
+ route=tracks: DE:Tag:route=tracks
+ route=train: DE:Tag:route=train
+ route=tram: DE:Tag:route=tram
+ service=alley: DE:Tag:service=alley
+ service=crossover: DE:Tag:service=crossover
service=driveway: DE:Tag:service=driveway
service=parking_aisle: DE:Tag:service=parking aisle
+ service=siding: DE:Tag:service=siding
+ service=spur: DE:Tag:service=spur
+ service=yard: DE:Tag:service=yard
shelter_type=lean_to: DE:Tag:shelter type=lean to
shop=baby_goods: DE:Tag:shop=baby goods
shop=bag: DE:Tag:shop=bag
shop=bakery: DE:Tag:shop=bakery
shop=beverages: DE:Tag:shop=beverages
shop=bicycle: DE:Tag:shop=bicycle
+ shop=bookmaker: DE:Tag:shop=bookmaker
shop=books: DE:Tag:shop=books
shop=butcher: DE:Tag:shop=butcher
shop=car: DE:Tag:shop=car
shop=car_parts: DE:Tag:shop=car parts
shop=car_repair: DE:Tag:shop=car repair
shop=charity: DE:Tag:shop=charity
+ shop=cheese: DE:Tag:shop=cheese
shop=chemist: DE:Tag:shop=chemist
shop=clothes: DE:Tag:shop=clothes
+ shop=coffee: DE:Tag:shop=coffee
shop=computer: DE:Tag:shop=computer
+ shop=confectionery: DE:Tag:shop=confectionery
shop=convenience: DE:Tag:shop=convenience
shop=copyshop: DE:Tag:shop=copyshop
shop=deli: DE:Tag:shop=deli
+ shop=department_store: DE:Tag:shop=department store
shop=doityourself: DE:Tag:shop=doityourself
shop=dry_cleaning: DE:Tag:shop=dry cleaning
shop=electronics: DE:Tag:shop=electronics
shop=fabric: DE:Tag:shop=fabric
+ shop=farm: DE:Tag:shop=farm
+ shop=fishing: DE:Tag:shop=fishing
shop=florist: DE:Tag:shop=florist
shop=funeral_directors: DE:Tag:shop=funeral directors
+ shop=furniture: DE:Tag:shop=furniture
shop=garden_centre: DE:Tag:shop=garden centre
shop=general: DE:Tag:shop=general
+ shop=gift: DE:Tag:shop=gift
+ shop=greengrocer: DE:Tag:shop=greengrocer
shop=hairdresser: DE:Tag:shop=hairdresser
shop=hardware: DE:Tag:shop=hardware
shop=houseware: DE:Tag:shop=houseware
+ shop=jewelry: DE:Tag:shop=jewelry
shop=kiosk: DE:Tag:shop=kiosk
shop=kitchen: DE:Tag:shop=kitchen
shop=laundry: DE:Tag:shop=laundry
+ shop=locksmith: DE:Tag:shop=locksmith
shop=mall: DE:Tag:shop=mall
shop=medical_supply: DE:Tag:shop=medical supply
shop=newsagent: DE:Tag:shop=newsagent
+ shop=optician: DE:Tag:shop=optician
shop=outdoor: DE:Tag:shop=outdoor
+ shop=pastry: DE:Tag:shop=pastry
+ shop=pet: DE:Tag:shop=pet
shop=photo: DE:Tag:shop=photo
+ shop=seafood: DE:Tag:shop=seafood
shop=shoes: DE:Tag:shop=shoes
shop=spare_parts: DE:Tag:shop=spare parts
shop=stationery: DE:Tag:shop=stationery
shop=supermarket: DE:Tag:shop=supermarket
+ shop=tea: DE:Tag:shop=tea
+ shop=tobacco: DE:Tag:shop=tobacco
shop=toys: DE:Tag:shop=toys
+ shop=trade: DE:Tag:shop=trade
+ shop=tyres: DE:Tag:shop=tyres
shop=vacant: DE:Tag:shop=vacant
shop=variety_store: DE:Tag:shop=variety store
+ shop=watches: DE:Tag:shop=watches
shop=window_blind: DE:Tag:shop=window blind
+ shop=wine: DE:Tag:shop=wine
source=HiRes_aerial_imagery: DE:Tag:source=HiRes aerial imagery
sport=9pin: DE:Tag:sport=9pin
+ sport=bobsleigh: DE:Tag:sport=bobsleigh
sport=climbing: DE:Tag:sport=climbing
+ sport=climbing_adventure: DE:Tag:sport=climbing adventure
sport=free_flying: DE:Tag:sport=free flying
sport=golf: DE:Tag:sport=golf
+ sport=multi: DE:Tag:sport=multi
+ sport=sailing: DE:Tag:sport=sailing
sport=scuba_diving: DE:Tag:sport=scuba diving
+ sport=shooting: DE:Tag:sport=shooting
sport=soccer: DE:Tag:sport=soccer
+ station=light_rail: DE:Tag:station=light rail
+ station=subway: DE:Tag:station=subway
summit:cross=yes: DE:Tag:summit:cross=yes
+ surface=asphalt: DE:Tag:surface=asphalt
tourism=alpine_hut: DE:Tag:tourism=alpine hut
tourism=aquarium: DE:Tag:tourism=aquarium
tourism=artwork: DE:Tag:tourism=artwork
tourism=picnic_site: DE:Tag:tourism=picnic site
tourism=viewpoint: DE:Tag:tourism=viewpoint
tourism=zoo: DE:Tag:tourism=zoo
+ tower:type=bell_tower: DE:Tag:tower:type=bell tower
+ tower:type=bridge: DE:Tag:tower:type=bridge
+ tower:type=communication: DE:Tag:tower:type=communication
+ tower:type=cooling: DE:Tag:tower:type=cooling
+ tower:type=defensive: DE:Tag:tower:type=defensive
+ tower:type=donjon: DE:Tag:tower:type=donjon
+ tower:type=hose: DE:Tag:tower:type=hose
+ tower:type=intake: DE:Tag:tower:type=intake
+ tower:type=lighting: DE:Tag:tower:type=lighting
+ tower:type=monitoring: DE:Tag:tower:type=monitoring
+ tower:type=monument: DE:Tag:tower:type=monument
+ tower:type=observation: DE:Tag:tower:type=observation
+ tower:type=radar: DE:Tag:tower:type=radar
+ tower:type=siren: DE:Tag:tower:type=siren
+ tower:type=watchtower: DE:Tag:tower:type=watchtower
+ vending=animal_feed: DE:Tag:vending=animal feed
vending=bicycle_tube: DE:Tag:vending=bicycle tube
+ vending=candles: DE:Tag:vending=candles
+ vending=excrement_bags: DE:Tag:vending=excrement bags
+ vending=newspapers: DE:Tag:vending=newspapers
+ vending=parcel_pickup;parcel_mail_in: DE:Tag:vending=parcel pickup;parcel mail
+ in
+ vending=public_transport_tickets: DE:Tag:vending=public transport tickets
+ vending=stamps: DE:Tag:vending=stamps
+ waterway=boatyard: DE:Tag:waterway=boatyard
waterway=canal: DE:Tag:waterway=canal
waterway=dam: DE:Tag:waterway=dam
waterway=ditch: DE:Tag:waterway=ditch
waterway=river: DE:Tag:waterway=river
waterway=riverbank: DE:Tag:waterway=riverbank
waterway=stream: DE:Tag:waterway=stream
+ waterway=waterfall: DE:Tag:waterway=waterfall
waterway=weir: DE:Tag:waterway=weir
el:
key:
en:
key:
3dr:type: Key:3dr:type
+ :lanes: Key::lanes
AND_nosr_r: Key:AND nosr r
CEMT: Key:CEMT
DGPS_correction: Key:DGPS correction
+ EH_ref: Key:EH ref
FIXME: Key:FIXME
Fetish: Key:Fetish
+ IBGE:CD_ADMINIS: Key:IBGE:CD ADMINIS
IBGE:GEOCODIGO: Key:IBGE:GEOCODIGO
IBGE:tipo: Key:IBGE:tipo
Lock_ref: Key:Lock ref
WLAN: Key:WLAN
Wikipedia: Key:Wikipedia
abandoned: Key:abandoned
+ abandoned:*: Key:abandoned:*
abutters: Key:abutters
access: Key:access
access:lanes: Key:access:lanes
addr:alternatenumber: Key:addr:alternatenumber
addr:borough: Key:addr:borough
addr:city: Key:addr:city
+ addr:city:de: Key:addr:city:de
+ addr:city:it: Key:addr:city:it
addr:conscriptionnumber: Key:addr:conscriptionnumber
addr:country: Key:addr:country
addr:district: Key:addr:district
addr:floor: Key:addr:floor
addr:full: Key:addr:full
addr:hamlet: Key:addr:hamlet
+ addr:hamlet:de: Key:addr:hamlet:de
+ addr:hamlet:it: Key:addr:hamlet:it
addr:housename: Key:addr:housename
addr:housenumber: Key:addr:housenumber
addr:interpolation: Key:addr:interpolation
addr:place: Key:addr:place
+ addr:place:de: Key:addr:place:de
+ addr:place:it: Key:addr:place:it
addr:postcode: Key:addr:postcode
addr:province: Key:addr:province
addr:provisionalnumber: Key:addr:provisionalnumber
+ addr:region: Key:addr:region
addr:state: Key:addr:state
addr:street: Key:addr:street
+ addr:street:de: Key:addr:street:de
+ addr:street:it: Key:addr:street:it
+ addr:street:name: Key:addr:street:name
+ addr:street:prefix: Key:addr:street:prefix
+ addr:street:type: Key:addr:street:type
addr:streetnumber: Key:addr:streetnumber
addr:subdistrict: Key:addr:subdistrict
addr:suburb: Key:addr:suburb
adr_les: Key:adr les
advertising: Key:advertising
aerialway: Key:aerialway
+ aerodrome: Key:aerodrome
aeroway: Key:aeroway
agricultural: Key:agricultural
airmark: Key:airmark
alt_name: Key:alt name
+ alt_name:en: Key:alt name:en
amenity: Key:amenity
architect: Key:architect
area: Key:area
artwork_type: Key:artwork type
ascent: Key:ascent
asset_ref: Key:asset ref
+ assisted_trail: Key:assisted trail
attribution: Key:attribution
atv: Key:atv
automatic_door: Key:automatic door
beds: Key:beds
bench: Key:bench
bicycle: Key:bicycle
+ bicycle:class:mtb: Key:bicycle:class:mtb
+ bicycle:class:mtb:technical: Key:bicycle:class:mtb:technical
+ bicycle:conditional: Key:bicycle:conditional
bicycle_parking: Key:bicycle parking
bicycle_road: Key:bicycle road
bin: Key:bin
biosphärenwirt: Key:biosphärenwirt
+ biotic_reef: Key:biotic reef
+ biotic_reef:type: Key:biotic reef:type
board_type: Key:board type
boat: Key:boat
bollard: Key:bollard
brand: Key:brand
brewery: Key:brewery
bridge: Key:bridge
+ bridge:alt_name: Key:bridge:alt name
+ bridge:loc_name: Key:bridge:loc name
bridge:movable: Key:bridge:movable
+ bridge:name: Key:bridge:name
+ bridge:official_name: Key:bridge:official name
+ bridge:old_name: Key:bridge:old name
+ bridge:short_name: Key:bridge:short name
bridge:structure: Key:bridge:structure
bridge:support: Key:bridge:support
building: Key:building
+ building:architecture: Key:building:architecture
+ building:colour: Key:building:colour
building:condition: Key:building:condition
building:cullis:height: Key:building:cullis:height
+ building:facade:colour: Key:building:facade:colour
building:fireproof: Key:building:fireproof
building:flats: Key:building:flats
building:height: Key:building:height
building:obm: Key:building:obm
building:part: Key:building:part
building:parts: Key:building:parts
+ building:roof:colour: Key:building:roof:colour
building:type: Key:building:type
+ building:usage:pl: Key:building:usage:pl
bunker_type: Key:bunker type
bus: Key:bus
busway: Key:busway
+ busway:left: Key:busway:left
+ busway:right: Key:busway:right
button_operated: Key:button operated
+ cable_number: Key:cable number
cables: Key:cables
+ cafe: Key:cafe
capacity: Key:capacity
capacity:disabled: Key:capacity:disabled
capital: Key:capital
castle_type: Key:castle type
castle_type:cs: Key:castle type:cs
castle_type:de: Key:castle type:de
+ cemetery: Key:cemetery
cemt: Key:cemt
center_turn_lane: Key:center turn lane
centralkey: Key:centralkey
centre_turn_lane: Key:centre turn lane
cep: Key:cep
+ change: Key:change
check_date: Key:check date
checkpoint: Key:checkpoint
circuits: Key:circuits
circumference: Key:circumference
+ class:bicycle: Key:class:bicycle
+ class:bicycle:commute: Key:class:bicycle:commute
+ class:bicycle:mtb: Key:class:bicycle:mtb
+ class:bicycle:mtb:technical: Key:class:bicycle:mtb:technical
+ class:bicycle:non_experienced: Key:class:bicycle:non experienced
+ class:bicycle:roadcycling: Key:class:bicycle:roadcycling
+ class:bicycle:touring: Key:class:bicycle:touring
+ class:bicycle:trailer: Key:class:bicycle:trailer
clli: Key:clli
clothes: Key:clothes
club: Key:club
club-mate: Key:club-mate
coastline:survey_quality: Key:coastline:survey quality
+ cocktails: Key:cocktails
collection_times: Key:collection times
+ colonnade: Key:colonnade
color: Key:color
colour: Key:colour
comment: Key:comment
common_good_land: Key:common good land
+ communication:mobile_phone: Key:communication:mobile phone
+ communication:radio: Key:communication:radio
+ communication:television: Key:communication:television
conditional: Key:conditional
construction: Key:construction
construction_end_expected: Key:construction end expected
contact:email: Key:contact:email
contact:facebook: Key:contact:facebook
contact:fax: Key:contact:fax
+ contact:google_plus: Key:contact:google plus
+ contact:linkedin: Key:contact:linkedin
contact:phone: Key:contact:phone
contact:twitter: Key:contact:twitter
contact:vhf: Key:contact:vhf
contact:webcam: Key:contact:webcam
contact:website: Key:contact:website
+ contact:xing: Key:contact:xing
content: Key:content
conveying: Key:conveying
country: Key:country
cycleway:both: Key:cycleway:both
cycleway:buffer: Key:cycleway:buffer
cycleway:left: Key:cycleway:left
+ cycleway:left=backward: Key:cycleway:left=backward
cycleway:right: Key:cycleway:right
+ cycleway:right=forward: Key:cycleway:right=forward
de:amtlicher_gemeindeschluessel: Key:de:amtlicher gemeindeschluessel
- de:regionalschluessel: Key:de:regionalschluessel
+ de:strassenschluessel: Key:de:strassenschluessel
deanery: Key:deanery
+ dehoga: Key:dehoga
delivery: Key:delivery
denomination: Key:denomination
denotation: Key:denotation
diaper: Key:diaper
diet: Key:diet
diet:*: Key:diet:*
+ diet:dairy_free: Key:diet:dairy free
diet:gluten_free: Key:diet:gluten free
diet:lactose_free: Key:diet:lactose free
diet:vegan: Key:diet:vegan
dispensing: Key:dispensing
distance: Key:distance
disused: Key:disused
- disused:amenity: Key:disused:amenity
- disused:shop: Key:disused:shop
+ 'disused:': 'Key:disused:'
+ dominant_taxon: Key:dominant taxon
+ door: Key:door
drink: Key:drink
drink:afri-cola: Key:drink:afri-cola
drink:club-mate: Key:drink:club-mate
escalator: Key:escalator
esperanto: Key:esperanto
est_width: Key:est width
+ etymology: Key:etymology
european_cultural_path: Key:european cultural path
exit: Key:exit
exit_to: Key:exit to
expressway: Key:expressway
facebook: Key:facebook
fair_trade: Key:fair trade
+ fast_food: Key:fast food
fax: Key:fax
fee: Key:fee
female: Key:female
fenced: Key:fenced
ferry: Key:ferry
fetish: Key:fetish
+ fhrs:id: Key:fhrs:id
+ fire_boundary: Key:fire boundary
+ fire_object:type: Key:fire object:type
+ fire_operator: Key:fire operator
+ fire_rank: Key:fire rank
+ fireplace: Key:fireplace
fishing: Key:fishing
fixme: Key:fixme
flood_prone: Key:flood prone
footway: Key:footway
ford: Key:ford
forestry: Key:forestry
- fork: Key:fork
format: Key:format
forward: Key:forward
frequency: Key:frequency
fuel:diesel: Key:fuel:diesel
fuel:discount: Key:fuel:discount
fuel:e10: Key:fuel:e10
+ fuel:e20: Key:fuel:e20
fuel:e85: Key:fuel:e85
fuel:electricity: Key:fuel:electricity
fuel:ethanol: Key:fuel:ethanol
gauge: Key:gauge
generator:method: Key:generator:method
generator:output: Key:generator:output
+ generator:output:biogas: Key:generator:output:biogas
generator:output:electricity: Key:generator:output:electricity
+ generator:output:heat: Key:generator:output:heat
generator:output:hot_air: Key:generator:output:hot air
generator:output:hot_water: Key:generator:output:hot water
generator:output:steam: Key:generator:output:steam
generator:source: Key:generator:source
generator:type: Key:generator:type
genus: Key:genus
+ genus:de: Key:genus:de
geocodigo: Key:geocodigo
geological: Key:geological
gluten_free: Key:gluten free
gvr:code: Key:gvr:code
habitat: Key:habitat
handrail: Key:handrail
+ happy_hours: Key:happy hours
harbour: Key:harbour
- harbour:access:swell: Key:harbour:access:swell
- harbour:access:tide: Key:harbour:access:tide
harbour:category: Key:harbour:category
- harbour:main: Key:harbour:main
hazard_intensity: Key:hazard intensity
hazard_occurence: Key:hazard occurence
hazard_occurrence: Key:hazard occurrence
hazmat: Key:hazmat
hazmat:water: Key:hazmat:water
healthcare: Key:healthcare
+ healthcare:speciality: Key:healthcare:speciality
height: Key:height
hgv: Key:hgv
highway: Key:highway
historic:civilization: Key:historic:civilization
historic:era: Key:historic:era
historic:period: Key:historic:period
- historic_Garrigues: Key:historic Garrigues
+ historic_name: Key:historic name
history: Key:history
horse: Key:horse
hour_off: Key:hour off
hour_on: Key:hour on
hov: Key:hov
+ hov:lanes: Key:hov:lanes
iata: Key:iata
icao: Key:icao
ice_road: Key:ice road
image: Key:image
+ imagery_offset: Key:imagery offset
+ imagery_used: Key:imagery used
importance: Key:importance
+ impromptu: Key:impromptu
incline: Key:incline
+ indoor: Key:indoor
informal: Key:informal
information: Key:information
inline_skates: Key:inline skates
inscription: Key:inscription
int_name: Key:int name
+ int_ref: Key:int ref
intermittent: Key:intermittent
internet: Key:internet
internet_access: Key:internet access
+ internet_access:fee: Key:internet access:fee
is_hazard_prone: Key:is hazard prone
is_in: Key:is in
is_in:archipelago: Key:is in:archipelago
kp: Key:kp
label: Key:label
lactose_free: Key:lactose free
+ ladder: Key:ladder
landmark: Key:landmark
landuse: Key:landuse
lane_hint: Key:lane hint
leaf_type: Key:leaf type
left: Key:left
leisure: Key:leisure
+ leisure=beach: Key:leisure=beach
length: Key:length
level: Key:level
lighting:perceived: Key:lighting:perceived
listed_status: Key:listed status
lit: Key:lit
lit:perceived: Key:lit:perceived
+ living_street: Key:living street
loc_name: Key:loc name
loc_ref: Key:loc ref
local_ref: Key:local ref
location: Key:location
lock: Key:lock
lock_name: Key:lock name
+ lock_ref: Key:lock ref
maintained: Key:maintained
maintenance: Key:maintenance
male: Key:male
man_made: Key:man made
managed: Key:managed
manhole: Key:manhole
+ mapillary: Key:mapillary
+ maritime: Key:maritime
massage: Key:massage
material: Key:material
max_age: Key:max age
maxstay: Key:maxstay
maxweight: Key:maxweight
maxwidth: Key:maxwidth
+ maxwidth:physical: Key:maxwidth:physical
+ measurement: Key:measurement
+ megalith_type: Key:megalith type
+ memorial: Key:memorial
military: Key:military
min_age: Key:min age
min_height: Key:min height
monitoring:galileo: Key:monitoring:galileo
monitoring:glonass: Key:monitoring:glonass
monitoring:gps: Key:monitoring:gps
+ monitoring:groundwater: Key:monitoring:groundwater
monitoring:noise: Key:monitoring:noise
monitoring:river_level: Key:monitoring:river level
monitoring:river_levels: Key:monitoring:river levels
mtb:scale:uphill: Key:mtb:scale:uphill
mtb_scale: Key:mtb scale
name: Key:name
+ name:ar: Key:name:ar
+ name:be: Key:name:be
+ name:botanical: Key:name:botanical
+ name:ca: Key:name:ca
name:cs: Key:name:cs
name:cy: Key:name:cy
name:de: Key:name:de
name:en: Key:name:en
name:es: Key:name:es
+ name:etymology: Key:name:etymology
+ name:etymology:wikipedia: Key:name:etymology:wikipedia
name:fi: Key:name:fi
name:fr: Key:name:fr
name:ga: Key:name:ga
name:gd: Key:name:gd
name:it: Key:name:it
name:ja: Key:name:ja
+ name:kn: Key:name:kn
+ name:kn:iso15919: Key:name:kn:iso15919
name:ko: Key:name:ko
name:ko_rm: Key:name:ko rm
name:nl: Key:name:nl
name:pl: Key:name:pl
name:pt: Key:name:pt
name:ru: Key:name:ru
+ name:sl: Key:name:sl
name:sv: Key:name:sv
name:uk: Key:name:uk
narrow: Key:narrow
ncn_milepost: Key:ncn milepost
ncn_ref: Key:ncn ref
network: Key:network
+ noaddress: Key:noaddress
noexit: Key:noexit
noname: Key:noname
not_served_by: Key:not served by
note:ja: Key:note:ja
note:pilotage: Key:note:pilotage
notes: Key:notes
+ nudism: Key:nudism
+ obstacle: Key:obstacle
office: Key:office
official_name: Key:official name
offshore: Key:offshore
openplaques_plaque: Key:openplaques plaque
opensource: Key:opensource
operator: Key:operator
+ operator:MNC: Key:operator:MNC
operator:type: Key:operator:type
organic: Key:organic
origin: Key:origin
osmarender:renderName: Key:osmarender:renderName
osmarender:renderRef: Key:osmarender:renderRef
osmc:symbol: Key:osmc:symbol
+ outdoor_seating: Key:outdoor seating
overtaking: Key:overtaking
overtaking:hgv: Key:overtaking:hgv
owner: Key:owner
parking:condition:side: Key:parking:condition:side
parking:lane: Key:parking:lane
parking:lane:both: Key:parking:lane:both
+ parking:lane:hgv: Key:parking:lane:hgv
parking:lane:left: Key:parking:lane:left
parking:lane:right: Key:parking:lane:right
parking:lane:side: Key:parking:lane:side
pipeline: Key:pipeline
piste:difficulty: Key:piste:difficulty
piste:grooming: Key:piste:grooming
+ piste:ref: Key:piste:ref
piste:type: Key:piste:type
pitlatrine: Key:pitlatrine
pk: Key:pk
playground: Key:playground
police: Key:police
population: Key:population
+ post_box:type: Key:post box:type
post_office:type: Key:post office:type
postal_code: Key:postal code
postcode: Key:postcode
power: Key:power
- power_output: Key:power output
+ power_output: EN:Key:power output
power_rating: Key:power rating
power_source: Key:power source
power_supply: Key:power supply
+ power_supply:schedule: Key:power supply:schedule
previous: Key:previous
previous:access: Key:previous:access
previous:vehicle: Key:previous:vehicle
protection_title: Key:protection title
prow_ref: Key:prow ref
psv: Key:psv
+ public_bookcase:type: Key:public bookcase:type
public_transport: Key:public transport
+ public_transport:version: Key:public transport:version
pump: Key:pump
pyörä_väistää_aina_autoa: Key:pyörä väistää aina autoa
+ raba:id: Key:raba:id
rack: Key:rack
radar_transponder: Key:radar transponder
radar_transponder:sector: Key:radar transponder:sector
radio_transponder:range: Key:radio transponder:range
radio_transponder:signal_frequency: Key:radio transponder:signal frequency
railway: Key:railway
+ railway:preserved: Key:railway:preserved
ramp: Key:ramp
ramp:bicycle: Key:ramp:bicycle
ramp:luggage: Key:ramp:luggage
reef: Key:reef
ref: Key:ref
ref:CEF: Key:ref:CEF
+ ref:De_Lijn: Key:ref:De Lijn
ref:ERDF:gdo: Key:ref:ERDF:gdo
ref:FR:42C: Key:ref:FR:42C
ref:FR:CEF: Key:ref:FR:CEF
ref:FR:FINESS: Key:ref:FR:FINESS
+ ref:FR:MemorialGenWeb: Key:ref:FR:MemorialGenWeb
+ ref:FR:NAF: Key:ref:FR:NAF
+ ref:FR:SIREN: Key:ref:FR:SIREN
ref:FR:SIRET: Key:ref:FR:SIRET
+ ref:IFOPT: Key:ref:IFOPT
ref:INSEE: Key:ref:INSEE
ref:ISTAT: Key:ref:ISTAT
+ ref:TECB: Key:ref:TECB
+ ref:TECC: Key:ref:TECC
+ ref:TECH: Key:ref:TECH
+ ref:TECL: Key:ref:TECL
+ ref:TECN: Key:ref:TECN
+ ref:TECX: Key:ref:TECX
ref:UAI: Key:ref:UAI
ref:at:gkz: Key:ref:at:gkz
ref:at:okz: Key:ref:at:okz
ref:ruian:addr: Key:ref:ruian:addr
ref:ruian:building: Key:ref:ruian:building
ref:sandre: Key:ref:sandre
+ ref:se:scb: Key:ref:se:scb
+ ref:shop:num: Key:ref:shop:num
ref:taskey: Key:ref:taskey
ref:vatin: Key:ref:vatin
ref:vorwahl: Key:ref:vorwahl
ref:wawa: Key:ref:wawa
+ ref_name: Key:ref name
reference: Key:reference
reference_point: Key:reference point
reg_name: Key:reg name
reg_ref: Key:reg ref
religion: Key:religion
- removed: Key:removed
repair: Key:repair
+ repeat_on: Key:repeat on
reservation: Key:reservation
+ residential: Key:residential
resource: Key:resource
retreat: Key:retreat
retroreflecting: Key:retroreflecting
river:waterway_distance: Key:river:waterway distance
road_marking: Key:road marking
roadtrain: Key:roadtrain
+ role: Key:role
+ roof:colour: Key:roof:colour
roof:levels: Key:roof:levels
roof:material: Key:roof:material
room: Key:room
route: Key:route
route_master: Key:route master
route_ref: Key:route ref
+ route_ref:De_Lijn: Key:route ref:De Lijn
+ route_ref:TECB: Key:route ref:TECB
+ route_ref:TECC: Key:route ref:TECC
+ route_ref:TECH: Key:route ref:TECH
+ route_ref:TECL: Key:route ref:TECL
+ route_ref:TECN: Key:route ref:TECN
+ route_ref:TECX: Key:route ref:TECX
royal_cypher: Key:royal cypher
rtc_rate: Key:rtc rate
- rugby: Key:rugby
+ ruined: Key:ruined
ruins: Key:ruins
+ rungs: Key:rungs
rwn_ref: Key:rwn ref
sac_scale: Key:sac scale
+ safety_rope: Key:safety rope
+ safety_rope_side: Key:safety rope side
sagns_id: Key:sagns id
salt: Key:salt
+ sanitary_dump_station: Key:sanitary dump station
+ sanitary_dump_station:fee: Key:sanitary dump station:fee
+ sanitary_dump_station:gravity: Key:sanitary dump station:gravity
+ sanitary_dump_station:suction: Key:sanitary dump station:suction
scenic: Key:scenic
school: Key:school
seamark: Key:seamark
seamark:light:status: Key:seamark:light:status
seamark:light:visibility: Key:seamark:light:visibility
seamark:light_vessel:colour: Key:seamark:light vessel:colour
+ seamark:name: Key:seamark:name
seamark:obstruction:category: Key:seamark:obstruction:category
seamark:pilot_boarding:category: Key:seamark:pilot boarding:category
seamark:pipeline_submarine:category: Key:seamark:pipeline submarine:category
seamark:restricted_area:category: Key:seamark:restricted area:category
seamark:restricted_area:name: Key:seamark:restricted area:name
seamark:restricted_area:restriction: Key:seamark:restricted area:restriction
+ seamark:rock:water_level: Key:seamark:rock:water level
seamark:sea_area:category: Key:seamark:sea area:category
seamark:seabed_area:surface: Key:seamark:seabed area:surface
seamark:shoreline_construction:category: Key:seamark:shoreline construction:category
seamark:small_craft_facility:category: Key:seamark:small craft facility:category
seamark:small_craft_facility:name: Key:seamark:small craft facility:name
+ seamark:type: Key:seamark:type
seasonal: Key:seasonal
seasonal:snowfall:regaintime: Key:seasonal:snowfall:regaintime
second_hand: Key:second hand
segregated: Key:segregated
+ self_service: Key:self service
service: Key:service
service_times: Key:service times
shade: Key:shade
source:loc: Key:source:loc
source:maxspeed: Key:source:maxspeed
source:name: Key:source:name
+ source:position: Key:source:position
+ source:postcode: Key:source:postcode
source:ref: Key:source:ref
- source_ref: Key:source ref
species: Key:species
+ speech_input: Key:speech input
+ speech_input:lg: Key:speech input:lg
speech_output: Key:speech output
speech_output:en: Key:speech output:en
speech_output:lg: Key:speech output:lg
surveillance: Key:surveillance
surveillance:type: Key:surveillance:type
surveillance:zone: Key:surveillance:zone
+ survey:date: Key:survey:date
sustrans_ref: Key:sustrans ref
symbol: Key:symbol
tactile_map: Key:tactile map
taxon: Key:taxon
technology: Key:technology
telecom: Key:telecom
+ tenant: Key:tenant
+ tents: Key:tents
tidal: Key:tidal
tiger: Key:tiger
tiger:cfcc: Key:tiger:cfcc
touring: Key:touring
tourism: Key:tourism
tourist_bus: Key:tourist bus
+ tower:type: Key:tower:type
tracks: Key:tracks
tracktype: Key:tracktype
traffic:hourly: Key:traffic:hourly
uic_name: Key:uic name
uic_ref: Key:uic ref
unisex: Key:unisex
+ unnamed: Key:unnamed
+ unsigned: Key:unsigned
+ unsigned_ref: Key:unsigned ref
url: Key:url
url:restrictions: Key:url:restrictions
usage: Key:usage
vehicle: Key:vehicle
voltage: Key:voltage
waste: Key:waste
+ waste_basket: Key:waste basket
water: Key:water
waterway: Key:waterway
website: Key:website
wheelchair: Key:wheelchair
wholesale: Key:wholesale
width: Key:width
+ wifi: Key:wifi
wiki:symbol: Key:wiki:symbol
wikidata: Key:wikidata
+ wikimedia_commons: Key:wikimedia commons
wikipedia: Key:wikipedia
wikipedia:en: Key:wikipedia:en
winter_road: Key:winter road
wires: Key:wires
woeid: Key:woeid
wood: Key:wood
+ workrules: Key:workrules
www.prezzibenzina.it: Key:www.prezzibenzina.it
xmas:feature: Key:xmas:feature
yh:LINE_NAME: Key:yh:LINE NAME
yh:TOTYUMONO: Key:yh:TOTYUMONO
yh:TYPE: Key:yh:TYPE
yh:WIDTH_RANK: Key:yh:WIDTH RANK
+ zone: Key:zone
zone:maxspeed: Key:zone:maxspeed
zone:traffic: Key:zone:traffic
zoo: Key:zoo
access=designated: Tag:access=designated
access=exclusion_zone: Tag:access=exclusion zone
access=license: Tag:access=license
+ access=no: Tag:access=no
access=official: Tag:access=official
access=private: Tag:access=private
admin_level=1: Tag:admin level=1
admin_level=8: Tag:admin level=8
admin_level=9: Tag:admin level=9
admin_level=aboriginal_land: Tag:admin level=aboriginal land
+ advertising=billboard: Tag:advertising=billboard
+ advertising=column: Tag:advertising=column
aerialway=cable_car: Tag:aerialway=cable car
aerialway=canopy: Tag:aerialway=canopy
aerialway=chair_lift: Tag:aerialway=chair lift
aerialway=rope_tow: Tag:aerialway=rope tow
aerialway=station: Tag:aerialway=station
aerialway=t-bar: Tag:aerialway=t-bar
+ aerialway=zip_line: Tag:aerialway=zip line
aeroway=aerodrome: Tag:aeroway=aerodrome
aeroway=airport: Tag:aeroway=airport
aeroway=apron: Tag:aeroway=apron
allotments=plot: Tag:allotments=plot
amenity=Kneippbecken: Tag:amenity=Kneippbecken
amenity=administration: Tag:amenity=administration
+ amenity=advertising: Tag:amenity=advertising
+ amenity=alm: Tag:amenity=alm
+ amenity=ambulance_station: Tag:amenity=ambulance station
amenity=animal_boarding: Tag:amenity=animal boarding
amenity=animal_breeding: Tag:amenity=animal breeding
amenity=animal_shelter: Tag:amenity=animal shelter
amenity=bench: Tag:amenity=bench
amenity=bicycle_parking: Tag:amenity=bicycle parking
amenity=bicycle_rental: Tag:amenity=bicycle rental
+ amenity=bicycle_repair_station: Tag:amenity=bicycle repair station
amenity=bicycle_trailer_sharing: Tag:amenity=bicycle trailer sharing
amenity=biergarten: Tag:amenity=biergarten
amenity=bikeshed: Tag:amenity=bikeshed
amenity=boat_sharing: Tag:amenity=boat sharing
amenity=boat_storage: Tag:amenity=boat storage
amenity=brothel: Tag:amenity=brothel
+ amenity=bts: Tag:amenity=bts
amenity=bureau_de_change: Tag:amenity=bureau de change
amenity=bus_station: Tag:amenity=bus station
+ amenity=bus_stop: Tag:amenity=bus stop
amenity=cafe: Tag:amenity=cafe
+ amenity=canoe_hire: Tag:amenity=canoe hire
amenity=car_rental: Tag:amenity=car rental
amenity=car_sharing: Tag:amenity=car sharing
amenity=car_wash: Tag:amenity=car wash
amenity=carwash: Tag:amenity=carwash
amenity=casino: Tag:amenity=casino
amenity=charging_station: Tag:amenity=charging station
+ amenity=childcare: Tag:amenity=childcare
amenity=cinema: Tag:amenity=cinema
amenity=clinic: Tag:amenity=clinic
amenity=clock: Tag:amenity=clock
+ amenity=club: Tag:amenity=club
amenity=coast_guard: Tag:amenity=coast guard
amenity=coast_radar_station: Tag:amenity=coast radar station
amenity=college: Tag:amenity=college
amenity=community_center: Tag:amenity=community center
amenity=community_centre: Tag:amenity=community centre
amenity=compressed_air: Tag:amenity=compressed air
+ amenity=conference_centre: Tag:amenity=conference centre
amenity=courthouse: Tag:amenity=courthouse
amenity=coworking_space: Tag:amenity=coworking space
amenity=crematorium: Tag:amenity=crematorium
amenity=crucifix: Tag:amenity=crucifix
amenity=crypt: Tag:amenity=crypt
amenity=customs: Tag:amenity=customs
+ amenity=dancing_school: Tag:amenity=dancing school
amenity=dead_pub: Tag:amenity=dead pub
amenity=dentist: Tag:amenity=dentist
+ amenity=dive_centre: Tag:amenity=dive centre
amenity=doctor: Tag:amenity=doctor
amenity=doctors: Tag:amenity=doctors
+ amenity=dog_bin: Tag:amenity=dog bin
+ amenity=dog_waste_bin: Tag:amenity=dog waste bin
amenity=dojo: Tag:amenity=dojo
amenity=drinking_water: Tag:amenity=drinking water
amenity=driving_school: Tag:amenity=driving school
amenity=embassy: Tag:amenity=embassy
amenity=emergency_phone: Tag:amenity=emergency phone
+ amenity=emergency_service: Tag:amenity=emergency service
amenity=ev_charging: Tag:amenity=ev charging
+ amenity=events_venue: Tag:amenity=events venue
+ amenity=exhibition_centre: Tag:amenity=exhibition centre
amenity=fast_food: Tag:amenity=fast food
amenity=feeding_place: Tag:amenity=feeding place
amenity=ferry_terminal: Tag:amenity=ferry terminal
amenity=festival_grounds: Tag:amenity=festival grounds
+ amenity=financial_advice: Tag:amenity=financial advice
amenity=fire_hydrant: Tag:amenity=fire hydrant
amenity=fire_station: Tag:amenity=fire station
+ amenity=first_aid: Tag:amenity=first aid
amenity=firstaid: Tag:amenity=firstaid
+ amenity=fish_spa: Tag:amenity=fish spa
amenity=fitness_station: Tag:amenity=fitness station
amenity=food_court: Tag:amenity=food court
amenity=fountain: Tag:amenity=fountain
amenity=gym: Tag:amenity=gym
amenity=gym_(Don't_use): Tag:amenity=gym (Don't use)
amenity=harbourmaster: Tag:amenity=harbourmaster
+ amenity=hospice: Tag:amenity=hospice
amenity=hospital: Tag:amenity=hospital
amenity=hunting_stand: Tag:amenity=hunting stand
amenity=ice_cream: Tag:amenity=ice cream
+ amenity=internet_cafe: Tag:amenity=internet cafe
amenity=jail: Tag:amenity=jail
amenity=jobcentre: Tag:amenity=jobcentre
amenity=kindergarten: Tag:amenity=kindergarten
amenity=kiosk: Tag:amenity=kiosk
+ amenity=kitchen: Tag:amenity=kitchen
amenity=kneipp_water_cure: Tag:amenity=kneipp water cure
+ amenity=lavoir: Tag:amenity=lavoir
amenity=library: Tag:amenity=library
amenity=life_ring: Tag:amenity=life ring
amenity=lifeboat_station: Tag:amenity=lifeboat station
+ amenity=loading_dock: Tag:amenity=loading dock
amenity=love_hotel: Tag:amenity=love hotel
amenity=marketplace: Tag:amenity=marketplace
amenity=milk_dispenser: Tag:amenity=milk dispenser
amenity=mobile_library: Tag:amenity=mobile library
+ amenity=monastery: Tag:amenity=monastery
amenity=motorcycle_parking: Tag:amenity=motorcycle parking
amenity=music_venue: Tag:amenity=music venue
+ amenity=nameplate: Tag:amenity=nameplate
amenity=nightclub: Tag:amenity=nightclub
+ amenity=nursery: Tag:amenity=nursery
amenity=nursing_home: Tag:amenity=nursing home
+ amenity=office: Tag:amenity=office
amenity=parking: Tag:amenity=parking
amenity=parking_entrance: Tag:amenity=parking entrance
amenity=parking_space: Tag:amenity=parking space
amenity=police: Tag:amenity=police
amenity=post_box: Tag:amenity=post box
amenity=post_office: Tag:amenity=post office
+ amenity=printer: Tag:amenity=printer
amenity=prison: Tag:amenity=prison
amenity=pub: Tag:amenity=pub
amenity=public_bath: Tag:amenity=public bath
+ amenity=public_bookcase: Tag:amenity=public bookcase
amenity=public_building: Tag:amenity=public building
+ amenity=public_hall: Tag:amenity=public hall
amenity=ranger_station: Tag:amenity=ranger station
+ amenity=reception_desk: Tag:amenity=reception desk
amenity=recycling: Tag:amenity=recycling
+ amenity=refugee_housing: Tag:amenity=refugee housing
amenity=register_office: Tag:amenity=register office
amenity=rescue_box: Tag:amenity=rescue box
+ amenity=rescue_station: Tag:amenity=rescue station
+ amenity=research_institute: Tag:amenity=research institute
amenity=restaurant: Tag:amenity=restaurant
amenity=retirement_home: Tag:amenity=retirement home
+ amenity=sanatorium: Tag:amenity=sanatorium
+ amenity=sanitary_dump_station: Tag:amenity=sanitary dump station
amenity=sauna: Tag:amenity=sauna
amenity=sceptic_tank: Tag:amenity=sceptic tank
amenity=school: Tag:amenity=school
+ amenity=scout_hut: Tag:amenity=scout hut
amenity=security_booth: Tag:amenity=security booth
amenity=septic_tank: Tag:amenity=septic tank
amenity=shelter: Tag:amenity=shelter
amenity=shower: Tag:amenity=shower
+ amenity=ski_school: Tag:amenity=ski school
amenity=smoking_area: Tag:amenity=smoking area
amenity=social_centre: Tag:amenity=social centre
amenity=social_facility: Tag:amenity=social facility
amenity=taxi_point: Tag:amenity=taxi point
amenity=telephone: Tag:amenity=telephone
amenity=theatre: Tag:amenity=theatre
+ amenity=ticket_booth: Tag:amenity=ticket booth
+ amenity=ticket_validator: Tag:amenity=ticket validator
amenity=toilets: Tag:amenity=toilets
amenity=townhall: Tag:amenity=townhall
+ amenity=trolley_bay: Tag:amenity=trolley bay
amenity=university: Tag:amenity=university
+ amenity=vacuum_cleaner: Tag:amenity=vacuum cleaner
+ amenity=vehicle_inspection: Tag:amenity=vehicle inspection
amenity=vending_machine: Tag:amenity=vending machine
amenity=veterinary: Tag:amenity=veterinary
+ amenity=vivarium: Tag:amenity=vivarium
+ amenity=wash_center: Tag:amenity=wash center
amenity=waste_basket: Tag:amenity=waste basket
amenity=waste_disposal: Tag:amenity=waste disposal
amenity=waste_transfer_station: Tag:amenity=waste transfer station
+ amenity=water: Tag:amenity=water
amenity=water_point: Tag:amenity=water point
amenity=watering_place: Tag:amenity=watering place
amenity=weighbridge: Tag:amenity=weighbridge
+ amenity=winery: Tag:amenity=winery
+ amenity=yacht_club: Tag:amenity=yacht club
+ amenity=youth_centre: Tag:amenity=youth centre
aminety=sceptic_tank: Tag:aminety=sceptic tank
atm=no: Tag:atm=no
atm=yes: Tag:atm=yes
+ attraction=animal: Tag:attraction=animal
attraction=maze: Tag:attraction=maze
baby_hatch=yes: Tag:baby hatch=yes
barrier=block: Tag:barrier=block
barrier=fence: Tag:barrier=fence
barrier=gate: Tag:barrier=gate
barrier=guard_rail: Tag:barrier=guard rail
+ barrier=handrail: Tag:barrier=handrail
barrier=hedge: Tag:barrier=hedge
barrier=horse_stile: Tag:barrier=horse stile
barrier=kent_carriage_gap: Tag:barrier=kent carriage gap
boundary=protected_area: Tag:boundary=protected area
boundary=regional_park: Tag:boundary=regional park
boundary=vice_county: Tag:boundary=vice county
- bridge=bascule: Tag:bridge=bascule
+ bridge:movable=bascule: Tag:bridge:movable=bascule
+ bridge:movable=drawbridge: Tag:bridge:movable=drawbridge
+ bridge:movable=lift: Tag:bridge:movable=lift
+ bridge:movable=submersible: Tag:bridge:movable=submersible
+ bridge:movable=swing: Tag:bridge:movable=swing
+ bridge:movable=transporter: Tag:bridge:movable=transporter
+ bridge:structure=arch: Tag:bridge:structure=arch
+ bridge:structure=beam: Tag:bridge:structure=beam
+ bridge:structure=cable-stayed: Tag:bridge:structure=cable-stayed
+ bridge:structure=floating: Tag:bridge:structure=floating
+ bridge:structure=humpback: Tag:bridge:structure=humpback
+ bridge:structure=simple-suspension: Tag:bridge:structure=simple-suspension
+ bridge:structure=suspension: Tag:bridge:structure=suspension
+ bridge:structure=truss: Tag:bridge:structure=truss
+ bridge=aqueduct: Tag:bridge=aqueduct
bridge=beam: Tag:bridge=beam
+ bridge=boardwalk: Tag:bridge=boardwalk
+ bridge=cantilever: Tag:bridge=cantilever
+ bridge=covered: Tag:bridge=covered
bridge=drawbridge: Tag:bridge=drawbridge
- bridge=lift: Tag:bridge=lift
- bridge=opening: Tag:bridge=opening
+ bridge=movable: Tag:bridge=movable
bridge=pontoon: Tag:bridge=pontoon
- bridge=suspension: Tag:bridge=suspension
- bridge=transporter: Tag:bridge=transporter
+ bridge=simple_brunnel: Tag:bridge=simple brunnel
+ bridge=swing: Tag:bridge=swing
+ bridge=trestle: Tag:bridge=trestle
bridge=viaduct: Tag:bridge=viaduct
building:use=stable: Tag:building:use=stable
building=apartments: Tag:building=apartments
building=barn: Tag:building=barn
+ building=brewery: Tag:building=brewery
building=bridge: Tag:building=bridge
building=bunker: Tag:building=bunker
building=cabin: Tag:building=cabin
building=civic: Tag:building=civic
building=commercial: Tag:building=commercial
building=construction: Tag:building=construction
+ building=container: Tag:building=container
building=cowshed: Tag:building=cowshed
building=detached: Tag:building=detached
building=dormitory: Tag:building=dormitory
building=houseboat: Tag:building=houseboat
building=hut: Tag:building=hut
building=industrial: Tag:building=industrial
+ building=kindergarten: Tag:building=kindergarten
building=manufacture: Tag:building=manufacture
building=mosque: Tag:building=mosque
building=office: Tag:building=office
building=residential: Tag:building=residential
building=retail: Tag:building=retail
building=roof: Tag:building=roof
+ building=ruins: Tag:building=ruins
building=school: Tag:building=school
building=shed: Tag:building=shed
+ building=shrine: Tag:building=shrine
building=stable: Tag:building=stable
building=static_caravan: Tag:building=static caravan
building=sty: Tag:building=sty
building=supermarket: Tag:building=supermarket
+ building=synagogue: Tag:building=synagogue
+ building=temple: Tag:building=temple
building=terrace: Tag:building=terrace
building=train_station: Tag:building=train station
building=transformer_tower: Tag:building=transformer tower
building=transportation: Tag:building=transportation
building=university: Tag:building=university
building=warehouse: Tag:building=warehouse
+ bunker_type=hardened_aircraft_shelter: Tag:bunker type=hardened aircraft shelter
bunker_type=munitions: Tag:bunker type=munitions
bunker_type=pillbox: Tag:bunker type=pillbox
+ busway:left=lane: Tag:busway:left=lane
+ busway:right=lane: Tag:busway:right=lane
busway=lane: Tag:busway=lane
busway=opposite_lane: Tag:busway=opposite lane
cafe=time-cafe: Tag:cafe=time-cafe
+ cemetery=grave: Tag:cemetery=grave
clothes=sports: Tag:clothes=sports
+ clothes=underwear: Tag:clothes=underwear
+ club=automobile: Tag:club=automobile
+ club=fan: Tag:club=fan
+ club=scout: Tag:club=scout
+ club=sport: Tag:club=sport
coastline:survey_quality=complete: Tag:coastline:survey quality=complete
coastline:survey_quality=inadequate: Tag:coastline:survey quality=inadequate
craft=agricultural_engines: Tag:craft=agricultural engines
craft=boatbuilder: Tag:craft=boatbuilder
craft=bookbinder: Tag:craft=bookbinder
craft=brewery: Tag:craft=brewery
+ craft=cabinet_maker: Tag:craft=cabinet maker
craft=car_repair: Tag:craft=car repair
craft=carpenter: Tag:craft=carpenter
craft=carpet_layer: Tag:craft=carpet layer
craft=caterer: Tag:craft=caterer
+ craft=chimney_sweeper: Tag:craft=chimney sweeper
craft=clockmaker: Tag:craft=clockmaker
craft=confectionery: Tag:craft=confectionery
+ craft=distillery: Tag:craft=distillery
craft=dressmaker: Tag:craft=dressmaker
+ craft=electrican: Tag:craft=electrican
craft=electrician: Tag:craft=electrician
- craft=falles: Tag:craft=falles
+ craft=floorer: Tag:craft=floorer
craft=gardener: Tag:craft=gardener
craft=glaziery: Tag:craft=glaziery
craft=handicraft: Tag:craft=handicraft
craft=information_electronics: Tag:craft=information electronics
craft=insulation: Tag:craft=insulation
craft=jeweller: Tag:craft=jeweller
+ craft=joiner: Tag:craft=joiner
craft=key_cutter: Tag:craft=key cutter
craft=locksmith: Tag:craft=locksmith
craft=metal_construction: Tag:craft=metal construction
craft=optician: Tag:craft=optician
+ craft=organ_builder: Tag:craft=organ builder
craft=painter: Tag:craft=painter
craft=paperhanger: Tag:craft=paperhanger
craft=parquet_layer: Tag:craft=parquet layer
craft=upholsterer: Tag:craft=upholsterer
craft=watchmaker: Tag:craft=watchmaker
craft=window_construction: Tag:craft=window construction
+ craft=winery: Tag:craft=winery
crop=asparagus: Tag:crop=asparagus
crop=aspargus: Tag:crop=aspargus
crop=bananas: Tag:crop=bananas
crop=barley: Tag:crop=barley
+ crop=cassava: Tag:crop=cassava
crop=coffee: Tag:crop=coffee
crop=corn: Tag:crop=corn
crop=flowers: Tag:crop=flowers
cuisine=brazilian: Tag:cuisine=brazilian
cuisine=brunch: Tag:cuisine=brunch
cuisine=coffee_shop: Tag:cuisine=coffee shop
+ cuisine=dessert: Tag:cuisine=dessert
cycle_network=US:CA:SF: Tag:cycle network=US:CA:SF
+ cycle_network=US:GA: Tag:cycle network=US:GA
+ cycle_network=US:NC: Tag:cycle network=US:NC
cycle_network=US:NM: Tag:cycle network=US:NM
+ cycle_network=US:NY: Tag:cycle network=US:NY
cycle_network=US:OH: Tag:cycle network=US:OH
cycle_network=US:PA: Tag:cycle network=US:PA
cycle_network=US:US: Tag:cycle network=US:US
cycleway=opposite_shared_busway: Tag:cycleway=opposite shared busway
cycleway=share_busway: Tag:cycleway=share busway
cycleway=shared_busway: Tag:cycleway=shared busway
+ dennert_fir_tree=yes: Tag:dennert fir tree=yes
denomination=mormon: Tag:denomination=mormon
denomination=reformed: Tag:denomination=reformed
- denotation=landmark: Tag:denotation=landmark
+ denotation=cluster: Tag:denotation=cluster
dock=drydock: Tag:dock=drydock
dock=floating: Tag:dock=floating
dock=tidal: Tag:dock=tidal
emergency=water_rescue_station: Tag:emergency=water rescue station
emergency=water_tank: Tag:emergency=water tank
emergency_service=technical: Tag:emergency service=technical
+ entrance=staircase: Tag:entrance=staircase
esperanto=esperanto: Tag:esperanto=esperanto
estuary=yes: Tag:estuary=yes
fast_food=cafeteria: Tag:fast food=cafeteria
foot=official: Tag:foot=official
footway=crossing: Tag:footway=crossing
footway=sidewalk: Tag:footway=sidewalk
+ generator:method=anaerobic_digestion: Tag:generator:method=anaerobic digestion
generator:method=barrage: Tag:generator:method=barrage
+ generator:method=combustion: Tag:generator:method=combustion
generator:method=fission: Tag:generator:method=fission
generator:method=fusion: Tag:generator:method=fusion
+ generator:method=gasification: Tag:generator:method=gasification
+ generator:method=photovoltaic: Tag:generator:method=photovoltaic
generator:method=run-of-the-river: Tag:generator:method=run-of-the-river
+ generator:method=stream: Tag:generator:method=stream
generator:method=thermal: Tag:generator:method=thermal
generator:method=water-pumped-storage: Tag:generator:method=water-pumped-storage
generator:method=water-storage: Tag:generator:method=water-storage
+ generator:method=wind_turbine: Tag:generator:method=wind turbine
generator:plant=intermediate: Tag:generator:plant=intermediate
generator:plant=output: Tag:generator:plant=output
+ generator:source=biofuel: Tag:generator:source=biofuel
+ generator:source=biomass: Tag:generator:source=biomass
+ generator:source=coal: Tag:generator:source=coal
generator:source=gas: Tag:generator:source=gas
+ generator:source=gasoline: Tag:generator:source=gasoline
generator:source=geothermal: Tag:generator:source=geothermal
generator:source=hydro: Tag:generator:source=hydro
generator:source=nuclear: Tag:generator:source=nuclear
generator:source=solar: Tag:generator:source=solar
generator:source=tidal: Tag:generator:source=tidal
+ generator:source=waste: Tag:generator:source=waste
generator:source=wave: Tag:generator:source=wave
generator:source=wind: Tag:generator:source=wind
+ generator:type=combined_cycle: Tag:generator:type=combined cycle
generator:type=francis_turbine: Tag:generator:type=francis turbine
generator:type=gas_turbine: Tag:generator:type=gas turbine
+ generator:type=heat_pump: Tag:generator:type=heat pump
generator:type=horizontal_axis: Tag:generator:type=horizontal axis
generator:type=hydrodynamic_screw: Tag:generator:type=hydrodynamic screw
generator:type=kaplan_turbine: Tag:generator:type=kaplan turbine
generator:type=pelton_turbine: Tag:generator:type=pelton turbine
generator:type=reciprocating_engine: Tag:generator:type=reciprocating engine
+ generator:type=solar_photovoltaic_panel: Tag:generator:type=solar photovoltaic
+ panel
generator:type=solar_thermal_collector: Tag:generator:type=solar thermal collector
+ generator:type=steam_generator: Tag:generator:type=steam generator
generator:type=steam_turbine: Tag:generator:type=steam turbine
generator:type=vertical_axis: Tag:generator:type=vertical axis
geological=moraine: Tag:geological=moraine
harbour:category=tanker: Tag:harbour:category=tanker
harbour:category=tourism: Tag:harbour:category=tourism
harbour:category=yacht: Tag:harbour:category=yacht
- harbour=dolphin: Tag:harbour=dolphin
harbour=drinking_water: Tag:harbour=drinking water
- harbour=harbour_master: Tag:harbour=harbour master
- harbour=jetty: Tag:harbour=jetty
harbour=marina: Tag:harbour=marina
- harbour=slipway: Tag:harbour=slipway
harbour=yes: Tag:harbour=yes
hazard_prone=yes: Tag:hazard prone=yes
hazard_type=avalanche: Tag:hazard type=avalanche
hazard_type=landslide: Tag:hazard type=landslide
hazmat:water=permissive: Tag:hazmat:water=permissive
highway=Bus_guideway: Tag:highway=Bus guideway
+ highway=access: Tag:highway=access
highway=bazaar: Tag:highway=bazaar
highway=bridleway: Tag:highway=bridleway
highway=bus_guideway: Tag:highway=bus guideway
highway=bus_stop: Tag:highway=bus stop
highway=byway: Tag:highway=byway
highway=cattle_grid: Tag:highway=cattle grid
+ highway=centre_line: Tag:highway=centre line
highway=corridor: Tag:highway=corridor
highway=crossing: Tag:highway=crossing
highway=cycleway: Tag:highway=cycleway
+ highway=disused: Tag:highway=disused
highway=elevator: Tag:highway=elevator
highway=emergency_access_point: Tag:highway=emergency access point
highway=escape: Tag:highway=escape
highway=passing_place: Tag:highway=passing place
highway=path: Tag:highway=path
highway=pedestrian: Tag:highway=pedestrian
+ highway=planned: Tag:highway=planned
highway=platform: Tag:highway=platform
highway=primary: Tag:highway=primary
highway=proposed: Tag:highway=proposed
highway=unclassified: Tag:highway=unclassified
highway=unsurfaced: Tag:highway=unsurfaced
highway=via_ferrata: Tag:highway=via ferrata
+ highway=yes: Tag:highway=yes
highway=yield: Tag:highway=yield
historic=aircraft: Tag:historic=aircraft
historic=archaeological_site: Tag:historic=archaeological site
- historic=archaeological_site_Garrigues: Tag:historic=archaeological site Garrigues
historic=battlefield: Tag:historic=battlefield
historic=boundary_stone: Tag:historic=boundary stone
historic=cannon: Tag:historic=cannon
historic=farm: Tag:historic=farm
historic=fort: Tag:historic=fort
historic=gallows: Tag:historic=gallows
+ historic=locomotive: Tag:historic=locomotive
historic=manor: Tag:historic=manor
historic=memorial: Tag:historic=memorial
historic=milestone: Tag:historic=milestone
historic=mine: Tag:historic=mine
historic=monastery: Tag:historic=monastery
historic=monument: Tag:historic=monument
+ historic=optical_telegraph: Tag:historic=optical telegraph
historic=pa: Tag:historic=pa
historic=paleontological_site: Tag:historic=paleontological site
historic=pillory: Tag:historic=pillory
hunting=raised_hide: Tag:hunting=raised hide
industrial=auto_wrecker: Tag:industrial=auto wrecker
industrial=well_cluster: Tag:industrial=well cluster
+ information=board: Tag:information=board
information=guidepost: Tag:information=guidepost
+ information=map: Tag:information=map
information=tactile_model: Tag:information=tactile model
+ internet_access=wlan: Tag:internet access=wlan
junction=crossing: Tag:junction=crossing
junction=filter: Tag:junction=filter
junction=jughandle: Tag:junction=jughandle
junction=roundabout: Tag:junction=roundabout
+ junction=yes: Tag:junction=yes
landform=esker: Tag:landform=esker
landform=raised_beach: Tag:landform=raised beach
landmark=beacon: Tag:landmark=beacon
landuse=highway: Tag:landuse=highway
landuse=hop_garden: Tag:landuse=hop garden
landuse=industrial: Tag:landuse=industrial
+ landuse=institutional: Tag:landuse=institutional
landuse=landfill: Tag:landuse=landfill
landuse=meadow: Tag:landuse=meadow
landuse=military: Tag:landuse=military
landuse=peat_cutting: Tag:landuse=peat cutting
landuse=plant_nursery: Tag:landuse=plant nursery
landuse=plantation: Tag:landuse=plantation
+ landuse=port: Tag:landuse=port
landuse=prison: Tag:landuse=prison
landuse=quarry: Tag:landuse=quarry
landuse=railway: Tag:landuse=railway
landuse=vineyard: Tag:landuse=vineyard
landuse=well: Tag:landuse=well
landuse=wellsite: Tag:landuse=wellsite
+ landuse=winter_sport: Tag:landuse=winter sport
+ landuse=winter_sports: Tag:landuse=winter sports
landuse=wood: Tag:landuse=wood
landuse=wood_(Don't_use): Tag:landuse=wood (Don't use)
lane=buffered: Tag:lane=buffered
leisure=Red_Light_District: Tag:leisure=Red Light District
leisure=adult_gaming_centre: Tag:leisure=adult gaming centre
leisure=amusement_arcade: Tag:leisure=amusement arcade
+ leisure=arena: Tag:leisure=arena
+ leisure=bandstand: Tag:leisure=bandstand
leisure=bathing_place: Tag:leisure=bathing place
leisure=bbq: Tag:leisure=bbq
leisure=beach_resort: Tag:leisure=beach resort
leisure=bird_hide: Tag:leisure=bird hide
+ leisure=bleachers: Tag:leisure=bleachers
+ leisure=bowling_alley: Tag:leisure=bowling alley
+ leisure=casino: Tag:leisure=casino
leisure=common: Tag:leisure=common
leisure=dance: Tag:leisure=dance
+ leisure=disc_golf_course: Tag:leisure=disc golf course
leisure=dog_park: Tag:leisure=dog park
leisure=firepit: Tag:leisure=firepit
leisure=fishing: Tag:leisure=fishing
leisure=ice_rink: Tag:leisure=ice rink
leisure=landscape_reserve: Tag:leisure=landscape reserve
leisure=marina: Tag:leisure=marina
- leisure=maze: Tag:leisure=maze
leisure=miniature_golf: Tag:leisure=miniature golf
leisure=nature_reserve: Tag:leisure=nature reserve
leisure=paddling_pool: Tag:leisure=paddling pool
leisure=picnic_table: Tag:leisure=picnic table
leisure=pitch: Tag:leisure=pitch
leisure=playground: Tag:leisure=playground
+ leisure=recreation_ground: Tag:leisure=recreation ground
leisure=red_light_district: Tag:leisure=red light district
leisure=sailing_club: Tag:leisure=sailing club
+ leisure=sauna: Tag:leisure=sauna
leisure=ski_playground: Tag:leisure=ski playground
leisure=slipway: Tag:leisure=slipway
+ leisure=social_club: Tag:leisure=social club
leisure=sport_centre: Tag:leisure=sport centre
leisure=sports_centre: Tag:leisure=sports centre
leisure=stadium: Tag:leisure=stadium
+ leisure=summer_camp: Tag:leisure=summer camp
leisure=swimming_pool: Tag:leisure=swimming pool
+ leisure=table_tennis_table: Tag:leisure=table tennis table
+ leisure=tanning_salon: Tag:leisure=tanning salon
leisure=track: Tag:leisure=track
+ leisure=trampoline_park: Tag:leisure=trampoline park
+ leisure=turkish_bath: Tag:leisure=turkish bath
leisure=video_arcade: Tag:leisure=video arcade
leisure=water_park: Tag:leisure=water park
leisure=wildlife_hide: Tag:leisure=wildlife hide
+ level_crossing=automatic_barrier: Tag:level crossing=automatic barrier
level_crossing=uncontrolled: Tag:level crossing=uncontrolled
line=bay: Tag:line=bay
line=busbar: Tag:line=busbar
lines=phone: Tag:lines=phone
+ locality=subtownland: Tag:locality=subtownland
+ locality=townland: Tag:locality=townland
+ maintenance=gritting: Tag:maintenance=gritting
man_made=MDF: Tag:man made=MDF
man_made=adit: Tag:man made=adit
man_made=antenna: Tag:man made=antenna
man_made=bunker_silo: Tag:man made=bunker silo
man_made=cairn: Tag:man made=cairn
man_made=campanile: Tag:man made=campanile
+ man_made=cellar_entrance: Tag:man made=cellar entrance
man_made=chimney: Tag:man made=chimney
man_made=communications_tower: Tag:man made=communications tower
man_made=compass_rose: Tag:man made=compass rose
man_made=cross: Tag:man made=cross
man_made=cutline: Tag:man made=cutline
man_made=dike: Tag:man made=dike
+ man_made=dolphin: Tag:man made=dolphin
man_made=dovecote: Tag:man made=dovecote
man_made=dyke: Tag:man made=dyke
man_made=embankment: Tag:man made=embankment
man_made=flare: Tag:man made=flare
man_made=floating_storage: Tag:man made=floating storage
man_made=gasometer: Tag:man made=gasometer
+ man_made=geoglyph: Tag:man made=geoglyph
man_made=goods_conveyor: Tag:man made=goods conveyor
man_made=ground_station: Tag:man made=ground station
man_made=groyne: Tag:man made=groyne
+ man_made=insect_hotel: Tag:man made=insect hotel
man_made=jetty: Tag:man made=jetty
man_made=kiln: Tag:man made=kiln
man_made=levee: Tag:man made=levee
man_made=mast: Tag:man made=mast
man_made=mineshaft: Tag:man made=mineshaft
man_made=monitoring_station: Tag:man made=monitoring station
+ man_made=obelisk: Tag:man made=obelisk
man_made=offshore_platform: Tag:man made=offshore platform
man_made=oil_well: Tag:man made=oil well
man_made=petroleum_well: Tag:man made=petroleum well
man_made=silo: Tag:man made=silo
man_made=snow_fence: Tag:man made=snow fence
man_made=storage_tank: Tag:man made=storage tank
+ man_made=street_cabinet: Tag:man made=street cabinet
man_made=submarine_cable: Tag:man made=submarine cable
man_made=surveillance: Tag:man made=surveillance
man_made=survey_point: Tag:man made=survey point
man_made=tower: Tag:man made=tower
man_made=utility_pole: Tag:man made=utility pole
man_made=wastewater_plant: Tag:man made=wastewater plant
+ man_made=water_tap: Tag:man made=water tap
man_made=water_tower: Tag:man made=water tower
man_made=water_well: Tag:man made=water well
man_made=water_works: Tag:man made=water works
man_made=windmill: Tag:man made=windmill
man_made=windpump: Tag:man made=windpump
man_made=works: Tag:man made=works
- maritime=yes: Tag:maritime=yes
medical=aed: Tag:medical=aed
medical=witchdoctor: Tag:medical=witchdoctor
+ memorial:type=obelisk: Tag:memorial:type=obelisk
+ memorial:type=plaque: Tag:memorial:type=plaque
+ memorial:type=plate: Tag:memorial:type=plate
+ memorial:type=statue: Tag:memorial:type=statue
+ memorial:type=stele: Tag:memorial:type=stele
+ memorial:type=stolperstein: Tag:memorial:type=stolperstein
microbrewery=yes: Tag:microbrewery=yes
military=airfield: Tag:military=airfield
military=barracks: Tag:military=barracks
military=danger_area: Tag:military=danger area
military=exclusion_zone: Tag:military=exclusion zone
military=naval_base: Tag:military=naval base
+ military=nuclear_explosion_site: Tag:military=nuclear explosion site
military=obstacle_course: Tag:military=obstacle course
military=range: Tag:military=range
military=training_area: Tag:military=training area
mooring=spm: Tag:mooring=spm
mooring=visitor: Tag:mooring=visitor
mooring=yes: Tag:mooring=yes
+ name=The_Church_of_Jesus_Christ_of_Latter-day_Saints: Tag:name=The Church of Jesus
+ Christ of Latter-day Saints
natural=arete: Tag:natural=arete
natural=avalanche_dam: Tag:natural=avalanche dam
natural=bare_rock: Tag:natural=bare rock
natural=cloud: Tag:natural=cloud
natural=coastline: Tag:natural=coastline
natural=continental_shelf: Tag:natural=continental shelf
+ natural=crevasse: Tag:natural=crevasse
natural=desert: Tag:natural=desert
natural=dune: Tag:natural=dune
natural=esker: Tag:natural=esker
natural=fell: Tag:natural=fell
natural=glacier: Tag:natural=glacier
natural=grassland: Tag:natural=grassland
+ natural=gully: Tag:natural=gully
natural=heath: Tag:natural=heath
natural=lake: Tag:natural=lake
natural=land: Tag:natural=land
natural=landform: Tag:natural=landform
natural=lava: Tag:natural=lava
- natural=marsh: Tag:natural=marsh
natural=meadow: Tag:natural=meadow
natural=moor: Tag:natural=moor
natural=moraine: Tag:natural=moraine
natural=peak: Tag:natural=peak
natural=reef: Tag:natural=reef
natural=ridge: Tag:natural=ridge
+ natural=riverbed: Tag:natural=riverbed
natural=rock: Tag:natural=rock
natural=rocks: Tag:natural=rocks
natural=saddle: Tag:natural=saddle
natural=sand: Tag:natural=sand
natural=scree: Tag:natural=scree
natural=scrub: Tag:natural=scrub
+ natural=shingle: Tag:natural=shingle
natural=shoal: Tag:natural=shoal
natural=sinkhole: Tag:natural=sinkhole
natural=spring: Tag:natural=spring
natural=tree: Tag:natural=tree
natural=tree_row: Tag:natural=tree row
natural=tundra: Tag:natural=tundra
+ natural=valley: Tag:natural=valley
natural=volcano: Tag:natural=volcano
natural=water: Tag:natural=water
natural=wetland: Tag:natural=wetland
network=BR: Tag:network=BR
network=BR:ES: Tag:network=BR:ES
network=BR:MG: Tag:network=BR:MG
+ network=BR:PB: Tag:network=BR:PB
network=US:AR: Tag:network=US:AR
network=US:CA: Tag:network=US:CA
network=US:FL: Tag:network=US:FL
network=US:IN: Tag:network=US:IN
network=US:KY: Tag:network=US:KY
network=US:MD: Tag:network=US:MD
+ network=US:MT: Tag:network=US:MT
+ network=US:MT:secondary: Tag:network=US:MT:secondary
+ network=US:NJ:Atlantic: Tag:network=US:NJ:Atlantic
+ network=US:NJ:Bergen: Tag:network=US:NJ:Bergen
+ network=US:NJ:CR: Tag:network=US:NJ:CR
network=US:NJ:Cumberland: Tag:network=US:NJ:Cumberland
+ network=US:NJ:Passaic: Tag:network=US:NJ:Passaic
network=US:NM: Tag:network=US:NM
network=US:NY: Tag:network=US:NY
network=US:NY:Herkimer: Tag:network=US:NY:Herkimer
network=US:US: Tag:network=US:US
network=US:VA: Tag:network=US:VA
network=US:WV:Berkeley: Tag:network=US:WV:Berkeley
+ network=icn: Tag:network=icn
+ network=iwn: Tag:network=iwn
+ network=lcn: Tag:network=lcn
+ network=lhn: Tag:network=lhn
+ network=lwn: Tag:network=lwn
+ network=ncn: Tag:network=ncn
+ network=nwn: Tag:network=nwn
+ network=rcn: Tag:network=rcn
+ network=rhn: Tag:network=rhn
+ network=rwn: Tag:network=rwn
noexit=no: Tag:noexit=no
odbl=clean: Tag:odbl=clean
office:realtor: Tag:office:realtor
office=accountant: Tag:office=accountant
office=administrative: Tag:office=administrative
office=architect: Tag:office=architect
- office=camping: Tag:office=camping
+ office=association: Tag:office=association
office=company: Tag:office=company
office=educational_institution: Tag:office=educational institution
office=employment_agency: Tag:office=employment agency
office=political_party: Tag:office=political party
office=quango: Tag:office=quango
office=realtor: Tag:office=realtor
+ office=religion: Tag:office=religion
office=research: Tag:office=research
office=surveyor: Tag:office=surveyor
office=telecommunication: Tag:office=telecommunication
office=travel_agent: Tag:office=travel agent
office=water_utility: Tag:office=water utility
+ operator=independent: Tag:operator=independent
parking:lane:hgv=on_street: Tag:parking:lane:hgv=on street
passenger=international: Tag:passenger=international
passenger=local: Tag:passenger=local
passenger=suburban: Tag:passenger=suburban
passenger=urban: Tag:passenger=urban
passenger=yes: Tag:passenger=yes
+ path=desire: Tag:path=desire
pilotage=boarding_point: Tag:pilotage=boarding point
pilotage=office: Tag:pilotage=office
pipeline=marker: Tag:pipeline=marker
+ pipeline=substation: Tag:pipeline=substation
pipeline=valve: Tag:pipeline=valve
place=allotments: Tag:place=allotments
place=archipelago: Tag:place=archipelago
place=city: Tag:place=city
+ place=city_block: Tag:place=city block
place=continent: Tag:place=continent
place=country: Tag:place=country
place=county: Tag:place=county
place=locality: Tag:place=locality
place=neighbourhood: Tag:place=neighbourhood
place=ocean: Tag:place=ocean
+ place=quarter: Tag:place=quarter
place=region: Tag:place=region
place=sea: Tag:place=sea
place=state: Tag:place=state
pump=manual: Tag:pump=manual
pump=no: Tag:pump=no
pump=powered: Tag:pump=powered
+ raba:id=2000: Tag:raba:id=2000
radio_transponder:category=aeronautical: Tag:radio transponder:category=aeronautical
radio_transponder:category=circular: Tag:radio transponder:category=circular
radio_transponder:category=coast_radio: Tag:radio transponder:category=coast radio
railway=platform: Tag:railway=platform
railway=preserved: Tag:railway=preserved
railway=rail: Tag:railway=rail
+ railway=railway_crossing: Tag:railway=railway crossing
railway=roundhouse: Tag:railway=roundhouse
+ railway=signal: Tag:railway=signal
railway=station: Tag:railway=station
railway=stop: Tag:railway=stop
railway=subway: Tag:railway=subway
railway=turntable: Tag:railway=turntable
recycling_type=container: Tag:recycling type=container
religion=pagan: Tag:religion=pagan
+ residential=university: Tag:residential=university
resource=aggregate: Tag:resource=aggregate
resource=gravel: Tag:resource=gravel
resource=sand: Tag:resource=sand
route=bicycle: Tag:route=bicycle
route=bus: Tag:route=bus
route=canal: Tag:route=canal
+ route=coach: Tag:route=coach
route=detour: Tag:route=detour
route=ferry: Tag:route=ferry
route=fitness_trail: Tag:route=fitness trail
+ route=inline_skates: Tag:route=inline skates
route=monorail: Tag:route=monorail
+ route=nordic_walking: Tag:route=nordic walking
route=pipeline: Tag:route=pipeline
route=piste: Tag:route=piste
route=railway: Tag:route=railway
route=road: Tag:route=road
+ route=running: Tag:route=running
route=share_taxi: Tag:route=share taxi
route=ski: Tag:route=ski
route=subway: Tag:route=subway
seamark:beacon_lateral:colour=green;white;green;white: Tag:seamark:beacon lateral:colour=green;white;green;white
seamark:beacon_lateral:colour=red: Tag:seamark:beacon lateral:colour=red
seamark:beacon_lateral:colour=red;green;red: Tag:seamark:beacon lateral:colour=red;green;red
+ seamark:beacon_lateral:colour=red;green;red;green: Tag:seamark:beacon lateral:colour=red;green;red;green
seamark:beacon_lateral:colour=red;white;red;white: Tag:seamark:beacon lateral:colour=red;white;red;white
seamark:beacon_lateral:colour_pattern=horizontal: Tag:seamark:beacon lateral:colour
pattern=horizontal
seamark:buoy_lateral:colour=green;white;green;white: Tag:seamark:buoy lateral:colour=green;white;green;white
seamark:buoy_lateral:colour=red: Tag:seamark:buoy lateral:colour=red
seamark:buoy_lateral:colour=red;green;red: Tag:seamark:buoy lateral:colour=red;green;red
+ seamark:buoy_lateral:colour=red;green;red;green: Tag:seamark:buoy lateral:colour=red;green;red;green
seamark:buoy_lateral:colour=red;white;red;white: Tag:seamark:buoy lateral:colour=red;white;red;white
seamark:buoy_lateral:colour_pattern=horizontal: Tag:seamark:buoy lateral:colour
pattern=horizontal
seamark:fog_signal:category=whistle: Tag:seamark:fog signal:category=whistle
seamark:fog_signal:status=wave_activated: Tag:seamark:fog signal:status=wave activated
seamark:fog_signal=yes: Tag:seamark:fog signal=yes
+ seamark:harbour:category=marina: Tag:seamark:harbour:category=marina
seamark:landmark:category=cairn: Tag:seamark:landmark:category=cairn
seamark:landmark:category=cemetery: Tag:seamark:landmark:category=cemetery
seamark:landmark:category=chimney: Tag:seamark:landmark:category=chimney
seamark:topmark:shape=upright-cross: Tag:seamark:topmark:shape=upright-cross
seamark:topmark:shape=upright_cross: Tag:seamark:topmark:shape=upright cross
seamark:topmark:shape=x-shape: Tag:seamark:topmark:shape=x-shape
+ seamark:type=anchorage: Tag:seamark:type=anchorage
+ seamark:type=beacon_cardinal: Tag:seamark:type=beacon cardinal
+ seamark:type=beacon_isolated_danger: Tag:seamark:type=beacon isolated danger
+ seamark:type=beacon_lateral: Tag:seamark:type=beacon lateral
+ seamark:type=beacon_special_purpose: Tag:seamark:type=beacon special purpose
+ seamark:type=berth: Tag:seamark:type=berth
+ seamark:type=bridge: Tag:seamark:type=bridge
+ seamark:type=buoy_cardinal: Tag:seamark:type=buoy cardinal
+ seamark:type=buoy_lateral: Tag:seamark:type=buoy lateral
+ seamark:type=buoy_safe_water: Tag:seamark:type=buoy safe water
+ seamark:type=buoy_special_purpose: Tag:seamark:type=buoy special purpose
+ seamark:type=cable_overhead: Tag:seamark:type=cable overhead
+ seamark:type=cable_submarine: Tag:seamark:type=cable submarine
+ seamark:type=distance_mark: Tag:seamark:type=distance mark
+ seamark:type=gate: Tag:seamark:type=gate
+ seamark:type=harbour: Tag:seamark:type=harbour
+ seamark:type=landmark: Tag:seamark:type=landmark
+ seamark:type=light_major: Tag:seamark:type=light major
+ seamark:type=light_minor: Tag:seamark:type=light minor
+ seamark:type=lock_basin: Tag:seamark:type=lock basin
+ seamark:type=mooring: Tag:seamark:type=mooring
+ seamark:type=navigation_line: Tag:seamark:type=navigation line
+ seamark:type=notice: Tag:seamark:type=notice
+ seamark:type=pile: Tag:seamark:type=pile
+ seamark:type=pipeline_submarine: Tag:seamark:type=pipeline submarine
+ seamark:type=platform: Tag:seamark:type=platform
+ seamark:type=recommended_track: Tag:seamark:type=recommended track
+ seamark:type=restricted_area: Tag:seamark:type=restricted area
+ seamark:type=rock: Tag:seamark:type=rock
+ seamark:type=signal_station_traffic: Tag:seamark:type=signal station traffic
+ seamark:type=signal_station_warning: Tag:seamark:type=signal station warning
+ seamark:type=small_craft_facility: Tag:seamark:type=small craft facility
+ seamark:type=wreck: Tag:seamark:type=wreck
seamark=anchorage: Tag:seamark=anchorage
+ seamark=landmark: Tag:seamark=landmark
segregated=no: Tag:segregated=no
segregated=yes: Tag:segregated=yes
service=alley: Tag:service=alley
shelter_type=basic_hut: Tag:shelter type=basic hut
shelter_type=lean_to: Tag:shelter type=lean to
shop=Alko: Tag:shop=Alko
+ shop=_business_machines: Tag:shop= business machines
+ shop=accessories: Tag:shop=accessories
shop=alcohol: Tag:shop=alcohol
shop=anime: Tag:shop=anime
shop=antiques: Tag:shop=antiques
shop=art: Tag:shop=art
shop=audiologist: Tag:shop=audiologist
shop=auto_parts: Tag:shop=auto parts
+ shop=baby_care: Tag:shop=baby care
shop=baby_goods: Tag:shop=baby goods
shop=bag: Tag:shop=bag
shop=bakery: Tag:shop=bakery
shop=betting: Tag:shop=betting
shop=beverages: Tag:shop=beverages
shop=bicycle: Tag:shop=bicycle
+ shop=boat: Tag:shop=boat
shop=bookmaker: Tag:shop=bookmaker
shop=books: Tag:shop=books
shop=boutique: Tag:shop=boutique
+ shop=business_machines: Tag:shop=business machines
shop=butcher: Tag:shop=butcher
shop=camera: Tag:shop=camera
shop=canoe_hire: Tag:shop=canoe hire
shop=car_bodyshop: Tag:shop=car bodyshop
shop=car_parts: Tag:shop=car parts
shop=car_repair: Tag:shop=car repair
+ shop=car_service: Tag:shop=car service
shop=carpet: Tag:shop=carpet
shop=cell_phones: Tag:shop=cell phones
shop=chandler: Tag:shop=chandler
shop=charity: Tag:shop=charity
shop=cheese: Tag:shop=cheese
shop=chemist: Tag:shop=chemist
+ shop=chocolate: Tag:shop=chocolate
shop=clothes: Tag:shop=clothes
+ shop=coffee: Tag:shop=coffee
shop=communication: Tag:shop=communication
shop=computer: Tag:shop=computer
shop=confectionery: Tag:shop=confectionery
shop=convenience: Tag:shop=convenience
shop=copyshop: Tag:shop=copyshop
+ shop=cosmetics: Tag:shop=cosmetics
shop=curtain: Tag:shop=curtain
shop=dairy: Tag:shop=dairy
shop=deli: Tag:shop=deli
shop=delicatessen: Tag:shop=delicatessen
shop=department_store: Tag:shop=department store
+ shop=discount: Tag:shop=discount
shop=dive: Tag:shop=dive
shop=diy: Tag:shop=diy
shop=doityourself: Tag:shop=doityourself
shop=dry_cleaning: Tag:shop=dry cleaning
+ shop=e-cigarette: Tag:shop=e-cigarette
+ shop=electrical: Tag:shop=electrical
+ shop=electronic_cigarette: Tag:shop=electronic cigarette
shop=electronics: Tag:shop=electronics
+ shop=energy: Tag:shop=energy
shop=erotic: Tag:shop=erotic
shop=estate_agent: Tag:shop=estate agent
shop=fabric: Tag:shop=fabric
shop=fabrics: Tag:shop=fabrics
shop=farm: Tag:shop=farm
shop=fashion: Tag:shop=fashion
+ shop=fireworks: Tag:shop=fireworks
shop=fish: Tag:shop=fish
shop=fishing: Tag:shop=fishing
shop=fishmonger: Tag:shop=fishmonger
+ shop=flooring: Tag:shop=flooring
shop=florist: Tag:shop=florist
shop=flower: Tag:shop=flower
shop=food: Tag:shop=food
shop=frame: Tag:shop=frame
+ shop=frozen_food: Tag:shop=frozen food
shop=funeral_directors: Tag:shop=funeral directors
shop=furnace: Tag:shop=furnace
shop=furniture: Tag:shop=furniture
shop=general_stores: Tag:shop=general stores
shop=gift: Tag:shop=gift
shop=glaziery: Tag:shop=glaziery
+ shop=golf: Tag:shop=golf
shop=greengrocer: Tag:shop=greengrocer
shop=grocery: Tag:shop=grocery
shop=hairdresser: Tag:shop=hairdresser
shop=hairdresser_supply: Tag:shop=hairdresser supply
shop=hardware: Tag:shop=hardware
+ shop=health: Tag:shop=health
+ shop=health_food: Tag:shop=health food
shop=hearing_aid_dispenser: Tag:shop=hearing aid dispenser
shop=hearing_aids: Tag:shop=hearing aids
shop=herbalist: Tag:shop=herbalist
shop=hifi: Tag:shop=hifi
+ shop=hobby: Tag:shop=hobby
+ shop=household: Tag:shop=household
shop=houseware: Tag:shop=houseware
shop=hunting: Tag:shop=hunting
shop=ice_cream: Tag:shop=ice cream
shop=laundromat: Tag:shop=laundromat
shop=laundry: Tag:shop=laundry
shop=leather: Tag:shop=leather
+ shop=lighting: Tag:shop=lighting
shop=locksmith: Tag:shop=locksmith
shop=lottery: Tag:shop=lottery
shop=mall: Tag:shop=mall
shop=massage: Tag:shop=massage
+ shop=medical: Tag:shop=medical
shop=medical_supply: Tag:shop=medical supply
shop=military_surplus: Tag:shop=military surplus
shop=mobile_phone: Tag:shop=mobile phone
shop=money_lender: Tag:shop=money lender
+ shop=moneylender: Tag:shop=moneylender
shop=motorcycle: Tag:shop=motorcycle
shop=motorcycle_repair: Tag:shop=motorcycle repair
shop=music: Tag:shop=music
shop=organic: Tag:shop=organic
shop=outdoor: Tag:shop=outdoor
shop=paint: Tag:shop=paint
+ shop=party: Tag:shop=party
shop=pastry: Tag:shop=pastry
shop=pawnbroker: Tag:shop=pawnbroker
+ shop=perfume: Tag:shop=perfume
shop=perfumery: Tag:shop=perfumery
shop=pet: Tag:shop=pet
+ shop=pharmacy: Tag:shop=pharmacy
shop=photo: Tag:shop=photo
shop=photo_studio: Tag:shop=photo studio
+ shop=photography: Tag:shop=photography
+ shop=pottery: Tag:shop=pottery
shop=printing: Tag:shop=printing
+ shop=pyrotechnics: Tag:shop=pyrotechnics
shop=radiotechnics: Tag:shop=radiotechnics
- shop=salon: Tag:shop=salon
+ shop=religion: Tag:shop=religion
+ shop=rental: Tag:shop=rental
shop=scuba_diving: Tag:shop=scuba diving
shop=seafood: Tag:shop=seafood
shop=second_hand: Tag:shop=second hand
+ shop=sewing: Tag:shop=sewing
shop=ship_chandler: Tag:shop=ship chandler
+ shop=shoe_repair: Tag:shop=shoe repair
shop=shoes: Tag:shop=shoes
shop=shopping_centre: Tag:shop=shopping centre
+ shop=solarium: Tag:shop=solarium
+ shop=souvenir: Tag:shop=souvenir
shop=spare_parts: Tag:shop=spare parts
shop=sports: Tag:shop=sports
shop=stationery: Tag:shop=stationery
+ shop=storage: Tag:shop=storage
+ shop=storage_rental: Tag:shop=storage rental
shop=supermarket: Tag:shop=supermarket
shop=systembolaget: Tag:shop=systembolaget
+ shop=tailor: Tag:shop=tailor
shop=tattoo: Tag:shop=tattoo
shop=tea: Tag:shop=tea
shop=ticket: Tag:shop=ticket
+ shop=tickets: Tag:shop=tickets
+ shop=tiles: Tag:shop=tiles
shop=tobacco: Tag:shop=tobacco
shop=toy: Tag:shop=toy
shop=toys: Tag:shop=toys
shop=variety_store: Tag:shop=variety store
shop=video: Tag:shop=video
shop=video_games: Tag:shop=video games
+ shop=watches: Tag:shop=watches
+ shop=water: Tag:shop=water
+ shop=weapons: Tag:shop=weapons
shop=window_blind: Tag:shop=window blind
shop=windows: Tag:shop=windows
shop=wine: Tag:shop=wine
shop=winery: Tag:shop=winery
+ shop=yes: Tag:shop=yes
sign=no: Tag:sign=no
sign=yes: Tag:sign=yes
signal_station=bridge: Tag:signal station=bridge
signal_station=lock: Tag:signal station=lock
signal_station=storm: Tag:signal station=storm
signal_station=stream: Tag:signal station=stream
- signal_station=telegraph: Tag:signal station=telegraph
signal_station=tide: Tag:signal station=tide
signal_station=tide_gauge: Tag:signal station=tide gauge
signal_station=tide_scale: Tag:signal station=tide scale
social_facility=outreach: Tag:social facility=outreach
social_facility=shelter: Tag:social facility=shelter
source:ele=barometric: Tag:source:ele=barometric
+ source:geometry=Bing: Tag:source:geometry=Bing
source:maxspeed=implicit: Tag:source:maxspeed=implicit
source=Bymiljøetaten: Tag:source=Bymiljøetaten
source=DNT_Oslo_og_Omegn: Tag:source=DNT Oslo og Omegn
source=Isle_of_Man_Government_aerial_imagery_(2001): Tag:source=Isle of Man Government
aerial imagery (2001)
source=NAIP: Tag:source=NAIP
+ source=RABA-KGZ: Tag:source=RABA-KGZ
source=gurs: Tag:source=gurs
sport=10pin: Tag:sport=10pin
sport=9pin: Tag:sport=9pin
sport=australian_football: Tag:sport=australian football
sport=badminton: Tag:sport=badminton
sport=balle_pelote: Tag:sport=balle pelote
+ sport=bandy: Tag:sport=bandy
sport=base: Tag:sport=base
sport=baseball: Tag:sport=baseball
sport=basketball: Tag:sport=basketball
sport=billards: Tag:sport=billards
sport=billiards: Tag:sport=billiards
sport=bmx: Tag:sport=bmx
+ sport=bobsleigh: Tag:sport=bobsleigh
sport=boules: Tag:sport=boules
sport=bowls: Tag:sport=bowls
+ sport=boxing: Tag:sport=boxing
sport=canadian_football: Tag:sport=canadian football
sport=canoe: Tag:sport=canoe
sport=chess: Tag:sport=chess
sport=diving: Tag:sport=diving
sport=dog_racing: Tag:sport=dog racing
sport=equestrian: Tag:sport=equestrian
+ sport=fencing: Tag:sport=fencing
+ sport=field_hockey: Tag:sport=field hockey
+ sport=fives: Tag:sport=fives
+ sport=football: Tag:sport=football
sport=free_flying: Tag:sport=free flying
+ sport=futsal: Tag:sport=futsal
sport=gaelic_football: Tag:sport=gaelic football
sport=gaelic_games: Tag:sport=gaelic games
sport=golf: Tag:sport=golf
sport=gymnastics: Tag:sport=gymnastics
+ sport=handball: Tag:sport=handball
sport=hapkido: Tag:sport=hapkido
sport=hockey: Tag:sport=hockey
sport=horse_racing: Tag:sport=horse racing
sport=horseshoes: Tag:sport=horseshoes
+ sport=ice_hockey: Tag:sport=ice hockey
+ sport=ice_skating: Tag:sport=ice skating
sport=ice_stock: Tag:sport=ice stock
+ sport=judo: Tag:sport=judo
+ sport=karting: Tag:sport=karting
sport=kitesurfing: Tag:sport=kitesurfing
sport=korfball: Tag:sport=korfball
sport=model_aerodrome: Tag:sport=model aerodrome
sport=obstacle_course: Tag:sport=obstacle course
sport=orienteering: Tag:sport=orienteering
sport=paddle_tennis: Tag:sport=paddle tennis
+ sport=parachuting: Tag:sport=parachuting
sport=paragliding: Tag:sport=paragliding
sport=pelota: Tag:sport=pelota
sport=racquet: Tag:sport=racquet
+ sport=roller_skating: Tag:sport=roller skating
sport=rowing: Tag:sport=rowing
sport=rugby: Tag:sport=rugby
sport=rugby_league: Tag:sport=rugby league
sport=rugby_union: Tag:sport=rugby union
+ sport=running: Tag:sport=running
+ sport=sailing: Tag:sport=sailing
sport=scuba_diving: Tag:sport=scuba diving
sport=shooting: Tag:sport=shooting
sport=shooting_range: Tag:sport=shooting range
sport=water_ski: Tag:sport=water ski
sports=aikido: Tag:sports=aikido
sports=athletics: Tag:sports=athletics
+ station=subway: Tag:station=subway
sub_sea=reef: Tag:sub sea=reef
substation=compensation: Tag:substation=compensation
substation=converter: Tag:substation=converter
substation=transmission: Tag:substation=transmission
summit:cross=yes: Tag:summit:cross=yes
surface=pebbles: Tag:surface=pebbles
- telcom=remote_digital_terminal: Tag:telcom=remote digital terminal
telecom=cross-connect: Tag:telecom=cross-connect
telecom=remote_digital_terminal: Tag:telecom=remote digital terminal
telecom=remote_terminal: Tag:telecom=remote terminal
tourism=motel: Tag:tourism=motel
tourism=museum: Tag:tourism=museum
tourism=picnic_site: Tag:tourism=picnic site
+ tourism=resort: Tag:tourism=resort
tourism=theme_park: Tag:tourism=theme park
tourism=tourism-attraction: Tag:tourism=tourism-attraction
tourism=viewpoint: Tag:tourism=viewpoint
tourism=wilderness_hut: Tag:tourism=wilderness hut
+ tourism=wine_cellar: Tag:tourism=wine cellar
tourism=yes: Tag:tourism=yes
tourism=zoo: Tag:tourism=zoo
tower:construction=dish: Tag:tower:construction=dish
tower:construction=lattice: Tag:tower:construction=lattice
tower:type: Tag:tower:type
tower:type=communication: Tag:tower:type=communication
+ tower:type=cooling: Tag:tower:type=cooling
+ tower:type=donjon: Tag:tower:type=donjon
tower:type=lattice: Tag:tower:type=lattice
+ tower:type=lighting: Tag:tower:type=lighting
traffic=local: Tag:traffic=local
traffic=national: Tag:traffic=national
traffic=regional: Tag:traffic=regional
traffic=suburban: Tag:traffic=suburban
traffic=urban: Tag:traffic=urban
traffic_calming=island: Tag:traffic calming=island
+ traffic_calming=table: Tag:traffic calming=table
transformer=auto: Tag:transformer=auto
transformer=converter: Tag:transformer=converter
transformer=distribution: Tag:transformer=distribution
type=public_transport: Tag:type=public transport
type=street: Tag:type=street
type=triangulation: Tag:type=triangulation
+ vending=SIM-cards: Tag:vending=SIM-cards
+ vending=SIM_cards: Tag:vending=SIM cards
+ vending=admission_tickets: Tag:vending=admission tickets
+ vending=animal_feed: Tag:vending=animal feed
vending=bicycle_tube: Tag:vending=bicycle tube
+ vending=books: Tag:vending=books
vending=bycicle_tube: Tag:vending=bycicle tube
+ vending=candles: Tag:vending=candles
+ vending=chemist: Tag:vending=chemist
+ vending=cigarettes: Tag:vending=cigarettes
+ vending=condoms: Tag:vending=condoms
+ vending=drinks: Tag:vending=drinks
+ vending=electronics: Tag:vending=electronics
+ vending=elongated_coin: Tag:vending=elongated coin
+ vending=excrement_bags: Tag:vending=excrement bags
+ vending=feminine_hygiene: Tag:vending=feminine hygiene
+ vending=first_aid: Tag:vending=first aid
+ vending=fishing_bait: Tag:vending=fishing bait
+ vending=fishing_tackle: Tag:vending=fishing tackle
+ vending=flowers: Tag:vending=flowers
+ vending=food: Tag:vending=food
+ vending=ice_cream: Tag:vending=ice cream
+ vending=ice_cubes: Tag:vending=ice cubes
+ vending=ink_cartridges: Tag:vending=ink cartridges
+ vending=laundry_detergent: Tag:vending=laundry detergent
+ vending=news_papers: Tag:vending=news papers
+ vending=newspapers: Tag:vending=newspapers
+ vending=parcel_mail_in: Tag:vending=parcel mail in
+ vending=parcel_pickup: Tag:vending=parcel pickup
+ vending=parcel_pickup;parcel_mail_in: Tag:vending=parcel pickup;parcel mail in
+ vending=parking_tickets: Tag:vending=parking tickets
+ vending=pet_food: Tag:vending=pet food
+ vending=public_transport_tickets: Tag:vending=public transport tickets
+ vending=sex_toys: Tag:vending=sex toys
+ vending=stamps: Tag:vending=stamps
+ vending=sweets: Tag:vending=sweets
+ vending=syringes: Tag:vending=syringes
+ vending=toll: Tag:vending=toll
+ vending=toys: Tag:vending=toys
+ vending=umbrellas: Tag:vending=umbrellas
vending_machine: Tag:vending machine
wall=dry_stone: Tag:wall=dry stone
wall=no: Tag:wall=no
waterway=dock: Tag:waterway=dock
waterway=drain: Tag:waterway=drain
waterway=dredged_area: Tag:waterway=dredged area
+ waterway=drystream: Tag:waterway=drystream
waterway=estuary: Tag:waterway=estuary
waterway=fish_pass: Tag:waterway=fish pass
waterway=lock_gate: Tag:waterway=lock gate
addr: ES:Key:addr
amenity: ES:Key:amenity
brand: ES:Key:brand
+ building: ES:Key:building
+ camino: ES:Key:camino
cycleway: ES:Key:cycleway
end_date: ES:Key:end date
+ geological: ES:Key:geological
highway: ES:Key:highway
is_in: ES:Key:is in
maxspeed: ES:Key:maxspeed
+ motorroad: ES:Key:motorroad
name: ES:Key:name
+ natural: ES:Key:natural
noexit: ES:Key:noexit
opening_hours: ES:Key:opening hours
operator: ES:Key:operator
organic: ES:Key:organic
origin: ES:Key:origin
+ parking:lane: ES:Key:parking:lane
payment: ES:Key:payment
phone: ES:Key:phone
+ place: ES:Key:place
proposed: ES:Key:proposed
shop: ES:Key:shop
+ source: ES:Key:source
stars: ES:Key:stars
traffic_calming: ES:Key:traffic calming
+ turn: ES:Key:turn
website: ES:Key:website
wheelchair: ES:Key:wheelchair
wholesale: ES:Key:wholesale
amenity=ice_cream: ES:Tag:amenity=ice cream
amenity=love_hotel: ES:Tag:amenity=love hotel
amenity=nightclub: ES:Tag:amenity=nightclub
+ amenity=parking: ES:Tag:amenity=parking
amenity=payment_terminal: ES:Tag:amenity=payment terminal
+ amenity=public_building: ES:Tag:amenity=public building
amenity=recycling: ES:Tag:amenity=recycling
amenity=restaurant: ES:Tag:amenity=restaurant
amenity=stripclub: ES:Tag:amenity=stripclub
amenity=university: ES:Tag:amenity=university
amenity=veterinary: ES:Tag:amenity=veterinary
+ amenity=waste_disposal: ES:Tag:amenity=waste disposal
+ building=public: ES:Tag:building=public
+ emergency=defibrillator: ES:Tag:emergency=defibrillator
emergency=fire_extinguisher: ES:Tag:emergency=fire extinguisher
highway=bus_stop: ES:Tag:highway=bus stop
highway=byway: ES:Tag:highway=byway
junction=roundabout: ES:Tag:junction=roundabout
landuse=allotments: ES:Tag:landuse=allotments
landuse=industrial: ES:Tag:landuse=industrial
+ leisure=nature_reserve: ES:Tag:leisure=nature reserve
leisure=playground: ES:Tag:leisure=playground
leisure=water_park: ES:Tag:leisure=water park
man_made=pier: ES:Tag:man made=pier
+ natural=arete: ES:Tag:natural=arete
natural=beach: ES:Tag:natural=beach
+ natural=cave_entrance: ES:Tag:natural=cave entrance
natural=glacier: ES:Tag:natural=glacier
+ natural=moor: ES:Tag:natural=moor
+ natural=mud: ES:Tag:natural=mud
+ natural=rock: ES:Tag:natural=rock
natural=saddle: ES:Tag:natural=saddle
+ natural=sand: ES:Tag:natural=sand
+ natural=sinkhole: ES:Tag:natural=sinkhole
natural=tree: ES:Tag:natural=tree
natural=water: ES:Tag:natural=water
+ place=village: ES:Tag:place=village
power=pole: ES:Tag:power=pole
power=tower: ES:Tag:power=tower
public_transport=platform: ES:Tag:public transport=platform
et:
key:
addr: Et:Key:addr
+ amenity: Et:Key:amenity
backrest: Et:Key:backrest
highway: Et:Key:highway
+ man_made: Et:Key:man made
tag:
amenity=bench: Et:Tag:amenity=bench
amenity=cafe: Et:Tag:amenity=cafe
access: FR:Key:access
addr: FR:Key:addr
addr:floor: FR:Key:addr:floor
+ addr:housenumber: FR:Key:addr:housenumber
addr:place: FR:Key:addr:place
+ addr:street: FR:Key:addr:street
advertising: FR:Key:advertising
aeroway: FR:Key:aeroway
alt_name: FR:Key:alt name
books: FR:Key:books
boundary: FR:Key:boundary
bridge: FR:Key:bridge
+ bridge:movable: FR:Key:bridge:movable
building: FR:Key:building
building:levels: FR:Key:building:levels
building:part: FR:Key:building:part
+ bus: FR:Key:bus
capacity: FR:Key:capacity
capacity:disabled: FR:Key:capacity:disabled
clothes: FR:Key:clothes
crossing: FR:Key:crossing
cutting: FR:Key:cutting
cycleway: FR:Key:cycleway
+ delivery: FR:Key:delivery
denomination: FR:Key:denomination
description: FR:Key:description
designation: FR:Key:designation
diet:*: FR:Key:diet:*
dispensing: FR:Key:dispensing
distance: FR:Key:distance
+ door: FR:Key:door
drink: FR:Key:drink
ele: FR:Key:ele
email: FR:Key:email
foot: FR:Key:foot
footway: FR:Key:footway
ford: FR:Key:ford
+ format: FR:Key:format
forward: FR:Key:forward
generator:method: FR:Key:generator:method
generator:output: FR:Key:generator:output
generator:output:hot_water: FR:Key:generator:output:hot water
generator:output:steam: FR:Key:generator:output:steam
generator:source: FR:Key:generator:source
+ geological: FR:Key:geological
height: FR:Key:height
highway: FR:Key:highway
historic: FR:Key:historic
+ hov: FR:Key:hov
incline: FR:Key:incline
information: FR:Key:information
+ inscription: FR:Key:inscription
int_name: FR:Key:int name
intermittent: FR:Key:intermittent
junction: FR:Key:junction
landuse: FR:Key:landuse
lanes: FR:Key:lanes
+ layer: FR:Key:layer
+ leaf_type: FR:Key:leaf type
left: FR:Key:left
leisure: FR:Key:leisure
length: FR:Key:length
lock_ref: FR:Key:lock ref
man_made: FR:Key:man made
manufacturer: FR:Key:manufacturer
+ max_age: FR:Key:max age
maxage: FR:Key:maxage
maxaxleload: FR:Key:maxaxleload
maxheight: FR:Key:maxheight
maxstay: FR:Key:maxstay
maxweight: FR:Key:maxweight
maxwidth: FR:Key:maxwidth
+ memorial: FR:Key:memorial
military: FR:Key:military
+ min_age: FR:Key:min age
minage: FR:Key:minage
+ mooring: FR:Key:mooring
motorboat: FR:Key:motorboat
mountain_pass: FR:Key:mountain pass
mtb:scale: FR:Key:mtb:scale
priority_road: FR:Key:priority road
proposed: FR:Key:proposed
psv: FR:Key:psv
+ public_bookcase:type: FR:Key:public bookcase:type
public_transport: FR:Key:public transport
pump: FR:Key:pump
railway: FR:Key:railway
ref:FR:42C: FR:Key:ref:FR:42C
ref:FR:FANTOIR: FR:Key:ref:FR:FANTOIR
ref:FR:FINESS: FR:Key:ref:FR:FINESS
+ ref:FR:MemorialGenWeb: FR:Key:ref:FR:MemorialGenWeb
+ ref:FR:NAF: FR:Key:ref:FR:NAF
+ ref:FR:SIREN: FR:Key:ref:FR:SIREN
ref:FR:SIRET: FR:Key:ref:FR:SIRET
+ ref:FR:commune: FR:Key:ref:FR:commune
ref:INSEE: FR:Key:ref:INSEE
ref:UAI: FR:Key:ref:UAI
ref:mhs: FR:Key:ref:mhs
ref:sandre: FR:Key:ref:sandre
reg_name: FR:Key:reg name
religion: FR:Key:religion
+ repeat_on: FR:Key:repeat on
resource: FR:Key:resource
right: FR:Key:right
sac_scale: FR:Key:sac scale
+ seamark:fixme: FR:Key:seamark:fixme
second_hand: FR:Key:second hand
segregated: FR:Key:segregated
service: FR:Key:service
traffic_calming: FR:Key:traffic calming
traffic_sign: FR:Key:traffic sign
trail_visibility: FR:Key:trail visibility
+ trees: FR:Key:trees
tunnel: FR:Key:tunnel
turn: FR:Key:turn
turn:lanes: FR:Key:turn:lanes
turning_radius: FR:Key:turning radius
type: FR:Key:type
+ type:FR:FINESS: FR:Key:type:FR:FINESS
url: FR:Key:url
voltage: FR:Key:voltage
waste: FR:Key:waste
website: FR:Key:website
wheelchair: FR:Key:wheelchair
width: FR:Key:width
+ wikidata: FR:Key:wikidata
wikipedia: FR:Key:wikipedia
tag:
FIXME=Position_estimated: FR:Tag:FIXME=Position estimated
amenity=crematorium: FR:Tag:amenity=crematorium
amenity=crypt: FR:Tag:amenity=crypt
amenity=drinking_water: FR:Tag:amenity=drinking water
+ amenity=embassy: FR:Tag:amenity=embassy
amenity=fire_station: FR:Tag:amenity=fire station
amenity=fountain: FR:Tag:amenity=fountain
amenity=fuel: FR:Tag:amenity=fuel
amenity=pharmacy: FR:Tag:amenity=pharmacy
amenity=photo_booth: FR:Tag:amenity=photo booth
amenity=place_of_worship: FR:Tag:amenity=place of worship
+ amenity=planetarium: FR:Tag:amenity=planetarium
amenity=police: FR:Tag:amenity=police
+ amenity=post_office: FR:Tag:amenity=post office
+ amenity=public_bookcase: FR:Tag:amenity=public bookcase
amenity=recycling: FR:Tag:amenity=recycling
amenity=restaurant: FR:Tag:amenity=restaurant
amenity=school: FR:Tag:amenity=school
amenity=waste_basket: FR:Tag:amenity=waste basket
amenity=waste_disposal: FR:Tag:amenity=waste disposal
barrier=bollard: FR:Tag:barrier=bollard
+ barrier=city_wall: FR:Tag:barrier=city wall
barrier=cycle_barrier: FR:Tag:barrier=cycle barrier
barrier=gate: FR:Tag:barrier=gate
barrier=hedge: FR:Tag:barrier=hedge
barrier=retaining_wall: FR:Tag:barrier=retaining wall
barrier=wall: FR:Tag:barrier=wall
+ building=garage: FR:Tag:building=garage
+ building=garages: FR:Tag:building=garages
+ building=hangar: FR:Tag:building=hangar
building=house: FR:Tag:building=house
+ building=public: FR:Tag:building=public
building=roof: FR:Tag:building=roof
+ building=ruins: FR:Tag:building=ruins
+ building=sty: FR:Tag:building=sty
craft=beekeeper: FR:Tag:craft=beekeeper
craft=car_repair: FR:Tag:craft=car repair
cycleway=asl: FR:Tag:cycleway=asl
highway=cycleway: FR:Tag:highway=cycleway
highway=elevator: FR:Tag:highway=elevator
highway=emergency_access_point: FR:Tag:highway=emergency access point
+ highway=escape: FR:Tag:highway=escape
highway=footway: FR:Tag:highway=footway
highway=give_way: FR:Tag:highway=give way
highway=living_street: FR:Tag:highway=living street
+ highway=milestone: FR:Tag:highway=milestone
highway=mini_roundabout: FR:Tag:highway=mini roundabout
highway=motorway: FR:Tag:highway=motorway
highway=motorway_link: FR:Tag:highway=motorway link
highway=stop: FR:Tag:highway=stop
highway=tertiary: FR:Tag:highway=tertiary
highway=track: FR:Tag:highway=track
+ highway=traffic_signals: FR:Tag:highway=traffic signals
highway=trunk: FR:Tag:highway=trunk
highway=turning_circle: FR:Tag:highway=turning circle
highway=unclassified: FR:Tag:highway=unclassified
+ historic=aircraft: FR:Tag:historic=aircraft
historic=battlefield: FR:Tag:historic=battlefield
+ historic=boundary_stone: FR:Tag:historic=boundary stone
+ historic=cannon: FR:Tag:historic=cannon
+ historic=castle: FR:Tag:historic=castle
+ historic=city_gate: FR:Tag:historic=city gate
+ historic=citywalls: FR:Tag:historic=citywalls
+ historic=farm: FR:Tag:historic=farm
+ historic=fort: FR:Tag:historic=fort
+ historic=gallows: FR:Tag:historic=gallows
historic=memorial: FR:Tag:historic=memorial
+ historic=milestone: FR:Tag:historic=milestone
+ historic=monument: FR:Tag:historic=monument
+ historic=optical_telegraph: FR:Tag:historic=optical telegraph
+ historic=pa: FR:Tag:historic=pa
+ historic=pillory: FR:Tag:historic=pillory
+ historic=ruins: FR:Tag:historic=ruins
+ historic=rune_stone: FR:Tag:historic=rune stone
+ historic=ship: FR:Tag:historic=ship
+ historic=tomb: FR:Tag:historic=tomb
+ historic=tree_shrine: FR:Tag:historic=tree shrine
+ historic=wayside_cross: FR:Tag:historic=wayside cross
+ historic=wayside_shrine: FR:Tag:historic=wayside shrine
+ historic=wreck: FR:Tag:historic=wreck
junction=roundabout: FR:Tag:junction=roundabout
landuse=allotments: FR:Tag:landuse=allotments
landuse=basin: FR:Tag:landuse=basin
man_made=survey_point: FR:Tag:man made=survey point
man_made=tower: FR:Tag:man made=tower
man_made=wastewater_plant: FR:Tag:man made=wastewater plant
+ man_made=water_tower: FR:Tag:man made=water tower
man_made=water_well: FR:Tag:man made=water well
man_made=water_works: FR:Tag:man made=water works
man_made=watermill: FR:Tag:man made=watermill
man_made=windmill: FR:Tag:man made=windmill
man_made=windpump: FR:Tag:man made=windpump
medical=aed: FR:Tag:medical=aed
+ military=bunker: FR:Tag:military=bunker
+ natural=bare_rock: FR:Tag:natural=bare rock
natural=cliff: FR:Tag:natural=cliff
natural=coastline: FR:Tag:natural=coastline
+ natural=glacier: FR:Tag:natural=glacier
+ natural=scree: FR:Tag:natural=scree
natural=spring: FR:Tag:natural=spring
natural=stone: FR:Tag:natural=stone
natural=tree: FR:Tag:natural=tree
natural=wetland: FR:Tag:natural=wetland
office=employment_agency: FR:Tag:office=employment agency
office=estate_agent: FR:Tag:office=estate agent
+ office=lawyer: FR:Tag:office=lawyer
office=ngo: FR:Tag:office=ngo
place=city: FR:Tag:place=city
place=hamlet: FR:Tag:place=hamlet
place=isolated_dwelling: FR:Tag:place=isolated dwelling
place=locality: FR:Tag:place=locality
place=neighbourhood: FR:Tag:place=neighbourhood
+ place=suburb: FR:Tag:place=suburb
place=town: FR:Tag:place=town
place=village: FR:Tag:place=village
power=generator: FR:Tag:power=generator
public_transport=station: FR:Tag:public transport=station
pump=powered: FR:Tag:pump=powered
railway=level_crossing: FR:Tag:railway=level crossing
+ railway=preserved: FR:Tag:railway=preserved
railway=rail: FR:Tag:railway=rail
railway=station: FR:Tag:railway=station
+ railway=subway: FR:Tag:railway=subway
railway=subway_entrance: FR:Tag:railway=subway entrance
+ railway=tram: FR:Tag:railway=tram
route=piste: FR:Tag:route=piste
service=alley: FR:Tag:service=alley
service=parking_aisle: FR:Tag:service=parking aisle
shop=car_repair: FR:Tag:shop=car repair
shop=carpet: FR:Tag:shop=carpet
shop=charity: FR:Tag:shop=charity
+ shop=cheese: FR:Tag:shop=cheese
shop=clothes: FR:Tag:shop=clothes
shop=confectionery: FR:Tag:shop=confectionery
shop=convenience: FR:Tag:shop=convenience
shop=doityourself: FR:Tag:shop=doityourself
shop=farm: FR:Tag:shop=farm
shop=frame: FR:Tag:shop=frame
+ shop=frozen_food: FR:Tag:shop=frozen food
shop=funeral_directors: FR:Tag:shop=funeral directors
shop=furnace: FR:Tag:shop=furnace
shop=garden_centre: FR:Tag:shop=garden centre
shop=gift: FR:Tag:shop=gift
shop=hairdresser: FR:Tag:shop=hairdresser
shop=hunting: FR:Tag:shop=hunting
+ shop=kiosk: FR:Tag:shop=kiosk
shop=kitchen: FR:Tag:shop=kitchen
shop=military_surplus: FR:Tag:shop=military surplus
shop=newsagent: FR:Tag:shop=newsagent
+ shop=pastry: FR:Tag:shop=pastry
shop=photo: FR:Tag:shop=photo
shop=second_hand: FR:Tag:shop=second hand
shop=supermarket: FR:Tag:shop=supermarket
sport=shooting: FR:Tag:sport=shooting
tourism=alpine_hut: FR:Tag:tourism=alpine hut
tourism=artwork: FR:Tag:tourism=artwork
+ tourism=attraction: FR:Tag:tourism=attraction
tourism=camp_site: FR:Tag:tourism=camp site
+ tourism=chalet: FR:Tag:tourism=chalet
+ tourism=gallery: FR:Tag:tourism=gallery
+ tourism=guest_house: FR:Tag:tourism=guest house
tourism=hostel: FR:Tag:tourism=hostel
tourism=hotel: FR:Tag:tourism=hotel
tourism=information: FR:Tag:tourism=information
+ tourism=motel: FR:Tag:tourism=motel
+ tourism=museum: FR:Tag:tourism=museum
+ tourism=theme_park: FR:Tag:tourism=theme park
tourism=viewpoint: FR:Tag:tourism=viewpoint
tunnel=culvert: FR:Tag:tunnel=culvert
- type=associatedStreet: FR:Tag:type=associatedStreet
wall=no: FR:Tag:wall=no
waterway=boatyard: FR:Tag:waterway=boatyard
waterway=canal: FR:Tag:waterway=canal
waterway=dam: FR:Tag:waterway=dam
+ waterway=dock: FR:Tag:waterway=dock
waterway=lock_gate: FR:Tag:waterway=lock gate
waterway=river: FR:Tag:waterway=river
waterway=riverbank: FR:Tag:waterway=riverbank
barrier: Hu:Key:barrier
building: Hu:Key:building
denomination: Hu:Key:denomination
+ destination: Hu:Key:destination
highway: Hu:Key:highway
jel: Hu:Key:jel
landuse: Hu:Key:landuse
leisure: Hu:Key:leisure
+ man_made: Hu:Key:man made
+ maxspeed: Hu:Key:maxspeed
+ minspeed: Hu:Key:minspeed
natural: Hu:Key:natural
+ obstacle: Hu:Key:obstacle
office: Hu:Key:office
place: Hu:Key:place
railway: Hu:Key:railway
symbol: Hu:Key:symbol
tourism: Hu:Key:tourism
tracktype: Hu:Key:tracktype
+ turn: Hu:Key:turn
waterway: Hu:Key:waterway
wheelchair: Hu:Key:wheelchair
wood: Hu:Key:wood
tag:
boundary=administrative: Hu:Tag:boundary=administrative
+id:
+ tag:
+ highway=track: Id:Tag:highway=track
it:
key:
abutters: IT:Key:abutters
description: IT:Key:description
diet: IT:Key:diet
diet:*: IT:Key:diet:*
+ drink: IT:Key:drink
ele: IT:Key:ele
embankment: IT:Key:embankment
enforcement: IT:Key:enforcement
natural: IT:Key:natural
noexit: IT:Key:noexit
note: IT:Key:note
+ office: IT:Key:office
operator: IT:Key:operator
osmc:symbol: IT:Key:osmc:symbol
parking:lane:both: IT:Key:parking:lane:both
amenity=bar: IT:Tag:amenity=bar
amenity=bench: IT:Tag:amenity=bench
amenity=bicycle_rental: IT:Tag:amenity=bicycle rental
+ amenity=cafe: IT:Tag:amenity=cafe
amenity=cinema: IT:Tag:amenity=cinema
amenity=college: IT:Tag:amenity=college
+ amenity=fast_food: IT:Tag:amenity=fast food
amenity=fountain: IT:Tag:amenity=fountain
amenity=fuel: IT:Tag:amenity=fuel
amenity=hospital: IT:Tag:amenity=hospital
amenity=place_of_worship: IT:Tag:amenity=place of worship
amenity=police: IT:Tag:amenity=police
amenity=post_office: IT:Tag:amenity=post office
+ amenity=pub: IT:Tag:amenity=pub
amenity=recycling: IT:Tag:amenity=recycling
+ amenity=restaurant: IT:Tag:amenity=restaurant
amenity=school: IT:Tag:amenity=school
amenity=spa: IT:Tag:amenity=spa
amenity=university: IT:Tag:amenity=university
highway=rest_area: IT:Tag:highway=rest area
highway=secondary: IT:Tag:highway=secondary
highway=services: IT:Tag:highway=services
+ highway=steps: IT:Tag:highway=steps
highway=tertiary: IT:Tag:highway=tertiary
highway=track: IT:Tag:highway=track
highway=trunk: IT:Tag:highway=trunk
highway=trunk_link: IT:Tag:highway=trunk link
+ historic=archaeological_site: IT:Tag:historic=archaeological site
historic=paleontological_site: IT:Tag:historic=paleontological site
historic=wayside_shrine: IT:Tag:historic=wayside shrine
industrial=auto_wrecker: IT:Tag:industrial=auto wrecker
power=transformer: IT:Tag:power=transformer
railway=level_crossing: IT:Tag:railway=level crossing
route=bus: IT:Tag:route=bus
+ shop=alcohol: IT:Tag:shop=alcohol
+ shop=bakery: IT:Tag:shop=bakery
+ shop=beverages: IT:Tag:shop=beverages
shop=butcher: IT:Tag:shop=butcher
shop=car: IT:Tag:shop=car
+ shop=chemist: IT:Tag:shop=chemist
shop=clothes: IT:Tag:shop=clothes
+ shop=coffee: IT:Tag:shop=coffee
shop=confectionery: IT:Tag:shop=confectionery
+ shop=convenience: IT:Tag:shop=convenience
+ shop=deli: IT:Tag:shop=deli
+ shop=farm: IT:Tag:shop=farm
shop=florist: IT:Tag:shop=florist
shop=greengrocer: IT:Tag:shop=greengrocer
shop=hifi: IT:Tag:shop=hifi
shop=kiosk: IT:Tag:shop=kiosk
shop=mall: IT:Tag:shop=mall
shop=newsagent: IT:Tag:shop=newsagent
+ shop=pastry: IT:Tag:shop=pastry
+ shop=seafood: IT:Tag:shop=seafood
+ shop=supermarket: IT:Tag:shop=supermarket
+ shop=tea: IT:Tag:shop=tea
shop=tobacco: IT:Tag:shop=tobacco
+ shop=wine: IT:Tag:shop=wine
sport=surfing: IT:Tag:sport=surfing
tourism=artwork: IT:Tag:tourism=artwork
waterway=stream: IT:Tag:waterway=stream
ja:
key:
+ CEMT: JA:Key:CEMT
+ abandoned: JA:Key:abandoned
abutters: JA:Key:abutters
access: JA:Key:access
access:lanes: JA:Key:access:lanes
addr:housenumber: JA:Key:addr:housenumber
addr:inclusion: JA:Key:addr:inclusion
addr:interpolation: JA:Key:addr:interpolation
+ addr:place: JA:Key:addr:place
addr:postcode: JA:Key:addr:postcode
addr:province: JA:Key:addr:province
addr:state: JA:Key:addr:state
addr:subdistrict: JA:Key:addr:subdistrict
aerialway: JA:Key:aerialway
aeroway: JA:Key:aeroway
+ agricultural: JA:Key:agricultural
+ alt_name: JA:Key:alt name
amenity: JA:Key:amenity
area: JA:Key:area
+ artwork_type: JA:Key:artwork type
+ attribution: JA:Key:attribution
+ atv: JA:Key:atv
backward: JA:Key:backward
barrier: JA:Key:barrier
+ bdouble: JA:Key:bdouble
+ bicycle: JA:Key:bicycle
+ bicycle_parking: JA:Key:bicycle parking
+ boat: JA:Key:boat
+ bollard: JA:Key:bollard
books: JA:Key:books
+ border_type: JA:Key:border type
boundary: JA:Key:boundary
brand: JA:Key:brand
bridge: JA:Key:bridge
building:material: JA:Key:building:material
building:part: JA:Key:building:part
building:parts: JA:Key:building:parts
+ bus: JA:Key:bus
capacity: JA:Key:capacity
clothes: JA:Key:clothes
+ club: JA:Key:club
+ collection_times: JA:Key:collection times
+ colour: JA:Key:colour
comment: JA:Key:comment
conditional: JA:Key:conditional
+ construction: JA:Key:construction
contact: JA:Key:contact
+ contact:email: JA:Key:contact:email
+ contact:facebook: JA:Key:contact:facebook
+ contact:fax: JA:Key:contact:fax
+ contact:google_plus: JA:Key:contact:google plus
+ contact:linkedin: JA:Key:contact:linkedin
+ contact:phone: JA:Key:contact:phone
+ contact:twitter: JA:Key:contact:twitter
+ contact:webcam: JA:Key:contact:webcam
+ contact:website: JA:Key:contact:website
covered: JA:Key:covered
+ craft: JA:Key:craft
crossing: JA:Key:crossing
cuisine: JA:Key:cuisine
cutting: JA:Key:cutting
description: JA:Key:description
destination: JA:Key:destination
destination:lanes: JA:Key:destination:lanes
+ diet: JA:Key:diet
diet:*: JA:Key:diet:*
disused: JA:Key:disused
drive_in: JA:Key:drive in
drive_through: JA:Key:drive through
easy_overtaking: JA:Key:easy overtaking
+ ele: JA:Key:ele
electrified: JA:Key:electrified
+ email: JA:Key:email
embankment: JA:Key:embankment
emergency: JA:Key:emergency
end_date: JA:Key:end date
+ entrance: JA:Key:entrance
+ est_width: JA:Key:est width
+ exit_to: JA:Key:exit to
+ facebook: JA:Key:facebook
fax: JA:Key:fax
fee: JA:Key:fee
fixme: JA:Key:fixme
foot: JA:Key:foot
footway: JA:Key:footway
+ forestry: JA:Key:forestry
forward: JA:Key:forward
furniture: JA:Key:furniture
+ generator:method: JA:Key:generator:method
+ generator:plant: JA:Key:generator:plant
generator:source: JA:Key:generator:source
genus: JA:Key:genus
geological: JA:Key:geological
+ happy_hours: JA:Key:happy hours
hazard_type: JA:Key:hazard type
+ hazmat: JA:Key:hazmat
+ healthcare: JA:Key:healthcare
height: JA:Key:height
+ hgv: JA:Key:hgv
highway: JA:Key:highway
historic: JA:Key:historic
+ horse: JA:Key:horse
+ iata: JA:Key:iata
+ icao: JA:Key:icao
+ image: JA:Key:image
incline: JA:Key:incline
information: JA:Key:information
+ inline_skates: JA:Key:inline skates
+ inscription: JA:Key:inscription
+ int_name: JA:Key:int name
+ intermittent: JA:Key:intermittent
internet_access: JA:Key:internet access
is_in: JA:Key:is in
+ is_in:continent: JA:Key:is in:continent
junction: JA:Key:junction
+ landmark: JA:Key:landmark
landuse: JA:Key:landuse
lanes: JA:Key:lanes
layer: JA:Key:layer
+ lcn_ref: JA:Key:lcn ref
leaf_cycle: JA:Key:leaf cycle
leaf_type: JA:Key:leaf type
left: JA:Key:left
leisure: JA:Key:leisure
+ length: JA:Key:length
level: JA:Key:level
level_crossing: JA:Key:level crossing
lit: JA:Key:lit
+ loc_name: JA:Key:loc name
+ loc_ref: JA:Key:loc ref
man_made: JA:Key:man made
+ maxaxleload: JA:Key:maxaxleload
+ maxheight: JA:Key:maxheight
+ maxheight:physical: JA:Key:maxheight:physical
+ maxlength: JA:Key:maxlength
maxspeed: JA:Key:maxspeed
+ maxweight: JA:Key:maxweight
+ maxwidth: JA:Key:maxwidth
+ maxwidth:physical: JA:Key:maxwidth:physical
military: JA:Key:military
+ minspeed: JA:Key:minspeed
+ moped: JA:Key:moped
+ motor_vehicle: JA:Key:motor vehicle
+ motorboat: JA:Key:motorboat
+ motorcar: JA:Key:motorcar
+ motorcycle: JA:Key:motorcycle
mountain_pass: JA:Key:mountain pass
name: JA:Key:name
+ name:cs: JA:Key:name:cs
+ name:de: JA:Key:name:de
+ name:en: JA:Key:name:en
+ narrow: JA:Key:narrow
+ nat_ref: JA:Key:nat ref
natural: JA:Key:natural
+ ncn_ref: JA:Key:ncn ref
+ network: JA:Key:network
+ noexit: JA:Key:noexit
note: JA:Key:note
+ office: JA:Key:office
official_name: JA:Key:official name
+ old_name: JA:Key:old name
+ old_ref: JA:Key:old ref
oneway: JA:Key:oneway
+ oneway:bicycle: JA:Key:oneway:bicycle
opening_hours: JA:Key:opening hours
operator: JA:Key:operator
+ organic: JA:Key:organic
+ outdoor_seating: JA:Key:outdoor seating
overtaking: JA:Key:overtaking
+ parking:condition: JA:Key:parking:condition
+ parking:lane: JA:Key:parking:lane
phone: JA:Key:phone
place: JA:Key:place
+ population: JA:Key:population
power: JA:Key:power
power_source: JA:Key:power source
power_supply: JA:Key:power supply
+ psv: JA:Key:psv
public_transport: JA:Key:public transport
+ public_transport:version: JA:Key:public transport:version
+ rack: JA:Key:rack
railway: JA:Key:railway
+ railway:preserved: JA:Key:railway:preserved
+ rcn_ref: JA:Key:rcn ref
ref: JA:Key:ref
+ ref:shop:num: JA:Key:ref:shop:num
reference: JA:Key:reference
+ reg_ref: JA:Key:reg ref
religion: JA:Key:religion
right: JA:Key:right
+ roadtrain: JA:Key:roadtrain
roof:material: JA:Key:roof:material
room: JA:Key:room
route: JA:Key:route
+ sac_scale: JA:Key:sac scale
+ salt: JA:Key:salt
seamark:fixme: JA:Key:seamark:fixme
segregated: JA:Key:segregated
service: JA:Key:service
+ service_times: JA:Key:service times
shop: JA:Key:shop
+ short_name: JA:Key:short name
sidewalk: JA:Key:sidewalk
smoothness: JA:Key:smoothness
social_facility: JA:Key:social facility
source: JA:Key:source
+ source:date: JA:Key:source:date
+ source:maxspeed: JA:Key:source:maxspeed
+ source:name: JA:Key:source:name
+ source:ref: JA:Key:source:ref
source_ref: JA:Key:source ref
species: JA:Key:species
sport: JA:Key:sport
start_date: JA:Key:start date
step_count: JA:Key:step count
surface: JA:Key:surface
+ surveillance: JA:Key:surveillance
+ survey:date: JA:Key:survey:date
tactile_paving: JA:Key:tactile paving
takeaway: JA:Key:takeaway
+ tank: JA:Key:tank
+ taxi: JA:Key:taxi
+ tenant: JA:Key:tenant
+ tidal: JA:Key:tidal
+ toilets:wheelchair: JA:Key:toilets:wheelchair
+ toll: JA:Key:toll
tourism: JA:Key:tourism
+ tower:type: JA:Key:tower:type
tracktype: JA:Key:tracktype
+ traffic_calming: JA:Key:traffic calming
+ trail_visibility: JA:Key:trail visibility
tunnel: JA:Key:tunnel
+ turn: JA:Key:turn
+ twitter: JA:Key:twitter
type: JA:Key:type
url: JA:Key:url
+ usage: JA:Key:usage
+ vehicle: JA:Key:vehicle
+ water: JA:Key:water
waterway: JA:Key:waterway
website: JA:Key:website
wheelchair: JA:Key:wheelchair
winter_road: JA:Key:winter road
wood: JA:Key:wood
tag:
- abandoned=yes: JA:Tag:abandoned=yes
access=designated: JA:Tag:access=designated
+ access=no: JA:Tag:access=no
+ access=private: JA:Tag:access=private
+ aerialway=cable_car: JA:Tag:aerialway=cable car
+ aerialway=t-bar: JA:Tag:aerialway=t-bar
+ aerialway=zip_line: JA:Tag:aerialway=zip line
+ aeroway=aerodrome: JA:Tag:aeroway=aerodrome
aeroway=apron: JA:Tag:aeroway=apron
aeroway=helipad: JA:Tag:aeroway=helipad
aeroway=runway: JA:Tag:aeroway=runway
aeroway=taxiway: JA:Tag:aeroway=taxiway
aeroway=terminal: JA:Tag:aeroway=terminal
+ amenity=animal_shelter: JA:Tag:amenity=animal shelter
amenity=arts_centre: JA:Tag:amenity=arts centre
amenity=atm: JA:Tag:amenity=atm
amenity=baby_hatch: JA:Tag:amenity=baby hatch
amenity=bench: JA:Tag:amenity=bench
amenity=bicycle_parking: JA:Tag:amenity=bicycle parking
amenity=bicycle_rental: JA:Tag:amenity=bicycle rental
+ amenity=bicycle_repair_station: JA:Tag:amenity=bicycle repair station
amenity=biergarten: JA:Tag:amenity=biergarten
amenity=boat_storage: JA:Tag:amenity=boat storage
amenity=brothel: JA:Tag:amenity=brothel
amenity=car_rental: JA:Tag:amenity=car rental
amenity=car_sharing: JA:Tag:amenity=car sharing
amenity=car_wash: JA:Tag:amenity=car wash
+ amenity=casino: JA:Tag:amenity=casino
amenity=charging_station: JA:Tag:amenity=charging station
+ amenity=childcare: JA:Tag:amenity=childcare
amenity=cinema: JA:Tag:amenity=cinema
amenity=clock: JA:Tag:amenity=clock
amenity=college: JA:Tag:amenity=college
amenity=community_centre: JA:Tag:amenity=community centre
+ amenity=compressed_air: JA:Tag:amenity=compressed air
amenity=courthouse: JA:Tag:amenity=courthouse
amenity=crematorium: JA:Tag:amenity=crematorium
amenity=dentist: JA:Tag:amenity=dentist
+ amenity=doctor: JA:Tag:amenity=doctor
amenity=doctors: JA:Tag:amenity=doctors
amenity=drinking_water: JA:Tag:amenity=drinking water
amenity=embassy: JA:Tag:amenity=embassy
amenity=fast_food: JA:Tag:amenity=fast food
amenity=ferry_terminal: JA:Tag:amenity=ferry terminal
+ amenity=financial_advice: JA:Tag:amenity=financial advice
amenity=fire_station: JA:Tag:amenity=fire station
amenity=food_court: JA:Tag:amenity=food court
amenity=fountain: JA:Tag:amenity=fountain
amenity=parking_entrance: JA:Tag:amenity=parking entrance
amenity=parking_space: JA:Tag:amenity=parking space
amenity=pharmacy: JA:Tag:amenity=pharmacy
+ amenity=photo_booth: JA:Tag:amenity=photo booth
amenity=place_of_worship: JA:Tag:amenity=place of worship
amenity=police: JA:Tag:amenity=police
amenity=post_box: JA:Tag:amenity=post box
amenity=post_office: JA:Tag:amenity=post office
amenity=prison: JA:Tag:amenity=prison
amenity=pub: JA:Tag:amenity=pub
+ amenity=public_bath: JA:Tag:amenity=public bath
+ amenity=public_bookcase: JA:Tag:amenity=public bookcase
amenity=public_building: JA:Tag:amenity=public building
amenity=recycling: JA:Tag:amenity=recycling
amenity=restaurant: JA:Tag:amenity=restaurant
amenity=watering_place: JA:Tag:amenity=watering place
atm=yes: JA:Tag:atm=yes
barrier=bollard: JA:Tag:barrier=bollard
+ barrier=ditch: JA:Tag:barrier=ditch
barrier=fence: JA:Tag:barrier=fence
barrier=gate: JA:Tag:barrier=gate
barrier=hedge: JA:Tag:barrier=hedge
barrier=retaining_wall: JA:Tag:barrier=retaining wall
barrier=toll_booth: JA:Tag:barrier=toll booth
barrier=wall: JA:Tag:barrier=wall
+ bicycle=designated: JA:Tag:bicycle=designated
boundary=administrative: JA:Tag:boundary=administrative
boundary=national_park: JA:Tag:boundary=national park
boundary=protected_area: JA:Tag:boundary=protected area
bridge=viaduct: JA:Tag:bridge=viaduct
+ building=bridge: JA:Tag:building=bridge
+ building=commercial: JA:Tag:building=commercial
+ building=hospital: JA:Tag:building=hospital
+ building=house: JA:Tag:building=house
+ building=industrial: JA:Tag:building=industrial
+ building=public: JA:Tag:building=public
+ building=roof: JA:Tag:building=roof
+ building=ruins: JA:Tag:building=ruins
+ building=shrine: JA:Tag:building=shrine
+ building=temple: JA:Tag:building=temple
building=train_station: JA:Tag:building=train station
craft=brewery: JA:Tag:craft=brewery
+ craft=chimney_sweeper: JA:Tag:craft=chimney sweeper
+ craft=floorer: JA:Tag:craft=floorer
+ craft=tailor: JA:Tag:craft=tailor
+ craft=winery: JA:Tag:craft=winery
emergency=defibrillator: JA:Tag:emergency=defibrillator
emergency=fire_extinguisher: JA:Tag:emergency=fire extinguisher
emergency=fire_hydrant: JA:Tag:emergency=fire hydrant
+ emergency=phone: JA:Tag:emergency=phone
foot=designated: JA:Tag:foot=designated
+ foot=private: JA:Tag:foot=private
+ footway=crossing: JA:Tag:footway=crossing
+ footway=sidewalk: JA:Tag:footway=sidewalk
+ generator:source=solar: JA:Tag:generator:source=solar
+ hgv=designated: JA:Tag:hgv=designated
highway=bus_stop: JA:Tag:highway=bus stop
highway=crossing: JA:Tag:highway=crossing
highway=cycleway: JA:Tag:highway=cycleway
+ highway=elevator: JA:Tag:highway=elevator
highway=footway: JA:Tag:highway=footway
highway=motorway: JA:Tag:highway=motorway
highway=motorway_junction: JA:Tag:highway=motorway junction
- highway=motorway_link: JA:Tag:highway=motorway link
+ highway=passing_place: JA:Tag:highway=passing place
highway=path: JA:Tag:highway=path
highway=pedestrian: JA:Tag:highway=pedestrian
+ highway=primary: JA:Tag:highway=primary
+ highway=raceway: JA:Tag:highway=raceway
highway=residential: JA:Tag:highway=residential
highway=rest_area: JA:Tag:highway=rest area
highway=road: JA:Tag:highway=road
highway=secondary: JA:Tag:highway=secondary
highway=service: JA:Tag:highway=service
highway=services: JA:Tag:highway=services
+ highway=speed_camera: JA:Tag:highway=speed camera
highway=steps: JA:Tag:highway=steps
highway=tertiary: JA:Tag:highway=tertiary
highway=track: JA:Tag:highway=track
highway=traffic_signals: JA:Tag:highway=traffic signals
highway=trunk: JA:Tag:highway=trunk
+ highway=turning_circle: JA:Tag:highway=turning circle
highway=unclassified: JA:Tag:highway=unclassified
historic=archaeological_site: JA:Tag:historic=archaeological site
historic=battlefield: JA:Tag:historic=battlefield
historic=boundary_stone: JA:Tag:historic=boundary stone
historic=monument: JA:Tag:historic=monument
+ historic=tomb: JA:Tag:historic=tomb
+ historic=wayside_shrine: JA:Tag:historic=wayside shrine
+ horse=designated: JA:Tag:horse=designated
information=guidepost: JA:Tag:information=guidepost
+ junction=roundabout: JA:Tag:junction=roundabout
+ junction=yes: JA:Tag:junction=yes
landuse=allotments: JA:Tag:landuse=allotments
landuse=basin: JA:Tag:landuse=basin
landuse=brownfield: JA:Tag:landuse=brownfield
landuse=cemetery: JA:Tag:landuse=cemetery
+ landuse=churchyard: JA:Tag:landuse=churchyard
landuse=commercial: JA:Tag:landuse=commercial
landuse=construction: JA:Tag:landuse=construction
landuse=farm: JA:Tag:landuse=farm
+ landuse=farmland: JA:Tag:landuse=farmland
landuse=farmyard: JA:Tag:landuse=farmyard
landuse=forest: JA:Tag:landuse=forest
landuse=garages: JA:Tag:landuse=garages
landuse=meadow: JA:Tag:landuse=meadow
landuse=military: JA:Tag:landuse=military
landuse=orchard: JA:Tag:landuse=orchard
+ landuse=peat_cutting: JA:Tag:landuse=peat cutting
landuse=plant_nursery: JA:Tag:landuse=plant nursery
+ landuse=port: JA:Tag:landuse=port
landuse=quarry: JA:Tag:landuse=quarry
landuse=railway: JA:Tag:landuse=railway
landuse=recreation_ground: JA:Tag:landuse=recreation ground
+ landuse=religious: JA:Tag:landuse=religious
landuse=reservoir: JA:Tag:landuse=reservoir
landuse=residential: JA:Tag:landuse=residential
landuse=retail: JA:Tag:landuse=retail
landuse=salt_pond: JA:Tag:landuse=salt pond
landuse=village_green: JA:Tag:landuse=village green
landuse=wood: JA:Tag:landuse=wood
+ leaf_type=broadleaved: JA:Tag:leaf type=broadleaved
+ leaf_type=leafless: JA:Tag:leaf type=leafless
+ leaf_type=mixed: JA:Tag:leaf type=mixed
+ leaf_type=needleleaved: JA:Tag:leaf type=needleleaved
+ leisure=adult_gaming_centre: JA:Tag:leisure=adult gaming centre
leisure=beach_resort: JA:Tag:leisure=beach resort
leisure=bird_hide: JA:Tag:leisure=bird hide
+ leisure=bowling_alley: JA:Tag:leisure=bowling alley
leisure=dance: JA:Tag:leisure=dance
leisure=dog_park: JA:Tag:leisure=dog park
leisure=garden: JA:Tag:leisure=garden
leisure=water_park: JA:Tag:leisure=water park
man_made=adit: JA:Tag:man made=adit
man_made=breakwater: JA:Tag:man made=breakwater
+ man_made=bridge: JA:Tag:man made=bridge
+ man_made=communications_tower: JA:Tag:man made=communications tower
man_made=crane: JA:Tag:man made=crane
man_made=cutline: JA:Tag:man made=cutline
man_made=flagpole: JA:Tag:man made=flagpole
man_made=groyne: JA:Tag:man made=groyne
man_made=kiln: JA:Tag:man made=kiln
man_made=lighthouse: JA:Tag:man made=lighthouse
+ man_made=mast: JA:Tag:man made=mast
man_made=mineshaft: JA:Tag:man made=mineshaft
+ man_made=monitoring_station: JA:Tag:man made=monitoring station
man_made=pier: JA:Tag:man made=pier
+ man_made=reservoir_covered: JA:Tag:man made=reservoir covered
+ man_made=street_cabinet: JA:Tag:man made=street cabinet
man_made=tower: JA:Tag:man made=tower
man_made=wastewater_plant: JA:Tag:man made=wastewater plant
man_made=water_well: JA:Tag:man made=water well
man_made=works: JA:Tag:man made=works
+ natural=arete: JA:Tag:natural=arete
+ natural=bare_rock: JA:Tag:natural=bare rock
natural=bay: JA:Tag:natural=bay
natural=beach: JA:Tag:natural=beach
natural=cliff: JA:Tag:natural=cliff
natural=fell: JA:Tag:natural=fell
natural=grassland: JA:Tag:natural=grassland
natural=heath: JA:Tag:natural=heath
+ natural=ridge: JA:Tag:natural=ridge
+ natural=saddle: JA:Tag:natural=saddle
natural=scree: JA:Tag:natural=scree
+ natural=scrub: JA:Tag:natural=scrub
+ natural=spring: JA:Tag:natural=spring
natural=tree: JA:Tag:natural=tree
natural=tree_row: JA:Tag:natural=tree row
natural=volcano: JA:Tag:natural=volcano
+ natural=water: JA:Tag:natural=water
natural=wetland: JA:Tag:natural=wetland
natural=wood: JA:Tag:natural=wood
+ place=archipelago: JA:Tag:place=archipelago
+ place=city: JA:Tag:place=city
+ place=continent: JA:Tag:place=continent
+ place=country: JA:Tag:place=country
+ place=county: JA:Tag:place=county
+ place=hamlet: JA:Tag:place=hamlet
place=island: JA:Tag:place=island
place=islet: JA:Tag:place=islet
+ place=locality: JA:Tag:place=locality
place=neighbourhood: JA:Tag:place=neighbourhood
+ place=state: JA:Tag:place=state
place=suburb: JA:Tag:place=suburb
+ place=town: JA:Tag:place=town
+ place=village: JA:Tag:place=village
power=generator: JA:Tag:power=generator
public_transport=platform: JA:Tag:public transport=platform
+ public_transport=station: JA:Tag:public transport=station
+ public_transport=stop_area: JA:Tag:public transport=stop area
+ public_transport=stop_position: JA:Tag:public transport=stop position
+ railway=abandoned: JA:Tag:railway=abandoned
railway=crossing: JA:Tag:railway=crossing
+ railway=disused: JA:Tag:railway=disused
+ railway=funicular: JA:Tag:railway=funicular
+ railway=halt: JA:Tag:railway=halt
railway=level_crossing: JA:Tag:railway=level crossing
+ railway=light_rail: JA:Tag:railway=light rail
+ railway=miniature: JA:Tag:railway=miniature
railway=monorail: JA:Tag:railway=monorail
+ railway=narrow_gauge: JA:Tag:railway=narrow gauge
+ railway=platform: JA:Tag:railway=platform
+ railway=preserved: JA:Tag:railway=preserved
railway=rail: JA:Tag:railway=rail
+ railway=roundhouse: JA:Tag:railway=roundhouse
railway=station: JA:Tag:railway=station
+ railway=stop: JA:Tag:railway=stop
railway=subway: JA:Tag:railway=subway
+ railway=subway_entrance: JA:Tag:railway=subway entrance
railway=tram: JA:Tag:railway=tram
+ railway=tram_stop: JA:Tag:railway=tram stop
+ railway=turntable: JA:Tag:railway=turntable
+ route=bicycle: JA:Tag:route=bicycle
+ route=bus: JA:Tag:route=bus
+ route=railway: JA:Tag:route=railway
route=road: JA:Tag:route=road
+ route=train: JA:Tag:route=train
+ service=alley: JA:Tag:service=alley
service=parking_aisle: JA:Tag:service=parking aisle
service=siding: JA:Tag:service=siding
service=spur: JA:Tag:service=spur
shop=deli: JA:Tag:shop=deli
shop=department_store: JA:Tag:shop=department store
shop=doityourself: JA:Tag:shop=doityourself
+ shop=estate_agent: JA:Tag:shop=estate agent
shop=florist: JA:Tag:shop=florist
shop=furniture: JA:Tag:shop=furniture
shop=garden_centre: JA:Tag:shop=garden centre
shop=general: JA:Tag:shop=general
shop=gift: JA:Tag:shop=gift
+ shop=greengrocer: JA:Tag:shop=greengrocer
shop=hairdresser: JA:Tag:shop=hairdresser
shop=kiosk: JA:Tag:shop=kiosk
shop=massage: JA:Tag:shop=massage
+ shop=money_lender: JA:Tag:shop=money lender
+ shop=moneylender: JA:Tag:shop=moneylender
shop=motorcycle: JA:Tag:shop=motorcycle
shop=outdoor: JA:Tag:shop=outdoor
+ shop=pastry: JA:Tag:shop=pastry
shop=pet: JA:Tag:shop=pet
shop=second_hand: JA:Tag:shop=second hand
shop=supermarket: JA:Tag:shop=supermarket
+ shop=tailor: JA:Tag:shop=tailor
shop=tobacco: JA:Tag:shop=tobacco
+ shop=vacant: JA:Tag:shop=vacant
shop=variety_store: JA:Tag:shop=variety store
+ shop=watches: JA:Tag:shop=watches
+ ski=designated: JA:Tag:ski=designated
+ snowmobile=designated: JA:Tag:snowmobile=designated
+ sport=10pin: JA:Tag:sport=10pin
+ sport=judo: JA:Tag:sport=judo
+ sport=sailing: JA:Tag:sport=sailing
+ sport=water_ski: JA:Tag:sport=water ski
+ tourism=artwork: JA:Tag:tourism=artwork
tourism=camp_site: JA:Tag:tourism=camp site
+ tourism=caravan_site: JA:Tag:tourism=caravan site
tourism=hostel: JA:Tag:tourism=hostel
tourism=hotel: JA:Tag:tourism=hotel
tourism=information: JA:Tag:tourism=information
tourism=picnic_site: JA:Tag:tourism=picnic site
tourism=viewpoint: JA:Tag:tourism=viewpoint
tunnel=culvert: JA:Tag:tunnel=culvert
+ type=public_transport: JA:Tag:type=public transport
+ vending=parking_tickets: JA:Tag:vending=parking tickets
+ water=river: JA:Tag:water=river
waterway=canal: JA:Tag:waterway=canal
waterway=dam: JA:Tag:waterway=dam
waterway=ditch: JA:Tag:waterway=ditch
+ waterway=dock: JA:Tag:waterway=dock
waterway=drain: JA:Tag:waterway=drain
waterway=lock_gate: JA:Tag:waterway=lock gate
+ waterway=river: JA:Tag:waterway=river
waterway=riverbank: JA:Tag:waterway=riverbank
waterway=stream: JA:Tag:waterway=stream
waterway=water_point: JA:Tag:waterway=water point
waterway=weir: JA:Tag:waterway=weir
ko:
key:
+ aerialway: Ko:Key:aerialway
ele: Ko:Key:ele
wikipedia: Ko:Key:wikipedia
tag:
+ aerialway=cable_car: Ko:Tag:aerialway=cable car
craft=tailor: Ko:Tag:craft=tailor
+ highway=motorway: Ko:Tag:highway=motorway
+ highway=track: Ko:Tag:highway=track
+ highway=trunk: Ko:Tag:highway=trunk
shop=garden_centre: Ko:Tag:shop=garden centre
shop=gift: Ko:Tag:shop=gift
lt:
key:
cycleway: Lt:Key:cycleway
+lv:
+ key:
+ highway: Lv:Key:highway
nl:
key:
AND_nosr_r: NL:Key:AND nosr r
emergency: NL:Key:emergency
fence_type: NL:Key:fence type
fenced: NL:Key:fenced
+ internet_access: NL:Key:internet access
landuse: NL:Key:landuse
leisure: NL:Key:leisure
man_made: NL:Key:man made
name: NL:Key:name
natural: NL:Key:natural
office: NL:Key:office
+ power_supply:schedule: NL:Key:power supply:schedule
public_transport: NL:Key:public transport
route_master: NL:Key:route master
scenic: NL:Key:scenic
bridge: Pl:Key:bridge
building: Pl:Key:building
building:cullis:height: Pl:Key:building:cullis:height
+ building:flats: Pl:Key:building:flats
building:levels: Pl:Key:building:levels
building:material: Pl:Key:building:material
building:min_level: Pl:Key:building:min level
bunker_type: Pl:Key:bunker type
bus: Pl:Key:bus
busway: Pl:Key:busway
+ button_operated: Pl:Key:button operated
capacity: Pl:Key:capacity
circumference: Pl:Key:circumference
colour: Pl:Key:colour
construction: Pl:Key:construction
contact: Pl:Key:contact
covered: Pl:Key:covered
+ craft: Pl:Key:craft
crop: Pl:Key:crop
crossing: Pl:Key:crossing
cutting: Pl:Key:cutting
designation: Pl:Key:designation
destination: Pl:Key:destination
diocese: Pl:Key:diocese
+ direction: Pl:Key:direction
+ dispensing: Pl:Key:dispensing
ele: Pl:Key:ele
electrified: Pl:Key:electrified
embankment: Pl:Key:embankment
end_date: Pl:Key:end date
entrance: Pl:Key:entrance
fee: Pl:Key:fee
+ fence_type: Pl:Key:fence type
fixme: Pl:Key:fixme
flood_prone: Pl:Key:flood prone
foot: Pl:Key:foot
landuse: Pl:Key:landuse
lanes: Pl:Key:lanes
lanes:psv: Pl:Key:lanes:psv
+ layer: Pl:Key:layer
+ leaf_type: Pl:Key:leaf type
leisure: Pl:Key:leisure
lit: Pl:Key:lit
location: Pl:Key:location
lock_name: Pl:Key:lock name
man_made: Pl:Key:man made
manhole: Pl:Key:manhole
+ maxaxleload: Pl:Key:maxaxleload
maxheight: Pl:Key:maxheight
maxspeed: Pl:Key:maxspeed
maxstay: Pl:Key:maxstay
+ maxweight: Pl:Key:maxweight
+ maxwidth: Pl:Key:maxwidth
min_height: Pl:Key:min height
+ mofa: Pl:Key:mofa
mooring: Pl:Key:mooring
+ moped: Pl:Key:moped
+ motorcycle: Pl:Key:motorcycle
name: Pl:Key:name
natural: Pl:Key:natural
noexit: Pl:Key:noexit
parking:lane: Pl:Key:parking:lane
place: Pl:Key:place
place_name: Pl:Key:place name
+ playground: Pl:Key:playground
population: Pl:Key:population
power: Pl:Key:power
+ priority: Pl:Key:priority
+ produce: Pl:Key:produce
+ product: Pl:Key:product
psv: Pl:Key:psv
public_transport: Pl:Key:public transport
railway: Pl:Key:railway
ramp: Pl:Key:ramp
recycling_type: Pl:Key:recycling type
religion: Pl:Key:religion
+ repair: Pl:Key:repair
resource: Pl:Key:resource
roof:material: Pl:Key:roof:material
route: Pl:Key:route
second_hand: Pl:Key:second hand
service: Pl:Key:service
service_times: Pl:Key:service times
+ shelter: Pl:Key:shelter
+ shelter_type: Pl:Key:shelter type
shop: Pl:Key:shop
sidewalk: Pl:Key:sidewalk
smoothness: Pl:Key:smoothness
+ social_facility: Pl:Key:social facility
+ social_facility:for: Pl:Key:social facility:for
source:date: Pl:Key:source:date
source:maxspeed: PL:Key:source:maxspeed
+ sport: Pl:Key:sport
start_date: Pl:Key:start date
step_count: Pl:Key:step count
surface: Pl:Key:surface
tourism: Pl:Key:tourism
tracktype: Pl:Key:tracktype
traffic_calming: Pl:Key:traffic calming
+ traffic_signals: Pl:Key:traffic signals
+ traffic_signals:arrow: Pl:Key:traffic signals:arrow
+ traffic_signals:direction: Pl:Key:traffic signals:direction
+ traffic_signals:floor_vibration: Pl:Key:traffic signals:floor vibration
+ traffic_signals:minimap: Pl:Key:traffic signals:minimap
+ traffic_signals:sound: Pl:Key:traffic signals:sound
+ traffic_signals:vibration: Pl:Key:traffic signals:vibration
train: Pl:Key:train
tram: Pl:Key:tram
trolleybus: Pl:Key:trolleybus
+ tunnel: Pl:Key:tunnel
turn: Pl:Key:turn
turn:lanes: Pl:Key:turn:lanes
type: Pl:Key:type
access=designated: Pl:Tag:access=designated
access=official: Pl:Tag:access=official
access=private: Pl:Tag:access=private
+ advertising=column: Pl:Tag:advertising=column
aeroway=hangar: Pl:Tag:aeroway=hangar
amenity=atm: Pl:Tag:amenity=atm
amenity=baby_hatch: Pl:Tag:amenity=baby hatch
amenity=ferry_terminal: Pl:Tag:amenity=ferry terminal
amenity=fire_station: Pl:Tag:amenity=fire station
amenity=fuel: Pl:Tag:amenity=fuel
+ amenity=game_feeding: Pl:Tag:amenity=game feeding
amenity=grave_yard: Pl:Tag:amenity=grave yard
+ amenity=marketplace: Pl:Tag:amenity=marketplace
amenity=parking: Pl:Tag:amenity=parking
amenity=parking_entrance: Pl:Tag:amenity=parking entrance
amenity=parking_space: Pl:Tag:amenity=parking space
amenity=post_office: Pl:Tag:amenity=post office
amenity=recycling: Pl:Tag:amenity=recycling
amenity=school: Pl:Tag:amenity=school
+ amenity=shelter: Pl:Tag:amenity=shelter
+ amenity=social_facility: Pl:Tag:amenity=social facility
amenity=taxi: Pl:Tag:amenity=taxi
amenity=vending_machine: Pl:Tag:amenity=vending machine
amenity=waste_disposal: Pl:Tag:amenity=waste disposal
barrier=fence: Pl:Tag:barrier=fence
barrier=gate: Pl:Tag:barrier=gate
barrier=guard_rail: Pl:Tag:barrier=guard rail
+ barrier=handrail: Pl:Tag:barrier=handrail
barrier=hedge: Pl:Tag:barrier=hedge
barrier=kerb: Pl:Tag:barrier=kerb
barrier=lift_gate: Pl:Tag:barrier=lift gate
barrier=toll_booth: Pl:Tag:barrier=toll booth
barrier=turnstile: Pl:Tag:barrier=turnstile
barrier=wall: Pl:Tag:barrier=wall
+ bicycle=use_sidepath: Pl:Tag:bicycle=use sidepath
boundary=administrative: Pl:Tag:boundary=administrative
boundary=religious_administration: Pl:Tag:boundary=religious administration
building=apartments: Pl:Tag:building=apartments
building=transportation: Pl:Tag:building=transportation
building=university: Pl:Tag:building=university
building=warehouse: Pl:Tag:building=warehouse
+ craft=agricultural_engines: Pl:Tag:craft=agricultural engines
craft=basket_maker: Pl:Tag:craft=basket maker
emergency=aed: Pl:Tag:emergency=aed
emergency=defibrillator: Pl:Tag:emergency=defibrillator
highway=give_way: Pl:Tag:highway=give way
highway=living_street: Pl:Tag:highway=living street
highway=milestone: Pl:Tag:highway=milestone
+ highway=mini_roundabout: Pl:Tag:highway=mini roundabout
highway=motorway: Pl:Tag:highway=motorway
highway=path: Pl:Tag:highway=path
highway=pedestrian: Pl:Tag:highway=pedestrian
highway=secondary: Pl:Tag:highway=secondary
highway=service: Pl:Tag:highway=service
highway=speed_camera: Pl:Tag:highway=speed camera
+ highway=steps: Pl:Tag:highway=steps
+ highway=stop: Pl:Tag:highway=stop
highway=street_lamp: Pl:Tag:highway=street lamp
highway=tertiary: Pl:Tag:highway=tertiary
highway=track: Pl:Tag:highway=track
+ highway=traffic_signals: Pl:Tag:highway=traffic signals
highway=trunk: Pl:Tag:highway=trunk
+ highway=turning_circle: Pl:Tag:highway=turning circle
highway=unclassified: Pl:Tag:highway=unclassified
historic=battlefield: Pl:Tag:historic=battlefield
historic=city_gate: Pl:Tag:historic=city gate
landuse=brownfield: Pl:Tag:landuse=brownfield
landuse=cemetery: Pl:Tag:landuse=cemetery
landuse=commercial: Pl:Tag:landuse=commercial
+ landuse=construction: Pl:Tag:landuse=construction
+ landuse=depot: Pl:Tag:landuse=depot
landuse=farm: Pl:Tag:landuse=farm
landuse=farmland: Pl:Tag:landuse=farmland
landuse=farmyard: Pl:Tag:landuse=farmyard
landuse=forest: Pl:Tag:landuse=forest
+ landuse=grass: Pl:Tag:landuse=grass
landuse=greenhouse_horticulture: Pl:Tag:landuse=greenhouse horticulture
landuse=landfill: Pl:Tag:landuse=landfill
landuse=meadow: Pl:Tag:landuse=meadow
landuse=plant_nursery: Pl:Tag:landuse=plant nursery
landuse=quarry: Pl:Tag:landuse=quarry
landuse=railway: Pl:Tag:landuse=railway
+ landuse=recreation_ground: Pl:Tag:landuse=recreation ground
landuse=religious: Pl:Tag:landuse=religious
landuse=residential: Pl:Tag:landuse=residential
landuse=retail: Pl:Tag:landuse=retail
+ landuse=village_green: Pl:Tag:landuse=village green
leisure=firepit: Pl:Tag:leisure=firepit
leisure=fishing: Pl:Tag:leisure=fishing
+ leisure=pitch: Pl:Tag:leisure=pitch
+ leisure=playground: Pl:Tag:leisure=playground
+ leisure=tanning_salon: Pl:Tag:leisure=tanning salon
man_made=adit: Pl:Tag:man made=adit
man_made=cross: Pl:Tag:man made=cross
man_made=cutline: Pl:Tag:man made=cutline
man_made=watermill: Pl:Tag:man made=watermill
man_made=windmill: Pl:Tag:man made=windmill
man_made=windpump: Pl:Tag:man made=windpump
+ man_made=works: Pl:Tag:man made=works
military=bunker: Pl:Tag:military=bunker
mooring=ferry: Pl:Tag:mooring=ferry
+ natural=arete: Pl:Tag:natural=arete
natural=bare_rock: Pl:Tag:natural=bare rock
natural=bay: Pl:Tag:natural=bay
natural=cave_entrance: Pl:Tag:natural=cave entrance
natural=grassland: Pl:Tag:natural=grassland
natural=heath: Pl:Tag:natural=heath
+ natural=ridge: Pl:Tag:natural=ridge
natural=scree: Pl:Tag:natural=scree
natural=scrub: Pl:Tag:natural=scrub
natural=sinkhole: Pl:Tag:natural=sinkhole
natural=tree_row: Pl:Tag:natural=tree row
natural=wetland: Pl:Tag:natural=wetland
natural=wood: Pl:Tag:natural=wood
+ office=religion: Pl:Tag:office=religion
place=city: Pl:Tag:place=city
place=farm: Pl:Tag:place=farm
place=hamlet: Pl:Tag:place=hamlet
power=minor_line: Pl:Tag:power=minor line
power=pole: Pl:Tag:power=pole
power=sub_station: Pl:Tag:power=sub station
+ power=substation: Pl:Tag:power=substation
power=tower: Pl:Tag:power=tower
power=transformer: Pl:Tag:power=transformer
public_transport=platform: Pl:Tag:public transport=platform
service=spur: Pl:Tag:service=spur
service=yard: Pl:Tag:service=yard
shop=baby_goods: Pl:Tag:shop=baby goods
+ shop=bakery: Pl:Tag:shop=bakery
shop=bathroom_furnishing: Pl:Tag:shop=bathroom furnishing
+ shop=beauty: Pl:Tag:shop=beauty
shop=bicycle: Pl:Tag:shop=bicycle
shop=confectionery: Pl:Tag:shop=confectionery
shop=convenience: Pl:Tag:shop=convenience
shop=funeral_directors: Pl:Tag:shop=funeral directors
shop=furniture: Pl:Tag:shop=furniture
shop=general: Pl:Tag:shop=general
+ shop=haberdashery: PL:Tag:shop=haberdashery
+ shop=hairdresser: Pl:Tag:shop=hairdresser
shop=houseware: Pl:Tag:shop=houseware
shop=kitchen: Pl:Tag:shop=kitchen
shop=pastry: Pl:Tag:shop=pastry
shop=second_hand: Pl:Tag:shop=second hand
shop=supermarket: Pl:Tag:shop=supermarket
+ shop=tea: Pl:Tag:shop=tea
shop=travel_agency: Pl:Tag:shop=travel agency
shop=variety_store: Pl:Tag:shop=variety store
+ social_facility=outreach: Pl:Tag:social facility=outreach
sport=aikido: Pl:Tag:sport=aikido
sport=climbing: Pl:Tag:sport=climbing
tourism=artwork: Pl:Tag:tourism=artwork
tourism=zoo: Pl:Tag:tourism=zoo
tunnel=culvert: Pl:Tag:tunnel=culvert
type=public_transport: Pl:Tag:type=public transport
+ wall=noise_barrier: Pl:Tag:wall=noise barrier
waterway=boatyard: Pl:Tag:waterway=boatyard
waterway=canal: Pl:Tag:waterway=canal
waterway=dam: Pl:Tag:waterway=dam
wood=mixed: Pl:Tag:wood=mixed
pt:
key:
+ IBGE:CD_ADMINIS: Pt:Key:IBGE:CD ADMINIS
+ IBGE:GEOCODIGO: Pt:Key:IBGE:GEOCODIGO
country: Pt:Key:country
+ dispensing: Pt:Key:dispensing
+ driving_side: Pt:Key:driving side
+ heritage: Pt:Key:heritage
highway: Pt:Key:highway
+ iata: Pt:Key:iata
+ icao: Pt:Key:icao
+ maxheight:legal: Pt:Key:maxheight:legal
+ maxheight:marine: Pt:Key:maxheight:marine
+ maxheight:physical: Pt:Key:maxheight:physical
+ noexit: Pt:Key:noexit
postal_code: Pt:Key:postal code
ref:bag: Pt:Key:ref:bag
+ religion: Pt:Key:religion
source: Pt:Key:source
sport: Pt:Key:sport
tiger: Pt:Key:tiger
tracktype: Pt:Key:tracktype
+ waterway: Pt:Key:waterway
wikidata: Pt:Key:wikidata
tag:
aeroway=hangar: Pt:Tag:aeroway=hangar
aeroway=holding_position: Pt:Tag:aeroway=holding position
aeroway=parking_position: Pt:Tag:aeroway=parking position
amenity=bicycle_parking: Pt:Tag:amenity=bicycle parking
+ amenity=crematorium: Pt:Tag:amenity=crematorium
amenity=hospital: Pt:Tag:amenity=hospital
amenity=marketplace: Pt:Tag:amenity=marketplace
amenity=parking: Pt:Tag:amenity=parking
+ amenity=parking_entrance: Pt:Tag:amenity=parking entrance
+ craft=upholsterer: Pt:Tag:craft=upholsterer
+ highway=motorway: Pt:Tag:highway=motorway
highway=primary: Pt:Tag:highway=primary
+ highway=residential: Pt:Tag:highway=residential
+ highway=secondary: Pt:Tag:highway=secondary
+ highway=tertiary: Pt:Tag:highway=tertiary
+ highway=trunk: Pt:Tag:highway=trunk
+ highway=unclassified: Pt:Tag:highway=unclassified
leisure=fishing: Pt:Tag:leisure=fishing
leisure=garden: Pt:Tag:leisure=garden
leisure=golf_course: Pt:Tag:leisure=golf course
natural=coastline: Pt:Tag:natural=coastline
natural=wetland: PT:Tag:natural=wetland
noexit=no: Pt:Tag:noexit=no
+ shop=jewelry: Pt:Tag:shop=jewelry
+ shop=lottery: Pt:Tag:shop=lottery
+ shop=perfumery: Pt:Tag:shop=perfumery
+ shop=watches: Pt:Tag:shop=watches
sport=golf: Pt:Tag:sport=golf
+ traffic_calming=table: Pt:Tag:traffic calming=table
+ waterway=river: Pt:Tag:waterway=river
+ waterway=riverbank: Pt:Tag:waterway=riverbank
+ waterway=stream: Pt:Tag:waterway=stream
pt br:
key:
highway: Pt br:Key:highway
fishing: Pt-br:Key:fishing
foot: Pt-br:Key:foot
frequency: Pt-br:Key:frequency
+ generator:method: Pt-br:Key:generator:method
geological: Pt-br:Key:geological
hgv: Pt-br:Key:hgv
highway: Pt-br:Key:highway
segregated: Pt-br:Key:segregated
service: Pt-br:Key:service
shop: Pt-br:Key:shop
+ short_name: Pt-br:Key:short name
sidewalk: Pt-br:Key:sidewalk
ski: Pt-br:Key:ski
smoothness: Pt-br:Key:smoothness
source_ref: Pt-br:Key:source ref
sport: Pt-br:Key:sport
surface: Pt-br:Key:surface
+ survey:date: Pt-br:Key:survey:date
taxi: Pt-br:Key:taxi
tiger: Pt-br:Key:tiger
tourism: Pt-br:Key:tourism
amenity=bbq: Pt-br:Tag:amenity=bbq
amenity=bench: Pt-br:Tag:amenity=bench
amenity=bicycke_parking: Pt-br:Tag:amenity=bicycke parking
+ amenity=bicycle_parking: Pt-br:Tag:amenity=bicycle parking
amenity=bicycle_rental: Pt-br:Tag:amenity=bicycle rental
amenity=biergarten: Pt-br:Tag:amenity=biergarten
amenity=brothel: Pt-br:Tag:amenity=brothel
amenity=pub: Pt-br:Tag:amenity=pub
amenity=public_building: Pt-br:Tag:amenity=public building
amenity=recycling: Pt-br:Tag:amenity=recycling
+ amenity=register_office: Pt-br:Tag:amenity=register office
amenity=restaurant: Pt-br:Tag:amenity=restaurant
amenity=sauna: Pt-br:Tag:amenity=sauna
amenity=school: Pt-br:Tag:amenity=school
craft=tailor: Pt-br:Tag:craft=tailor
craft=tiler: Pt-br:Tag:craft=tiler
craft=tinsmith: Pt-br:Tag:craft=tinsmith
+ craft=upholsterer: Pt-br:Tag:craft=upholsterer
craft=upholstrer: Pt-br:Tag:craft=upholstrer
craft=watchmaker: Pt-br:Tag:craft=watchmaker
emergency=ambulance_station: Pt-br:Tag:emergency=ambulance station
tourism=theme_park: Pt-br:Tag:tourism=theme park
tourism=viewpoint: Pt-br:Tag:tourism=viewpoint
tourism=zoo: Pt-br:Tag:tourism=zoo
+ traffic_calming=table: Pt-br:Tag:traffic calming=table
waterway=boatyard: Pt-br:Tag:waterway=boatyard
waterway=canal: Pt-br:Tag:waterway=canal
waterway=dam: Pt-br:Tag:waterway=dam
addr:suburb: RU:Key:addr:suburb
aerialway: RU:Key:aerialway
aeroway: RU:Key:aeroway
- agricultural: RU:Key:agricultural
alt_name: RU:Key:alt name
amenity: RU:Key:amenity
area: RU:Key:area
area:highway: RU:Key:area:highway
+ artwork_type: RU:Key:artwork type
barrier: RU:Key:barrier
bench: RU:Key:bench
bicycle: RU:Key:bicycle
denomination: RU:Key:denomination
description: RU:Key:description
description:ru: RU:Key:description:ru
+ design:code:SPb: RU:Key:design:code:SPb
+ design:ref: RU:Key:design:ref
designation: RU:Key:designation
direction: RU:Key:direction
dispensing: RU:Key:dispensing
disused: RU:Key:disused
disused:shop: RU:Key:disused:shop
+ drinking_water: RU:Key:drinking water
drive_in: RU:Key:drive in
+ driving_side: RU:Key:driving side
ele: RU:Key:ele
electrified: RU:Key:electrified
embankment: RU:Key:embankment
fee: RU:Key:fee
fence_type: RU:Key:fence type
ferry: RU:Key:ferry
+ fire_boundary: RU:Key:fire boundary
+ fire_object:type: RU:Key:fire object:type
+ fire_operator: RU:Key:fire operator
+ fire_rank: RU:Key:fire rank
fixme: RU:Key:fixme
foot: RU:Key:foot
footway: RU:Key:footway
fuel: RU:Key:fuel
fuel:cng: RU:Key:fuel:cng
fuel:lpg: RU:Key:fuel:lpg
+ furniture: RU:Key:furniture
further: RU:Key:further
further:access: RU:Key:further:access
further:vehicle: RU:Key:further:vehicle
+ gas: RU:Key:gas
gauge: RU:Key:gauge
generator:output: RU:Key:generator:output
generator:source: RU:Key:generator:source
+ grassland: RU:Key:grassland
gvr:code: RU:Key:gvr:code
handrail: RU:Key:handrail
height: RU:Key:height
historic: RU:Key:historic
horse: RU:Key:horse
ice_road: RU:Key:ice road
+ image: RU:Key:image
incline: RU:Key:incline
information: RU:Key:information
inscription: RU:Key:inscription
landuse: RU:Key:landuse
lanes: RU:Key:lanes
layer: RU:Key:layer
+ leaf_cycle: RU:Key:leaf cycle
leaf_type: RU:Key:leaf type
leisure: RU:Key:leisure
length: RU:Key:length
level: RU:Key:level
+ living_street: RU:Key:living street
loc_name: RU:Key:loc name
loc_ref: RU:Key:loc ref
+ lock: RU:Key:lock
man_made: RU:Key:man made
manhole: RU:Key:manhole
maxaxleload: RU:Key:maxaxleload
opening_date: RU:Key:opening date
opening_hours: RU:Key:opening hours
operator: RU:Key:operator
+ operator:type: RU:Key:operator:type
overtaking: RU:Key:overtaking
+ owner: RU:Key:owner
+ ownership: RU:Key:ownership
parking: RU:Key:parking
parking:lane: RU:Key:parking:lane
passing_places: RU:Key:passing places
paved:date: RU:Key:paved:date
payment: RU:Key:payment
+ payment:notes: RU:Key:payment:notes
phone: RU:Key:phone
piste:type: RU:Key:piste:type
place: RU:Key:place
resource: RU:Key:resource
roof:material: RU:Key:roof:material
route: RU:Key:route
+ ruined: RU:Key:ruined
ruins: RU:Key:ruins
+ salt: RU:Key:salt
seasonal:snowfall:regaintime: RU:Key:seasonal:snowfall:regaintime
service: RU:Key:service
service_times: RU:Key:service times
social_facility: RU:Key:social facility
sorting_name: RU:Key:sorting name
source: RU:Key:source
+ source:addr: RU:Key:source:addr
source:maxspeed: RU:Key:source:maxspeed
source_ref: RU:Key:source ref
species: RU:Key:species
sport: RU:Key:sport
surface: RU:Key:surface
surveillance: RU:Key:surveillance
+ survey:date: RU:Key:survey:date
tactile_paving: RU:Key:tactile paving
toll: RU:Key:toll
tourism: RU:Key:tourism
aeroway=aerodrome: RU:Tag:aeroway=aerodrome
aeroway=apron: RU:Tag:aeroway=apron
aeroway=gate: RU:Tag:aeroway=gate
+ aeroway=hangar: RU:Tag:aeroway=hangar
aeroway=helipad: RU:Tag:aeroway=helipad
aeroway=navigationaid: RU:Tag:aeroway=navigationaid
aeroway=runway: RU:Tag:aeroway=runway
amenity=animal_shelter: RU:Tag:amenity=animal shelter
amenity=arts_centre: RU:Tag:amenity=arts centre
amenity=atm: RU:Tag:amenity=atm
+ amenity=baby_hatch: RU:Tag:amenity=baby hatch
amenity=bank: RU:Tag:amenity=bank
amenity=bar: RU:Tag:amenity=bar
amenity=bbq: RU:Tag:amenity=bbq
amenity=community_centre: RU:Tag:amenity=community centre
amenity=compressed_air: RU:Tag:amenity=compressed air
amenity=courthouse: RU:Tag:amenity=courthouse
+ amenity=coworking_space: RU:Tag:amenity=coworking space
amenity=crematorium: RU:Tag:amenity=crematorium
amenity=dentist: RU:Tag:amenity=dentist
amenity=doctors: RU:Tag:amenity=doctors
amenity=marketplace: RU:Tag:amenity=marketplace
amenity=monastery: RU:Tag:amenity=monastery
amenity=mortuary: RU:Tag:amenity=mortuary
+ amenity=motorcycle_parking: RU:Tag:amenity=motorcycle parking
amenity=nightclub: RU:Tag:amenity=nightclub
amenity=nursing_home: RU:Tag:amenity=nursing home
amenity=parking: RU:Tag:amenity=parking
amenity=payment_terminal: RU:Tag:amenity=payment terminal
amenity=pharmacy: RU:Tag:amenity=pharmacy
amenity=place_of_worship: RU:Tag:amenity=place of worship
+ amenity=planetarium: RU:Tag:amenity=planetarium
amenity=police: RU:Tag:amenity=police
amenity=post_box: RU:Tag:amenity=post box
amenity=post_office: RU:Tag:amenity=post office
amenity=prison: RU:Tag:amenity=prison
amenity=pub: RU:Tag:amenity=pub
+ amenity=public_bookcase: RU:Tag:amenity=public bookcase
amenity=public_building: RU:Tag:amenity=public building
amenity=recycling: RU:Tag:amenity=recycling
amenity=register_office: RU:Tag:amenity=register office
+ amenity=rescue_station: RU:Tag:amenity=rescue station
amenity=restaurant: RU:Tag:amenity=restaurant
amenity=sauna: RU:Tag:amenity=sauna
amenity=school: RU:Tag:amenity=school
amenity=veterinary: RU:Tag:amenity=veterinary
amenity=waste_basket: RU:Tag:amenity=waste basket
amenity=waste_disposal: RU:Tag:amenity=waste disposal
+ amenity=water_point: RU:Tag:amenity=water point
+ amenity=watering_place: RU:Tag:amenity=watering place
atm=yes: RU:Tag:atm=yes
barrier=block: RU:Tag:barrier=block
barrier=bollard: RU:Tag:barrier=bollard
barrier=fence: RU:Tag:barrier=fence
barrier=gate: RU:Tag:barrier=gate
barrier=hedge: RU:Tag:barrier=hedge
+ barrier=kerb: RU:Tag:barrier=kerb
barrier=lift_gate: RU:Tag:barrier=lift gate
barrier=retaining_wall: RU:Tag:barrier=retaining wall
barrier=sally_port: RU:Tag:barrier=sally port
barrier=turnstile: RU:Tag:barrier=turnstile
barrier=wall: RU:Tag:barrier=wall
bicycle=designated: RU:Tag:bicycle=designated
+ boundary=forestry_compartment: RU:Tag:boundary=forestry compartment
+ boundary=postal_code: RU:Tag:boundary=postal code
+ boundary=protected_area: RU:Tag:boundary=protected area
+ bridge:movable=bascule: RU:Tag:bridge:movable=bascule
+ bridge:movable=drawbridge: RU:Tag:bridge:movable=drawbridge
+ bridge:movable=lift: RU:Tag:bridge:movable=lift
+ bridge:movable=submersible: RU:Tag:bridge:movable=submersible
+ bridge:movable=swing: RU:Tag:bridge:movable=swing
+ bridge:movable=transporter: RU:Tag:bridge:movable=transporter
+ bridge:structure=arch: RU:Tag:bridge:structure=arch
+ bridge:structure=beam: RU:Tag:bridge:structure=beam
+ bridge:structure=cable-stayed: RU:Tag:bridge:structure=cable-stayed
+ bridge:structure=humpback: RU:Tag:bridge:structure=humpback
+ bridge:structure=suspension: RU:Tag:bridge:structure=suspension
+ bridge=cantilever: RU:Tag:bridge=cantilever
+ bridge=covered: RU:Tag:bridge=covered
+ building=apartments: RU:Tag:building=apartments
building=cathedral: RU:Tag:building=cathedral
building=chapel: RU:Tag:building=chapel
building=church: RU:Tag:building=church
building=detached: RU:Tag:building=detached
building=dormitory: RU:Tag:building=dormitory
building=entrance: RU:Tag:building=entrance
+ building=font: RU:Tag:building=font
building=garage: RU:Tag:building=garage
building=garages: RU:Tag:building=garages
+ building=hangar: RU:Tag:building=hangar
+ building=hut: RU:Tag:building=hut
building=roof: RU:Tag:building=roof
building=shed: RU:Tag:building=shed
building=stable: RU:Tag:building=stable
craft=electrician: RU:Tag:craft=electrician
craft=glaziery: RU:Tag:craft=glaziery
craft=handicraft: RU:Tag:craft=handicraft
+ craft=photographer: RU:Tag:craft=photographer
craft=shoemaker: RU:Tag:craft=shoemaker
craft=tailor: RU:Tag:craft=tailor
+ craft=window_construction: RU:Tag:craft=window construction
emergency=ambulance_station: RU:Tag:emergency=ambulance station
emergency=fire_hydrant: RU:Tag:emergency=fire hydrant
emergency=fire_water_pond: RU:Tag:emergency=fire water pond
+ emergency=water_tank: RU:Tag:emergency=water tank
+ entrance=staircase: RU:Tag:entrance=staircase
fast_food=cafeteria: RU:Tag:fast food=cafeteria
foot=designated: RU:Tag:foot=designated
footway=crossing: RU:Tag:footway=crossing
footway=sidewalk: RU:Tag:footway=sidewalk
+ generator:method=anaerobic_digestion: RU:Tag:generator:method=anaerobic digestion
geological=palaeontological_site: RU:Tag:geological=palaeontological site
highway=bridleway: RU:Tag:highway=bridleway
+ highway=bus_guideway: RU:Tag:highway=bus guideway
highway=bus_stop: RU:Tag:highway=bus stop
highway=construction: RU:Tag:highway=construction
highway=crossing: RU:Tag:highway=crossing
highway=platform: RU:Tag:highway=platform
highway=primary: RU:Tag:highway=primary
highway=primary_link: RU:Tag:highway=primary link
+ highway=raceway: RU:Tag:highway=raceway
highway=residential: RU:Tag:highway=residential
highway=rest_area: RU:Tag:highway=rest area
highway=road: RU:Tag:highway=road
junction=roundabout: RU:Tag:junction=roundabout
landuse=allotments: RU:Tag:landuse=allotments
landuse=basin: RU:Tag:landuse=basin
+ landuse=brownfield: RU:Tag:landuse=brownfield
landuse=cemetery: RU:Tag:landuse=cemetery
landuse=commercial: RU:Tag:landuse=commercial
landuse=construction: RU:Tag:landuse=construction
+ landuse=depot: RU:Tag:landuse=depot
landuse=farm: RU:Tag:landuse=farm
landuse=forest: RU:Tag:landuse=forest
landuse=garages: RU:Tag:landuse=garages
landuse=reservoir: RU:Tag:landuse=reservoir
landuse=residential: RU:Tag:landuse=residential
landuse=retail: RU:Tag:landuse=retail
+ landuse=salt_pond: RU:Tag:landuse=salt pond
landuse=village_green: RU:Tag:landuse=village green
landuse=vineyard: RU:Tag:landuse=vineyard
+ leaf_cycle=deciduous: RU:Tag:leaf cycle=deciduous
+ leaf_cycle=evergreen: RU:Tag:leaf cycle=evergreen
+ leaf_cycle=mixed: RU:Tag:leaf cycle=mixed
leisure=beach_resort: RU:Tag:leisure=beach resort
leisure=common: RU:Tag:leisure=common
leisure=dance: RU:Tag:leisure=dance
leisure=firepit: RU:Tag:leisure=firepit
leisure=ice_rink: RU:Tag:leisure=ice rink
leisure=marina: RU:Tag:leisure=marina
+ leisure=miniature_golf: RU:Tag:leisure=miniature golf
leisure=park: RU:Tag:leisure=park
leisure=pitch: RU:Tag:leisure=pitch
leisure=playground: RU:Tag:leisure=playground
leisure=sports_centre: RU:Tag:leisure=sports centre
leisure=stadium: RU:Tag:leisure=stadium
+ leisure=summer_camp: RU:Tag:leisure=summer camp
leisure=swimming_pool: RU:Tag:leisure=swimming pool
leisure=track: RU:Tag:leisure=track
leisure=water_park: RU:Tag:leisure=water park
- living_street: RU:Tag:living street
- living_street=yes: RU:Tag:living street=yes
man_made=adit: RU:Tag:man made=adit
man_made=beacon: RU:Tag:man made=beacon
man_made=breakwater: RU:Tag:man made=breakwater
+ man_made=crane: RU:Tag:man made=crane
man_made=cutline: RU:Tag:man made=cutline
+ man_made=dyke: RU:Tag:man made=dyke
+ man_made=embankment: RU:Tag:man made=embankment
man_made=lighthouse: RU:Tag:man made=lighthouse
+ man_made=mineshaft: RU:Tag:man made=mineshaft
man_made=monitoring_station: RU:Tag:man made=monitoring station
+ man_made=obelisk: RU:Tag:man made=obelisk
man_made=pier: RU:Tag:man made=pier
man_made=pillar: RU:Tag:man made=pillar
man_made=pipeline: RU:Tag:man made=pipeline
man_made=reservoir_covered: RU:Tag:man made=reservoir covered
+ man_made=storage_tank: RU:Tag:man made=storage tank
man_made=surveillance: RU:Tag:man made=surveillance
+ man_made=survey_point: RU:Tag:man made=survey point
man_made=tower: RU:Tag:man made=tower
man_made=wastewater_plant: RU:Tag:man made=wastewater plant
man_made=water_tower: RU:Tag:man made=water tower
+ man_made=water_well: RU:Tag:man made=water well
man_made=water_works: RU:Tag:man made=water works
+ man_made=watermill: RU:Tag:man made=watermill
+ man_made=windmill: RU:Tag:man made=windmill
+ man_made=works: RU:Tag:man made=works
military=airfield: RU:Tag:military=airfield
natural=arete: RU:Tag:natural=arete
+ natural=bare_rock: RU:Tag:natural=bare rock
natural=beach: RU:Tag:natural=beach
+ natural=cave_entrance: RU:Tag:natural=cave entrance
natural=cliff: RU:Tag:natural=cliff
natural=coastline: RU:Tag:natural=coastline
natural=desert: RU:Tag:natural=desert
natural=fell: RU:Tag:natural=fell
+ natural=glacier: RU:Tag:natural=glacier
natural=grassland: RU:Tag:natural=grassland
+ natural=gully: RU:Tag:natural=gully
natural=heath: RU:Tag:natural=heath
natural=peak: RU:Tag:natural=peak
natural=ridge: RU:Tag:natural=ridge
natural=saddle: RU:Tag:natural=saddle
natural=sand: RU:Tag:natural=sand
+ natural=scree: RU:Tag:natural=scree
natural=scrub: RU:Tag:natural=scrub
+ natural=sinkhole: RU:Tag:natural=sinkhole
natural=spring: RU:Tag:natural=spring
natural=tree: RU:Tag:natural=tree
natural=tree_row: RU:Tag:natural=tree row
+ natural=valley: RU:Tag:natural=valley
natural=volcano: RU:Tag:natural=volcano
natural=water: RU:Tag:natural=water
natural=wetland: RU:Tag:natural=wetland
place=isolated_dwelling: RU:Tag:place=isolated dwelling
place=locality: RU:Tag:place=locality
place=neighbourhood: RU:Tag:place=neighbourhood
+ place=quarter: RU:Tag:place=quarter
place=suburb: RU:Tag:place=suburb
place=town: RU:Tag:place=town
place=village: RU:Tag:place=village
public_transport=platform: RU:Tag:public transport=platform
public_transport=station: RU:Tag:public transport=station
public_transport=stop_position: RU:Tag:public transport=stop position
+ railway=abandoned: RU:Tag:railway=abandoned
railway=crossing: RU:Tag:railway=crossing
railway=level_crossing: RU:Tag:railway=level crossing
railway=miniature: RU:Tag:railway=miniature
railway=subway: RU:Tag:railway=subway
railway=subway_entrance: RU:Tag:railway=subway entrance
railway=tram: RU:Tag:railway=tram
+ railway=turntable: RU:Tag:railway=turntable
religion=pagan: RU:Tag:religion=pagan
route=bus: RU:Tag:route=bus
route=ferry: RU:Tag:route=ferry
social_facility=group_home: RU:Tag:social facility=group home
sport=archery: RU:Tag:sport=archery
sport=scuba_diving: RU:Tag:sport=scuba diving
+ substance: RU:Tag:substance
+ tourism=apartment: RU:Tag:tourism=apartment
tourism=artwork: RU:Tag:tourism=artwork
tourism=attraction: RU:Tag:tourism=attraction
tourism=camp_site: RU:Tag:tourism=camp site
tourism=chalet: RU:Tag:tourism=chalet
+ tourism=gallery: RU:Tag:tourism=gallery
tourism=guest_house: RU:Tag:tourism=guest house
tourism=hostel: RU:Tag:tourism=hostel
tourism=hotel: RU:Tag:tourism=hotel
waterway=dam: RU:Tag:waterway=dam
waterway=dock: RU:Tag:waterway=dock
waterway=drain: RU:Tag:waterway=drain
+ waterway=drystream: RU:Tag:waterway=drystream
+ waterway=lock_gate: RU:Tag:waterway=lock gate
waterway=rapids: RU:Tag:waterway=rapids
waterway=river: RU:Tag:waterway=river
waterway=riverbank: RU:Tag:waterway=riverbank
sh:
key:
tracktype: Sh:Key:tracktype
+sk:
+ key:
+ checkpoint: Sk:Key:checkpoint
sq:
key:
highway: Sq:Key:highway
access: Uk:Key:access
alt_name: Uk:Key:alt name
amenity: Uk:Key:amenity
+ arcade: Uk:Key:arcade
area: Uk:Key:area
+ area:highway: Uk:Key:area:highway
+ backward: Uk:Key:backward
bench: Uk:Key:bench
bicycle: Uk:Key:bicycle
bicycle_parking: Uk:Key:bicycle parking
+ boundary: Uk:Key:boundary
bridge: Uk:Key:bridge
building: Uk:Key:building
building:use: Uk:Key:building:use
+ colonnade: Uk:Key:colonnade
+ covered: Uk:Key:covered
cutting: Uk:Key:cutting
+ destination: Uk:Key:destination
embankment: Uk:Key:embankment
emergency: Uk:Key:emergency
entrance: Uk:Key:entrance
est_width: Uk:Key:est width
+ exit_to: Uk:Key:exit to
ford: Uk:Key:ford
+ forward: Uk:Key:forward
+ height: Uk:Key:height
highway: Uk:Key:highway
+ historic: Uk:Key:historic
+ inscription: Uk:Key:inscription
+ inscription:url: Uk:Key:inscription:url
int_name: Uk:Key:int name
+ landuse: Uk:Key:landuse
lanes: Uk:Key:lanes
layer: Uk:Key:layer
+ left: Uk:Key:left
+ length: Uk:Key:length
loc_name: Uk:Key:loc name
+ man_made: Uk:Key:man made
+ managed: Uk:Key:managed
maxheight: Uk:Key:maxheight
maxspeed: Uk:Key:maxspeed
motorroad: Uk:Key:motorroad
name: Uk:Key:name
+ name:de: Uk:Key:name:de
name:el: Uk:Key:name:el
name:en: Uk:Key:name:en
+ name:fr: Uk:Key:name:fr
name:ja: Uk:Key:name:ja
name:ru: Uk:Key:name:ru
+ name:uk: Uk:Key:name:uk
nat_name: Uk:Key:nat name
+ natural: Uk:Key:natural
office: Uk:Key:office
official_name: Uk:Key:official name
+ official_name:ru: Uk:Key:official name:ru
old_name: Uk:Key:old name
oneway: Uk:Key:oneway
oneway:bicycle: Uk:Key:oneway:bicycle
oneway:moped: Uk:Key:oneway:moped
place: Uk:Key:place
playground: Uk:Key:playground
+ power: Uk:Key:power
railway: Uk:Key:railway
ref: Uk:Key:ref
reference: Uk:Key:reference
reg_name: Uk:Key:reg name
+ right: Uk:Key:right
service: Uk:Key:service
shelter_type: Uk:Key:shelter type
+ short_name: Uk:Key:short name
+ short_name:ru: Uk:Key:short name:ru
+ sorting_name: Uk:Key:sorting name
surface: Uk:Key:surface
tracktype: Uk:Key:tracktype
traffic_sign: Uk:Key:traffic sign
tunnel: Uk:Key:tunnel
url: Uk:Key:url
vehicle: Uk:Key:vehicle
+ water: Uk:Key:water
waterway: Uk:Key:waterway
width: Uk:Key:width
wood: Uk:Key:wood
amenity=bench: Uk:Tag:amenity=bench
amenity=bicycle_parking: Uk:Tag:amenity=bicycle parking
amenity=bicycle_rental: Uk:Tag:amenity=bicycle rental
+ amenity=fuel: Uk:Tag:amenity=fuel
+ amenity=place_of_worship: Uk:Tag:amenity=place of worship
+ amenity=post_office: Uk:Tag:amenity=post office
amenity=school: Uk:Tag:amenity=school
amenity=shelter: Uk:Tag:amenity=shelter
amenity=university: Uk:Tag:amenity=university
emergency=fire_hydrant: Uk:Tag:emergency=fire hydrant
+ emergency=fire_water_pond: Uk:Tag:emergency=fire water pond
+ emergency=suction_point: Uk:Tag:emergency=suction point
+ emergency=water_tank: Uk:Tag:emergency=water tank
highway=bridleway: Uk:Tag:highway=bridleway
+ highway=cycleway: Uk:Tag:highway=cycleway
+ highway=footway: Uk:Tag:highway=footway
highway=ford: Uk:Tag:highway=ford
highway=living_street: Uk:Tag:highway=living street
highway=motorway: Uk:Tag:highway=motorway
+ highway=motorway_junction: Uk:Tag:highway=motorway junction
highway=motorway_link: Uk:Tag:highway=motorway link
+ highway=path: Uk:Tag:highway=path
highway=pedestrian: Uk:Tag:highway=pedestrian
highway=primary: Uk:Tag:highway=primary
highway=residential: Uk:Tag:highway=residential
highway=road: Uk:Tag:highway=road
highway=secondary: Uk:Tag:highway=secondary
highway=service: Uk:Tag:highway=service
+ highway=steps: Uk:Tag:highway=steps
highway=tertiary: Uk:Tag:highway=tertiary
highway=track: Uk:Tag:highway=track
highway=trunk: Uk:Tag:highway=trunk
highway=unclassified: Uk:Tag:highway=unclassified
historic=memorial: Uk:Tag:historic=memorial
historic=monument: Uk:Tag:historic=monument
+ landuse=forest: Uk:Tag:landuse=forest
+ man_made=embankment: Uk:Tag:man made=embankment
+ man_made=pier: Uk:Tag:man made=pier
+ natural=bare_rock: Uk:Tag:natural=bare rock
natural=grassland: Uk:Tag:natural=grassland
natural=scrub: Uk:Tag:natural=scrub
+ natural=tree: Uk:Tag:natural=tree
+ natural=tree_row: Uk:Tag:natural=tree row
+ natural=water: Uk:Tag:natural=water
+ natural=wood: Uk:Tag:natural=wood
office=accountant: Uk:Tag:office=accountant
office=architect: Uk:Tag:office=architect
office=company: Uk:Tag:office=company
shop=antiques: Uk:Tag:shop=antiques
shop=bicycle: Uk:Tag:shop=bicycle
shop=second_hand: Uk:Tag:shop=second hand
+ sport=shooting: Uk:Tag:sport=shooting
vending=bicycle_tube: Uk:Tag:vending=bicycle tube
waterway=riverbank: Uk:Tag:waterway=riverbank
vi:
key:
addr: Vi:Key:addr
highway: Vi:Key:highway
+ tag:
+ highway=primary: Vi:Tag:highway=primary
+ highway=residential: Vi:Tag:highway=residential
+ highway=secondary: Vi:Tag:highway=secondary
+ highway=service: Vi:Tag:highway=service
+ highway=tertiary: Vi:Tag:highway=tertiary
zh-hans:
key:
building:part: Zh-hans:Key:building:part
zh-hant:
key:
amenity: Zh-hant:Key:amenity
+ bridge: Zh-hant:Key:bridge
diet:*: Zh-hant:Key:diet:*
fixme: Zh-hant:Key:fixme
fuel: Zh-hant:Key:fuel
noexit: Zh-hant:Key:noexit
opening_hours: Zh-hant:Key:opening hours
service: Zh-hant:Key:service
+ takeaway: Zh-hant:Key:takeaway
tracktype: Zh-hant:Key:tracktype
trail_visibility: Zh-hant:Key:trail visibility
tag:
amenity=bench: Zh-hant:Tag:amenity=bench
amenity=crematorium: Zh-hant:Tag:amenity=crematorium
+ amenity=fountain: Zh-hant:Tag:amenity=fountain
amenity=fuel: Zh-hant:Tag:amenity=fuel
amenity=place_of_worship: Zh-hant:Tag:amenity=place of worship
amenity=toilets: Zh-hant:Tag:amenity=toilets
+ building=roof: Zh-hant:Tag:building=roof
highway=bus_stop: Zh-hant:Tag:highway=bus stop
+ highway=milestone: Zh-hant:Tag:highway=milestone
+ historic=aircraft: Zh-hant:Tag:historic=aircraft
landuse=cemetery: Zh-hant:Tag:landuse=cemetery
+ leisure=pitch: Zh-hant:Tag:leisure=pitch
natural=peak: Zh-hant:Tag:natural=peak
+ service=drive-through: Zh-hant:Tag:service=drive-through
shop=funeral_directors: Zh-hant:Tag:shop=funeral directors
shop=gas: Zh-hant:Tag:shop=gas
tourism=alpine_hut: Zh-hant:Tag:tourism=alpine hut
-class WayNodesNodeIdx < ActiveRecord::Migration
+class WayNodesNodeIdx < ActiveRecord::Migration
def self.up
add_index "way_nodes", ["node_id"], :name => "way_nodes_node_idx"
end
create_table :current_node_tags, :id => false do |t|
t.column :id, :bigint, :null => false
- t.column :k, :string, :default => "", :null => false
- t.column :v, :string, :default => "", :null => false
+ t.column :k, :string, :default => "", :null => false
+ t.column :v, :string, :default => "", :null => false
end
create_table :node_tags, :id => false do |t|
require "migrate"
class MoveToInnodb < ActiveRecord::Migration
- @@conv_tables = %w(nodes ways way_tags way_nodes current_way_tags relation_members relations relation_tags current_relation_tags)
+ @conv_tables = %w(nodes ways way_tags way_nodes current_way_tags relation_members relations relation_tags current_relation_tags)
- @@ver_tbl = %w(nodes ways relations)
+ @ver_tbl = %w(nodes ways relations)
def self.up
remove_index :current_way_tags, :name => :current_way_tags_v_idx
remove_index :current_relation_tags, :name => :current_relation_tags_v_idx
- @@ver_tbl.each do |tbl|
+ @ver_tbl.each do |tbl|
change_column tbl, "version", :bigint, :null => false
end
- @@ver_tbl.each do |tbl|
+ @ver_tbl.each do |tbl|
add_column "current_#{tbl}", "version", :bigint, :null => false
# As the initial version of all nodes, ways and relations is 0, we set the
# current version to something less so that we can update the version in
require "migrate"
class AddChangesets < ActiveRecord::Migration
- @@conv_user_tables = %w(current_nodes current_relations current_ways nodes relations ways)
+ @conv_user_tables = %w(current_nodes current_relations current_ways nodes relations ways)
def self.up
create_table "changesets", :id => false do |t|
execute "INSERT INTO changesets (id, user_id, created_at, open)" +
"SELECT id, id, creation_time, false from users;"
- @@conv_user_tables.each do |tbl|
+ @conv_user_tables.each do |tbl|
rename_column tbl, :user_id, :changeset_id
# foreign keys too
add_foreign_key tbl, :changesets, :name => "#{tbl}_changeset_id_fkey"
def change
create_table :changeset_comments do |t|
t.column :changeset_id, :bigint, :null => false
- t.column :author_id, :bigint, :null => false
+ t.column :author_id, :bigint, :null => false
t.text :body, :null => false
t.timestamp :created_at, :null => false
t.boolean :visible, :null => false
--- /dev/null
+class RenameOpenidUrl < ActiveRecord::Migration
+ def change
+ rename_column :users, :openid_url, :auth_uid
+ add_column :users, :auth_provider, :string
+
+ User.where.not(:auth_uid => nil).update_all(:auth_provider => "openid")
+
+ add_index :users, [:auth_provider, :auth_uid], :unique => true, :name => "users_auth_idx"
+ remove_index :users, :column => :auth_uid, :unique => true, :name => "user_openid_url_idx"
+ end
+end
);
+--
+-- Name: maptile_for_point(bigint, bigint, integer); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION maptile_for_point(bigint, bigint, integer) RETURNS integer
+ LANGUAGE c STRICT
+ AS '/srv/www/master.osm.compton.nu/db/functions/libpgosm.so', 'maptile_for_point';
+
+
+--
+-- Name: tile_for_point(integer, integer); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION tile_for_point(integer, integer) RETURNS bigint
+ LANGUAGE c STRICT
+ AS '/srv/www/master.osm.compton.nu/db/functions/libpgosm.so', 'tile_for_point';
+
+
+--
+-- Name: xid_to_int4(xid); Type: FUNCTION; Schema: public; Owner: -
+--
+
+CREATE FUNCTION xid_to_int4(xid) RETURNS integer
+ LANGUAGE c IMMUTABLE STRICT
+ AS '/srv/www/master.osm.compton.nu/db/functions/libpgosm.so', 'xid_to_int4';
+
+
SET default_tablespace = '';
SET default_with_oids = false;
status user_status_enum DEFAULT 'pending'::user_status_enum NOT NULL,
terms_agreed timestamp without time zone,
consider_pd boolean DEFAULT false NOT NULL,
- openid_url character varying,
+ auth_uid character varying,
preferred_editor character varying,
terms_seen boolean DEFAULT false NOT NULL,
description_format format_enum DEFAULT 'markdown'::format_enum NOT NULL,
traces_count integer DEFAULT 0 NOT NULL,
diary_entries_count integer DEFAULT 0 NOT NULL,
image_use_gravatar boolean DEFAULT true NOT NULL,
- image_content_type character varying
+ image_content_type character varying,
+ auth_provider character varying
);
CREATE INDEX user_id_idx ON friends USING btree (friend_user_id);
---
--- Name: user_openid_url_idx; Type: INDEX; Schema: public; Owner: -; Tablespace:
---
-
-CREATE UNIQUE INDEX user_openid_url_idx ON users USING btree (openid_url);
-
-
--
-- Name: user_roles_id_role_unique; Type: INDEX; Schema: public; Owner: -; Tablespace:
--
CREATE INDEX user_tokens_user_id_idx ON user_tokens USING btree (user_id);
+--
+-- Name: users_auth_idx; Type: INDEX; Schema: public; Owner: -; Tablespace:
+--
+
+CREATE UNIQUE INDEX users_auth_idx ON users USING btree (auth_provider, auth_uid);
+
+
--
-- Name: users_display_name_idx; Type: INDEX; Schema: public; Owner: -; Tablespace:
--
INSERT INTO schema_migrations (version) VALUES ('20150111192335');
+INSERT INTO schema_migrations (version) VALUES ('20150222101847');
+
INSERT INTO schema_migrations (version) VALUES ('21');
INSERT INTO schema_migrations (version) VALUES ('22');
--- /dev/null
+module Auth
+ PROVIDERS = { "None" => "", "OpenID" => "openid" }
+ PROVIDERS["Google"] = "google" if defined?(GOOGLE_AUTH_ID)
+ PROVIDERS["Facebook"] = "facebook" if defined?(FACEBOOK_AUTH_ID)
+ PROVIDERS["Windows Live"] = "windowslive" if defined?(WINDOWSLIVE_AUTH_ID)
+end
LON_LIMIT = 180.0
LAT_LIMIT = 90.0
- SCALED_LON_LIMIT = LON_LIMIT * GeoRecord::SCALE
- SCALED_LAT_LIMIT = LAT_LIMIT * GeoRecord::SCALE
+ SCALED_LON_LIMIT = LON_LIMIT * GeoRecord::SCALE
+ SCALED_LAT_LIMIT = LAT_LIMIT * GeoRecord::SCALE
public
unknown_option_keys.empty?
options[:singular_name] ||= ActiveSupport::Inflector.singularize(collection_id.to_s)
- options[:class_name] ||= ActiveSupport::Inflector.camelize(options[:singular_name])
+ options[:class_name] ||= ActiveSupport::Inflector.camelize(options[:singular_name])
end
# Returns a paginator and a collection of Active Record model instances
window_pages = current_page.window(options[:window_size]).pages
return if window_pages.length <= 1 unless link_to_current_page
- first, last = paginator.first, paginator.last
+ first = paginator.first
+ last = paginator.last
html = ""
end
def self.countries
- @@countries ||= load_countries
+ @countries ||= load_countries
end
def self.load_countries
# care of that for us.
if @reader.node_type == 1 # element
name = @reader.name
- attributes = {}
+ attributes = {}
if @reader.has_attributes?
while @reader.move_to_next_attribute == 1
# an exception subclassing OSM::APIError will be thrown.
def commit
# data structure used for mapping placeholder IDs to real IDs
- node_ids, way_ids, rel_ids = {}, {}, {}
- ids = { :node => node_ids, :way => way_ids, :relation => rel_ids }
+ ids = { :node => {}, :way => {}, :relation => {} }
# take the first element and check that it is an osmChange element
@reader.read
def lon
longitude.to_f / SCALE
end
-
- private
-
- def lat2y(a)
- 180 / Math::PI * Math.log(Math.tan(Math::PI / 4 + a * (Math::PI / 180) / 2))
- end
end
private
- class TrkPt < Struct.new(:segment, :latitude, :longitude, :altitude, :timestamp)
+ TrkPt = Struct.new(:segment, :latitude, :longitude, :altitude, :timestamp) do
def valid?
latitude && longitude && timestamp &&
- latitude >= -90 && latitude <= 90 &&
- longitude >= -180 && longitude <= 180
+ latitude >= -90 && latitude <= 90 &&
+ longitude >= -180 && longitude <= 180
end
end
end
# Raised when to delete an already-deleted object.
class APIAlreadyDeletedError < APIError
def initialize(object = "object", object_id = "")
- @object, @object_id = object, object_id
+ @object = object
+ @object_id = object_id
end
attr_reader :object, :object_id
# the changeset ID that the diff was uploaded to.
class APIChangesetMismatchError < APIError
def initialize(provided, allowed)
- @provided, @allowed = provided, allowed
+ @provided = provided
+ @allowed = allowed
end
def status
# they should.
class APIBadXMLError < APIError
def initialize(model, xml, message = "")
- @model, @xml, @message = model, xml, message
+ @model = model
+ @xml = xml
+ @message = message
end
def status
# Raised when the provided version is not equal to the latest in the db.
class APIVersionMismatchError < APIError
def initialize(id, type, provided, latest)
- @id, @type, @provided, @latest = id, type, provided, latest
+ @id = id
+ @type = type
+ @provided = provided
+ @latest = latest
end
attr_reader :provided, :latest, :id, :type
# this is now forbidden by the API.
class APIDuplicateTagsError < APIError
def initialize(type, id, tag_key)
- @type, @id, @tag_key = type, id, tag_key
+ @type = type
+ @id = id
+ @tag_key = tag_key
end
attr_reader :type, :id, :tag_key
# This prevents ways from being to long and difficult to work with
class APITooManyWayNodesError < APIError
def initialize(id, provided, max)
- @id, @provided, @max = id, provided, max
+ @id = id
+ @provided = provided
+ @max = max
end
attr_reader :id, :provided, :max
root["generator"] = GENERATOR
root["copyright"] = COPYRIGHT_OWNER
root["attribution"] = ATTRIBUTION_URL
- root["license"] = LICENSE_URL
+ root["license"] = LICENSE_URL
doc.root = root
doc
end
def self.ip_to_country(ip_address)
Timer.timeout(4) do
- ipinfo = Quova::IpInfo.new(ip_address)
+ ipinfo = Quova::IpInfo.new(ip_address) if defined?(QUOVA_USERNAME)
- if ipinfo.status == Quova::SUCCESS
+ if ipinfo && ipinfo.status == Quova::SUCCESS
country = ipinfo.country_code
else
- Net::HTTP.start("api.hostip.info") do |http|
- country = http.get("/country.php?ip=#{ip_address}").body
- country = "GB" if country == "UK"
- end
+ country = http_client.get("http://api.hostip.info/country.php?ip=#{ip_address}").body
+ country = "GB" if country == "UK"
end
return country.upcase
"AND #{prefix}longitude BETWEEN #{bbox.min_lon} AND #{bbox.max_lon}"
end
+ # Return the terms and conditions text for a given country
def self.legal_text_for_country(country_code)
file_name = File.join(Rails.root, "config", "legales", country_code.to_s + ".yml")
file_name = File.join(Rails.root, "config", "legales", DEFAULT_LEGALE + ".yml") unless File.exist? file_name
YAML.load_file(file_name)
end
+
+ # Return the HTTP client to use
+ def self.http_client
+ @http_client ||= Faraday.new
+ end
+
+ # Set the HTTP client to use
+ def self.http_client=(client)
+ @http_client = client
+ end
end
+++ /dev/null
-Copyright (c) 2004-2007 Jeremy Evans
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+++ /dev/null
-OutputCompression
-=================
-
-Allows gzip output compression to clients that support it. Simple to use, just
-put after_filter :compress_output in your controller. Pulled out of the Google
-cache and packaged into plugin form, code originally hosted at
-http://www.tuxsoft.se/oss/rails/download/output_compression.rb.
-
- svn: svn://code.jeremyevans.net/rails/plugins/output_compression
- file: http://code.jeremyevans.net/code/output_compression.tar.gz
+++ /dev/null
-# OutputCompression
-# Rails output compression filters
-#
-# Adds two classmethods to ActionController that can be used as after-filters:
-# strip_whitespace and compress_output.
-# If you use page-caching, you MUST specify the compress_output filter AFTER
-# caches_page, otherwise the compressed data will be cached instead of the HTML
-#
-# class MyController < ApplicationController
-# after_filter :strip_whitespace
-# caches_page :index
-# after_filter :compress_output
-# end
-
-begin
- require "zlib"
- require "stringio"
- GZIP_SUPPORTED = true
-rescue
- GZIP_SUPPORTED = false
-end
-
-module CompressionSystem
- def compress_output
- return unless accepts_gzip?
- output = StringIO.new
- def output.close
- # Zlib does a close. Bad Zlib...
- rewind
- end
- gz = Zlib::GzipWriter.new(output)
- gz.write(response.body)
- gz.close
- if output.length < response.body.length
- @old_response_body = response.body
- response.body = output.string
- response.headers["Content-encoding"] = @compression_encoding
- end
- end
-
- def accepts_gzip?
- return false unless GZIP_SUPPORTED
- accepts = request.env["HTTP_ACCEPT_ENCODING"]
- return false unless accepts && accepts =~ /(x-gzip|gzip)/
- @compression_encoding = $1
- true
- end
-
- def strip_whitespace
- response.body.gsub!(/()|(.*?<\/script>)|()|()|\s+/m) do |m|
- if m =~ /^()(.*?)<\/script>$/m
- $1 + $2.strip.gsub(/\s+/, " ").gsub("", "\n-->") + ""
- elsif m =~ /^$/m
- ""
- elsif m =~ /^<(textarea|pre)/
- m
- else " "
- end
- end
- response.body.gsub! /\s+\s+/, ">"
- end
-end
-
-module ActionController
- class Base
- include CompressionSystem
- end
-end
# Return eight-byte double-precision float
def self.getdouble(s)
- a = s.read(8).unpack("G") # G big-endian, E little-endian
+ a = s.read(8).unpack("G") # G big-endian, E little-endian
a[0]
end
break if key == ""
arr[key] = getvalue(s)
end
- s.getbyte # skip the 9 'end of object' value
+ s.getbyte # skip the 9 'end of object' value
arr
end
# Parse and get value
def self.getvalue(s)
case s.getbyte
- when 0 then return getdouble(s) # number
- when 1 then return s.getbyte # boolean
- when 2 then return getstring(s) # string
- when 3 then return getobject(s) # object/hash
- when 5 then return nil # null
- when 6 then return nil # undefined
- when 8 then s.read(4) # mixedArray
- return getobject(s) # |
- when 10 then return getarray(s) # array
- else return nil # error
+ when 0 then return getdouble(s) # number
+ when 1 then return s.getbyte # boolean
+ when 2 then return getstring(s) # string
+ when 3 then return getobject(s) # object/hash
+ when 5 then return nil # null
+ when 6 then return nil # undefined
+ when 8 then s.read(4) # mixedArray
+ return getobject(s) # |
+ when 10 then return getarray(s) # array
+ else return nil # error
end
end
File.open("#{Rails.root}/config/potlatch/presets.txt") do |file|
file.each_line do|line|
t = line.chomp
- if t =~ /(\w+)\/(\w+)/
+ if t =~ %r{(\w+)/(\w+)}
presettype = $1
presetcategory = $2
presetmenus[presettype].push(presetcategory)
autotags = { "point" => {}, "way" => {}, "POI" => {} }
File.open("#{Rails.root}/config/potlatch/autocomplete.txt") do |file|
file.each_line do|line|
- next unless line.chomp =~ /^([\w:]+)\/(\w+)\s+(.+)$/
+ next unless line.chomp =~ %r{^([\w:]+)/(\w+)\s+(.+)$}
tag = $1
type = $2
"fr" => "fr_FR",
"fur" => "fur",
"ga" => "ga",
+ "gd" => "gd",
"gl" => "gl",
"grc" => "grc",
"he" => "he",
"kn" => "kn",
"ko" => "ko",
"krc" => "krc",
+ "ksh" => "ksh",
"ku-Latn" => "ku-latn",
"ky" => "ky",
"lb" => "lb",
##
# Create SOAP endpoint
- @@soap = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
- @@soap.options["protocol.http.basic_auth"] << [WSDL_URL, WSDL_USER, WSDL_PASS]
+ @soap = SOAP::WSDLDriverFactory.new(WSDL_URL).create_rpc_driver
+ @soap.options["protocol.http.basic_auth"] << [WSDL_URL, WSDL_USER, WSDL_PASS]
##
# Accessor for SOAP endpoint
def self.soap
- @@soap
+ @soap
end
##
class Markdown < Base
def to_html
- html_parser.render(self).html_safe
+ Markdown.html_parser.render(self).html_safe
end
def to_text
to_s
end
- private
+ def self.html_renderer
+ @html_renderer ||= Renderer.new(:filter_html => true, :safe_links_only => true)
+ end
- def html_parser
- @@html_renderer ||= Renderer.new(:filter_html => true, :safe_links_only => true)
- @@html_parser ||= Redcarpet::Markdown.new(@@html_renderer, :no_intra_emphasis => true, :autolink => true, :space_after_headers => true)
+ def self.html_parser
+ @html_parser ||= Redcarpet::Markdown.new(html_renderer, :no_intra_emphasis => true, :autolink => true, :space_after_headers => true)
end
class Renderer < Redcarpet::Render::XHTML
# keep support for old shortlinks which use the @ character, now
# replaced by the ~ character because twitter is horribly broken
# and we can't have that.
- str.gsub!("@", "~")
+ str.tr!("@", "~")
str.each_char do |c|
t = ARRAY.index c
# given a location and zoom, return a short string representing it.
def self.encode(lon, lat, z)
code = interleave_bits(((lon + 180.0) * 2**32 / 360.0).to_i,
- ((lat + 90.0) * 2**32 / 180.0).to_i)
+ ((lat + 90.0) * 2**32 / 180.0).to_i)
str = ""
# add eight to the zoom level, which approximates an accuracy of
# one pixel in a tile.
namespace "db" do
desc "Adds a version number to the nodes table"
- task :node_version do
+ task :node_version do
require File.dirname(__FILE__) + "/../../config/environment"
increment = 1000
##
# Checks that a string is valid UTF-8 by trying to convert it to UTF-8
# using the iconv library, which is in the standard library.
- if "".respond_to?("valid_encoding?")
- def self.valid?(str)
- return true if str.nil?
- str.valid_encoding?
- end
- else
- require "iconv"
-
- def self.valid?(str)
- return true if str.nil?
- Iconv.conv("UTF-8", "UTF-8", str)
- return true
- rescue
- return false
- end
+ def self.valid?(str)
+ return true if str.nil?
+ str.valid_encoding?
end
end
-module ActiveRecord
- module Validations
- module ClassMethods
- # error message when invalid UTF-8 is detected
- @@invalid_utf8_message = " is invalid UTF-8"
-
- ##
- # validation method to be included like any other validations methods
- # in the models definitions. this one checks that the named attribute
- # is a valid UTF-8 format string.
- def validates_as_utf8(*attrs)
- validates_each(attrs) do |record, attr, value|
- record.errors.add(attr, @@invalid_utf8_message) unless UTF8.valid? value
- end
- end
- end
+##
+# validation method to be included like any other validations methods
+# in the models definitions. this one checks that the named attribute
+# is a valid UTF-8 format string.
+class Utf8Validator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ record.errors.add(attribute, " is invalid UTF-8") unless UTF8.valid? value
end
end
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
-APP_PATH = File.expand_path("../../config/application", __FILE__)
-require File.expand_path("../../config/boot", __FILE__)
+APP_PATH = File.expand_path("../../config/application", __FILE__)
+require File.expand_path("../../config/boot", __FILE__)
require "rails/commands"
# make sure we have up-to-date packages
apt-get update
-## vagrant grub-pc fix from: https://gist.github.com/jrnickell/6289943
-# parameters
-echo "grub-pc grub-pc/kopt_extracted boolean true" | debconf-set-selections
-echo "grub-pc grub2/linux_cmdline string" | debconf-set-selections
-echo "grub-pc grub-pc/install_devices multiselect /dev/sda" | debconf-set-selections
-echo "grub-pc grub-pc/install_devices_failed_upgrade boolean true" | debconf-set-selections
-echo "grub-pc grub-pc/install_devices_disks_changed multiselect /dev/sda" | debconf-set-selections
-# vagrant grub fix
-dpkg-reconfigure -f noninteractive grub-pc
-
# upgrade all packages
apt-get upgrade -y
# build and set up postgres extensions
pushd db/functions
sudo -u vagrant make
-sudo -u vagrant psql openstreetmap -c "drop function if exists maptile_for_point(int8, int8, int4)"
-sudo -u vagrant psql openstreetmap -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'maptile_for_point' LANGUAGE C STRICT"
+sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'maptile_for_point' LANGUAGE C STRICT"
+sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'tile_for_point' LANGUAGE C STRICT"
+sudo -u vagrant psql openstreetmap -c "CREATE OR REPLACE FUNCTION xid_to_int4(xid) RETURNS int4 AS '/srv/openstreetmap-website/db/functions/libpgosm.so', 'xid_to_int4' LANGUAGE C STRICT"
popd
# set up sample configs
if [ ! -f config/database.yml ]; then
)
end
+ def test_getpresets
+ [:public_user, :german_user].each do |id|
+ user = users(id)
+
+ amf_content "getpresets", "/1", ["#{user.email}:test", ""]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ presets = amf_result("/1")
+
+ assert_equal 15, presets.length
+ assert_equal POTLATCH_PRESETS[0], presets[0]
+ assert_equal POTLATCH_PRESETS[1], presets[1]
+ assert_equal POTLATCH_PRESETS[2], presets[2]
+ assert_equal POTLATCH_PRESETS[3], presets[3]
+ assert_equal POTLATCH_PRESETS[4], presets[4]
+ assert_equal POTLATCH_PRESETS[5], presets[5]
+ assert_equal POTLATCH_PRESETS[6], presets[6]
+ assert_equal POTLATCH_PRESETS[7], presets[7]
+ assert_equal POTLATCH_PRESETS[8], presets[8]
+ assert_equal POTLATCH_PRESETS[9], presets[9]
+ assert_equal POTLATCH_PRESETS[10], presets[10]
+ assert_equal POTLATCH_PRESETS[12], presets[12]
+ assert_equal user.languages.first, presets[13]["__potlatch_locale"]
+ end
+ end
+
def test_getway
# check a visible way
id = current_ways(:visible_way).id
assert_equal 3, way[3].length
assert_equal 4, way[3][0][2]
assert_equal 15, way[3][1][2]
- assert_equal 6, way[3][2][2]
+ assert_equal 11, way[3][2][2]
assert_equal 2, way[5]
assert_equal 2, way[6]
end
# NOTE: looks from the API changes that this now expects a timestamp
# instead of a version number...
# try to get version 1
- v1 = ways(:way_with_versions_v1)
+ v1 = ways(:way_with_versions_v2)
{ latest.id => "",
v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S")
}.each do |id, t|
end
def test_getway_old_nonexistent
- # try to get the last version+10 (shoudn't exist)
+ # try to get the last version-10 (shoudn't exist)
v1 = ways(:way_with_versions_v1)
# try to get last visible version of non-existent way
# try to get specific version of non-existent way
end
end
+ def test_getway_old_invisible
+ v1 = ways(:invisible_way)
+ # try to get deleted version
+ [[v1.way_id, (v1.timestamp + 10).strftime("%d %b %Y, %H:%M:%S")]
+ ].each do |id, t|
+ amf_content "getway_old", "/1", [id, t]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ returned_way = amf_result("/1")
+ assert_equal -1, returned_way[0]
+ assert returned_way[3].nil?
+ assert returned_way[4].nil?
+ assert returned_way[5].nil?
+ end
+ end
+
def test_getway_history
latest = current_ways(:way_with_versions)
oldest = ways(:way_with_versions_v1)
assert history[2].empty?
end
+ def test_findgpx_bad_user
+ amf_content "findgpx", "/1", [1, "test@example.com:wrong"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.length
+ assert_equal -1, result[0]
+ assert_match /must be logged in/, result[1]
+
+ amf_content "findgpx", "/1", [1, "blocked@openstreetmap.org:test"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.length
+ assert_equal -1, result[0]
+ assert_match /access to the API has been blocked/, result[1]
+ end
+
+ def test_findgpx_by_id
+ trace = gpx_files(:anon_trace_file)
+
+ amf_content "findgpx", "/1", [trace.id, "test@example.com:test"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.length
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ traces = result[2]
+ assert_equal 1, traces.length
+ assert_equal 3, traces[0].length
+ assert_equal trace.id, traces[0][0]
+ assert_equal trace.name, traces[0][1]
+ assert_equal trace.description, traces[0][2]
+ end
+
+ def test_findgpx_by_name
+ amf_content "findgpx", "/1", ["Trace", "test@example.com:test"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ # find by name fails as it uses mysql text search syntax...
+ assert_equal 2, result.length
+ assert_equal -2, result[0]
+ end
+
+ def test_findrelations_by_id
+ relation = current_relations(:relation_with_versions)
+
+ amf_content "findrelations", "/1", [relation.id]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 1, result.length
+ assert_equal 4, result[0].length
+ assert_equal relation.id, result[0][0]
+ assert_equal relation.tags, result[0][1]
+ assert_equal relation.members, result[0][2]
+ assert_equal relation.version, result[0][3]
+
+ amf_content "findrelations", "/1", [999999]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 0, result.length
+ end
+
+ def test_findrelations_by_tags
+ visible_relation = current_relations(:visible_relation)
+ used_relation = current_relations(:used_relation)
+
+ amf_content "findrelations", "/1", ["yes"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1").sort
+
+ assert_equal 2, result.length
+ assert_equal 4, result[0].length
+ assert_equal visible_relation.id, result[0][0]
+ assert_equal visible_relation.tags, result[0][1]
+ assert_equal visible_relation.members, result[0][2]
+ assert_equal visible_relation.version, result[0][3]
+ assert_equal 4, result[1].length
+ assert_equal used_relation.id, result[1][0]
+ assert_equal used_relation.tags, result[1][1]
+ assert_equal used_relation.members, result[1][2]
+ assert_equal used_relation.version, result[1][3]
+
+ amf_content "findrelations", "/1", ["no"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1").sort
+
+ assert_equal 0, result.length
+ end
+
+ def test_getpoi_without_timestamp
+ node = current_nodes(:node_with_versions)
+
+ amf_content "getpoi", "/1", [node.id, ""]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 7, result.length
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal node.id, result[2]
+ assert_equal node.lon, result[3]
+ assert_equal node.lat, result[4]
+ assert_equal node.tags, result[5]
+ assert_equal node.version, result[6]
+
+ amf_content "getpoi", "/1", [999999, ""]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.length
+ assert_equal -4, result[0]
+ assert_equal "node", result[1]
+ assert_equal 999999, result[2]
+ end
+
+ def test_getpoi_with_timestamp
+ node = nodes(:node_with_versions_v2)
+ current_node = current_nodes(:node_with_versions)
+
+ amf_content "getpoi", "/1", [node.node_id, node.timestamp.xmlschema]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 7, result.length
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal node.node_id, result[2]
+ assert_equal node.lon, result[3]
+ assert_equal node.lat, result[4]
+ assert_equal node.tags, result[5]
+ assert_equal current_node.version, result[6]
+
+ amf_content "getpoi", "/1", [node.node_id, "2000-01-01T00:00:00Z"]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.length
+ assert_equal -4, result[0]
+ assert_equal "node", result[1]
+ assert_equal node.node_id, result[2]
+
+ amf_content "getpoi", "/1", [999999, Time.now.xmlschema]
+ post :amf_read
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.length
+ assert_equal -4, result[0]
+ assert_equal "node", result[1]
+ assert_equal 999999, result[2]
+ end
+
# ************************************************************
# AMF Write tests
+
+ # check that we can update a poi
def test_putpoi_update_valid
nd = current_nodes(:visible_node)
cs_id = changesets(:public_user_first_change).id
amf_parse_response
result = amf_result("/1")
+ assert_equal 5, result.size
assert_equal 0, result[0]
assert_equal "", result[1]
assert_equal nd.id, result[2]
amf_parse_response
result = amf_result("/2")
+ assert_equal 5, result.size
assert_equal 0, result[0]
assert_equal "", result[1]
assert_equal nd.id, result[2]
assert_equal "One of the tags is invalid. Linux users may need to upgrade to Flash Player 10.1.", result[1]
end
+ # try deleting a node
def test_putpoi_delete_valid
+ nd = current_nodes(:visible_node)
+ cs_id = changesets(:public_user_first_change).id
+ amf_content "putpoi", "/1", ["test@example.com:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 5, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal nd.id, result[2]
+ assert_equal nd.id, result[3]
+ assert_equal nd.version + 1, result[4]
+
+ current_node = Node.find(result[3].to_i)
+ assert_equal false, current_node.visible
end
+ # try deleting a node that is already deleted
def test_putpoi_delete_already_deleted
+ nd = current_nodes(:invisible_node)
+ cs_id = changesets(:public_user_first_change).id
+ amf_content "putpoi", "/1", ["test@example.com:test", cs_id, nd.version, nd.id, nd.lon, nd.lat, nd.tags, false]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.size
+ assert_equal -4, result[0]
+ assert_equal "node", result[1]
+ assert_equal nd.id, result[2]
end
+ # try deleting a node that has never existed
def test_putpoi_delete_not_found
+ cs_id = changesets(:public_user_first_change).id
+ amf_content "putpoi", "/1", ["test@example.com:test", cs_id, 1, 999999, 0, 0, {}, false]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.size
+ assert_equal -4, result[0]
+ assert_equal "node", result[1]
+ assert_equal 999999, result[2]
end
+ # try setting an invalid location on a node
def test_putpoi_invalid_latlon
+ nd = current_nodes(:visible_node)
+ cs_id = changesets(:public_user_first_change).id
+ amf_content "putpoi", "/1", ["test@example.com:test", cs_id, nd.version, nd.id, 200, 100, nd.tags, true]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.size
+ assert_equal -2, result[0]
+ assert_match /Node is not in the world/, result[1]
+ end
+
+ # check that we can create a way
+ def test_putway_create_valid
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, 0, -1, [1, 4, 7], { "test" => "new" }, [], {}]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_way_id = result[3].to_i
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal -1, result[2]
+ assert_not_equal -1, result[3]
+ assert_equal({}, result[4])
+ assert_equal 1, result[5]
+ assert_equal({}, result[6])
+ assert_equal({}, result[7])
+
+ new_way = Way.find(new_way_id)
+ assert_equal 1, new_way.version
+ assert_equal [1, 4, 7], new_way.nds
+ assert_equal({ "test" => "new" }, new_way.tags)
+
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, 0, -1, [4, 6, 15, 1], { "test" => "newer" }, [], {}]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_way_id = result[3].to_i
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal -1, result[2]
+ assert_not_equal -1, result[3]
+ assert_equal({}, result[4])
+ assert_equal 1, result[5]
+ assert_equal({}, result[6])
+ assert_equal({}, result[7])
+
+ new_way = Way.find(new_way_id)
+ assert_equal 1, new_way.version
+ assert_equal [4, 6, 15, 1], new_way.nds
+ assert_equal({ "test" => "newer" }, new_way.tags)
+
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, 0, -1, [4, -1, 6, 15], { "test" => "newest" }, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, 6, 1, { "test" => "ok" }]], { 1 => 1 }]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_way_id = result[3].to_i
+ new_node_id = result[4]["-1"].to_i
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal -1, result[2]
+ assert_not_equal -1, result[3]
+ assert_equal({ "-1" => new_node_id }, result[4])
+ assert_equal 1, result[5]
+ assert_equal({ new_node_id.to_s => 1, "6" => 2 }, result[6])
+ assert_equal({ "1" => 1 }, result[7])
+
+ new_way = Way.find(new_way_id)
+ assert_equal 1, new_way.version
+ assert_equal [4, new_node_id, 6, 15], new_way.nds
+ assert_equal({ "test" => "newest" }, new_way.tags)
+
+ new_node = Node.find(new_node_id)
+ assert_equal 1, new_node.version
+ assert_equal true, new_node.visible
+ assert_equal 4.56, new_node.lon
+ assert_equal 12.34, new_node.lat
+ assert_equal({ "test" => "new" }, new_node.tags)
+
+ changed_node = Node.find(6)
+ assert_equal 2, changed_node.version
+ assert_equal true, changed_node.visible
+ assert_equal 12.34, changed_node.lon
+ assert_equal 4.56, changed_node.lat
+ assert_equal({ "test" => "ok" }, changed_node.tags)
+
+ # node is not deleted because our other ways are using it
+ deleted_node = Node.find(1)
+ assert_equal 1, deleted_node.version
+ assert_equal true, deleted_node.visible
+ end
+
+ # check that we can update a way
+ def test_putway_update_valid
+ way = current_ways(:way_with_multiple_nodes)
+ cs_id = changesets(:public_user_first_change).id
+
+ assert_not_equal({ "test" => "ok" }, way.tags)
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, way.version, way.id, way.nds, { "test" => "ok" }, [], {}]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal way.id, result[2]
+ assert_equal way.id, result[3]
+ assert_equal({}, result[4])
+ assert_equal way.version + 1, result[5]
+ assert_equal({}, result[6])
+ assert_equal({}, result[7])
+
+ new_way = Way.find(way.id)
+ assert_equal way.version + 1, new_way.version
+ assert_equal way.nds, new_way.nds
+ assert_equal({ "test" => "ok" }, new_way.tags)
+
+ assert_not_equal [4, 6, 15, 1], way.tags
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, way.version + 1, way.id, [4, 6, 15, 1], way.tags, [], {}]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal way.id, result[2]
+ assert_equal way.id, result[3]
+ assert_equal({}, result[4])
+ assert_equal way.version + 2, result[5]
+ assert_equal({}, result[6])
+ assert_equal({}, result[7])
+
+ new_way = Way.find(way.id)
+ assert_equal way.version + 2, new_way.version
+ assert_equal [4, 6, 15, 1], new_way.nds
+ assert_equal way.tags, new_way.tags
+
+ amf_content "putway", "/1", ["test@example.com:test", cs_id, way.version + 2, way.id, [4, -1, 6, 15], way.tags, [[4.56, 12.34, -1, 0, { "test" => "new" }], [12.34, 4.56, 6, 1, { "test" => "ok" }]], { 1 => 1 }]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_node_id = result[4]["-1"].to_i
+
+ assert_equal 8, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal way.id, result[2]
+ assert_equal way.id, result[3]
+ assert_equal({ "-1" => new_node_id }, result[4])
+ assert_equal way.version + 3, result[5]
+ assert_equal({ new_node_id.to_s => 1, "6" => 2 }, result[6])
+ assert_equal({ "1" => 1 }, result[7])
+
+ new_way = Way.find(way.id)
+ assert_equal way.version + 3, new_way.version
+ assert_equal [4, new_node_id, 6, 15], new_way.nds
+ assert_equal way.tags, new_way.tags
+
+ new_node = Node.find(new_node_id)
+ assert_equal 1, new_node.version
+ assert_equal true, new_node.visible
+ assert_equal 4.56, new_node.lon
+ assert_equal 12.34, new_node.lat
+ assert_equal({ "test" => "new" }, new_node.tags)
+
+ changed_node = Node.find(6)
+ assert_equal 2, changed_node.version
+ assert_equal true, changed_node.visible
+ assert_equal 12.34, changed_node.lon
+ assert_equal 4.56, changed_node.lat
+ assert_equal({ "test" => "ok" }, changed_node.tags)
+
+ deleted_node = Node.find(1)
+ assert_equal 2, deleted_node.version
+ assert_equal false, deleted_node.visible
+ end
+
+ # check that we can delete a way
+ def test_deleteway_valid
+ way = current_ways(:way_with_multiple_nodes)
+ nodes = way.nodes.each_with_object({}) { |n, ns| ns[n.id] = n.version }
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "deleteway", "/1", ["test@example.com:test", cs_id, way.id, way.version, nodes]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 5, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal way.id, result[2]
+ assert_equal way.version + 1, result[3]
+ assert_equal({ "11" => 2 }, result[4])
+
+ new_way = Way.find(way.id)
+ assert_equal way.version + 1, new_way.version
+ assert_equal false, new_way.visible
+
+ way.nds.each do |node_id|
+ assert_equal result[4][node_id.to_s].nil?, Node.find(node_id).visible
+ end
+ end
+
+ # check that we can't delete a way that is in use
+ def test_deleteway_inuse
+ way = current_ways(:used_way)
+ nodes = way.nodes.each_with_object({}) { |n, ns| ns[n.id] = n.version }
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "deleteway", "/1", ["test@example.com:test", cs_id, way.id, way.version, nodes]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.size
+ assert_equal -1, result[0]
+ assert_match /Way #{way.id} is still used/, result[1]
+
+ new_way = Way.find(way.id)
+ assert_equal way.version, new_way.version
+ assert_equal true, new_way.visible
+
+ way.nds.each do |node_id|
+ assert_equal true, Node.find(node_id).visible
+ end
end
+ # check that we can create a relation
+ def test_putrelation_create_valid
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "putrelation", "/1", ["test@example.com:test", cs_id, 0, -1, { "test" => "new" }, [["Node", 3, "node"], ["Way", 7, "way"], ["Relation", 1, "relation"]], true]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_relation_id = result[3].to_i
+
+ assert_equal 5, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal -1, result[2]
+ assert_not_equal -1, result[3]
+ assert_equal 1, result[4]
+
+ new_relation = Relation.find(new_relation_id)
+ assert_equal 1, new_relation.version
+ assert_equal [["Node", 3, "node"], ["Way", 7, "way"], ["Relation", 1, "relation"]], new_relation.members
+ assert_equal({ "test" => "new" }, new_relation.tags)
+ assert_equal true, new_relation.visible
+ end
+
+ # check that we can update a relation
+ def test_putrelation_update_valid
+ relation = current_relations(:visible_relation)
+ cs_id = changesets(:public_user_first_change).id
+
+ assert_not_equal({ "test" => "ok" }, relation.tags)
+ amf_content "putrelation", "/1", ["test@example.com:test", cs_id, relation.version, relation.id, { "test" => "ok" }, relation.members, true]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 5, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal relation.id, result[2]
+ assert_equal relation.id, result[3]
+ assert_equal relation.version + 1, result[4]
+
+ new_relation = Relation.find(relation.id)
+ assert_equal relation.version + 1, new_relation.version
+ assert_equal relation.members, new_relation.members
+ assert_equal({ "test" => "ok" }, new_relation.tags)
+ assert_equal true, new_relation.visible
+ end
+
+ # check that we can delete a relation
+ def test_putrelation_delete_valid
+ relation = current_relations(:visible_relation)
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "putrelation", "/1", ["test@example.com:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 5, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_equal relation.id, result[2]
+ assert_equal relation.id, result[3]
+ assert_equal relation.version + 1, result[4]
+
+ new_relation = Relation.find(relation.id)
+ assert_equal relation.version + 1, new_relation.version
+ assert_equal [], new_relation.members
+ assert_equal({}, new_relation.tags)
+ assert_equal false, new_relation.visible
+ end
+
+ # check that we can't delete a relation that is in use
+ def test_putrelation_delete_inuse
+ relation = current_relations(:public_used_relation)
+ cs_id = changesets(:public_user_first_change).id
+
+ amf_content "putrelation", "/1", ["test@example.com:test", cs_id, relation.version, relation.id, relation.tags, relation.members, false]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.size
+ assert_equal -1, result[0]
+ assert_match /relation #{relation.id} is used in/, result[1]
+
+ new_relation = Relation.find(relation.id)
+ assert_equal relation.version, new_relation.version
+ assert_equal relation.members, new_relation.members
+ assert_equal relation.tags, new_relation.tags
+ assert_equal true, new_relation.visible
+ end
+
+ # check that we can open a changeset
+ def test_startchangeset_valid
+ amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_cs_id = result[2].to_i
+
+ assert_equal 3, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+
+ cs = Changeset.find(new_cs_id)
+ assert_equal true, cs.is_open?
+ assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
+
+ old_cs_id = new_cs_id
+
+ amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "newer" }, old_cs_id, "newer", 1]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ new_cs_id = result[2].to_i
+
+ assert_not_equal old_cs_id, new_cs_id
+
+ assert_equal 3, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+
+ cs = Changeset.find(old_cs_id)
+ assert_equal false, cs.is_open?
+ assert_equal({ "comment" => "newer", "source" => "new" }, cs.tags)
+
+ cs = Changeset.find(new_cs_id)
+ assert_equal true, cs.is_open?
+ assert_equal({ "comment" => "newer", "source" => "newer" }, cs.tags)
+
+ old_cs_id = new_cs_id
+
+ amf_content "startchangeset", "/1", ["test@example.com:test", {}, old_cs_id, "", 0]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 3, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+ assert_nil result[2]
+
+ cs = Changeset.find(old_cs_id)
+ assert_equal false, cs.is_open?
+ assert_equal({ "comment" => "newer", "source" => "newer" }, cs.tags)
+ end
+
+ # check that we can't close somebody elses changeset
+ def test_startchangeset_invalid_wrong_user
+ amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+ cs_id = result[2].to_i
+
+ assert_equal 3, result.size
+ assert_equal 0, result[0]
+ assert_equal "", result[1]
+
+ cs = Changeset.find(cs_id)
+ assert_equal true, cs.is_open?
+ assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
+
+ amf_content "startchangeset", "/1", ["test@openstreetmap.org:test", {}, cs_id, "delete", 0]
+ post :amf_write
+ assert_response :success
+ amf_parse_response
+ result = amf_result("/1")
+
+ assert_equal 2, result.size
+ assert_equal -2, result[0]
+ assert_equal "The user doesn't own that changeset", result[1]
+
+ cs = Changeset.find(cs_id)
+ assert_equal true, cs.is_open?
+ assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
+ end
+
+ # check that invalid characters are stripped from changeset tags
def test_startchangeset_invalid_xmlchar_comment
invalid = "\035\022"
comment = "foo#{invalid}bar"
assert_response :success
amf_parse_response
result = amf_result("/1")
+ new_cs_id = result[2].to_i
- assert_equal 3, result.size, result.inspect
+ assert_equal 3, result.size
assert_equal 0, result[0]
- new_cs_id = result[2].to_i
+ assert_equal "", result[1]
cs = Changeset.find(new_cs_id)
- assert_equal "foobar", cs.tags["comment"]
+ assert_equal true, cs.is_open?
+ assert_equal({ "comment" => "foobar" }, cs.tags)
end
+ private
+
# ************************************************************
# AMF Helper functions
def amf_parse_response
req = StringIO.new(@response.body)
- req.read(2) # version
+ req.read(2) # version
# parse through any headers
- headers = AMF.getint(req) # Read number of headers
- headers.times do # Read each header
- AMF.getstring(req) # |
- req.getc # | skip boolean
- AMF.getvalue(req) # |
+ headers = AMF.getint(req) # Read number of headers
+ headers.times do # Read each header
+ AMF.getstring(req) # |
+ req.getc # | skip boolean
+ AMF.getvalue(req) # |
end
# parse through responses
results = {}
- bodies = AMF.getint(req) # Read number of bodies
- bodies.times do # Read each body
- message = AMF.getstring(req) # | get message name
- AMF.getstring(req) # | get index in response sequence
- AMF.getlong(req) # | get total size in bytes
- args = AMF.getvalue(req) # | get response (probably an array)
+ bodies = AMF.getint(req) # Read number of bodies
+ bodies.times do # Read each body
+ message = AMF.getstring(req) # | get message name
+ AMF.getstring(req) # | get index in response sequence
+ AMF.getlong(req) # | get total size in bytes
+ args = AMF.getvalue(req) # | get response (probably an array)
results[message] = args
end
@amf_result = results
# This should really be more generic
assert_select "tag[k='test'][v='yes']"
end
- # Should also test for the ways and relation
+ assert_select "way", :count => 2
+ assert_select "way[id='1']", :count => 1
+ assert_select "way[id='3']", :count => 1
+ assert_select "relation", :count => 1
+ assert_select "relation[id='1']", :count => 1
end
end
# This should really be more generic
assert_select "tag[k='test'][v='yes']"
end
- # Should also test for the ways and relation
+ assert_select "way", :count => 2
+ assert_select "way[id='1']", :count => 1
+ assert_select "way[id='3']", :count => 1
+ assert_select "relation", :count => 1
+ assert_select "relation[id='1']", :count => 1
+ end
+ end
+
+ def test_map_complete_way
+ node = current_nodes(:used_node_2)
+ bbox = "#{node.lon},#{node.lat},#{node.lon},#{node.lat}"
+ get :map, :bbox => bbox
+ assert_response :success, "The map call should have succeeded"
+ assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
+ assert_select "bounds[minlon='#{node.lon}'][minlat='#{node.lat}'][maxlon='#{node.lon}'][maxlat='#{node.lat}']", :count => 1
+ assert_select "node", :count => 3
+ assert_select "node[id='4']", :count => 1
+ assert_select "node[id='11']", :count => 1
+ assert_select "node[id='15']", :count => 1
+ assert_select "way", :count => 2
+ assert_select "way[id='5']", :count => 1
+ assert_select "way[id='7']", :count => 1
+ assert_select "relation", :count => 1
+ assert_select "relation[id='8']", :count => 1
+ end
+ end
+
+ def test_map_empty
+ get :map, :bbox => "179.998,89.998,179.999.1,89.999"
+ assert_response :success, "The map call should have succeeded"
+ assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
+ assert_select "bounds[minlon='179.998'][minlat='89.998'][maxlon='179.999'][maxlat='89.999']", :count => 1
+ assert_select "node", :count => 0
+ assert_select "way", :count => 0
+ assert_select "relation", :count => 0
end
end
# http://wiki.openstreetmap.org/wiki/Rails#Installing_the_quadtile_functions
# or by looking at the readme in db/README
def test_changes_simple
- Timecop.freeze(Time.parse("2010-04-03 10:55:00"))
+ Timecop.freeze(Time.utc(2010, 4, 3, 10, 55, 0))
get :changes
assert_response :success
# print @response.body
now = Time.now.getutc
hourago = now - 1.hour
assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
- assert_select "changes[starttime='#{hourago.xmlschema}'][endtime='#{now.xmlschema}']", :count => 1
+ assert_select "changes[starttime='#{hourago.xmlschema}'][endtime='#{now.xmlschema}']", :count => 1 do
+ assert_select "tile", :count => 0
+ end
+ end
+ Timecop.return
+
+ Timecop.freeze(Time.utc(2007, 1, 1, 0, 30, 0))
+ get :changes
+ assert_response :success
+ # print @response.body
+ # As we have loaded the fixtures, we can assume that there are some
+ # changes at the time we have frozen at
+ now = Time.now.getutc
+ hourago = now - 1.hour
+ assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
+ assert_select "changes[starttime='#{hourago.xmlschema}'][endtime='#{now.xmlschema}']", :count => 1 do
+ assert_select "tile", :count => 10
+ end
end
Timecop.return
end
end
end
- def test_hours_invalid
+ def test_changes_hours_invalid
invalid = %w(-21 335 -1 0 25 26 100 one two three ping pong :)
invalid.each do |hour|
get :changes, :hours => hour
end
end
- def test_hours_valid
+ def test_changes_hours_valid
1.upto(24) do |hour|
get :changes, :hours => hour
assert_response :success
end
end
+ def test_changes_start_end_invalid
+ get :changes, :start => "2010-04-03 10:55:00", :end => "2010-04-03 09:55:00"
+ assert_response :bad_request
+ assert_equal @response.body, "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours"
+ end
+
+ def test_changes_start_end_valid
+ get :changes, :start => "2010-04-03 09:55:00", :end => "2010-04-03 10:55:00"
+ assert_response :success
+ end
+
def test_capabilities
get :capabilities
assert_response :success
end
def test_permissions_oauth
- @request.env["oauth.token"] = AccessToken.new do |token|
+ @request.env["oauth.token"] = AccessToken.new do |token|
# Just to test a few
token.allow_read_prefs = true
token.allow_write_api = true
def test_read_changeset
browse_check "changeset", changesets(:normal_user_first_change).id, "browse/changeset"
+ browse_check "changeset", changesets(:public_user_first_change).id, "browse/changeset"
+ end
+
+ def test_read_changeset_hidden_comments
+ browse_check "changeset", changesets(:normal_user_closed_change).id, "browse/changeset"
+ assert_select "div.changeset-comments ul li", :count => 3
+
+ session[:user] = users(:moderator_user).id
+
+ browse_check "changeset", changesets(:normal_user_closed_change).id, "browse/changeset"
+ assert_select "div.changeset-comments ul li", :count => 4
end
def test_read_note
browse_check "note", notes(:open_note).id, "browse/note"
end
+ def test_read_hidden_note
+ get :note, :id => notes(:hidden_note_with_comment).id
+ assert_response :not_found
+ assert_template "browse/not_found"
+ assert_template :layout => "map"
+
+ xhr :get, :note, :id => notes(:hidden_note_with_comment).id
+ assert_response :not_found
+ assert_template "browse/not_found"
+ assert_template :layout => "xhr"
+
+ session[:user] = users(:moderator_user).id
+
+ browse_check "note", notes(:hidden_note_with_comment).id, "browse/note"
+ end
+
+ def test_read_note_hidden_comments
+ browse_check "note", notes(:note_with_hidden_comment).id, "browse/note"
+ assert_select "div.note-comments ul li", :count => 1
+
+ session[:user] = users(:moderator_user).id
+
+ browse_check "note", notes(:note_with_hidden_comment).id, "browse/note"
+ assert_select "div.note-comments ul li", :count => 2
+ end
+
##
# Methods to check redaction.
#
get type, :id => -10 # we won't have an id that's negative
end
+ get type, :id => 0
+ assert_response :not_found
+ assert_template "browse/not_found"
+ assert_template :layout => "map"
+
+ xhr :get, type, :id => 0
+ assert_response :not_found
+ assert_template "browse/not_found"
+ assert_template :layout => "xhr"
+
get type, :id => id
assert_response :success
assert_template template
class ChangesetControllerTest < ActionController::TestCase
api_fixtures
- fixtures :changeset_comments, :changesets_subscribers
+ fixtures :friends, :changeset_comments, :changesets_subscribers
##
# test all routes which lead to this controller
)
assert_routing(
{ :path => "/history/friends", :method => :get },
- { :controller => "changeset", :action => "list", :friends => true }
+ { :controller => "changeset", :action => "list", :friends => true, :format => :html }
)
assert_routing(
{ :path => "/history/nearby", :method => :get },
- { :controller => "changeset", :action => "list", :nearby => true }
+ { :controller => "changeset", :action => "list", :nearby => true, :format => :html }
)
assert_routing(
{ :path => "/history", :method => :get },
# document structure.
def test_read
changeset_id = changesets(:normal_user_first_change).id
+
get :read, :id => changeset_id
assert_response :success, "cannot get first changeset"
assert_select "osm[version='#{API_VERSION}'][generator='OpenStreetMap server']", 1
assert_select "osm>changeset[id='#{changeset_id}']", 1
assert_select "osm>changeset>discussion", 1
+ assert_select "osm>changeset>discussion>comment", 0
+
+ changeset_id = changesets(:normal_user_closed_change).id
+
+ get :read, :id => changeset_id, :include_discussion => true
+ assert_response :success, "cannot get closed changeset with comments"
+
+ assert_select "osm[version='#{API_VERSION}'][generator='OpenStreetMap server']", 1
+ assert_select "osm>changeset[id='#{changeset_id}']", 1
+ assert_select "osm>changeset>discussion", 1
+ assert_select "osm>changeset>discussion>comment", 3
end
##
content "<osm><changeset>" +
"<tag k='created_by' v='osm test suite checking changesets'/>" +
"</changeset></osm>"
- assert_difference("Changeset.count", 1) do
+ assert_difference "Changeset.count", 1 do
put :create
end
assert_response :success
# check that the changeset bbox is within bounds
cs = Changeset.find(changeset_id)
assert cs.min_lon >= -180 * GeoRecord::SCALE, "Minimum longitude (#{cs.min_lon / GeoRecord::SCALE}) should be >= -180 to be valid."
- assert cs.max_lon <= 180 * GeoRecord::SCALE, "Maximum longitude (#{cs.max_lon / GeoRecord::SCALE}) should be <= 180 to be valid."
- assert cs.min_lat >= -90 * GeoRecord::SCALE, "Minimum latitude (#{cs.min_lat / GeoRecord::SCALE}) should be >= -90 to be valid."
- assert cs.max_lat >= 90 * GeoRecord::SCALE, "Maximum latitude (#{cs.max_lat / GeoRecord::SCALE}) should be <= 90 to be valid."
+ assert cs.max_lon <= 180 * GeoRecord::SCALE, "Maximum longitude (#{cs.max_lon / GeoRecord::SCALE}) should be <= 180 to be valid."
+ assert cs.min_lat >= -90 * GeoRecord::SCALE, "Minimum latitude (#{cs.min_lat / GeoRecord::SCALE}) should be >= -90 to be valid."
+ assert cs.max_lat >= 90 * GeoRecord::SCALE, "Maximum latitude (#{cs.max_lat / GeoRecord::SCALE}) should be <= 90 to be valid."
end
##
assert_response :success
assert_template nil
# print @response.body
- # FIXME needs more assert_select tests
+ # FIXME: needs more assert_select tests
assert_select "osmChange[version='#{API_VERSION}'][generator='#{GENERATOR}']" do
assert_select "create", :count => 5
assert_select "create>node[id='#{nodes(:used_node_2).node_id}'][visible='#{nodes(:used_node_2).visible?}'][version='#{nodes(:used_node_2).version}']" do
##
# check that the bounding box of a changeset gets updated correctly
- ## FIXME: This should really be moded to a integration test due to the with_controller
+ # FIXME: This should really be moded to a integration test due to the with_controller
def test_changeset_bbox
basic_authorization users(:public_user).email, "test"
# NOTE: the include method doesn't over-expand, like inserting
# a real method does. this is because we expect the client to
# know what it is doing!
- check_after_include(changeset_id, 1, 1, [1, 1, 1, 1])
- check_after_include(changeset_id, 3, 3, [1, 1, 3, 3])
- check_after_include(changeset_id, 4, 2, [1, 1, 4, 3])
- check_after_include(changeset_id, 2, 2, [1, 1, 4, 3])
- check_after_include(changeset_id, -1, -1, [-1, -1, 4, 3])
- check_after_include(changeset_id, -2, 5, [-2, -1, 4, 5])
+ check_after_include(changeset_id, 1, 1, [1, 1, 1, 1])
+ check_after_include(changeset_id, 3, 3, [1, 1, 3, 3])
+ check_after_include(changeset_id, 4, 2, [1, 1, 4, 3])
+ check_after_include(changeset_id, 2, 2, [1, 1, 4, 3])
+ check_after_include(changeset_id, -1, -1, [-1, -1, 4, 3])
+ check_after_include(changeset_id, -2, 5, [-2, -1, 4, 5])
end
##
end
##
- # This should display the last 20 changesets closed.
+ # This should display the last 20 changesets closed
def test_list
get :list, :format => "html"
assert_response :success
assert_template :layout => "map"
assert_select "h2", :text => "Changesets", :count => 1
- get :list, :format => "html", :list => "1", :bbox => "-180,-90,90,180"
+ xhr :get, :list, :format => "html", :list => "1"
assert_response :success
assert_template "list"
- changesets = Changeset
- .where("num_changes > 0 and min_lon is not null")
- .order(:created_at => :desc)
- .limit(20)
- assert changesets.size <= 20
-
- # Now check that all 20 (or however many were returned) changesets are in the html
- assert_select "li", :count => changesets.size
- changesets.each do |_changeset|
- # FIXME this test needs rewriting - test for table contents
- end
+ check_list_result(Changeset.all)
end
##
- # This should display the last 20 changesets closed.
+ # This should display the last 20 changesets closed
def test_list_xhr
xhr :get, :list, :format => "html"
assert_response :success
assert_template :layout => "xhr"
assert_select "h2", :text => "Changesets", :count => 1
- get :list, :format => "html", :list => "1", :bbox => "-180,-90,90,180"
+ xhr :get, :list, :format => "html", :list => "1"
assert_response :success
assert_template "list"
- changesets = Changeset
- .where("num_changes > 0 and min_lon is not null")
- .order(:created_at => :desc)
- .limit(20)
- assert changesets.size <= 20
+ check_list_result(Changeset.all)
+ end
- # Now check that all 20 (or however many were returned) changesets are in the html
- assert_select "li", :count => changesets.size
- changesets.each do |_changeset|
- # FIXME this test needs rewriting - test for table contents
- end
+ ##
+ # This should display the last 20 changesets closed in a specific area
+ def test_list_bbox
+ get :list, :format => "html", :bbox => "4.5,4.5,5.5,5.5"
+ assert_response :success
+ assert_template "history"
+ assert_template :layout => "map"
+ assert_select "h2", :text => "Changesets", :count => 1
+
+ xhr :get, :list, :format => "html", :bbox => "4.5,4.5,5.5,5.5", :list => "1"
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(Changeset.where("min_lon < 55000000 and max_lon > 45000000 and min_lat < 55000000 and max_lat > 45000000"))
end
##
# Checks the display of the user changesets listing
def test_list_user
user = users(:public_user)
+
+ get :list, :format => "html", :display_name => user.display_name
+ assert_response :success
+ assert_template "history"
+
+ xhr :get, :list, :format => "html", :display_name => user.display_name, :list => "1"
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(user.changesets)
+ end
+
+ ##
+ # Checks the display of the user changesets listing for a private user
+ def test_list_private_user
+ user = users(:normal_user)
+
get :list, :format => "html", :display_name => user.display_name
assert_response :success
assert_template "history"
- ## FIXME need to add more checks to see which if edits are actually shown if your data is public
+
+ xhr :get, :list, :format => "html", :display_name => user.display_name, :list => "1"
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(Changeset.none)
end
##
get :list, :format => "html", :display_name => "Some random user"
assert_response :not_found
assert_template "user/no_such_user"
+
+ xhr :get, :list, :format => "html", :display_name => "Some random user", :list => "1"
+ assert_response :not_found
+ assert_template "user/no_such_user"
+ end
+
+ ##
+ # Checks the display of the friends changesets listing
+ def test_list_friends
+ user = users(:normal_user)
+
+ get :list, :friends => true
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :referer => friend_changesets_path
+
+ session[:user] = user.id
+
+ get :list, :friends => true
+ assert_response :success
+ assert_template "history"
+
+ xhr :get, :list, :friends => true, :list => "1"
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(Changeset.where(:user => user.friend_users.identifiable))
+ end
+
+ ##
+ # Checks the display of the nearby user changesets listing
+ def test_list_nearby
+ user = users(:normal_user)
+
+ get :list, :nearby => true
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :referer => nearby_changesets_path
+
+ session[:user] = user.id
+
+ get :list, :nearby => true
+ assert_response :success
+ assert_template "history"
+
+ xhr :get, :list, :nearby => true, :list => "1"
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(Changeset.where(:user => user.nearby))
+ end
+
+ ##
+ # Check that we can't request later pages of the changesets list
+ def test_list_max_id
+ xhr :get, :list, :format => "html", :max_id => 4
+ assert_response :success
+ assert_template "history"
+ assert_template :layout => "xhr"
+ assert_select "h2", :text => "Changesets", :count => 1
+
+ xhr :get, :list, :format => "html", :list => "1", :max_id => 4
+ assert_response :success
+ assert_template "list"
+
+ check_list_result(Changeset.where("id <= 4"))
end
##
- # This should display the last 20 changesets closed.
+ # This should display the last 20 changesets closed
def test_feed
- changesets = Changeset.where("num_changes > 0").order(:created_at => :desc).limit(20)
- assert changesets.size <= 20
- get :feed, :format => "atom"
+ get :feed, :format => :atom
assert_response :success
assert_template "list"
- # Now check that all 20 (or however many were returned) changesets are in the html
- assert_select "feed", :count => 1
- assert_select "entry", :count => changesets.size
- changesets.each do |_changeset|
- # FIXME this test needs rewriting - test for feed contents
- end
+ assert_equal "application/atom+xml", response.content_type
+
+ check_feed_result(Changeset.all)
+ end
+
+ ##
+ # This should display the last 20 changesets closed in a specific area
+ def test_feed_bbox
+ get :feed, :format => :atom, :bbox => "4.5,4.5,5.5,5.5"
+ assert_response :success
+ assert_template "list"
+ assert_equal "application/atom+xml", response.content_type
+
+ check_feed_result(Changeset.where("min_lon < 55000000 and max_lon > 45000000 and min_lat < 55000000 and max_lat > 45000000"))
end
##
# Checks the display of the user changesets feed
def test_feed_user
user = users(:public_user)
- get :feed, :format => "atom", :display_name => user.display_name
+
+ get :feed, :format => :atom, :display_name => user.display_name
assert_response :success
assert_template "list"
assert_equal "application/atom+xml", response.content_type
- ## FIXME need to add more checks to see which if edits are actually shown if your data is public
+
+ check_feed_result(user.changesets)
end
##
assert_response :not_found
end
+ ##
+ # Check that we can't request later pages of the changesets feed
+ def test_feed_max_id
+ get :feed, :format => "atom", :max_id => 100
+ assert_response :redirect
+ assert_redirected_to :action => :feed
+ end
+
##
# check that the changeset download for a changeset with a redacted
# element in it doesn't contain that element.
def test_create_comment_success
basic_authorization(users(:public_user).email, "test")
- assert_difference("ChangesetComment.count") do
- post :comment, :id => changesets(:normal_user_closed_change).id, :text => "This is a comment"
+ assert_difference "ChangesetComment.count", 1 do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :comment, :id => changesets(:normal_user_closed_change).id, :text => "This is a comment"
+ end
+ end
+ assert_response :success
+
+ assert_difference "ChangesetComment.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ post :comment, :id => changesets(:normal_user_subscribed_change).id, :text => "This is a comment"
+ end
+ end
+ assert_response :success
+
+ email = ActionMailer::Base.deliveries.first
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] test2 has commented on one of your changesets", email.subject
+ assert_equal "test@openstreetmap.org", email.to.first
+
+ ActionMailer::Base.deliveries.clear
+
+ basic_authorization(users(:second_public_user).email, "test")
+
+ assert_difference "ChangesetComment.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 2 do
+ post :comment, :id => changesets(:normal_user_subscribed_change).id, :text => "This is a comment"
+ end
end
assert_response :success
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@openstreetmap.org" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] pulibc_test2 has commented on one of your changesets", email.subject
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@example.com" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] pulibc_test2 has commented on a changeset you are interested in", email.subject
+
+ ActionMailer::Base.deliveries.clear
end
##
basic_authorization(users(:public_user).email, "test")
# bad changeset id
- assert_no_difference("ChangesetComment.count") do
+ assert_no_difference "ChangesetComment.count" do
post :comment, :id => 999111, :text => "This is a comment"
end
assert_response :not_found
# not closed changeset
- assert_no_difference("ChangesetComment.count") do
+ assert_no_difference "ChangesetComment.count" do
post :comment, :id => changesets(:normal_user_first_change).id, :text => "This is a comment"
end
assert_response :conflict
# no text
- assert_no_difference("ChangesetComment.count") do
+ assert_no_difference "ChangesetComment.count" do
post :comment, :id => changesets(:normal_user_closed_change).id
end
assert_response :bad_request
# empty text
- assert_no_difference("ChangesetComment.count") do
+ assert_no_difference "ChangesetComment.count" do
post :comment, :id => changesets(:normal_user_closed_change).id, :text => ""
end
assert_response :bad_request
basic_authorization(users(:public_user).email, "test")
changeset = changesets(:normal_user_closed_change)
- assert_difference("changeset.subscribers.count") do
+ assert_difference "changeset.subscribers.count", 1 do
post :subscribe, :id => changeset.id
end
assert_response :success
def test_subscribe_fail
# unauthorized
changeset = changesets(:normal_user_closed_change)
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :subscribe, :id => changeset.id
end
assert_response :unauthorized
basic_authorization(users(:public_user).email, "test")
# bad changeset id
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :subscribe, :id => 999111
end
assert_response :not_found
# not closed changeset
changeset = changesets(:normal_user_first_change)
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :subscribe, :id => changeset.id
end
assert_response :conflict
# trying to subscribe when already subscribed
changeset = changesets(:normal_user_subscribed_change)
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :subscribe, :id => changeset.id
end
assert_response :conflict
basic_authorization(users(:public_user).email, "test")
changeset = changesets(:normal_user_subscribed_change)
- assert_difference("changeset.subscribers.count", -1) do
+ assert_difference "changeset.subscribers.count", -1 do
post :unsubscribe, :id => changeset.id
end
assert_response :success
def test_unsubscribe_fail
# unauthorized
changeset = changesets(:normal_user_closed_change)
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :unsubscribe, :id => changeset.id
end
assert_response :unauthorized
basic_authorization(users(:public_user).email, "test")
# bad changeset id
- assert_no_difference("changeset.subscribers.count", -1) do
+ assert_no_difference "changeset.subscribers.count" do
post :unsubscribe, :id => 999111
end
assert_response :not_found
# not closed changeset
changeset = changesets(:normal_user_first_change)
- assert_no_difference("changeset.subscribers.count", -1) do
+ assert_no_difference "changeset.subscribers.count" do
post :unsubscribe, :id => changeset.id
end
assert_response :conflict
# trying to unsubscribe when not subscribed
changeset = changesets(:normal_user_closed_change)
- assert_no_difference("changeset.subscribers.count") do
+ assert_no_difference "changeset.subscribers.count" do
post :unsubscribe, :id => changeset.id
end
assert_response :not_found
def test_hide_comment_fail
# unauthorized
comment = changeset_comments(:normal_comment_1)
- assert("comment.visible") do
- post :hide_comment, :id => comment.id
- assert_response :unauthorized
- end
+ assert_equal true, comment.visible
+
+ post :hide_comment, :id => comment.id
+ assert_response :unauthorized
+ assert_equal true, comment.reload.visible
basic_authorization(users(:public_user).email, "test")
# not a moderator
- assert("comment.visible") do
- post :hide_comment, :id => comment.id
- assert_response :forbidden
- end
+ post :hide_comment, :id => comment.id
+ assert_response :forbidden
+ assert_equal true, comment.reload.visible
basic_authorization(users(:moderator_user).email, "test")
# bad comment id
post :hide_comment, :id => 999111
assert_response :not_found
+ assert_equal true, comment.reload.visible
end
##
# test hide comment succes
def test_hide_comment_success
comment = changeset_comments(:normal_comment_1)
+ assert_equal true, comment.visible
basic_authorization(users(:moderator_user).email, "test")
- assert("!comment.visible") do
- post :hide_comment, :id => comment.id
- end
+ post :hide_comment, :id => comment.id
assert_response :success
+ assert_equal false, comment.reload.visible
end
##
# test unhide comment fail
def test_unhide_comment_fail
# unauthorized
- comment = changeset_comments(:normal_comment_1)
- assert("comment.visible") do
- post :unhide_comment, :id => comment.id
- assert_response :unauthorized
- end
+ comment = changeset_comments(:hidden_comment)
+ assert_equal false, comment.visible
+
+ post :unhide_comment, :id => comment.id
+ assert_response :unauthorized
+ assert_equal false, comment.reload.visible
basic_authorization(users(:public_user).email, "test")
# not a moderator
- assert("comment.visible") do
- post :unhide_comment, :id => comment.id
- assert_response :forbidden
- end
+ post :unhide_comment, :id => comment.id
+ assert_response :forbidden
+ assert_equal false, comment.reload.visible
basic_authorization(users(:moderator_user).email, "test")
# bad comment id
post :unhide_comment, :id => 999111
assert_response :not_found
+ assert_equal false, comment.reload.visible
end
##
# test unhide comment succes
def test_unhide_comment_success
- comment = changeset_comments(:normal_comment_1)
+ comment = changeset_comments(:hidden_comment)
+ assert_equal false, comment.visible
basic_authorization(users(:moderator_user).email, "test")
- assert("!comment.visible") do
- post :unhide_comment, :id => comment.id
- end
+ post :unhide_comment, :id => comment.id
assert_response :success
+ assert_equal true, comment.reload.visible
end
##
end
end
+ get :comments_feed, :format => "rss", :limit => 2
+ assert_response :success
+ assert_equal "application/rss+xml", @response.content_type
+ assert_select "rss", :count => 1 do
+ assert_select "channel", :count => 1 do
+ assert_select "item", :count => 2
+ end
+ end
+
get :comments_feed, :id => changesets(:normal_user_closed_change), :format => "rss"
assert_response :success
assert_equal "application/rss+xml", @response.content_type
end
end
- #------------------------------------------------------------
- # utility functions
- #------------------------------------------------------------
+ ##
+ # test comments feed
+ def test_comments_feed_bad_limit
+ get :comments_feed, :format => "rss", :limit => 0
+ assert_response :bad_request
+
+ get :comments_feed, :format => "rss", :limit => 100001
+ assert_response :bad_request
+ end
+
+ private
##
# boilerplate for checking that certain changesets exist in the
xml.find("//osm/way").first[name] = value.to_s
xml
end
+
+ ##
+ # check the result of a list
+ def check_list_result(changesets)
+ changesets = changesets.where("num_changes > 0")
+ .order(:created_at => :desc)
+ .limit(20)
+ assert changesets.size <= 20
+
+ assert_select "ol.changesets", :count => [changesets.size, 1].min do
+ assert_select "li", :count => changesets.size
+
+ changesets.each do |changeset|
+ assert_select "li#changeset_#{changeset.id}", :count => 1
+ end
+ end
+ end
+
+ ##
+ # check the result of a feed
+ def check_feed_result(changesets)
+ changesets = changesets.where("num_changes > 0")
+ .order(:created_at => :desc)
+ .limit(20)
+ assert changesets.size <= 20
+
+ assert_select "feed", :count => [changesets.size, 1].min do
+ assert_select "entry", :count => changesets.size
+
+ changesets.each do |changeset|
+ assert_select "entry > id", changeset_url(:id => changeset.id)
+ end
+ end
+ end
end
require "test_helper"
class DiaryEntryControllerTest < ActionController::TestCase
- fixtures :users, :diary_entries, :diary_comments, :languages
+ fixtures :users, :user_roles, :diary_entries, :diary_comments, :languages, :friends
include ActionView::Helpers::NumberHelper
)
end
- def test_showing_new_diary_entry
+ def test_new
+ # Make sure that you are redirected to the login page when you
+ # are not logged in
get :new
assert_response :redirect
- assert_redirected_to :controller => :user, :action => "login", :referer => "/diary/new"
- # Now pretend to login by using the session hash, with the
- # id of the person we want to login as through session(:user)=user.id
- get(:new, nil, "user" => users(:normal_user).id)
- assert_response :success
- # print @response.body
+ assert_redirected_to :controller => :user, :action => :login, :referer => "/diary/new"
- # print @response.to_yaml
+ # Now try again when logged in
+ get :new, {}, { :user => users(:normal_user).id }
+ assert_response :success
assert_select "title", :text => /New Diary Entry/, :count => 1
assert_select "div.content-heading", :count => 1 do
- assert_select "h1", :text => "New Diary Entry", :count => 1
+ assert_select "h1", :text => /New Diary Entry/, :count => 1
end
assert_select "div#content", :count => 1 do
- # We don't care about the layout, we just care about the form fields
- # that are available
- assert_select "form[action='/diary/new']", :count => 1 do
- assert_select "input[id=diary_entry_title][name='diary_entry[title]']", :count => 1
- assert_select "textarea#diary_entry_body[name='diary_entry[body]']", :count => 1
- assert_select "input#latitude[name='diary_entry[latitude]'][type=text]", :count => 1
- assert_select "input#longitude[name='diary_entry[longitude]'][type=text]", :count => 1
+ assert_select "form[action='/diary/new'][method=post]", :count => 1 do
+ assert_select "input#diary_entry_title[name='diary_entry[title]']", :count => 1
+ assert_select "textarea#diary_entry_body[name='diary_entry[body]']", :text => "", :count => 1
+ assert_select "select#diary_entry_language_code", :count => 1
+ assert_select "input#latitude[name='diary_entry[latitude]']", :count => 1
+ assert_select "input#longitude[name='diary_entry[longitude]']", :count => 1
assert_select "input[name=commit][type=submit][value=Save]", :count => 1
+ assert_select "input[name=commit][type=submit][value=Edit]", :count => 1
+ assert_select "input[name=commit][type=submit][value=Preview]", :count => 1
+ assert_select "input", :count => 7
end
end
+
+ new_title = "New Title"
+ new_body = "This is a new body for the diary entry"
+ new_latitude = "1.1"
+ new_longitude = "2.2"
+ new_language_code = "en"
+
+ # Now try creating a invalid diary entry with an empty body
+ assert_no_difference "DiaryEntry.count" do
+ post :new, { :commit => "save",
+ :diary_entry => { :title => new_title, :body => "", :latitude => new_latitude,
+ :longitude => new_longitude, :language_code => new_language_code } },
+ { :user => users(:normal_user).id }
+ end
+ assert_response :success
+ assert_template :edit
+
+ assert_nil UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first
+
+ # Now try creating a diary entry
+ assert_difference "DiaryEntry.count", 1 do
+ post :new, { :commit => "save",
+ :diary_entry => { :title => new_title, :body => new_body, :latitude => new_latitude,
+ :longitude => new_longitude, :language_code => new_language_code } },
+ { :user => users(:normal_user).id }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :list, :display_name => users(:normal_user).display_name
+ entry = DiaryEntry.order(:id).last
+ assert_equal users(:normal_user).id, entry.user_id
+ assert_equal new_title, entry.title
+ assert_equal new_body, entry.body
+ assert_equal new_latitude.to_f, entry.latitude
+ assert_equal new_longitude.to_f, entry.longitude
+ assert_equal new_language_code, entry.language_code
+
+ assert_equal new_language_code, UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first.v
+
+ new_language_code = "de"
+
+ # Now try creating a diary entry in a different language
+ assert_difference "DiaryEntry.count", 1 do
+ post :new, { :commit => "save",
+ :diary_entry => { :title => new_title, :body => new_body, :latitude => new_latitude,
+ :longitude => new_longitude, :language_code => new_language_code } },
+ { :user => users(:normal_user).id }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :list, :display_name => users(:normal_user).display_name
+ entry = DiaryEntry.order(:id).last
+ assert_equal users(:normal_user).id, entry.user_id
+ assert_equal new_title, entry.title
+ assert_equal new_body, entry.body
+ assert_equal new_latitude.to_f, entry.latitude
+ assert_equal new_longitude.to_f, entry.longitude
+ assert_equal new_language_code, entry.language_code
+
+ assert_equal new_language_code, UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first.v
+ end
+
+ def test_new_spammy
+ # Generate some spammy content
+ spammy_title = "Spam Spam Spam Spam Spam"
+ spammy_body = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ")
+
+ # Try creating a spammy diary entry
+ assert_difference "DiaryEntry.count", 1 do
+ post :new, { :commit => "save",
+ :diary_entry => { :title => spammy_title, :body => spammy_body, :language_code => "en" } },
+ { :user => users(:normal_user).id }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :list, :display_name => users(:normal_user).display_name
+ entry = DiaryEntry.order(:id).last
+ assert_equal users(:normal_user).id, entry.user_id
+ assert_equal spammy_title, entry.title
+ assert_equal spammy_body, entry.body
+ assert_equal "en", entry.language_code
+ assert_equal "suspended", User.find(users(:normal_user).id).status
+
+ # Follow the redirect
+ get :list, { :display_name => users(:normal_user).display_name }, { :user => users(:normal_user).id }
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :suspended
end
- def test_editing_diary_entry
+ def test_edit
entry = diary_entries(:normal_user_entry_1)
# Make sure that you are redirected to the login page when you are
# not logged in, without and with the id of the entry you want to edit
get :edit, :display_name => entry.user.display_name, :id => entry.id
assert_response :redirect
- assert_redirected_to :controller => :user, :action => "login", :referer => "/user/#{entry.user.display_name}/diary/#{entry.id}/edit"
+ assert_redirected_to :controller => :user, :action => :login, :referer => "/user/#{entry.user.display_name}/diary/#{entry.id}/edit"
# Verify that you get a not found error, when you pass a bogus id
- get(:edit, { :display_name => entry.user.display_name, :id => 9999 }, { "user" => entry.user.id })
+ get :edit, { :display_name => entry.user.display_name, :id => 9999 }, { :user => entry.user.id }
assert_response :not_found
assert_select "div.content-heading", :count => 1 do
assert_select "h2", :text => "No entry with the id: 9999", :count => 1
end
+ # Verify that you get redirected to view if you are not the user
+ # that created the entry
+ get :edit, { :display_name => entry.user.display_name, :id => entry.id }, { :user => users(:public_user).id }
+ assert_response :redirect
+ assert_redirected_to :action => :view, :display_name => entry.user.display_name, :id => entry.id
+
# Now pass the id, and check that you can edit it, when using the same
# user as the person who created the entry
- get(:edit, { :display_name => entry.user.display_name, :id => entry.id }, { "user" => entry.user.id })
+ get :edit, { :display_name => entry.user.display_name, :id => entry.id }, { :user => entry.user.id }
assert_response :success
assert_select "title", :text => /Edit diary entry/, :count => 1
assert_select "div.content-heading", :count => 1 do
new_latitude = "1.1"
new_longitude = "2.2"
new_language_code = "en"
- post(:edit, { :display_name => entry.user.display_name, :id => entry.id, "commit" => "save",
- "diary_entry" => { "title" => new_title, "body" => new_body, "latitude" => new_latitude,
- "longitude" => new_longitude, "language_code" => new_language_code } },
- { "user" => entry.user.id })
+ post :edit, { :display_name => entry.user.display_name, :id => entry.id, :commit => "save",
+ :diary_entry => { :title => new_title, :body => new_body, :latitude => new_latitude,
+ :longitude => new_longitude, :language_code => new_language_code } },
+ { :user => entry.user.id }
assert_response :redirect
assert_redirected_to :action => :view, :display_name => entry.user.display_name, :id => entry.id
# Now check that the new data is rendered, when logged in
- get :view, { :display_name => entry.user.display_name, :id => entry.id }, { "user" => entry.user.id }
+ get :view, { :display_name => entry.user.display_name, :id => entry.id }, { :user => entry.user.id }
assert_response :success
assert_template "diary_entry/view"
assert_select "title", :text => /Users' diaries | /, :count => 1
end
# and when not logged in as the user who wrote the entry
- get :view, { :display_name => entry.user.display_name, :id => entry.id }, { "user" => entry.user.id }
+ get :view, { :display_name => entry.user.display_name, :id => entry.id }, { :user => entry.user.id }
assert_response :success
assert_template "diary_entry/view"
assert_select "title", :text => /Users' diaries | /, :count => 1
end
end
- def test_edit_diary_entry_i18n
- get :edit, { :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_entry_1).id }, { "user" => users(:normal_user).id }
+ def test_edit_i18n
+ get :edit, { :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_entry_1).id }, { :user => users(:normal_user).id }
assert_response :success
assert_select "span[class=translation_missing]", false, "Missing translation in edit diary entry"
end
- def test_create_diary_entry
- # Make sure that you are redirected to the login page when you
- # are not logged in
- get :new
- assert_response :redirect
- assert_redirected_to :controller => :user, :action => :login, :referer => "/diary/new"
-
- # Now try again when logged in
- get :new, {}, { :user => users(:normal_user).id }
- assert_response :success
- assert_select "title", :text => /New Diary Entry/, :count => 1
- assert_select "div.content-heading", :count => 1 do
- assert_select "h1", :text => /New Diary Entry/, :count => 1
- end
- assert_select "div#content", :count => 1 do
- assert_select "form[action='/diary/new'][method=post]", :count => 1 do
- assert_select "input#diary_entry_title[name='diary_entry[title]']", :count => 1
- assert_select "textarea#diary_entry_body[name='diary_entry[body]']", :text => "", :count => 1
- assert_select "select#diary_entry_language_code", :count => 1
- assert_select "input#latitude[name='diary_entry[latitude]']", :count => 1
- assert_select "input#longitude[name='diary_entry[longitude]']", :count => 1
- assert_select "input[name=commit][type=submit][value=Save]", :count => 1
- assert_select "input[name=commit][type=submit][value=Edit]", :count => 1
- assert_select "input[name=commit][type=submit][value=Preview]", :count => 1
- assert_select "input", :count => 7
- end
- end
-
- # Now try creating a diary entry
- new_title = "New Title"
- new_body = "This is a new body for the diary entry"
- new_latitude = "1.1"
- new_longitude = "2.2"
- new_language_code = "en"
- assert_difference "DiaryEntry.count", 1 do
- post(:new, { "commit" => "save",
- "diary_entry" => { "title" => new_title, "body" => new_body, "latitude" => new_latitude,
- "longitude" => new_longitude, "language_code" => new_language_code } },
- { :user => users(:normal_user).id })
- end
- assert_response :redirect
- assert_redirected_to :action => :list, :display_name => users(:normal_user).display_name
- entry = DiaryEntry.find(6)
- assert_equal users(:normal_user).id, entry.user_id
- assert_equal new_title, entry.title
- assert_equal new_body, entry.body
- assert_equal new_latitude.to_f, entry.latitude
- assert_equal new_longitude.to_f, entry.longitude
- assert_equal new_language_code, entry.language_code
- end
-
- def test_creating_diary_comment
+ def test_comment
entry = diary_entries(:normal_user_entry_1)
# Make sure that you are denied when you are not logged in
assert_select "h2", :text => "No entry with the id: 9999", :count => 1
end
+ # Now try an invalid comment with an empty body
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ assert_no_difference "DiaryComment.count" do
+ post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "" } }, { :user => users(:public_user).id }
+ end
+ end
+ assert_response :success
+ assert_template :view
+
# Now try again with the right id
assert_difference "ActionMailer::Base.deliveries.size", 1 do
assert_difference "DiaryComment.count", 1 do
assert_match /New comment/, email.text_part.decoded
assert_match /New comment/, email.html_part.decoded
ActionMailer::Base.deliveries.clear
- comment = DiaryComment.find(5)
+ comment = DiaryComment.order(:id).last
assert_equal entry.id, comment.diary_entry_id
assert_equal users(:public_user).id, comment.user_id
assert_equal "New comment", comment.body
get :view, :display_name => entry.user.display_name, :id => entry.id
assert_response :success
assert_select ".diary-comment", :count => 1 do
- assert_select "#comment5", :count => 1 do
+ assert_select "#comment#{comment.id}", :count => 1 do
assert_select "a[href='/user/#{users(:public_user).display_name}']", :text => users(:public_user).display_name, :count => 1
end
assert_select ".richtext", :text => /New comment/, :count => 1
end
end
- # Check that you can get the expected response and template for all available languages
- # Should test that there are no <span class="translation_missing">
- def test_listing_diary_entries
+ def test_comment_spammy
+ # Find the entry to comment on
+ entry = diary_entries(:normal_user_entry_1)
+
+ # Generate some spammy content
+ spammy_text = 1.upto(50).map { |n| "http://example.com/spam#{n}" }.join(" ")
+
+ # Try creating a spammy comment
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ assert_difference "DiaryComment.count", 1 do
+ post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => spammy_text } }, { :user => users(:public_user).id }
+ end
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :view, :display_name => entry.user.display_name, :id => entry.id
+ email = ActionMailer::Base.deliveries.first
+ assert_equal [users(:normal_user).email], email.to
+ assert_equal "[OpenStreetMap] #{users(:public_user).display_name} commented on your diary entry", email.subject
+ assert_match %r{http://example.com/spam}, email.text_part.decoded
+ assert_match %r{http://example.com/spam}, email.html_part.decoded
+ ActionMailer::Base.deliveries.clear
+ comment = DiaryComment.order(:id).last
+ assert_equal entry.id, comment.diary_entry_id
+ assert_equal users(:public_user).id, comment.user_id
+ assert_equal spammy_text, comment.body
+ assert_equal "suspended", User.find(users(:public_user).id).status
+
+ # Follow the redirect
+ get :list, { :display_name => users(:normal_user).display_name }, { :user => users(:public_user).id }
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :suspended
+
+ # Now view the diary entry, and check the new comment is not present
+ get :view, :display_name => entry.user.display_name, :id => entry.id
+ assert_response :success
+ assert_select ".diary-comment", :count => 0
+ end
+
+ def test_list_all
+ # Try a list of all diary entries
get :list
- assert_response :success, "Should be able to list the diary entries in locale"
- assert_template "list", "Should use the list template in locale"
- assert_select "span[class=translation_missing]", false, "Missing translation in list of diary entries"
+ check_diary_list :normal_user_entry_1, :normal_user_geo_entry, :public_user_entry_1
+ end
- # Now try to find a specific user's diary entry
+ def test_list_user
+ # Try a list of diary entries for a valid user
get :list, :display_name => users(:normal_user).display_name
- assert_response :success, "Should be able to list the diary entries for a user in locale"
- assert_template "list", "Should use the list template for a user in locale"
- assert_no_missing_translations
+ check_diary_list :normal_user_entry_1, :normal_user_geo_entry
+
+ # Try a list of diary entries for an invalid user
+ get :list, :display_name => "No Such User"
+ assert_response :not_found
+ assert_template "user/no_such_user"
+ end
+
+ def test_list_friends
+ # Try a list of diary entries for your friends when not logged in
+ get :list, :friends => true
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :referer => "/diary/friends"
+
+ # Try a list of diary entries for your friends when logged in
+ get :list, { :friends => true }, { :user => users(:normal_user).id }
+ check_diary_list :public_user_entry_1
+ get :list, { :friends => true }, { :user => users(:public_user).id }
+ check_diary_list
+ end
+
+ def test_list_nearby
+ # Try a list of diary entries for nearby users when not logged in
+ get :list, :nearby => true
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :referer => "/diary/nearby"
+
+ # Try a list of diary entries for nearby users when logged in
+ get :list, { :nearby => true }, { :user => users(:german_user).id }
+ check_diary_list :public_user_entry_1
+ get :list, { :nearby => true }, { :user => users(:public_user).id }
+ check_diary_list
+ end
+
+ def test_list_language
+ # Try a list of diary entries in english
+ get :list, :language => "en"
+ check_diary_list :normal_user_entry_1, :public_user_entry_1
+
+ # Try a list of diary entries in german
+ get :list, :language => "de"
+ check_diary_list :normal_user_geo_entry
+
+ # Try a list of diary entries in slovenian
+ get :list, :language => "sl"
+ check_diary_list
end
def test_rss
assert_select "channel", :count => 1 do
assert_select "channel>title", :count => 1
assert_select "image", :count => 1
- assert_select "channel>item", :count => 2
+ assert_select "channel>item", :count => 3
end
end
end
def test_rss_language
get :rss, :language => diary_entries(:normal_user_entry_1).language_code, :format => :rss
assert_response :success, "Should be able to get a specific language diary RSS"
- assert_select "rss>channel>item", :count => 1 # , "Diary entries should be filtered by language"
+ assert_select "rss>channel>item", :count => 2 # , "Diary entries should be filtered by language"
end
# def test_rss_nonexisting_language
assert_response :not_found, "Should not be able to get a deleted users diary RSS"
end
- def test_viewing_diary_entry
+ def test_view
# Try a normal entry that should work
get :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_entry_1).id
assert_response :success
assert_response :not_found
end
- def test_viewing_hidden_comments
+ def test_view_hidden_comments
# Get a diary entry that has hidden comments
get :view, :display_name => users(:normal_user).display_name, :id => diary_entries(:normal_user_geo_entry).id
assert_response :success
get :comments, :display_name => users(:deleted_user).display_name
assert_response :not_found
end
+
+ private
+
+ def check_diary_list(*entries)
+ assert_response :success
+ assert_template "list"
+ assert_no_missing_translations
+ assert_select "div.diary_post", entries.count
+
+ entries.each do |entry|
+ entry = diary_entries(entry)
+ assert_select "a[href=?]", "/user/#{entry.user.display_name}/diary/#{entry.id}"
+ end
+ end
end
)
end
+ ##
+ # Test identification with no arguments
+ def test_identify_error
+ get :search
+ assert_response :bad_request
+
+ xhr :get, :search
+ assert_response :bad_request
+ end
+
##
# Test identification of basic lat/lon pairs
def test_identify_latlon_basic
##
# Test identification fall through to the default case
def test_identify_default
- search_check "foo bar baz", ["osm_nominatim"]
+ search_check "foo bar baz", %w(osm_nominatim geonames)
+ end
+
+ ##
+ # Test the builtin latitude+longitude search
+ def test_search_latlon
+ xhr :get, :search_latlon, :lat => 1.23, :lon => 4.56, :zoom => 16
+ results_check :name => "1.23, 4.56", :lat => 1.23, :lon => 4.56, :zoom => 16
+
+ xhr :get, :search_latlon, :lat => -91.23, :lon => 4.56, :zoom => 16
+ results_check_error "Latitude -91.23 out of range"
+
+ xhr :get, :search_latlon, :lat => 91.23, :lon => 4.56, :zoom => 16
+ results_check_error "Latitude 91.23 out of range"
+
+ xhr :get, :search_latlon, :lat => 1.23, :lon => -180.23, :zoom => 16
+ results_check_error "Longitude -180.23 out of range"
+
+ xhr :get, :search_latlon, :lat => 1.23, :lon => 180.23, :zoom => 16
+ results_check_error "Longitude 180.23 out of range"
+ end
+
+ ##
+ # Test the US postcode search
+ def test_search_us_postcode
+ with_http_stubs "geocoder_us" do
+ xhr :get, :search_us_postcode,
+ :query => "90210", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check :prefix => "Beverly Hills, CA,", :name => "90210",
+ :lat => 34.088808, :lon => -118.40612
+
+ xhr :get, :search_us_postcode,
+ :query => "00000", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check
+ end
+ end
+
+ ##
+ # Test the UK postcode search
+ def test_search_uk_postcode
+ with_http_stubs "npemap" do
+ xhr :get, :search_uk_postcode,
+ :query => "CV4 7AL", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check :name => "CV4 7AL", :lat => 52.381748701968, :lon => -1.56176420939232
+
+ xhr :get, :search_uk_postcode,
+ :query => "XX9 9XX", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check
+ end
+ end
+
+ ##
+ # Test the Canadian postcode search
+ def test_search_ca_postcode
+ with_http_stubs "geocoder_ca" do
+ xhr :get, :search_ca_postcode,
+ :query => "A1B 2C3", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check :name => "A1B 2C3", :lat => "47.172520", :lon => "-55.440515"
+
+ xhr :get, :search_ca_postcode,
+ :query => "k1a 0b1", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check :name => "K1A 0B1", :lat => "45.375437", :lon => "-75.691041"
+
+ xhr :get, :search_ca_postcode,
+ :query => "Q0Q 0Q0", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check
+ end
+ end
+
+ ##
+ # Test the nominatim forward search
+ def test_search_osm_nominatim
+ with_http_stubs "nominatim" do
+ xhr :get, :search_osm_nominatim,
+ :query => "Hoddesdon", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check "name" => "Hoddesdon, Hertfordshire, East of England, England, United Kingdom",
+ "min-lat" => 51.7216709, "max-lat" => 51.8016709,
+ "min-lon" => -0.0512898, "max-lon" => 0.0287102,
+ "type" => "node", "id" => 18007599
+
+ xhr :get, :search_osm_nominatim,
+ :query => "Broxbourne", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check({ "prefix" => "Suburb",
+ "name" => "Broxbourne, Hertfordshire, East of England, England, United Kingdom",
+ "min-lat" => 51.7265723, "max-lat" => 51.7665723,
+ "min-lon" => -0.0390782, "max-lon" => 0.0009218,
+ "type" => "node", "id" => 28825933 },
+ { "prefix" => "City Boundary",
+ "name" => "Broxbourne, Hertfordshire, East of England, England, United Kingdom",
+ "min-lat" => 51.6808751, "max-lat" => 51.7806237,
+ "min-lon" => -0.114204, "max-lon" => 0.0145267,
+ "type" => "relation", "id" => 2677978 },
+ { "prefix" => "Railway Station",
+ "name" => "Broxbourne, Stafford Drive, Broxbourne, Hertfordshire, East of England, England, United Kingdom",
+ "min-lat" => 51.7418469, "max-lat" => 51.7518469,
+ "min-lon" => -0.0156773, "max-lon" => -0.0056773,
+ "type" => "node", "id" => 17044599 })
+ end
+ end
+
+ ##
+ # Test the geonames forward search
+ def test_search_geonames
+ with_http_stubs "geonames" do
+ xhr :get, :search_geonames,
+ :query => "Hoddesdon", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check :name => "Hoddesdon", :lat => 51.76148, :lon => -0.01144
+
+ xhr :get, :search_geonames,
+ :query => "Broxbourne", :zoom => 10,
+ :minlon => -0.559, :minlat => 51.217,
+ :maxlon => 0.836, :maxlat => 51.766
+ results_check({ :name => "Broxbourne", :lat => 51.74712, :lon => -0.01923 },
+ { :name => "Broxbourne District", :lat => 51.73026, :lon => -0.04821 },
+ { :name => "Cheshunt", :lat => 51.70791, :lon => -0.03739 },
+ { :name => "Hoddesdon", :lat => 51.76148, :lon => -0.01144 },
+ { :name => "Waltham Cross", :lat => 51.68905, :lon => -0.0333 },
+ { :name => "Goffs Oak", :lat => 51.71015, :lon => -0.0872 },
+ { :name => "Wormley", :lat => 51.7324, :lon => -0.0242 },
+ { :name => "Broxbourne", :lat => -27.50314, :lon => 151.378 },
+ { :name => "Lee Valley White Water Centre", :lat => 51.68814, :lon => -0.01682 },
+ { :name => "Cheshunt Railway Station", :lat => 51.703, :lon => -0.024 },
+ { :name => "Theobalds Grove Railway Station", :lat => 51.692, :lon => -0.035 },
+ { :name => "Waltham Cross Railway Station", :lat => 51.685, :lon => -0.027 },
+ { :name => "Rye House Station", :lat => 51.76938, :lon => 0.00562 },
+ { :name => "Broxbourne Station", :lat => 51.74697, :lon => -0.01105 },
+ { :name => "Broxbornebury Park", :lat => 51.75252, :lon => -0.03839 },
+ { :name => "Marriott Cheshunt", :lat => 51.7208, :lon => -0.0324 },
+ { :name => "Cheshunt Community Hospital", :lat => 51.68396, :lon => -0.03951 })
+ end
+ end
+
+ ##
+ # Test the nominatim reverse search
+ def test_search_osm_nominatim_reverse
+ with_http_stubs "nominatim" do
+ xhr :get, :search_osm_nominatim_reverse, :lat => 51.7632, :lon => -0.0076, :zoom => 15
+ results_check :name => "Broxbourne, Hertfordshire, East of England, England, United Kingdom",
+ :lat => 51.7465723, :lon => -0.0190782,
+ :type => "node", :id => 28825933, :zoom => 15
+
+ xhr :get, :search_osm_nominatim_reverse, :lat => 51.7632, :lon => -0.0076, :zoom => 17
+ results_check :name => "Dinant Link Road, Broxbourne, Hertfordshire, East of England, England, EN11 8HX, United Kingdom",
+ :lat => 51.7634883, :lon => -0.0088373,
+ :type => "way", :id => 3489841, :zoom => 17
+ end
+ end
+
+ ##
+ # Test the geonames reverse search
+ def test_search_geonames_reverse
+ with_http_stubs "geonames" do
+ xhr :get, :search_geonames_reverse, :lat => 51.7632, :lon => -0.0076, :zoom => 15
+ results_check :name => "England", :suffix => ", United Kingdom",
+ :lat => 51.7632, :lon => -0.0076
+ end
end
private
def latlon_check(query, lat, lon)
- post :search, :query => query
+ get :search, :query => query
assert_response :success
- assert_template "search"
+ assert_template :search
assert_template :layout => "map"
- assert_equal %w(latlon osm_nominatim_reverse), assigns(:sources)
+ assert_equal %w(latlon osm_nominatim_reverse geonames_reverse), assigns(:sources)
assert_nil @controller.params[:query]
assert_in_delta lat, @controller.params[:lat]
assert_in_delta lon, @controller.params[:lon]
- xhr :post, :search, :query => query
+ xhr :get, :search, :query => query
assert_response :success
- assert_template "search"
+ assert_template :search
assert_template :layout => "xhr"
- assert_equal %w(latlon osm_nominatim_reverse), assigns(:sources)
+ assert_equal %w(latlon osm_nominatim_reverse geonames_reverse), assigns(:sources)
assert_nil @controller.params[:query]
assert_in_delta lat, @controller.params[:lat]
assert_in_delta lon, @controller.params[:lon]
end
def search_check(query, sources)
- post :search, :query => query
+ get :search, :query => query
assert_response :success
- assert_template "search"
+ assert_template :search
assert_template :layout => "map"
assert_equal sources, assigns(:sources)
- xhr :post, :search, :query => query
+ xhr :get, :search, :query => query
assert_response :success
- assert_template "search"
+ assert_template :search
assert_template :layout => "xhr"
assert_equal sources, assigns(:sources)
end
+
+ def results_check(*results)
+ assert_response :success
+ assert_template :results
+ assert_template :layout => nil
+ if results.empty?
+ assert_select "ul.results-list", 0
+ else
+ assert_select "ul.results-list", 1 do
+ assert_select "p.search_results_entry", results.count
+
+ results.each do |result|
+ attrs = result.collect { |k, v| "[data-#{k}='#{v}']" }.join("")
+ assert_select "p.search_results_entry a.set_position#{attrs}", result[:name]
+ end
+ end
+ end
+ end
+
+ def results_check_error(error)
+ assert_response :success
+ assert_template :error
+ assert_template :layout => nil
+ assert_select "p.search_results_error", error
+ end
end
assert_equal false, m.to_user_visible
# Check that the deleting a sent message works
- post :delete, :message_id => messages(:unread_message).id
- assert_redirected_to inbox_path(:display_name => users(:normal_user).display_name)
+ post :delete, :message_id => messages(:unread_message).id, :referer => outbox_path(:display_name => users(:normal_user).display_name)
+ assert_redirected_to outbox_path(:display_name => users(:normal_user).display_name)
assert_equal "Message deleted", flash[:notice]
m = Message.find(messages(:unread_message).id)
assert_equal false, m.from_user_visible
assert apinode.tags.include?("\#{@user.inspect}")
end
- def basic_authorization(user, pass)
- @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
- end
-
- def content(c)
- @request.env["RAW_POST_DATA"] = c.to_s
- end
-
##
# update the changeset_id of a node element
def update_changeset(xml, changeset_id)
require "test_helper"
class NotesControllerTest < ActionController::TestCase
- fixtures :users, :notes, :note_comments
+ fixtures :users, :user_roles, :notes, :note_comments
##
# test all routes which lead to this controller
end
def test_create_success
- assert_difference("Note.count") do
- assert_difference("NoteComment.count") do
+ assert_difference "Note.count", 1 do
+ assert_difference "NoteComment.count", 1 do
post :create, :lat => -1.0, :lon => -1.0, :text => "This is a comment", :format => "json"
end
end
end
def test_create_fail
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lon => -1.0, :text => "This is a comment"
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -1.0, :text => "This is a comment"
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -1.0, :lon => -1.0
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -1.0, :lon => -1.0, :text => ""
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -100.0, :lon => -1.0, :text => "This is a comment"
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -1.0, :lon => -200.0, :text => "This is a comment"
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => "abc", :lon => -1.0, :text => "This is a comment"
end
end
assert_response :bad_request
- assert_no_difference("Note.count") do
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "Note.count" do
+ assert_no_difference "NoteComment.count" do
post :create, :lat => -1.0, :lon => "abc", :text => "This is a comment"
end
end
end
def test_comment_success
- assert_difference("NoteComment.count") do
- post :comment, :id => notes(:open_note_with_comment).id, :text => "This is an additional comment", :format => "json"
+ assert_difference "NoteComment.count", 1 do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :comment, :id => notes(:open_note_with_comment).id, :text => "This is an additional comment", :format => "json"
+ end
end
assert_response :success
js = ActiveSupport::JSON.decode(@response.body)
assert_equal "commented", js["properties"]["comments"].last["action"]
assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
assert_nil js["properties"]["comments"].last["user"]
+
+ assert_difference "NoteComment.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 2 do
+ post :comment, :id => notes(:note_with_comments_by_users).id, :text => "This is an additional comment", :format => "json"
+ end
+ end
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 3, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_nil js["properties"]["comments"].last["user"]
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@openstreetmap.org" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] An anonymous user has commented on one of your notes", email.subject
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "public@OpenStreetMap.org" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] An anonymous user has commented on a note you are interested in", email.subject
+
+ get :show, :id => notes(:note_with_comments_by_users).id, :format => "json"
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 3, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_nil js["properties"]["comments"].last["user"]
+
+ ActionMailer::Base.deliveries.clear
+
+ basic_authorization(users(:public_user).email, "test")
+
+ assert_difference "NoteComment.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 2 do
+ post :comment, :id => notes(:note_with_comments_by_users).id, :text => "This is an additional comment", :format => "json"
+ end
+ end
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 4, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_equal "test2", js["properties"]["comments"].last["user"]
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "test@openstreetmap.org" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] test2 has commented on one of your notes", email.subject
+ assert_equal "test@openstreetmap.org", email.to.first
+
+ email = ActionMailer::Base.deliveries.find { |e| e.to.first == "public@OpenStreetMap.org" }
+ assert_not_nil email
+ assert_equal 1, email.to.length
+ assert_equal "[OpenStreetMap] test2 has commented on a note you are interested in", email.subject
+
+ get :show, :id => notes(:note_with_comments_by_users).id, :format => "json"
+ assert_response :success
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "Feature", js["type"]
+ assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+ assert_equal "open", js["properties"]["status"]
+ assert_equal 4, js["properties"]["comments"].count
+ assert_equal "commented", js["properties"]["comments"].last["action"]
+ assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
+ assert_equal "test2", js["properties"]["comments"].last["user"]
+
+ ActionMailer::Base.deliveries.clear
end
def test_comment_fail
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :text => "This is an additional comment"
end
assert_response :bad_request
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :id => notes(:open_note_with_comment).id
end
assert_response :bad_request
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :id => notes(:open_note_with_comment).id, :text => ""
end
assert_response :bad_request
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :id => 12345, :text => "This is an additional comment"
end
assert_response :not_found
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :id => notes(:hidden_note_with_comment).id, :text => "This is an additional comment"
end
assert_response :gone
- assert_no_difference("NoteComment.count") do
+ assert_no_difference "NoteComment.count" do
post :comment, :id => notes(:closed_note_with_comment).id, :text => "This is an additional comment"
end
assert_response :conflict
assert_equal "application/gpx+xml", @response.content_type
assert_select "gpx", :count => 1 do
assert_select "wpt[lat='#{notes(:open_note).lat}'][lon='#{notes(:open_note).lon}']", :count => 1 do
- assert_select "extension", :count => 1 do
+ assert_select "time", :count => 1
+ assert_select "name", "Note: #{notes(:open_note).id}"
+ assert_select "desc", :count => 1
+ assert_select "link[href='http://www.openstreetmap.org/note/#{notes(:open_note).id}']", :count => 1
+ assert_select "extensions", :count => 1 do
assert_select "id", notes(:open_note).id
assert_select "url", note_url(notes(:open_note), :format => "gpx")
assert_select "comment_url", comment_note_url(notes(:open_note), :format => "gpx")
end
end
+ def test_index_limit
+ get :index, :bbox => "1,1,1.2,1.2", :limit => 1, :format => "rss"
+ assert_response :success
+ assert_equal "application/rss+xml", @response.content_type
+ assert_select "rss", :count => 1 do
+ assert_select "channel", :count => 1 do
+ assert_select "item", :count => 1
+ end
+ end
+
+ get :index, :bbox => "1,1,1.2,1.2", :limit => 1, :format => "json"
+ assert_response :success
+ assert_equal "application/json", @response.content_type
+ js = ActiveSupport::JSON.decode(@response.body)
+ assert_not_nil js
+ assert_equal "FeatureCollection", js["type"]
+ assert_equal 1, js["features"].count
+
+ get :index, :bbox => "1,1,1.2,1.2", :limit => 1, :format => "xml"
+ assert_response :success
+ assert_equal "application/xml", @response.content_type
+ assert_select "osm", :count => 1 do
+ assert_select "note", :count => 1
+ end
+
+ get :index, :bbox => "1,1,1.2,1.2", :limit => 1, :format => "gpx"
+ assert_response :success
+ assert_equal "application/gpx+xml", @response.content_type
+ assert_select "gpx", :count => 1 do
+ assert_select "wpt", :count => 1
+ end
+ end
+
def test_index_empty_area
get :index, :bbox => "5,5,5.1,5.1", :format => "rss"
assert_response :success
def test_mine_success
get :mine, :display_name => "test"
assert_response :success
+ assert_select "table.note_list tr", :count => 2
+
+ get :mine, :display_name => "pulibc_test2"
+ assert_response :success
+ assert_select "table.note_list tr", :count => 3
+
+ get :mine, :display_name => "non-existent"
+ assert_response :not_found
+
+ session[:user] = users(:moderator_user).id
+
+ get :mine, :display_name => "test"
+ assert_response :success
+ assert_select "table.note_list tr", :count => 2
get :mine, :display_name => "pulibc_test2"
assert_response :success
+ assert_select "table.note_list tr", :count => 4
get :mine, :display_name => "non-existent"
assert_response :not_found
:client_application => {
:name => "Test Application"
}
- }, { :user => user }
+ }, { :user => user }
end
assert_response :success
assert_template "new"
:name => "Test Application",
:url => "http://test.example.com/"
}
- }, { :user => user }
+ }, { :user => user }
end
assert_response :redirect
assert_redirected_to oauth_client_path(:id => ClientApplication.find_by_name("Test Application").id)
:name => "New Name",
:url => nil
}
- }, { :user => user }
+ }, { :user => user }
assert_response :success
assert_template "edit"
:name => "New Name",
:url => "http://new.example.com/url"
}
- }, { :user => user }
+ }, { :user => user }
assert_response :redirect
assert_redirected_to oauth_client_path(:id => client.id)
end
# matching versions of the object.
#
##
- # FIXME Move this test to being an integration test since it spans multiple controllers
+ # FIXME: Move this test to being an integration test since it spans multiple controllers
def test_version
## First try this with a non-public user
basic_authorization(users(:normal_user).email, "test")
# randomly move the node about
20.times do
# move the node somewhere else
- xml_node["lat"] = precision(rand * 180 - 90).to_s
+ xml_node["lat"] = precision(rand * 180 - 90).to_s
xml_node["lon"] = precision(rand * 360 - 180).to_s
with_controller(NodeController.new) do
content xml_doc
# randomly move the node about
20.times do
# move the node somewhere else
- xml_node["lat"] = precision(rand * 180 - 90).to_s
+ xml_node["lat"] = precision(rand * 180 - 90).to_s
xml_node["lon"] = precision(rand * 360 - 180).to_s
with_controller(NodeController.new) do
content xml_doc
check_not_found_id_version(70000, 312344)
check_not_found_id_version(-1, -13)
check_not_found_id_version(nodes(:visible_node).id, 24354)
- check_not_found_id_version(24356, nodes(:visible_node).version)
+ check_not_found_id_version(24356, nodes(:visible_node).version)
end
def check_not_found_id_version(id, version)
assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 0, "redacted node #{node.node_id} version #{node.version} shouldn't be present in the history."
end
+ ##
+ # test the unredaction of an old version of a node, while not being
+ # authorised.
+ def test_unredact_node_unauthorised
+ node = nodes(:redacted_node_redacted_version)
+
+ post :redact, :id => node.node_id, :version => node.version
+ assert_response :unauthorized, "should need to be authenticated to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a node, while being
+ # authorised as a normal user.
+ def test_unredact_node_normal_user
+ node = nodes(:redacted_node_redacted_version)
+ basic_authorization(users(:public_user).email, "test")
+
+ post :redact, :id => node.node_id, :version => node.version
+ assert_response :forbidden, "should need to be moderator to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a node, while being
+ # authorised as a moderator.
+ def test_unredact_node_moderator
+ node = nodes(:redacted_node_redacted_version)
+ basic_authorization(users(:moderator_user).email, "test")
+
+ post :redact, :id => node.node_id, :version => node.version
+ assert_response :success, "should be OK to redact old version as moderator."
+
+ # check moderator can now see the redacted data, when not
+ # passing the aspecial flag
+ get :version, :id => node.node_id, :version => node.version
+ assert_response :success, "After unredaction, node should not be gone for moderator."
+
+ # and when accessed via history
+ get :history, :id => node.node_id
+ assert_response :success, "Unredaction shouldn't have stopped history working."
+ assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 1, "node #{node.node_id} version #{node.version} should now be present in the history for moderators without passing flag."
+
+ basic_authorization(users(:normal_user).email, "test")
+
+ # check normal user can now see the redacted data
+ get :version, :id => node.node_id, :version => node.version
+ assert_response :success, "After unredaction, node should not be gone for moderator."
+
+ # and when accessed via history
+ get :history, :id => node.node_id
+ assert_response :success, "Unredaction shouldn't have stopped history working."
+ assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 1, "node #{node.node_id} version #{node.version} should now be present in the history for moderators without passing flag."
+ end
+
+ private
+
def do_redact_node(node, redaction)
get :version, :id => node.node_id, :version => node.version
assert_response :success, "should be able to get version #{node.version} of node #{node.node_id}."
assert_select "osm relation[id='#{relation.relation_id}'][version='#{relation.version}']", 0, "redacted relation #{relation.relation_id} version #{relation.version} shouldn't be present in the history."
end
+ ##
+ # test the unredaction of an old version of a relation, while not being
+ # authorised.
+ def test_unredact_relation_unauthorised
+ relation = relations(:relation_with_redacted_versions_v3)
+
+ post :redact, :id => relation.relation_id, :version => relation.version
+ assert_response :unauthorized, "should need to be authenticated to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a relation, while being
+ # authorised as a normal user.
+ def test_unredact_relation_normal_user
+ relation = relations(:relation_with_redacted_versions_v3)
+ basic_authorization(users(:public_user).email, "test")
+
+ post :redact, :id => relation.relation_id, :version => relation.version
+ assert_response :forbidden, "should need to be moderator to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a relation, while being
+ # authorised as a moderator.
+ def test_unredact_relation_moderator
+ relation = relations(:relation_with_redacted_versions_v3)
+ basic_authorization(users(:moderator_user).email, "test")
+
+ post :redact, :id => relation.relation_id, :version => relation.version
+ assert_response :success, "should be OK to unredact old version as moderator."
+
+ # check moderator can still see the redacted data, without passing
+ # the appropriate flag
+ get :version, :id => relation.relation_id, :version => relation.version
+ assert_response :success, "After redaction, node should not be gone for moderator, when flag passed."
+
+ # and when accessed via history
+ get :history, :id => relation.relation_id
+ assert_response :success, "Redaction shouldn't have stopped history working."
+ assert_select "osm relation[id='#{relation.relation_id}'][version='#{relation.version}']", 1, "relation #{relation.relation_id} version #{relation.version} should still be present in the history for moderators when passing flag."
+
+ basic_authorization(users(:normal_user).email, "test")
+
+ # check normal user can now see the redacted data
+ get :version, :id => relation.relation_id, :version => relation.version
+ assert_response :success, "After redaction, node should not be gone for moderator, when flag passed."
+
+ # and when accessed via history
+ get :history, :id => relation.relation_id
+ assert_response :success, "Redaction shouldn't have stopped history working."
+ assert_select "osm relation[id='#{relation.relation_id}'][version='#{relation.version}']", 1, "relation #{relation.relation_id} version #{relation.version} should still be present in the history for moderators when passing flag."
+ end
+
+ private
+
##
# check that the current version of a relation is equivalent to the
# version which we're getting from the versions call.
assert_select "osm way[id='#{way.way_id}'][version='#{way.version}']", 0, "redacted way #{way.way_id} version #{way.version} shouldn't be present in the history."
end
+ ##
+ # test the unredaction of an old version of a way, while not being
+ # authorised.
+ def test_unredact_way_unauthorised
+ way = ways(:way_with_redacted_versions_v3)
+
+ post :redact, :id => way.way_id, :version => way.version
+ assert_response :unauthorized, "should need to be authenticated to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a way, while being
+ # authorised as a normal user.
+ def test_unredact_way_normal_user
+ way = ways(:way_with_redacted_versions_v3)
+ basic_authorization(users(:public_user).email, "test")
+
+ post :redact, :id => way.way_id, :version => way.version
+ assert_response :forbidden, "should need to be moderator to unredact."
+ end
+
+ ##
+ # test the unredaction of an old version of a way, while being
+ # authorised as a moderator.
+ def test_unredact_way_moderator
+ way = ways(:way_with_redacted_versions_v3)
+ basic_authorization(users(:moderator_user).email, "test")
+
+ post :redact, :id => way.way_id, :version => way.version
+ assert_response :success, "should be OK to unredact old version as moderator."
+
+ # check moderator can still see the redacted data, without passing
+ # the appropriate flag
+ get :version, :id => way.way_id, :version => way.version
+ assert_response :success, "After redaction, node should not be gone for moderator, when flag passed."
+
+ # and when accessed via history
+ get :history, :id => way.way_id
+ assert_response :success, "Redaction shouldn't have stopped history working."
+ assert_select "osm way[id='#{way.way_id}'][version='#{way.version}']", 1, "way #{way.way_id} version #{way.version} should still be present in the history for moderators when passing flag."
+
+ basic_authorization(users(:normal_user).email, "test")
+
+ # check normal user can now see the redacted data
+ get :version, :id => way.way_id, :version => way.version
+ assert_response :success, "After redaction, node should not be gone for moderator, when flag passed."
+
+ # and when accessed via history
+ get :history, :id => way.way_id
+ assert_response :success, "Redaction shouldn't have stopped history working."
+ assert_select "osm way[id='#{way.way_id}'][version='#{way.version}']", 1, "way #{way.way_id} version #{way.version} should still be present in the history for moderators when passing flag."
+ end
+
+ private
+
##
# check that the current version of a way is equivalent to the
# version which we're getting from the versions call.
)
end
- def test_moderators_can_create
+ def test_index
+ get :index
+ assert_response :success
+ assert_template :index
+ assert_select "ul#redaction_list", 1 do
+ assert_select "li", Redaction.count
+ end
+ end
+
+ def test_new
+ get :new
+ assert_response :redirect
+ assert_redirected_to login_path(:referer => new_redaction_path)
+ end
+
+ def test_new_moderator
+ session[:user] = users(:moderator_user).id
+
+ get :new
+ assert_response :success
+ assert_template :new
+ end
+
+ def test_new_non_moderator
+ session[:user] = users(:public_user).id
+
+ get :new
+ assert_response :redirect
+ assert_redirected_to redactions_path
+ end
+
+ def test_create_moderator
session[:user] = users(:moderator_user).id
post :create, :redaction => { :title => "Foo", :description => "Description here." }
assert_redirected_to(redaction_path(Redaction.find_by_title("Foo")))
end
- def test_non_moderators_cant_create
+ def test_create_moderator_invalid
+ session[:user] = users(:moderator_user).id
+
+ post :create, :redaction => { :title => "Foo", :description => "" }
+ assert_response :success
+ assert_template :new
+ end
+
+ def test_create_non_moderator
session[:user] = users(:public_user).id
post :create, :redaction => { :title => "Foo", :description => "Description here." }
assert_response :forbidden
end
- def test_moderators_can_delete_empty
+ def test_destroy_moderator_empty
session[:user] = users(:moderator_user).id
# remove all elements from the redaction
assert_redirected_to(redactions_path)
end
- def test_moderators_cant_delete_nonempty
+ def test_destroy_moderator_non_empty
session[:user] = users(:moderator_user).id
# leave elements in the redaction
assert_match /^Redaction is not empty/, flash[:error]
end
- def test_non_moderators_cant_delete
+ def test_delete_non_moderator
session[:user] = users(:public_user).id
delete :destroy, :id => redactions(:example).id
assert_response :forbidden
end
- def test_moderators_can_edit
+ def test_edit
+ get :edit, :id => redactions(:example).id
+ assert_response :redirect
+ assert_redirected_to login_path(:referer => edit_redaction_path(redactions(:example)))
+ end
+
+ def test_edit_moderator
session[:user] = users(:moderator_user).id
get :edit, :id => redactions(:example).id
assert_response :success
end
- def test_non_moderators_cant_edit
+ def test_edit_non_moderator
session[:user] = users(:public_user).id
get :edit, :id => redactions(:example).id
assert_redirected_to(redactions_path)
end
- def test_moderators_can_update
+ def test_update_moderator
session[:user] = users(:moderator_user).id
redaction = redactions(:example)
assert_redirected_to(redaction_path(redaction))
end
- def test_non_moderators_cant_update
+ def test_update_moderator_invalid
+ session[:user] = users(:moderator_user).id
+
+ redaction = redactions(:example)
+
+ put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "" }
+ assert_response :success
+ assert_template :edit
+ end
+
+ def test_updated_non_moderator
session[:user] = users(:public_user).id
redaction = redactions(:example)
def test_full
# check the "full" mode
+ get :full, :id => 999999
+ assert_response :not_found
+
+ get :full, :id => current_relations(:invisible_relation).id
+ assert_response :gone
+
get :full, :id => current_relations(:visible_relation).id
assert_response :success
- # FIXME check whether this contains the stuff we want!
- print @response.body if $VERBOSE
+ # FIXME: check whether this contains the stuff we want!
end
##
# need a role attribute to be included
nid = current_nodes(:used_node_1).id
content "<osm><relation changeset='#{changeset_id}'>" +
- "<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
+ "<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
put :create
# hope for forbidden due to user
assert_response :forbidden,
# need a role attribute to be included
nid = current_nodes(:used_node_1).id
content "<osm><relation changeset='#{changeset_id}'>" +
- "<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
+ "<member ref='#{nid}' type='node'/>" + "<tag k='test' v='yes' /></relation></osm>"
put :create
# hope for success
assert_response :success,
end
end
+ def test_update_wrong_id
+ basic_authorization users(:public_user).email, "test"
+ rel_id = current_relations(:multi_tag_relation).id
+ cs_id = changesets(:public_user_first_change).id
+
+ with_relation(rel_id) do |rel|
+ update_changeset(rel, cs_id)
+ content rel
+ put :update, :id => current_relations(:visible_relation).id
+ assert_response :bad_request
+ end
+ end
+
# -------------------------------------
# Test creating some invalid relations.
# -------------------------------------
require "test_helper"
class SearchControllerTest < ActionController::TestCase
+ api_fixtures
+
##
# test all routes which lead to this controller
def test_routes
{ :controller => "search", :action => "search_relations" }
)
end
+
+ ##
+ # test searching nodes
+ def test_search_nodes
+ get :search_nodes, :type => "test"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+
+ get :search_nodes, :type => "test", :value => "yes"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+
+ get :search_nodes, :name => "Test Node"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+ end
+
+ ##
+ # test searching ways
+ def test_search_ways
+ get :search_ways, :type => "test"
+ assert_response :service_unavailable
+ assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
+
+ get :search_ways, :type => "test", :value => "yes"
+ assert_response :success
+ assert_select "way", 3
+
+ get :search_ways, :name => "Test Way"
+ assert_response :success
+ assert_select "way", 1
+ end
+
+ ##
+ # test searching relations
+ def test_search_relations
+ get :search_relations, :type => "test"
+ assert_response :service_unavailable
+ assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
+
+ get :search_relations, :type => "test", :value => "yes"
+ assert_response :success
+ assert_select "relation", 3
+
+ get :search_relations, :name => "Test Relation"
+ assert_response :success
+ assert_select "relation", 1
+ end
+
+ ##
+ # test searching nodes, ways and relations
+ def test_search_all
+ get :search_all, :type => "test"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+
+ get :search_all, :type => "test", :value => "yes"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+
+ get :search_all, :name => "Test"
+ assert_response :service_unavailable
+ assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
+ end
end
# Test the index page redirects
def test_index_redirect
+ get :index, :node => 123
+ assert_redirected_to :controller => :browse, :action => :node, :id => 123
+
+ get :index, :way => 123
+ assert_redirected_to :controller => :browse, :action => :way, :id => 123
+
+ get :index, :relation => 123
+ assert_redirected_to :controller => :browse, :action => :relation, :id => 123
+
+ get :index, :note => 123
+ assert_redirected_to :controller => :browse, :action => :note, :id => 123
+
+ get :index, :query => "test"
+ assert_redirected_to :controller => :geocoder, :action => :search, :query => "test"
+
get :index, :lat => 4, :lon => 5
assert_redirected_to :controller => :site, :action => :index, :anchor => "map=5/4/5"
assert_template "index"
end
+ # Test the right editor gets used when the URL has an override
+ def test_edit_with_override
+ get :edit, { :editor => "id" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_id", :count => 1
+
+ get :edit, { :editor => "potlatch2" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch2", :count => 1
+
+ get :edit, { :editor => "potlatch" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch", :count => 1
+
+ get :edit, { :editor => "remote" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "index"
+ end
+
+ # Test the right editor gets used when the browser is IE
+ def test_edit_with_ie
+ @request.env["HTTP_USER_AGENT"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)"
+
+ get :edit, {}, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch2", :count => 1
+
+ get :edit, { :editor => "id" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch2", :count => 1
+
+ @request.env["HTTP_USER_AGENT"] = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"
+
+ get :edit, {}, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch2", :count => 1
+
+ get :edit, { :editor => "id" }, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template "edit"
+ assert_template :partial => "_potlatch2", :count => 1
+ end
+
# Test editing a specific node
def test_edit_with_node
user = users(:public_user)
# Test editing a specific note
def test_edit_with_note
user = users(:public_user)
- note = notes(:open_note)
+ note = notes(:open_note)
get :edit, { :note => note.id }, { :user => user.id }
assert_response :success
require "test_helper"
class SwfControllerTest < ActionController::TestCase
+ api_fixtures
+
##
# test all routes which lead to this controller
def test_routes
{ :controller => "swf", :action => "trackpoints" }
)
end
+
+ ##
+ # basic test that trackpoints at least returns some sort of flash movie
+ def test_trackpoints
+ get :trackpoints, :xmin => -1, :xmax => 1, :ymin => 51, :ymax => 52, :baselong => 0, :basey => 0, :masterscale => 1
+ assert_response :success
+ assert_equal "application/x-shockwave-flash", response.content_type
+ assert_match /^FWS/, response.body
+ assert_equal 80, response.body.length
+
+ get :trackpoints, :xmin => -1, :xmax => 1, :ymin => 51, :ymax => 52, :baselong => 0, :basey => 0, :masterscale => 1, :token => users(:normal_user).tokens.create.token
+ assert_response :success
+ assert_equal "application/x-shockwave-flash", response.content_type
+ assert_match /^FWS/, response.body
+ assert_equal 67, response.body.length
+
+ get :trackpoints, :xmin => -1, :xmax => 1, :ymin => 51, :ymax => 52, :baselong => 0, :basey => 0, :masterscale => 1, :token => users(:public_user).tokens.create.token
+ assert_response :success
+ assert_equal "application/x-shockwave-flash", response.content_type
+ assert_match /^FWS/, response.body
+ assert_equal 74, response.body.length
+ end
end
require "test_helper"
class TraceControllerTest < ActionController::TestCase
- fixtures :users, :gpx_files
+ fixtures :users, :user_preferences, :gpx_files
set_fixture_class :gpx_files => Trace
def setup
@gpx_trace_dir = Object.send("remove_const", "GPX_TRACE_DIR")
Object.const_set("GPX_TRACE_DIR", File.dirname(__FILE__) + "/../traces")
+
+ @gpx_image_dir = Object.send("remove_const", "GPX_IMAGE_DIR")
+ Object.const_set("GPX_IMAGE_DIR", File.dirname(__FILE__) + "/../traces")
end
def teardown
Object.send("remove_const", "GPX_TRACE_DIR")
Object.const_set("GPX_TRACE_DIR", @gpx_trace_dir)
+
+ Object.send("remove_const", "GPX_IMAGE_DIR")
+ Object.const_set("GPX_IMAGE_DIR", @gpx_image_dir)
end
##
# Check that the list of changesets is displayed
def test_list
+ # First with the public list
get :list
check_trace_list Trace.visible_to_all
+ # Restrict traces to those with a given tag
get :list, :tag => "London"
check_trace_list Trace.tagged("London").visible_to_all
+
+ # Should see more when we are logged in
+ get :list, {}, { :user => users(:public_user).id }
+ check_trace_list Trace.visible_to(users(:public_user).id)
+
+ # Again, we should see more when we are logged in
+ get :list, { :tag => "London" }, { :user => users(:public_user).id }
+ check_trace_list Trace.tagged("London").visible_to(users(:public_user).id)
end
# Check that I can get mine
# Should only see traces with the correct tag when a tag is specified
get :list, { :display_name => users(:public_user).display_name, :tag => "London" }, { :user => users(:public_user).id }
check_trace_list users(:public_user).traces.tagged("London")
+
+ # Should get an error if the user does not exist
+ get :list, :display_name => "UnknownUser"
+ assert_response :not_found
+ assert_template "user/no_such_user"
end
# Check that the rss loads
def test_rss
+ # First with the public feed
get :georss, :format => :rss
check_trace_feed Trace.visible_to_all
+ # Restrict traces to those with a given tag
get :georss, :tag => "London", :format => :rss
check_trace_feed Trace.tagged("London").visible_to_all
+ # Restrict traces to those for a given user
get :georss, :display_name => users(:public_user).display_name, :format => :rss
check_trace_feed users(:public_user).traces.visible_to_all
+ # Restrict traces to those for a given user with a tiven tag
get :georss, :display_name => users(:public_user).display_name, :tag => "Birmingham", :format => :rss
check_trace_feed users(:public_user).traces.tagged("Birmingham").visible_to_all
end
get :data, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
assert_response :not_found
- # Now with some other user, which should work since the trace is anon
+ # Now with some other user, which shouldn't work since the trace is anon
get :data, { :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id }, { :user => users(:normal_user).id }
assert_response :not_found
# Test downloading a trace that doesn't exist
def test_data_not_found
- # First with no auth, which should work since the trace is public
+ # First with no auth and a trace that has never existed
get :data, :display_name => users(:public_user).display_name, :id => 0
assert_response :not_found
- # Now with some other user, which should work since the trace is public
+ # Now with a trace that has never existed
get :data, { :display_name => users(:public_user).display_name, :id => 0 }, { :user => users(:public_user).id }
assert_response :not_found
- # And finally we should be able to do it with the owner of the trace
+ # Now with a trace that has been deleted
get :data, { :display_name => users(:public_user).display_name, :id => 5 }, { :user => users(:public_user).id }
assert_response :not_found
end
+ # Test downloading the picture for a trace
+ def test_picture
+ # First with no auth, which should work since the trace is public
+ get :picture, :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id
+ check_trace_picture gpx_files(:public_trace_file)
+
+ # Now with some other user, which should work since the trace is public
+ get :picture, { :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id }, { :user => users(:public_user).id }
+ check_trace_picture gpx_files(:public_trace_file)
+
+ # And finally we should be able to do it with the owner of the trace
+ get :picture, { :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id }, { :user => users(:normal_user).id }
+ check_trace_picture gpx_files(:public_trace_file)
+ end
+
+ # Check the picture for an anonymous trace can't be downloaded by another user
+ def test_picture_anon
+ # First with no auth
+ get :picture, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
+ assert_response :forbidden
+
+ # Now with some other user, which shouldn't work since the trace is anon
+ get :picture, { :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id }, { :user => users(:normal_user).id }
+ assert_response :forbidden
+
+ # And finally we should be able to do it with the owner of the trace
+ get :picture, { :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id }, { :user => users(:public_user).id }
+ check_trace_picture gpx_files(:anon_trace_file)
+ end
+
+ # Test downloading the picture for a trace that doesn't exist
+ def test_picture_not_found
+ # First with no auth, which should work since the trace is public
+ get :picture, :display_name => users(:public_user).display_name, :id => 0
+ assert_response :not_found
+
+ # Now with some other user, which should work since the trace is public
+ get :picture, { :display_name => users(:public_user).display_name, :id => 0 }, { :user => users(:public_user).id }
+ assert_response :not_found
+
+ # And finally we should be able to do it with the owner of the trace
+ get :picture, { :display_name => users(:public_user).display_name, :id => 5 }, { :user => users(:public_user).id }
+ assert_response :not_found
+ end
+
+ # Test downloading the icon for a trace
+ def test_icon
+ # First with no auth, which should work since the trace is public
+ get :icon, :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id
+ check_trace_icon gpx_files(:public_trace_file)
+
+ # Now with some other user, which should work since the trace is public
+ get :icon, { :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id }, { :user => users(:public_user).id }
+ check_trace_icon gpx_files(:public_trace_file)
+
+ # And finally we should be able to do it with the owner of the trace
+ get :icon, { :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id }, { :user => users(:normal_user).id }
+ check_trace_icon gpx_files(:public_trace_file)
+ end
+
+ # Check the icon for an anonymous trace can't be downloaded by another user
+ def test_icon_anon
+ # First with no auth
+ get :icon, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
+ assert_response :forbidden
+
+ # Now with some other user, which shouldn't work since the trace is anon
+ get :icon, { :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id }, { :user => users(:normal_user).id }
+ assert_response :forbidden
+
+ # And finally we should be able to do it with the owner of the trace
+ get :icon, { :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id }, { :user => users(:public_user).id }
+ check_trace_icon gpx_files(:anon_trace_file)
+ end
+
+ # Test downloading the icon for a trace that doesn't exist
+ def test_icon_not_found
+ # First with no auth, which should work since the trace is public
+ get :icon, :display_name => users(:public_user).display_name, :id => 0
+ assert_response :not_found
+
+ # Now with some other user, which should work since the trace is public
+ get :icon, { :display_name => users(:public_user).display_name, :id => 0 }, { :user => users(:public_user).id }
+ assert_response :not_found
+
+ # And finally we should be able to do it with the owner of the trace
+ get :icon, { :display_name => users(:public_user).display_name, :id => 5 }, { :user => users(:public_user).id }
+ assert_response :not_found
+ end
+
+ # Test fetching the create page
+ def test_create_get
+ # First with no auth
+ get :create
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :referer => trace_create_path
+
+ # Now authenticated as a user with gps.trace.visibility set
+ get :create, {}, { :user => users(:public_user).id }
+ assert_response :success
+ assert_template :create
+ assert_select "select#trace_visibility option[value=identifiable][selected]", 1
+
+ # Now authenticated as a user with gps.trace.public set
+ get :create, {}, { :user => users(:second_public_user).id }
+ assert_response :success
+ assert_template :create
+ assert_select "select#trace_visibility option[value=public][selected]", 1
+
+ # Now authenticated as a user with no preferences
+ get :create, {}, { :user => users(:normal_user).id }
+ assert_response :success
+ assert_template :create
+ assert_select "select#trace_visibility option[value=private][selected]", 1
+ end
+
+ # Test creating a trace
+ def test_create_post
+ # Get file to use
+ file = Rack::Test::UploadedFile.new(gpx_files(:public_trace_file).trace_name, "application/gpx+xml")
+
+ # First with no auth
+ post :create, :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" }
+ assert_response :forbidden
+
+ # Now authenticated
+ assert_not_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+ post :create, { :trace => { :gpx_file => file, :description => "New Trace", :tagstring => "new,trace", :visibility => "trackable" } }, { :user => users(:public_user).id }
+ assert_response :redirect
+ assert_redirected_to :action => :list, :display_name => users(:public_user).display_name
+ assert_match /file has been uploaded/, flash[:notice]
+ trace = Trace.order(:id => :desc).first
+ assert_equal "1.gpx", trace.name
+ assert_equal "New Trace", trace.description
+ assert_equal "new, trace", trace.tagstring
+ assert_equal "trackable", trace.visibility
+ assert_equal false, trace.inserted
+ assert_equal File.new(gpx_files(:public_trace_file).trace_name).read, File.new(trace.trace_name).read
+ trace.destroy
+ assert_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+ end
+
# Test fetching the edit page for a trace
def test_edit_get
# First with no auth
assert_response :not_found
end
+ # Test downloading a trace through the api
+ def test_api_data
+ # First with no auth
+ get :api_data, :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id
+ assert_response :unauthorized
+
+ # Now with some other user, which should work since the trace is public
+ basic_authorization(users(:public_user).display_name, "test")
+ get :api_data, :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id
+ check_trace_data gpx_files(:public_trace_file)
+
+ # And finally we should be able to do it with the owner of the trace
+ basic_authorization(users(:normal_user).display_name, "test")
+ get :api_data, :display_name => users(:normal_user).display_name, :id => gpx_files(:public_trace_file).id
+ check_trace_data gpx_files(:public_trace_file)
+ end
+
+ # Test downloading a compressed trace through the api
+ def test_api_data_compressed
+ # Authenticate as the owner of the trace we will be using
+ basic_authorization(users(:public_user).display_name, "test")
+
+ # First get the data as is
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:identifiable_trace_file).id
+ check_trace_data gpx_files(:identifiable_trace_file), "application/x-gzip", "gpx.gz"
+
+ # Now ask explicitly for XML format
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:identifiable_trace_file).id, :format => "xml"
+ check_trace_data gpx_files(:identifiable_trace_file), "application/xml", "xml"
+
+ # Now ask explicitly for GPX format
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:identifiable_trace_file).id, :format => "gpx"
+ check_trace_data gpx_files(:identifiable_trace_file)
+ end
+
+ # Check an anonymous trace can't be downloaded by another user through the api
+ def test_api_data_anon
+ # First with no auth
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
+ assert_response :unauthorized
+
+ # Now with some other user, which shouldn't work since the trace is anon
+ basic_authorization(users(:normal_user).display_name, "test")
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
+ assert_response :forbidden
+
+ # And finally we should be able to do it with the owner of the trace
+ basic_authorization(users(:public_user).display_name, "test")
+ get :api_data, :display_name => users(:public_user).display_name, :id => gpx_files(:anon_trace_file).id
+ check_trace_data gpx_files(:anon_trace_file)
+ end
+
+ # Test downloading a trace that doesn't exist through the api
+ def test_api_data_not_found
+ # First with no auth
+ get :api_data, :display_name => users(:public_user).display_name, :id => 0
+ assert_response :unauthorized
+
+ # Now with a trace that has never existed
+ basic_authorization(users(:public_user).display_name, "test")
+ get :api_data, :display_name => users(:public_user).display_name, :id => 0
+ assert_response :not_found
+
+ # Now with a trace that has been deleted
+ basic_authorization(users(:public_user).display_name, "test")
+ get :api_data, :display_name => users(:public_user).display_name, :id => 5
+ assert_response :not_found
+ end
+
+ # Test creating a trace through the api
+ def test_api_create
+ # Get file to use
+ file = Rack::Test::UploadedFile.new(gpx_files(:public_trace_file).trace_name, "application/gpx+xml")
+
+ # First with no auth
+ post :api_create, :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable"
+ assert_response :unauthorized
+
+ # Now authenticated
+ assert_not_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+ basic_authorization(users(:public_user).display_name, "test")
+ post :api_create, :file => file, :description => "New Trace", :tags => "new,trace", :visibility => "trackable"
+ assert_response :success
+ trace = Trace.find(response.body.to_i)
+ assert_equal "1.gpx", trace.name
+ assert_equal "New Trace", trace.description
+ assert_equal "new, trace", trace.tagstring
+ assert_equal "trackable", trace.visibility
+ assert_equal false, trace.inserted
+ assert_equal File.new(gpx_files(:public_trace_file).trace_name).read, File.new(trace.trace_name).read
+ trace.destroy
+ assert_equal "trackable", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+
+ # Rewind the file
+ file.rewind
+
+ # Now authenticated, with the legacy public flag
+ assert_not_equal "public", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+ basic_authorization(users(:public_user).display_name, "test")
+ post :api_create, :file => file, :description => "New Trace", :tags => "new,trace", :public => 1
+ assert_response :success
+ trace = Trace.find(response.body.to_i)
+ assert_equal "1.gpx", trace.name
+ assert_equal "New Trace", trace.description
+ assert_equal "new, trace", trace.tagstring
+ assert_equal "public", trace.visibility
+ assert_equal false, trace.inserted
+ assert_equal File.new(gpx_files(:public_trace_file).trace_name).read, File.new(trace.trace_name).read
+ trace.destroy
+ assert_equal "public", users(:public_user).preferences.where(:k => "gps.trace.visibility").first.v
+
+ # Rewind the file
+ file.rewind
+
+ # Now authenticated, with the legacy private flag
+ assert_nil users(:second_public_user).preferences.where(:k => "gps.trace.visibility").first
+ basic_authorization(users(:second_public_user).display_name, "test")
+ post :api_create, :file => file, :description => "New Trace", :tags => "new,trace", :public => 0
+ assert_response :success
+ trace = Trace.find(response.body.to_i)
+ assert_equal "1.gpx", trace.name
+ assert_equal "New Trace", trace.description
+ assert_equal "new, trace", trace.tagstring
+ assert_equal "private", trace.visibility
+ assert_equal false, trace.inserted
+ assert_equal File.new(gpx_files(:public_trace_file).trace_name).read, File.new(trace.trace_name).read
+ trace.destroy
+ assert_equal "private", users(:second_public_user).preferences.where(:k => "gps.trace.visibility").first.v
+ end
+
# Check updating a trace through the api
def test_api_update
# First with no auth
assert_select item, "link", "http://test.host/user/#{trace.user.display_name}/traces/#{trace.id}"
assert_select item, "guid", "http://test.host/user/#{trace.user.display_name}/traces/#{trace.id}"
assert_select item, "description"
- # assert_select item, "dc:creator", trace.user.display_name
+ # assert_select item, "dc:creator", trace.user.display_name
assert_select item, "pubDate", trace.timestamp.rfc822
end
end
assert_select "table#trace_list tbody", :count => 1 do
assert_select "tr", :count => traces.visible.count do |rows|
traces.visible.order("timestamp DESC").zip(rows).each do |trace, row|
- assert_select row, "span.trace_summary", Regexp.new(Regexp.escape("(#{trace.size} points)"))
+ assert_select row, "a", Regexp.new(Regexp.escape(trace.name))
+ assert_select row, "span.trace_summary", Regexp.new(Regexp.escape("(#{trace.size} points)")) if trace.inserted?
assert_select row, "td", Regexp.new(Regexp.escape(trace.description))
assert_select row, "td", Regexp.new(Regexp.escape("by #{trace.user.display_name}"))
end
def check_trace_data(trace, content_type = "application/gpx+xml", extension = "gpx")
assert_response :success
- assert_equal content_type, @response.content_type
+ assert_equal content_type, response.content_type
assert_equal "attachment; filename=\"#{trace.id}.#{extension}\"", @response.header["Content-Disposition"]
end
+
+ def check_trace_picture(trace)
+ assert_response :success
+ assert_equal "image/gif", response.content_type
+ assert_equal trace.large_picture, response.body
+ end
+
+ def check_trace_icon(trace)
+ assert_response :success
+ assert_equal "image/gif", response.content_type
+ assert_equal trace.icon_picture, response.body
+ end
end
require "test_helper"
class UserControllerTest < ActionController::TestCase
- fixtures :users
+ api_fixtures
+ fixtures :messages, :friends
##
# test all routes which lead to this controller
end
# The user creation page loads
- def test_user_create_view
+ def test_new_view
get :new
assert_response :redirect
assert_redirected_to user_new_path(:cookie_test => "true")
end
end
- def new_user
- user = User.new
- user.status = "pending"
- user.display_name = "new_tester"
- user.email = "newtester@osm.org"
- user.email_confirmation = "newtester@osm.org"
- user.pass_crypt = "testtest"
- user.pass_crypt_confirmation = "testtest"
- user
+ def test_new_view_logged_in
+ session[:user] = users(:normal_user).id
+
+ get :new
+ assert_response :redirect
+ assert_redirected_to user_new_path(:cookie_test => "true")
+ get :new, :cookie_test => "true"
+ assert_response :redirect
+ assert_redirected_to root_path
+
+ get :new, :referer => "/test"
+ assert_response :redirect
+ assert_redirected_to user_new_path(:referer => "/test", :cookie_test => "true")
+ get :new, :referer => "/test", :cookie_test => "true"
+ assert_response :redirect
+ assert_redirected_to "/test"
end
- def test_user_create_success
+ def test_new_success
user = new_user
- assert_difference("User.count", 1) do
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "User.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :save, {}, { :new_user => user }
end
end
ActionMailer::Base.deliveries.clear
end
- def test_user_create_submit_duplicate_email
+ def test_new_duplicate_email
user = new_user
user.email = users(:public_user).email
- assert_no_difference("User.count") do
- assert_no_difference("ActionMailer::Base.deliveries.size") do
+ assert_no_difference "User.count" do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
post :save, {}, { :new_user => user }
end
end
assert_select "form > fieldset > div.form-row > input.field_with_errors#user_email"
end
- def test_user_create_submit_duplicate_email_uppercase
+ def test_new_duplicate_email_uppercase
user = new_user
user.email = users(:public_user).email.upcase
- assert_no_difference("User.count") do
- assert_no_difference("ActionMailer::Base.deliveries.size") do
+ assert_no_difference "User.count" do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
post :save, {}, { :new_user => user }
end
end
assert_select "form > fieldset > div.form-row > input.field_with_errors#user_email"
end
- def test_user_create_submit_duplicate_name
+ def test_new_duplicate_name
user = new_user
user.display_name = users(:public_user).display_name
- assert_no_difference("User.count") do
- assert_no_difference("ActionMailer::Base.deliveries.size") do
+ assert_no_difference "User.count" do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
post :save, {}, { :new_user => user }
end
end
assert_select "form > fieldset > div.form-row > input.field_with_errors#user_display_name"
end
- def test_user_create_submit_duplicate_name_uppercase
+ def test_new_duplicate_name_uppercase
user = new_user
user.display_name = users(:public_user).display_name.upcase
- assert_no_difference("User.count") do
- assert_no_difference("ActionMailer::Base.deliveries.size") do
+ assert_no_difference "User.count" do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
post :save, {}, { :new_user => user }
end
end
assert_select "form > fieldset > div.form-row > input.field_with_errors#user_display_name"
end
- def test_user_save_referer_params
+ def test_save_referer_params
user = new_user
- assert_difference("User.count", 1) do
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "User.count", 1 do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :save, {}, { :new_user => user,
:referer => "/edit?editor=id#map=1/2/3" }
end
ActionMailer::Base.deliveries.clear
end
- def test_user_confirm_expired_token
+ def test_logout_without_referer
+ get :logout
+ assert_response :success
+ assert_template :logout
+ assert_select "input[name=referer][value=?]", ""
+
+ session_id = assert_select("input[name=session]").first["value"]
+
+ get :logout, :session => session_id
+ assert_response :redirect
+ assert_redirected_to root_path
+ end
+
+ def test_logout_with_referer
+ get :logout, :referer => "/test"
+ assert_response :success
+ assert_template :logout
+ assert_select "input[name=referer][value=?]", "/test"
+
+ session_id = assert_select("input[name=session]").first["value"]
+
+ get :logout, :session => session_id, :referer => "/test"
+ assert_response :redirect
+ assert_redirected_to "/test"
+ end
+
+ def test_logout_with_token
+ token = users(:normal_user).tokens.create
+
+ session[:token] = token.token
+
+ get :logout
+ assert_response :success
+ assert_template :logout
+ assert_select "input[name=referer][value=?]", ""
+ assert_equal token.token, session[:token]
+ assert_not_nil UserToken.where(:id => token.id).first
+
+ session_id = assert_select("input[name=session]").first["value"]
+
+ get :logout, :session => session_id
+ assert_response :redirect
+ assert_redirected_to root_path
+ assert_nil session[:token]
+ assert_nil UserToken.where(:id => token.id).first
+ end
+
+ def test_confirm_get
user = users(:inactive_user)
- token = user.tokens.new
- token.expiry = 1.day.ago
- token.save!
+ confirm_string = user.tokens.create.token
@request.cookies["_osm_session"] = user.display_name
- post :confirm, :confirm_string => token.token
+ get :confirm, :display_name => user.display_name, :confirm_string => confirm_string
+ assert_response :success
+ assert_template :confirm
+ end
+ def test_confirm_get_already_confirmed
+ user = users(:normal_user)
+ confirm_string = user.tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ get :confirm, :display_name => user.display_name, :confirm_string => confirm_string
+ assert_response :redirect
+ assert_redirected_to root_path
+ end
+
+ def test_confirm_success_no_token_no_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, :display_name => user.display_name, :confirm_string => confirm_string
+ assert_redirected_to login_path
+ assert_match /Confirmed your account/, flash[:notice]
+ end
+
+ def test_confirm_success_good_token_no_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create.token
+ token = user.tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, { :display_name => user.display_name, :confirm_string => confirm_string }, { :token => token }
+ assert_redirected_to welcome_path
+ end
+
+ def test_confirm_success_bad_token_no_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create.token
+ token = users(:normal_user).tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, { :display_name => user.display_name, :confirm_string => confirm_string }, { :token => token }
+ assert_redirected_to login_path
+ assert_match /Confirmed your account/, flash[:notice]
+ end
+
+ def test_confirm_success_no_token_with_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create(:referer => diary_new_path).token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, :display_name => user.display_name, :confirm_string => confirm_string
+ assert_redirected_to login_path(:referer => diary_new_path)
+ assert_match /Confirmed your account/, flash[:notice]
+ end
+
+ def test_confirm_success_good_token_with_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create(:referer => diary_new_path).token
+ token = user.tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, { :display_name => user.display_name, :confirm_string => confirm_string }, { :token => token }
+ assert_redirected_to diary_new_path
+ end
+
+ def test_confirm_success_bad_token_with_referer
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create(:referer => diary_new_path).token
+ token = users(:normal_user).tokens.create.token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, { :display_name => user.display_name, :confirm_string => confirm_string }, { :token => token }
+ assert_redirected_to login_path(:referer => diary_new_path)
+ assert_match /Confirmed your account/, flash[:notice]
+ end
+
+ def test_confirm_expired_token
+ user = users(:inactive_user)
+ confirm_string = user.tokens.create(:expiry => 1.day.ago).token
+
+ @request.cookies["_osm_session"] = user.display_name
+ post :confirm, :display_name => user.display_name, :confirm_string => confirm_string
assert_redirected_to :action => "confirm"
- assert_match /expired/, flash[:error]
+ assert_match /confirmation code has expired/, flash[:error]
end
- def test_user_already_confirmed
+ def test_confirm_already_confirmed
user = users(:normal_user)
- token = user.tokens.create
+ confirm_string = user.tokens.create(:referer => diary_new_path).token
@request.cookies["_osm_session"] = user.display_name
- post :confirm, :confirm_string => token.token
-
+ post :confirm, :display_name => user.display_name, :confirm_string => confirm_string
assert_redirected_to :action => "login"
- assert_match /confirmed/, flash[:error]
+ assert_match /already been confirmed/, flash[:error]
end
- def test_user_terms_new_user
- get :terms, {}, { "new_user" => User.new }
+ def test_confirm_resend_success
+ session[:token] = users(:inactive_user).tokens.create.token
+
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ get :confirm_resend, :display_name => users(:inactive_user).display_name
+ end
+
+ assert_response :redirect
+ assert_redirected_to login_path
+ assert_match /sent a new confirmation/, flash[:notice]
+
+ email = ActionMailer::Base.deliveries.last
+
+ assert_equal users(:inactive_user).email, email.to.first
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_confirm_resend_no_token
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ get :confirm_resend, :display_name => users(:inactive_user).display_name
+ end
+
+ assert_response :redirect
+ assert_redirected_to login_path
+ assert_match "User Inactive User not found.", flash[:error]
+ end
+
+ def test_confirm_resend_unknown_user
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ get :confirm_resend, :display_name => "No Such User"
+ end
+
+ assert_response :redirect
+ assert_redirected_to login_path
+ assert_match "User No Such User not found.", flash[:error]
+ end
+
+ def test_confirm_email_get
+ user = users(:normal_user)
+ confirm_string = user.tokens.create.token
+
+ get :confirm_email, :confirm_string => confirm_string
+ assert_response :success
+ assert_template :confirm_email
+ end
+
+ def test_confirm_email_success
+ user = users(:second_public_user)
+ confirm_string = user.tokens.create.token
+
+ post :confirm_email, :confirm_string => confirm_string
+ assert_response :redirect
+ assert_redirected_to :action => :account, :display_name => user.display_name
+ assert_match /Confirmed your change of email address/, flash[:notice]
+ end
+
+ def test_confirm_email_already_confirmed
+ user = users(:normal_user)
+ confirm_string = user.tokens.create.token
+
+ post :confirm_email, :confirm_string => confirm_string
+ assert_response :redirect
+ assert_redirected_to :action => :account, :display_name => user.display_name
+ assert_match /already been confirmed/, flash[:error]
+ end
+
+ def test_confirm_email_bad_token
+ post :confirm_email, :confirm_string => "XXXXX"
+ assert_response :success
+ assert_template :confirm_email
+ assert_match /confirmation code has expired or does not exist/, flash[:error]
+ end
+
+ def test_terms_new_user
+ get :terms, {}, { :new_user => User.new }
assert_response :success
assert_template :terms
end
- def test_user_terms_seen
+ def test_terms_seen
user = users(:normal_user)
- get :terms, {}, { "user" => user }
+ session[:user] = user.id
+
+ get :terms
+ assert_response :redirect
+ assert_redirected_to :action => :account, :display_name => user.display_name
+ end
+
+ def test_terms_not_seen_without_referer
+ user = users(:terms_not_seen_user)
+
+ session[:user] = user.id
+
+ get :terms
+ assert_response :success
+ assert_template :terms
+
+ post :save, :user => { :consider_pd => true }
assert_response :redirect
assert_redirected_to :action => :account, :display_name => user.display_name
+ assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
+
+ user.reload
+
+ assert_equal true, user.consider_pd
+ assert_not_nil user.terms_agreed
+ assert_equal true, user.terms_seen
+ end
+
+ def test_terms_not_seen_with_referer
+ user = users(:terms_not_seen_user)
+
+ session[:user] = user.id
+
+ get :terms, :referer => "/test"
+ assert_response :success
+ assert_template :terms
+
+ post :save, :user => { :consider_pd => true }, :referer => "/test"
+ assert_response :redirect
+ assert_redirected_to "/test"
+ assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
+
+ user.reload
+
+ assert_equal true, user.consider_pd
+ assert_not_nil user.terms_agreed
+ assert_equal true, user.terms_seen
end
- def test_user_go_public
+ def test_go_public
post :go_public, {}, { :user => users(:normal_user) }
assert_response :redirect
assert_redirected_to :action => :account, :display_name => users(:normal_user).display_name
assert_equal true, User.find(users(:normal_user).id).data_public
end
- def test_user_lost_password
+ def test_lost_password
# Test fetching the lost password page
get :lost_password
assert_response :success
# Test resetting using the address as recorded for a user that has an
# address which is duplicated in a different case by another user
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :lost_password, :user => { :email => users(:normal_user).email }
end
assert_response :redirect
# Test resetting using an address that matches a different user
# that has the same address in a different case
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :lost_password, :user => { :email => users(:normal_user).email.upcase }
end
assert_response :redirect
# Test resetting using an address that is a case insensitive match
# for more than one user but not an exact match for either
- assert_difference("ActionMailer::Base.deliveries.size", 0) do
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
post :lost_password, :user => { :email => users(:normal_user).email.titlecase }
end
assert_response :success
# Test resetting using the address as recorded for a user that has an
# address which is case insensitively unique
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :lost_password, :user => { :email => users(:public_user).email }
end
assert_response :redirect
# Test resetting using an address that matches a user that has the
# same (case insensitively unique) address in a different case
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
post :lost_password, :user => { :email => users(:public_user).email.upcase }
end
assert_response :redirect
assert_equal user, User.authenticate(:username => "inactive@openstreetmap.org", :password => "new_password")
end
- def test_user_update
+ def test_account
# Get a user to work with - note that this user deliberately
# conflicts with uppercase_user in the email and display name
# fields to test that we can change other fields without any
assert_redirected_to :controller => :user, :action => "login", :referer => "/user/test/account"
# Make sure that you are blocked when not logged in as the right user
- get :account, { :display_name => user.display_name }, { "user" => users(:public_user).id }
+ get :account, { :display_name => user.display_name }, { :user => users(:public_user).id }
assert_response :forbidden
# Make sure we get the page when we are logged in as the right user
- get :account, { :display_name => user.display_name }, { "user" => user }
+ get :account, { :display_name => user.display_name }, { :user => user }
assert_response :success
assert_template :account
# Updating the description should work
user.description = "new description"
- post :account, { :display_name => user.display_name, :user => user.attributes }, { "user" => user.id }
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
assert_select ".notice", /^User information updated successfully/
assert_select "form#accountForm > fieldset > div.form-row > div#user_description_container > div#user_description_content > textarea#user_description", user.description
+ # Changing to a invalid editor should fail
+ user.preferred_editor = "unknown"
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select ".notice", false
+ assert_select "div#errorExplanation"
+ assert_select "form#accountForm > fieldset > div.form-row > select#user_preferred_editor > option[selected]", false
+
+ # Changing to a valid editor should work
+ user.preferred_editor = "potlatch2"
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select "div#errorExplanation", false
+ assert_select ".notice", /^User information updated successfully/
+ assert_select "form#accountForm > fieldset > div.form-row > select#user_preferred_editor > option[selected][value=?]", "potlatch2"
+
+ # Changing to the default editor should work
+ user.preferred_editor = "default"
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select "div#errorExplanation", false
+ assert_select ".notice", /^User information updated successfully/
+ assert_select "form#accountForm > fieldset > div.form-row > select#user_preferred_editor > option[selected]", false
+
+ # Changing to an uploaded image should work
+ image = Rack::Test::UploadedFile.new("test/traces/1.gif", "image/gif")
+ post :account, { :display_name => user.display_name, :image_action => "new", :user => user.attributes.merge(:image => image) }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select "div#errorExplanation", false
+ assert_select ".notice", /^User information updated successfully/
+ assert_select "form#accountForm > fieldset > div.form-row.accountImage input[name=image_action][checked][value=?]", "keep"
+
+ # Changing to a gravatar image should work
+ post :account, { :display_name => user.display_name, :image_action => "gravatar", :user => user.attributes }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select "div#errorExplanation", false
+ assert_select ".notice", /^User information updated successfully/
+ assert_select "form#accountForm > fieldset > div.form-row.accountImage input[name=image_action][checked][value=?]", "gravatar"
+
+ # Removing the image should work
+ post :account, { :display_name => user.display_name, :image_action => "delete", :user => user.attributes }, { :user => user.id }
+ assert_response :success
+ assert_template :account
+ assert_select "div#errorExplanation", false
+ assert_select ".notice", /^User information updated successfully/
+ assert_select "form#accountForm > fieldset > div.form-row.accountImage input[name=image_action][checked]", false
+
+ # Adding external authentication should redirect to the auth provider
+ post :account, { :display_name => user.display_name, :user => user.attributes.merge(:auth_provider => "openid", :auth_uid => "gmail.com") }, { :user => user.id }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "https://www.google.com/accounts/o8/id", :origin => "/user/#{user.display_name}/account")
+
# Changing name to one that exists should fail
new_attributes = user.attributes.dup.merge(:display_name => users(:public_user).display_name)
- post :account, { :display_name => user.display_name, :user => new_attributes }, { "user" => user.id }
+ post :account, { :display_name => user.display_name, :user => new_attributes }, { :user => user.id }
assert_response :success
assert_template :account
assert_select ".notice", false
# Changing name to one that exists should fail, regardless of case
new_attributes = user.attributes.dup.merge(:display_name => users(:public_user).display_name.upcase)
- post :account, { :display_name => user.display_name, :user => new_attributes }, { "user" => user.id }
+ post :account, { :display_name => user.display_name, :user => new_attributes }, { :user => user.id }
assert_response :success
assert_template :account
assert_select ".notice", false
# Changing name to one that doesn't exist should work
new_attributes = user.attributes.dup.merge(:display_name => "new tester")
- post :account, { :display_name => user.display_name, :user => new_attributes }, { "user" => user.id }
+ post :account, { :display_name => user.display_name, :user => new_attributes }, { :user => user.id }
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
# Changing email to one that exists should fail
user.new_email = users(:public_user).email
- assert_no_difference("ActionMailer::Base.deliveries.size") do
- post :account, { :display_name => user.display_name, :user => user.attributes }, { "user" => user.id }
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
end
assert_response :success
assert_template :account
# Changing email to one that exists should fail, regardless of case
user.new_email = users(:public_user).email.upcase
- assert_no_difference("ActionMailer::Base.deliveries.size") do
- post :account, { :display_name => user.display_name, :user => user.attributes }, { "user" => user.id }
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
end
assert_response :success
assert_template :account
# Changing email to one that doesn't exist should work
user.new_email = "new_tester@example.com"
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
- post :account, { :display_name => user.display_name, :user => user.attributes }, { "user" => user.id }
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ post :account, { :display_name => user.display_name, :user => user.attributes }, { :user => user.id }
end
assert_response :success
assert_template :account
# Check that the user account page will display and contains some relevant
# information for the user
- def test_user_view_account
+ def test_view
# Test a non-existent user
get :view, :display_name => "unknown"
assert_response :not_found
end
end
- def test_user_api_read
+ def test_api_read
# check that a visible user is returned properly
get :api_read, :id => users(:normal_user).id
assert_response :success
+ assert_equal "text/xml", response.content_type
# check the data that is returned
assert_select "description", :count => 1, :text => "test"
assert_response :not_found
end
- def test_user_api_details
+ def test_api_details
# check that nothing is returned when not logged in
get :api_details
assert_response :unauthorized
basic_authorization(users(:normal_user).email, "test")
get :api_details
assert_response :success
+ assert_equal "text/xml", response.content_type
# check the data that is returned
assert_select "description", :count => 1, :text => "test"
end
end
- def test_user_make_friend
+ def test_api_gpx_files
+ # check that nothing is returned when not logged in
+ get :api_gpx_files
+ assert_response :unauthorized
+
+ # check that we get a response when logged in
+ basic_authorization(users(:normal_user).email, "test")
+ get :api_gpx_files
+ assert_response :success
+ assert_equal "text/xml", response.content_type
+
+ # check the data that is returned
+ assert_select "gpx_file[id='1']", 1 do
+ assert_select "tag", "London"
+ end
+ assert_select "gpx_file[id='4']", 1 do
+ assert_select "tag", "Birmingham"
+ end
+ end
+
+ def test_make_friend
# Get users to work with
user = users(:normal_user)
friend = users(:second_public_user)
assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
# When logged in a GET should get a confirmation page
- get :make_friend, { :display_name => friend.display_name }, { "user" => user }
+ get :make_friend, { :display_name => friend.display_name }, { :user => user.id }
assert_response :success
assert_template :make_friend
assert_select "form" do
end
assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ # When logged in a POST should add the friendship
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ post :make_friend, { :display_name => friend.display_name }, { :user => user.id }
+ end
+ assert_redirected_to user_path(:display_name => friend.display_name)
+ assert_match /is now your friend/, flash[:notice]
+ assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ email = ActionMailer::Base.deliveries.first
+ assert_equal 1, email.to.count
+ assert_equal friend.email, email.to.first
+ ActionMailer::Base.deliveries.clear
+
+ # A second POST should report that the friendship already exists
+ assert_no_difference "ActionMailer::Base.deliveries.size" do
+ post :make_friend, { :display_name => friend.display_name }, { :user => user.id }
+ end
+ assert_redirected_to user_path(:display_name => friend.display_name)
+ assert_match /You are already friends with/, flash[:warning]
+ assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ end
+
+ def test_make_friend_with_referer
+ # Get users to work with
+ user = users(:normal_user)
+ friend = users(:second_public_user)
+
+ # Check that the users aren't already friends
+ assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+
# The GET should preserve any referer
- get :make_friend, { :display_name => friend.display_name, :referer => "/test" }, { "user" => user }
+ get :make_friend, { :display_name => friend.display_name, :referer => "/test" }, { :user => user.id }
assert_response :success
assert_template :make_friend
assert_select "form" do
end
assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
- # When logged in a POST should add the friendship
- assert_difference("ActionMailer::Base.deliveries.size", 1) do
- post :make_friend, { :display_name => friend.display_name }, { "user" => user }
+ # When logged in a POST should add the friendship and refer us
+ assert_difference "ActionMailer::Base.deliveries.size", 1 do
+ post :make_friend, { :display_name => friend.display_name, :referer => "/test" }, { :user => user.id }
end
- assert_redirected_to user_path(:display_name => friend.display_name)
+ assert_redirected_to "/test"
assert_match /is now your friend/, flash[:notice]
assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
email = ActionMailer::Base.deliveries.first
assert_equal 1, email.to.count
assert_equal friend.email, email.to.first
ActionMailer::Base.deliveries.clear
+ end
- # A second POST should report that the friendship already exists
- assert_no_difference("ActionMailer::Base.deliveries.size") do
- post :make_friend, { :display_name => friend.display_name }, { "user" => user }
- end
- assert_redirected_to user_path(:display_name => friend.display_name)
- assert_match /You are already friends with/, flash[:warning]
- assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ def test_make_friend_unkown_user
+ # Should error when a bogus user is specified
+ get :make_friend, { :display_name => "No Such User" }, { :user => users(:normal_user).id }
+ assert_response :not_found
+ assert_template :no_such_user
end
- def test_user_remove_friend
+ def test_remove_friend
# Get users to work with
user = users(:normal_user)
friend = users(:public_user)
assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
# When logged in a GET should get a confirmation page
- get :remove_friend, { :display_name => friend.display_name }, { "user" => user }
+ get :remove_friend, { :display_name => friend.display_name }, { :user => user.id }
assert_response :success
assert_template :remove_friend
assert_select "form" do
end
assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ # When logged in a POST should remove the friendship
+ post :remove_friend, { :display_name => friend.display_name }, { :user => user.id }
+ assert_redirected_to user_path(:display_name => friend.display_name)
+ assert_match /was removed from your friends/, flash[:notice]
+ assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+
+ # A second POST should report that the friendship does not exist
+ post :remove_friend, { :display_name => friend.display_name }, { :user => user.id }
+ assert_redirected_to user_path(:display_name => friend.display_name)
+ assert_match /is not one of your friends/, flash[:error]
+ assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ end
+
+ def test_remove_friend_with_referer
+ # Get users to work with
+ user = users(:normal_user)
+ friend = users(:public_user)
+
+ # Check that the users are friends
+ assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+
# The GET should preserve any referer
- get :remove_friend, { :display_name => friend.display_name, :referer => "/test" }, { "user" => user }
+ get :remove_friend, { :display_name => friend.display_name, :referer => "/test" }, { :user => user.id }
assert_response :success
assert_template :remove_friend
assert_select "form" do
end
assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
- # When logged in a POST should remove the friendship
- post :remove_friend, { :display_name => friend.display_name }, { "user" => user }
- assert_redirected_to user_path(:display_name => friend.display_name)
+ # When logged in a POST should remove the friendship and refer
+ post :remove_friend, { :display_name => friend.display_name, :referer => "/test" }, { :user => user.id }
+ assert_redirected_to "/test"
assert_match /was removed from your friends/, flash[:notice]
assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ end
- # A second POST should report that the friendship does not exist
- post :remove_friend, { :display_name => friend.display_name }, { "user" => user }
- assert_redirected_to user_path(:display_name => friend.display_name)
- assert_match /is not one of your friends/, flash[:error]
- assert_nil Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
+ def test_remove_friend_unkown_user
+ # Should error when a bogus user is specified
+ get :remove_friend, { :display_name => "No Such User" }, { :user => users(:normal_user).id }
+ assert_response :not_found
+ assert_template :no_such_user
end
def test_set_status
assert_equal false, user.image.file?
assert_equal false, user.email_valid
assert_nil user.new_email
- assert_nil user.openid_url
+ assert_nil user.auth_provider
+ assert_nil user.auth_uid
assert_equal "deleted", user.status
end
+
+ def test_list_get
+ # Shouldn't work when not logged in
+ get :list
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path
+
+ session[:user] = users(:normal_user).id
+
+ # Shouldn't work when logged in as a normal user
+ get :list
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path
+
+ session[:user] = users(:moderator_user).id
+
+ # Shouldn't work when logged in as a moderator
+ get :list
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path
+
+ session[:user] = users(:administrator_user).id
+
+ # Should work when logged in as an administrator
+ get :list
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => User.count + 1
+
+ # Should be able to limit by status
+ get :list, :status => "suspended"
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => User.where(:status => "suspended").count + 1
+
+ # Should be able to limit by IP address
+ get :list, :ip => "1.2.3.4"
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => User.where(:creation_ip => "1.2.3.4").count + 1
+ end
+
+ def test_list_get_paginated
+ 1.upto(100).each do |n|
+ User.create(:display_name => "extra_#{n}",
+ :email => "extra#{n}@example.com",
+ :pass_crypt => "extraextra")
+ end
+
+ session[:user] = users(:administrator_user).id
+
+ get :list
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => 51
+
+ get :list, :page => 2
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => 51
+
+ get :list, :page => 3
+ assert_response :success
+ assert_template :list
+ assert_select "table#user_list tr", :count => 22
+ end
+
+ def test_list_post_confirm
+ inactive_user = users(:inactive_user)
+ suspended_user = users(:suspended_user)
+
+ # Shouldn't work when not logged in
+ assert_no_difference "User.active.count" do
+ post :list, :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 })
+ assert_equal "pending", inactive_user.reload.status
+ assert_equal "suspended", suspended_user.reload.status
+
+ session[:user] = users(:normal_user).id
+
+ # Shouldn't work when logged in as a normal user
+ assert_no_difference "User.active.count" do
+ post :list, :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 })
+ assert_equal "pending", inactive_user.reload.status
+ assert_equal "suspended", suspended_user.reload.status
+
+ session[:user] = users(:moderator_user).id
+
+ # Shouldn't work when logged in as a moderator
+ assert_no_difference "User.active.count" do
+ post :list, :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 })
+ assert_equal "pending", inactive_user.reload.status
+ assert_equal "suspended", suspended_user.reload.status
+
+ session[:user] = users(:administrator_user).id
+
+ # Should work when logged in as an administrator
+ assert_difference "User.active.count", 2 do
+ post :list, :confirm => 1, :user => { inactive_user.id => 1, suspended_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :list
+ assert_equal "confirmed", inactive_user.reload.status
+ assert_equal "confirmed", suspended_user.reload.status
+ end
+
+ def test_list_post_hide
+ normal_user = users(:normal_user)
+ confirmed_user = users(:confirmed_user)
+
+ # Shouldn't work when not logged in
+ assert_no_difference "User.active.count" do
+ post :list, :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 })
+ assert_equal "active", normal_user.reload.status
+ assert_equal "confirmed", confirmed_user.reload.status
+
+ session[:user] = users(:normal_user).id
+
+ # Shouldn't work when logged in as a normal user
+ assert_no_difference "User.active.count" do
+ post :list, :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 })
+ assert_equal "active", normal_user.reload.status
+ assert_equal "confirmed", confirmed_user.reload.status
+
+ session[:user] = users(:moderator_user).id
+
+ # Shouldn't work when logged in as a moderator
+ assert_no_difference "User.active.count" do
+ post :list, :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :login, :referer => users_path(:hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 })
+ assert_equal "active", normal_user.reload.status
+ assert_equal "confirmed", confirmed_user.reload.status
+
+ session[:user] = users(:administrator_user).id
+
+ # Should work when logged in as an administrator
+ assert_difference "User.active.count", -2 do
+ post :list, :hide => 1, :user => { normal_user.id => 1, confirmed_user.id => 1 }
+ end
+ assert_response :redirect
+ assert_redirected_to :action => :list
+ assert_equal "deleted", normal_user.reload.status
+ assert_equal "deleted", confirmed_user.reload.status
+ end
+
+ private
+
+ def new_user
+ user = User.new
+ user.status = "pending"
+ user.display_name = "new_tester"
+ user.email = "newtester@osm.org"
+ user.email_confirmation = "newtester@osm.org"
+ user.pass_crypt = "testtest"
+ user.pass_crypt_confirmation = "testtest"
+ user
+ end
end
assert_response :unauthorized, "should be authenticated"
# authenticate as a user with no preferences
- basic_authorization("test@example.com", "test")
+ basic_authorization("moderator@example.com", "test")
# try the read again
get :read
assert_response :not_found
end
+ ##
+ # tests whether the API works and prevents incorrect use while trying
+ # to update ways.
+ def test_update
+ ## First test with no user credentials
+ # try and update a way without authorisation
+ # first try to delete way without auth
+ content current_ways(:visible_way).to_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :unauthorized
+
+ ## Second test with the private user
+
+ # setup auth
+ basic_authorization(users(:normal_user).email, "test")
+
+ ## trying to break changesets
+
+ # try and update in someone else's changeset
+ content update_changeset(current_ways(:visible_way).to_xml,
+ changesets(:public_user_first_change).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data "update with other user's changeset should be forbidden when date isn't public"
+
+ # try and update in a closed changeset
+ content update_changeset(current_ways(:visible_way).to_xml,
+ changesets(:normal_user_closed_change).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data "update with closed changeset should be forbidden, when data isn't public"
+
+ # try and update in a non-existant changeset
+ content update_changeset(current_ways(:visible_way).to_xml, 0)
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data("update with changeset=0 should be forbidden, when data isn't public")
+
+ ## try and submit invalid updates
+ content xml_replace_node(current_ways(:visible_way).to_xml, 3, 9999)
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data "way with non-existent node should be forbidden, when data isn't public"
+
+ content xml_replace_node(current_ways(:visible_way).to_xml, 3, current_nodes(:invisible_node).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data "way with deleted node should be forbidden, when data isn't public"
+
+ ## finally, produce a good request which should work
+ content current_ways(:visible_way).to_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_require_public_data "should have failed with a forbidden when data isn't public"
+
+ ## Finally test with the public user
+
+ # try and update a way without authorisation
+ # first try to delete way without auth
+ content current_ways(:visible_way).to_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :forbidden
+
+ # setup auth
+ basic_authorization(users(:public_user).email, "test")
+
+ ## trying to break changesets
+
+ # try and update in someone else's changeset
+ content update_changeset(current_ways(:visible_way).to_xml,
+ changesets(:normal_user_first_change).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict, "update with other user's changeset should be rejected"
+
+ # try and update in a closed changeset
+ content update_changeset(current_ways(:visible_way).to_xml,
+ changesets(:normal_user_closed_change).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict, "update with closed changeset should be rejected"
+
+ # try and update in a non-existant changeset
+ content update_changeset(current_ways(:visible_way).to_xml, 0)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict, "update with changeset=0 should be rejected"
+
+ ## try and submit invalid updates
+ content xml_replace_node(current_ways(:visible_way).to_xml, 3, 9999)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :precondition_failed, "way with non-existent node should be rejected"
+
+ content xml_replace_node(current_ways(:visible_way).to_xml, 3, current_nodes(:invisible_node).id)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :precondition_failed, "way with deleted node should be rejected"
+
+ ## next, attack the versioning
+ current_way_version = current_ways(:visible_way).version
+
+ # try and submit a version behind
+ content xml_attr_rewrite(current_ways(:visible_way).to_xml,
+ "version", current_way_version - 1)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict, "should have failed on old version number"
+
+ # try and submit a version ahead
+ content xml_attr_rewrite(current_ways(:visible_way).to_xml,
+ "version", current_way_version + 1)
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict, "should have failed on skipped version number"
+
+ # try and submit total crap in the version field
+ content xml_attr_rewrite(current_ways(:visible_way).to_xml,
+ "version", "p1r4t3s!")
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :conflict,
+ "should not be able to put 'p1r4at3s!' in the version field"
+
+ ## try an update with the wrong ID
+ content current_ways(:used_way).to_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :bad_request,
+ "should not be able to update a way with a different ID from the XML"
+
+ ## try an update with a minimal valid XML doc which isn't a well-formed OSM doc.
+ content "<update/>"
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :bad_request,
+ "should not be able to update a way with non-OSM XML doc."
+
+ ## finally, produce a good request which should work
+ content current_ways(:visible_way).to_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :success, "a valid update request failed"
+ end
+
# ------------------------------------------------------------
# test tags handling
# ------------------------------------------------------------
+ ##
+ # Try adding a new tag to a way
+ def test_add_tags
+ ## Try with the non-public user
+ # setup auth
+ basic_authorization(users(:normal_user).email, "test")
+
+ # add an identical tag to the way
+ tag_xml = XML::Node.new("tag")
+ tag_xml["k"] = "new"
+ tag_xml["v"] = "yes"
+
+ # add the tag into the existing xml
+ way_xml = current_ways(:visible_way).to_xml
+ way_xml.find("//osm/way").first << tag_xml
+
+ # try and upload it
+ content way_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :forbidden,
+ "adding a duplicate tag to a way for a non-public should fail with 'forbidden'"
+
+ ## Now try with the public user
+ # setup auth
+ basic_authorization(users(:public_user).email, "test")
+
+ # add an identical tag to the way
+ tag_xml = XML::Node.new("tag")
+ tag_xml["k"] = "new"
+ tag_xml["v"] = "yes"
+
+ # add the tag into the existing xml
+ way_xml = current_ways(:visible_way).to_xml
+ way_xml.find("//osm/way").first << tag_xml
+
+ # try and upload it
+ content way_xml
+ put :update, :id => current_ways(:visible_way).id
+ assert_response :success,
+ "adding a new tag to a way should succeed"
+ assert_equal current_ways(:visible_way).version + 1, @response.body.to_i
+ end
+
##
# Try adding a duplicate of an existing tag to a way
def test_add_duplicate_tags
end
##
- # update the changeset_id of a node element
+ # update the changeset_id of a way element
def update_changeset(xml, changeset_id)
xml_attr_rewrite(xml, "changeset", changeset_id)
end
##
- # update an attribute in the node element
+ # update an attribute in the way element
def xml_attr_rewrite(xml, name, value)
xml.find("//osm/way").first[name] = value.to_s
xml
end
+
+ ##
+ # replace a node in a way element
+ def xml_replace_node(xml, old_node, new_node)
+ xml.find("//osm/way/nd[@ref='#{old_node}']").first["ref"] = new_node.to_s
+ xml
+ end
end
t1:
changeset_id: 8
subscriber_id: 2
+
+t2:
+ changeset_id: 8
+ subscriber_id: 1
oauth_desktop_app:
name: Some OAuth Desktop App
created_at: "2009-04-21 00:00:00"
+ url: http://some.desktop.app.org/
support_url: http://some.desktop.app.org/support
updated_at: "2009-04-21 00:00:00"
user_id: 2
normal_user_app:
name: Some OAuth Desktop App
created_at: "2009-05-21 00:00:00"
+ url: http://some.desktop.app.org/
support_url: http://some.desktop.app.org/support
updated_at: "2009-05-21 00:00:00"
user_id: 1
k: 'test'
v: 'yes'
+t3_2:
+ relation_id: 3
+ k: 'name'
+ v: 'Test Relation'
+
mt_1:
relation_id: 4
k: 'tag1'
w7_n3:
way_id: 7
- node_id: 6
+ node_id: 11
sequence_id: 3
k: 'test'
v: 'yes'
+t3_t2:
+ way_id: 3
+ k: 'name'
+ v: 'Test Way'
+
wv_t1:
way_id: 4
k: 'testing'
longitude:
language_code: en
visible: true
+
+public_user_entry_1:
+ id: 6
+ user_id: 2
+ title: Public User Diary Entry 1
+ body: This is the body of diary entry 1.
+ created_at: "2008-11-07 17:43:34"
+ updated_at: "2008-11-07 17:43:34"
+ latitude:
+ longitude:
+ language_code: en
+ visible: true
visibility: "public"
description: This is a trace
inserted: true
-
+
anon_trace_file:
id: 2
user_id: 2
identifiable_trace_file:
id: 4
- user_id: 2
+ user_id: 1
visible: true
name: Identifiable Trace.gpx
size: 123
visibility: "public"
description: This is a trace that has been deleted.
inserted: true
+
+zipped_trace_file:
+ id: 6
+ user_id: 4
+ visible: true
+ name: Zipped Trace.gpx
+ size:
+ latitude: 1
+ longitude: 1
+ timestamp: "2008-10-29 10:10:10"
+ visibility: "private"
+ description: This is a zipped trace
+ inserted: true
+
+tar_trace_file:
+ id: 7
+ user_id: 4
+ visible: true
+ name: Tarred Trace.gpx
+ size:
+ latitude: 1
+ longitude: 1
+ timestamp: "2008-10-29 10:10:10"
+ visibility: "private"
+ description: This is a tarred trace
+ inserted: true
+
+tar_gzip_trace_file:
+ id: 8
+ user_id: 4
+ visible: true
+ name: Gzipped Tarred Trace.gpx
+ size:
+ latitude: 1
+ longitude: 1
+ timestamp: "2008-10-29 10:10:10"
+ visibility: "private"
+ description: This is a gzipped tarred trace
+ inserted: true
+
+tar_bzip_trace_file:
+ id: 9
+ user_id: 4
+ visible: true
+ name: Bzipped Tarred Trace.gpx
+ size:
+ latitude: 1
+ longitude: 1
+ timestamp: "2008-10-29 10:10:10"
+ visibility: "private"
+ description: This is a bzipped tarred trace
+ inserted: true
+
+pending_trace_file:
+ id: 10
+ user_id: 2
+ visible: true
+ name: Pending Trace.gpx
+ size: 123
+ latitude: 51.3
+ longitude: -0.56
+ timestamp: "2009-05-06 13:34:34"
+ visibility: "public"
+ description: This is a pending trace
+ inserted: false
event: closed
created_at: 2007-03-01 00:00:00
author_id: 4
+
+t14:
+ id: 14
+ note_id: 8
+ visible: true
+ event: commented
+ created_at: 2007-02-01 00:00:00
+ author_id: 4
+ body: 'A comment description'
created_at: 2007-01-01 00:00:00
updated_at: 2007-03-01 00:00:00
closed_at: 2007-03-01 00:00:00
+
+hidden_note_with_comment:
+ id: 4
+ latitude: <%= 1.3*SCALE %>
+ longitude: <%= 1.3*SCALE %>
+ status: hidden
+ tile: <%= QuadTile.tile_for_point(1.3,1.3) %>
+ created_at: 2007-01-01 00:00:00
+ updated_at: 2007-03-01 00:00:00
+
+note_with_hidden_comment:
+ id: 5
+ latitude: <%= 1.4*SCALE %>
+ longitude: <%= 1.4*SCALE %>
+ status: open
+ tile: <%= QuadTile.tile_for_point(1.4,1.4) %>
+ created_at: 2007-01-01 00:00:00
+ updated_at: 2007-03-01 00:00:00
+
+note_with_comments_by_users:
+ id: 6
+ latitude: <%= 1.5*SCALE %>
+ longitude: <%= 1.5*SCALE %>
+ status: open
+ tile: <%= QuadTile.tile_for_point(1.5,1.5) %>
+ created_at: 2007-01-01 00:00:00
+ updated_at: 2007-03-01 00:00:00
+
+note_closed_by_user:
+ id: 7
+ latitude: <%= 1.6*SCALE %>
+ longitude: <%= 1.6*SCALE %>
+ status: closed
+ tile: <%= QuadTile.tile_for_point(1.6,1.6) %>
+ created_at: 2007-01-01 00:00:00
+ updated_at: 2007-03-01 00:00:00
+ closed_at: 2007-03-01 00:00:00
+
+hidden_note_with_comment_by_user:
+ id: 8
+ latitude: <%= 1.3*SCALE %>
+ longitude: <%= 1.3*SCALE %>
+ status: hidden
+ tile: <%= QuadTile.tile_for_point(1.3,1.3) %>
+ created_at: 2007-01-01 00:00:00
+ updated_at: 2007-03-01 00:00:00
v: 'yes'
version: 1
+t3_2:
+ relation_id: 3
+ k: 'name'
+ v: 'Test Relation'
+ version: 1
+
mt_1:
relation_id: 4
k: 'tag1'
user_id: 1
k: "some_key"
v: "some_value"
+
+u2_trace:
+ user_id: 2
+ k: "gps.trace.visibility"
+ v: "identifiable"
+
+u3_trace:
+ user_id: 4
+ k: "gps.trace.public"
+ v: "default"
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
languages: en
-
+ creation_ip: "1.2.3.4"
+
public_user:
id: 2
email: test@example.com
home_zoom: 12
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
- languages: en
-
+ languages: "en de"
+ creation_ip: "4.5.6.7"
+
inactive_user:
id: 3
email: inactive@openstreetmap.org
terms_seen: true
languages: en
email_valid: false
-
+
second_public_user:
id: 4
email: public@OpenStreetMap.org
+ new_email: new_public@OpenStreetMap.org
status: active
pass_crypt: <%= Digest::MD5.hexdigest('test') %>
creation_time: "2008-05-01 01:23:45"
home_zoom: 12
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
- languages: en
+ creation_ip: "1.2.3.4"
moderator_user:
id: 5
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
languages: en
+ image_use_gravatar: false
administrator_user:
id: 6
creation_time: "2008-05-01 01:23:45"
display_name: openIDuser
data_public: true
- openid_url: http://localhost:1123/john.doe?openid.success=true
+ auth_provider: openid
+ auth_uid: http://localhost:1123/john.doe
terms_agreed: "2010-01-01 11:22:33"
terms_seen: true
languages: en
languages: en
home_lat: 89.9
home_lon: 146.8
+
+german_user:
+ id: 18
+ email: german@example.com
+ status: active
+ pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+ creation_time: "2008-05-01 01:23:45"
+ display_name: germanuser
+ data_public: true
+ description: deutsch sprechen
+ home_lat: 11.9
+ home_lon: 12.1
+ home_zoom: 12
+ terms_agreed: "2010-01-01 11:22:33"
+ terms_seen: true
+ languages: de
+
+google_user:
+ id: 19
+ email: google-user@example.com
+ status: active
+ pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+ creation_time: "2008-05-01 01:23:45"
+ display_name: googleuser
+ data_public: true
+ auth_provider: google
+ auth_uid: 123456789
+ terms_agreed: "2010-01-01 11:22:33"
+ terms_seen: true
+ languages: en
+
+facebook_user:
+ id: 20
+ email: facebook-user@example.com
+ status: active
+ pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+ creation_time: "2008-05-01 01:23:45"
+ display_name: facebookuser
+ data_public: true
+ auth_provider: facebook
+ auth_uid: 123456789
+ terms_agreed: "2010-01-01 11:22:33"
+ terms_seen: true
+ languages: en
+
+windowslive_user:
+ id: 21
+ email: windowslive-user@example.com
+ status: active
+ pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+ creation_time: "2008-05-01 01:23:45"
+ display_name: windowsliveuser
+ data_public: true
+ auth_provider: windowslive
+ auth_uid: 123456789
+ terms_agreed: "2010-01-01 11:22:33"
+ terms_seen: true
+ languages: en
v: 'yes'
version: 1
+t3_t2:
+ way_id: 3
+ k: 'name'
+ v: 'Test Way'
+ version: 1
+
wv3_t1:
way_id: 4
k: 'testing'
I18n.locale = "en"
end
+ def teardown
+ I18n.locale = "en"
+ end
+
def test_linkify
%w(http://example.com/test ftp://example.com/test https://example.com/test).each do |link|
text = "Test #{link} is made into a link"
def test_friendly_date
date = friendly_date(Time.new(2014, 3, 5, 18, 58, 23))
- assert_match /^<span title=" *5 March 2014 at 18:58">.*<\/span>$/, date
+ assert_match %r{^<span title=" *5 March 2014 at 18:58">.*</span>$}, date
date = friendly_date(Time.now - 1.hour)
- assert_match /^<span title=".*">about 1 hour<\/span>$/, date
+ assert_match %r{^<span title=".*">about 1 hour</span>$}, date
date = friendly_date(Time.now - 2.days)
- assert_match /^<span title=".*">2 days<\/span>$/, date
+ assert_match %r{^<span title=".*">2 days</span>$}, date
date = friendly_date(Time.now - 3.weeks)
- assert_match /^<span title=".*">21 days<\/span>$/, date
+ assert_match %r{^<span title=".*">21 days</span>$}, date
date = friendly_date(Time.now - 4.months)
- assert_match /^<span title=".*">4 months<\/span>$/, date
+ assert_match %r{^<span title=".*">4 months</span>$}, date
end
def test_body_class
html = format_value("phone", "+1234567890")
assert_dom_equal "<a href=\"tel:+1234567890\" title=\"Call +1234567890\">+1234567890</a>", html
+
+ html = format_value("wikipedia", "Test")
+ assert_dom_equal "<a title=\"The Test article on Wikipedia\" href=\"http://en.wikipedia.org/wiki/Test?uselang=en\">Test</a>", html
+
+ html = format_value("wikidata", "Q42")
+ assert_dom_equal "<a title=\"The Q42 item on Wikidata\" href=\"//www.wikidata.org/wiki/Q42?uselang=en\">Q42</a>", html
end
def test_icon_tags
assert_equal "http://fr.wikipedia.org/wiki/de:Test?uselang=en", link[:url]
assert_equal "de:Test", link[:title]
+ link = wikipedia_link("wikipedia", "de:Englischer Garten (München)#Japanisches Teehaus")
+ assert_equal "http://de.wikipedia.org/wiki/de:Englischer Garten (München)?uselang=en#Japanisches_Teehaus", link[:url]
+ assert_equal "de:Englischer Garten (München)#Japanisches Teehaus", link[:title]
+
+ link = wikipedia_link("wikipedia", "de:Alte Brücke (Heidelberg)#Brückenaffe")
+ assert_equal "http://de.wikipedia.org/wiki/de:Alte Brücke (Heidelberg)?uselang=en#Br.C3.BCckenaffe", link[:url]
+ assert_equal "de:Alte Brücke (Heidelberg)#Brückenaffe", link[:title]
+
+ link = wikipedia_link("wikipedia", "de:Liste der Baudenkmäler in Eichstätt#Brückenstraße 1, Ehemaliges Bauernhaus")
+ assert_equal "http://de.wikipedia.org/wiki/de:Liste der Baudenkmäler in Eichstätt?uselang=en#Br.C3.BCckenstra.C3.9Fe_1.2C_Ehemaliges_Bauernhaus", link[:url]
+ assert_equal "de:Liste der Baudenkmäler in Eichstätt#Brückenstraße 1, Ehemaliges Bauernhaus", link[:title]
+
I18n.locale = "pt-BR"
link = wikipedia_link("wikipedia", "zh-classical:Test#Section")
end
def test_changeset_details
- assert_match /^Created <abbr title='Mon, 01 Jan 2007 00:00:00 \+0000'>.*<\/abbr> by anonymous$/, changeset_details(changesets(:normal_user_first_change))
+ assert_match %r{^Created <abbr title='Mon, 01 Jan 2007 00:00:00 \+0000'>.*</abbr> by anonymous$}, changeset_details(changesets(:normal_user_first_change))
assert_match %r{^Closed <abbr title='Created: Mon, 01 Jan 2007 00:00:00 \+0000 Closed: Tue, 02 Jan 2007 00:00:00 \+0000'>.*</abbr> by <a href="/user/test2">test2</a>$}, changeset_details(changesets(:public_user_closed_change))
end
end
--- /dev/null
+require "test_helper"
+
+class GeocoderHelperTest < ActionView::TestCase
+ def test_result_to_html
+ html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :name => "Name")
+ assert_dom_equal '<a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
+
+ html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :prefix => "Prefix", :name => "Name")
+ assert_dom_equal 'Prefix <a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" href="/#map=16/1.23/4.56">Name</a>', html
+
+ html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :name => "Name", :suffix => "Suffix")
+ assert_dom_equal '<a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
+
+ html = result_to_html(:lat => 1.23, :lon => 4.56, :zoom => 16, :prefix => "Prefix", :name => "Name", :suffix => "Suffix")
+ assert_dom_equal 'Prefix <a class="set_position" data-lat="1.23" data-lon="4.56" data-zoom="16" data-prefix="Prefix" data-name="Name" data-suffix="Suffix" href="/#map=16/1.23/4.56">Name</a> Suffix', html
+
+ html = result_to_html(:type => "node", :id => 123456, :name => "Name")
+ assert_dom_equal '<a class="set_position" data-type="node" data-id="123456" data-name="Name" href="/node/123456">Name</a>', html
+
+ html = result_to_html(:min_lat => 1.23, :max_lat => 4.56, :min_lon => -1.23, :max_lon => 2.34, :name => "Name")
+ assert_dom_equal '<a class="set_position" data-min-lat="1.23" data-max-lat="4.56" data-min-lon="-1.23" data-max-lon="2.34" data-name="Name" href="/?bbox=-1.23,1.23,2.34,4.56">Name</a', html
+ end
+end
+# coding: utf-8
require "test_helper"
class TitleHelperTest < ActionView::TestCase
assert_nil @title
set_title("Test Title")
- assert_equal "OpenStreetMap | Test Title", response.header["X-Page-Title"]
+ assert_equal "OpenStreetMap%20%7C%20Test%20Title", response.header["X-Page-Title"]
assert_equal "Test Title", @title
set_title("Test & Title")
- assert_equal "OpenStreetMap | Test & Title", response.header["X-Page-Title"]
+ assert_equal "OpenStreetMap%20%7C%20Test%20&%20Title", response.header["X-Page-Title"]
assert_equal "Test & Title", @title
+
+ set_title("Tést & Tïtlè")
+ assert_equal "OpenStreetMap%20%7C%20T%C3%A9st%20&%20T%C3%AFtl%C3%A8", response.header["X-Page-Title"]
+ assert_equal "Tést & Tïtlè", @title
end
end
--- /dev/null
+require "test_helper"
+
+class UserRolesHelperTest < ActionView::TestCase
+ fixtures :users, :user_roles
+
+ def test_role_icon_normal
+ @user = users(:normal_user)
+
+ icon = role_icon(users(:normal_user), "moderator")
+ assert_dom_equal "", icon
+
+ icon = role_icon(users(:moderator_user), "moderator")
+ assert_dom_equal '<img border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />', icon
+ end
+
+ def test_role_icon_administrator
+ @user = users(:administrator_user)
+
+ icon = role_icon(users(:normal_user), "moderator")
+ assert_dom_equal '<a confirm="Are you sure you want to grant the role `moderator' to the user `test'?" rel="nofollow" data-method="post" href="/user/test/role/moderator/grant"><img border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></a>', icon
+
+ icon = role_icon(users(:moderator_user), "moderator")
+ assert_dom_equal '<a confirm="Are you sure you want to revoke the role `moderator' from the user `moderator'?" rel="nofollow" data-method="post" href="/user/moderator/role/moderator/revoke"><img border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></a>', icon
+ end
+
+ def test_role_icons_normal
+ @user = users(:normal_user)
+
+ icons = role_icons(users(:normal_user))
+ assert_dom_equal " ", icons
+
+ icons = role_icons(users(:moderator_user))
+ assert_dom_equal ' <img border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />', icons
+
+ icons = role_icons(users(:super_user))
+ assert_dom_equal ' <img border="0" alt="This user is an administrator" title="This user is an administrator" src="/images/roles/administrator.png" width="20" height="20" /> <img border="0" alt="This user is a moderator" title="This user is a moderator" src="/images/roles/moderator.png" width="20" height="20" />', icons
+ end
+
+ def test_role_icons_administrator
+ @user = users(:administrator_user)
+
+ icons = role_icons(users(:normal_user))
+ assert_dom_equal ' <a confirm="Are you sure you want to grant the role `administrator' to the user `test'?" rel="nofollow" data-method="post" href="/user/test/role/administrator/grant"><img border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></a> <a confirm="Are you sure you want to grant the role `moderator' to the user `test'?" rel="nofollow" data-method="post" href="/user/test/role/moderator/grant"><img border="0" alt="Grant moderator access" title="Grant moderator access" src="/images/roles/blank_moderator.png" width="20" height="20" /></a>', icons
+
+ icons = role_icons(users(:moderator_user))
+ assert_dom_equal ' <a confirm="Are you sure you want to grant the role `administrator' to the user `moderator'?" rel="nofollow" data-method="post" href="/user/moderator/role/administrator/grant"><img border="0" alt="Grant administrator access" title="Grant administrator access" src="/images/roles/blank_administrator.png" width="20" height="20" /></a> <a confirm="Are you sure you want to revoke the role `moderator' from the user `moderator'?" rel="nofollow" data-method="post" href="/user/moderator/role/moderator/revoke"><img border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></a>', icons
+
+ icons = role_icons(users(:super_user))
+ assert_dom_equal ' <a confirm="Are you sure you want to revoke the role `administrator' from the user `super'?" rel="nofollow" data-method="post" href="/user/super/role/administrator/revoke"><img border="0" alt="Revoke administrator access" title="Revoke administrator access" src="/images/roles/administrator.png" width="20" height="20" /></a> <a confirm="Are you sure you want to revoke the role `moderator' from the user `super'?" rel="nofollow" data-method="post" href="/user/super/role/moderator/revoke"><img border="0" alt="Revoke moderator access" title="Revoke moderator access" src="/images/roles/moderator.png" width="20" height="20" /></a>', icons
+ end
+end
--- /dev/null
+/?geoit=XML&postal=A1B+2C3: |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <geodata>
+ <latt>47.172520</latt>
+ <longt>-55.440515</longt>
+ <postal>A1B2C3</postal>
+ <standard>
+ <stnumber>1</stnumber>
+ <staddress/>
+ <city>ST. JOHN&'S</city>
+ <prov>NL</prov>
+ <confidence>0.9</confidence>
+ </standard>
+ </geodata>
+
+/?geoit=XML&postal=k1a+0b1: |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <geodata>
+ <latt>45.375437</latt>
+ <longt>-75.691041</longt>
+ <postal>K1A0B1</postal>
+ <standard>
+ <stnumber>1</stnumber>
+ <staddress/>
+ <city>OTTAWA</city>
+ <prov>ON</prov>
+ <confidence>0.9</confidence>
+ </standard>
+ </geodata>
+
+/?geoit=XML&postal=Q0Q+0Q0: |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <geodata>
+ <error>
+ <code>008</code>
+ <description>Your request did not produce any results. Check your spelling and try again.</description>
+ </error>
+ <latt/>
+ <longt>-</longt>
+ <postal>Q0Q0Q0</postal>
+ <standard>
+ <stnumber>1</stnumber>
+ <staddress/>
+ <city/>
+ <prov/>
+ <confidence>0.9</confidence>
+ </standard>
+ </geodata>
--- /dev/null
+/service/csv?zip=90210: "34.088808, -118.40612, Beverly Hills, CA, 90210"
+/service/csv?zip=00000: "1: couldn't find this zip code: 00000! sorry"
--- /dev/null
+/search?lang=en&maxRows=20&q=Hoddesdon&username=dummy: |
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <geonames style="MEDIUM">
+ <totalResultsCount>1</totalResultsCount>
+ <geoname>
+ <toponymName>Hoddesdon</toponymName>
+ <name>Hoddesdon</name>
+ <lat>51.76148</lat>
+ <lng>-0.01144</lng>
+ <geonameId>2646807</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ </geonames>
+
+/search?lang=en&maxRows=20&q=Broxbourne&username=dummy: |
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <geonames style="MEDIUM">
+ <totalResultsCount>17</totalResultsCount>
+ <geoname>
+ <toponymName>Broxbourne</toponymName>
+ <name>Broxbourne</name>
+ <lat>51.74712</lat>
+ <lng>-0.01923</lng>
+ <geonameId>2654481</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Broxbourne District</toponymName>
+ <name>Broxbourne District</name>
+ <lat>51.73026</lat>
+ <lng>-0.04821</lng>
+ <geonameId>7290563</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>A</fcl>
+ <fcode>ADM3</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Cheshunt</toponymName>
+ <name>Cheshunt</name>
+ <lat>51.70791</lat>
+ <lng>-0.03739</lng>
+ <geonameId>2653232</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Hoddesdon</toponymName>
+ <name>Hoddesdon</name>
+ <lat>51.76148</lat>
+ <lng>-0.01144</lng>
+ <geonameId>2646807</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Waltham Cross</toponymName>
+ <name>Waltham Cross</name>
+ <lat>51.68905</lat>
+ <lng>-0.0333</lng>
+ <geonameId>2634842</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Goffs Oak</toponymName>
+ <name>Goffs Oak</name>
+ <lat>51.71015</lat>
+ <lng>-0.0872</lng>
+ <geonameId>2648362</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Wormley</toponymName>
+ <name>Wormley</name>
+ <lat>51.7324</lat>
+ <lng>-0.0242</lng>
+ <geonameId>2633535</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>P</fcl>
+ <fcode>PPL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Broxbourne</toponymName>
+ <name>Broxbourne</name>
+ <lat>-27.50314</lat>
+ <lng>151.378</lng>
+ <geonameId>8792801</geonameId>
+ <countryCode>AU</countryCode>
+ <countryName>Australia</countryName>
+ <fcl>S</fcl>
+ <fcode>HMSD</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Lee Valley White Water Centre</toponymName>
+ <name>Lee Valley White Water Centre</name>
+ <lat>51.68814</lat>
+ <lng>-0.01682</lng>
+ <geonameId>7670551</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>FCL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Cheshunt Railway Station</toponymName>
+ <name>Cheshunt Railway Station</name>
+ <lat>51.703</lat>
+ <lng>-0.024</lng>
+ <geonameId>6952282</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>RSTN</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Theobalds Grove Railway Station</toponymName>
+ <name>Theobalds Grove Railway Station</name>
+ <lat>51.692</lat>
+ <lng>-0.035</lng>
+ <geonameId>6953715</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>RSTN</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Waltham Cross Railway Station</toponymName>
+ <name>Waltham Cross Railway Station</name>
+ <lat>51.685</lat>
+ <lng>-0.027</lng>
+ <geonameId>6953801</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>RSTN</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Rye House Station</toponymName>
+ <name>Rye House Station</name>
+ <lat>51.76938</lat>
+ <lng>0.00562</lng>
+ <geonameId>6691700</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>RSTN</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Broxbourne Station</toponymName>
+ <name>Broxbourne Station</name>
+ <lat>51.74697</lat>
+ <lng>-0.01105</lng>
+ <geonameId>6691701</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>RSTN</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Broxbornebury Park</toponymName>
+ <name>Broxbornebury Park</name>
+ <lat>51.75252</lat>
+ <lng>-0.03839</lng>
+ <geonameId>6286417</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>CSTL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Marriott Cheshunt</toponymName>
+ <name>Marriott Cheshunt</name>
+ <lat>51.7208</lat>
+ <lng>-0.0324</lng>
+ <geonameId>6512481</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>HTL</fcode>
+ </geoname>
+ <geoname>
+ <toponymName>Cheshunt Community Hospital</toponymName>
+ <name>Cheshunt Community Hospital</name>
+ <lat>51.68396</lat>
+ <lng>-0.03951</lng>
+ <geonameId>6289233</geonameId>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <fcl>S</fcl>
+ <fcode>HSP</fcode>
+ </geoname>
+ </geonames>
+
+/countrySubdivision?lang=en&lat=51.7632&lng=-0.0076&username=dummy: |
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <geonames>
+ <countrySubdivision>
+ <countryCode>GB</countryCode>
+ <countryName>United Kingdom</countryName>
+ <adminCode1>ENG</adminCode1>
+ <adminName1>England</adminName1>
+ <code type="ISO3166-2">ENG</code>
+ <distance>0.0</distance>
+ </countrySubdivision>
+ </geonames>
--- /dev/null
+/search?accept-language=&format=xml&q=Hoddesdon&viewbox=-0.559%2C51.766%2C0.836%2C51.217: |
+ <?xml version="1.0" encoding="UTF-8" ?>
+ <searchresults timestamp='Sun, 01 Mar 15 20:02:29 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Hoddesdon' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='110741' more_url='http://nominatim.openstreetmap.org/search?format=xml&exclude_place_ids=110741&viewbox=-0.559%2C51.766%2C0.836%2C51.217&q=Hoddesdon'>
+ <place place_id='110741' osm_type='node' osm_id='18007599' place_rank='18' boundingbox="51.7216709,51.8016709,-0.0512898,0.0287102" lat='51.7616709' lon='-0.0112898' display_name='Hoddesdon, Hertfordshire, East of England, England, United Kingdom' class='place' type='town' importance='0.50547792382382' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_town.p.20.png'/>
+ </searchresults>
+
+/search?accept-language=&format=xml&q=Broxbourne&viewbox=-0.559%2C51.766%2C0.836%2C51.217: |
+ <?xml version="1.0" encoding="UTF-8" ?>
+ <searchresults timestamp='Sun, 01 Mar 15 20:42:25 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Broxbourne' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='150696,127984131,109724' more_url='http://nominatim.openstreetmap.org/search?format=xml&exclude_place_ids=150696,127984131,109724&viewbox=-0.559%2C51.766%2C0.836%2C51.217&q=Broxbourne'>
+ <place place_id='150696' osm_type='node' osm_id='28825933' place_rank='20' boundingbox="51.7265723,51.7665723,-0.0390782,0.0009218" lat='51.7465723' lon='-0.0190782' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='place' type='suburb' importance='0.52141385408531' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/>
+ <place place_id='127984131' osm_type='relation' osm_id='2677978' place_rank='16' boundingbox="51.6808751,51.7806237,-0.114204,0.0145267" lat='51.73083995' lon='-0.0579457295222991' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='boundary' type='administrative' importance='0.46' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_boundary_administrative.p.20.png'/>
+ <place place_id='109724' osm_type='node' osm_id='17044599' place_rank='30' boundingbox="51.7418469,51.7518469,-0.0156773,-0.0056773" lat='51.7468469' lon='-0.0106773' display_name='Broxbourne, Stafford Drive, Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='railway' type='station' importance='0.111' icon='http://nominatim.openstreetmap.org/images/mapicons/transport_train_station2.p.20.png'/>
+ </searchresults>
+
+/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=15: |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <reversegeocode timestamp="Sun, 01 Mar 15 22:49:45 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&lat=51.7632&lon=-0.0076&zoom=15">
+ <result place_id="150696" osm_type="node" osm_id="28825933" ref="Broxbourne" lat="51.7465723" lon="-0.0190782">Broxbourne, Hertfordshire, East of England, England, United Kingdom</result>
+ <addressparts>
+ <suburb>Broxbourne</suburb>
+ <city>Broxbourne</city>
+ <county>Hertfordshire</county>
+ <state_district>East of England</state_district>
+ <state>England</state>
+ <country>United Kingdom</country>
+ <country_code>gb</country_code>
+ </addressparts>
+ </reversegeocode>
+
+/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=17: |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <reversegeocode timestamp="Sun, 01 Mar 15 22:58:16 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&lat=51.7632&lon=-0.0076&zoom=17">
+ <result place_id="46484711" osm_type="way" osm_id="3489841" ref="A1170" lat="51.7634883" lon="-0.0088373">Dinant Link Road, Broxbourne, Hertfordshire, East of England, England, EN11 8HX, United Kingdom</result>
+ <addressparts>
+ <road>Dinant Link Road</road>
+ <suburb>Broxbourne</suburb>
+ <city>Broxbourne</city>
+ <county>Hertfordshire</county>
+ <state_district>East of England</state_district>
+ <state>England</state>
+ <postcode>EN11 8HX</postcode>
+ <country>United Kingdom</country>
+ <country_code>gb</country_code>
+ </addressparts>
+ </reversegeocode>
--- /dev/null
+/cgi/geocoder.fcgi?format=text&postcode=CV4+7AL: |
+ # Easting,Northing,Matched Postcode,Latitude,Longitude
+ 429926,276058,'CV4 7AL',52.381748701968,-1.56176420939232
+
+/cgi/geocoder.fcgi?format=text&postcode=XX9+9XX: |
+ Error: Postcode area 'XX' not found, postcode probably invalid
require "test_helper"
-class ClientApplicationTest < ActionDispatch::IntegrationTest
+class ClientApplicationsTest < ActionDispatch::IntegrationTest
fixtures :users, :client_applications
##
--- /dev/null
+require "test_helper"
+
+class LocaleTest < ActionDispatch::IntegrationTest
+ fixtures :users
+
+ def setup
+ I18n.locale = "en"
+ end
+
+ def teardown
+ I18n.locale = "en"
+ end
+
+ def test_defaulting
+ user = users(:second_public_user)
+
+ post_via_redirect "/login", :username => user.email, :password => "test"
+
+ get "/diary/new", {}
+ assert_equal [], User.find(user.id).languages
+ assert_select "html[lang=?]", "en"
+
+ get "/diary/new", {}, { "HTTP_ACCEPT_LANGUAGE" => "fr, en" }
+ assert_equal %w(fr en), User.find(user.id).languages
+ assert_select "html[lang=?]", "fr"
+ end
+
+ def test_override
+ user = users(:german_user)
+
+ get "/diary"
+ assert_select "html[lang=?]", "en"
+
+ get "/diary", :locale => "es"
+ assert_select "html[lang=?]", "es"
+
+ post_via_redirect "/login", :username => user.email, :password => "test"
+
+ get "/diary"
+ assert_select "html[lang=?]", "de"
+
+ get "/diary", :locale => "fr"
+ assert_select "html[lang=?]", "fr"
+ end
+end
class OAuthTest < ActionDispatch::IntegrationTest
fixtures :users, :client_applications, :gpx_files
+ set_fixture_class :gpx_files => Trace
include OAuth::Helper
def test_oauth10_web_app
client = client_applications(:oauth_web_app)
- post_via_redirect "/login",
- :username => client.user.email, :password => "test"
+ post_via_redirect "/login", :username => client.user.email, :password => "test"
assert_response :success
- signed_get "/oauth/request_token", :consumer => client
+ oauth10_without_callback(client)
+ oauth10_with_callback(client, "http://another.web.app.org/callback")
+ oauth10_refused(client)
+ end
+
+ def test_oauth10_desktop_app
+ client = client_applications(:oauth_desktop_app)
+
+ post_via_redirect "/login", :username => client.user.email, :password => "test"
assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
- assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+
+ oauth10_without_callback(client)
+ oauth10_refused(client)
+ end
+
+ def test_oauth10a_web_app
+ client = client_applications(:oauth_web_app)
+
+ post_via_redirect "/login", :username => client.user.email, :password => "test"
+ assert_response :success
+
+ oauth10a_without_callback(client)
+ oauth10a_with_callback(client, "http://another.web.app.org/callback")
+ oauth10a_refused(client)
+ end
+
+ def test_oauth10a_desktop_app
+ client = client_applications(:oauth_desktop_app)
+
+ post_via_redirect "/login", :username => client.user.email, :password => "test"
+ assert_response :success
+
+ oauth10a_without_callback(client)
+ oauth10a_refused(client)
+ end
+
+ private
+
+ def oauth10_without_callback(client)
+ token = get_request_token(client)
+
+ get "/oauth/authorize", :oauth_token => token.token
+ assert_response :success
+ assert_template :authorize
post "/oauth/authorize",
:oauth_token => token.token,
:allow_read_prefs => true, :allow_write_prefs => true
- assert_response :redirect
- assert_redirected_to "http://some.web.app.org/callback?oauth_token=#{token.token}"
+ if client.callback_url
+ assert_response :redirect
+ assert_redirected_to "#{client.callback_url}?oauth_token=#{token.token}"
+ else
+ assert_response :success
+ assert_template :authorize_success
+ end
token.reload
assert_not_nil token.created_at
assert_not_nil token.authorized_at
signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
assert_response :success
+ signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
+ assert_response :forbidden
+
post "/oauth/revoke", :token => token.token
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by_token(token.token)
signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
assert_response :unauthorized
+ end
+
+ def oauth10_refused(client)
+ token = get_request_token(client)
- signed_get "/oauth/request_token", :consumer => client
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
- assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+ assert_template :authorize
- post "/oauth/authorize",
- :oauth_token => token.token,
- :oauth_callback => "http://another.web.app.org/callback",
- :allow_write_api => true, :allow_read_gpx => true
- assert_response :redirect
- assert_redirected_to "http://another.web.app.org/callback?oauth_token=#{token.token}"
+ post "/oauth/authorize", :oauth_token => token.token
+ assert_response :success
+ assert_template :authorize_failure
+ assert_select "p", "You have denied application #{client.name} access to your account."
token.reload
- assert_not_nil token.created_at
- assert_not_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, [:allow_write_api, :allow_read_gpx]
+ assert_nil token.authorized_at
+ assert_not_nil token.invalidated_at
- signed_get "/oauth/access_token", :consumer => client, :token => token
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
+ assert_template :authorize_failure
+ assert_select "p", "The authorization token is not valid."
token.reload
- assert_not_nil token.created_at
- assert_not_nil token.authorized_at
+ assert_nil token.authorized_at
assert_not_nil token.invalidated_at
- token = parse_token(response)
- assert_instance_of AccessToken, token
- assert_not_nil token.created_at
- assert_not_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, [:allow_write_api, :allow_read_gpx]
- signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
+ post "/oauth/authorize", :oauth_token => token.token
assert_response :success
-
- post "/oauth/revoke", :token => token.token
- assert_redirected_to oauth_clients_url(token.user.display_name)
- token = OauthToken.find_by_token(token.token)
+ assert_template :authorize_failure
+ assert_select "p", "The authorization token is not valid."
+ token.reload
+ assert_nil token.authorized_at
assert_not_nil token.invalidated_at
-
- signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
- assert_response :unauthorized
end
- def test_oauth10_desktop_app
- client = client_applications(:oauth_desktop_app)
-
- post_via_redirect "/login",
- :username => client.user.email, :password => "test"
- assert_response :success
+ def oauth10_with_callback(client, callback_url)
+ token = get_request_token(client)
- signed_get "/oauth/request_token", :consumer => client
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
- assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+ assert_template :authorize
post "/oauth/authorize",
- :oauth_token => token.token,
- :allow_read_prefs => true, :allow_write_prefs => true
- assert_response :success
- assert_template "authorize_success"
+ :oauth_token => token.token, :oauth_callback => callback_url,
+ :allow_write_api => true, :allow_read_gpx => true
+ assert_response :redirect
+ assert_redirected_to "#{callback_url}?oauth_token=#{token.token}"
token.reload
assert_not_nil token.created_at
assert_not_nil token.authorized_at
assert_nil token.invalidated_at
- assert_allowed token, [:allow_read_prefs]
+ assert_allowed token, [:allow_write_api, :allow_read_gpx]
signed_get "/oauth/access_token", :consumer => client, :token => token
assert_response :success
assert_not_nil token.created_at
assert_not_nil token.authorized_at
assert_nil token.invalidated_at
- assert_allowed token, [:allow_read_prefs]
+ assert_allowed token, [:allow_write_api, :allow_read_gpx]
- signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
+ signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
assert_response :success
+ signed_get "/api/0.6/user/details", :consumer => client, :token => token
+ assert_response :forbidden
+
post "/oauth/revoke", :token => token.token
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by_token(token.token)
assert_not_nil token.invalidated_at
- signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
+ signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
assert_response :unauthorized
end
- def test_oauth10a_web_app
- client = client_applications(:oauth_web_app)
+ def oauth10a_without_callback(client)
+ token = get_request_token(client, :oauth_callback => "oob")
- post_via_redirect "/login",
- :username => client.user.email, :password => "test"
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
-
- signed_get "/oauth/request_token",
- :consumer => client, :oauth_callback => "oob"
- assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
- assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+ assert_template :authorize
post "/oauth/authorize",
:oauth_token => token.token,
:allow_read_prefs => true, :allow_write_prefs => true
- assert_response :redirect
- verifier = parse_verifier(response)
- assert_redirected_to "http://some.web.app.org/callback?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
+ if client.callback_url
+ assert_response :redirect
+ verifier = parse_verifier(response)
+ assert_redirected_to "http://some.web.app.org/callback?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
+ else
+ assert_response :success
+ assert_template :authorize_success
+ m = response.body.match("<p>The verification code is ([A-Za-z0-9]+).</p>")
+ assert_not_nil m
+ verifier = m[1]
+ end
token.reload
assert_not_nil token.created_at
assert_not_nil token.authorized_at
signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
assert_response :success
+ signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
+ assert_response :forbidden
+
post "/oauth/revoke", :token => token.token
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by_token(token.token)
signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
assert_response :unauthorized
+ end
+
+ def oauth10a_with_callback(client, callback_url)
+ token = get_request_token(client, :oauth_callback => callback_url)
- signed_get "/oauth/request_token",
- :consumer => client,
- :oauth_callback => "http://another.web.app.org/callback"
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
- assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+ assert_template :authorize
post "/oauth/authorize",
:oauth_token => token.token,
:allow_write_api => true, :allow_read_gpx => true
assert_response :redirect
verifier = parse_verifier(response)
- assert_redirected_to "http://another.web.app.org/callback?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
+ assert_redirected_to "#{callback_url}?oauth_token=#{token.token}&oauth_verifier=#{verifier}"
token.reload
assert_not_nil token.created_at
assert_not_nil token.authorized_at
signed_get "/api/0.6/gpx/2", :consumer => client, :token => token
assert_response :success
+ signed_get "/api/0.6/user/details", :consumer => client, :token => token
+ assert_response :forbidden
+
post "/oauth/revoke", :token => token.token
assert_redirected_to oauth_clients_url(token.user.display_name)
token = OauthToken.find_by_token(token.token)
assert_response :unauthorized
end
- def test_oauth10a_desktop_app
- client = client_applications(:oauth_desktop_app)
+ def oauth10a_refused(client)
+ token = get_request_token(client, :oauth_callback => "oob")
- post_via_redirect "/login",
- :username => client.user.email, :password => "test"
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
+ assert_template :authorize
- signed_get "/oauth/request_token",
- :consumer => client, :oauth_callback => "oob"
+ post "/oauth/authorize", :oauth_token => token.token
assert_response :success
- token = parse_token(response)
- assert_instance_of RequestToken, token
- assert_not_nil token.created_at
+ assert_template :authorize_failure
+ assert_select "p", "You have denied application #{client.name} access to your account."
+ token.reload
assert_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, client.permissions
+ assert_not_nil token.invalidated_at
- post "/oauth/authorize",
- :oauth_token => token.token,
- :allow_read_prefs => true, :allow_write_prefs => true
+ get "/oauth/authorize", :oauth_token => token.token
assert_response :success
- assert_template "authorize_success"
- m = response.body.match("<p>The verification code is ([A-Za-z0-9]+).</p>")
- assert_not_nil m
- verifier = m[1]
+ assert_template :authorize_failure
+ assert_select "p", "The authorization token is not valid."
token.reload
- assert_not_nil token.created_at
- assert_not_nil token.authorized_at
- assert_nil token.invalidated_at
- assert_allowed token, [:allow_read_prefs]
-
- signed_get "/oauth/access_token", :consumer => client, :token => token
- assert_response :unauthorized
+ assert_nil token.authorized_at
+ assert_not_nil token.invalidated_at
- signed_get "/oauth/access_token",
- :consumer => client, :token => token, :oauth_verifier => verifier
+ post "/oauth/authorize", :oauth_token => token.token
assert_response :success
+ assert_template :authorize_failure
+ assert_select "p", "The authorization token is not valid."
token.reload
- assert_not_nil token.created_at
- assert_not_nil token.authorized_at
+ assert_nil token.authorized_at
assert_not_nil token.invalidated_at
+ end
+
+ def get_request_token(client, options = {})
+ signed_get "/oauth/request_token", options.merge(:consumer => client)
+ assert_response :success
token = parse_token(response)
- assert_instance_of AccessToken, token
+ assert_instance_of RequestToken, token
assert_not_nil token.created_at
- assert_not_nil token.authorized_at
+ assert_nil token.authorized_at
assert_nil token.invalidated_at
- assert_allowed token, [:allow_read_prefs]
-
- signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
- assert_response :success
-
- post "/oauth/revoke", :token => token.token
- assert_redirected_to oauth_clients_url(token.user.display_name)
- token = OauthToken.find_by_token(token.token)
- assert_not_nil token.invalidated_at
+ assert_allowed token, client.permissions
- signed_get "/api/0.6/user/preferences", :consumer => client, :token => token
- assert_response :unauthorized
+ token
end
- private
-
def signed_get(uri, options)
uri = URI.parse(uri)
uri.scheme ||= "http"
require "test_helper"
-class RedirectTest < ActionDispatch::IntegrationTest
+class RedirectTest < ActionDispatch::IntegrationTest
def test_legacy_redirects
get "/index.html"
assert_response :redirect
fixtures :users, :user_blocks, :user_roles
def auth_header(user, pass)
- { "HTTP_AUTHORIZATION" => "Basic %s" % Base64.encode64("#{user}:#{pass}") }
+ { "HTTP_AUTHORIZATION" => format("Basic %s", Base64.encode64("#{user}:#{pass}")) }
end
def test_api_blocked
fixtures :users
def setup
- openid_setup
+ I18n.locale = "en"
+
+ OmniAuth.config.test_mode = true
+ end
+
+ def teardown
+ I18n.locale = "en"
+
+ OmniAuth.config.mock_auth[:openid] = nil
+ OmniAuth.config.mock_auth[:google] = nil
+ OmniAuth.config.mock_auth[:facebook] = nil
+ OmniAuth.config.mock_auth[:windowslive] = nil
+ OmniAuth.config.test_mode = false
end
def test_create_user_form
end
def test_user_create_openid_success
+ OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/new.tester")
+
new_email = "newtester-openid@osm.org"
display_name = "new_tester-openid"
password = "testtest"
assert_difference("User.count") do
assert_difference("ActionMailer::Base.deliveries.size", 1) do
post "/user/new",
- :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
assert_response :redirect
- res = openid_request(@response.redirect_url)
- get "/user/new", res
assert_redirected_to "/user/terms"
post "/user/save",
- :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => password, :pass_crypt_confirmation => password }
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => password, :pass_crypt_confirmation => password }
assert_response :redirect
follow_redirect!
end
end
def test_user_create_openid_failure
+ OmniAuth.config.mock_auth[:openid] = :connection_failed
+
new_email = "newtester-openid2@osm.org"
display_name = "new_tester-openid2"
assert_difference("User.count", 0) do
assert_difference("ActionMailer::Base.deliveries.size", 0) do
post "/user/new",
- :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.failure=newuser", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
assert_response :redirect
- res = openid_request(@response.redirect_url)
- get "/user/new", res
+ assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
assert_response :success
assert_template "user/new"
end
end
def test_user_create_openid_redirect
+ OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/new.tester")
+
new_email = "redirect_tester_openid@osm.org"
display_name = "redirect_tester_openid"
# nothing special about this page, just need a protected page to redirect back to.
assert_difference("User.count") do
assert_difference("ActionMailer::Base.deliveries.size", 1) do
post "/user/new",
- :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+ follow_redirect!
assert_response :redirect
- res = openid_request(@response.location)
- get "/user/new", res
assert_redirected_to "/user/terms"
post_via_redirect "/user/save",
- :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }
end
end
assert_response :success
assert_template "site/welcome"
end
+
+ def test_user_create_google_success
+ OmniAuth.config.add_mock(:google, :uid => "123454321", :extra => {
+ :id_info => { "openid_id" => "http://localhost:1123/new.tester" }
+ })
+
+ new_email = "newtester-google@osm.org"
+ display_name = "new_tester-google"
+ password = "testtest"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password }
+ assert_response :redirect
+ follow_redirect!
+ end
+ end
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_google_failure
+ OmniAuth.config.mock_auth[:google] = :connection_failed
+
+ new_email = "newtester-google2@osm.org"
+ display_name = "new_tester-google2"
+ assert_difference("User.count", 0) do
+ assert_difference("ActionMailer::Base.deliveries.size", 0) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "google", :message => "connection_failed", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ end
+ end
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_google_redirect
+ OmniAuth.config.add_mock(:google, :uid => "123454321", :extra => {
+ :id_info => { "openid_id" => "http://localhost:1123/new.tester" }
+ })
+
+ new_email = "redirect_tester_google@osm.org"
+ display_name = "redirect_tester_google"
+ # nothing special about this page, just need a protected page to redirect back to.
+ referer = "/traces/mine"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post_via_redirect "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }
+ end
+ end
+
+ # Check the e-mail
+ register_email = ActionMailer::Base.deliveries.first
+
+ assert_equal register_email.to[0], new_email
+ # Check that the confirm account url is correct
+ confirm_regex = Regexp.new("/user/redirect_tester_google/confirm\\?confirm_string=([a-zA-Z0-9]*)")
+ register_email.parts.each do |part|
+ assert_match confirm_regex, part.body.to_s
+ end
+ confirm_string = register_email.parts[0].body.match(confirm_regex)[1]
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+
+ # Go to the confirmation page
+ get "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :success
+ assert_template "user/confirm"
+
+ post "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "site/welcome"
+ end
+
+ def test_user_create_facebook_success
+ OmniAuth.config.add_mock(:facebook, :uid => "123454321")
+
+ new_email = "newtester-facebook@osm.org"
+ display_name = "new_tester-facebook"
+ password = "testtest"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password }
+ assert_response :redirect
+ follow_redirect!
+ end
+ end
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_facebook_failure
+ OmniAuth.config.mock_auth[:facebook] = :connection_failed
+
+ new_email = "newtester-facebook2@osm.org"
+ display_name = "new_tester-facebook2"
+ assert_difference("User.count", 0) do
+ assert_difference("ActionMailer::Base.deliveries.size", 0) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "connection_failed", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ end
+ end
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_facebook_redirect
+ OmniAuth.config.add_mock(:facebook, :uid => "123454321")
+
+ new_email = "redirect_tester_facebook@osm.org"
+ display_name = "redirect_tester_facebook"
+ # nothing special about this page, just need a protected page to redirect back to.
+ referer = "/traces/mine"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post_via_redirect "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }
+ end
+ end
+
+ # Check the e-mail
+ register_email = ActionMailer::Base.deliveries.first
+
+ assert_equal register_email.to[0], new_email
+ # Check that the confirm account url is correct
+ confirm_regex = Regexp.new("/user/redirect_tester_facebook/confirm\\?confirm_string=([a-zA-Z0-9]*)")
+ register_email.parts.each do |part|
+ assert_match confirm_regex, part.body.to_s
+ end
+ confirm_string = register_email.parts[0].body.match(confirm_regex)[1]
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+
+ # Go to the confirmation page
+ get "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :success
+ assert_template "user/confirm"
+
+ post "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "site/welcome"
+ end
+
+ def test_user_create_windowslive_success
+ OmniAuth.config.add_mock(:windowslive, :uid => "123454321")
+
+ new_email = "newtester-windowslive@osm.org"
+ display_name = "new_tester-windowslive"
+ password = "testtest"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password }
+ assert_response :redirect
+ follow_redirect!
+ end
+ end
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_windowslive_failure
+ OmniAuth.config.mock_auth[:windowslive] = :connection_failed
+
+ new_email = "newtester-windowslive2@osm.org"
+ display_name = "new_tester-windowslive2"
+ assert_difference("User.count", 0) do
+ assert_difference("ActionMailer::Base.deliveries.size", 0) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" }
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ end
+ end
+
+ ActionMailer::Base.deliveries.clear
+ end
+
+ def test_user_create_windowslive_redirect
+ OmniAuth.config.add_mock(:windowslive, :uid => "123454321")
+
+ new_email = "redirect_tester_windowslive@osm.org"
+ display_name = "redirect_tester_windowslive"
+ # nothing special about this page, just need a protected page to redirect back to.
+ referer = "/traces/mine"
+ assert_difference("User.count") do
+ assert_difference("ActionMailer::Base.deliveries.size", 1) do
+ post "/user/new",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to "/user/terms"
+ post_via_redirect "/user/save",
+ :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" }
+ end
+ end
+
+ # Check the e-mail
+ register_email = ActionMailer::Base.deliveries.first
+
+ assert_equal register_email.to[0], new_email
+ # Check that the confirm account url is correct
+ confirm_regex = Regexp.new("/user/redirect_tester_windowslive/confirm\\?confirm_string=([a-zA-Z0-9]*)")
+ register_email.parts.each do |part|
+ assert_match confirm_regex, part.body.to_s
+ end
+ confirm_string = register_email.parts[0].body.match(confirm_regex)[1]
+
+ # Check the page
+ assert_response :success
+ assert_template "user/confirm"
+
+ ActionMailer::Base.deliveries.clear
+
+ # Go to the confirmation page
+ get "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :success
+ assert_template "user/confirm"
+
+ post "/user/#{display_name}/confirm", :confirm_string => confirm_string
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "site/welcome"
+ end
end
require "test_helper"
class UserLoginTest < ActionDispatch::IntegrationTest
- fixtures :users
+ fixtures :users, :user_blocks
def setup
- openid_setup
+ OmniAuth.config.test_mode = true
+ end
+
+ def teardown
+ OmniAuth.config.mock_auth[:openid] = nil
+ OmniAuth.config.mock_auth[:google] = nil
+ OmniAuth.config.mock_auth[:facebook] = nil
+ OmniAuth.config.mock_auth[:windowslive] = nil
+ OmniAuth.config.test_mode = false
end
def test_login_email_password_normal
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email.upcase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email.upcase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email.titlecase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email.titlecase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email.upcase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email.upcase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.email.titlecase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.email.titlecase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_select "span.username", "test2"
end
+ def test_login_email_password_inactive
+ user = users(:inactive_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email, :password => "test2", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "confirm"
+ end
+
+ def test_login_email_password_inactive_upcase
+ user = users(:inactive_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.upcase, :password => "test2", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "confirm"
+ end
+
+ def test_login_email_password_inactive_titlecase
+ user = users(:inactive_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.titlecase, :password => "test2", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "confirm"
+ end
+
+ def test_login_email_password_suspended
+ user = users(:suspended_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
+ end
+
+ def test_login_email_password_suspended_upcase
+ user = users(:suspended_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
+ end
+
+ def test_login_email_password_suspended_titlecase
+ user = users(:suspended_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
+ end
+
+ def test_login_email_password_blocked
+ user = users(:blocked_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
+
+ def test_login_email_password_blocked_upcase
+ user = users(:blocked_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.upcase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.upcase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
+
+ def test_login_email_password_blocked_titlecase
+ user = users(:blocked_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email.titlecase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.email.titlecase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
+
def test_login_username_password_normal
user = users(:normal_user)
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name.upcase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name.upcase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name.titlecase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name.titlecase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name.upcase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name.upcase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- post "/login", "username" => user.display_name.titlecase, "password" => "wrong", :referer => "/history"
+ post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- post "/login", "username" => user.display_name.titlecase, "password" => "test", :referer => "/history"
+ post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_select "span.username", "test2"
end
- def test_login_openid_success
+ def test_login_username_password_inactive
+ user = users(:inactive_user)
+
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.display_name, :password => "test2", :referer => "/history"
+ assert_response :redirect
follow_redirect!
assert_response :success
- post "/login", "openid_url" => "http://localhost:1123/john.doe?openid.success=true", :referer => "/history"
+ assert_template "confirm"
+ end
+
+ def test_login_username_password_inactive_upcase
+ user = users(:inactive_user)
+
+ get "/login"
assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
- post "/login", openid_request(@response.redirect_url)
+ post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ post "/login", :username => user.display_name.upcase, :password => "test2", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
- assert_template "changeset/history"
- assert_select "span.username", "openIDuser"
+ assert_template "confirm"
end
- def test_login_openid_cancel
+ def test_login_username_password_inactive_titlecase
+ user = users(:inactive_user)
+
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
follow_redirect!
assert_response :success
- post "/login", "openid_url" => "http://localhost:1123/john.doe", :referer => "/diary"
+ assert_template "login"
+
+ post "/login", :username => user.display_name.titlecase, :password => "test2", :referer => "/history"
assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "confirm"
+ end
- post "/login", openid_request(@response.redirect_url)
+ def test_login_username_password_suspended
+ user = users(:suspended_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+ post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- assert_select "span.username", false
+
+ post "/login", :username => user.display_name, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
end
- def test_login_openid_invalid_provider
+ def test_login_username_password_suspended_upcase
+ user = users(:suspended_user)
+
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- # Use a different port that doesn't have the OpenID provider running on to test an invalid openID
- post "/login", "openid_url" => "http://localhost:1124/john.doe", :referer => "/diary"
+
+ post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- assert_select "span.username", false
+
+ post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
end
- def test_login_openid_invalid_url
+ def test_login_username_password_suspended_titlecase
+ user = users(:suspended_user)
+
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
follow_redirect!
assert_response :success
- # Use a url with an invalid protocol to make sure it handles that correctly too
- post "/login", "openid_url" => "htt://localhost:1123/john.doe", :referer => "/diary"
+
+ post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
assert_response :redirect
follow_redirect!
assert_response :success
assert_template "login"
- assert_select "span.username", false
+
+ post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", /your account has been suspended/
end
- def test_login_openid_unknown
+ def test_login_username_password_blocked
+ user = users(:blocked_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.display_name, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
+
+ def test_login_username_password_blocked_upcase
+ user = users(:blocked_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name.upcase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+
+ post "/login", :username => user.display_name.upcase, :password => "test", :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
+
+ def test_login_username_password_blocked_titlecase
+ user = users(:blocked_user)
+
get "/login"
assert_response :redirect
- assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name.titlecase, :password => "wrong", :referer => "/history"
+ assert_response :redirect
follow_redirect!
assert_response :success
- post "/login", "openid_url" => "http://localhost:1123/john.doe?openid.success=true_somethingelse", :referer => "/diary"
+ assert_template "login"
+
+ post "/login", :username => user.display_name.titlecase, :password => "test", :referer => "/history"
assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user_blocks/show"
+ end
- res = openid_request(@response.redirect_url)
- post "/login", res
+ def test_login_email_password_remember_me
+ user = users(:normal_user)
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.email, :password => "test", :remember_me => true, :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "test"
+ assert session.key?(:_remember_for)
+ end
+
+ def test_login_username_password_remember_me
+ user = users(:normal_user)
+
+ get "/login"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true
+ follow_redirect!
+ assert_response :success
+
+ post "/login", :username => user.display_name, :password => "test", :remember_me => true, :referer => "/history"
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "test"
+ assert session.key?(:_remember_for)
+ end
+
+ def test_login_openid_success
+ OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true, :referer => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "openIDuser"
+ end
+
+ def test_login_openid_remember_me
+ OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/john.doe")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true, :referer => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ post "/login", :openid_url => "http://localhost:1123/john.doe", :remember_me_openid => true, :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "openIDuser"
+ assert session.key?(:_remember_for)
+ end
+
+ def test_login_openid_connection_failed
+ OmniAuth.config.mock_auth[:openid] = :connection_failed
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true, :referer => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Connection to authentication provider failed"
+ assert_select "span.username", false
+ end
+
+ def test_login_openid_invalid_credentials
+ OmniAuth.config.mock_auth[:openid] = :invalid_credentials
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true, :referer => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ post "/login", :openid_url => "http://localhost:1123/john.doe", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/john.doe", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "openid", :message => "invalid_credentials", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Invalid authentication credentials"
+ assert_select "span.username", false
+ end
+
+ def test_login_openid_unknown
+ OmniAuth.config.add_mock(:openid, :uid => "http://localhost:1123/fred.bloggs")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to :controller => :user, :action => :login, :cookie_test => true, :referer => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ post "/login", :openid_url => "http://localhost:1123/fred.bloggs", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/fred.bloggs", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ assert_select "span.username", false
+ end
+
+ def test_login_google_success
+ OmniAuth.config.add_mock(:google, :uid => "123456789", :extra => {
+ :id_info => { "openid_id" => "http://localhost:1123/fred.bloggs" }
+ })
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "google", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "googleuser"
+ end
+
+ def test_login_google_connection_failed
+ OmniAuth.config.mock_auth[:google] = :connection_failed
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "google", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "google", :message => "connection_failed", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Connection to authentication provider failed"
+ assert_select "span.username", false
+ end
+
+ def test_login_google_invalid_credentials
+ OmniAuth.config.mock_auth[:google] = :invalid_credentials
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "google", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "google", :message => "invalid_credentials", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Invalid authentication credentials"
+ assert_select "span.username", false
+ end
+
+ def test_login_google_unknown
+ OmniAuth.config.add_mock(:google, :uid => "987654321", :extra => {
+ :id_info => { "openid_id" => "http://localhost:1123/fred.bloggs" }
+ })
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "google", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ assert_select "span.username", false
+ end
+
+ def test_login_google_upgrade
+ OmniAuth.config.add_mock(:google, :uid => "987654321", :extra => {
+ :id_info => { "openid_id" => "http://localhost:1123/john.doe" }
+ })
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "google", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "google")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "openIDuser"
+
+ user = User.find_by_display_name("openIDuser")
+ assert_equal "google", user.auth_provider
+ assert_equal "987654321", user.auth_uid
+ end
+
+ def test_login_facebook_success
+ OmniAuth.config.add_mock(:facebook, :uid => "123456789")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "facebook", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "facebookuser"
+ end
+
+ def test_login_facebook_connection_failed
+ OmniAuth.config.mock_auth[:facebook] = :connection_failed
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "facebook", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "connection_failed", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Connection to authentication provider failed"
+ assert_select "span.username", false
+ end
+
+ def test_login_facebook_invalid_credentials
+ OmniAuth.config.mock_auth[:facebook] = :invalid_credentials
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "facebook", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "invalid_credentials", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Invalid authentication credentials"
+ assert_select "span.username", false
+ end
+
+ def test_login_facebook_unknown
+ OmniAuth.config.add_mock(:facebook, :uid => "987654321")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "facebook", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "facebook")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "user/new"
+ assert_select "span.username", false
+ end
+
+ def test_login_windowslive_success
+ OmniAuth.config.add_mock(:windowslive, :uid => "123456789")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "windowslive", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "changeset/history"
+ assert_select "span.username", "windowsliveuser"
+ end
+
+ def test_login_windowslive_connection_failed
+ OmniAuth.config.mock_auth[:windowslive] = :connection_failed
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "windowslive", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Connection to authentication provider failed"
+ assert_select "span.username", false
+ end
+
+ def test_login_windowslive_invalid_credentials
+ OmniAuth.config.mock_auth[:windowslive] = :invalid_credentials
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "windowslive", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
+ assert_response :redirect
+ assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "invalid_credentials", :origin => "/login")
+ follow_redirect!
+ assert_response :redirect
+ follow_redirect!
+ assert_response :success
+ assert_template "login"
+ assert_select "div.flash.error", "Invalid authentication credentials"
+ assert_select "span.username", false
+ end
+
+ def test_login_windowslive_unknown
+ OmniAuth.config.add_mock(:windowslive, :uid => "987654321")
+
+ get "/login", :referer => "/history"
+ assert_response :redirect
+ assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true", "referer" => "/history"
+ follow_redirect!
+ assert_response :success
+ assert_template "user/login"
+ get auth_path(:provider => "windowslive", :origin => "/login")
+ assert_response :redirect
+ assert_redirected_to auth_success_path(:provider => "windowslive")
+ follow_redirect!
assert_response :redirect
follow_redirect!
assert_response :success
get_via_redirect "/login"
assert_response :success
assert_template "user/login"
- post "/login", "username" => user.email, "password" => "test", :referer => "/"
+ post "/login", :username => user.email, :password => "test", :referer => "/diary/new"
assert_response :redirect
# but now we need to look at the terms
- assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/"
+ assert_redirected_to :controller => :user, :action => :terms, :referer => "/diary/new"
follow_redirect!
assert_response :success
# don't agree to the terms, but hit decline
- post "/user/save", "decline" => "decline", "referer" => "/"
- assert_redirected_to "/"
+ post "/user/save", :decline => true, :referer => "/diary/new"
+ assert_redirected_to "/diary/new"
follow_redirect!
# should be carried through to a normal login with a message
get_via_redirect "/login"
assert_response :success
assert_template "user/login"
- post "/login", "username" => user.email, "password" => "test", :referer => "/"
+ post "/login", :username => user.email, :password => "test", :referer => "/diary/new"
assert_response :redirect
# but now we need to look at the terms
- assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/"
- follow_redirect!
- assert_response :success
+ assert_redirected_to :controller => :user, :action => :terms, :referer => "/diary/new"
# check that if we go somewhere else now, it redirects
# back to the terms page.
get "/traces/mine"
- assert_redirected_to "controller" => "user", "action" => "terms", :referer => "/traces/mine"
+ assert_redirected_to :controller => :user, :action => :terms, :referer => "/traces/mine"
+ get "/traces/mine", :referer => "/diary/new"
+ assert_redirected_to :controller => :user, :action => :terms, :referer => "/diary/new"
end
end
private
def auth_header(user, pass)
- { "HTTP_AUTHORIZATION" => "Basic %s" % Base64.encode64("#{user}:#{pass}") }
+ { "HTTP_AUTHORIZATION" => format("Basic %s", Base64.encode64("#{user}:#{pass}")) }
end
def with_terms_seen(value)
@bad_lat_mixed_bbox = %w(0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33)
@bad_lon_mixed_bbox = %w(80,-0.1,70,0.1 54.34,0.24,54.33,0.25)
@bad_limit_bbox = %w(-180.1,-90,180,90 -180,-90.1,180,90 -180,-90,180.1,90 -180,-90,180,90.1)
- @good_bbox = %w(-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0 -0.1,%20-0.1,%200.1,%200.1
- -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1)
+ @good_bbox = %w(-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0 -0.1,%20-0.1,%200.1,%200.1
+ -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1)
@expand_min_lon_array = %w(2,10,10,10 1,10,10,10 0,10,10,10 -1,10,10,10 -2,10,10,10 -8,10,10,10)
@expand_min_lat_array = %w(10,2,10,10 10,1,10,10 10,0,10,10 10,-1,10,10 10,-2,10,10 10,-8,10,10)
end
end
- def test_bbox_area
+ def test_good_bbox_area
@good_bbox.each do |string|
bbox = BoundingBox.from_s(string)
array = string.split(",")
end
end
+ def test_nil_bbox_area
+ assert_equal 0, @bbox_from_nils.area
+ end
+
def test_complete
assert !@bbox_from_nils.complete?, "should contain a nil"
assert @bbox_from_string.complete?, "should not contain a nil"
end
end
+ def test_html_to_text
+ r = RichText.new("html", "foo <a href='http://example.com/'>bar</a> baz")
+ assert_equal "foo <a href='http://example.com/'>bar</a> baz", r.to_text
+ end
+
+ def test_html_spam_score
+ r = RichText.new("html", "foo <a href='http://example.com/'>bar</a> baz")
+ assert_equal 55, r.spam_score.round
+ end
+
def test_markdown_to_html
r = RichText.new("markdown", "foo http://example.com/ bar")
assert_html r do
end
end
+ def test_markdown_to_text
+ r = RichText.new("markdown", "foo [bar](http://example.com/) baz")
+ assert_equal "foo [bar](http://example.com/) baz", r.to_text
+ end
+
+ def test_markdown_spam_score
+ r = RichText.new("markdown", "foo [bar](http://example.com/) baz")
+ assert_equal 50, r.spam_score.round
+ end
+
def test_text_to_html
r = RichText.new("text", "foo http://example.com/ bar")
assert_html r do
end
end
+ def test_text_to_text
+ r = RichText.new("text", "foo http://example.com/ bar")
+ assert_equal "foo http://example.com/ bar", r.to_text
+ end
+
+ def test_text_spam_score
+ r = RichText.new("text", "foo http://example.com/ bar")
+ assert_equal 141, r.spam_score.round
+ end
+
private
def assert_html(richtext, &block)
message_create = assert_raise(OSM::APIBadXMLError) do
Changeset.from_xml(nocs, true)
end
- assert_match /XML doesn't contain an osm\/changeset element/, message_create.message
+ assert_match %r{XML doesn't contain an osm/changeset element}, message_create.message
message_update = assert_raise(OSM::APIBadXMLError) do
Changeset.from_xml(nocs, false)
end
- assert_match /XML doesn't contain an osm\/changeset element/, message_update.message
+ assert_match %r{XML doesn't contain an osm/changeset element}, message_update.message
end
def test_from_xml_no_k_v
--- /dev/null
+require "test_helper"
+
+class ClientApplicationTest < ActiveSupport::TestCase
+ fixtures :client_applications
+
+ def test_url_valid
+ ok = ["http://example.com/test", "https://example.com/test"]
+ bad = ["", "ftp://example.com/test", "myapp://somewhere"]
+
+ ok.each do |url|
+ app = client_applications(:normal_user_app).dup
+ app.url = url
+ assert app.valid?, "#{url} is invalid, when it should be"
+ end
+
+ bad.each do |url|
+ app = client_applications(:normal_user_app)
+ app.url = url
+ assert !app.valid?, "#{url} is valid when it shouldn't be"
+ end
+ end
+
+ def test_support_url_valid
+ ok = ["", "http://example.com/test", "https://example.com/test"]
+ bad = ["ftp://example.com/test", "myapp://somewhere", "gibberish"]
+
+ ok.each do |url|
+ app = client_applications(:normal_user_app)
+ app.support_url = url
+ assert app.valid?, "#{url} is invalid, when it should be"
+ end
+
+ bad.each do |url|
+ app = client_applications(:normal_user_app)
+ app.support_url = url
+ assert !app.valid?, "#{url} is valid when it shouldn't be"
+ end
+ end
+
+ def test_callback_url_valid
+ ok = ["", "http://example.com/test", "https://example.com/test", "ftp://example.com/test", "myapp://somewhere"]
+ bad = ["gibberish"]
+
+ ok.each do |url|
+ app = client_applications(:normal_user_app)
+ app.callback_url = url
+ assert app.valid?, "#{url} is invalid, when it should be"
+ end
+
+ bad.each do |url|
+ app = client_applications(:normal_user_app)
+ app.callback_url = url
+ assert !app.valid?, "#{url} is valid when it shouldn't be"
+ end
+ end
+end
fixtures :diary_entries, :diary_comments, :languages
def test_diary_entry_count
- assert_equal 5, DiaryEntry.count
+ assert_equal 6, DiaryEntry.count
end
def test_diary_entry_validations
end
def test_diary_entry_visible
- assert_equal 4, DiaryEntry.visible.count
+ assert_equal 5, DiaryEntry.visible.count
assert_raise ActiveRecord::RecordNotFound do
DiaryEntry.visible.find(diary_entries(:deleted_entry).id)
end
+# coding: utf-8
require "test_helper"
class LanguageTest < ActiveSupport::TestCase
- test "language count" do
+ fixtures :languages
+
+ def test_language_count
+ assert_equal 3, Language.count
+ end
+
+ def test_name
+ assert_equal "English (English)", languages(:en).name
+ assert_equal "German (Deutsch)", languages(:de).name
+ assert_equal "Slovenian (slovenščina)", languages(:sl).name
+ end
+
+ def test_load
assert_equal 3, Language.count
+ assert_raise ActiveRecord::RecordNotFound do
+ Language.find("zh")
+ end
+
+ Language.load("config/languages.yml")
+
+ assert_equal 197, Language.count
+ assert_not_nil Language.find("zh")
end
end
def test_invalid_utf8
# See e.g http://en.wikipedia.org/wiki/UTF-8 for byte sequences
- # FIXME - Invalid Unicode characters can still be encoded into "valid" utf-8 byte sequences - maybe check this too?
+ # FIXME: Invalid Unicode characters can still be encoded into "valid" utf-8 byte sequences - maybe check this too?
invalid_sequences = ["\xC0", # always invalid utf8
"\xC2\x4a", # 2-byte multibyte identifier, followed by plain ASCII
"\xC2\xC2", # 2-byte multibyte identifier, followed by another one
message_create = assert_raise(OSM::APIBadXMLError) do
Node.from_xml(no_node, true)
end
- assert_match /XML doesn't contain an osm\/node element/, message_create.message
+ assert_match %r{XML doesn't contain an osm/node element}, message_create.message
message_update = assert_raise(OSM::APIBadXMLError) do
Node.from_xml(no_node, false)
end
- assert_match /XML doesn't contain an osm\/node element/, message_update.message
+ assert_match %r{XML doesn't contain an osm/node element}, message_update.message
end
def test_from_xml_no_k_v
api_fixtures
def test_tag_count
- assert_equal 12, OldRelationTag.count
+ assert_equal 13, OldRelationTag.count
end
def test_length_key_valid
api_fixtures
def test_tag_count
- assert_equal 12, OldWayTag.count
+ assert_equal 13, OldWayTag.count
end
def test_length_key_valid
api_fixtures
def test_relation_tag_count
- assert_equal 9, RelationTag.count
+ assert_equal 10, RelationTag.count
end
def test_length_key_valid
require "test_helper"
+require "digest"
class TraceTest < ActiveSupport::TestCase
api_fixtures
def setup
@gpx_trace_dir = Object.send("remove_const", "GPX_TRACE_DIR")
Object.const_set("GPX_TRACE_DIR", File.dirname(__FILE__) + "/../traces")
+
+ @gpx_image_dir = Object.send("remove_const", "GPX_IMAGE_DIR")
+ Object.const_set("GPX_IMAGE_DIR", File.dirname(__FILE__) + "/../traces")
end
def teardown
Object.send("remove_const", "GPX_TRACE_DIR")
Object.const_set("GPX_TRACE_DIR", @gpx_trace_dir)
+
+ Object.send("remove_const", "GPX_IMAGE_DIR")
+ Object.const_set("GPX_IMAGE_DIR", @gpx_image_dir)
end
def test_trace_count
- assert_equal 5, Trace.count
+ assert_equal 10, Trace.count
end
def test_visible
- check_query(Trace.visible, [:public_trace_file, :anon_trace_file, :trackable_trace_file, :identifiable_trace_file])
+ check_query(Trace.visible, [
+ :public_trace_file, :anon_trace_file, :trackable_trace_file,
+ :identifiable_trace_file, :zipped_trace_file, :tar_trace_file,
+ :tar_gzip_trace_file, :tar_bzip_trace_file, :pending_trace_file
+ ])
end
def test_visible_to
- check_query(Trace.visible_to(1), [:public_trace_file, :identifiable_trace_file])
- check_query(Trace.visible_to(2), [:public_trace_file, :anon_trace_file, :trackable_trace_file, :identifiable_trace_file])
- check_query(Trace.visible_to(3), [:public_trace_file, :identifiable_trace_file])
+ check_query(Trace.visible_to(1), [
+ :public_trace_file, :identifiable_trace_file, :pending_trace_file
+ ])
+ check_query(Trace.visible_to(2), [
+ :public_trace_file, :anon_trace_file, :trackable_trace_file,
+ :identifiable_trace_file, :pending_trace_file
+ ])
+ check_query(Trace.visible_to(3), [
+ :public_trace_file, :identifiable_trace_file, :pending_trace_file
+ ])
end
def test_visible_to_all
- check_query(Trace.visible_to_all, [:public_trace_file, :identifiable_trace_file, :deleted_trace_file])
+ check_query(Trace.visible_to_all, [
+ :public_trace_file, :identifiable_trace_file,
+ :deleted_trace_file, :pending_trace_file
+ ])
end
def test_tagged
end
def test_tagstring
- trace = Trace.new
+ trace = Trace.new(gpx_files(:public_trace_file).attributes)
trace.tagstring = "foo bar baz"
+ assert trace.valid?
assert_equal 3, trace.tags.length
assert_equal "foo", trace.tags[0].tag
assert_equal "bar", trace.tags[1].tag
assert_equal "baz", trace.tags[2].tag
assert_equal "foo, bar, baz", trace.tagstring
trace.tagstring = "foo, bar baz ,qux"
+ assert trace.valid?
assert_equal 3, trace.tags.length
assert_equal "foo", trace.tags[0].tag
assert_equal "bar baz", trace.tags[1].tag
assert_equal "application/gpx+xml", gpx_files(:anon_trace_file).mime_type
assert_equal "application/x-bzip2", gpx_files(:trackable_trace_file).mime_type
assert_equal "application/x-gzip", gpx_files(:identifiable_trace_file).mime_type
+ assert_equal "application/x-zip", gpx_files(:zipped_trace_file).mime_type
+ assert_equal "application/x-tar", gpx_files(:tar_trace_file).mime_type
+ assert_equal "application/x-gzip", gpx_files(:tar_gzip_trace_file).mime_type
+ assert_equal "application/x-bzip2", gpx_files(:tar_bzip_trace_file).mime_type
end
def test_extension_name
assert_equal ".gpx", gpx_files(:anon_trace_file).extension_name
assert_equal ".gpx.bz2", gpx_files(:trackable_trace_file).extension_name
assert_equal ".gpx.gz", gpx_files(:identifiable_trace_file).extension_name
+ assert_equal ".zip", gpx_files(:zipped_trace_file).extension_name
+ assert_equal ".tar", gpx_files(:tar_trace_file).extension_name
+ assert_equal ".tar.gz", gpx_files(:tar_gzip_trace_file).extension_name
+ assert_equal ".tar.bz2", gpx_files(:tar_bzip_trace_file).extension_name
+ end
+
+ def test_xml_file
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:public_trace_file).xml_file)
+ assert_equal "66179ca44f1e93d8df62e2b88cbea732", md5sum(gpx_files(:anon_trace_file).xml_file)
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:trackable_trace_file).xml_file)
+ assert_equal "abd6675fdf3024a84fc0a1deac147c0d", md5sum(gpx_files(:identifiable_trace_file).xml_file)
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:zipped_trace_file).xml_file)
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_trace_file).xml_file)
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_gzip_trace_file).xml_file)
+ assert_equal "848caa72f2f456d1bd6a0fdf228aa1b9", md5sum(gpx_files(:tar_bzip_trace_file).xml_file)
+ end
+
+ def test_large_picture
+ picture = gpx_files(:public_trace_file).large_picture
+ trace = Trace.create
+
+ trace.large_picture = picture
+ assert_equal "7c841749e084ee4a5d13f12cd3bef456", md5sum(File.new(trace.large_picture_name))
+ assert_equal picture, trace.large_picture
+
+ trace.destroy
+ end
+
+ def test_icon_picture
+ picture = gpx_files(:public_trace_file).icon_picture
+ trace = Trace.create
+
+ trace.icon_picture = picture
+ assert_equal "b47baf22ed0e85d77e808694fad0ee27", md5sum(File.new(trace.icon_picture_name))
+ assert_equal picture, trace.icon_picture
+
+ trace.destroy
end
private
def check_query(query, traces)
- traces = traces.map { |t| gpx_files(t) }.sort
- assert_equal traces, query.order(:id)
+ traces = traces.map { |t| gpx_files(t).id }.sort
+ assert_equal traces, query.order(:id).ids
end
def trace_valid(attrs, result = true)
entry.assign_attributes(attrs)
assert_equal result, entry.valid?, "Expected #{attrs.inspect} to be #{result}"
end
+
+ def md5sum(io)
+ io.each_with_object(Digest::MD5.new) { |l, d| d.update(l) }.hexdigest
+ end
end
# This test needs to be updated for every addition/deletion from
# the fixture file
def test_check_count
- assert_equal 2, UserPreference.count
+ assert_equal 4, UserPreference.count
end
# Checks that you cannot add a new preference, that is a duplicate
require "test_helper"
class UserTest < ActiveSupport::TestCase
+ include Rails::Dom::Testing::Assertions::SelectorAssertions
+
api_fixtures
fixtures :friends, :languages, :user_roles
def test_users_nearby
# second user has their data public and is close by normal user
- assert_equal [users(:public_user)], users(:normal_user).nearby
+ assert_equal [users(:public_user), users(:german_user)], users(:normal_user).nearby
# second_user has normal user nearby, but normal user has their data private
- assert_equal [], users(:public_user).nearby
+ assert_equal [users(:german_user)], users(:public_user).nearby
# inactive_user has no user nearby
assert_equal [], users(:inactive_user).nearby
# north_pole_user has no user nearby, and doesn't throw exception
assert_equal [], users(:north_pole_user).nearby
+ # confirmed_user has no home location
+ assert_equal [], users(:confirmed_user).nearby
end
def test_friends_with
# friend.befriender = norm
# friend.befriendee = sec
# friend.save
- assert_equal [sec], norm.nearby
- assert_equal 1, norm.nearby.size
+ assert_equal [sec], norm.friend_users
+ assert_equal 1, norm.friend_users.size
assert_equal 1, Friend.count
assert norm.is_friends_with?(sec)
assert !sec.is_friends_with?(norm)
end
def test_visible
- assert_equal 15, User.visible.count
+ assert_equal 19, User.visible.count
assert_raise ActiveRecord::RecordNotFound do
User.visible.find(users(:suspended_user).id)
end
end
def test_active
- assert_equal 14, User.active.count
+ assert_equal 18, User.active.count
assert_raise ActiveRecord::RecordNotFound do
User.active.find(users(:inactive_user).id)
end
end
def test_identifiable
- assert_equal 16, User.identifiable.count
+ assert_equal 20, User.identifiable.count
assert_raise ActiveRecord::RecordNotFound do
User.identifiable.find(users(:normal_user).id)
end
user.languages = %w(fr de sl)
assert_equal "de", user.preferred_language
assert_equal "de", user.preferred_language_from(%w(en sl de es))
+ user = users(:public_user)
+ assert_equal %w(en de), user.languages
end
def test_visible?
assert_equal false, user.visible?
assert_equal false, user.active?
end
+
+ def test_to_xml
+ user = users(:normal_user)
+ xml = user.to_xml
+ assert_select Nokogiri::XML::Document.parse(xml.to_s), "user" do
+ assert_select "[display_name=?]", user.display_name
+ assert_select "[account_created=?]", user.creation_time.xmlschema
+ assert_select "home[lat=?][lon=?][zoom=?]", user.home_lat.to_s, user.home_lon.to_s, user.home_zoom.to_s
+ end
+ end
+
+ def test_to_xml_node
+ user = users(:normal_user)
+ xml = user.to_xml_node
+ assert_select Nokogiri::XML::DocumentFragment.parse(xml.to_s), "user" do
+ assert_select "[display_name=?]", user.display_name
+ assert_select "[account_created=?]", user.creation_time.xmlschema
+ assert_select "home[lat=?][lon=?][zoom=?]", user.home_lat.to_s, user.home_lon.to_s, user.home_zoom.to_s
+ end
+ end
end
api_fixtures
def test_way_tag_count
- assert_equal 5, WayTag.count
+ assert_equal 6, WayTag.count
end
def test_length_key_valid
assert_equal 3, nodes.count
assert_equal 4, nodes[0].node_id
assert_equal 15, nodes[1].node_id
- assert_equal 6, nodes[2].node_id
+ assert_equal 11, nodes[2].node_id
end
def test_nodes
assert_equal 3, nodes.count
assert_equal 4, nodes[0].id
assert_equal 15, nodes[1].id
- assert_equal 6, nodes[2].id
+ assert_equal 11, nodes[2].id
end
def test_nds
assert_equal 3, nodes.count
assert_equal 4, nodes[0]
assert_equal 15, nodes[1]
- assert_equal 6, nodes[2]
+ assert_equal 11, nodes[2]
end
def test_way_tags
+require "coveralls"
+Coveralls.wear!("rails")
+
ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "rails/test_help"
# Load standard fixtures needed to test API methods
def self.api_fixtures
# print "setting up the api_fixtures"
- fixtures :users, :user_roles, :changesets, :changeset_tags
+ fixtures :users, :user_roles, :user_blocks
+ fixtures :changesets, :changeset_tags, :changeset_comments
fixtures :current_nodes, :nodes
set_fixture_class :current_nodes => Node
assert_equal a.tags, b.tags, "tags on node #{a.id}"
end
+ ##
+ # set request headers for HTTP basic authentication
def basic_authorization(user, pass)
- @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
+ @request.env["HTTP_AUTHORIZATION"] = format("Basic %s", Base64.encode64("#{user}:#{pass}"))
end
+ ##
+ # set request readers to ask for a particular error format
def error_format(format)
@request.env["HTTP_X_ERROR_FORMAT"] = format
end
+ ##
+ # set the raw body to be sent with a POST request
def content(c)
@request.env["RAW_POST_DATA"] = c.to_s
end
+ ##
# Used to check that the error header and the forbidden responses are given
# when the owner of the changset has their data not marked as public
def assert_require_public_data(msg = "Shouldn't be able to use API when the user's data is not public")
assert_equal @response.headers["Error"], "You must make your edits public to upload new data", "Wrong error message"
end
+ ##
# Not sure this is the best response we could give
def assert_inactive_user(msg = "an inactive user shouldn't be able to access the API")
assert_response :unauthorized, msg
# assert_equal @response.headers['Error'], ""
end
+ ##
+ # Check for missing translations in an HTML response
def assert_no_missing_translations(msg = "")
assert_select "span[class=translation_missing]", false, "Missing translation #{msg}"
end
- # Set things up for OpenID testing
- def openid_setup
- Net::HTTP.get_response(URI.parse("http://localhost:1123/"))
- rescue
- # It isn't, so start a new instance.
- rots = IO.popen("#{Rails.root}/vendor/gems/rots-0.2.1/bin/rots --silent")
-
- # Wait for up to 30 seconds for the server to start and respond before continuing
- 1.upto(30).each do
- begin
- sleep 1
- Net::HTTP.get_response(URI.parse("http://localhost:1123/"))
- # If the rescue block doesn't fire, ROTS is up and running and we can continue
- break
- rescue
- # If the connection failed, do nothing and repeat the loop
- next
+ ##
+ # execute a block with a given set of HTTP responses stubbed
+ def with_http_stubs(stubs_file)
+ http_client_save = OSM.http_client
+
+ begin
+ stubs = YAML.load_file(File.expand_path("../http/#{stubs_file}.yml", __FILE__))
+
+ OSM.http_client = Faraday.new do |builder|
+ builder.adapter :test do |stub|
+ stubs.each do |url, body|
+ stub.get(url) { |_env| [200, {}, body] }
+ end
+ end
end
- end
- # Arrange to kill the process when we exit - note that we need
- # to kill it really har due to a bug in ROTS
- Kernel.at_exit do
- Process.kill("KILL", rots.pid)
+ yield
+ ensure
+ OSM.http_client = http_client_save
end
end
-
- def openid_request(openid_request_uri)
- openid_response = Net::HTTP.get_response(URI.parse(openid_request_uri))
- openid_response_uri = URI(openid_response["Location"])
- openid_response_qs = Rack::Utils.parse_query(openid_response_uri.query)
-
- openid_response_qs
- end
-
- # Add more helper methods to be used by all tests here...
end
end
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+ creator="GPSBabel - http://www.gpsbabel.org"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.topografix.com/GPX/1/0"
+ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<time>2009-05-06T13:34:34.000Z</time>
+<bounds minlat="51.3" minlon="-0.56" maxlat="51.3" maxlon="-0.56"/>
+<trk>
+<trkseg>
+<trkpt lat="51.3" lon="-0.56">
+ <time>2009-05-06T13:34:34.000Z</time>
+ <course>112.430000</course>
+ <speed>0.072022</speed>
+ <fix>3d</fix>
+ <sat>4</sat>
+ <hdop>2.400000</hdop>
+ <vdop>2.600000</vdop>
+ <pdop>3.600000</pdop>
+</trkpt>
+</trkseg>
+</trk>
+</gpx>
-/* ============================================================
- * bootstrap-dropdown.js v2.3.2
- * http://getbootstrap.com/2.3.2/javascript.html#dropdowns
- * ============================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function ($) {
-
- "use strict"; // jshint ;_;
-
-
- /* DROPDOWN CLASS DEFINITION
- * ========================= */
-
- var toggle = '[data-toggle=dropdown]'
- , Dropdown = function (element) {
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
- $('html').on('click.dropdown.data-api', function () {
- $el.parent().removeClass('open')
- })
- }
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.3.2
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
- Dropdown.prototype = {
- constructor: Dropdown
++function ($) {
+ 'use strict';
- , toggle: function (e) {
- var $this = $(this)
- , $parent
- , isActive
+ // DROPDOWN CLASS DEFINITION
+ // =========================
+
+ var backdrop = '.dropdown-backdrop'
+ var toggle = '[data-toggle="dropdown"]'
+ var Dropdown = function (element) {
+ $(element).on('click.bs.dropdown', this.toggle)
+ }
+
+ Dropdown.VERSION = '3.3.2'
- if ($this.is('.disabled, :disabled')) return
+ Dropdown.prototype.toggle = function (e) {
+ var $this = $(this)
- $parent = getParent($this)
+ if ($this.is('.disabled, :disabled')) return
- isActive = $parent.hasClass('open')
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
- clearMenus()
+ clearMenus()
- if (!isActive) {
- if ('ontouchstart' in document.documentElement) {
- // if mobile we we use a backdrop because click events don't delegate
- $('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
- }
- $parent.toggleClass('open')
+ if (!isActive) {
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+ // if mobile we use a backdrop because click events don't delegate
+ $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
}
- $this.focus()
+ var relatedTarget = { relatedTarget: this }
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
- return false
- }
+ if (e.isDefaultPrevented()) return
- , keydown: function (e) {
- var $this
- , $items
- , $active
- , $parent
- , isActive
- , index
+ $this
+ .trigger('focus')
+ .attr('aria-expanded', 'true')
- if (!/(38|40|27)/.test(e.keyCode)) return
+ $parent
+ .toggleClass('open')
+ .trigger('shown.bs.dropdown', relatedTarget)
+ }
- $this = $(this)
+ return false
+ }
- e.preventDefault()
- e.stopPropagation()
+ Dropdown.prototype.keydown = function (e) {
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
- if ($this.is('.disabled, :disabled')) return
+ var $this = $(this)
- $parent = getParent($this)
+ e.preventDefault()
+ e.stopPropagation()
- isActive = $parent.hasClass('open')
+ if ($this.is('.disabled, :disabled')) return
- if (!isActive || (isActive && e.keyCode == 27)) {
- if (e.which == 27) $parent.find(toggle).focus()
- return $this.click()
- }
+ var $parent = getParent($this)
+ var isActive = $parent.hasClass('open')
- $items = $('[role=menu] li:not(.divider):visible a', $parent)
+ if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
+ return $this.trigger('click')
+ }
- if (!$items.length) return
+ var desc = ' li:not(.divider):visible a'
+ var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
- index = $items.index($items.filter(':focus'))
+ if (!$items.length) return
- if (e.keyCode == 38 && index > 0) index-- // up
- if (e.keyCode == 40 && index < $items.length - 1) index++ // down
- if (!~index) index = 0
+ var index = $items.index(e.target)
- $items
- .eq(index)
- .focus()
- }
+ if (e.which == 38 && index > 0) index-- // up
+ if (e.which == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+ $items.eq(index).trigger('focus')
}
- function clearMenus() {
- $('.dropdown-backdrop').remove()
+ function clearMenus(e) {
+ if (e && e.which === 3) return
+ $(backdrop).remove()
$(toggle).each(function () {
- getParent($(this)).removeClass('open')
+ var $this = $(this)
+ var $parent = getParent($this)
+ var relatedTarget = { relatedTarget: this }
+
+ if (!$parent.hasClass('open')) return
+
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
+ if (e.isDefaultPrevented()) return
+
+ $this.attr('aria-expanded', 'false')
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
- , $parent
if (!selector) {
selector = $this.attr('href')
- selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
- $parent = selector && $(selector)
-
- if (!$parent || !$parent.length) $parent = $this.parent()
+ var $parent = selector && $(selector)
- return $parent
+ return $parent && $parent.length ? $parent : $this.parent()
}
- /* DROPDOWN PLUGIN DEFINITION
- * ========================== */
+ // DROPDOWN PLUGIN DEFINITION
+ // ==========================
- var old = $.fn.dropdown
-
- $.fn.dropdown = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
- , data = $this.data('dropdown')
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ var data = $this.data('bs.dropdown')
+
+ if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
- /* DROPDOWN NO CONFLICT
- * ==================== */
+ // DROPDOWN NO CONFLICT
+ // ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
}
- /* APPLY TO STANDARD DROPDOWN ELEMENTS
- * =================================== */
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
+ // ===================================
$(document)
- .on('click.dropdown.data-api', clearMenus)
- .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
- .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
- .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
-
-}(window.jQuery);
+ .on('click.bs.dropdown.data-api', clearMenus)
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
+
+}(jQuery);
-/* ===========================================================
- * bootstrap-tooltip.js v2.3.2
- * http://getbootstrap.com/2.3.2/javascript.html#tooltips
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.3.2
+ * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2013 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
+ * ========================================================================
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
-!function ($) {
++function ($) {
+ 'use strict';
- "use strict"; // jshint ;_;
-
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
- * =============================== */
+ // TOOLTIP PUBLIC CLASS DEFINITION
+ // ===============================
var Tooltip = function (element, options) {
+ this.type =
+ this.options =
+ this.enabled =
+ this.timeout =
+ this.hoverState =
+ this.$element = null
+
this.init('tooltip', element, options)
}
- Tooltip.prototype = {
-
- constructor: Tooltip
-
- , init: function (type, element, options) {
- var eventIn
- , eventOut
- , triggers
- , trigger
- , i
-
- this.type = type
- this.$element = $(element)
- this.options = this.getOptions(options)
- this.enabled = true
-
- triggers = this.options.trigger.split(' ')
-
- for (i = triggers.length; i--;) {
- trigger = triggers[i]
- if (trigger == 'click') {
- this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
- } else if (trigger != 'manual') {
- eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
- eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
- this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
- }
- }
-
- this.options.selector ?
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
- this.fixTitle()
+ Tooltip.VERSION = '3.3.2'
+
+ Tooltip.TRANSITION_DURATION = 150
+
+ Tooltip.DEFAULTS = {
+ animation: true,
+ placement: 'top',
+ selector: false,
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+ trigger: 'hover focus',
+ title: '',
+ delay: 0,
+ html: false,
+ container: false,
+ viewport: {
+ selector: 'body',
+ padding: 0
}
+ }
+
+ Tooltip.prototype.init = function (type, element, options) {
+ this.enabled = true
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
- , getOptions: function (options) {
- options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
+ var triggers = this.options.trigger.split(' ')
- if (options.delay && typeof options.delay == 'number') {
- options.delay = {
- show: options.delay
- , hide: options.delay
- }
+ for (var i = triggers.length; i--;) {
+ var trigger = triggers[i]
+
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
}
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ Tooltip.prototype.getDefaults = function () {
+ return Tooltip.DEFAULTS
+ }
- return options
+ Tooltip.prototype.getOptions = function (options) {
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay,
+ hide: options.delay
+ }
}
- , enter: function (e) {
- var defaults = $.fn[this.type].defaults
- , options = {}
- , self
+ return options
+ }
- this._options && $.each(this._options, function (key, value) {
- if (defaults[key] != value) options[key] = value
- }, this)
+ Tooltip.prototype.getDelegateOptions = function () {
+ var options = {}
+ var defaults = this.getDefaults()
- self = $(e.currentTarget)[this.type](options).data(this.type)
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ })
- if (!self.options.delay || !self.options.delay.show) return self.show()
+ return options
+ }
+
+ Tooltip.prototype.enter = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
- clearTimeout(this.timeout)
+ if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
- this.timeout = setTimeout(function() {
- if (self.hoverState == 'in') self.show()
- }, self.options.delay.show)
+ return
+ }
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
}
- , leave: function (e) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+ clearTimeout(self.timeout)
- if (this.timeout) clearTimeout(this.timeout)
- if (!self.options.delay || !self.options.delay.hide) return self.hide()
+ self.hoverState = 'in'
- self.hoverState = 'out'
- this.timeout = setTimeout(function() {
- if (self.hoverState == 'out') self.hide()
- }, self.options.delay.hide)
- }
+ if (!self.options.delay || !self.options.delay.show) return self.show()
- , show: function () {
- var $tip
- , pos
- , actualWidth
- , actualHeight
- , placement
- , tp
- , e = $.Event('show')
-
- if (this.hasContent() && this.enabled) {
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- $tip = this.tip()
- this.setContent()
-
- if (this.options.animation) {
- $tip.addClass('fade')
- }
-
- placement = typeof this.options.placement == 'function' ?
- this.options.placement.call(this, $tip[0], this.$element[0]) :
- this.options.placement
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
- $tip
- .detach()
- .css({ top: 0, left: 0, display: 'block' })
-
- this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
- pos = this.getPosition()
-
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
-
- switch (placement) {
- case 'bottom':
- tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
- break
- case 'top':
- tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
- break
- case 'left':
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
- break
- case 'right':
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
- break
- }
-
- this.applyPlacement(tp, placement)
- this.$element.trigger('shown')
- }
+ Tooltip.prototype.leave = function (obj) {
+ var self = obj instanceof this.constructor ?
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
}
- , applyPlacement: function(offset, placement){
+ clearTimeout(self.timeout)
+
+ self.hoverState = 'out'
+
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.timeout = setTimeout(function () {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ Tooltip.prototype.show = function () {
+ var e = $.Event('show.bs.' + this.type)
+
+ if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+ if (e.isDefaultPrevented() || !inDom) return
+ var that = this
+
var $tip = this.tip()
- , width = $tip[0].offsetWidth
- , height = $tip[0].offsetHeight
- , actualWidth
- , actualHeight
- , delta
- , replace
+
+ var tipId = this.getUID(this.type)
+
+ this.setContent()
+ $tip.attr('id', tipId)
+ this.$element.attr('aria-describedby', tipId)
+
+ if (this.options.animation) $tip.addClass('fade')
+
+ var placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ var autoToken = /\s?auto?\s?/i
+ var autoPlace = autoToken.test(placement)
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
$tip
- .offset(offset)
+ .detach()
+ .css({ top: 0, left: 0, display: 'block' })
.addClass(placement)
- .addClass('in')
+ .data('bs.' + this.type, this)
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
- if (placement == 'top' && actualHeight != height) {
- offset.top = offset.top + height - actualHeight
- replace = true
+ var pos = this.getPosition()
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
+
+ if (autoPlace) {
+ var orgPlacement = placement
+ var $container = this.options.container ? $(this.options.container) : this.$element.parent()
+ var containerDim = this.getPosition($container)
+
+ placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
+ placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
+ placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
+ placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
+ placement
+
+ $tip
+ .removeClass(orgPlacement)
+ .addClass(placement)
}
- if (placement == 'bottom' || placement == 'top') {
- delta = 0
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
- if (offset.left < 0){
- delta = offset.left * -2
- offset.left = 0
- $tip.offset(offset)
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
- }
+ this.applyPlacement(calculatedOffset, placement)
- this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
- } else {
- this.replaceArrow(actualHeight - height, actualHeight, 'top')
+ var complete = function () {
+ var prevHoverState = that.hoverState
+ that.$element.trigger('shown.bs.' + that.type)
+ that.hoverState = null
+
+ if (prevHoverState == 'out') that.leave(that)
}
- if (replace) $tip.offset(offset)
+ $.support.transition && this.$tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
}
+ }
- , replaceArrow: function(delta, dimension, position){
- this
- .arrow()
- .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
- }
+ Tooltip.prototype.applyPlacement = function (offset, placement) {
+ var $tip = this.tip()
+ var width = $tip[0].offsetWidth
+ var height = $tip[0].offsetHeight
+
+ // manually read margins because getBoundingClientRect includes difference
+ var marginTop = parseInt($tip.css('margin-top'), 10)
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+ // we must check for NaN for ie 8/9
+ if (isNaN(marginTop)) marginTop = 0
+ if (isNaN(marginLeft)) marginLeft = 0
+
+ offset.top = offset.top + marginTop
+ offset.left = offset.left + marginLeft
+
+ // $.fn.offset doesn't round pixel values
+ // so we use setOffset directly with our own function B-0
+ $.offset.setOffset($tip[0], $.extend({
+ using: function (props) {
+ $tip.css({
+ top: Math.round(props.top),
+ left: Math.round(props.left)
+ })
+ }
+ }, offset), 0)
- , setContent: function () {
- var $tip = this.tip()
- , title = this.getTitle()
+ $tip.addClass('in')
+
+ // check to see if placing tip in new offset caused the tip to resize itself
+ var actualWidth = $tip[0].offsetWidth
+ var actualHeight = $tip[0].offsetHeight
- $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
- $tip.removeClass('fade in top bottom left right')
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
}
- , hide: function () {
- var that = this
- , $tip = this.tip()
- , e = $.Event('hide')
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
+ if (delta.left) offset.left += delta.left
+ else offset.top += delta.top
- $tip.removeClass('in')
+ var isVertical = /top|bottom/.test(placement)
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
- function removeWithAnimation() {
- var timeout = setTimeout(function () {
- $tip.off($.support.transition.end).detach()
- }, 500)
+ $tip.offset(offset)
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
+ }
- $tip.one($.support.transition.end, function () {
- clearTimeout(timeout)
- $tip.detach()
- })
- }
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
+ this.arrow()
+ .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+ .css(isHorizontal ? 'top' : 'left', '')
+ }
- $.support.transition && this.$tip.hasClass('fade') ?
- removeWithAnimation() :
- $tip.detach()
+ Tooltip.prototype.setContent = function () {
+ var $tip = this.tip()
+ var title = this.getTitle()
- this.$element.trigger('hidden')
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
- return this
+ Tooltip.prototype.hide = function (callback) {
+ var that = this
+ var $tip = this.tip()
+ var e = $.Event('hide.bs.' + this.type)
+
+ function complete() {
+ if (that.hoverState != 'in') $tip.detach()
+ that.$element
+ .removeAttr('aria-describedby')
+ .trigger('hidden.bs.' + that.type)
+ callback && callback()
}
- , fixTitle: function () {
- var $e = this.$element
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
- }
- }
+ this.$element.trigger(e)
- , hasContent: function () {
- return this.getTitle()
- }
+ if (e.isDefaultPrevented()) return
- , getPosition: function () {
- var el = this.$element[0]
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
- width: el.offsetWidth
- , height: el.offsetHeight
- }, this.$element.offset())
- }
+ $tip.removeClass('in')
- , getTitle: function () {
- var title
- , $e = this.$element
- , o = this.options
+ $.support.transition && this.$tip.hasClass('fade') ?
+ $tip
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
+ complete()
- title = $e.attr('data-original-title')
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+ this.hoverState = null
- return title
- }
+ return this
+ }
- , tip: function () {
- return this.$tip = this.$tip || $(this.options.template)
+ Tooltip.prototype.fixTitle = function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
+ }
+
+ Tooltip.prototype.hasContent = function () {
+ return this.getTitle()
+ }
- , arrow: function(){
- return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
+ Tooltip.prototype.getPosition = function ($element) {
+ $element = $element || this.$element
+
+ var el = $element[0]
+ var isBody = el.tagName == 'BODY'
+
+ var elRect = el.getBoundingClientRect()
+ if (elRect.width == null) {
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
}
+ var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
+ }
+
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+ }
- , validate: function () {
- if (!this.$element[0].parentNode) {
- this.hide()
- this.$element = null
- this.options = null
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+ var delta = { top: 0, left: 0 }
+ if (!this.$viewport) return delta
+
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+ var viewportDimensions = this.getPosition(this.$viewport)
+
+ if (/right|left/.test(placement)) {
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
+ delta.top = viewportDimensions.top - topEdgeOffset
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+ }
+ } else {
+ var leftEdgeOffset = pos.left - viewportPadding
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+ delta.left = viewportDimensions.left - leftEdgeOffset
+ } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
}
}
- , enable: function () {
- this.enabled = true
- }
+ return delta
+ }
- , disable: function () {
- this.enabled = false
- }
+ Tooltip.prototype.getTitle = function () {
+ var title
+ var $e = this.$element
+ var o = this.options
- , toggleEnabled: function () {
- this.enabled = !this.enabled
- }
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
- , toggle: function (e) {
- var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
- self.tip().hasClass('in') ? self.hide() : self.show()
- }
+ return title
+ }
+
+ Tooltip.prototype.getUID = function (prefix) {
+ do prefix += ~~(Math.random() * 1000000)
+ while (document.getElementById(prefix))
+ return prefix
+ }
+
+ Tooltip.prototype.tip = function () {
+ return (this.$tip = this.$tip || $(this.options.template))
+ }
+
+ Tooltip.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
+ }
+
+ Tooltip.prototype.enable = function () {
+ this.enabled = true
+ }
- , destroy: function () {
- this.hide().$element.off('.' + this.type).removeData(this.type)
+ Tooltip.prototype.disable = function () {
+ this.enabled = false
+ }
+
+ Tooltip.prototype.toggleEnabled = function () {
+ this.enabled = !this.enabled
+ }
+
+ Tooltip.prototype.toggle = function (e) {
+ var self = this
+ if (e) {
+ self = $(e.currentTarget).data('bs.' + this.type)
+ if (!self) {
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+ $(e.currentTarget).data('bs.' + this.type, self)
+ }
}
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
+ Tooltip.prototype.destroy = function () {
+ var that = this
+ clearTimeout(this.timeout)
+ this.hide(function () {
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
+ })
+ }
- /* TOOLTIP PLUGIN DEFINITION
- * ========================= */
- var old = $.fn.tooltip
+ // TOOLTIP PLUGIN DEFINITION
+ // =========================
- $.fn.tooltip = function ( option ) {
+ function Plugin(option) {
return this.each(function () {
- var $this = $(this)
- , data = $this.data('tooltip')
- , options = typeof option == 'object' && option
- if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ var $this = $(this)
+ var data = $this.data('bs.tooltip')
+ var options = typeof option == 'object' && option
+
+ if (!data && option == 'destroy') return
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
})
}
- $.fn.tooltip.Constructor = Tooltip
+ var old = $.fn.tooltip
- $.fn.tooltip.defaults = {
- animation: true
- , placement: 'top'
- , selector: false
- , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
- , trigger: 'hover focus'
- , title: ''
- , delay: 0
- , html: false
- , container: false
- }
+ $.fn.tooltip = Plugin
+ $.fn.tooltip.Constructor = Tooltip
- /* TOOLTIP NO CONFLICT
- * =================== */
+ // TOOLTIP NO CONFLICT
+ // ===================
$.fn.tooltip.noConflict = function () {
$.fn.tooltip = old
return this
}
-}(window.jQuery);
+}(jQuery);
stroke: #b0e298;
}
+/* barriers */
+
+path.stroke.tag-barrier {
+ stroke: #ddd;
+ stroke-width: 3px;
+ stroke-linecap: round;
+ stroke-dasharray: 15, 5, 1, 5;
+}
+.low-zoom path.stroke.tag-barrier {
+ stroke-width: 2px;
+ stroke-linecap: butt;
+ stroke-dasharray: 8, 2, 2, 2;
+}
/* bridges */
/* Cursors */
+.map-in-map,
#map {
cursor: auto; /* Opera */
cursor: url(<%= asset_path("iD/img/cursor-grab.png") %>) 9 9, auto; /* FF */
}
.mode-add-point #map,
-.lasso #map,
-.lasso .way,
-.lasso .vertex {
+.mode-browse.lasso #map,
+.mode-browse.lasso .way,
+.mode-browse.lasso .vertex,
+.mode-browse.lasso .midpoint,
+.mode-select.lasso #map,
+.mode-select.lasso .way,
+.mode-select.lasso .vertex,
+.mode-select.lasso .midpoint {
cursor: crosshair; /* Opera */
cursor: url(<%= asset_path("iD/img/cursor-draw.png") %>) 9 9, crosshair; /* FF */
}
a:visited, a {
color: #7092ff;
- -webkit-transition: all 100ms;
- -moz-transition: all 100ms;
- -o-transition: all 100ms;
- transition: all 100ms;
}
a:hover {
width: 100%;
border-radius:4px;
text-overflow: ellipsis;
- -webkit-transition: all 200ms;
- -moz-transition: all 200ms;
- -o-transition: all 200ms;
- transition: all 200ms;
}
textarea:focus,
background-color: white;
color: #7092FF;
cursor: pointer;
- -moz-transition: all 100ms;
- -o-transition: all 100ms;
- transition: all 100ms;
}
.toggle-list > label:hover {
color: white;
}
+.fillD2 {
+ background:rgba(0,0,0,.75);
+ color: white;
+}
+
.fl { float: left;}
.fr { float: right;}
display: inline-block;
height:40px;
border-radius:4px;
- /* Crashes Safari: https://github.com/openstreetmap/iD/issues/1188 */
- /*-webkit-transition: all 100ms;*/
- -moz-transition: all 100ms;
- -o-transition: all 100ms;
- transition: all 100ms;
}
button:focus,
border-right: 1px solid rgba(0,0,0,.5);
}
+.fillL .joined button {
+ border-right: 1px solid white;
+}
+
.joined button:first-child {
border-radius:4px 0 0 4px;
}
button.action {
background: #7092ff;
+ color: white;
+}
+
+button[disabled].action,
+button[disabled].action:hover {
+ background: #cccccc;
+ color: #888;
}
button.action:focus,
background: #597BE7;
}
+button.secondary-action {
+ background: #ececec;
+}
+
+button.secondary-action:focus,
+button.secondary-action:hover {
+ background: #cccccc;
+}
+
button.save.has-count {
padding: 9px;
}
button[disabled] .icon.nearby { background-position: -340px -40px;}
button[disabled] .icon.data { background-position: -600px -40px;}
-.icon.point.deleted { background-position: -302px -80px;}
-.icon.line.deleted { background-position: -320px -80px;}
-.icon.area.deleted { background-position: -340px -80px;}
+.icon.point.deleted { background-position: -480px -80px;}
+.icon.line.deleted { background-position: -500px -80px;}
+.icon.area.deleted { background-position: -520px -80px;}
-.icon.point.created { background-position: -302px -100px;}
-.icon.line.created { background-position: -320px -100px;}
-.icon.area.created { background-position: -340px -100px;}
+.icon.point.created { background-position: -480px -100px;}
+.icon.line.created { background-position: -500px -100px;}
+.icon.area.created { background-position: -520px -100px;}
.icon.point.modified { background-position: -22px 0; }
top:0;
right:0;
height:60px;
- z-index: 1;
+ z-index: 9;
min-width: 768px;
}
}
.header h3 {
- text-align: center;
+ text-align: left;
margin-bottom: 0;
white-space: nowrap;
text-overflow: ellipsis;
right: 0;
top: 0;
height: 59px;
- z-index: 3;
+ z-index: 50;
}
.footer {
position: absolute;
bottom: 0;
- padding: 5px 30px 5px 30px;
+ padding: 5px 20px 5px 20px;
border-top: 1px solid #ccc;
background-color: #fafafa;
width: 100%;
float: left;
height: 100%;
overflow: hidden;
- z-index: 2;
+ z-index: 10;
background: #f6f6f6;
}
text-overflow: ellipsis;
overflow: hidden;
border-left: 1px solid rgba(0, 0, 0, .1);
- -moz-transition: all 100ms;
- -o-transition: all 100ms;
- transition: all 100ms;
}
.feature-list-item .label .icon {
text-overflow: ellipsis;
overflow: hidden;
border-left: 1px solid rgba(0, 0, 0, .1);
- -moz-transition: all 100ms;
- -o-transition: all 100ms;
- transition: all 100ms;
border-radius: 0 3px 3px 0;
}
text-align: right;
}
+.form-label-button-wrap .tag-reference-button {
+ border-radius: 0 3px 0 0;
+}
+
.form-label-button-wrap .icon {
opacity: .5;
}
/* Styles for raw tag inspector on hover */
.inspector-hover .tag-row .key-wrap,
-.inspector-hover .tag-row .input-wrap-position {
+.inspector-hover .tag-row .form-field.input-wrap-position {
width: 50%;
}
line-height: 0;
display: block;
overflow: hidden;
- -webkit-transition: opacity 200ms, width 0 200ms, padding 0 200ms, line-height 0 200ms;
- -moz-transition: opacity 200ms, width 0 200ms, padding 0 200ms, line-height 0 200ms;
- -o-transition: opacity 200ms, width 0 200ms, padding 0 200ms, line-height 0 200ms;
- transition: opacity 200ms, width 0 200ms, padding 0 200ms, line-height 0 200ms;
-}
-
-/* first phase hover-to-active animations */
-
-textarea,
-.form-label,
-.preset-input-wrap,
-.preset-input-wrap .label {
- -webkit-transition: all 200ms;
- -moz-transition: all 200ms;
- -o-transition: all 200ms;
- transition: all 200ms;
-}
-
-/* second phase hover-to-active animations */
-
-input,
-.checkselect label:last-of-type {
- -webkit-transition: opacity 200ms 200ms, width 200ms 200ms, margin-right 200ms 200ms;
- -moz-transition: opacity 200ms 200ms, width 200ms 200ms, margin-right 200ms 200ms;
- -o-transition: opacity 200ms 200ms, width 200ms 200ms, margin-right 200ms 200ms;
- transition: opacity 200ms 200ms, width 200ms 200ms, margin-right 200ms 200ms;
-}
-
-.entity-editor-pane button.minor,
-.combobox-caret,
-.entity-editor-pane .header button,
-.toggle-list label span,
-.spin-control,
-.more-fields,
-.view-on-osm,
-.hide-toggle:before,
-.entity-editor-pane .toggle-list label::before,
-.entity-editor-pane .toggle-list label.remove .icon {
- -webkit-transition: opacity 200ms 200ms;
- -moz-transition: opacity 200ms 200ms;
- -o-transition: opacity 200ms 200ms;
- transition: opacity 200ms 200ms;
-}
-
-.entity-editor-pane a.hide-toggle {
- -webkit-transition: padding-left 200ms 200ms, color 200ms 200ms;
- -moz-transition: padding-left 200ms 200ms, color 200ms 200ms;
- -o-transition: padding-left 200ms 200ms, color 200ms 200ms;
- transition: padding-left 200ms 200ms, color 200ms 200ms;
-}
-
-.entity-editor-pane .toggle-list label:not(.active) {
- -webkit-transition: height 200ms 200ms, padding 200ms 200ms, border-width 100ms 300ms;
- -moz-transition: height 200ms 200ms, padding 200ms 200ms, border-width 100ms 300ms;
- -o-transition: height 200ms 200ms, padding 200ms 200ms, border-width 100ms 300ms;
- transition: height 200ms 200ms, padding 200ms 200ms, border-width 100ms 300ms;
-}
-
-.entity-editor-pane .toggle-list label {
- -webkit-transition: border-width 100ms 300ms, padding 200ms 200ms, background-color 200ms 200ms, color 200ms 200ms;
- -moz-transition: border-width 100ms 300ms, padding 200ms 200ms, background-color 200ms 200ms, color 200ms 200ms;
- -o-transition: border-width 100ms 300ms, padding 200ms 200ms, background-color 200ms 200ms, color 200ms 200ms;
- transition: border-width 100ms 300ms, padding 200ms 200ms, background-color 200ms 200ms, color 200ms 200ms;
}
/* adding additional preset fields */
.more-fields {
padding: 0 20px 20px 20px;
font-weight: bold;
- -webkit-transition: padding 200ms 200ms, max-height 200ms 200ms;
- -moz-transition: padding 200ms 200ms, max-height 200ms 200ms;
- -o-transition: padding 200ms 200ms, max-height 200ms 200ms;
- transition: padding 200ms 200ms, max-height 200ms 200ms;
}
.more-fields label { padding: 5px 10px 5px 0; }
width: 40%;
float: left;
height: 30px;
- -webkit-transition: width 200ms;
- -moz-transition: width 200ms;
- -o-transition: width 200ms;
- transition: width 200ms;
}
.tag-row input.key {
bottom: 0;
}
+/* Map-In-Map
+------------------------------------------------------- */
+
+.map-in-map {
+ position: absolute;
+ overflow: hidden;
+ top: 60px;
+ width: 200px;
+ height: 150px;
+ z-index: 5;
+ background: #000;
+ border: #aaa 1px solid;
+ box-shadow: 0 0 2em black;
+}
+
+.map-in-map-tiles {
+ transform-origin:0 0;
+ -ms-transform-origin:0 0;
+ -webkit-transform-origin:0 0;
+ -moz-transform-origin:0 0;
+ -o-transform-origin:0 0;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.map-in-map-svg {
+ position: relative;
+ overflow: hidden;
+ height: 100%;
+ width: 100%;
+}
+
+.map-in-map-bbox {
+ fill: none;
+ stroke: rgba(255, 255, 0, 0.75);
+ stroke-width: 1;
+ shape-rendering: crispEdges;
+}
+
+.map-in-map-bbox.thick {
+ stroke-width: 5;
+}
+
+/* Info Box
+------------------------------------------------------- */
+.infobox {
+ position: absolute;
+ z-index: 1;
+ right: 0;
+ bottom: 30px;
+ width: 240px;
+ border-radius: 4px 0 0 0;
+ border-bottom: 1px solid black;
+}
+
+.infobox .selection-heading {
+ display: block;
+ border-radius: 4px 0 0 0;
+ padding: 5px 10px;
+ height: 30px;
+}
+
+.infobox ul {
+ padding: 5px 10px;
+}
+
+.infobox .button {
+ position: absolute;
+ background: #7092ff;
+ border-radius: 2px;
+ padding: 0 4px;
+ color: white;
+ top: 40px;
+ right: 10px;
+}
+
/* About Section
------------------------------------------------------- */
#attrib {
width: 100%;
height: 20px;
+ margin-bottom: 5px;
float: left;
clear: both;
+ pointer-events: none;
}
+#attrib * { pointer-events: all; }
+
.base-layer-attribution,
.overlay-layer-attribution {
position: absolute;
clear: both;
text-align: right;
width: 100%;
- padding: 0px 5px;
+ padding: 0px 10px;
}
.api-status.offline,
------------------------------------------------------- */
.modal {
+ top: 40px;
display: inline-block;
position:absolute;
+ border-radius: 3px;
+ overflow: hidden;
left: 0;
right: 0;
margin: auto;
- z-index: 3;
+ z-index: 50;
}
.modal .loader {
}
.shaded {
- z-index: 2;
+ z-index: 49;
position: absolute;
top: 0;
bottom: 0;
border-bottom: 1px solid #CCC;
}
-.modal-section:last-child {
- border-bottom: 0;
+.modal-section.header h3 {
+ padding: 0;
+}
+
+.modal-section.buttons {
+ text-align: center;
+}
+
+.modal-section.buttons .action {
+ display: inline-block;
+ margin: 0 10px;
+ text-align: center;
+ vertical-align: middle;
}
.loading-modal {
display: block;
content: '';
height: 100px;
- width: 100px;
+ width: 100%;
+ max-width: 100px;
margin: auto;
margin-bottom: 10px;
background:transparent url(<%= asset_path("iD/img/sprite.svg") %>) no-repeat 0 -220px;
border-right: 1px solid #CCC;
}
+.modal-section:last-child {
+ border-bottom: 0;
+}
+
/* Restore Modal
------------------------------------------------------- */
margin-bottom: 0;
}
-.mode-save button.action {
- float: none;
- margin: auto;
- display: block;
- color: white;
- font-size: 14px;
-}
-
.mode-save .user-info img {
float: left;
}
.changeset-list li:first-child { border-top: 0;}
+/* Conflict resolution
+------------------------------------------------------- */
+
+.conflicts-help {
+ padding: 20px;
+ background-color: #ffffbb;
+ border-bottom: 1px solid #ccc;
+}
+
+.conflicts-buttons {
+ padding: 20px;
+}
+
+.mode-save button.conflicts-button {
+ float: left;
+}
+
+.conflict-container {
+ border-bottom: 1px solid #ccc;
+}
+
+.conflict-description {
+ padding: 5px 20px;
+ display: block;
+}
+
+.conflicts-done {
+ padding: 20px 20px 0 20px;
+}
+
+.conflict-detail-container {
+ padding: 10px 20px;
+}
+
+.conflict-count {
+ padding: 10px 20px;
+}
+
+.conflict-choices {
+ margin-top: 10px;
+}
+
+.conflict-nav-buttons {
+ padding: 10px 0 20px 0;
+}
+
+.conflict-nav-button {
+ height: 30px;
+}
+
/* Notices
------------------------------------------------------- */
}
.tooltip-inner .keyhint {
- font-size: 10px;
- padding: 0 7px;
font-weight: bold;
- display: inline-block;
- border-radius: 2px;
- border: 1px solid #CCC;
- position: relative;
- z-index: 1;
- text-align: left;
-}
-
-.tooltip-inner .keyhint::after {
- content: "";
- position: absolute;
- border-radius: 2px;
- height: 10px;
- width: 100%;
- z-index: 0;
- bottom: -4px;
- left: -1px;
- border: 1px solid #CCC;
- border-top: 0;
}
/* Exceptions for tooltip layouts */
.preset-icon-line.feature-pipeline{background-position:-2300px -25px;}
.preset-icon-relation.feature-relation{background-position:-20px -25px;}
.preset-icon-relation.feature-restriction{background-position:-80px -25px;}
-.preset-icon-relation.feature-multipolygon{background-position:-140px -25px;}
+.preset-icon-relation.feature-multipolygon{background-position:-141px -25px;}
.preset-icon-relation.feature-boundary{background-position:-200px -25px;}
.preset-icon-relation.feature-route{background-position:-260px -25px;}
.preset-icon-relation.feature-route-road{background-position:-320px -25px;}
})(this);
!function(){
- var d3 = {version: "3.4.6"}; // semver
+ var d3 = {version: "3.5.5"}; // semver
d3.ascending = d3_ascending;
function d3_ascending(a, b) {
a,
b;
if (arguments.length === 1) {
- while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined;
+ while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
- while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
a,
b;
if (arguments.length === 1) {
- while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined;
+ while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
- while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
}
return a;
b,
c;
if (arguments.length === 1) {
- while (++i < n && !((a = c = array[i]) != null && a <= a)) a = c = undefined;
+ while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
- while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
+ while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = c = b; break; }
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
return [a, c];
};
+function d3_number(x) {
+ return x === null ? NaN : +x;
+}
+
+function d3_numeric(x) {
+ return !isNaN(x);
+}
+
d3.sum = function(array, f) {
var s = 0,
n = array.length,
a,
i = -1;
-
if (arguments.length === 1) {
- while (++i < n) if (!isNaN(a = +array[i])) s += a;
+ while (++i < n) if (d3_numeric(a = +array[i])) s += a; // zero and null are equivalent
} else {
- while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
+ while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
}
-
return s;
};
-function d3_number(x) {
- return x != null && !isNaN(x);
-}
d3.mean = function(array, f) {
var s = 0,
i = -1,
j = n;
if (arguments.length === 1) {
- while (++i < n) if (d3_number(a = array[i])) s += a; else --j;
+ while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
} else {
- while (++i < n) if (d3_number(a = f.call(array, array[i], i))) s += a; else --j;
+ while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
}
- return j ? s / j : undefined;
+ if (j) return s / j;
};
// R-7 per <http://en.wikipedia.org/wiki/Quantile>
d3.quantile = function(values, p) {
};
d3.median = function(array, f) {
- if (arguments.length > 1) array = array.map(f);
- array = array.filter(d3_number);
- return array.length ? d3.quantile(array.sort(d3_ascending), .5) : undefined;
+ var numbers = [],
+ n = array.length,
+ a,
+ i = -1;
+ if (arguments.length === 1) {
+ while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
+ } else {
+ while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
+ }
+ if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
+};
+
+d3.variance = function(array, f) {
+ var n = array.length,
+ m = 0,
+ a,
+ d,
+ s = 0,
+ i = -1,
+ j = 0;
+ if (arguments.length === 1) {
+ while (++i < n) {
+ if (d3_numeric(a = d3_number(array[i]))) {
+ d = a - m;
+ m += d / ++j;
+ s += d * (a - m);
+ }
+ }
+ } else {
+ while (++i < n) {
+ if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
+ d = a - m;
+ m += d / ++j;
+ s += d * (a - m);
+ }
+ }
+ }
+ if (j > 1) return s / (j - 1);
+};
+
+d3.deviation = function() {
+ var v = d3.variance.apply(this, arguments);
+ return v ? Math.sqrt(v) : v;
};
function d3_bisector(compare) {
? function(d, x) { return d3_ascending(f(d), x); }
: f);
};
-d3.shuffle = function(array) {
- var m = array.length, t, i;
+d3.shuffle = function(array, i0, i1) {
+ if ((m = arguments.length) < 3) { i1 = array.length; if (m < 2) i0 = 0; }
+ var m = i1 - i0, t, i;
while (m) {
i = Math.random() * m-- | 0;
- t = array[m], array[m] = array[i], array[i] = t;
+ t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
}
return array;
};
return k;
}
function d3_class(ctor, properties) {
- try {
- for (var key in properties) {
- Object.defineProperty(ctor.prototype, key, {
- value: properties[key],
- enumerable: false
- });
- }
- } catch (e) {
- ctor.prototype = properties;
+ for (var key in properties) {
+ Object.defineProperty(ctor.prototype, key, {
+ value: properties[key],
+ enumerable: false
+ });
}
}
-d3.map = function(object) {
+d3.map = function(object, f) {
var map = new d3_Map;
- if (object instanceof d3_Map) object.forEach(function(key, value) { map.set(key, value); });
- else for (var key in object) map.set(key, object[key]);
+ if (object instanceof d3_Map) {
+ object.forEach(function(key, value) { map.set(key, value); });
+ } else if (Array.isArray(object)) {
+ var i = -1,
+ n = object.length,
+ o;
+ if (arguments.length === 1) while (++i < n) map.set(i, object[i]);
+ else while (++i < n) map.set(f.call(object, o = object[i], i), o);
+ } else {
+ for (var key in object) map.set(key, object[key]);
+ }
return map;
};
-function d3_Map() {}
+function d3_Map() {
+ this._ = Object.create(null);
+}
+
+var d3_map_proto = "__proto__",
+ d3_map_zero = "\0";
d3_class(d3_Map, {
has: d3_map_has,
get: function(key) {
- return this[d3_map_prefix + key];
+ return this._[d3_map_escape(key)];
},
set: function(key, value) {
- return this[d3_map_prefix + key] = value;
+ return this._[d3_map_escape(key)] = value;
},
remove: d3_map_remove,
keys: d3_map_keys,
values: function() {
var values = [];
- this.forEach(function(key, value) { values.push(value); });
+ for (var key in this._) values.push(this._[key]);
return values;
},
entries: function() {
var entries = [];
- this.forEach(function(key, value) { entries.push({key: key, value: value}); });
+ for (var key in this._) entries.push({key: d3_map_unescape(key), value: this._[key]});
return entries;
},
size: d3_map_size,
empty: d3_map_empty,
forEach: function(f) {
- for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) f.call(this, key.substring(1), this[key]);
+ for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
}
});
-var d3_map_prefix = "\0", // prevent collision with built-ins
- d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
+function d3_map_escape(key) {
+ return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
+}
+
+function d3_map_unescape(key) {
+ return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
+}
function d3_map_has(key) {
- return d3_map_prefix + key in this;
+ return d3_map_escape(key) in this._;
}
function d3_map_remove(key) {
- key = d3_map_prefix + key;
- return key in this && delete this[key];
+ return (key = d3_map_escape(key)) in this._ && delete this._[key];
}
function d3_map_keys() {
var keys = [];
- this.forEach(function(key) { keys.push(key); });
+ for (var key in this._) keys.push(d3_map_unescape(key));
return keys;
}
function d3_map_size() {
var size = 0;
- for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) ++size;
+ for (var key in this._) ++size;
return size;
}
function d3_map_empty() {
- for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) return false;
+ for (var key in this._) return false;
return true;
}
return set;
};
-function d3_Set() {}
+function d3_Set() {
+ this._ = Object.create(null);
+}
d3_class(d3_Set, {
has: d3_map_has,
- add: function(value) {
- this[d3_map_prefix + value] = true;
- return value;
- },
- remove: function(value) {
- value = d3_map_prefix + value;
- return value in this && delete this[value];
+ add: function(key) {
+ this._[d3_map_escape(key += "")] = true;
+ return key;
},
+ remove: d3_map_remove,
values: d3_map_keys,
size: d3_map_size,
empty: d3_map_empty,
forEach: function(f) {
- for (var value in this) if (value.charCodeAt(0) === d3_map_prefixCode) f.call(this, value.substring(1));
+ for (var key in this._) f.call(this, d3_map_unescape(key));
}
});
d3.behavior = {};
-var d3_arraySlice = [].slice,
- d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists
+var d3_document = this.document;
-var d3_document = document,
- d3_documentElement = d3_document.documentElement,
- d3_window = window;
-
-// Redefine d3_array if the browser doesn’t support slice-based conversion.
-try {
- d3_array(d3_documentElement.childNodes)[0].nodeType;
-} catch(e) {
- d3_array = function(list) {
- var i = list.length, array = new Array(i);
- while (i--) array[i] = list[i];
- return array;
- };
+function d3_documentElement(node) {
+ return node
+ && (node.ownerDocument // node is a Node
+ || node.document // node is a Window
+ || node).documentElement; // node is a Document
+}
+
+function d3_window(node) {
+ return node
+ && ((node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
+ || (node.document && node) // node is a Window
+ || node.defaultView); // node is a Document
}
// Copies a variable number of methods from source to target.
d3.rebind = function(target, source) {
return value === source ? target : value;
};
}
-
function d3_vendorSymbol(object, name) {
if (name in object) return name;
- name = name.charAt(0).toUpperCase() + name.substring(1);
+ name = name.charAt(0).toUpperCase() + name.slice(1);
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
var prefixName = d3_vendorPrefixes[i] + name;
if (prefixName in object) return prefixName;
}
var d3_vendorPrefixes = ["webkit", "ms", "moz", "Moz", "o", "O"];
+var d3_arraySlice = [].slice,
+ d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists
function d3_noop() {}
d3.dispatch = function() {
// Extract optional namespace, e.g., "click.foo"
if (i >= 0) {
- name = type.substring(i + 1);
- type = type.substring(0, i);
+ name = type.slice(i + 1);
+ type = type.slice(0, i);
}
if (type) return arguments.length < 2
var d3_select = function(s, n) { return n.querySelector(s); },
d3_selectAll = function(s, n) { return n.querySelectorAll(s); },
- d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")],
- d3_selectMatches = function(n, s) { return d3_selectMatcher.call(n, s); };
+ d3_selectMatches = function(n, s) {
+ var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")];
+ d3_selectMatches = function(n, s) {
+ return d3_selectMatcher.call(n, s);
+ };
+ return d3_selectMatches(n, s);
+ };
// Prefer Sizzle, if available.
if (typeof Sizzle === "function") {
}
d3.selection = function() {
- return d3_selectionRoot;
+ return d3.select(d3_document.documentElement);
};
var d3_selectionPrototype = d3.selection.prototype = [];
var i = name.indexOf(":"),
prefix = name;
if (i >= 0) {
- prefix = name.substring(0, i);
- name = name.substring(i + 1);
+ prefix = name.slice(0, i);
+ name = name.slice(i + 1);
}
return d3_nsPrefix.hasOwnProperty(prefix)
? {space: d3_nsPrefix[prefix], local: name}
}
function d3_selection_classes(name) {
- return name.trim().split(/^|\s+/);
+ return (name + "").trim().split(/^|\s+/);
}
// Multiple class names are allowed (e.g., "foo bar").
}
// For style(string), return the computed style value for the first node.
- if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
+ if (n < 2) {
+ var node = this.node();
+ return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);
+ }
// For style(string, string) or style(string, function), use the default
// priority. The priority is ignored for style(string, null).
};
function d3_selection_creator(name) {
+
+ function create() {
+ var document = this.ownerDocument,
+ namespace = this.namespaceURI;
+ return namespace
+ ? document.createElementNS(namespace, name)
+ : document.createElement(name);
+ }
+
+ function createNS() {
+ return this.ownerDocument.createElementNS(name.space, name.local);
+ }
+
return typeof name === "function" ? name
- : (name = d3.ns.qualify(name)).local ? function() { return this.ownerDocument.createElementNS(name.space, name.local); }
- : function() { return this.ownerDocument.createElementNS(this.namespaceURI, name); };
+ : (name = d3.ns.qualify(name)).local ? createNS
+ : create;
}
d3_selectionPrototype.insert = function(name, before) {
// TODO remove(node)?
// TODO remove(function)?
d3_selectionPrototype.remove = function() {
- return this.each(function() {
- var parent = this.parentNode;
- if (parent) parent.removeChild(this);
- });
+ return this.each(d3_selectionRemove);
};
+function d3_selectionRemove() {
+ var parent = this.parentNode;
+ if (parent) parent.removeChild(this);
+}
+
d3_selectionPrototype.data = function(value, key) {
var i = -1,
n = this.length,
if (key) {
var nodeByKeyValue = new d3_Map,
- dataByKeyValue = new d3_Map,
- keyValues = [],
+ keyValues = new Array(n),
keyValue;
for (i = -1; ++i < n;) {
- keyValue = key.call(node = group[i], node.__data__, i);
- if (nodeByKeyValue.has(keyValue)) {
+ if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
exitNodes[i] = node; // duplicate selection key
} else {
nodeByKeyValue.set(keyValue, node);
}
- keyValues.push(keyValue);
+ keyValues[i] = keyValue;
}
for (i = -1; ++i < m;) {
- keyValue = key.call(groupData, nodeData = groupData[i], i);
- if (node = nodeByKeyValue.get(keyValue)) {
+ if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
+ enterNodes[i] = d3_selection_dataNode(nodeData);
+ } else if (node !== true) { // no duplicate data key
updateNodes[i] = node;
node.__data__ = nodeData;
- } else if (!dataByKeyValue.has(keyValue)) { // no duplicate data key
- enterNodes[i] = d3_selection_dataNode(nodeData);
}
- dataByKeyValue.set(keyValue, nodeData);
- nodeByKeyValue.remove(keyValue);
+ nodeByKeyValue.set(keyValue, true);
}
for (i = -1; ++i < n;) {
- if (nodeByKeyValue.has(keyValues[i])) {
+ if (nodeByKeyValue.get(keyValues[i]) !== true) {
exitNodes[i] = group[i];
}
}
d3_selectionPrototype.size = function() {
var n = 0;
- this.each(function() { ++n; });
+ d3_selection_each(this, function() { ++n; });
return n;
};
};
}
-// import "../transition/transition";
-
-d3_selectionPrototype.transition = function() {
- var id = d3_transitionInheritId || ++d3_transitionId,
- subgroups = [],
- subgroup,
- node,
- transition = d3_transitionInherit || {time: Date.now(), ease: d3_ease_cubicInOut, delay: 0, duration: 250};
-
- for (var j = -1, m = this.length; ++j < m;) {
- subgroups.push(subgroup = []);
- for (var group = this[j], i = -1, n = group.length; ++i < n;) {
- if (node = group[i]) d3_transitionNode(node, i, id, transition);
- subgroup.push(node);
- }
- }
-
- return d3_transition(subgroups, id);
-};
-// import "../transition/transition";
-
-d3_selectionPrototype.interrupt = function() {
- return this.each(d3_selection_interrupt);
-};
-
-function d3_selection_interrupt() {
- var lock = this.__transition__;
- if (lock) ++lock.active;
-}
-
// TODO fast singleton implementation?
d3.select = function(node) {
- var group = [typeof node === "string" ? d3_select(node, d3_document) : node];
- group.parentNode = d3_documentElement;
+ var group;
+ if (typeof node === "string") {
+ group = [d3_select(node, d3_document)];
+ group.parentNode = d3_document.documentElement;
+ } else {
+ group = [node];
+ group.parentNode = d3_documentElement(node);
+ }
return d3_selection([group]);
};
d3.selectAll = function(nodes) {
- var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes);
- group.parentNode = d3_documentElement;
+ var group;
+ if (typeof nodes === "string") {
+ group = d3_array(d3_selectAll(nodes, d3_document));
+ group.parentNode = d3_document.documentElement;
+ } else {
+ group = nodes;
+ group.parentNode = null;
+ }
return d3_selection([group]);
};
-var d3_selectionRoot = d3.select(d3_documentElement);
-
d3_selectionPrototype.on = function(type, listener, capture) {
var n = arguments.length;
if (n < 3) {
i = type.indexOf("."),
wrap = d3_selection_onListener;
- if (i > 0) type = type.substring(0, i);
+ if (i > 0) type = type.slice(0, i);
var filter = d3_selection_onFilters.get(type);
if (filter) type = filter, wrap = d3_selection_onFilter;
mouseleave: "mouseout"
});
-d3_selection_onFilters.forEach(function(k) {
- if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
-});
+if (d3_document) {
+ d3_selection_onFilters.forEach(function(k) {
+ if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
+ });
+}
function d3_selection_onListener(listener, argumentz) {
return function(e) {
};
}
-var d3_event_dragSelect = "onselectstart" in d3_document ? null : d3_vendorSymbol(d3_documentElement.style, "userSelect"),
+var d3_event_dragSelect,
d3_event_dragId = 0;
-function d3_event_dragSuppress() {
+function d3_event_dragSuppress(node) {
var name = ".dragsuppress-" + ++d3_event_dragId,
click = "click" + name,
- w = d3.select(d3_window)
+ w = d3.select(d3_window(node))
.on("touchmove" + name, d3_eventPreventDefault)
.on("dragstart" + name, d3_eventPreventDefault)
.on("selectstart" + name, d3_eventPreventDefault);
+
+ if (d3_event_dragSelect == null) {
+ d3_event_dragSelect = "onselectstart" in node ? false
+ : d3_vendorSymbol(node.style, "userSelect");
+ }
+
if (d3_event_dragSelect) {
- var style = d3_documentElement.style,
+ var style = d3_documentElement(node).style,
select = style[d3_event_dragSelect];
style[d3_event_dragSelect] = "none";
}
+
return function(suppressClick) {
w.on(name, null);
if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
if (suppressClick) { // suppress the next click, but only if it’s immediate
- function off() { w.on(click, null); }
+ var off = function() { w.on(click, null); };
w.on(click, function() { d3_eventCancel(); off(); }, true);
setTimeout(off, 0);
}
return d3_mousePoint(container, d3_eventSource());
};
+// https://bugs.webkit.org/show_bug.cgi?id=44083
+var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
+
function d3_mousePoint(container, e) {
if (e.changedTouches) e = e.changedTouches[0];
var svg = container.ownerSVGElement || container;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
- point.x = e.clientX, point.y = e.clientY;
+ if (d3_mouse_bug44083 < 0) {
+ var window = d3_window(container);
+ if (window.scrollX || window.scrollY) {
+ svg = d3.select("body").append("svg").style({
+ position: "absolute",
+ top: 0,
+ left: 0,
+ margin: 0,
+ padding: 0,
+ border: "none"
+ }, "important");
+ var ctm = svg[0][0].getScreenCTM();
+ d3_mouse_bug44083 = !(ctm.f || ctm.e);
+ svg.remove();
+ }
+ }
+ if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;
+ else point.x = e.clientX, point.y = e.clientY;
point = point.matrixTransform(container.getScreenCTM().inverse());
return [point.x, point.y];
}
return point;
}) : [];
};
-var π = Math.PI,
+var ε = 1e-6,
+ ε2 = ε * ε,
+ π = Math.PI,
τ = 2 * π,
+ τε = τ - ε,
halfπ = π / 2,
- ε = 1e-6,
- ε2 = ε * ε,
d3_radians = π / 180,
d3_degrees = 180 / π;
d3.behavior.zoom = function() {
var view = {x: 0, y: 0, k: 1},
translate0, // translate when we started zooming (to avoid drift)
- center, // desired position of translate0 after zooming
+ center0, // implicit desired position of translate0 after zooming
+ center, // explicit desired position of translate0 after zooming
size = [960, 500], // viewport size; required for zoom interpolation
scaleExtent = d3_behavior_zoomInfinity,
+ duration = 250,
+ zooming = 0,
mousedown = "mousedown.zoom",
mousemove = "mousemove.zoom",
mouseup = "mouseup.zoom",
y0,
y1;
+ // Lazily determine the DOM’s support for Wheel events.
+ // https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel
+ if (!d3_behavior_zoomWheel) {
+ d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); }, "wheel")
+ : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { return d3.event.wheelDelta; }, "mousewheel")
+ : (d3_behavior_zoomDelta = function() { return -d3.event.detail; }, "MozMousePixelScroll");
+ }
+
function zoom(g) {
g .on(mousedown, mousedowned)
.on(d3_behavior_zoomWheel + ".zoom", mousewheeled)
- .on(mousemove, mousewheelreset)
.on("dblclick.zoom", dblclicked)
.on(touchstart, touchstarted);
}
.tween("zoom:zoom", function() {
var dx = size[0],
dy = size[1],
- cx = dx / 2,
- cy = dy / 2,
+ cx = center0 ? center0[0] : dx / 2,
+ cy = center0 ? center0[1] : dy / 2,
i = d3.interpolateZoom(
[(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
[(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
zoomed(dispatch);
};
})
+ .each("interrupt.zoom", function() {
+ zoomended(dispatch);
+ })
.each("end.zoom", function() {
zoomended(dispatch);
});
return zoom;
};
+ zoom.duration = function(_) {
+ if (!arguments.length) return duration;
+ duration = +_; // TODO function based on interpolateZoom distance?
+ return zoom;
+ };
+
zoom.x = function(z) {
if (!arguments.length) return x1;
x1 = z;
view.y += p[1] - l[1];
}
+ function zoomTo(that, p, l, k) {
+ that.__chart__ = {x: view.x, y: view.y, k: view.k};
+
+ scaleTo(Math.pow(2, k));
+ translateTo(center0 = p, l);
+
+ that = d3.select(that);
+ if (duration > 0) that = that.transition().duration(duration);
+ that.call(zoom.event);
+ }
+
function rescale() {
if (x1) x1.domain(x0.range().map(function(x) { return (x - view.x) / view.k; }).map(x0.invert));
if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert));
}
function zoomstarted(dispatch) {
- dispatch({type: "zoomstart"});
+ if (!zooming++) dispatch({type: "zoomstart"});
}
function zoomed(dispatch) {
}
function zoomended(dispatch) {
- dispatch({type: "zoomend"});
+ if (!--zooming) dispatch({type: "zoomend"});
+ center0 = null;
}
function mousedowned() {
target = d3.event.target,
dispatch = event.of(that, arguments),
dragged = 0,
- subject = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended),
+ subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended),
location0 = location(d3.mouse(that)),
- dragRestore = d3_event_dragSuppress();
+ dragRestore = d3_event_dragSuppress(that);
d3_selection_interrupt.call(that);
zoomstarted(dispatch);
}
function ended() {
- subject.on(mousemove, d3_window === that ? mousewheelreset : null).on(mouseup, null);
+ subject.on(mousemove, null).on(mouseup, null);
dragRestore(dragged && d3.event.target === target);
zoomended(dispatch);
}
zoomName = ".zoom-" + d3.event.changedTouches[0].identifier,
touchmove = "touchmove" + zoomName,
touchend = "touchend" + zoomName,
- target = d3.select(d3.event.target).on(touchmove, moved).on(touchend, ended),
- subject = d3.select(that).on(mousedown, null).on(touchstart, started), // prevent duplicate events
- dragRestore = d3_event_dragSuppress();
+ targets = [],
+ subject = d3.select(that),
+ dragRestore = d3_event_dragSuppress(that);
- d3_selection_interrupt.call(that);
started();
zoomstarted(dispatch);
+ // Workaround for Chrome issue 412723: the touchstart listener must be set
+ // after the touchmove listener.
+ subject.on(mousedown, null).on(touchstart, started); // prevent duplicate events
+
// Updates locations of any touches in locations0.
function relocate() {
var touches = d3.touches(that);
// Temporarily override touchstart while gesture is active.
function started() {
- // Only track touches started on the target element.
+
+ // Listen for touchmove and touchend on the target of touchstart.
+ var target = d3.event.target;
+ d3.select(target).on(touchmove, moved).on(touchend, ended);
+ targets.push(target);
+
+ // Only track touches started on the same subject element.
var changed = d3.event.changedTouches;
for (var i = 0, n = changed.length; i < n; ++i) {
locations0[changed[i].identifier] = null;
if (touches.length === 1) {
if (now - touchtime < 500) { // dbltap
- var p = touches[0], l = locations0[p.identifier];
- scaleTo(view.k * 2);
- translateTo(p, l);
+ var p = touches[0];
+ zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
d3_eventPreventDefault();
- zoomed(dispatch);
}
touchtime = now;
} else if (touches.length > 1) {
var touches = d3.touches(that),
p0, l0,
p1, l1;
+
+ d3_selection_interrupt.call(that);
+
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
p1 = touches[i];
if (l1 = locations0[p1.identifier]) {
}
}
// Otherwise, remove touchmove and touchend listeners.
- target.on(zoomName, null);
+ d3.selectAll(targets).on(zoomName, null);
subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
dragRestore();
zoomended(dispatch);
function mousewheeled() {
var dispatch = event.of(this, arguments);
if (mousewheelTimer) clearTimeout(mousewheelTimer);
- else d3_selection_interrupt.call(this), zoomstarted(dispatch);
+ else translate0 = location(center0 = center || d3.mouse(this)), d3_selection_interrupt.call(this), zoomstarted(dispatch);
mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); }, 50);
d3_eventPreventDefault();
- var point = center || d3.mouse(this);
- if (!translate0) translate0 = location(point);
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
- translateTo(point, translate0);
+ translateTo(center0, translate0);
zoomed(dispatch);
}
- function mousewheelreset() {
- translate0 = null;
- }
-
function dblclicked() {
- var dispatch = event.of(this, arguments),
- p = d3.mouse(this),
- l = location(p),
+ var p = d3.mouse(this),
k = Math.log(view.k) / Math.LN2;
- zoomstarted(dispatch);
- scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
- translateTo(p, l);
- zoomed(dispatch);
- zoomended(dispatch);
+
+ zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
}
return d3.rebind(zoom, event, "on");
};
-var d3_behavior_zoomInfinity = [0, Infinity]; // default scale extent
-
-// https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel
-var d3_behavior_zoomDelta, d3_behavior_zoomWheel
- = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); }, "wheel")
- : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { return d3.event.wheelDelta; }, "mousewheel")
- : (d3_behavior_zoomDelta = function() { return -d3.event.detail; }, "MozMousePixelScroll");
+var d3_behavior_zoomInfinity = [0, Infinity], // default scale extent
+ d3_behavior_zoomDelta, // initialized lazily
+ d3_behavior_zoomWheel;
function d3_functor(v) {
return typeof v === "function" ? v : function() { return v; };
}
d3_timer_interval, // is an interval (or frame) active?
d3_timer_timeout, // is a timeout active?
d3_timer_active, // active timer object
- d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); };
+ d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); };
// The timer will continue to fire until callback returns true.
d3.timer = function(callback, delay, then) {
return time;
}
d3.geo = {};
-function d3_identity(d) {
- return d;
-}
-function d3_true() {
- return true;
-}
-
-function d3_geo_spherical(cartesian) {
- return [
- Math.atan2(cartesian[1], cartesian[0]),
- d3_asin(cartesian[2])
- ];
-}
-
-function d3_geo_sphericalEqual(a, b) {
- return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
-}
-
-// General spherical polygon clipping algorithm: takes a polygon, cuts it into
-// visible line segments and rejoins the segments by interpolating along the
-// clip edge.
-function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
- var subject = [],
- clip = [];
-
- segments.forEach(function(segment) {
- if ((n = segment.length - 1) <= 0) return;
- var n, p0 = segment[0], p1 = segment[n];
-
- // If the first and last points of a segment are coincident, then treat as
- // a closed ring.
- // TODO if all rings are closed, then the winding order of the exterior
- // ring should be checked.
- if (d3_geo_sphericalEqual(p0, p1)) {
- listener.lineStart();
- for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
- listener.lineEnd();
- return;
- }
-
- var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),
- b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
- a.o = b;
- subject.push(a);
- clip.push(b);
- a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
- b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
- a.o = b;
- subject.push(a);
- clip.push(b);
- });
- clip.sort(compare);
- d3_geo_clipPolygonLinkCircular(subject);
- d3_geo_clipPolygonLinkCircular(clip);
- if (!subject.length) return;
-
- for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
- clip[i].e = entry = !entry;
- }
-
- var start = subject[0],
- points,
- point;
- while (1) {
- // Find first unvisited intersection.
- var current = start,
- isSubject = true;
- while (current.v) if ((current = current.n) === start) return;
- points = current.z;
- listener.lineStart();
- do {
- current.v = current.o.v = true;
- if (current.e) {
- if (isSubject) {
- for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
- } else {
- interpolate(current.x, current.n.x, 1, listener);
- }
- current = current.n;
- } else {
- if (isSubject) {
- points = current.p.z;
- for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
- } else {
- interpolate(current.x, current.p.x, -1, listener);
- }
- current = current.p;
- }
- current = current.o;
- points = current.z;
- isSubject = !isSubject;
- } while (!current.v);
- listener.lineEnd();
- }
-}
-
-function d3_geo_clipPolygonLinkCircular(array) {
- if (!(n = array.length)) return;
- var n,
- i = 0,
- a = array[0],
- b;
- while (++i < n) {
- a.n = b = array[i];
- b.p = a;
- a = b;
- }
- a.n = b = array[0];
- b.p = a;
-}
-
-function d3_geo_clipPolygonIntersection(point, points, other, entry) {
- this.x = point;
- this.z = points;
- this.o = other; // another intersection
- this.e = entry; // is an entry?
- this.v = false; // visited
- this.n = this.p = null; // next & previous
-}
-
-function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
- return function(rotate, listener) {
- var line = clipLine(listener),
- rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
-
- var clip = {
- point: point,
- lineStart: lineStart,
- lineEnd: lineEnd,
- polygonStart: function() {
- clip.point = pointRing;
- clip.lineStart = ringStart;
- clip.lineEnd = ringEnd;
- segments = [];
- polygon = [];
- },
- polygonEnd: function() {
- clip.point = point;
- clip.lineStart = lineStart;
- clip.lineEnd = lineEnd;
-
- segments = d3.merge(segments);
- var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
- if (segments.length) {
- if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
- d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
- } else if (clipStartInside) {
- if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
- listener.lineStart();
- interpolate(null, null, 1, listener);
- listener.lineEnd();
- }
- if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
- segments = polygon = null;
- },
- sphere: function() {
- listener.polygonStart();
- listener.lineStart();
- interpolate(null, null, 1, listener);
- listener.lineEnd();
- listener.polygonEnd();
- }
- };
-
- function point(λ, φ) {
- var point = rotate(λ, φ);
- if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
- }
- function pointLine(λ, φ) {
- var point = rotate(λ, φ);
- line.point(point[0], point[1]);
- }
- function lineStart() { clip.point = pointLine; line.lineStart(); }
- function lineEnd() { clip.point = point; line.lineEnd(); }
-
- var segments;
-
- var buffer = d3_geo_clipBufferListener(),
- ringListener = clipLine(buffer),
- polygonStarted = false,
- polygon,
- ring;
-
- function pointRing(λ, φ) {
- ring.push([λ, φ]);
- var point = rotate(λ, φ);
- ringListener.point(point[0], point[1]);
- }
-
- function ringStart() {
- ringListener.lineStart();
- ring = [];
- }
-
- function ringEnd() {
- pointRing(ring[0][0], ring[0][1]);
- ringListener.lineEnd();
-
- var clean = ringListener.clean(),
- ringSegments = buffer.buffer(),
- segment,
- n = ringSegments.length;
-
- ring.pop();
- polygon.push(ring);
- ring = null;
-
- if (!n) return;
-
- // No intersections.
- if (clean & 1) {
- segment = ringSegments[0];
- var n = segment.length - 1,
- i = -1,
- point;
- if (n > 0) {
- if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
- listener.lineStart();
- while (++i < n) listener.point((point = segment[i])[0], point[1]);
- listener.lineEnd();
- }
- return;
- }
-
- // Rejoin connected segments.
- // TODO reuse bufferListener.rejoin()?
- if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
-
- segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
- }
-
- return clip;
- };
-}
-
-function d3_geo_clipSegmentLength1(segment) {
- return segment.length > 1;
-}
-
-function d3_geo_clipBufferListener() {
- var lines = [],
- line;
- return {
- lineStart: function() { lines.push(line = []); },
- point: function(λ, φ) { line.push([λ, φ]); },
- lineEnd: d3_noop,
- buffer: function() {
- var buffer = lines;
- lines = [];
- line = null;
- return buffer;
- },
- rejoin: function() {
- if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
- }
- };
-}
-
-// Intersection points are sorted along the clip edge. For both antimeridian
-// cutting and circle clipping, the same comparison is used.
-function d3_geo_clipSort(a, b) {
- return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1])
- - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
-}
-// Adds floating point numbers with twice the normal precision.
-// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
-// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
-// 305–363 (1997).
-// Code adapted from GeographicLib by Charles F. F. Karney,
-// http://geographiclib.sourceforge.net/
-// See lib/geographiclib/LICENSE for details.
-
-function d3_adder() {}
-
-d3_adder.prototype = {
- s: 0, // rounded value
- t: 0, // exact error
- add: function(y) {
- d3_adderSum(y, this.t, d3_adderTemp);
- d3_adderSum(d3_adderTemp.s, this.s, this);
- if (this.s) this.t += d3_adderTemp.t;
- else this.s = d3_adderTemp.t;
- },
- reset: function() {
- this.s = this.t = 0;
- },
- valueOf: function() {
- return this.s;
- }
-};
-
-var d3_adderTemp = new d3_adder;
-
-function d3_adderSum(a, b, o) {
- var x = o.s = a + b, // a + b
- bv = x - a, av = x - bv; // b_virtual & a_virtual
- o.t = (a - av) + (b - bv); // a_roundoff + b_roundoff
-}
d3.geo.stream = function(object, listener) {
if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
listener.polygonEnd();
}
-d3.geo.area = function(object) {
- d3_geo_areaSum = 0;
- d3.geo.stream(object, d3_geo_area);
- return d3_geo_areaSum;
+d3.geo.length = function(object) {
+ d3_geo_lengthSum = 0;
+ d3.geo.stream(object, d3_geo_length);
+ return d3_geo_lengthSum;
};
-var d3_geo_areaSum,
- d3_geo_areaRingSum = new d3_adder;
+var d3_geo_lengthSum;
-var d3_geo_area = {
- sphere: function() { d3_geo_areaSum += 4 * π; },
+var d3_geo_length = {
+ sphere: d3_noop,
point: d3_noop,
- lineStart: d3_noop,
+ lineStart: d3_geo_lengthLineStart,
lineEnd: d3_noop,
-
- // Only count area for polygon rings.
- polygonStart: function() {
- d3_geo_areaRingSum.reset();
- d3_geo_area.lineStart = d3_geo_areaRingStart;
- },
- polygonEnd: function() {
- var area = 2 * d3_geo_areaRingSum;
- d3_geo_areaSum += area < 0 ? 4 * π + area : area;
- d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
- }
+ polygonStart: d3_noop,
+ polygonEnd: d3_noop
};
-function d3_geo_areaRingStart() {
- var λ00, φ00, λ0, cosφ0, sinφ0; // start point and previous point
+function d3_geo_lengthLineStart() {
+ var λ0, sinφ0, cosφ0;
- // For the first point, …
- d3_geo_area.point = function(λ, φ) {
- d3_geo_area.point = nextPoint;
- λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);
+ d3_geo_length.point = function(λ, φ) {
+ λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
+ d3_geo_length.point = nextPoint;
};
- // For subsequent points, …
- function nextPoint(λ, φ) {
- λ *= d3_radians;
- φ = φ * d3_radians / 2 + π / 4; // half the angular distance from south pole
+ d3_geo_length.lineEnd = function() {
+ d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
+ };
- // Spherical excess E for a spherical triangle with vertices: south pole,
- // previous point, current point. Uses a formula derived from Cagnoli’s
- // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
- var dλ = λ - λ0,
- sdλ = dλ >= 0 ? 1 : -1,
- adλ = sdλ * dλ,
+ function nextPoint(λ, φ) {
+ var sinφ = Math.sin(φ *= d3_radians),
cosφ = Math.cos(φ),
- sinφ = Math.sin(φ),
- k = sinφ0 * sinφ,
- u = cosφ0 * cosφ + k * Math.cos(adλ),
- v = k * sdλ * Math.sin(adλ);
- d3_geo_areaRingSum.add(Math.atan2(v, u));
-
- // Advance the previous points.
- λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
+ t = abs((λ *= d3_radians) - λ0),
+ cosΔλ = Math.cos(t);
+ d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
}
-
- // For the last point, return to the start.
- d3_geo_area.lineEnd = function() {
- nextPoint(λ00, φ00);
- };
}
-// TODO
-// cross and scale return new vectors,
-// whereas add and normalize operate in-place
+function d3_identity(d) {
+ return d;
+}
+function d3_true() {
+ return true;
+}
-function d3_geo_cartesian(spherical) {
- var λ = spherical[0],
- φ = spherical[1],
- cosφ = Math.cos(φ);
+function d3_geo_spherical(cartesian) {
return [
- cosφ * Math.cos(λ),
- cosφ * Math.sin(λ),
- Math.sin(φ)
+ Math.atan2(cartesian[1], cartesian[0]),
+ d3_asin(cartesian[2])
];
}
-function d3_geo_cartesianDot(a, b) {
- return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+function d3_geo_sphericalEqual(a, b) {
+ return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
}
-function d3_geo_cartesianCross(a, b) {
- return [
- a[1] * b[2] - a[2] * b[1],
- a[2] * b[0] - a[0] * b[2],
- a[0] * b[1] - a[1] * b[0]
- ];
-}
+// General spherical polygon clipping algorithm: takes a polygon, cuts it into
+// visible line segments and rejoins the segments by interpolating along the
+// clip edge.
+function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
+ var subject = [],
+ clip = [];
-function d3_geo_cartesianAdd(a, b) {
- a[0] += b[0];
- a[1] += b[1];
- a[2] += b[2];
+ segments.forEach(function(segment) {
+ if ((n = segment.length - 1) <= 0) return;
+ var n, p0 = segment[0], p1 = segment[n];
+
+ // If the first and last points of a segment are coincident, then treat as
+ // a closed ring.
+ // TODO if all rings are closed, then the winding order of the exterior
+ // ring should be checked.
+ if (d3_geo_sphericalEqual(p0, p1)) {
+ listener.lineStart();
+ for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
+ listener.lineEnd();
+ return;
+ }
+
+ var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),
+ b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
+ a.o = b;
+ subject.push(a);
+ clip.push(b);
+ a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
+ b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
+ a.o = b;
+ subject.push(a);
+ clip.push(b);
+ });
+ clip.sort(compare);
+ d3_geo_clipPolygonLinkCircular(subject);
+ d3_geo_clipPolygonLinkCircular(clip);
+ if (!subject.length) return;
+
+ for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
+ clip[i].e = entry = !entry;
+ }
+
+ var start = subject[0],
+ points,
+ point;
+ while (1) {
+ // Find first unvisited intersection.
+ var current = start,
+ isSubject = true;
+ while (current.v) if ((current = current.n) === start) return;
+ points = current.z;
+ listener.lineStart();
+ do {
+ current.v = current.o.v = true;
+ if (current.e) {
+ if (isSubject) {
+ for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
+ } else {
+ interpolate(current.x, current.n.x, 1, listener);
+ }
+ current = current.n;
+ } else {
+ if (isSubject) {
+ points = current.p.z;
+ for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
+ } else {
+ interpolate(current.x, current.p.x, -1, listener);
+ }
+ current = current.p;
+ }
+ current = current.o;
+ points = current.z;
+ isSubject = !isSubject;
+ } while (!current.v);
+ listener.lineEnd();
+ }
}
-function d3_geo_cartesianScale(vector, k) {
- return [
- vector[0] * k,
- vector[1] * k,
- vector[2] * k
- ];
+function d3_geo_clipPolygonLinkCircular(array) {
+ if (!(n = array.length)) return;
+ var n,
+ i = 0,
+ a = array[0],
+ b;
+ while (++i < n) {
+ a.n = b = array[i];
+ b.p = a;
+ a = b;
+ }
+ a.n = b = array[0];
+ b.p = a;
}
-function d3_geo_cartesianNormalize(d) {
- var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
- d[0] /= l;
- d[1] /= l;
- d[2] /= l;
+function d3_geo_clipPolygonIntersection(point, points, other, entry) {
+ this.x = point;
+ this.z = points;
+ this.o = other; // another intersection
+ this.e = entry; // is an entry?
+ this.v = false; // visited
+ this.n = this.p = null; // next & previous
}
-function d3_geo_pointInPolygon(point, polygon) {
- var meridian = point[0],
- parallel = point[1],
- meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],
- polarAngle = 0,
- winding = 0;
- d3_geo_areaRingSum.reset();
+function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
+ return function(rotate, listener) {
+ var line = clipLine(listener),
+ rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
- for (var i = 0, n = polygon.length; i < n; ++i) {
- var ring = polygon[i],
- m = ring.length;
- if (!m) continue;
- var point0 = ring[0],
- λ0 = point0[0],
- φ0 = point0[1] / 2 + π / 4,
- sinφ0 = Math.sin(φ0),
- cosφ0 = Math.cos(φ0),
- j = 1;
+ var clip = {
+ point: point,
+ lineStart: lineStart,
+ lineEnd: lineEnd,
+ polygonStart: function() {
+ clip.point = pointRing;
+ clip.lineStart = ringStart;
+ clip.lineEnd = ringEnd;
+ segments = [];
+ polygon = [];
+ },
+ polygonEnd: function() {
+ clip.point = point;
+ clip.lineStart = lineStart;
+ clip.lineEnd = lineEnd;
- while (true) {
- if (j === m) j = 0;
- point = ring[j];
- var λ = point[0],
- φ = point[1] / 2 + π / 4,
- sinφ = Math.sin(φ),
- cosφ = Math.cos(φ),
- dλ = λ - λ0,
- sdλ = dλ >= 0 ? 1 : -1,
- adλ = sdλ * dλ,
- antimeridian = adλ > π,
- k = sinφ0 * sinφ;
- d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
+ segments = d3.merge(segments);
+ var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
+ if (segments.length) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
+ } else if (clipStartInside) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ listener.lineStart();
+ interpolate(null, null, 1, listener);
+ listener.lineEnd();
+ }
+ if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
+ segments = polygon = null;
+ },
+ sphere: function() {
+ listener.polygonStart();
+ listener.lineStart();
+ interpolate(null, null, 1, listener);
+ listener.lineEnd();
+ listener.polygonEnd();
+ }
+ };
- polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
+ function point(λ, φ) {
+ var point = rotate(λ, φ);
+ if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
+ }
+ function pointLine(λ, φ) {
+ var point = rotate(λ, φ);
+ line.point(point[0], point[1]);
+ }
+ function lineStart() { clip.point = pointLine; line.lineStart(); }
+ function lineEnd() { clip.point = point; line.lineEnd(); }
- // Are the longitudes either side of the point's meridian, and are the
- // latitudes smaller than the parallel?
- if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
- var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
- d3_geo_cartesianNormalize(arc);
- var intersection = d3_geo_cartesianCross(meridianNormal, arc);
- d3_geo_cartesianNormalize(intersection);
- var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
- if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
- winding += antimeridian ^ dλ >= 0 ? 1 : -1;
+ var segments;
+
+ var buffer = d3_geo_clipBufferListener(),
+ ringListener = clipLine(buffer),
+ polygonStarted = false,
+ polygon,
+ ring;
+
+ function pointRing(λ, φ) {
+ ring.push([λ, φ]);
+ var point = rotate(λ, φ);
+ ringListener.point(point[0], point[1]);
+ }
+
+ function ringStart() {
+ ringListener.lineStart();
+ ring = [];
+ }
+
+ function ringEnd() {
+ pointRing(ring[0][0], ring[0][1]);
+ ringListener.lineEnd();
+
+ var clean = ringListener.clean(),
+ ringSegments = buffer.buffer(),
+ segment,
+ n = ringSegments.length;
+
+ ring.pop();
+ polygon.push(ring);
+ ring = null;
+
+ if (!n) return;
+
+ // No intersections.
+ if (clean & 1) {
+ segment = ringSegments[0];
+ var n = segment.length - 1,
+ i = -1,
+ point;
+ if (n > 0) {
+ if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
+ listener.lineStart();
+ while (++i < n) listener.point((point = segment[i])[0], point[1]);
+ listener.lineEnd();
}
+ return;
}
- if (!j++) break;
- λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
+
+ // Rejoin connected segments.
+ // TODO reuse bufferListener.rejoin()?
+ if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
+
+ segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
}
- }
- // First, determine whether the South pole is inside or outside:
- //
- // It is inside if:
- // * the polygon winds around it in a clockwise direction.
- // * the polygon does not (cumulatively) wind around it, but has a negative
- // (counter-clockwise) area.
- //
- // Second, count the (signed) number of times a segment crosses a meridian
- // from the point to the South pole. If it is zero, then the point is the
- // same side as the South pole.
+ return clip;
+ };
+}
- return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1);
+function d3_geo_clipSegmentLength1(segment) {
+ return segment.length > 1;
+}
+
+function d3_geo_clipBufferListener() {
+ var lines = [],
+ line;
+ return {
+ lineStart: function() { lines.push(line = []); },
+ point: function(λ, φ) { line.push([λ, φ]); },
+ lineEnd: d3_noop,
+ buffer: function() {
+ var buffer = lines;
+ lines = [];
+ line = null;
+ return buffer;
+ },
+ rejoin: function() {
+ if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
+ }
+ };
+}
+
+// Intersection points are sorted along the clip edge. For both antimeridian
+// cutting and circle clipping, the same comparison is used.
+function d3_geo_clipSort(a, b) {
+ return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1])
+ - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
}
var d3_geo_clipAntimeridian = d3_geo_clip(
listener.point(to[0], to[1]);
}
}
+// TODO
+// cross and scale return new vectors,
+// whereas add and normalize operate in-place
+
+function d3_geo_cartesian(spherical) {
+ var λ = spherical[0],
+ φ = spherical[1],
+ cosφ = Math.cos(φ);
+ return [
+ cosφ * Math.cos(λ),
+ cosφ * Math.sin(λ),
+ Math.sin(φ)
+ ];
+}
+
+function d3_geo_cartesianDot(a, b) {
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+}
+
+function d3_geo_cartesianCross(a, b) {
+ return [
+ a[1] * b[2] - a[2] * b[1],
+ a[2] * b[0] - a[0] * b[2],
+ a[0] * b[1] - a[1] * b[0]
+ ];
+}
+
+function d3_geo_cartesianAdd(a, b) {
+ a[0] += b[0];
+ a[1] += b[1];
+ a[2] += b[2];
+}
+
+function d3_geo_cartesianScale(vector, k) {
+ return [
+ vector[0] * k,
+ vector[1] * k,
+ vector[2] * k
+ ];
+}
+
+function d3_geo_cartesianNormalize(d) {
+ var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
+ d[0] /= l;
+ d[1] /= l;
+ d[2] /= l;
+}
+function d3_geo_compose(a, b) {
+
+ function compose(x, y) {
+ return x = a(x, y), b(x[0], x[1]);
+ }
+
+ if (a.invert && b.invert) compose.invert = function(x, y) {
+ return x = b.invert(x, y), x && a.invert(x[0], x[1]);
+ };
+
+ return compose;
+}
function d3_geo_equirectangular(λ, φ) {
return [λ, φ];
var angle = d3_acos(-a[1]);
return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
}
+// Adds floating point numbers with twice the normal precision.
+// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
+// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
+// 305–363 (1997).
+// Code adapted from GeographicLib by Charles F. F. Karney,
+// http://geographiclib.sourceforge.net/
+// See lib/geographiclib/LICENSE for details.
+
+function d3_adder() {}
+
+d3_adder.prototype = {
+ s: 0, // rounded value
+ t: 0, // exact error
+ add: function(y) {
+ d3_adderSum(y, this.t, d3_adderTemp);
+ d3_adderSum(d3_adderTemp.s, this.s, this);
+ if (this.s) this.t += d3_adderTemp.t;
+ else this.s = d3_adderTemp.t;
+ },
+ reset: function() {
+ this.s = this.t = 0;
+ },
+ valueOf: function() {
+ return this.s;
+ }
+};
+
+var d3_adderTemp = new d3_adder;
+
+function d3_adderSum(a, b, o) {
+ var x = o.s = a + b, // a + b
+ bv = x - a, av = x - bv; // b_virtual & a_virtual
+ o.t = (a - av) + (b - bv); // a_roundoff + b_roundoff
+}
-// Clip features against a small circle centered at [0°, 0°].
-function d3_geo_clipCircle(radius) {
- var cr = Math.cos(radius),
- smallRadius = cr > 0,
- notHemisphere = abs(cr) > ε, // TODO optimise for this common case
- interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
+d3.geo.area = function(object) {
+ d3_geo_areaSum = 0;
+ d3.geo.stream(object, d3_geo_area);
+ return d3_geo_areaSum;
+};
- return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);
+var d3_geo_areaSum,
+ d3_geo_areaRingSum = new d3_adder;
- function visible(λ, φ) {
- return Math.cos(λ) * Math.cos(φ) > cr;
+var d3_geo_area = {
+ sphere: function() { d3_geo_areaSum += 4 * π; },
+ point: d3_noop,
+ lineStart: d3_noop,
+ lineEnd: d3_noop,
+
+ // Only count area for polygon rings.
+ polygonStart: function() {
+ d3_geo_areaRingSum.reset();
+ d3_geo_area.lineStart = d3_geo_areaRingStart;
+ },
+ polygonEnd: function() {
+ var area = 2 * d3_geo_areaRingSum;
+ d3_geo_areaSum += area < 0 ? 4 * π + area : area;
+ d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
}
+};
- // Takes a line and cuts into visible segments. Return values used for
- // polygon clipping:
- // 0: there were intersections or the line was empty.
- // 1: no intersections.
+function d3_geo_areaRingStart() {
+ var λ00, φ00, λ0, cosφ0, sinφ0; // start point and previous point
+
+ // For the first point, …
+ d3_geo_area.point = function(λ, φ) {
+ d3_geo_area.point = nextPoint;
+ λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);
+ };
+
+ // For subsequent points, …
+ function nextPoint(λ, φ) {
+ λ *= d3_radians;
+ φ = φ * d3_radians / 2 + π / 4; // half the angular distance from south pole
+
+ // Spherical excess E for a spherical triangle with vertices: south pole,
+ // previous point, current point. Uses a formula derived from Cagnoli’s
+ // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
+ var dλ = λ - λ0,
+ sdλ = dλ >= 0 ? 1 : -1,
+ adλ = sdλ * dλ,
+ cosφ = Math.cos(φ),
+ sinφ = Math.sin(φ),
+ k = sinφ0 * sinφ,
+ u = cosφ0 * cosφ + k * Math.cos(adλ),
+ v = k * sdλ * Math.sin(adλ);
+ d3_geo_areaRingSum.add(Math.atan2(v, u));
+
+ // Advance the previous points.
+ λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
+ }
+
+ // For the last point, return to the start.
+ d3_geo_area.lineEnd = function() {
+ nextPoint(λ00, φ00);
+ };
+}
+
+function d3_geo_pointInPolygon(point, polygon) {
+ var meridian = point[0],
+ parallel = point[1],
+ meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],
+ polarAngle = 0,
+ winding = 0;
+ d3_geo_areaRingSum.reset();
+
+ for (var i = 0, n = polygon.length; i < n; ++i) {
+ var ring = polygon[i],
+ m = ring.length;
+ if (!m) continue;
+ var point0 = ring[0],
+ λ0 = point0[0],
+ φ0 = point0[1] / 2 + π / 4,
+ sinφ0 = Math.sin(φ0),
+ cosφ0 = Math.cos(φ0),
+ j = 1;
+
+ while (true) {
+ if (j === m) j = 0;
+ point = ring[j];
+ var λ = point[0],
+ φ = point[1] / 2 + π / 4,
+ sinφ = Math.sin(φ),
+ cosφ = Math.cos(φ),
+ dλ = λ - λ0,
+ sdλ = dλ >= 0 ? 1 : -1,
+ adλ = sdλ * dλ,
+ antimeridian = adλ > π,
+ k = sinφ0 * sinφ;
+ d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
+
+ polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
+
+ // Are the longitudes either side of the point's meridian, and are the
+ // latitudes smaller than the parallel?
+ if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
+ var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
+ d3_geo_cartesianNormalize(arc);
+ var intersection = d3_geo_cartesianCross(meridianNormal, arc);
+ d3_geo_cartesianNormalize(intersection);
+ var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
+ if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
+ winding += antimeridian ^ dλ >= 0 ? 1 : -1;
+ }
+ }
+ if (!j++) break;
+ λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
+ }
+ }
+
+ // First, determine whether the South pole is inside or outside:
+ //
+ // It is inside if:
+ // * the polygon winds around it in a clockwise direction.
+ // * the polygon does not (cumulatively) wind around it, but has a negative
+ // (counter-clockwise) area.
+ //
+ // Second, count the (signed) number of times a segment crosses a meridian
+ // from the point to the South pole. If it is zero, then the point is the
+ // same side as the South pole.
+
+ return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1);
+}
+
+// Clip features against a small circle centered at [0°, 0°].
+function d3_geo_clipCircle(radius) {
+ var cr = Math.cos(radius),
+ smallRadius = cr > 0,
+ notHemisphere = abs(cr) > ε, // TODO optimise for this common case
+ interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
+
+ return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);
+
+ function visible(λ, φ) {
+ return Math.cos(λ) * Math.cos(φ) > cr;
+ }
+
+ // Takes a line and cuts into visible segments. Return values used for
+ // polygon clipping:
+ // 0: there were intersections or the line was empty.
+ // 1: no intersections.
// 2: there were intersections, and the first and last segments should be
// rejoined.
function clipLine(listener) {
: b[0] - a[0];
}
}
-function d3_geo_compose(a, b) {
-
- function compose(x, y) {
- return x = a(x, y), b(x[0], x[1]);
- }
-
- if (a.invert && b.invert) compose.invert = function(x, y) {
- return x = b.invert(x, y), x && a.invert(x[0], x[1]);
- };
-
- return compose;
-}
function d3_geo_conic(projectAt) {
var φ0 = 0,
};
function point(x, y) {
- context.moveTo(x, y);
+ context.moveTo(x + pointRadius, y);
context.arc(x, y, pointRadius, 0, τ);
}
}
/**
- * Computes the 2D convex hull of a set of points using Graham's scanning
- * algorithm. The algorithm has been implemented as described in Cormen,
- * Leiserson, and Rivest's Introduction to Algorithms. The running time of
- * this algorithm is O(n log n), where n is the number of input points.
+ * Computes the 2D convex hull of a set of points using the monotone chain
+ * algorithm:
+ * http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain)
*
- * @param vertices [[x1, y1], [x2, y2], …]
- * @returns polygon [[x1, y1], [x2, y2], …]
+ * The runtime of this algorithm is O(n log n), where n is the number of input
+ * points. However in practice it outperforms other O(n log n) hulls.
+ *
+ * @param vertices [[x1, y1], [x2, y2], ...]
+ * @returns polygon [[x1, y1], [x2, y2], ...]
*/
d3.geom.hull = function(vertices) {
var x = d3_geom_pointX,
if (arguments.length) return hull(vertices);
function hull(data) {
+ // Hull of < 3 points is not well-defined
if (data.length < 3) return [];
var fx = d3_functor(x),
fy = d3_functor(y),
+ i,
n = data.length,
- vertices, // TODO use parallel arrays
- plen = n - 1,
- points = [],
- stack = [],
- d,
- i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
-
- if (fx === d3_geom_pointX && y === d3_geom_pointY) vertices = data;
- else for (i = 0, vertices = []; i < n; ++i) {
- vertices.push([+fx.call(this, d = data[i], i), +fy.call(this, d, i)]);
- }
-
- // find the starting ref point: leftmost point with the minimum y coord
- for (i = 1; i < n; ++i) {
- if (vertices[i][1] < vertices[h][1]
- || vertices[i][1] == vertices[h][1]
- && vertices[i][0] < vertices[h][0]) h = i;
- }
-
- // calculate polar angles from ref point and sort
- for (i = 0; i < n; ++i) {
- if (i === h) continue;
- y1 = vertices[i][1] - vertices[h][1];
- x1 = vertices[i][0] - vertices[h][0];
- points.push({angle: Math.atan2(y1, x1), index: i});
- }
- points.sort(function(a, b) { return a.angle - b.angle; });
-
- // toss out duplicate angles
- a = points[0].angle;
- v = points[0].index;
- u = 0;
- for (i = 1; i < plen; ++i) {
- j = points[i].index;
- if (a == points[i].angle) {
- // keep angle for point most distant from the reference
- x1 = vertices[v][0] - vertices[h][0];
- y1 = vertices[v][1] - vertices[h][1];
- x2 = vertices[j][0] - vertices[h][0];
- y2 = vertices[j][1] - vertices[h][1];
- if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
- points[i].index = -1;
- continue;
- } else {
- points[u].index = -1;
- }
- }
- a = points[i].angle;
- u = i;
- v = j;
- }
+ points = [], // of the form [[x0, y0, 0], ..., [xn, yn, n]]
+ flippedPoints = [];
- // initialize the stack
- stack.push(h);
- for (i = 0, j = 0; i < 2; ++j) {
- if (points[j].index > -1) {
- stack.push(points[j].index);
- i++;
- }
+ for (i = 0 ; i < n; i++) {
+ points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);
}
- sp = stack.length;
- // do graham's scan
- for (; j < plen; ++j) {
- if (points[j].index < 0) continue; // skip tossed out points
- while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
- --sp;
- }
- stack[sp++] = points[j].index;
- }
+ // sort ascending by x-coord first, y-coord second
+ points.sort(d3_geom_hullOrder);
+
+ // we flip bottommost points across y axis so we can use the upper hull routine on both
+ for (i = 0; i < n; i++) flippedPoints.push([points[i][0], -points[i][1]]);
+
+ var upper = d3_geom_hullUpper(points),
+ lower = d3_geom_hullUpper(flippedPoints);
+
+ // construct the polygon, removing possible duplicate endpoints
+ var skipLeft = lower[0] === upper[0],
+ skipRight = lower[lower.length - 1] === upper[upper.length - 1],
+ polygon = [];
+
+ // add upper hull in r->l order
+ // then add lower hull in l->r order
+ for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
+ for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
- // construct the hull
- var poly = [];
- for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]);
- return poly;
+ return polygon;
}
hull.x = function(_) {
return hull;
};
-// are three points in counter-clockwise order?
-function d3_geom_hullCCW(i1, i2, i3, v) {
- var t, a, b, c, d, e, f;
- t = v[i1]; a = t[0]; b = t[1];
- t = v[i2]; c = t[0]; d = t[1];
- t = v[i3]; e = t[0]; f = t[1];
- return (f - b) * (c - a) - (d - b) * (e - a) > 0;
-}
-
-var d3_ease_default = function() { return d3_identity; };
-
-var d3_ease = d3.map({
- linear: d3_ease_default,
- poly: d3_ease_poly,
- quad: function() { return d3_ease_quad; },
- cubic: function() { return d3_ease_cubic; },
- sin: function() { return d3_ease_sin; },
- exp: function() { return d3_ease_exp; },
- circle: function() { return d3_ease_circle; },
- elastic: d3_ease_elastic,
- back: d3_ease_back,
- bounce: function() { return d3_ease_bounce; }
-});
-
-var d3_ease_mode = d3.map({
- "in": d3_identity,
- "out": d3_ease_reverse,
- "in-out": d3_ease_reflect,
- "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
-});
-
-d3.ease = function(name) {
- var i = name.indexOf("-"),
- t = i >= 0 ? name.substring(0, i) : name,
- m = i >= 0 ? name.substring(i + 1) : "in";
- t = d3_ease.get(t) || d3_ease_default;
- m = d3_ease_mode.get(m) || d3_identity;
- return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
-};
-
-function d3_ease_clamp(f) {
- return function(t) {
- return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
- };
-}
-
-function d3_ease_reverse(f) {
- return function(t) {
- return 1 - f(1 - t);
- };
-}
-
-function d3_ease_reflect(f) {
- return function(t) {
- return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
- };
-}
+// finds the 'upper convex hull' (see wiki link above)
+// assumes points arg has >=3 elements, is sorted by x, unique in y
+// returns array of indices into points in left to right order
+function d3_geom_hullUpper(points) {
+ var n = points.length,
+ hull = [0, 1],
+ hs = 2; // hull size
-function d3_ease_quad(t) {
- return t * t;
-}
+ for (var i = 2; i < n; i++) {
+ while (hs > 1 && d3_cross2d(points[hull[hs-2]], points[hull[hs-1]], points[i]) <= 0) --hs;
+ hull[hs++] = i;
+ }
-function d3_ease_cubic(t) {
- return t * t * t;
+ // we slice to make sure that the points we 'popped' from hull don't stay behind
+ return hull.slice(0, hs);
}
-// Optimized clamp(reflect(poly(3))).
-function d3_ease_cubicInOut(t) {
- if (t <= 0) return 0;
- if (t >= 1) return 1;
- var t2 = t * t, t3 = t2 * t;
- return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
+// comparator for ascending sort by x-coord first, y-coord second
+function d3_geom_hullOrder(a, b) {
+ return a[0] - b[0] || a[1] - b[1];
}
+// import "../transition/transition";
-function d3_ease_poly(e) {
- return function(t) {
- return Math.pow(t, e);
- };
-}
+d3_selectionPrototype.transition = function(name) {
+ var id = d3_transitionInheritId || ++d3_transitionId,
+ ns = d3_transitionNamespace(name),
+ subgroups = [],
+ subgroup,
+ node,
+ transition = d3_transitionInherit || {time: Date.now(), ease: d3_ease_cubicInOut, delay: 0, duration: 250};
-function d3_ease_sin(t) {
- return 1 - Math.cos(t * halfπ);
-}
+ for (var j = -1, m = this.length; ++j < m;) {
+ subgroups.push(subgroup = []);
+ for (var group = this[j], i = -1, n = group.length; ++i < n;) {
+ if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
+ subgroup.push(node);
+ }
+ }
-function d3_ease_exp(t) {
- return Math.pow(2, 10 * (t - 1));
-}
+ return d3_transition(subgroups, ns, id);
+};
+// import "../transition/transition";
-function d3_ease_circle(t) {
- return 1 - Math.sqrt(1 - t * t);
-}
+// TODO Interrupt transitions for all namespaces?
+d3_selectionPrototype.interrupt = function(name) {
+ return this.each(name == null
+ ? d3_selection_interrupt
+ : d3_selection_interruptNS(d3_transitionNamespace(name)));
+};
-function d3_ease_elastic(a, p) {
- var s;
- if (arguments.length < 2) p = 0.45;
- if (arguments.length) s = p / τ * Math.asin(1 / a);
- else a = 1, s = p / 4;
- return function(t) {
- return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
- };
-}
+var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
-function d3_ease_back(s) {
- if (!s) s = 1.70158;
- return function(t) {
- return t * t * ((s + 1) * t - s);
+function d3_selection_interruptNS(ns) {
+ return function() {
+ var lock, active;
+ if ((lock = this[ns]) && (active = lock[lock.active])) {
+ if (--lock.count) delete lock[lock.active];
+ else delete this[ns];
+ lock.active += .5;
+ active.event && active.event.interrupt.call(this, this.__data__, active.index);
+ }
};
}
-function d3_ease_bounce(t) {
- return t < 1 / 2.75 ? 7.5625 * t * t
- : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
- : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
- : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
-}
-
-function d3_transition(groups, id) {
+function d3_transition(groups, ns, id) {
d3_subclass(groups, d3_transitionPrototype);
- groups.id = id; // Note: read-only!
+ // Note: read-only!
+ groups.namespace = ns;
+ groups.id = id;
return groups;
}
d3_transitionPrototype.node = d3_selectionPrototype.node;
d3_transitionPrototype.size = d3_selectionPrototype.size;
-d3.transition = function(selection) {
- return arguments.length
- ? (d3_transitionInheritId ? selection.transition() : selection)
- : d3_selectionRoot.transition();
+d3.transition = function(selection, name) {
+ return selection && selection.transition
+ ? (d3_transitionInheritId ? selection.transition(name) : selection)
+ : d3.selection().transition(selection);
};
d3.transition.prototype = d3_transitionPrototype;
d3_transitionPrototype.select = function(selector) {
var id = this.id,
+ ns = this.namespace,
subgroups = [],
subgroup,
subnode,
for (var group = this[j], i = -1, n = group.length; ++i < n;) {
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
- d3_transitionNode(subnode, i, id, node.__transition__[id]);
+ d3_transitionNode(subnode, i, ns, id, node[ns][id]);
subgroup.push(subnode);
} else {
subgroup.push(null);
}
}
- return d3_transition(subgroups, id);
+ return d3_transition(subgroups, ns, id);
};
d3_transitionPrototype.selectAll = function(selector) {
var id = this.id,
+ ns = this.namespace,
subgroups = [],
subgroup,
subnodes,
for (var j = -1, m = this.length; ++j < m;) {
for (var group = this[j], i = -1, n = group.length; ++i < n;) {
if (node = group[i]) {
- transition = node.__transition__[id];
+ transition = node[ns][id];
subnodes = selector.call(node, node.__data__, i, j);
subgroups.push(subgroup = []);
for (var k = -1, o = subnodes.length; ++k < o;) {
- if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
+ if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
subgroup.push(subnode);
}
}
}
}
- return d3_transition(subgroups, id);
+ return d3_transition(subgroups, ns, id);
};
d3_transitionPrototype.filter = function(filter) {
}
}
- return d3_transition(subgroups, this.id);
+ return d3_transition(subgroups, this.namespace, this.id);
};
-function d3_Color() {}
+d3.color = d3_color;
-d3_Color.prototype.toString = function() {
+function d3_color() {}
+
+d3_color.prototype.toString = function() {
return this.rgb() + "";
};
-d3.hsl = function(h, s, l) {
- return arguments.length === 1
- ? (h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l)
- : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
- : d3_hsl(+h, +s, +l);
-};
+d3.hsl = d3_hsl;
function d3_hsl(h, s, l) {
- return new d3_Hsl(h, s, l);
-}
-
-function d3_Hsl(h, s, l) {
- this.h = h;
- this.s = s;
- this.l = l;
+ return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
+ : arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
+ : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
+ : new d3_hsl(h, s, l);
}
-var d3_hslPrototype = d3_Hsl.prototype = new d3_Color;
+var d3_hslPrototype = d3_hsl.prototype = new d3_color;
d3_hslPrototype.brighter = function(k) {
k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_hsl(this.h, this.s, this.l / k);
+ return new d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_hsl(this.h, this.s, k * this.l);
+ return new d3_hsl(this.h, this.s, k * this.l);
};
d3_hslPrototype.rgb = function() {
return Math.round(v(h) * 255);
}
- return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
+ return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
-d3.hcl = function(h, c, l) {
- return arguments.length === 1
- ? (h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l)
- : (h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b)
- : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
- : d3_hcl(+h, +c, +l);
-};
+d3.hcl = d3_hcl;
function d3_hcl(h, c, l) {
- return new d3_Hcl(h, c, l);
-}
-
-function d3_Hcl(h, c, l) {
- this.h = h;
- this.c = c;
- this.l = l;
+ return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
+ : arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
+ : (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
+ : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
+ : new d3_hcl(h, c, l);
}
-var d3_hclPrototype = d3_Hcl.prototype = new d3_Color;
+var d3_hclPrototype = d3_hcl.prototype = new d3_color;
d3_hclPrototype.brighter = function(k) {
- return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
+ return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
- return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
+ return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.rgb = function() {
function d3_hcl_lab(h, c, l) {
if (isNaN(h)) h = 0;
if (isNaN(c)) c = 0;
- return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
+ return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
-d3.lab = function(l, a, b) {
- return arguments.length === 1
- ? (l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b)
- : (l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h)
- : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b)))
- : d3_lab(+l, +a, +b);
-};
+d3.lab = d3_lab;
function d3_lab(l, a, b) {
- return new d3_Lab(l, a, b);
-}
-
-function d3_Lab(l, a, b) {
- this.l = l;
- this.a = a;
- this.b = b;
+ return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
+ : arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
+ : (l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l)
+ : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
+ : new d3_lab(l, a, b);
}
// Corresponds roughly to RGB brighter/darker
d3_lab_Y = 1,
d3_lab_Z = 1.088830;
-var d3_labPrototype = d3_Lab.prototype = new d3_Color;
+var d3_labPrototype = d3_lab.prototype = new d3_color;
d3_labPrototype.brighter = function(k) {
- return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+ return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
- return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
+ return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.rgb = function() {
x = d3_lab_xyz(x) * d3_lab_X;
y = d3_lab_xyz(y) * d3_lab_Y;
z = d3_lab_xyz(z) * d3_lab_Z;
- return d3_rgb(
+ return new d3_rgb(
d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
function d3_lab_hcl(l, a, b) {
return l > 0
- ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
- : d3_hcl(NaN, NaN, l);
+ ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
+ : new d3_hcl(NaN, NaN, l);
}
function d3_lab_xyz(x) {
return Math.round(255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));
}
-d3.rgb = function(r, g, b) {
- return arguments.length === 1
- ? (r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b)
+d3.rgb = d3_rgb;
+
+function d3_rgb(r, g, b) {
+ return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b)
+ : arguments.length < 2 ? (r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b)
: d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
- : d3_rgb(~~r, ~~g, ~~b);
-};
+ : new d3_rgb(r, g, b);
+}
function d3_rgbNumber(value) {
- return d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
+ return new d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
}
function d3_rgbString(value) {
return d3_rgbNumber(value) + "";
}
-function d3_rgb(r, g, b) {
- return new d3_Rgb(r, g, b);
-}
-
-function d3_Rgb(r, g, b) {
- this.r = r;
- this.g = g;
- this.b = b;
-}
-
-var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color;
+var d3_rgbPrototype = d3_rgb.prototype = new d3_color;
d3_rgbPrototype.brighter = function(k) {
k = Math.pow(0.7, arguments.length ? k : 1);
g = this.g,
b = this.b,
i = 30;
- if (!r && !g && !b) return d3_rgb(i, i, i);
+ if (!r && !g && !b) return new d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
- return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k)));
+ return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
};
d3_rgbPrototype.darker = function(k) {
k = Math.pow(0.7, arguments.length ? k : 1);
- return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b));
+ return new d3_rgb(k * this.r, k * this.g, k * this.b);
};
d3_rgbPrototype.hsl = function() {
}
/* Named colors. */
- if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b);
+ if (color = d3_rgb_names.get(format.toLowerCase())) {
+ return rgb(color.r, color.g, color.b);
+ }
/* Hexadecimal colors: #rgb and #rrggbb. */
- if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.substring(1), 16))) {
+ if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
if (format.length === 4) {
r = (color & 0xf00) >> 4; r = (r >> 4) | r;
g = (color & 0xf0); g = (g >> 4) | g;
h = NaN;
s = l > 0 && l < 1 ? 0 : h;
}
- return d3_hsl(h, s, l);
+ return new d3_hsl(h, s, l);
}
function d3_rgb_lab(r, g, b) {
plum: 0xdda0dd,
powderblue: 0xb0e0e6,
purple: 0x800080,
+ rebeccapurple: 0x663399,
red: 0xff0000,
rosybrown: 0xbc8f8f,
royalblue: 0x4169e1,
d3.interpolateNumber = d3_interpolateNumber;
function d3_interpolateNumber(a, b) {
- b -= a = +a;
- return function(t) { return a + b * t; };
+ a = +a, b = +b;
+ return function(t) { return a * (1 - t) + b * t; };
}
d3.interpolateString = d3_interpolateString;
while ((am = d3_interpolate_numberA.exec(a))
&& (bm = d3_interpolate_numberB.exec(b))) {
if ((bs = bm.index) > bi) { // a string precedes the next number in b
- bs = b.substring(bi, bs);
+ bs = b.slice(bi, bs);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
// Add remains of b.
if (bi < b.length) {
- bs = b.substring(bi);
+ bs = b.slice(bi);
if (s[i]) s[i] += bs; // coalesce with previous string
else s[++i] = bs;
}
function(a, b) {
var t = typeof b;
return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
- : b instanceof d3_Color ? d3_interpolateRgb
+ : b instanceof d3_color ? d3_interpolateRgb
: Array.isArray(b) ? d3_interpolateArray
: t === "object" && isNaN(b) ? d3_interpolateObject
: d3_interpolateNumber)(a, b);
}
d3_transitionPrototype.tween = function(name, tween) {
- var id = this.id;
- if (arguments.length < 2) return this.node().__transition__[id].tween.get(name);
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
return d3_selection_each(this, tween == null
- ? function(node) { node.__transition__[id].tween.remove(name); }
- : function(node) { node.__transition__[id].tween.set(name, tween); });
+ ? function(node) { node[ns][id].tween.remove(name); }
+ : function(node) { node[ns][id].tween.set(name, tween); });
};
function d3_transition_tween(groups, name, value, tween) {
- var id = groups.id;
+ var id = groups.id, ns = groups.namespace;
return d3_selection_each(groups, typeof value === "function"
- ? function(node, i, j) { node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j))); }
- : (value = tween(value), function(node) { node.__transition__[id].tween.set(name, value); }));
+ ? function(node, i, j) { node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j))); }
+ : (value = tween(value), function(node) { node[ns][id].tween.set(name, value); }));
}
d3_transitionPrototype.attr = function(nameNS, value) {
// Otherwise, a name, value and priority are specified, and handled as below.
function styleString(b) {
return b == null ? styleNull : (b += "", function() {
- var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i;
+ var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;
return a !== b && (i = d3_interpolate(a, b), function(t) { this.style.setProperty(name, i(t), priority); });
});
}
if (arguments.length < 3) priority = "";
function styleTween(d, i) {
- var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name));
+ var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));
return f && function(t) { this.style.setProperty(name, f(t), priority); };
}
}
d3_transitionPrototype.remove = function() {
+ var ns = this.namespace;
return this.each("end.transition", function() {
var p;
- if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this);
+ if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
});
};
+var d3_ease_default = function() { return d3_identity; };
+
+var d3_ease = d3.map({
+ linear: d3_ease_default,
+ poly: d3_ease_poly,
+ quad: function() { return d3_ease_quad; },
+ cubic: function() { return d3_ease_cubic; },
+ sin: function() { return d3_ease_sin; },
+ exp: function() { return d3_ease_exp; },
+ circle: function() { return d3_ease_circle; },
+ elastic: d3_ease_elastic,
+ back: d3_ease_back,
+ bounce: function() { return d3_ease_bounce; }
+});
+
+var d3_ease_mode = d3.map({
+ "in": d3_identity,
+ "out": d3_ease_reverse,
+ "in-out": d3_ease_reflect,
+ "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
+});
+
+d3.ease = function(name) {
+ var i = name.indexOf("-"),
+ t = i >= 0 ? name.slice(0, i) : name,
+ m = i >= 0 ? name.slice(i + 1) : "in";
+ t = d3_ease.get(t) || d3_ease_default;
+ m = d3_ease_mode.get(m) || d3_identity;
+ return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
+};
+
+function d3_ease_clamp(f) {
+ return function(t) {
+ return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
+ };
+}
+
+function d3_ease_reverse(f) {
+ return function(t) {
+ return 1 - f(1 - t);
+ };
+}
+
+function d3_ease_reflect(f) {
+ return function(t) {
+ return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
+ };
+}
+
+function d3_ease_quad(t) {
+ return t * t;
+}
+
+function d3_ease_cubic(t) {
+ return t * t * t;
+}
+
+// Optimized clamp(reflect(poly(3))).
+function d3_ease_cubicInOut(t) {
+ if (t <= 0) return 0;
+ if (t >= 1) return 1;
+ var t2 = t * t, t3 = t2 * t;
+ return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
+}
+
+function d3_ease_poly(e) {
+ return function(t) {
+ return Math.pow(t, e);
+ };
+}
+
+function d3_ease_sin(t) {
+ return 1 - Math.cos(t * halfπ);
+}
+
+function d3_ease_exp(t) {
+ return Math.pow(2, 10 * (t - 1));
+}
+
+function d3_ease_circle(t) {
+ return 1 - Math.sqrt(1 - t * t);
+}
+
+function d3_ease_elastic(a, p) {
+ var s;
+ if (arguments.length < 2) p = 0.45;
+ if (arguments.length) s = p / τ * Math.asin(1 / a);
+ else a = 1, s = p / 4;
+ return function(t) {
+ return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
+ };
+}
+
+function d3_ease_back(s) {
+ if (!s) s = 1.70158;
+ return function(t) {
+ return t * t * ((s + 1) * t - s);
+ };
+}
+
+function d3_ease_bounce(t) {
+ return t < 1 / 2.75 ? 7.5625 * t * t
+ : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
+ : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
+ : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+}
+
d3_transitionPrototype.ease = function(value) {
- var id = this.id;
- if (arguments.length < 1) return this.node().__transition__[id].ease;
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].ease;
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
- return d3_selection_each(this, function(node) { node.__transition__[id].ease = value; });
+ return d3_selection_each(this, function(node) { node[ns][id].ease = value; });
};
d3_transitionPrototype.delay = function(value) {
- var id = this.id;
- if (arguments.length < 1) return this.node().__transition__[id].delay;
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].delay;
return d3_selection_each(this, typeof value === "function"
- ? function(node, i, j) { node.__transition__[id].delay = +value.call(node, node.__data__, i, j); }
- : (value = +value, function(node) { node.__transition__[id].delay = value; }));
+ ? function(node, i, j) { node[ns][id].delay = +value.call(node, node.__data__, i, j); }
+ : (value = +value, function(node) { node[ns][id].delay = value; }));
};
d3_transitionPrototype.duration = function(value) {
- var id = this.id;
- if (arguments.length < 1) return this.node().__transition__[id].duration;
+ var id = this.id, ns = this.namespace;
+ if (arguments.length < 1) return this.node()[ns][id].duration;
return d3_selection_each(this, typeof value === "function"
- ? function(node, i, j) { node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
- : (value = Math.max(1, value), function(node) { node.__transition__[id].duration = value; }));
+ ? function(node, i, j) { node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
+ : (value = Math.max(1, value), function(node) { node[ns][id].duration = value; }));
};
d3_transitionPrototype.each = function(type, listener) {
- var id = this.id;
+ var id = this.id, ns = this.namespace;
if (arguments.length < 2) {
var inherit = d3_transitionInherit,
inheritId = d3_transitionInheritId;
- d3_transitionInheritId = id;
- d3_selection_each(this, function(node, i, j) {
- d3_transitionInherit = node.__transition__[id];
- type.call(node, node.__data__, i, j);
- });
- d3_transitionInherit = inherit;
- d3_transitionInheritId = inheritId;
+ try {
+ d3_transitionInheritId = id;
+ d3_selection_each(this, function(node, i, j) {
+ d3_transitionInherit = node[ns][id];
+ type.call(node, node.__data__, i, j);
+ });
+ } finally {
+ d3_transitionInherit = inherit;
+ d3_transitionInheritId = inheritId;
+ }
} else {
d3_selection_each(this, function(node) {
- var transition = node.__transition__[id];
- (transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
+ var transition = node[ns][id];
+ (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
});
}
return this;
d3_transitionPrototype.transition = function() {
var id0 = this.id,
id1 = ++d3_transitionId,
+ ns = this.namespace,
subgroups = [],
subgroup,
group,
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if (node = group[i]) {
- transition = Object.create(node.__transition__[id0]);
- transition.delay += transition.duration;
- d3_transitionNode(node, i, id1, transition);
+ transition = node[ns][id0];
+ d3_transitionNode(node, i, ns, id1, {time: transition.time, ease: transition.ease, delay: transition.delay + transition.duration, duration: transition.duration});
}
subgroup.push(node);
}
}
- return d3_transition(subgroups, id1);
+ return d3_transition(subgroups, ns, id1);
};
-function d3_transitionNode(node, i, id, inherit) {
- var lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0}),
+function d3_transitionNamespace(name) {
+ return name == null ? "__transition__" : "__transition_" + name + "__";
+}
+
+function d3_transitionNode(node, i, ns, id, inherit) {
+ var lock = node[ns] || (node[ns] = {active: 0, count: 0}),
transition = lock[id];
if (!transition) {
transition = lock[id] = {
tween: new d3_Map,
time: time,
- ease: inherit.ease,
delay: inherit.delay,
- duration: inherit.duration
+ duration: inherit.duration,
+ ease: inherit.ease,
+ index: i
};
+ inherit = null; // allow gc
+
++lock.count;
d3.timer(function(elapsed) {
- var d = node.__data__,
- ease = transition.ease,
- delay = transition.delay,
- duration = transition.duration,
+ var delay = transition.delay,
+ duration,
+ ease,
timer = d3_timer_active,
tweened = [];
function start(elapsed) {
if (lock.active > id) return stop();
+
+ var active = lock[lock.active];
+ if (active) {
+ --lock.count;
+ delete lock[lock.active];
+ active.event && active.event.interrupt.call(node, node.__data__, active.index);
+ }
+
lock.active = id;
- transition.event && transition.event.start.call(node, d, i);
+
+ transition.event && transition.event.start.call(node, node.__data__, i);
transition.tween.forEach(function(key, value) {
- if (value = value.call(node, d, i)) {
+ if (value = value.call(node, node.__data__, i)) {
tweened.push(value);
}
});
+ // Deferred capture to allow tweens to initialize ease & duration.
+ ease = transition.ease;
+ duration = transition.duration;
+
d3.timer(function() { // defer to end of current frame
timer.c = tick(elapsed || 1) ? d3_true : tick;
return 1;
}
function tick(elapsed) {
- if (lock.active !== id) return stop();
+ if (lock.active !== id) return 1;
var t = elapsed / duration,
e = ease(t),
}
if (t >= 1) {
- transition.event && transition.event.end.call(node, d, i);
+ transition.event && transition.event.end.call(node, node.__data__, i);
return stop();
}
}
function stop() {
if (--lock.count) delete lock[id];
- else delete node.__transition__;
+ else delete node[ns];
return 1;
}
}, 0, time);
responseType = null;
// If IE does not support CORS, use XDomainRequest.
- if (d3_window.XDomainRequest
+ if (this.XDomainRequest
&& !("withCredentials" in request)
&& /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest;
function respond() {
var status = request.status, result;
- if (!status && request.responseText || status >= 200 && status < 300 || status === 304) {
+ if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
try {
result = response.call(xhr, request);
} catch (e) {
: callback;
}
+function d3_xhrHasResponse(request) {
+ var type = request.responseType;
+ return type && type !== "text"
+ ? request.response // null on error
+ : request.responseText; // "" on error
+}
+
d3.text = d3_xhrType(function(request) {
return request.responseText;
});
d3.xml = d3_xhrType(function(request) {
return request.responseXML;
});
- if (typeof define === "function" && define.amd) {
- define(d3);
- } else if (typeof module === "object" && module.exports) {
- module.exports = d3;
- } else {
- this.d3 = d3;
- }
+ if (typeof define === "function" && define.amd) define(d3);
+ else if (typeof module === "object" && module.exports) module.exports = d3;
+ this.d3 = d3;
}();
d3.combobox = function() {
var event = d3.dispatch('accept'),
if (!arguments.length) return this.property('value');
return this.each(d3_selection_value(value));
};
+// Copyright (c) 2006, 2008 Tony Garnock-Jones <tonyg@lshift.net>
+// Copyright (c) 2006, 2008 LShift Ltd. <query@lshift.net>
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation files
+// (the "Software"), to deal in the Software without restriction,
+// including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software,
+// and to permit persons to whom the Software is furnished to do so,
+// subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+// source: https://bitbucket.org/lshift/synchrotron/src
+
+Diff3 = (function() {
+ 'use strict';
+
+ var diff3 = {
+ longest_common_subsequence: function(file1, file2) {
+ /* Text diff algorithm following Hunt and McIlroy 1976.
+ * J. W. Hunt and M. D. McIlroy, An algorithm for differential file
+ * comparison, Bell Telephone Laboratories CSTR #41 (1976)
+ * http://www.cs.dartmouth.edu/~doug/
+ *
+ * Expects two arrays of strings.
+ */
+ var equivalenceClasses;
+ var file2indices;
+ var newCandidate;
+ var candidates;
+ var line;
+ var c, i, j, jX, r, s;
+
+ equivalenceClasses = {};
+ for (j = 0; j < file2.length; j++) {
+ line = file2[j];
+ if (equivalenceClasses[line]) {
+ equivalenceClasses[line].push(j);
+ } else {
+ equivalenceClasses[line] = [j];
+ }
+ }
+
+ candidates = [{file1index: -1,
+ file2index: -1,
+ chain: null}];
+
+ for (i = 0; i < file1.length; i++) {
+ line = file1[i];
+ file2indices = equivalenceClasses[line] || [];
+
+ r = 0;
+ c = candidates[0];
+
+ for (jX = 0; jX < file2indices.length; jX++) {
+ j = file2indices[jX];
+
+ for (s = 0; s < candidates.length; s++) {
+ if ((candidates[s].file2index < j) &&
+ ((s == candidates.length - 1) ||
+ (candidates[s + 1].file2index > j)))
+ break;
+ }
+
+ if (s < candidates.length) {
+ newCandidate = {file1index: i,
+ file2index: j,
+ chain: candidates[s]};
+ if (r == candidates.length) {
+ candidates.push(c);
+ } else {
+ candidates[r] = c;
+ }
+ r = s + 1;
+ c = newCandidate;
+ if (r == candidates.length) {
+ break; // no point in examining further (j)s
+ }
+ }
+ }
+
+ candidates[r] = c;
+ }
+
+ // At this point, we know the LCS: it's in the reverse of the
+ // linked-list through .chain of
+ // candidates[candidates.length - 1].
+
+ return candidates[candidates.length - 1];
+ },
+
+ diff_comm: function(file1, file2) {
+ // We apply the LCS to build a "comm"-style picture of the
+ // differences between file1 and file2.
+
+ var result = [];
+ var tail1 = file1.length;
+ var tail2 = file2.length;
+ var common = {common: []};
+
+ function processCommon() {
+ if (common.common.length) {
+ common.common.reverse();
+ result.push(common);
+ common = {common: []};
+ }
+ }
+
+ for (var candidate = Diff3.longest_common_subsequence(file1, file2);
+ candidate !== null;
+ candidate = candidate.chain)
+ {
+ var different = {file1: [], file2: []};
+
+ while (--tail1 > candidate.file1index) {
+ different.file1.push(file1[tail1]);
+ }
+
+ while (--tail2 > candidate.file2index) {
+ different.file2.push(file2[tail2]);
+ }
+
+ if (different.file1.length || different.file2.length) {
+ processCommon();
+ different.file1.reverse();
+ different.file2.reverse();
+ result.push(different);
+ }
+
+ if (tail1 >= 0) {
+ common.common.push(file1[tail1]);
+ }
+ }
+
+ processCommon();
+
+ result.reverse();
+ return result;
+ },
+
+ diff_patch: function(file1, file2) {
+ // We apply the LCD to build a JSON representation of a
+ // diff(1)-style patch.
+
+ var result = [];
+ var tail1 = file1.length;
+ var tail2 = file2.length;
+
+ function chunkDescription(file, offset, length) {
+ var chunk = [];
+ for (var i = 0; i < length; i++) {
+ chunk.push(file[offset + i]);
+ }
+ return {offset: offset,
+ length: length,
+ chunk: chunk};
+ }
+
+ for (var candidate = Diff3.longest_common_subsequence(file1, file2);
+ candidate !== null;
+ candidate = candidate.chain)
+ {
+ var mismatchLength1 = tail1 - candidate.file1index - 1;
+ var mismatchLength2 = tail2 - candidate.file2index - 1;
+ tail1 = candidate.file1index;
+ tail2 = candidate.file2index;
+
+ if (mismatchLength1 || mismatchLength2) {
+ result.push({file1: chunkDescription(file1,
+ candidate.file1index + 1,
+ mismatchLength1),
+ file2: chunkDescription(file2,
+ candidate.file2index + 1,
+ mismatchLength2)});
+ }
+ }
+
+ result.reverse();
+ return result;
+ },
+
+ strip_patch: function(patch) {
+ // Takes the output of Diff3.diff_patch(), and removes
+ // information from it. It can still be used by patch(),
+ // below, but can no longer be inverted.
+ var newpatch = [];
+ for (var i = 0; i < patch.length; i++) {
+ var chunk = patch[i];
+ newpatch.push({file1: {offset: chunk.file1.offset,
+ length: chunk.file1.length},
+ file2: {chunk: chunk.file2.chunk}});
+ }
+ return newpatch;
+ },
+
+ invert_patch: function(patch) {
+ // Takes the output of Diff3.diff_patch(), and inverts the
+ // sense of it, so that it can be applied to file2 to give
+ // file1 rather than the other way around.
+
+ for (var i = 0; i < patch.length; i++) {
+ var chunk = patch[i];
+ var tmp = chunk.file1;
+ chunk.file1 = chunk.file2;
+ chunk.file2 = tmp;
+ }
+ },
+
+ patch: function (file, patch) {
+ // Applies a patch to a file.
+ //
+ // Given file1 and file2, Diff3.patch(file1,
+ // Diff3.diff_patch(file1, file2)) should give file2.
+
+ var result = [];
+ var commonOffset = 0;
+
+ function copyCommon(targetOffset) {
+ while (commonOffset < targetOffset) {
+ result.push(file[commonOffset]);
+ commonOffset++;
+ }
+ }
+
+ for (var chunkIndex = 0; chunkIndex < patch.length; chunkIndex++) {
+ var chunk = patch[chunkIndex];
+ copyCommon(chunk.file1.offset);
+ for (var lineIndex = 0; lineIndex < chunk.file2.chunk.length; lineIndex++) {
+ result.push(chunk.file2.chunk[lineIndex]);
+ }
+ commonOffset += chunk.file1.length;
+ }
+
+ copyCommon(file.length);
+ return result;
+ },
+
+ diff_indices: function(file1, file2) {
+ // We apply the LCS to give a simple representation of the
+ // offsets and lengths of mismatched chunks in the input
+ // files. This is used by diff3_merge_indices below.
+
+ var result = [];
+ var tail1 = file1.length;
+ var tail2 = file2.length;
+
+ for (var candidate = Diff3.longest_common_subsequence(file1, file2);
+ candidate !== null;
+ candidate = candidate.chain)
+ {
+ var mismatchLength1 = tail1 - candidate.file1index - 1;
+ var mismatchLength2 = tail2 - candidate.file2index - 1;
+ tail1 = candidate.file1index;
+ tail2 = candidate.file2index;
+
+ if (mismatchLength1 || mismatchLength2) {
+ result.push({file1: [tail1 + 1, mismatchLength1],
+ file2: [tail2 + 1, mismatchLength2]});
+ }
+ }
+
+ result.reverse();
+ return result;
+ },
+
+ diff3_merge_indices: function (a, o, b) {
+ // Given three files, A, O, and B, where both A and B are
+ // independently derived from O, returns a fairly complicated
+ // internal representation of merge decisions it's taken. The
+ // interested reader may wish to consult
+ //
+ // Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. "A
+ // Formal Investigation of Diff3." In Arvind and Prasad,
+ // editors, Foundations of Software Technology and Theoretical
+ // Computer Science (FSTTCS), December 2007.
+ //
+ // (http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf)
+ var i;
+
+ var m1 = Diff3.diff_indices(o, a);
+ var m2 = Diff3.diff_indices(o, b);
+
+ var hunks = [];
+ function addHunk(h, side) {
+ hunks.push([h.file1[0], side, h.file1[1], h.file2[0], h.file2[1]]);
+ }
+ for (i = 0; i < m1.length; i++) { addHunk(m1[i], 0); }
+ for (i = 0; i < m2.length; i++) { addHunk(m2[i], 2); }
+ hunks.sort();
+
+ var result = [];
+ var commonOffset = 0;
+ function copyCommon(targetOffset) {
+ if (targetOffset > commonOffset) {
+ result.push([1, commonOffset, targetOffset - commonOffset]);
+ commonOffset = targetOffset;
+ }
+ }
+
+ for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) {
+ var firstHunkIndex = hunkIndex;
+ var hunk = hunks[hunkIndex];
+ var regionLhs = hunk[0];
+ var regionRhs = regionLhs + hunk[2];
+ while (hunkIndex < hunks.length - 1) {
+ var maybeOverlapping = hunks[hunkIndex + 1];
+ var maybeLhs = maybeOverlapping[0];
+ if (maybeLhs > regionRhs) break;
+ regionRhs = maybeLhs + maybeOverlapping[2];
+ hunkIndex++;
+ }
+
+ copyCommon(regionLhs);
+ if (firstHunkIndex == hunkIndex) {
+ // The "overlap" was only one hunk long, meaning that
+ // there's no conflict here. Either a and o were the
+ // same, or b and o were the same.
+ if (hunk[4] > 0) {
+ result.push([hunk[1], hunk[3], hunk[4]]);
+ }
+ } else {
+ // A proper conflict. Determine the extents of the
+ // regions involved from a, o and b. Effectively merge
+ // all the hunks on the left into one giant hunk, and
+ // do the same for the right; then, correct for skew
+ // in the regions of o that each side changed, and
+ // report appropriate spans for the three sides.
+ var regions = {
+ 0: [a.length, -1, o.length, -1],
+ 2: [b.length, -1, o.length, -1]
+ };
+ for (i = firstHunkIndex; i <= hunkIndex; i++) {
+ hunk = hunks[i];
+ var side = hunk[1];
+ var r = regions[side];
+ var oLhs = hunk[0];
+ var oRhs = oLhs + hunk[2];
+ var abLhs = hunk[3];
+ var abRhs = abLhs + hunk[4];
+ r[0] = Math.min(abLhs, r[0]);
+ r[1] = Math.max(abRhs, r[1]);
+ r[2] = Math.min(oLhs, r[2]);
+ r[3] = Math.max(oRhs, r[3]);
+ }
+ var aLhs = regions[0][0] + (regionLhs - regions[0][2]);
+ var aRhs = regions[0][1] + (regionRhs - regions[0][3]);
+ var bLhs = regions[2][0] + (regionLhs - regions[2][2]);
+ var bRhs = regions[2][1] + (regionRhs - regions[2][3]);
+ result.push([-1,
+ aLhs, aRhs - aLhs,
+ regionLhs, regionRhs - regionLhs,
+ bLhs, bRhs - bLhs]);
+ }
+ commonOffset = regionRhs;
+ }
+
+ copyCommon(o.length);
+ return result;
+ },
+
+ diff3_merge: function (a, o, b, excludeFalseConflicts) {
+ // Applies the output of Diff3.diff3_merge_indices to actually
+ // construct the merged file; the returned result alternates
+ // between "ok" and "conflict" blocks.
+
+ var result = [];
+ var files = [a, o, b];
+ var indices = Diff3.diff3_merge_indices(a, o, b);
+
+ var okLines = [];
+ function flushOk() {
+ if (okLines.length) {
+ result.push({ok: okLines});
+ }
+ okLines = [];
+ }
+ function pushOk(xs) {
+ for (var j = 0; j < xs.length; j++) {
+ okLines.push(xs[j]);
+ }
+ }
+
+ function isTrueConflict(rec) {
+ if (rec[2] != rec[6]) return true;
+ var aoff = rec[1];
+ var boff = rec[5];
+ for (var j = 0; j < rec[2]; j++) {
+ if (a[j + aoff] != b[j + boff]) return true;
+ }
+ return false;
+ }
+
+ for (var i = 0; i < indices.length; i++) {
+ var x = indices[i];
+ var side = x[0];
+ if (side == -1) {
+ if (excludeFalseConflicts && !isTrueConflict(x)) {
+ pushOk(files[0].slice(x[1], x[1] + x[2]));
+ } else {
+ flushOk();
+ result.push({conflict: {a: a.slice(x[1], x[1] + x[2]),
+ aIndex: x[1],
+ o: o.slice(x[3], x[3] + x[4]),
+ oIndex: x[3],
+ b: b.slice(x[5], x[5] + x[6]),
+ bIndex: x[5]}});
+ }
+ } else {
+ pushOk(files[side].slice(x[1], x[1] + x[2]));
+ }
+ }
+
+ flushOk();
+ return result;
+ }
+ };
+ return diff3;
+})();
+
+if (typeof module !== 'undefined') module.exports = Diff3;
var JXON = new (function () {
var
sValueProp = "keyValue", sAttributesProp = "keyAttributes", sAttrPref = "@", /* you can customize these values */
// we got our Document instance! try: alert((new XMLSerializer()).serializeToString(newDoc));
/**
* @license
- * Lo-Dash 2.3.0 (Custom Build) <http://lodash.com/>
- * Build: `lodash --debug --output js/lib/lodash.js include="any,assign,bind,clone,compact,contains,debounce,difference,each,every,extend,filter,find,first,forEach,groupBy,indexOf,intersection,isEmpty,isEqual,isFunction,keys,last,map,omit,pairs,pluck,reject,some,throttle,union,uniq,unique,values,without,flatten,value,chain,cloneDeep,merge,pick,reduce" exports="global,node"`
- * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
- * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
- * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license <http://lodash.com/license>
+ * lodash 3.9.3 (Custom Build) <https://lodash.com/>
+ * Build: `lodash --development --output js/lib/lodash.js include="any,assign,bind,chunk,clone,compact,contains,debounce,difference,each,every,extend,filter,find,first,forEach,forOwn,groupBy,indexOf,intersection,isEmpty,isEqual,isFunction,keys,last,map,omit,pairs,pluck,reject,some,throttle,union,uniq,unique,values,without,flatten,value,chain,cloneDeep,merge,pick,reduce" exports="global,node"`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
*/
;(function() {
- /** Used as a safe reference for `undefined` in pre ES5 environments */
+ /** Used as a safe reference for `undefined` in pre-ES5 environments. */
var undefined;
- /** Used to pool arrays and objects used internally */
- var arrayPool = [],
- objectPool = [];
+ /** Used as the semantic version number. */
+ var VERSION = '3.9.3';
+
+ /** Used to compose bitmasks for wrapper metadata. */
+ var BIND_FLAG = 1,
+ BIND_KEY_FLAG = 2,
+ CURRY_BOUND_FLAG = 4,
+ CURRY_FLAG = 8,
+ CURRY_RIGHT_FLAG = 16,
+ PARTIAL_FLAG = 32,
+ PARTIAL_RIGHT_FLAG = 64,
+ ARY_FLAG = 128,
+ REARG_FLAG = 256;
+
+ /** Used to detect when a function becomes hot. */
+ var HOT_COUNT = 150,
+ HOT_SPAN = 16;
+
+ /** Used to indicate the type of lazy iteratees. */
+ var LAZY_DROP_WHILE_FLAG = 0,
+ LAZY_FILTER_FLAG = 1,
+ LAZY_MAP_FLAG = 2;
+
+ /** Used as the `TypeError` message for "Functions" methods. */
+ var FUNC_ERROR_TEXT = 'Expected a function';
+
+ /** Used as the internal argument placeholder. */
+ var PLACEHOLDER = '__lodash_placeholder__';
+
+ /** `Object#toString` result references. */
+ var argsTag = '[object Arguments]',
+ arrayTag = '[object Array]',
+ boolTag = '[object Boolean]',
+ dateTag = '[object Date]',
+ errorTag = '[object Error]',
+ funcTag = '[object Function]',
+ mapTag = '[object Map]',
+ numberTag = '[object Number]',
+ objectTag = '[object Object]',
+ regexpTag = '[object RegExp]',
+ setTag = '[object Set]',
+ stringTag = '[object String]',
+ weakMapTag = '[object WeakMap]';
+
+ var arrayBufferTag = '[object ArrayBuffer]',
+ float32Tag = '[object Float32Array]',
+ float64Tag = '[object Float64Array]',
+ int8Tag = '[object Int8Array]',
+ int16Tag = '[object Int16Array]',
+ int32Tag = '[object Int32Array]',
+ uint8Tag = '[object Uint8Array]',
+ uint8ClampedTag = '[object Uint8ClampedArray]',
+ uint16Tag = '[object Uint16Array]',
+ uint32Tag = '[object Uint32Array]';
+
+ /** Used to match property names within property paths. */
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
+ reIsPlainProp = /^\w*$/,
+ rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
- /** Used internally to indicate various things */
- var indicatorObject = {};
-
- /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */
- var keyPrefix = +new Date + '';
-
- /** Used as the size when optimizations are enabled for large arrays */
- var largeArraySize = 75;
+ /**
+ * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
+ * In addition to special characters the forward slash is escaped to allow for
+ * easier `eval` use and `Function` compilation.
+ */
+ var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
+ reHasRegExpChars = RegExp(reRegExpChars.source);
- /** Used as the max size of the `arrayPool` and `objectPool` */
- var maxPoolSize = 40;
+ /** Used to match backslashes in property paths. */
+ var reEscapeChar = /\\(\\)?/g;
- /** Used to match regexp flags from their coerced string values */
+ /** Used to match `RegExp` flags from their coerced string values. */
var reFlags = /\w*$/;
- /** Used to detected named functions */
- var reFuncName = /^\s*function[ \n\r\t]+\w/;
+ /** Used to detect host constructors (Safari > 5). */
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
- /** Used to detect functions containing a `this` reference */
- var reThis = /\bthis\b/;
+ /** Used to detect unsigned integer values. */
+ var reIsUint = /^\d+$/;
- /** Used to fix the JScript [[DontEnum]] bug */
- var shadowedProps = [
+ /** Used to fix the JScript `[[DontEnum]]` bug. */
+ var shadowProps = [
'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',
'toLocaleString', 'toString', 'valueOf'
];
- /** `Object#toString` result shortcuts */
- var argsClass = '[object Arguments]',
- arrayClass = '[object Array]',
- boolClass = '[object Boolean]',
- dateClass = '[object Date]',
- errorClass = '[object Error]',
- funcClass = '[object Function]',
- numberClass = '[object Number]',
- objectClass = '[object Object]',
- regexpClass = '[object RegExp]',
- stringClass = '[object String]';
-
- /** Used to identify object classifications that `_.clone` supports */
- var cloneableClasses = {};
- cloneableClasses[funcClass] = false;
- cloneableClasses[argsClass] = cloneableClasses[arrayClass] =
- cloneableClasses[boolClass] = cloneableClasses[dateClass] =
- cloneableClasses[numberClass] = cloneableClasses[objectClass] =
- cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true;
-
- /** Used as an internal `_.debounce` options object */
+ /** Used to identify `toStringTag` values of typed arrays. */
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
+ typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
+ typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
+ typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
+ typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
+ typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
+ typedArrayTags[dateTag] = typedArrayTags[errorTag] =
+ typedArrayTags[funcTag] = typedArrayTags[mapTag] =
+ typedArrayTags[numberTag] = typedArrayTags[objectTag] =
+ typedArrayTags[regexpTag] = typedArrayTags[setTag] =
+ typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+
+ /** Used to identify `toStringTag` values supported by `_.clone`. */
+ var cloneableTags = {};
+ cloneableTags[argsTag] = cloneableTags[arrayTag] =
+ cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
+ cloneableTags[dateTag] = cloneableTags[float32Tag] =
+ cloneableTags[float64Tag] = cloneableTags[int8Tag] =
+ cloneableTags[int16Tag] = cloneableTags[int32Tag] =
+ cloneableTags[numberTag] = cloneableTags[objectTag] =
+ cloneableTags[regexpTag] = cloneableTags[stringTag] =
+ cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
+ cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
+ cloneableTags[errorTag] = cloneableTags[funcTag] =
+ cloneableTags[mapTag] = cloneableTags[setTag] =
+ cloneableTags[weakMapTag] = false;
+
+ /** Used as an internal `_.debounce` options object by `_.throttle`. */
var debounceOptions = {
'leading': false,
'maxWait': 0,
'trailing': false
};
- /** Used as the property descriptor for `__bindData__` */
- var descriptor = {
- 'configurable': false,
- 'enumerable': false,
- 'value': null,
- 'writable': false
- };
-
- /** Used as the data object for `iteratorTemplate` */
- var iteratorData = {
- 'args': '',
- 'array': null,
- 'bottom': '',
- 'firstArg': '',
- 'init': '',
- 'keys': null,
- 'loop': '',
- 'shadowedProps': null,
- 'support': null,
- 'top': '',
- 'useHas': false
- };
-
- /** Used to determine if values are of the language type Object */
+ /** Used to determine if values are of the language type `Object`. */
var objectTypes = {
- 'boolean': false,
'function': true,
- 'object': true,
- 'number': false,
- 'string': false,
- 'undefined': false
+ 'object': true
};
- /** Used as a reference to the global object */
- var root = (objectTypes[typeof window] && window) || this;
-
- /** Detect free variable `exports` */
+ /** Detect free variable `exports`. */
var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
- /** Detect free variable `module` */
+ /** Detect free variable `module`. */
var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
- /** Detect the popular CommonJS extension `module.exports` */
+ /** Detect free variable `global` from Node.js. */
+ var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
+
+ /** Detect free variable `self`. */
+ var freeSelf = objectTypes[typeof self] && self && self.Object && self;
+
+ /** Detect free variable `window`. */
+ var freeWindow = objectTypes[typeof window] && window && window.Object && window;
+
+ /** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
- /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */
- var freeGlobal = objectTypes[typeof global] && global;
- if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) {
- root = freeGlobal;
- }
+ /**
+ * Used as a reference to the global object.
+ *
+ * The `this` value is used if it's the global object to avoid Greasemonkey's
+ * restricted `window` object, otherwise the `window` object is used.
+ */
+ var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
/*--------------------------------------------------------------------------*/
/**
- * The base implementation of `_.indexOf` without support for binary searches
- * or `fromIndex` constraints.
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for callback shorthands and `this` binding.
*
* @private
* @param {Array} array The array to search.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the matched value or `-1`.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
*/
- function baseIndexOf(array, value, fromIndex) {
- var index = (fromIndex || 0) - 1,
- length = array ? array.length : 0;
+ function baseFindIndex(array, predicate, fromRight) {
+ var length = array.length,
+ index = fromRight ? length : -1;
- while (++index < length) {
- if (array[index] === value) {
+ while ((fromRight ? index-- : ++index < length)) {
+ if (predicate(array[index], index, array)) {
return index;
}
}
}
/**
- * An implementation of `_.contains` for cache objects that mimics the return
- * signature of `_.indexOf` by returning `0` if the value is found, else `-1`.
+ * The base implementation of `_.indexOf` without support for binary searches.
*
* @private
- * @param {Object} cache The cache object to inspect.
+ * @param {Array} array The array to search.
* @param {*} value The value to search for.
- * @returns {number} Returns `0` if `value` is found, else `-1`.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
*/
- function cacheIndexOf(cache, value) {
- var type = typeof value;
- cache = cache.cache;
-
- if (type == 'boolean' || value == null) {
- return cache[value] ? 0 : -1;
- }
- if (type != 'number' && type != 'string') {
- type = 'object';
+ function baseIndexOf(array, value, fromIndex) {
+ if (value !== value) {
+ return indexOfNaN(array, fromIndex);
}
- var key = type == 'number' ? value : keyPrefix + value;
- cache = (cache = cache[type]) && cache[key];
+ var index = fromIndex - 1,
+ length = array.length;
- return type == 'object'
- ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1)
- : (cache ? 0 : -1);
+ while (++index < length) {
+ if (array[index] === value) {
+ return index;
+ }
+ }
+ return -1;
}
/**
- * Adds a given value to the corresponding cache object.
+ * The base implementation of `_.isFunction` without support for environments
+ * with incorrect `typeof` results.
*
* @private
- * @param {*} value The value to add to the cache.
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
*/
- function cachePush(value) {
- var cache = this.cache,
- type = typeof value;
-
- if (type == 'boolean' || value == null) {
- cache[value] = true;
- } else {
- if (type != 'number' && type != 'string') {
- type = 'object';
- }
- var key = type == 'number' ? value : keyPrefix + value,
- typeCache = cache[type] || (cache[type] = {});
-
- if (type == 'object') {
- (typeCache[key] || (typeCache[key] = [])).push(value);
- } else {
- typeCache[key] = true;
- }
- }
+ function baseIsFunction(value) {
+ // Avoid a Chakra JIT bug in compatibility modes of IE 11.
+ // See https://github.com/jashkenas/underscore/issues/1621 for more details.
+ return typeof value == 'function' || false;
}
/**
- * Creates a cache object to optimize linear searches of large arrays.
+ * Converts `value` to a string if it's not one. An empty string is returned
+ * for `null` or `undefined` values.
*
* @private
- * @param {Array} [array=[]] The array to search.
- * @returns {null|Object} Returns the cache object or `null` if caching should not be used.
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
*/
- function createCache(array) {
- var index = -1,
- length = array.length,
- first = array[0],
- mid = array[(length / 2) | 0],
- last = array[length - 1];
-
- if (first && typeof first == 'object' &&
- mid && typeof mid == 'object' && last && typeof last == 'object') {
- return false;
- }
- var cache = getObject();
- cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false;
-
- var result = getObject();
- result.array = array;
- result.cache = cache;
- result.push = cachePush;
-
- while (++index < length) {
- result.push(array[index]);
+ function baseToString(value) {
+ if (typeof value == 'string') {
+ return value;
}
- return result;
+ return value == null ? '' : (value + '');
}
/**
- * Gets an array from the array pool or creates a new one if the pool is empty.
+ * Gets the index at which the first occurrence of `NaN` is found in `array`.
*
* @private
- * @returns {Array} The array from the pool.
+ * @param {Array} array The array to search.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched `NaN`, else `-1`.
*/
- function getArray() {
- return arrayPool.pop() || [];
+ function indexOfNaN(array, fromIndex, fromRight) {
+ var length = array.length,
+ index = fromIndex + (fromRight ? 0 : -1);
+
+ while ((fromRight ? index-- : ++index < length)) {
+ var other = array[index];
+ if (other !== other) {
+ return index;
+ }
+ }
+ return -1;
}
/**
- * Gets an object from the object pool or creates a new one if the pool is empty.
+ * Checks if `value` is a host object in IE < 9.
*
* @private
- * @returns {Object} The object from the pool.
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
*/
- function getObject() {
- return objectPool.pop() || {
- 'array': null,
- 'cache': null,
- 'false': false,
- 'null': false,
- 'number': null,
- 'object': null,
- 'push': null,
- 'string': null,
- 'true': false,
- 'undefined': false
+ var isHostObject = (function() {
+ try {
+ Object({ 'toString': 0 } + '');
+ } catch(e) {
+ return function() { return false; };
+ }
+ return function(value) {
+ // IE < 9 presents many host objects as `Object` objects that can coerce
+ // to strings despite having improperly defined `toString` methods.
+ return typeof value.toString != 'function' && typeof (value + '') == 'string';
};
- }
+ }());
/**
- * Checks if `value` is a DOM node in IE < 9.
+ * Checks if `value` is object-like.
*
* @private
* @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is a DOM node, else `false`.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
*/
- function isNode(value) {
- // IE < 9 presents DOM nodes as `Object` objects except they have `toString`
- // methods that are `typeof` "string" and still can coerce nodes to strings
- return typeof value.toString != 'function' && typeof (value + '') == 'string';
+ function isObjectLike(value) {
+ return !!value && typeof value == 'object';
}
/**
- * Releases the given array back to the array pool.
+ * Replaces all `placeholder` elements in `array` with an internal placeholder
+ * and returns an array of their indexes.
*
* @private
- * @param {Array} [array] The array to release.
+ * @param {Array} array The array to modify.
+ * @param {*} placeholder The placeholder to replace.
+ * @returns {Array} Returns the new array of placeholder indexes.
*/
- function releaseArray(array) {
- array.length = 0;
- if (arrayPool.length < maxPoolSize) {
- arrayPool.push(array);
- }
- }
+ function replaceHolders(array, placeholder) {
+ var index = -1,
+ length = array.length,
+ resIndex = -1,
+ result = [];
- /**
- * Releases the given object back to the object pool.
- *
- * @private
- * @param {Object} [object] The object to release.
- */
- function releaseObject(object) {
- var cache = object.cache;
- if (cache) {
- releaseObject(cache);
- }
- object.array = object.cache =object.object = object.number = object.string =null;
- if (objectPool.length < maxPoolSize) {
- objectPool.push(object);
+ while (++index < length) {
+ if (array[index] === placeholder) {
+ array[index] = PLACEHOLDER;
+ result[++resIndex] = index;
+ }
}
+ return result;
}
/**
- * Slices the `collection` from the `start` index up to, but not including,
- * the `end` index.
- *
- * Note: This function is used instead of `Array#slice` to support node lists
- * in IE < 9 and to ensure dense arrays are returned.
+ * An implementation of `_.uniq` optimized for sorted arrays without support
+ * for callback shorthands and `this` binding.
*
* @private
- * @param {Array|Object|string} collection The collection to slice.
- * @param {number} start The start index.
- * @param {number} end The end index.
- * @returns {Array} Returns the new array.
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The function invoked per iteration.
+ * @returns {Array} Returns the new duplicate-value-free array.
*/
- function slice(array, start, end) {
- start || (start = 0);
- if (typeof end == 'undefined') {
- end = array ? array.length : 0;
- }
- var index = -1,
- length = end - start || 0,
- result = Array(length < 0 ? 0 : length);
+ function sortedUniq(array, iteratee) {
+ var seen,
+ index = -1,
+ length = array.length,
+ resIndex = -1,
+ result = [];
while (++index < length) {
- result[index] = array[start + index];
+ var value = array[index],
+ computed = iteratee ? iteratee(value, index, array) : value;
+
+ if (!index || seen !== computed) {
+ seen = computed;
+ result[++resIndex] = value;
+ }
}
return result;
}
/*--------------------------------------------------------------------------*/
- /**
- * Used for `Array` method references.
- *
- * Normally `Array.prototype` would suffice, however, using an array literal
- * avoids issues in Narwhal.
- */
- var arrayRef = [];
-
- /** Used for native method references */
- var errorProto = Error.prototype,
+ /** Used for native method references. */
+ var arrayProto = Array.prototype,
+ errorProto = Error.prototype,
objectProto = Object.prototype,
stringProto = String.prototype;
- /** Used to resolve the internal [[Class]] of values */
- var toString = objectProto.toString;
+ /** Used to resolve the decompiled source of functions. */
+ var fnToString = Function.prototype.toString;
+
+ /** Used to check objects for own properties. */
+ var hasOwnProperty = objectProto.hasOwnProperty;
+
+ /**
+ * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
+ * of values.
+ */
+ var objToString = objectProto.toString;
- /** Used to detect if a method is native */
- var reNative = RegExp('^' +
- String(toString)
- .replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
- .replace(/toString| for [^\]]+/g, '.*?') + '$'
+ /** Used to detect if a method is native. */
+ var reIsNative = RegExp('^' +
+ escapeRegExp(fnToString.call(hasOwnProperty))
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);
- /** Native method shortcuts */
- var fnToString = Function.prototype.toString,
- getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf,
- hasOwnProperty = objectProto.hasOwnProperty,
- now = reNative.test(now = Date.now) && now || function() { return +new Date; },
- push = arrayRef.push,
- propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
- /** Used to set meta data on functions */
- var defineProperty = (function() {
- // IE 8 only accepts DOM elements
+ /** Native method references. */
+ var ArrayBuffer = getNative(root, 'ArrayBuffer'),
+ bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
+ ceil = Math.ceil,
+ floor = Math.floor,
+ getPrototypeOf = getNative(Object, 'getPrototypeOf'),
+ push = arrayProto.push,
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
+ Set = getNative(root, 'Set'),
+ splice = arrayProto.splice,
+ Uint8Array = getNative(root, 'Uint8Array'),
+ WeakMap = getNative(root, 'WeakMap');
+
+ /** Used to clone array buffers. */
+ var Float64Array = (function() {
+ // Safari 5 errors when using an array buffer to initialize a typed array
+ // where the array buffer's `byteLength` is not a multiple of the typed
+ // array's `BYTES_PER_ELEMENT`.
try {
- var o = {},
- func = reNative.test(func = Object.defineProperty) && func,
- result = func(o, o, o) && func;
- } catch(e) { }
- return result;
+ var func = getNative(root, 'Float64Array'),
+ result = new func(new ArrayBuffer(10), 0, 1) && func;
+ } catch(e) {}
+ return result || null;
}());
- /* Native method shortcuts for methods with the same name as other `lodash` methods */
- var nativeCreate = reNative.test(nativeCreate = Object.create) && nativeCreate,
- nativeIsArray = reNative.test(nativeIsArray = Array.isArray) && nativeIsArray,
- nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys,
+ /* Native method references for those with the same name as other `lodash` methods. */
+ var nativeCreate = getNative(Object, 'create'),
+ nativeIsArray = getNative(Array, 'isArray'),
+ nativeKeys = getNative(Object, 'keys'),
nativeMax = Math.max,
- nativeMin = Math.min;
-
- /** Used to lookup a built-in constructor by [[Class]] */
- var ctorByClass = {};
- ctorByClass[arrayClass] = Array;
- ctorByClass[boolClass] = Boolean;
- ctorByClass[dateClass] = Date;
- ctorByClass[funcClass] = Function;
- ctorByClass[objectClass] = Object;
- ctorByClass[numberClass] = Number;
- ctorByClass[regexpClass] = RegExp;
- ctorByClass[stringClass] = String;
-
- /** Used to avoid iterating non-enumerable properties in IE < 9 */
- var nonEnumProps = {};
- nonEnumProps[arrayClass] = nonEnumProps[dateClass] = nonEnumProps[numberClass] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
- nonEnumProps[boolClass] = nonEnumProps[stringClass] = { 'constructor': true, 'toString': true, 'valueOf': true };
- nonEnumProps[errorClass] = nonEnumProps[funcClass] = nonEnumProps[regexpClass] = { 'constructor': true, 'toString': true };
- nonEnumProps[objectClass] = { 'constructor': true };
+ nativeMin = Math.min,
+ nativeNow = getNative(Date, 'now');
- (function() {
- var length = shadowedProps.length;
- while (length--) {
- var key = shadowedProps[length];
- for (var className in nonEnumProps) {
- if (hasOwnProperty.call(nonEnumProps, className) && !hasOwnProperty.call(nonEnumProps[className], key)) {
- nonEnumProps[className][key] = false;
- }
+ /** Used as references for `-Infinity` and `Infinity`. */
+ var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
+
+ /** Used as references for the maximum length and index of an array. */
+ var MAX_ARRAY_LENGTH = 4294967295,
+ MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
+ HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
+
+ /** Used as the size, in bytes, of each `Float64Array` element. */
+ var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
+
+ /**
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
+ * of an array-like value.
+ */
+ var MAX_SAFE_INTEGER = 9007199254740991;
+
+ /** Used to store function metadata. */
+ var metaMap = WeakMap && new WeakMap;
+
+ /** Used to lookup unminified function names. */
+ var realNames = {};
+
+ /** Used to lookup a type array constructors by `toStringTag`. */
+ var ctorByTag = {};
+ ctorByTag[float32Tag] = root.Float32Array;
+ ctorByTag[float64Tag] = root.Float64Array;
+ ctorByTag[int8Tag] = root.Int8Array;
+ ctorByTag[int16Tag] = root.Int16Array;
+ ctorByTag[int32Tag] = root.Int32Array;
+ ctorByTag[uint8Tag] = root.Uint8Array;
+ ctorByTag[uint8ClampedTag] = root.Uint8ClampedArray;
+ ctorByTag[uint16Tag] = root.Uint16Array;
+ ctorByTag[uint32Tag] = root.Uint32Array;
+
+ /** Used to avoid iterating over non-enumerable properties in IE < 9. */
+ var nonEnumProps = {};
+ nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
+ nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };
+ nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };
+ nonEnumProps[objectTag] = { 'constructor': true };
+
+ arrayEach(shadowProps, function(key) {
+ for (var tag in nonEnumProps) {
+ if (hasOwnProperty.call(nonEnumProps, tag)) {
+ var props = nonEnumProps[tag];
+ props[key] = hasOwnProperty.call(props, key);
}
}
- }());
+ });
- /*--------------------------------------------------------------------------*/
+ /*------------------------------------------------------------------------*/
/**
- * Creates a `lodash` object which wraps the given value to enable intuitive
- * method chaining.
- *
- * In addition to Lo-Dash methods, wrappers also have the following `Array` methods:
- * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`,
- * and `unshift`
- *
- * Chaining is supported in custom builds as long as the `value` method is
- * implicitly or explicitly included in the build.
- *
- * The chainable wrapper functions are:
- * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`,
- * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`,
- * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`,
- * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`,
- * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`,
- * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`,
- * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`,
- * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`,
- * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`,
- * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`,
- * and `zip`
- *
- * The non-chainable wrapper functions are:
- * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`,
- * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`,
- * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`,
- * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`,
- * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`,
- * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`,
- * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`,
- * `template`, `unescape`, `uniqueId`, and `value`
- *
- * The wrapper functions `first` and `last` return wrapped values when `n` is
- * provided, otherwise they return unwrapped values.
- *
- * Explicit chaining can be enabled by using the `_.chain` method.
+ * Creates a `lodash` object which wraps `value` to enable implicit chaining.
+ * Methods that operate on and return arrays, collections, and functions can
+ * be chained together. Methods that return a boolean or single value will
+ * automatically end the chain returning the unwrapped value. Explicit chaining
+ * may be enabled using `_.chain`. The execution of chained methods is lazy,
+ * that is, execution is deferred until `_#value` is implicitly or explicitly
+ * called.
+ *
+ * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
+ * fusion is an optimization that merges iteratees to avoid creating intermediate
+ * arrays and reduce the number of iteratee executions.
+ *
+ * Chaining is supported in custom builds as long as the `_#value` method is
+ * directly or indirectly included in the build.
+ *
+ * In addition to lodash methods, wrappers have `Array` and `String` methods.
+ *
+ * The wrapper `Array` methods are:
+ * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
+ * `splice`, and `unshift`
+ *
+ * The wrapper `String` methods are:
+ * `replace` and `split`
+ *
+ * The wrapper methods that support shortcut fusion are:
+ * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
+ * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
+ * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
+ * and `where`
+ *
+ * The chainable wrapper methods are:
+ * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
+ * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
+ * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
+ * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
+ * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
+ * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
+ * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
+ * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
+ * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,
+ * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,
+ * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,
+ * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,
+ * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,
+ * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
+ * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
+ * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,
+ * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
+ *
+ * The wrapper methods that are **not** chainable by default are:
+ * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
+ * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
+ * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,
+ * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,
+ * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
+ * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
+ * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
+ * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,
+ * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,
+ * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,
+ * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
+ * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,
+ * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
+ *
+ * The wrapper method `sample` will return a wrapped value when `n` is provided,
+ * otherwise an unwrapped value is returned.
*
* @name _
* @constructor
- * @category Chaining
+ * @category Chain
* @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns a `lodash` instance.
+ * @returns {Object} Returns the new `lodash` wrapper instance.
* @example
*
* var wrapped = _([1, 2, 3]);
*
* // returns an unwrapped value
- * wrapped.reduce(function(sum, num) {
- * return sum + num;
+ * wrapped.reduce(function(total, n) {
+ * return total + n;
* });
* // => 6
*
* // returns a wrapped value
- * var squares = wrapped.map(function(num) {
- * return num * num;
+ * var squares = wrapped.map(function(n) {
+ * return n * n;
* });
*
* _.isArray(squares);
* // => true
*/
function lodash(value) {
- // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor
- return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__'))
- ? value
- : new lodashWrapper(value);
+ if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
+ if (value instanceof LodashWrapper) {
+ return value;
+ }
+ if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
+ return wrapperClone(value);
+ }
+ }
+ return new LodashWrapper(value);
}
/**
- * A fast path for creating `lodash` wrapper objects.
+ * The function whose prototype all chaining wrappers inherit from.
*
* @private
- * @param {*} value The value to wrap in a `lodash` instance.
- * @param {boolean} chainAll A flag to enable chaining for all methods
- * @returns {Object} Returns a `lodash` instance.
*/
- function lodashWrapper(value, chainAll) {
- this.__chain__ = !!chainAll;
+ function baseLodash() {
+ // No operation performed.
+ }
+
+ /**
+ * The base constructor for creating `lodash` wrapper objects.
+ *
+ * @private
+ * @param {*} value The value to wrap.
+ * @param {boolean} [chainAll] Enable chaining for all wrapper methods.
+ * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
+ */
+ function LodashWrapper(value, chainAll, actions) {
this.__wrapped__ = value;
+ this.__actions__ = actions || [];
+ this.__chain__ = !!chainAll;
}
- // ensure `new lodashWrapper` is an instance of `lodash`
- lodashWrapper.prototype = lodash.prototype;
/**
- * An object used to flag environments features.
+ * An object environment feature flags.
*
* @static
* @memberOf _
*/
var support = lodash.support = {};
- (function() {
- var ctor = function() { this.x = 1; },
- object = { '0': 1, 'length': 1 },
+ (function(x) {
+ var Ctor = function() { this.x = x; },
+ object = { '0': x, 'length': x },
props = [];
- ctor.prototype = { 'valueOf': 1, 'y': 1 };
- for (var key in new ctor) { props.push(key); }
- for (key in arguments) { }
-
- /**
- * Detect if an `arguments` object's [[Class]] is resolvable (all but Firefox < 4, IE < 9).
- *
- * @memberOf _.support
- * @type boolean
- */
- support.argsClass = toString.call(arguments) == argsClass;
+ Ctor.prototype = { 'valueOf': x, 'y': x };
+ for (var key in new Ctor) { props.push(key); }
/**
- * Detect if `arguments` objects are `Object` objects (all but Narwhal and Opera < 10.5).
+ * Detect if the `toStringTag` of `arguments` objects is resolvable
+ * (all but Firefox < 4, IE < 9).
*
* @memberOf _.support
* @type boolean
*/
- support.argsObject = arguments.constructor == Object && !(arguments instanceof Array);
+ support.argsTag = objToString.call(arguments) == argsTag;
/**
* Detect if `name` or `message` properties of `Error.prototype` are
- * enumerable by default. (IE < 9, Safari < 5.1)
+ * enumerable by default (IE < 9, Safari < 5.1).
*
* @memberOf _.support
* @type boolean
*/
- support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name');
+ support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||
+ propertyIsEnumerable.call(errorProto, 'name');
/**
* Detect if `prototype` properties are enumerable by default.
*
* Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1
* (if the prototype or a property on the prototype has been set)
- * incorrectly sets a function's `prototype` property [[Enumerable]]
- * value to `true`.
- *
- * @memberOf _.support
- * @type boolean
- */
- support.enumPrototypes = propertyIsEnumerable.call(ctor, 'prototype');
-
- /**
- * Detect if functions can be decompiled by `Function#toString`
- * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).
- *
- * @memberOf _.support
- * @type boolean
- */
- support.funcDecomp = !reNative.test(root.WinRTError) && reThis.test(function() { return this; });
-
- /**
- * Detect if `Function#name` is supported (all but IE).
- *
- * @memberOf _.support
- * @type boolean
- */
- support.funcNames = typeof Function.name == 'string';
-
- /**
- * Detect if `arguments` object indexes are non-enumerable
- * (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1).
+ * incorrectly set the `[[Enumerable]]` value of a function's `prototype`
+ * property to `true`.
*
* @memberOf _.support
* @type boolean
*/
- support.nonEnumArgs = key != 0;
+ support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');
/**
* Detect if properties shadowing those on `Object.prototype` are non-enumerable.
*
- * In IE < 9 an objects own properties, shadowing non-enumerable ones, are
- * made non-enumerable as well (a.k.a the JScript [[DontEnum]] bug).
+ * In IE < 9 an object's own properties, shadowing non-enumerable ones,
+ * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).
*
* @memberOf _.support
* @type boolean
support.nonEnumShadows = !/valueOf/.test(props);
/**
- * Detect if own properties are iterated after inherited properties (all but IE < 9).
+ * Detect if own properties are iterated after inherited properties (IE < 9).
*
* @memberOf _.support
* @type boolean
support.ownLast = props[0] != 'x';
/**
- * Detect if `Array#shift` and `Array#splice` augment array-like objects correctly.
+ * Detect if `Array#shift` and `Array#splice` augment array-like objects
+ * correctly.
*
- * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()`
- * and `splice()` functions that fail to remove the last element, `value[0]`,
- * of array-like objects even though the `length` property is set to `0`.
- * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()`
- * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9.
+ * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array
+ * `shift()` and `splice()` functions that fail to remove the last element,
+ * `value[0]`, of array-like objects even though the "length" property is
+ * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,
+ * while `splice()` is buggy regardless of mode in IE < 9.
*
* @memberOf _.support
* @type boolean
*/
- support.spliceObjects = (arrayRef.splice.call(object, 0, 1), !object[0]);
+ support.spliceObjects = (splice.call(object, 0, 1), !object[0]);
/**
* Detect lack of support for accessing string characters by index.
*
- * IE < 8 can't access characters by index and IE 8 can only access
- * characters by index on string literals.
+ * IE < 8 can't access characters by index. IE 8 can only access characters
+ * by index on string literals, not string objects.
*
* @memberOf _.support
* @type boolean
*/
support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';
+ }(1, 0));
- /**
- * Detect if a DOM node's [[Class]] is resolvable (all but IE < 9)
- * and that the JS engine errors when attempting to coerce an object to
- * a string without a `toString` function.
- *
- * @memberOf _.support
- * @type boolean
- */
- try {
- support.nodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + ''));
- } catch(e) {
- support.nodeClass = true;
- }
- }(1));
-
- /*--------------------------------------------------------------------------*/
+ /*------------------------------------------------------------------------*/
/**
- * The template used to create iterator functions.
+ * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
*
* @private
- * @param {Object} data The data object used to populate the text.
- * @returns {string} Returns the interpolated text.
+ * @param {*} value The value to wrap.
*/
- var iteratorTemplate = function(obj) {
-
- var __p = 'var index, iterable = ' +
- (obj.firstArg) +
- ', result = ' +
- (obj.init) +
- ';\nif (!iterable) return result;\n' +
- (obj.top) +
- ';';
- if (obj.array) {
- __p += '\nvar length = iterable.length; index = -1;\nif (' +
- (obj.array) +
- ') { ';
- if (support.unindexedChars) {
- __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } ';
- }
- __p += '\n while (++index < length) {\n ' +
- (obj.loop) +
- ';\n }\n}\nelse { ';
- } else if (support.nonEnumArgs) {
- __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' +
- (obj.loop) +
- ';\n }\n } else { ';
- }
-
- if (support.enumPrototypes) {
- __p += '\n var skipProto = typeof iterable == \'function\';\n ';
- }
-
- if (support.enumErrorProps) {
- __p += '\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n ';
- }
-
- var conditions = []; if (support.enumPrototypes) { conditions.push('!(skipProto && index == "prototype")'); } if (support.enumErrorProps) { conditions.push('!(skipErrorProps && (index == "message" || index == "name"))'); }
-
- if (obj.useHas && obj.keys) {
- __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n';
- if (conditions.length) {
- __p += ' if (' +
- (conditions.join(' && ')) +
- ') {\n ';
- }
- __p +=
- (obj.loop) +
- '; ';
- if (conditions.length) {
- __p += '\n }';
- }
- __p += '\n } ';
- } else {
- __p += '\n for (index in iterable) {\n';
- if (obj.useHas) { conditions.push("hasOwnProperty.call(iterable, index)"); } if (conditions.length) {
- __p += ' if (' +
- (conditions.join(' && ')) +
- ') {\n ';
- }
- __p +=
- (obj.loop) +
- '; ';
- if (conditions.length) {
- __p += '\n }';
- }
- __p += '\n } ';
- if (support.nonEnumShadows) {
- __p += '\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n ';
- for (k = 0; k < 7; k++) {
- __p += '\n index = \'' +
- (obj.shadowedProps[k]) +
- '\';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))';
- if (!obj.useHas) {
- __p += ' || (!nonEnum[index] && iterable[index] !== objectProto[index])';
- }
- __p += ') {\n ' +
- (obj.loop) +
- ';\n } ';
- }
- __p += '\n } ';
- }
-
- }
-
- if (obj.array || support.nonEnumArgs) {
- __p += '\n}';
- }
- __p +=
- (obj.bottom) +
- ';\nreturn result';
-
- return __p
- };
-
- /*--------------------------------------------------------------------------*/
+ function LazyWrapper(value) {
+ this.__wrapped__ = value;
+ this.__actions__ = null;
+ this.__dir__ = 1;
+ this.__dropCount__ = 0;
+ this.__filtered__ = false;
+ this.__iteratees__ = null;
+ this.__takeCount__ = POSITIVE_INFINITY;
+ this.__views__ = null;
+ }
/**
- * The base implementation of `_.bind` that creates the bound function and
- * sets its meta data.
+ * Creates a clone of the lazy wrapper object.
*
* @private
- * @param {Array} bindData The bind data array.
- * @returns {Function} Returns the new bound function.
+ * @name clone
+ * @memberOf LazyWrapper
+ * @returns {Object} Returns the cloned `LazyWrapper` object.
*/
- function baseBind(bindData) {
- var func = bindData[0],
- partialArgs = bindData[2],
- thisArg = bindData[4];
-
- function bound() {
- // `Function#bind` spec
- // http://es5.github.io/#x15.3.4.5
- if (partialArgs) {
- var args = partialArgs.slice();
- push.apply(args, arguments);
- }
- // mimic the constructor's `return` behavior
- // http://es5.github.io/#x13.2.2
- if (this instanceof bound) {
- // ensure `new bound` is an instance of `func`
- var thisBinding = baseCreate(func.prototype),
- result = func.apply(thisBinding, args || arguments);
- return isObject(result) ? result : thisBinding;
- }
- return func.apply(thisArg, args || arguments);
- }
- setBindData(bound, bindData);
- return bound;
+ function lazyClone() {
+ var actions = this.__actions__,
+ iteratees = this.__iteratees__,
+ views = this.__views__,
+ result = new LazyWrapper(this.__wrapped__);
+
+ result.__actions__ = actions ? arrayCopy(actions) : null;
+ result.__dir__ = this.__dir__;
+ result.__filtered__ = this.__filtered__;
+ result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
+ result.__takeCount__ = this.__takeCount__;
+ result.__views__ = views ? arrayCopy(views) : null;
+ return result;
}
/**
- * The base implementation of `_.clone` without argument juggling or support
- * for `thisArg` binding.
+ * Reverses the direction of lazy iteration.
*
* @private
- * @param {*} value The value to clone.
- * @param {boolean} [isDeep=false] Specify a deep clone.
- * @param {Function} [callback] The function to customize cloning values.
- * @param {Array} [stackA=[]] Tracks traversed source objects.
- * @param {Array} [stackB=[]] Associates clones with source counterparts.
- * @returns {*} Returns the cloned value.
+ * @name reverse
+ * @memberOf LazyWrapper
+ * @returns {Object} Returns the new reversed `LazyWrapper` object.
*/
- function baseClone(value, isDeep, callback, stackA, stackB) {
- if (callback) {
- var result = callback(value);
- if (typeof result != 'undefined') {
- return result;
- }
- }
- // inspect [[Class]]
- var isObj = isObject(value);
- if (isObj) {
- var className = toString.call(value);
- if (!cloneableClasses[className] || (!support.nodeClass && isNode(value))) {
- return value;
- }
- var ctor = ctorByClass[className];
- switch (className) {
- case boolClass:
- case dateClass:
- return new ctor(+value);
-
- case numberClass:
- case stringClass:
- return new ctor(value);
-
- case regexpClass:
- result = ctor(value.source, reFlags.exec(value));
- result.lastIndex = value.lastIndex;
- return result;
- }
+ function lazyReverse() {
+ if (this.__filtered__) {
+ var result = new LazyWrapper(this);
+ result.__dir__ = -1;
+ result.__filtered__ = true;
} else {
- return value;
+ result = this.clone();
+ result.__dir__ *= -1;
}
- var isArr = isArray(value);
- if (isDeep) {
- // check for circular references and return corresponding clone
- var initedStack = !stackA;
- stackA || (stackA = getArray());
- stackB || (stackB = getArray());
+ return result;
+ }
- var length = stackA.length;
- while (length--) {
- if (stackA[length] == value) {
- return stackB[length];
+ /**
+ * Extracts the unwrapped value from its lazy wrapper.
+ *
+ * @private
+ * @name value
+ * @memberOf LazyWrapper
+ * @returns {*} Returns the unwrapped value.
+ */
+ function lazyValue() {
+ var array = this.__wrapped__.value();
+ if (!isArray(array)) {
+ return baseWrapperValue(array, this.__actions__);
+ }
+ var dir = this.__dir__,
+ isRight = dir < 0,
+ view = getView(0, array.length, this.__views__),
+ start = view.start,
+ end = view.end,
+ length = end - start,
+ index = isRight ? end : (start - 1),
+ takeCount = nativeMin(length, this.__takeCount__),
+ iteratees = this.__iteratees__,
+ iterLength = iteratees ? iteratees.length : 0,
+ resIndex = 0,
+ result = [];
+
+ outer:
+ while (length-- && resIndex < takeCount) {
+ index += dir;
+
+ var iterIndex = -1,
+ value = array[index];
+
+ while (++iterIndex < iterLength) {
+ var data = iteratees[iterIndex],
+ iteratee = data.iteratee,
+ type = data.type;
+
+ if (type == LAZY_DROP_WHILE_FLAG) {
+ if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
+ data.count = 0;
+ data.done = false;
+ }
+ data.index = index;
+ if (!data.done) {
+ var limit = data.limit;
+ if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
+ continue outer;
+ }
+ }
+ } else {
+ var computed = iteratee(value);
+ if (type == LAZY_MAP_FLAG) {
+ value = computed;
+ } else if (!computed) {
+ if (type == LAZY_FILTER_FLAG) {
+ continue outer;
+ } else {
+ break outer;
+ }
+ }
}
}
- result = isArr ? ctor(value.length) : {};
- }
- else {
- result = isArr ? slice(value) : assign({}, value);
- }
- // add array properties assigned by `RegExp#exec`
- if (isArr) {
- if (hasOwnProperty.call(value, 'index')) {
- result.index = value.index;
- }
- if (hasOwnProperty.call(value, 'input')) {
- result.input = value.input;
- }
- }
- // exit for shallow clone
- if (!isDeep) {
- return result;
+ result[resIndex++] = value;
}
- // add the source value to the stack of traversed objects
- // and associate it with its clone
- stackA.push(value);
- stackB.push(result);
+ return result;
+ }
- // recursively populate clone (susceptible to call stack limits)
- (isArr ? baseEach : forOwn)(value, function(objValue, key) {
- result[key] = baseClone(objValue, isDeep, callback, stackA, stackB);
- });
+ /*------------------------------------------------------------------------*/
+
+ /**
+ *
+ * Creates a cache object to store unique values.
+ *
+ * @private
+ * @param {Array} [values] The values to cache.
+ */
+ function SetCache(values) {
+ var length = values ? values.length : 0;
- if (initedStack) {
- releaseArray(stackA);
- releaseArray(stackB);
+ this.data = { 'hash': nativeCreate(null), 'set': new Set };
+ while (length--) {
+ this.push(values[length]);
}
- return result;
}
/**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
+ * Checks if `value` is in `cache` mimicking the return signature of
+ * `_.indexOf` by returning `0` if the value is found, else `-1`.
*
* @private
- * @param {Object} prototype The object to inherit from.
- * @returns {Object} Returns the new object.
+ * @param {Object} cache The cache to search.
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `0` if `value` is found, else `-1`.
*/
- function baseCreate(prototype, properties) {
- return isObject(prototype) ? nativeCreate(prototype) : {};
- }
- // fallback for browsers without `Object.create`
- if (!nativeCreate) {
- baseCreate = (function() {
- function Object() {}
- return function(prototype) {
- if (isObject(prototype)) {
- Object.prototype = prototype;
- var result = new Object;
- Object.prototype = null;
- }
- return result || root.Object();
- };
- }());
+ function cacheIndexOf(cache, value) {
+ var data = cache.data,
+ result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
+
+ return result ? 0 : -1;
}
/**
- * The base implementation of `_.createCallback` without support for creating
- * "_.pluck" or "_.where" style callbacks.
+ * Adds `value` to the cache.
*
* @private
- * @param {*} [func=identity] The value to convert to a callback.
- * @param {*} [thisArg] The `this` binding of the created callback.
- * @param {number} [argCount] The number of arguments the callback accepts.
- * @returns {Function} Returns a callback function.
+ * @name push
+ * @memberOf SetCache
+ * @param {*} value The value to cache.
*/
- function baseCreateCallback(func, thisArg, argCount) {
- if (typeof func != 'function') {
- return identity;
- }
- // exit early for no `thisArg` or already bound by `Function#bind`
- if (typeof thisArg == 'undefined' || !('prototype' in func)) {
- return func;
- }
- var bindData = func.__bindData__;
- if (typeof bindData == 'undefined') {
- if (support.funcNames) {
- bindData = !func.name;
- }
- bindData = bindData || !support.funcDecomp;
- if (!bindData) {
- var source = fnToString.call(func);
- if (!support.funcNames) {
- bindData = !reFuncName.test(source);
- }
- if (!bindData) {
- // checks if `func` references the `this` keyword and stores the result
- bindData = reThis.test(source);
- setBindData(func, bindData);
- }
- }
- }
- // exit early if there are no `this` references or `func` is bound
- if (bindData === false || (bindData !== true && bindData[1] & 1)) {
- return func;
- }
- switch (argCount) {
- case 1: return function(value) {
- return func.call(thisArg, value);
- };
- case 2: return function(a, b) {
- return func.call(thisArg, a, b);
- };
- case 3: return function(value, index, collection) {
- return func.call(thisArg, value, index, collection);
- };
- case 4: return function(accumulator, value, index, collection) {
- return func.call(thisArg, accumulator, value, index, collection);
- };
+ function cachePush(value) {
+ var data = this.data;
+ if (typeof value == 'string' || isObject(value)) {
+ data.set.add(value);
+ } else {
+ data.hash[value] = true;
}
- return bind(func, thisArg);
}
+ /*------------------------------------------------------------------------*/
+
/**
- * The base implementation of `createWrapper` that creates the wrapper and
- * sets its meta data.
+ * Copies the values of `source` to `array`.
*
* @private
- * @param {Array} bindData The bind data array.
- * @returns {Function} Returns the new function.
+ * @param {Array} source The array to copy values from.
+ * @param {Array} [array=[]] The array to copy values to.
+ * @returns {Array} Returns `array`.
*/
- function baseCreateWrapper(bindData) {
- var func = bindData[0],
- bitmask = bindData[1],
- partialArgs = bindData[2],
- partialRightArgs = bindData[3],
- thisArg = bindData[4],
- arity = bindData[5];
-
- var isBind = bitmask & 1,
- isBindKey = bitmask & 2,
- isCurry = bitmask & 4,
- isCurryBound = bitmask & 8,
- key = func;
-
- function bound() {
- var thisBinding = isBind ? thisArg : this;
- if (partialArgs) {
- var args = partialArgs.slice();
- push.apply(args, arguments);
- }
- if (partialRightArgs || isCurry) {
- args || (args = slice(arguments));
- if (partialRightArgs) {
- push.apply(args, partialRightArgs);
- }
- if (isCurry && args.length < arity) {
- bitmask |= 16 & ~32;
- return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);
- }
- }
- args || (args = arguments);
- if (isBindKey) {
- func = thisBinding[key];
- }
- if (this instanceof bound) {
- thisBinding = baseCreate(func.prototype);
- var result = func.apply(thisBinding, args);
- return isObject(result) ? result : thisBinding;
- }
- return func.apply(thisBinding, args);
+ function arrayCopy(source, array) {
+ var index = -1,
+ length = source.length;
+
+ array || (array = Array(length));
+ while (++index < length) {
+ array[index] = source[index];
}
- setBindData(bound, bindData);
- return bound;
+ return array;
}
/**
- * The base implementation of `_.difference` that accepts a single array
- * of values to exclude.
+ * A specialized version of `_.forEach` for arrays without support for callback
+ * shorthands and `this` binding.
*
* @private
- * @param {Array} array The array to process.
- * @param {Array} [values] The array of values to exclude.
- * @returns {Array} Returns a new array of filtered values.
+ * @param {Array} array The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns `array`.
*/
- function baseDifference(array, values) {
+ function arrayEach(array, iteratee) {
var index = -1,
- indexOf = getIndexOf(),
- length = array ? array.length : 0,
- isLarge = length >= largeArraySize && indexOf === baseIndexOf,
- result = [];
+ length = array.length;
- if (isLarge) {
- var cache = createCache(values);
- if (cache) {
- indexOf = cacheIndexOf;
- values = cache;
- } else {
- isLarge = false;
+ while (++index < length) {
+ if (iteratee(array[index], index, array) === false) {
+ break;
}
}
+ return array;
+ }
+
+ /**
+ * A specialized version of `_.every` for arrays without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Array} array The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
+ * else `false`.
+ */
+ function arrayEvery(array, predicate) {
+ var index = -1,
+ length = array.length;
+
while (++index < length) {
- var value = array[index];
- if (indexOf(values, value) < 0) {
- result.push(value);
+ if (!predicate(array[index], index, array)) {
+ return false;
}
}
- if (isLarge) {
- releaseObject(values);
- }
- return result;
+ return true;
}
/**
- * The base implementation of `_.flatten` without support for callback
- * shorthands or `thisArg` binding.
+ * A specialized version of `_.filter` for arrays without support for callback
+ * shorthands and `this` binding.
*
* @private
- * @param {Array} array The array to flatten.
- * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level.
- * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects.
- * @param {number} [fromIndex=0] The index to start from.
- * @returns {Array} Returns a new flattened array.
+ * @param {Array} array The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
*/
- function baseFlatten(array, isShallow, isStrict, fromIndex) {
- var index = (fromIndex || 0) - 1,
- length = array ? array.length : 0,
+ function arrayFilter(array, predicate) {
+ var index = -1,
+ length = array.length,
+ resIndex = -1,
result = [];
while (++index < length) {
var value = array[index];
-
- if (value && typeof value == 'object' && typeof value.length == 'number'
- && (isArray(value) || isArguments(value))) {
- // recursively flatten arrays (susceptible to call stack limits)
- if (!isShallow) {
- value = baseFlatten(value, isShallow, isStrict);
- }
- var valIndex = -1,
- valLength = value.length,
- resIndex = result.length;
-
- result.length += valLength;
- while (++valIndex < valLength) {
- result[resIndex++] = value[valIndex];
- }
- } else if (!isStrict) {
- result.push(value);
+ if (predicate(value, index, array)) {
+ result[++resIndex] = value;
}
}
return result;
}
/**
- * The base implementation of `_.isEqual`, without support for `thisArg` binding,
- * that allows partial "_.where" style comparisons.
+ * A specialized version of `_.map` for arrays without support for callback
+ * shorthands and `this` binding.
*
* @private
- * @param {*} a The value to compare.
- * @param {*} b The other value to compare.
- * @param {Function} [callback] The function to customize comparing values.
- * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.
- * @param {Array} [stackA=[]] Tracks traversed `a` objects.
- * @param {Array} [stackB=[]] Tracks traversed `b` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @param {Array} array The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
*/
- function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {
- // used to indicate that when comparing objects, `a` has at least the properties of `b`
- if (callback) {
- var result = callback(a, b);
- if (typeof result != 'undefined') {
- return !!result;
- }
- }
- // exit early for identical values
- if (a === b) {
- // treat `+0` vs. `-0` as not equal
- return a !== 0 || (1 / a == 1 / b);
- }
- var type = typeof a,
- otherType = typeof b;
-
- // exit early for unlike primitive values
- if (a === a &&
- !(a && objectTypes[type]) &&
- !(b && objectTypes[otherType])) {
- return false;
- }
- // exit early for `null` and `undefined` avoiding ES3's Function#call behavior
- // http://es5.github.io/#x15.3.4.4
- if (a == null || b == null) {
- return a === b;
- }
- // compare [[Class]] names
- var className = toString.call(a),
- otherClass = toString.call(b);
-
- if (className == argsClass) {
- className = objectClass;
- }
- if (otherClass == argsClass) {
- otherClass = objectClass;
- }
- if (className != otherClass) {
- return false;
- }
- switch (className) {
- case boolClass:
- case dateClass:
- // coerce dates and booleans to numbers, dates to milliseconds and booleans
- // to `1` or `0` treating invalid dates coerced to `NaN` as not equal
- return +a == +b;
-
- case numberClass:
- // treat `NaN` vs. `NaN` as equal
- return (a != +a)
- ? b != +b
- // but treat `+0` vs. `-0` as not equal
- : (a == 0 ? (1 / a == 1 / b) : a == +b);
-
- case regexpClass:
- case stringClass:
- // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)
- // treat string primitives and their corresponding object instances as equal
- return a == String(b);
- }
- var isArr = className == arrayClass;
- if (!isArr) {
- // unwrap any `lodash` wrapped values
- var aWrapped = hasOwnProperty.call(a, '__wrapped__'),
- bWrapped = hasOwnProperty.call(b, '__wrapped__');
-
- if (aWrapped || bWrapped) {
- return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);
- }
- // exit for functions and DOM nodes
- if (className != objectClass || (!support.nodeClass && (isNode(a) || isNode(b)))) {
- return false;
- }
- // in older versions of Opera, `arguments` objects have `Array` constructors
- var ctorA = !support.argsObject && isArguments(a) ? Object : a.constructor,
- ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor;
-
- // non `Object` object instances with different constructors are not equal
- if (ctorA != ctorB &&
- !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
- ('constructor' in a && 'constructor' in b)
- ) {
- return false;
- }
- }
- // assume cyclic structures are equal
- // the algorithm for detecting cyclic structures is adapted from ES 5.1
- // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)
- var initedStack = !stackA;
- stackA || (stackA = getArray());
- stackB || (stackB = getArray());
+ function arrayMap(array, iteratee) {
+ var index = -1,
+ length = array.length,
+ result = Array(length);
- var length = stackA.length;
- while (length--) {
- if (stackA[length] == a) {
- return stackB[length] == b;
- }
+ while (++index < length) {
+ result[index] = iteratee(array[index], index, array);
}
- var size = 0;
- result = true;
-
- // add `a` and `b` to the stack of traversed objects
- stackA.push(a);
- stackB.push(b);
-
- // recursively compare objects and arrays (susceptible to call stack limits)
- if (isArr) {
- length = a.length;
- size = b.length;
-
- // compare lengths to determine if a deep comparison is necessary
- result = size == a.length;
- if (!result && !isWhere) {
- return result;
- }
- // deep compare the contents, ignoring non-numeric properties
- while (size--) {
- var index = length,
- value = b[size];
+ return result;
+ }
- if (isWhere) {
- while (index--) {
- if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {
- break;
- }
- }
- } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {
- break;
- }
- }
- return result;
- }
- // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`
- // which, in this case, is more costly
- forIn(b, function(value, key, b) {
- if (hasOwnProperty.call(b, key)) {
- // count the number of properties.
- size++;
- // deep compare each property value.
- return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));
- }
- });
+ /**
+ * A specialized version of `_.reduce` for arrays without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Array} array The array to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {*} [accumulator] The initial value.
+ * @param {boolean} [initFromArray] Specify using the first element of `array`
+ * as the initial value.
+ * @returns {*} Returns the accumulated value.
+ */
+ function arrayReduce(array, iteratee, accumulator, initFromArray) {
+ var index = -1,
+ length = array.length;
- if (result && !isWhere) {
- // ensure both objects have the same number of properties
- forIn(a, function(value, key, a) {
- if (hasOwnProperty.call(a, key)) {
- // `size` will be `-1` if `a` has more properties than `b`
- return (result = --size > -1);
- }
- });
+ if (initFromArray && length) {
+ accumulator = array[++index];
}
- if (initedStack) {
- releaseArray(stackA);
- releaseArray(stackB);
+ while (++index < length) {
+ accumulator = iteratee(accumulator, array[index], index, array);
}
- return result;
+ return accumulator;
}
/**
- * The base implementation of `_.merge` without argument juggling or support
- * for `thisArg` binding.
+ * A specialized version of `_.some` for arrays without support for callback
+ * shorthands and `this` binding.
*
* @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {Function} [callback] The function to customize merging properties.
- * @param {Array} [stackA=[]] Tracks traversed source objects.
- * @param {Array} [stackB=[]] Associates values with source counterparts.
+ * @param {Array} array The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ * else `false`.
*/
- function baseMerge(object, source, callback, stackA, stackB) {
- (isArray(source) ? forEach : forOwn)(source, function(source, key) {
- var found,
- isArr,
- result = source,
- value = object[key];
-
- if (source && ((isArr = isArray(source)) || isPlainObject(source))) {
- // avoid merging previously merged cyclic sources
- var stackLength = stackA.length;
- while (stackLength--) {
- if ((found = stackA[stackLength] == source)) {
- value = stackB[stackLength];
- break;
- }
- }
- if (!found) {
- var isShallow;
- if (callback) {
- result = callback(value, source);
- if ((isShallow = typeof result != 'undefined')) {
- value = result;
- }
- }
- if (!isShallow) {
- value = isArr
- ? (isArray(value) ? value : [])
- : (isPlainObject(value) ? value : {});
- }
- // add `source` and associated `value` to the stack of traversed objects
- stackA.push(source);
- stackB.push(value);
+ function arraySome(array, predicate) {
+ var index = -1,
+ length = array.length;
- // recursively merge objects and arrays (susceptible to call stack limits)
- if (!isShallow) {
- baseMerge(value, source, callback, stackA, stackB);
- }
- }
- }
- else {
- if (callback) {
- result = callback(value, source);
- if (typeof result == 'undefined') {
- result = source;
- }
- }
- if (typeof result != 'undefined') {
- value = result;
- }
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
}
- object[key] = value;
- });
+ }
+ return false;
}
/**
- * The base implementation of `_.uniq` without support for callback shorthands
- * or `thisArg` binding.
+ * A specialized version of `_.assign` for customizing assigned values without
+ * support for argument juggling, multiple sources, and `this` binding `customizer`
+ * functions.
*
* @private
- * @param {Array} array The array to process.
- * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
- * @param {Function} [callback] The function called per iteration.
- * @returns {Array} Returns a duplicate-value-free array.
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {Function} customizer The function to customize assigned values.
+ * @returns {Object} Returns `object`.
*/
- function baseUniq(array, isSorted, callback) {
+ function assignWith(object, source, customizer) {
var index = -1,
- indexOf = getIndexOf(),
- length = array ? array.length : 0,
- result = [];
+ props = keys(source),
+ length = props.length;
- var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf,
- seen = (callback || isLarge) ? getArray() : result;
-
- if (isLarge) {
- var cache = createCache(seen);
- if (cache) {
- indexOf = cacheIndexOf;
- seen = cache;
- } else {
- isLarge = false;
- seen = callback ? seen : (releaseArray(seen), result);
- }
- }
while (++index < length) {
- var value = array[index],
- computed = callback ? callback(value, index, array) : value;
+ var key = props[index],
+ value = object[key],
+ result = customizer(value, source[key], key, object, source);
- if (isSorted
- ? !index || seen[seen.length - 1] !== computed
- : indexOf(seen, computed) < 0
- ) {
- if (callback || isLarge) {
- seen.push(computed);
- }
- result.push(value);
+ if ((result === result ? (result !== value) : (value === value)) ||
+ (value === undefined && !(key in object))) {
+ object[key] = result;
}
}
- if (isLarge) {
- releaseArray(seen.array);
- releaseObject(seen);
- } else if (callback) {
- releaseArray(seen);
- }
- return result;
+ return object;
}
/**
- * Creates a function that aggregates a collection, creating an object composed
- * of keys generated from the results of running each element of the collection
- * through a callback. The given `setter` function sets the keys and values
- * of the composed object.
+ * The base implementation of `_.assign` without support for argument juggling,
+ * multiple sources, and `customizer` functions.
*
* @private
- * @param {Function} setter The setter function.
- * @returns {Function} Returns the new aggregator function.
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
*/
- function createAggregator(setter) {
- return function(collection, callback, thisArg) {
- var result = {};
- callback = lodash.createCallback(callback, thisArg, 3);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- var value = collection[index];
- setter(result, value, callback(value, index, collection), collection);
- }
- } else {
- baseEach(collection, function(value, key, collection) {
- setter(result, value, callback(value, key, collection), collection);
- });
- }
- return result;
- };
+ function baseAssign(object, source) {
+ return source == null
+ ? object
+ : baseCopy(source, keys(source), object);
}
/**
- * Creates a function that, when called, either curries or invokes `func`
- * with an optional `this` binding and partially applied arguments.
+ * Copies properties of `source` to `object`.
*
* @private
- * @param {Function|string} func The function or method name to reference.
- * @param {number} bitmask The bitmask of method flags to compose.
- * The bitmask may be composed of the following flags:
- * 1 - `_.bind`
- * 2 - `_.bindKey`
- * 4 - `_.curry`
- * 8 - `_.curry` (bound)
- * 16 - `_.partial`
- * 32 - `_.partialRight`
- * @param {Array} [partialArgs] An array of arguments to prepend to those
- * provided to the new function.
- * @param {Array} [partialRightArgs] An array of arguments to append to those
- * provided to the new function.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new function.
+ * @param {Object} source The object to copy properties from.
+ * @param {Array} props The property names to copy.
+ * @param {Object} [object={}] The object to copy properties to.
+ * @returns {Object} Returns `object`.
*/
- function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {
- var isBind = bitmask & 1,
- isBindKey = bitmask & 2,
- isCurry = bitmask & 4,
- isCurryBound = bitmask & 8,
- isPartial = bitmask & 16,
- isPartialRight = bitmask & 32;
-
- if (!isBindKey && !isFunction(func)) {
- throw new TypeError;
- }
- if (isPartial && !partialArgs.length) {
- bitmask &= ~16;
- isPartial = partialArgs = false;
- }
- if (isPartialRight && !partialRightArgs.length) {
- bitmask &= ~32;
- isPartialRight = partialRightArgs = false;
- }
- var bindData = func && func.__bindData__;
- if (bindData && bindData !== true) {
- bindData = bindData.slice();
-
- // set `thisBinding` is not previously bound
- if (isBind && !(bindData[1] & 1)) {
- bindData[4] = thisArg;
- }
- // set if previously bound but not currently (subsequent curried functions)
- if (!isBind && bindData[1] & 1) {
- bitmask |= 8;
- }
- // set curried arity if not yet set
- if (isCurry && !(bindData[1] & 4)) {
- bindData[5] = arity;
- }
- // append partial left arguments
- if (isPartial) {
- push.apply(bindData[2] || (bindData[2] = []), partialArgs);
- }
- // append partial right arguments
- if (isPartialRight) {
- push.apply(bindData[3] || (bindData[3] = []), partialRightArgs);
- }
- // merge flags
- bindData[1] |= bitmask;
- return createWrapper.apply(null, bindData);
+ function baseCopy(source, props, object) {
+ object || (object = {});
+
+ var index = -1,
+ length = props.length;
+
+ while (++index < length) {
+ var key = props[index];
+ object[key] = source[key];
}
- // fast path for `_.bind`
- var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;
- return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);
+ return object;
}
/**
- * Creates compiled iteration functions.
+ * The base implementation of `_.callback` which supports specifying the
+ * number of arguments to provide to `func`.
*
* @private
- * @param {...Object} [options] The compile options object(s).
- * @param {string} [options.array] Code to determine if the iterable is an array or array-like.
- * @param {boolean} [options.useHas] Specify using `hasOwnProperty` checks in the object loop.
- * @param {Function} [options.keys] A reference to `_.keys` for use in own property iteration.
- * @param {string} [options.args] A comma separated string of iteration function arguments.
- * @param {string} [options.top] Code to execute before the iteration branches.
- * @param {string} [options.loop] Code to execute in the object loop.
- * @param {string} [options.bottom] Code to execute after the iteration branches.
- * @returns {Function} Returns the compiled function.
+ * @param {*} [func=_.identity] The value to convert to a callback.
+ * @param {*} [thisArg] The `this` binding of `func`.
+ * @param {number} [argCount] The number of arguments to provide to `func`.
+ * @returns {Function} Returns the callback.
*/
- function createIterator() {
- // data properties
- iteratorData.shadowedProps = shadowedProps;
-
- // iterator options
- iteratorData.array = iteratorData.bottom = iteratorData.loop = iteratorData.top = '';
- iteratorData.init = 'iterable';
- iteratorData.useHas = true;
-
- // merge options into a template data object
- for (var object, index = 0; object = arguments[index]; index++) {
- for (var key in object) {
- iteratorData[key] = object[key];
- }
+ function baseCallback(func, thisArg, argCount) {
+ var type = typeof func;
+ if (type == 'function') {
+ return thisArg === undefined
+ ? func
+ : bindCallback(func, thisArg, argCount);
}
- var args = iteratorData.args;
- iteratorData.firstArg = /^[^,]+/.exec(args)[0];
-
- // create the function factory
- var factory = Function(
- 'baseCreateCallback, errorClass, errorProto, hasOwnProperty, ' +
- 'indicatorObject, isArguments, isArray, isString, keys, objectProto, ' +
- 'objectTypes, nonEnumProps, stringClass, stringProto, toString',
- 'return function(' + args + ') {\n' + iteratorTemplate(iteratorData) + '\n}'
- );
-
- // return the compiled function
- return factory(
- baseCreateCallback, errorClass, errorProto, hasOwnProperty,
- indicatorObject, isArguments, isArray, isString, iteratorData.keys, objectProto,
- objectTypes, nonEnumProps, stringClass, stringProto, toString
- );
+ if (func == null) {
+ return identity;
+ }
+ if (type == 'object') {
+ return baseMatches(func);
+ }
+ return thisArg === undefined
+ ? property(func)
+ : baseMatchesProperty(func, thisArg);
}
/**
- * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
- * customized, this method returns the custom method, otherwise it returns
- * the `baseIndexOf` function.
+ * The base implementation of `_.clone` without support for argument juggling
+ * and `this` binding `customizer` functions.
*
* @private
- * @returns {Function} Returns the "indexOf" function.
+ * @param {*} value The value to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @param {Function} [customizer] The function to customize cloning values.
+ * @param {string} [key] The key of `value`.
+ * @param {Object} [object] The object `value` belongs to.
+ * @param {Array} [stackA=[]] Tracks traversed source objects.
+ * @param {Array} [stackB=[]] Associates clones with source counterparts.
+ * @returns {*} Returns the cloned value.
*/
- function getIndexOf() {
- var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result;
+ function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
+ var result;
+ if (customizer) {
+ result = object ? customizer(value, key, object) : customizer(value);
+ }
+ if (result !== undefined) {
+ return result;
+ }
+ if (!isObject(value)) {
+ return value;
+ }
+ var isArr = isArray(value);
+ if (isArr) {
+ result = initCloneArray(value);
+ if (!isDeep) {
+ return arrayCopy(value, result);
+ }
+ } else {
+ var tag = objToString.call(value),
+ isFunc = tag == funcTag;
+
+ if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
+ if (isHostObject(value)) {
+ return object ? value : {};
+ }
+ result = initCloneObject(isFunc ? {} : value);
+ if (!isDeep) {
+ return baseAssign(result, value);
+ }
+ } else {
+ return cloneableTags[tag]
+ ? initCloneByTag(value, tag, isDeep)
+ : (object ? value : {});
+ }
+ }
+ // Check for circular references and return corresponding clone.
+ stackA || (stackA = []);
+ stackB || (stackB = []);
+
+ var length = stackA.length;
+ while (length--) {
+ if (stackA[length] == value) {
+ return stackB[length];
+ }
+ }
+ // Add the source value to the stack of traversed objects and associate it with its clone.
+ stackA.push(value);
+ stackB.push(result);
+
+ // Recursively populate clone (susceptible to call stack limits).
+ (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
+ result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
+ });
return result;
}
/**
- * Sets `this` binding data on a given function.
+ * The base implementation of `_.create` without support for assigning
+ * properties to the created object.
*
* @private
- * @param {Function} func The function to set data on.
- * @param {Array} value The data array to set.
+ * @param {Object} prototype The object to inherit from.
+ * @returns {Object} Returns the new object.
*/
- var setBindData = !defineProperty ? noop : function(func, value) {
- descriptor.value = value;
- defineProperty(func, '__bindData__', descriptor);
- };
+ var baseCreate = (function() {
+ function object() {}
+ return function(prototype) {
+ if (isObject(prototype)) {
+ object.prototype = prototype;
+ var result = new object;
+ object.prototype = null;
+ }
+ return result || {};
+ };
+ }());
/**
- * A fallback implementation of `isPlainObject` which checks if a given value
- * is an object created by the `Object` constructor, assuming objects created
- * by the `Object` constructor have no inherited enumerable properties and that
- * there are no `Object.prototype` extensions.
+ * The base implementation of `_.difference` which accepts a single array
+ * of values to exclude.
*
* @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @param {Array} array The array to inspect.
+ * @param {Array} values The values to exclude.
+ * @returns {Array} Returns the new array of filtered values.
*/
- function shimIsPlainObject(value) {
- var ctor,
- result;
-
- // avoid non Object objects, `arguments` objects, and DOM elements
- if (!(value && toString.call(value) == objectClass) ||
- (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor)) ||
- (!support.argsClass && isArguments(value)) ||
- (!support.nodeClass && isNode(value))) {
- return false;
- }
+ function baseDifference(array, values) {
+ var length = array ? array.length : 0,
+ result = [];
+
+ if (!length) {
+ return result;
+ }
+ var index = -1,
+ indexOf = getIndexOf(),
+ isCommon = indexOf == baseIndexOf,
+ cache = (isCommon && values.length >= 200) ? createCache(values) : null,
+ valuesLength = values.length;
+
+ if (cache) {
+ indexOf = cacheIndexOf;
+ isCommon = false;
+ values = cache;
+ }
+ outer:
+ while (++index < length) {
+ var value = array[index];
+
+ if (isCommon && value === value) {
+ var valuesIndex = valuesLength;
+ while (valuesIndex--) {
+ if (values[valuesIndex] === value) {
+ continue outer;
+ }
+ }
+ result.push(value);
+ }
+ else if (indexOf(values, value, 0) < 0) {
+ result.push(value);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.forEach` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array|Object|string} Returns `collection`.
+ */
+ var baseEach = createBaseEach(baseForOwn);
+
+ /**
+ * The base implementation of `_.every` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
+ * else `false`
+ */
+ function baseEvery(collection, predicate) {
+ var result = true;
+ baseEach(collection, function(value, index, collection) {
+ result = !!predicate(value, index, collection);
+ return result;
+ });
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.filter` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Array} Returns the new filtered array.
+ */
+ function baseFilter(collection, predicate) {
+ var result = [];
+ baseEach(collection, function(value, index, collection) {
+ if (predicate(value, index, collection)) {
+ result.push(value);
+ }
+ });
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
+ * without support for callback shorthands and `this` binding, which iterates
+ * over `collection` using the provided `eachFunc`.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to search.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {Function} eachFunc The function to iterate over `collection`.
+ * @param {boolean} [retKey] Specify returning the key of the found element
+ * instead of the element itself.
+ * @returns {*} Returns the found element or its key, else `undefined`.
+ */
+ function baseFind(collection, predicate, eachFunc, retKey) {
+ var result;
+ eachFunc(collection, function(value, key, collection) {
+ if (predicate(value, key, collection)) {
+ result = retKey ? key : value;
+ return false;
+ }
+ });
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.flatten` with added support for restricting
+ * flattening and specifying the start index.
+ *
+ * @private
+ * @param {Array} array The array to flatten.
+ * @param {boolean} [isDeep] Specify a deep flatten.
+ * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
+ * @returns {Array} Returns the new flattened array.
+ */
+ function baseFlatten(array, isDeep, isStrict) {
+ var index = -1,
+ length = array.length,
+ resIndex = -1,
+ result = [];
+
+ while (++index < length) {
+ var value = array[index];
+ if (isObjectLike(value) && isArrayLike(value) &&
+ (isStrict || isArray(value) || isArguments(value))) {
+ if (isDeep) {
+ // Recursively flatten arrays (susceptible to call stack limits).
+ value = baseFlatten(value, isDeep, isStrict);
+ }
+ var valIndex = -1,
+ valLength = value.length;
+
+ while (++valIndex < valLength) {
+ result[++resIndex] = value[valIndex];
+ }
+ } else if (!isStrict) {
+ result[++resIndex] = value;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `baseForIn` and `baseForOwn` which iterates
+ * over `object` properties returned by `keysFunc` invoking `iteratee` for
+ * each property. Iteratee functions may exit iteration early by explicitly
+ * returning `false`.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {Function} keysFunc The function to get the keys of `object`.
+ * @returns {Object} Returns `object`.
+ */
+ var baseFor = createBaseFor();
+
+ /**
+ * The base implementation of `_.forIn` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Object} Returns `object`.
+ */
+ function baseForIn(object, iteratee) {
+ return baseFor(object, iteratee, keysIn);
+ }
+
+ /**
+ * The base implementation of `_.forOwn` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Object} Returns `object`.
+ */
+ function baseForOwn(object, iteratee) {
+ return baseFor(object, iteratee, keys);
+ }
+
+ /**
+ * The base implementation of `_.functions` which creates an array of
+ * `object` function property names filtered from those provided.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Array} props The property names to filter.
+ * @returns {Array} Returns the new array of filtered property names.
+ */
+ function baseFunctions(object, props) {
+ var index = -1,
+ length = props.length,
+ resIndex = -1,
+ result = [];
+
+ while (++index < length) {
+ var key = props[index];
+ if (isFunction(object[key])) {
+ result[++resIndex] = key;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `get` without support for string paths
+ * and default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array} path The path of the property to get.
+ * @param {string} [pathKey] The key representation of path.
+ * @returns {*} Returns the resolved value.
+ */
+ function baseGet(object, path, pathKey) {
+ if (object == null) {
+ return;
+ }
+ object = toObject(object);
+ if (pathKey !== undefined && pathKey in object) {
+ path = [pathKey];
+ }
+ var index = 0,
+ length = path.length;
+
+ while (object != null && index < length) {
+ object = toObject(object)[path[index++]];
+ }
+ return (index && index == length) ? object : undefined;
+ }
+
+ /**
+ * The base implementation of `_.isEqual` without support for `this` binding
+ * `customizer` functions.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {Function} [customizer] The function to customize comparing values.
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
+ * @param {Array} [stackA] Tracks traversed `value` objects.
+ * @param {Array} [stackB] Tracks traversed `other` objects.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ */
+ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
+ if (value === other) {
+ return true;
+ }
+ if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
+ return value !== value && other !== other;
+ }
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
+ }
+
+ /**
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
+ * deep comparisons and tracks traversed objects enabling objects with circular
+ * references to be compared.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} [customizer] The function to customize comparing objects.
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
+ * @param {Array} [stackA=[]] Tracks traversed `value` objects.
+ * @param {Array} [stackB=[]] Tracks traversed `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+ function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
+ var objIsArr = isArray(object),
+ othIsArr = isArray(other),
+ objTag = arrayTag,
+ othTag = arrayTag;
+
+ if (!objIsArr) {
+ objTag = objToString.call(object);
+ if (objTag == argsTag) {
+ objTag = objectTag;
+ } else if (objTag != objectTag) {
+ objIsArr = isTypedArray(object);
+ }
+ }
+ if (!othIsArr) {
+ othTag = objToString.call(other);
+ if (othTag == argsTag) {
+ othTag = objectTag;
+ } else if (othTag != objectTag) {
+ othIsArr = isTypedArray(other);
+ }
+ }
+ var objIsObj = objTag == objectTag && !isHostObject(object),
+ othIsObj = othTag == objectTag && !isHostObject(other),
+ isSameTag = objTag == othTag;
+
+ if (isSameTag && !(objIsArr || objIsObj)) {
+ return equalByTag(object, other, objTag);
+ }
+ if (!isLoose) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+ if (objIsWrapped || othIsWrapped) {
+ return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
+ }
+ }
+ if (!isSameTag) {
+ return false;
+ }
+ // Assume cyclic values are equal.
+ // For more information on detecting circular references see https://es5.github.io/#JO.
+ stackA || (stackA = []);
+ stackB || (stackB = []);
+
+ var length = stackA.length;
+ while (length--) {
+ if (stackA[length] == object) {
+ return stackB[length] == other;
+ }
+ }
+ // Add `object` and `other` to the stack of traversed objects.
+ stackA.push(object);
+ stackB.push(other);
+
+ var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
+
+ stackA.pop();
+ stackB.pop();
+
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.isMatch` without support for callback
+ * shorthands and `this` binding.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Array} matchData The propery names, values, and compare flags to match.
+ * @param {Function} [customizer] The function to customize comparing objects.
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ */
+ function baseIsMatch(object, matchData, customizer) {
+ var index = matchData.length,
+ length = index,
+ noCustomizer = !customizer;
+
+ if (object == null) {
+ return !length;
+ }
+ object = toObject(object);
+ while (index--) {
+ var data = matchData[index];
+ if ((noCustomizer && data[2])
+ ? data[1] !== object[data[0]]
+ : !(data[0] in object)
+ ) {
+ return false;
+ }
+ }
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0],
+ objValue = object[key],
+ srcValue = data[1];
+
+ if (noCustomizer && data[2]) {
+ if (objValue === undefined && !(key in object)) {
+ return false;
+ }
+ } else {
+ var result = customizer ? customizer(objValue, srcValue, key) : undefined;
+ if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * The base implementation of `_.map` without support for callback shorthands
+ * and `this` binding.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the new mapped array.
+ */
+ function baseMap(collection, iteratee) {
+ var index = -1,
+ result = isArrayLike(collection) ? Array(collection.length) : [];
+
+ baseEach(collection, function(value, key, collection) {
+ result[++index] = iteratee(value, key, collection);
+ });
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.matches` which does not clone `source`.
+ *
+ * @private
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new function.
+ */
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+ if (matchData.length == 1 && matchData[0][2]) {
+ var key = matchData[0][0],
+ value = matchData[0][1];
+
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ object = toObject(object);
+ return object[key] === value && (value !== undefined || (key in object));
+ };
+ }
+ return function(object) {
+ return baseIsMatch(object, matchData);
+ };
+ }
+
+ /**
+ * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
+ *
+ * @private
+ * @param {string} path The path of the property to get.
+ * @param {*} srcValue The value to compare.
+ * @returns {Function} Returns the new function.
+ */
+ function baseMatchesProperty(path, srcValue) {
+ var isArr = isArray(path),
+ isCommon = isKey(path) && isStrictComparable(srcValue),
+ pathKey = (path + '');
+
+ path = toPath(path);
+ return function(object) {
+ if (object == null) {
+ return false;
+ }
+ var key = pathKey;
+ object = toObject(object);
+ if ((isArr || !isCommon) && !(key in object)) {
+ object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
+ if (object == null) {
+ return false;
+ }
+ key = last(path);
+ object = toObject(object);
+ }
+ return object[key] === srcValue
+ ? (srcValue !== undefined || (key in object))
+ : baseIsEqual(srcValue, object[key], undefined, true);
+ };
+ }
+
+ /**
+ * The base implementation of `_.merge` without support for argument juggling,
+ * multiple sources, and `this` binding `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {Function} [customizer] The function to customize merging properties.
+ * @param {Array} [stackA=[]] Tracks traversed source objects.
+ * @param {Array} [stackB=[]] Associates values with source counterparts.
+ * @returns {Object} Returns `object`.
+ */
+ function baseMerge(object, source, customizer, stackA, stackB) {
+ if (!isObject(object)) {
+ return object;
+ }
+ var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),
+ props = isSrcArr ? null : keys(source);
+
+ arrayEach(props || source, function(srcValue, key) {
+ if (props) {
+ key = srcValue;
+ srcValue = source[key];
+ }
+ if (isObjectLike(srcValue)) {
+ stackA || (stackA = []);
+ stackB || (stackB = []);
+ baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
+ }
+ else {
+ var value = object[key],
+ result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
+ isCommon = result === undefined;
+
+ if (isCommon) {
+ result = srcValue;
+ }
+ if ((result !== undefined || (isSrcArr && !(key in object))) &&
+ (isCommon || (result === result ? (result !== value) : (value === value)))) {
+ object[key] = result;
+ }
+ }
+ });
+ return object;
+ }
+
+ /**
+ * A specialized version of `baseMerge` for arrays and objects which performs
+ * deep merges and tracks traversed objects enabling objects with circular
+ * references to be merged.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @param {string} key The key of the value to merge.
+ * @param {Function} mergeFunc The function to merge values.
+ * @param {Function} [customizer] The function to customize merging properties.
+ * @param {Array} [stackA=[]] Tracks traversed source objects.
+ * @param {Array} [stackB=[]] Associates values with source counterparts.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
+ var length = stackA.length,
+ srcValue = source[key];
+
+ while (length--) {
+ if (stackA[length] == srcValue) {
+ object[key] = stackB[length];
+ return;
+ }
+ }
+ var value = object[key],
+ result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
+ isCommon = result === undefined;
+
+ if (isCommon) {
+ result = srcValue;
+ if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {
+ result = isArray(value)
+ ? value
+ : (isArrayLike(value) ? arrayCopy(value) : []);
+ }
+ else if (isPlainObject(srcValue) || isArguments(srcValue)) {
+ result = isArguments(value)
+ ? toPlainObject(value)
+ : (isPlainObject(value) ? value : {});
+ }
+ else {
+ isCommon = false;
+ }
+ }
+ // Add the source value to the stack of traversed objects and associate
+ // it with its merged value.
+ stackA.push(srcValue);
+ stackB.push(result);
+
+ if (isCommon) {
+ // Recursively merge objects and arrays (susceptible to call stack limits).
+ object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
+ } else if (result === result ? (result !== value) : (value === value)) {
+ object[key] = result;
+ }
+ }
+
+ /**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new function.
+ */
+ function baseProperty(key) {
+ return function(object) {
+ return object == null ? undefined : toObject(object)[key];
+ };
+ }
+
+ /**
+ * A specialized version of `baseProperty` which supports deep paths.
+ *
+ * @private
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new function.
+ */
+ function basePropertyDeep(path) {
+ var pathKey = (path + '');
+ path = toPath(path);
+ return function(object) {
+ return baseGet(object, path, pathKey);
+ };
+ }
+
+ /**
+ * The base implementation of `_.reduce` and `_.reduceRight` without support
+ * for callback shorthands and `this` binding, which iterates over `collection`
+ * using the provided `eachFunc`.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {*} accumulator The initial value.
+ * @param {boolean} initFromCollection Specify using the first or last element
+ * of `collection` as the initial value.
+ * @param {Function} eachFunc The function to iterate over `collection`.
+ * @returns {*} Returns the accumulated value.
+ */
+ function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
+ eachFunc(collection, function(value, index, collection) {
+ accumulator = initFromCollection
+ ? (initFromCollection = false, value)
+ : iteratee(accumulator, value, index, collection);
+ });
+ return accumulator;
+ }
+
+ /**
+ * The base implementation of `setData` without support for hot loop detection.
+ *
+ * @private
+ * @param {Function} func The function to associate metadata with.
+ * @param {*} data The metadata.
+ * @returns {Function} Returns `func`.
+ */
+ var baseSetData = !metaMap ? identity : function(func, data) {
+ metaMap.set(func, data);
+ return func;
+ };
+
+ /**
+ * The base implementation of `_.slice` without an iteratee call guard.
+ *
+ * @private
+ * @param {Array} array The array to slice.
+ * @param {number} [start=0] The start position.
+ * @param {number} [end=array.length] The end position.
+ * @returns {Array} Returns the slice of `array`.
+ */
+ function baseSlice(array, start, end) {
+ var index = -1,
+ length = array.length;
+
+ start = start == null ? 0 : (+start || 0);
+ if (start < 0) {
+ start = -start > length ? 0 : (length + start);
+ }
+ end = (end === undefined || end > length) ? length : (+end || 0);
+ if (end < 0) {
+ end += length;
+ }
+ length = start > end ? 0 : ((end - start) >>> 0);
+ start >>>= 0;
+
+ var result = Array(length);
+ while (++index < length) {
+ result[index] = array[index + start];
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.some` without support for callback shorthands
+ * and `this` binding.
+ *
+ * @private
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ * else `false`.
+ */
+ function baseSome(collection, predicate) {
+ var result;
+
+ baseEach(collection, function(value, index, collection) {
+ result = predicate(value, index, collection);
+ return !result;
+ });
+ return !!result;
+ }
+
+ /**
+ * The base implementation of `_.uniq` without support for callback shorthands
+ * and `this` binding.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The function invoked per iteration.
+ * @returns {Array} Returns the new duplicate-value-free array.
+ */
+ function baseUniq(array, iteratee) {
+ var index = -1,
+ indexOf = getIndexOf(),
+ length = array.length,
+ isCommon = indexOf == baseIndexOf,
+ isLarge = isCommon && length >= 200,
+ seen = isLarge ? createCache() : null,
+ result = [];
+
+ if (seen) {
+ indexOf = cacheIndexOf;
+ isCommon = false;
+ } else {
+ isLarge = false;
+ seen = iteratee ? [] : result;
+ }
+ outer:
+ while (++index < length) {
+ var value = array[index],
+ computed = iteratee ? iteratee(value, index, array) : value;
+
+ if (isCommon && value === value) {
+ var seenIndex = seen.length;
+ while (seenIndex--) {
+ if (seen[seenIndex] === computed) {
+ continue outer;
+ }
+ }
+ if (iteratee) {
+ seen.push(computed);
+ }
+ result.push(value);
+ }
+ else if (indexOf(seen, computed, 0) < 0) {
+ if (iteratee || isLarge) {
+ seen.push(computed);
+ }
+ result.push(value);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `_.values` and `_.valuesIn` which creates an
+ * array of `object` property values corresponding to the property names
+ * of `props`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array} props The property names to get values for.
+ * @returns {Object} Returns the array of property values.
+ */
+ function baseValues(object, props) {
+ var index = -1,
+ length = props.length,
+ result = Array(length);
+
+ while (++index < length) {
+ result[index] = object[props[index]];
+ }
+ return result;
+ }
+
+ /**
+ * The base implementation of `wrapperValue` which returns the result of
+ * performing a sequence of actions on the unwrapped `value`, where each
+ * successive action is supplied the return value of the previous.
+ *
+ * @private
+ * @param {*} value The unwrapped value.
+ * @param {Array} actions Actions to peform to resolve the unwrapped value.
+ * @returns {*} Returns the resolved value.
+ */
+ function baseWrapperValue(value, actions) {
+ var result = value;
+ if (result instanceof LazyWrapper) {
+ result = result.value();
+ }
+ var index = -1,
+ length = actions.length;
+
+ while (++index < length) {
+ var args = [result],
+ action = actions[index];
+
+ push.apply(args, action.args);
+ result = action.func.apply(action.thisArg, args);
+ }
+ return result;
+ }
+
+ /**
+ * Performs a binary search of `array` to determine the index at which `value`
+ * should be inserted into `array` in order to maintain its sort order.
+ *
+ * @private
+ * @param {Array} array The sorted array to inspect.
+ * @param {*} value The value to evaluate.
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
+ * @returns {number} Returns the index at which `value` should be inserted
+ * into `array`.
+ */
+ function binaryIndex(array, value, retHighest) {
+ var low = 0,
+ high = array ? array.length : low;
+
+ if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
+ while (low < high) {
+ var mid = (low + high) >>> 1,
+ computed = array[mid];
+
+ if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {
+ low = mid + 1;
+ } else {
+ high = mid;
+ }
+ }
+ return high;
+ }
+ return binaryIndexBy(array, value, identity, retHighest);
+ }
+
+ /**
+ * This function is like `binaryIndex` except that it invokes `iteratee` for
+ * `value` and each element of `array` to compute their sort ranking. The
+ * iteratee is invoked with one argument; (value).
+ *
+ * @private
+ * @param {Array} array The sorted array to inspect.
+ * @param {*} value The value to evaluate.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
+ * @returns {number} Returns the index at which `value` should be inserted
+ * into `array`.
+ */
+ function binaryIndexBy(array, value, iteratee, retHighest) {
+ value = iteratee(value);
+
+ var low = 0,
+ high = array ? array.length : 0,
+ valIsNaN = value !== value,
+ valIsNull = value === null,
+ valIsUndef = value === undefined;
+
+ while (low < high) {
+ var mid = floor((low + high) / 2),
+ computed = iteratee(array[mid]),
+ isDef = computed !== undefined,
+ isReflexive = computed === computed;
+
+ if (valIsNaN) {
+ var setLow = isReflexive || retHighest;
+ } else if (valIsNull) {
+ setLow = isReflexive && isDef && (retHighest || computed != null);
+ } else if (valIsUndef) {
+ setLow = isReflexive && (retHighest || isDef);
+ } else if (computed == null) {
+ setLow = false;
+ } else {
+ setLow = retHighest ? (computed <= value) : (computed < value);
+ }
+ if (setLow) {
+ low = mid + 1;
+ } else {
+ high = mid;
+ }
+ }
+ return nativeMin(high, MAX_ARRAY_INDEX);
+ }
+
+ /**
+ * A specialized version of `baseCallback` which only supports `this` binding
+ * and specifying the number of arguments to provide to `func`.
+ *
+ * @private
+ * @param {Function} func The function to bind.
+ * @param {*} thisArg The `this` binding of `func`.
+ * @param {number} [argCount] The number of arguments to provide to `func`.
+ * @returns {Function} Returns the callback.
+ */
+ function bindCallback(func, thisArg, argCount) {
+ if (typeof func != 'function') {
+ return identity;
+ }
+ if (thisArg === undefined) {
+ return func;
+ }
+ switch (argCount) {
+ case 1: return function(value) {
+ return func.call(thisArg, value);
+ };
+ case 3: return function(value, index, collection) {
+ return func.call(thisArg, value, index, collection);
+ };
+ case 4: return function(accumulator, value, index, collection) {
+ return func.call(thisArg, accumulator, value, index, collection);
+ };
+ case 5: return function(value, other, key, object, source) {
+ return func.call(thisArg, value, other, key, object, source);
+ };
+ }
+ return function() {
+ return func.apply(thisArg, arguments);
+ };
+ }
+
+ /**
+ * Creates a clone of the given array buffer.
+ *
+ * @private
+ * @param {ArrayBuffer} buffer The array buffer to clone.
+ * @returns {ArrayBuffer} Returns the cloned array buffer.
+ */
+ function bufferClone(buffer) {
+ return bufferSlice.call(buffer, 0);
+ }
+ if (!bufferSlice) {
+ // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
+ bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
+ var byteLength = buffer.byteLength,
+ floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
+ offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
+ result = new ArrayBuffer(byteLength);
+
+ if (floatLength) {
+ var view = new Float64Array(result, 0, floatLength);
+ view.set(new Float64Array(buffer, 0, floatLength));
+ }
+ if (byteLength != offset) {
+ view = new Uint8Array(result, offset);
+ view.set(new Uint8Array(buffer, offset));
+ }
+ return result;
+ };
+ }
+
+ /**
+ * Creates an array that is the composition of partially applied arguments,
+ * placeholders, and provided arguments into a single array of arguments.
+ *
+ * @private
+ * @param {Array|Object} args The provided arguments.
+ * @param {Array} partials The arguments to prepend to those provided.
+ * @param {Array} holders The `partials` placeholder indexes.
+ * @returns {Array} Returns the new array of composed arguments.
+ */
+ function composeArgs(args, partials, holders) {
+ var holdersLength = holders.length,
+ argsIndex = -1,
+ argsLength = nativeMax(args.length - holdersLength, 0),
+ leftIndex = -1,
+ leftLength = partials.length,
+ result = Array(argsLength + leftLength);
+
+ while (++leftIndex < leftLength) {
+ result[leftIndex] = partials[leftIndex];
+ }
+ while (++argsIndex < holdersLength) {
+ result[holders[argsIndex]] = args[argsIndex];
+ }
+ while (argsLength--) {
+ result[leftIndex++] = args[argsIndex++];
+ }
+ return result;
+ }
+
+ /**
+ * This function is like `composeArgs` except that the arguments composition
+ * is tailored for `_.partialRight`.
+ *
+ * @private
+ * @param {Array|Object} args The provided arguments.
+ * @param {Array} partials The arguments to append to those provided.
+ * @param {Array} holders The `partials` placeholder indexes.
+ * @returns {Array} Returns the new array of composed arguments.
+ */
+ function composeArgsRight(args, partials, holders) {
+ var holdersIndex = -1,
+ holdersLength = holders.length,
+ argsIndex = -1,
+ argsLength = nativeMax(args.length - holdersLength, 0),
+ rightIndex = -1,
+ rightLength = partials.length,
+ result = Array(argsLength + rightLength);
+
+ while (++argsIndex < argsLength) {
+ result[argsIndex] = args[argsIndex];
+ }
+ var offset = argsIndex;
+ while (++rightIndex < rightLength) {
+ result[offset + rightIndex] = partials[rightIndex];
+ }
+ while (++holdersIndex < holdersLength) {
+ result[offset + holders[holdersIndex]] = args[argsIndex++];
+ }
+ return result;
+ }
+
+ /**
+ * Creates a function that aggregates a collection, creating an accumulator
+ * object composed from the results of running each element in the collection
+ * through an iteratee.
+ *
+ * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,
+ * and `_.partition`.
+ *
+ * @private
+ * @param {Function} setter The function to set keys and values of the accumulator object.
+ * @param {Function} [initializer] The function to initialize the accumulator object.
+ * @returns {Function} Returns the new aggregator function.
+ */
+ function createAggregator(setter, initializer) {
+ return function(collection, iteratee, thisArg) {
+ var result = initializer ? initializer() : {};
+ iteratee = getCallback(iteratee, thisArg, 3);
+
+ if (isArray(collection)) {
+ var index = -1,
+ length = collection.length;
+
+ while (++index < length) {
+ var value = collection[index];
+ setter(result, value, iteratee(value, index, collection), collection);
+ }
+ } else {
+ baseEach(collection, function(value, key, collection) {
+ setter(result, value, iteratee(value, key, collection), collection);
+ });
+ }
+ return result;
+ };
+ }
+
+ /**
+ * Creates a function that assigns properties of source object(s) to a given
+ * destination object.
+ *
+ * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.
+ *
+ * @private
+ * @param {Function} assigner The function to assign values.
+ * @returns {Function} Returns the new assigner function.
+ */
+ function createAssigner(assigner) {
+ return restParam(function(object, sources) {
+ var index = -1,
+ length = object == null ? 0 : sources.length,
+ customizer = length > 2 ? sources[length - 2] : undefined,
+ guard = length > 2 ? sources[2] : undefined,
+ thisArg = length > 1 ? sources[length - 1] : undefined;
+
+ if (typeof customizer == 'function') {
+ customizer = bindCallback(customizer, thisArg, 5);
+ length -= 2;
+ } else {
+ customizer = typeof thisArg == 'function' ? thisArg : undefined;
+ length -= (customizer ? 1 : 0);
+ }
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
+ customizer = length < 3 ? undefined : customizer;
+ length = 1;
+ }
+ while (++index < length) {
+ var source = sources[index];
+ if (source) {
+ assigner(object, source, customizer);
+ }
+ }
+ return object;
+ });
+ }
+
+ /**
+ * Creates a `baseEach` or `baseEachRight` function.
+ *
+ * @private
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
+ */
+ function createBaseEach(eachFunc, fromRight) {
+ return function(collection, iteratee) {
+ var length = collection ? getLength(collection) : 0;
+ if (!isLength(length)) {
+ return eachFunc(collection, iteratee);
+ }
+ var index = fromRight ? length : -1,
+ iterable = toObject(collection);
+
+ while ((fromRight ? index-- : ++index < length)) {
+ if (iteratee(iterable[index], index, iterable) === false) {
+ break;
+ }
+ }
+ return collection;
+ };
+ }
+
+ /**
+ * Creates a base function for `_.forIn` or `_.forInRight`.
+ *
+ * @private
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new base function.
+ */
+ function createBaseFor(fromRight) {
+ return function(object, iteratee, keysFunc) {
+ var iterable = toObject(object),
+ props = keysFunc(object),
+ length = props.length,
+ index = fromRight ? length : -1;
+
+ while ((fromRight ? index-- : ++index < length)) {
+ var key = props[index];
+ if (iteratee(iterable[key], key, iterable) === false) {
+ break;
+ }
+ }
+ return object;
+ };
+ }
+
+ /**
+ * Creates a function that wraps `func` and invokes it with the `this`
+ * binding of `thisArg`.
+ *
+ * @private
+ * @param {Function} func The function to bind.
+ * @param {*} [thisArg] The `this` binding of `func`.
+ * @returns {Function} Returns the new bound function.
+ */
+ function createBindWrapper(func, thisArg) {
+ var Ctor = createCtorWrapper(func);
+
+ function wrapper() {
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
+ return fn.apply(thisArg, arguments);
+ }
+ return wrapper;
+ }
+
+ /**
+ * Creates a `Set` cache object to optimize linear searches of large arrays.
+ *
+ * @private
+ * @param {Array} [values] The values to cache.
+ * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
+ */
+ var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
+ return new SetCache(values);
+ };
+
+ /**
+ * Creates a function that produces an instance of `Ctor` regardless of
+ * whether it was invoked as part of a `new` expression or by `call` or `apply`.
+ *
+ * @private
+ * @param {Function} Ctor The constructor to wrap.
+ * @returns {Function} Returns the new wrapped function.
+ */
+ function createCtorWrapper(Ctor) {
+ return function() {
+ // Use a `switch` statement to work with class constructors.
+ // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist
+ // for more details.
+ var args = arguments;
+ switch (args.length) {
+ case 0: return new Ctor;
+ case 1: return new Ctor(args[0]);
+ case 2: return new Ctor(args[0], args[1]);
+ case 3: return new Ctor(args[0], args[1], args[2]);
+ case 4: return new Ctor(args[0], args[1], args[2], args[3]);
+ case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
+ }
+ var thisBinding = baseCreate(Ctor.prototype),
+ result = Ctor.apply(thisBinding, args);
+
+ // Mimic the constructor's `return` behavior.
+ // See https://es5.github.io/#x13.2.2 for more details.
+ return isObject(result) ? result : thisBinding;
+ };
+ }
+
+ /**
+ * Creates a `_.find` or `_.findLast` function.
+ *
+ * @private
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {Function} Returns the new find function.
+ */
+ function createFind(eachFunc, fromRight) {
+ return function(collection, predicate, thisArg) {
+ predicate = getCallback(predicate, thisArg, 3);
+ if (isArray(collection)) {
+ var index = baseFindIndex(collection, predicate, fromRight);
+ return index > -1 ? collection[index] : undefined;
+ }
+ return baseFind(collection, predicate, eachFunc);
+ };
+ }
+
+ /**
+ * Creates a function for `_.forEach` or `_.forEachRight`.
+ *
+ * @private
+ * @param {Function} arrayFunc The function to iterate over an array.
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @returns {Function} Returns the new each function.
+ */
+ function createForEach(arrayFunc, eachFunc) {
+ return function(collection, iteratee, thisArg) {
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
+ ? arrayFunc(collection, iteratee)
+ : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
+ };
+ }
+
+ /**
+ * Creates a function for `_.forOwn` or `_.forOwnRight`.
+ *
+ * @private
+ * @param {Function} objectFunc The function to iterate over an object.
+ * @returns {Function} Returns the new each function.
+ */
+ function createForOwn(objectFunc) {
+ return function(object, iteratee, thisArg) {
+ if (typeof iteratee != 'function' || thisArg !== undefined) {
+ iteratee = bindCallback(iteratee, thisArg, 3);
+ }
+ return objectFunc(object, iteratee);
+ };
+ }
+
+ /**
+ * Creates a function for `_.reduce` or `_.reduceRight`.
+ *
+ * @private
+ * @param {Function} arrayFunc The function to iterate over an array.
+ * @param {Function} eachFunc The function to iterate over a collection.
+ * @returns {Function} Returns the new each function.
+ */
+ function createReduce(arrayFunc, eachFunc) {
+ return function(collection, iteratee, accumulator, thisArg) {
+ var initFromArray = arguments.length < 3;
+ return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
+ ? arrayFunc(collection, iteratee, accumulator, initFromArray)
+ : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
+ };
+ }
+
+ /**
+ * Creates a function that wraps `func` and invokes it with optional `this`
+ * binding of, partial application, and currying.
+ *
+ * @private
+ * @param {Function|string} func The function or method name to reference.
+ * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
+ * @param {*} [thisArg] The `this` binding of `func`.
+ * @param {Array} [partials] The arguments to prepend to those provided to the new function.
+ * @param {Array} [holders] The `partials` placeholder indexes.
+ * @param {Array} [partialsRight] The arguments to append to those provided to the new function.
+ * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
+ * @param {Array} [argPos] The argument positions of the new function.
+ * @param {number} [ary] The arity cap of `func`.
+ * @param {number} [arity] The arity of `func`.
+ * @returns {Function} Returns the new wrapped function.
+ */
+ function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
+ var isAry = bitmask & ARY_FLAG,
+ isBind = bitmask & BIND_FLAG,
+ isBindKey = bitmask & BIND_KEY_FLAG,
+ isCurry = bitmask & CURRY_FLAG,
+ isCurryBound = bitmask & CURRY_BOUND_FLAG,
+ isCurryRight = bitmask & CURRY_RIGHT_FLAG,
+ Ctor = isBindKey ? null : createCtorWrapper(func);
+
+ function wrapper() {
+ // Avoid `arguments` object use disqualifying optimizations by
+ // converting it to an array before providing it to other functions.
+ var length = arguments.length,
+ index = length,
+ args = Array(length);
+
+ while (index--) {
+ args[index] = arguments[index];
+ }
+ if (partials) {
+ args = composeArgs(args, partials, holders);
+ }
+ if (partialsRight) {
+ args = composeArgsRight(args, partialsRight, holdersRight);
+ }
+ if (isCurry || isCurryRight) {
+ var placeholder = wrapper.placeholder,
+ argsHolders = replaceHolders(args, placeholder);
+
+ length -= argsHolders.length;
+ if (length < arity) {
+ var newArgPos = argPos ? arrayCopy(argPos) : null,
+ newArity = nativeMax(arity - length, 0),
+ newsHolders = isCurry ? argsHolders : null,
+ newHoldersRight = isCurry ? null : argsHolders,
+ newPartials = isCurry ? args : null,
+ newPartialsRight = isCurry ? null : args;
+
+ bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
+ bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
+
+ if (!isCurryBound) {
+ bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
+ }
+ var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],
+ result = createHybridWrapper.apply(undefined, newData);
+
+ if (isLaziable(func)) {
+ setData(result, newData);
+ }
+ result.placeholder = placeholder;
+ return result;
+ }
+ }
+ var thisBinding = isBind ? thisArg : this,
+ fn = isBindKey ? thisBinding[func] : func;
+
+ if (argPos) {
+ args = reorder(args, argPos);
+ }
+ if (isAry && ary < args.length) {
+ args.length = ary;
+ }
+ if (this && this !== root && this instanceof wrapper) {
+ fn = Ctor || createCtorWrapper(func);
+ }
+ return fn.apply(thisBinding, args);
+ }
+ return wrapper;
+ }
+
+ /**
+ * Creates a function that wraps `func` and invokes it with the optional `this`
+ * binding of `thisArg` and the `partials` prepended to those provided to
+ * the wrapper.
+ *
+ * @private
+ * @param {Function} func The function to partially apply arguments to.
+ * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
+ * @param {*} thisArg The `this` binding of `func`.
+ * @param {Array} partials The arguments to prepend to those provided to the new function.
+ * @returns {Function} Returns the new bound function.
+ */
+ function createPartialWrapper(func, bitmask, thisArg, partials) {
+ var isBind = bitmask & BIND_FLAG,
+ Ctor = createCtorWrapper(func);
+
+ function wrapper() {
+ // Avoid `arguments` object use disqualifying optimizations by
+ // converting it to an array before providing it `func`.
+ var argsIndex = -1,
+ argsLength = arguments.length,
+ leftIndex = -1,
+ leftLength = partials.length,
+ args = Array(argsLength + leftLength);
+
+ while (++leftIndex < leftLength) {
+ args[leftIndex] = partials[leftIndex];
+ }
+ while (argsLength--) {
+ args[leftIndex++] = arguments[++argsIndex];
+ }
+ var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
+ return fn.apply(isBind ? thisArg : this, args);
+ }
+ return wrapper;
+ }
+
+ /**
+ * Creates a function that either curries or invokes `func` with optional
+ * `this` binding and partially applied arguments.
+ *
+ * @private
+ * @param {Function|string} func The function or method name to reference.
+ * @param {number} bitmask The bitmask of flags.
+ * The bitmask may be composed of the following flags:
+ * 1 - `_.bind`
+ * 2 - `_.bindKey`
+ * 4 - `_.curry` or `_.curryRight` of a bound function
+ * 8 - `_.curry`
+ * 16 - `_.curryRight`
+ * 32 - `_.partial`
+ * 64 - `_.partialRight`
+ * 128 - `_.rearg`
+ * 256 - `_.ary`
+ * @param {*} [thisArg] The `this` binding of `func`.
+ * @param {Array} [partials] The arguments to be partially applied.
+ * @param {Array} [holders] The `partials` placeholder indexes.
+ * @param {Array} [argPos] The argument positions of the new function.
+ * @param {number} [ary] The arity cap of `func`.
+ * @param {number} [arity] The arity of `func`.
+ * @returns {Function} Returns the new wrapped function.
+ */
+ function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
+ var isBindKey = bitmask & BIND_KEY_FLAG;
+ if (!isBindKey && typeof func != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ var length = partials ? partials.length : 0;
+ if (!length) {
+ bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
+ partials = holders = null;
+ }
+ length -= (holders ? holders.length : 0);
+ if (bitmask & PARTIAL_RIGHT_FLAG) {
+ var partialsRight = partials,
+ holdersRight = holders;
+
+ partials = holders = null;
+ }
+ var data = isBindKey ? null : getData(func),
+ newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
+
+ if (data) {
+ mergeData(newData, data);
+ bitmask = newData[1];
+ arity = newData[9];
+ }
+ newData[9] = arity == null
+ ? (isBindKey ? 0 : func.length)
+ : (nativeMax(arity - length, 0) || 0);
+
+ if (bitmask == BIND_FLAG) {
+ var result = createBindWrapper(newData[0], newData[2]);
+ } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
+ result = createPartialWrapper.apply(undefined, newData);
+ } else {
+ result = createHybridWrapper.apply(undefined, newData);
+ }
+ var setter = data ? baseSetData : setData;
+ return setter(result, newData);
+ }
+
+ /**
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Array} array The array to compare.
+ * @param {Array} other The other array to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} [customizer] The function to customize comparing arrays.
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
+ * @param {Array} [stackA] Tracks traversed `value` objects.
+ * @param {Array} [stackB] Tracks traversed `other` objects.
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+ */
+ function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
+ var index = -1,
+ arrLength = array.length,
+ othLength = other.length;
+
+ if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
+ return false;
+ }
+ // Ignore non-index properties.
+ while (++index < arrLength) {
+ var arrValue = array[index],
+ othValue = other[index],
+ result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
+
+ if (result !== undefined) {
+ if (result) {
+ continue;
+ }
+ return false;
+ }
+ // Recursively compare arrays (susceptible to call stack limits).
+ if (isLoose) {
+ if (!arraySome(other, function(othValue) {
+ return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
+ })) {
+ return false;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
+ * the same `toStringTag`.
+ *
+ * **Note:** This function only supports comparing values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} value The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {string} tag The `toStringTag` of the objects to compare.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+ function equalByTag(object, other, tag) {
+ switch (tag) {
+ case boolTag:
+ case dateTag:
+ // Coerce dates and booleans to numbers, dates to milliseconds and booleans
+ // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
+ return +object == +other;
+
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+
+ case numberTag:
+ // Treat `NaN` vs. `NaN` as equal.
+ return (object != +object)
+ ? other != +other
+ : object == +other;
+
+ case regexpTag:
+ case stringTag:
+ // Coerce regexes to strings and treat strings primitives and string
+ // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
+ return object == (other + '');
+ }
+ return false;
+ }
+
+ /**
+ * A specialized version of `baseIsEqualDeep` for objects with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} [customizer] The function to customize comparing values.
+ * @param {boolean} [isLoose] Specify performing partial comparisons.
+ * @param {Array} [stackA] Tracks traversed `value` objects.
+ * @param {Array} [stackB] Tracks traversed `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+ function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
+ var objProps = keys(object),
+ objLength = objProps.length,
+ othProps = keys(other),
+ othLength = othProps.length;
+
+ if (objLength != othLength && !isLoose) {
+ return false;
+ }
+ var index = objLength;
+ while (index--) {
+ var key = objProps[index];
+ if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ }
+ var skipCtor = isLoose;
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key],
+ othValue = other[key],
+ result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
+
+ // Recursively compare objects (susceptible to call stack limits).
+ if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
+ return false;
+ }
+ skipCtor || (skipCtor = key == 'constructor');
+ }
+ if (!skipCtor) {
+ var objCtor = object.constructor,
+ othCtor = other.constructor;
+
+ // Non `Object` object instances with different constructors are not equal.
+ if (objCtor != othCtor &&
+ ('constructor' in object && 'constructor' in other) &&
+ !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
+ typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Gets the appropriate "callback" function. If the `_.callback` method is
+ * customized this function returns the custom method, otherwise it returns
+ * the `baseCallback` function. If arguments are provided the chosen function
+ * is invoked with them and its result is returned.
+ *
+ * @private
+ * @returns {Function} Returns the chosen function or its result.
+ */
+ function getCallback(func, thisArg, argCount) {
+ var result = lodash.callback || callback;
+ result = result === callback ? baseCallback : result;
+ return argCount ? result(func, thisArg, argCount) : result;
+ }
+
+ /**
+ * Gets metadata for `func`.
+ *
+ * @private
+ * @param {Function} func The function to query.
+ * @returns {*} Returns the metadata for `func`.
+ */
+ var getData = !metaMap ? noop : function(func) {
+ return metaMap.get(func);
+ };
+
+ /**
+ * Gets the name of `func`.
+ *
+ * @private
+ * @param {Function} func The function to query.
+ * @returns {string} Returns the function name.
+ */
+ function getFuncName(func) {
+ var result = func.name,
+ array = realNames[result],
+ length = array ? array.length : 0;
+
+ while (length--) {
+ var data = array[length],
+ otherFunc = data.func;
+ if (otherFunc == null || otherFunc == func) {
+ return data.name;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
+ * customized this function returns the custom method, otherwise it returns
+ * the `baseIndexOf` function. If arguments are provided the chosen function
+ * is invoked with them and its result is returned.
+ *
+ * @private
+ * @returns {Function|number} Returns the chosen function or its result.
+ */
+ function getIndexOf(collection, target, fromIndex) {
+ var result = lodash.indexOf || indexOf;
+ result = result === indexOf ? baseIndexOf : result;
+ return collection ? result(collection, target, fromIndex) : result;
+ }
+
+ /**
+ * Gets the "length" property value of `object`.
+ *
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {*} Returns the "length" value.
+ */
+ var getLength = baseProperty('length');
+
+ /**
+ * Gets the propery names, values, and compare flags of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the match data of `object`.
+ */
+ function getMatchData(object) {
+ var result = pairs(object),
+ length = result.length;
+
+ while (length--) {
+ result[length][2] = isStrictComparable(result[length][1]);
+ }
+ return result;
+ }
+
+ /**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+ function getNative(object, key) {
+ var value = object == null ? undefined : object[key];
+ return isNative(value) ? value : undefined;
+ }
+
+ /**
+ * Gets the view, applying any `transforms` to the `start` and `end` positions.
+ *
+ * @private
+ * @param {number} start The start of the view.
+ * @param {number} end The end of the view.
+ * @param {Array} [transforms] The transformations to apply to the view.
+ * @returns {Object} Returns an object containing the `start` and `end`
+ * positions of the view.
+ */
+ function getView(start, end, transforms) {
+ var index = -1,
+ length = transforms ? transforms.length : 0;
+
+ while (++index < length) {
+ var data = transforms[index],
+ size = data.size;
+
+ switch (data.type) {
+ case 'drop': start += size; break;
+ case 'dropRight': end -= size; break;
+ case 'take': end = nativeMin(end, start + size); break;
+ case 'takeRight': start = nativeMax(start, end - size); break;
+ }
+ }
+ return { 'start': start, 'end': end };
+ }
+
+ /**
+ * Initializes an array clone.
+ *
+ * @private
+ * @param {Array} array The array to clone.
+ * @returns {Array} Returns the initialized clone.
+ */
+ function initCloneArray(array) {
+ var length = array.length,
+ result = new array.constructor(length);
+
+ // Add array properties assigned by `RegExp#exec`.
+ if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
+ result.index = array.index;
+ result.input = array.input;
+ }
+ return result;
+ }
+
+ /**
+ * Initializes an object clone.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+ function initCloneObject(object) {
+ var Ctor = object.constructor;
+ if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
+ Ctor = Object;
+ }
+ return new Ctor;
+ }
+
+ /**
+ * Initializes an object clone based on its `toStringTag`.
+ *
+ * **Note:** This function only supports cloning values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to clone.
+ * @param {string} tag The `toStringTag` of the object to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @returns {Object} Returns the initialized clone.
+ */
+ function initCloneByTag(object, tag, isDeep) {
+ var Ctor = object.constructor;
+ switch (tag) {
+ case arrayBufferTag:
+ return bufferClone(object);
+
+ case boolTag:
+ case dateTag:
+ return new Ctor(+object);
+
+ case float32Tag: case float64Tag:
+ case int8Tag: case int16Tag: case int32Tag:
+ case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
+ // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays.
+ if (Ctor instanceof Ctor) {
+ Ctor = ctorByTag[tag];
+ }
+ var buffer = object.buffer;
+ return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
+
+ case numberTag:
+ case stringTag:
+ return new Ctor(object);
+
+ case regexpTag:
+ var result = new Ctor(object.source, reFlags.exec(object));
+ result.lastIndex = object.lastIndex;
+ }
+ return result;
+ }
+
+ /**
+ * Checks if `value` is array-like.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ */
+ function isArrayLike(value) {
+ return value != null && isLength(getLength(value));
+ }
+
+ /**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+ function isIndex(value, length) {
+ value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return value > -1 && value % 1 == 0 && value < length;
+ }
+
+ /**
+ * Checks if the provided arguments are from an iteratee call.
+ *
+ * @private
+ * @param {*} value The potential iteratee value argument.
+ * @param {*} index The potential iteratee index or key argument.
+ * @param {*} object The potential iteratee object argument.
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
+ */
+ function isIterateeCall(value, index, object) {
+ if (!isObject(object)) {
+ return false;
+ }
+ var type = typeof index;
+ if (type == 'number'
+ ? (isArrayLike(object) && isIndex(index, object.length))
+ : (type == 'string' && index in object)) {
+ var other = object[index];
+ return value === value ? (value === other) : (other !== other);
+ }
+ return false;
+ }
+
+ /**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+ function isKey(value, object) {
+ var type = typeof value;
+ if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
+ return true;
+ }
+ if (isArray(value)) {
+ return false;
+ }
+ var result = !reIsDeepProp.test(value);
+ return result || (object != null && value in toObject(object));
+ }
+
+ /**
+ * Checks if `func` has a lazy counterpart.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.
+ */
+ function isLaziable(func) {
+ var funcName = getFuncName(func);
+ if (!(funcName in LazyWrapper.prototype)) {
+ return false;
+ }
+ var other = lodash[funcName];
+ if (func === other) {
+ return true;
+ }
+ var data = getData(other);
+ return !!data && func === data[0];
+ }
+
+ /**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ */
+ function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+
+ /**
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
+ * equality comparisons, else `false`.
+ */
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+
+ /**
+ * Merges the function metadata of `source` into `data`.
+ *
+ * Merging metadata reduces the number of wrappers required to invoke a function.
+ * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
+ * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`
+ * augment function arguments, making the order in which they are executed important,
+ * preventing the merging of metadata. However, we make an exception for a safe
+ * common case where curried functions have `_.ary` and or `_.rearg` applied.
+ *
+ * @private
+ * @param {Array} data The destination metadata.
+ * @param {Array} source The source metadata.
+ * @returns {Array} Returns `data`.
+ */
+ function mergeData(data, source) {
+ var bitmask = data[1],
+ srcBitmask = source[1],
+ newBitmask = bitmask | srcBitmask,
+ isCommon = newBitmask < ARY_FLAG;
+
+ var isCombo =
+ (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||
+ (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||
+ (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);
+
+ // Exit early if metadata can't be merged.
+ if (!(isCommon || isCombo)) {
+ return data;
+ }
+ // Use source `thisArg` if available.
+ if (srcBitmask & BIND_FLAG) {
+ data[2] = source[2];
+ // Set when currying a bound function.
+ newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
+ }
+ // Compose partial arguments.
+ var value = source[3];
+ if (value) {
+ var partials = data[3];
+ data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
+ data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
+ }
+ // Compose partial right arguments.
+ value = source[5];
+ if (value) {
+ partials = data[5];
+ data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
+ data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
+ }
+ // Use source `argPos` if available.
+ value = source[7];
+ if (value) {
+ data[7] = arrayCopy(value);
+ }
+ // Use source `ary` if it's smaller.
+ if (srcBitmask & ARY_FLAG) {
+ data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
+ }
+ // Use source `arity` if one is not provided.
+ if (data[9] == null) {
+ data[9] = source[9];
+ }
+ // Use source `func` and merge bitmasks.
+ data[0] = source[0];
+ data[1] = newBitmask;
+
+ return data;
+ }
+
+ /**
+ * A specialized version of `_.pick` which picks `object` properties specified
+ * by `props`.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {string[]} props The property names to pick.
+ * @returns {Object} Returns the new object.
+ */
+ function pickByArray(object, props) {
+ object = toObject(object);
+
+ var index = -1,
+ length = props.length,
+ result = {};
+
+ while (++index < length) {
+ var key = props[index];
+ if (key in object) {
+ result[key] = object[key];
+ }
+ }
+ return result;
+ }
+
+ /**
+ * A specialized version of `_.pick` which picks `object` properties `predicate`
+ * returns truthy for.
+ *
+ * @private
+ * @param {Object} object The source object.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {Object} Returns the new object.
+ */
+ function pickByCallback(object, predicate) {
+ var result = {};
+ baseForIn(object, function(value, key, object) {
+ if (predicate(value, key, object)) {
+ result[key] = value;
+ }
+ });
+ return result;
+ }
+
+ /**
+ * Reorder `array` according to the specified indexes where the element at
+ * the first index is assigned as the first element, the element at
+ * the second index is assigned as the second element, and so on.
+ *
+ * @private
+ * @param {Array} array The array to reorder.
+ * @param {Array} indexes The arranged array indexes.
+ * @returns {Array} Returns `array`.
+ */
+ function reorder(array, indexes) {
+ var arrLength = array.length,
+ length = nativeMin(indexes.length, arrLength),
+ oldArray = arrayCopy(array);
+
+ while (length--) {
+ var index = indexes[length];
+ array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
+ }
+ return array;
+ }
+
+ /**
+ * Sets metadata for `func`.
+ *
+ * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
+ * period of time, it will trip its breaker and transition to an identity function
+ * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)
+ * for more details.
+ *
+ * @private
+ * @param {Function} func The function to associate metadata with.
+ * @param {*} data The metadata.
+ * @returns {Function} Returns `func`.
+ */
+ var setData = (function() {
+ var count = 0,
+ lastCalled = 0;
+
+ return function(key, value) {
+ var stamp = now(),
+ remaining = HOT_SPAN - (stamp - lastCalled);
+
+ lastCalled = stamp;
+ if (remaining > 0) {
+ if (++count >= HOT_COUNT) {
+ return key;
+ }
+ } else {
+ count = 0;
+ }
+ return baseSetData(key, value);
+ };
+ }());
+
+ /**
+ * A fallback implementation of `_.isPlainObject` which checks if `value`
+ * is an object created by the `Object` constructor or has a `[[Prototype]]`
+ * of `null`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ */
+ function shimIsPlainObject(value) {
+ var Ctor,
+ support = lodash.support;
+
+ // Exit early for non `Object` objects.
+ if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||
+ (!hasOwnProperty.call(value, 'constructor') &&
+ (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||
+ (!support.argsTag && isArguments(value))) {
+ return false;
+ }
// IE < 9 iterates inherited properties before own properties. If the first
// iterated property is an object's own property then there are no inherited
// enumerable properties.
+ var result;
if (support.ownLast) {
- forIn(value, function(value, key, object) {
+ baseForIn(value, function(subValue, key, object) {
result = hasOwnProperty.call(object, key);
return false;
});
// In most environments an object's own properties are iterated before
// its inherited properties. If the last iterated property is an object's
// own property then there are no inherited enumerable properties.
- forIn(value, function(value, key) {
+ baseForIn(value, function(subValue, key) {
result = key;
});
- return typeof result == 'undefined' || hasOwnProperty.call(value, result);
+ return result === undefined || hasOwnProperty.call(value, result);
+ }
+
+ /**
+ * A fallback implementation of `Object.keys` which creates an array of the
+ * own enumerable property names of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+ function shimKeys(object) {
+ var props = keysIn(object),
+ propsLength = props.length,
+ length = propsLength && object.length;
+
+ var allowIndexes = !!length && isLength(length) &&
+ (isArray(object) || isArguments(object) || isString(object));
+
+ var index = -1,
+ result = [];
+
+ while (++index < propsLength) {
+ var key = props[index];
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
+ result.push(key);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Converts `value` to an object if it's not one.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {Object} Returns the object.
+ */
+ function toObject(value) {
+ if (lodash.support.unindexedChars && isString(value)) {
+ var index = -1,
+ length = value.length,
+ result = Object(value);
+
+ while (++index < length) {
+ result[index] = value.charAt(index);
+ }
+ return result;
+ }
+ return isObject(value) ? value : Object(value);
+ }
+
+ /**
+ * Converts `value` to property path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {Array} Returns the property path array.
+ */
+ function toPath(value) {
+ if (isArray(value)) {
+ return value;
+ }
+ var result = [];
+ baseToString(value).replace(rePropName, function(match, number, quote, string) {
+ result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
+ });
+ return result;
}
- /*--------------------------------------------------------------------------*/
+ /**
+ * Creates a clone of `wrapper`.
+ *
+ * @private
+ * @param {Object} wrapper The wrapper to clone.
+ * @returns {Object} Returns the cloned wrapper.
+ */
+ function wrapperClone(wrapper) {
+ return wrapper instanceof LazyWrapper
+ ? wrapper.clone()
+ : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
+ }
+
+ /*------------------------------------------------------------------------*/
/**
- * Checks if `value` is an `arguments` object.
+ * Creates an array of elements split into groups the length of `size`.
+ * If `collection` can't be split evenly, the final chunk will be the remaining
+ * elements.
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`.
+ * @category Array
+ * @param {Array} array The array to process.
+ * @param {number} [size=1] The length of each chunk.
+ * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+ * @returns {Array} Returns the new array containing chunks.
* @example
*
- * (function() { return _.isArguments(arguments); })(1, 2, 3);
- * // => true
+ * _.chunk(['a', 'b', 'c', 'd'], 2);
+ * // => [['a', 'b'], ['c', 'd']]
*
- * _.isArguments([1, 2, 3]);
- * // => false
+ * _.chunk(['a', 'b', 'c', 'd'], 3);
+ * // => [['a', 'b', 'c'], ['d']]
*/
- function isArguments(value) {
- return value && typeof value == 'object' && typeof value.length == 'number' &&
- toString.call(value) == argsClass || false;
+ function chunk(array, size, guard) {
+ if (guard ? isIterateeCall(array, size, guard) : size == null) {
+ size = 1;
+ } else {
+ size = nativeMax(+size || 1, 1);
+ }
+ var index = 0,
+ length = array ? array.length : 0,
+ resIndex = -1,
+ result = Array(ceil(length / size));
+
+ while (index < length) {
+ result[++resIndex] = baseSlice(array, index, (index += size));
+ }
+ return result;
}
- // fallback for browsers that can't detect `arguments` objects by [[Class]]
- if (!support.argsClass) {
- isArguments = function(value) {
- return value && typeof value == 'object' && typeof value.length == 'number' &&
- hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') || false;
- };
+
+ /**
+ * Creates an array with all falsey values removed. The values `false`, `null`,
+ * `0`, `""`, `undefined`, and `NaN` are falsey.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to compact.
+ * @returns {Array} Returns the new array of filtered values.
+ * @example
+ *
+ * _.compact([0, 1, false, 2, '', 3]);
+ * // => [1, 2, 3]
+ */
+ function compact(array) {
+ var index = -1,
+ length = array ? array.length : 0,
+ resIndex = -1,
+ result = [];
+
+ while (++index < length) {
+ var value = array[index];
+ if (value) {
+ result[++resIndex] = value;
+ }
+ }
+ return result;
}
/**
- * Checks if `value` is an array.
+ * Creates an array of unique `array` values not included in the other
+ * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons.
*
* @static
* @memberOf _
- * @type Function
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is an array, else `false`.
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {...Array} [values] The arrays of values to exclude.
+ * @returns {Array} Returns the new array of filtered values.
* @example
*
- * (function() { return _.isArray(arguments); })();
- * // => false
+ * _.difference([1, 2, 3], [4, 2]);
+ * // => [1, 3]
+ */
+ var difference = restParam(function(array, values) {
+ return isArrayLike(array)
+ ? baseDifference(array, baseFlatten(values, false, true))
+ : [];
+ });
+
+ /**
+ * Gets the first element of `array`.
*
- * _.isArray([1, 2, 3]);
- * // => true
+ * @static
+ * @memberOf _
+ * @alias head
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the first element of `array`.
+ * @example
+ *
+ * _.first([1, 2, 3]);
+ * // => 1
+ *
+ * _.first([]);
+ * // => undefined
*/
- var isArray = nativeIsArray || function(value) {
- return value && typeof value == 'object' && typeof value.length == 'number' &&
- toString.call(value) == arrayClass || false;
- };
+ function first(array) {
+ return array ? array[0] : undefined;
+ }
/**
- * A fallback implementation of `Object.keys` which produces an array of the
- * given object's own enumerable property names.
+ * Flattens a nested array. If `isDeep` is `true` the array is recursively
+ * flattened, otherwise it is only flattened a single level.
*
- * @private
- * @type Function
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns an array of property names.
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to flatten.
+ * @param {boolean} [isDeep] Specify a deep flatten.
+ * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+ * @returns {Array} Returns the new flattened array.
+ * @example
+ *
+ * _.flatten([1, [2, 3, [4]]]);
+ * // => [1, 2, 3, [4]]
+ *
+ * // using `isDeep`
+ * _.flatten([1, [2, 3, [4]]], true);
+ * // => [1, 2, 3, 4]
*/
- var shimKeys = createIterator({
- 'args': 'object',
- 'init': '[]',
- 'top': 'if (!(objectTypes[typeof object])) return result',
- 'loop': 'result.push(index)'
- });
+ function flatten(array, isDeep, guard) {
+ var length = array ? array.length : 0;
+ if (guard && isIterateeCall(array, isDeep, guard)) {
+ isDeep = false;
+ }
+ return length ? baseFlatten(array, isDeep) : [];
+ }
/**
- * Creates an array composed of the own enumerable property names of an object.
+ * Gets the index at which the first occurrence of `value` is found in `array`
+ * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons. If `fromIndex` is negative, it is used as the offset
+ * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
+ * performs a faster binary search.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns an array of property names.
+ * @category Array
+ * @param {Array} array The array to search.
+ * @param {*} value The value to search for.
+ * @param {boolean|number} [fromIndex=0] The index to search from or `true`
+ * to perform a binary search on a sorted array.
+ * @returns {number} Returns the index of the matched value, else `-1`.
* @example
*
- * _.keys({ 'one': 1, 'two': 2, 'three': 3 });
- * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)
+ * _.indexOf([1, 2, 1, 2], 2);
+ * // => 1
+ *
+ * // using `fromIndex`
+ * _.indexOf([1, 2, 1, 2], 2, 2);
+ * // => 3
+ *
+ * // performing a binary search
+ * _.indexOf([1, 1, 2, 2], 2, true);
+ * // => 2
*/
- var keys = !nativeKeys ? shimKeys : function(object) {
- if (!isObject(object)) {
- return [];
+ function indexOf(array, value, fromIndex) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return -1;
}
- if ((support.enumPrototypes && typeof object == 'function') ||
- (support.nonEnumArgs && object.length && isArguments(object))) {
- return shimKeys(object);
+ if (typeof fromIndex == 'number') {
+ fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
+ } else if (fromIndex) {
+ var index = binaryIndex(array, value),
+ other = array[index];
+
+ if (value === value ? (value === other) : (other !== other)) {
+ return index;
+ }
+ return -1;
}
- return nativeKeys(object);
- };
+ return baseIndexOf(array, value, fromIndex || 0);
+ }
- /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */
- var eachIteratorOptions = {
- 'args': 'collection, callback, thisArg',
- 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)",
- 'array': "typeof length == 'number'",
- 'keys': keys,
- 'loop': 'if (callback(iterable[index], index, collection) === false) return result'
- };
+ /**
+ * Creates an array of unique values that are included in all of the provided
+ * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @returns {Array} Returns the new array of shared values.
+ * @example
+ * _.intersection([1, 2], [4, 2], [2, 1]);
+ * // => [2]
+ */
+ var intersection = restParam(function(arrays) {
+ var othLength = arrays.length,
+ othIndex = othLength,
+ caches = Array(length),
+ indexOf = getIndexOf(),
+ isCommon = indexOf == baseIndexOf,
+ result = [];
- /** Reusable iterator options for `assign` and `defaults` */
- var defaultsIteratorOptions = {
- 'args': 'object, source, guard',
- 'top':
- 'var args = arguments,\n' +
- ' argsIndex = 0,\n' +
- " argsLength = typeof guard == 'number' ? 2 : args.length;\n" +
- 'while (++argsIndex < argsLength) {\n' +
- ' iterable = args[argsIndex];\n' +
- ' if (iterable && objectTypes[typeof iterable]) {',
- 'keys': keys,
- 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]",
- 'bottom': ' }\n}'
- };
+ while (othIndex--) {
+ var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
+ caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
+ }
+ var array = arrays[0],
+ index = -1,
+ length = array ? array.length : 0,
+ seen = caches[0];
- /** Reusable iterator options for `forIn` and `forOwn` */
- var forOwnIteratorOptions = {
- 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top,
- 'array': false
- };
+ outer:
+ while (++index < length) {
+ value = array[index];
+ if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
+ var othIndex = othLength;
+ while (--othIndex) {
+ var cache = caches[othIndex];
+ if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
+ continue outer;
+ }
+ }
+ if (seen) {
+ seen.push(value);
+ }
+ result.push(value);
+ }
+ }
+ return result;
+ });
/**
- * A function compiled to iterate `arguments` objects, arrays, objects, and
- * strings consistenly across environments, executing the callback for each
- * element in the collection. The callback is bound to `thisArg` and invoked
- * with three arguments; (value, index|key, collection). Callbacks may exit
- * iteration early by explicitly returning `false`.
+ * Gets the last element of `array`.
*
- * @private
- * @type Function
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [callback=identity] The function called per iteration.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array|Object|string} Returns `collection`.
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to query.
+ * @returns {*} Returns the last element of `array`.
+ * @example
+ *
+ * _.last([1, 2, 3]);
+ * // => 3
*/
- var baseEach = createIterator(eachIteratorOptions);
+ function last(array) {
+ var length = array ? array.length : 0;
+ return length ? array[length - 1] : undefined;
+ }
- /*--------------------------------------------------------------------------*/
+ /**
+ * Creates an array of unique values, in order, from all of the provided arrays
+ * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {...Array} [arrays] The arrays to inspect.
+ * @returns {Array} Returns the new array of combined values.
+ * @example
+ *
+ * _.union([1, 2], [4, 2], [2, 1]);
+ * // => [1, 2, 4]
+ */
+ var union = restParam(function(arrays) {
+ return baseUniq(baseFlatten(arrays, false, true));
+ });
/**
- * Assigns own enumerable properties of source object(s) to the destination
- * object. Subsequent sources will overwrite property assignments of previous
- * sources. If a callback is provided it will be executed to produce the
- * assigned values. The callback is bound to `thisArg` and invoked with two
- * arguments; (objectValue, sourceValue).
+ * Creates a duplicate-free version of an array, using
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons, in which only the first occurence of each element
+ * is kept. Providing `true` for `isSorted` performs a faster search algorithm
+ * for sorted arrays. If an iteratee function is provided it is invoked for
+ * each element in the array to generate the criterion by which uniqueness
+ * is computed. The `iteratee` is bound to `thisArg` and invoked with three
+ * arguments: (value, index, array).
+ *
+ * If a property name is provided for `iteratee` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `iteratee` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
*
* @static
* @memberOf _
- * @type Function
- * @alias extend
- * @category Objects
- * @param {Object} object The destination object.
- * @param {...Object} [source] The source objects.
- * @param {Function} [callback] The function to customize assigning values.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns the destination object.
+ * @alias unique
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {boolean} [isSorted] Specify the array is sorted.
+ * @param {Function|Object|string} [iteratee] The function invoked per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {Array} Returns the new duplicate-value-free array.
* @example
*
- * _.assign({ 'name': 'fred' }, { 'employer': 'slate' });
- * // => { 'name': 'fred', 'employer': 'slate' }
+ * _.uniq([2, 1, 2]);
+ * // => [2, 1]
*
- * var defaults = _.partialRight(_.assign, function(a, b) {
- * return typeof a == 'undefined' ? b : a;
- * });
+ * // using `isSorted`
+ * _.uniq([1, 1, 2], true);
+ * // => [1, 2]
+ *
+ * // using an iteratee function
+ * _.uniq([1, 2.5, 1.5, 2], function(n) {
+ * return this.floor(n);
+ * }, Math);
+ * // => [1, 2.5]
+ *
+ * // using the `_.property` callback shorthand
+ * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+ * // => [{ 'x': 1 }, { 'x': 2 }]
+ */
+ function uniq(array, isSorted, iteratee, thisArg) {
+ var length = array ? array.length : 0;
+ if (!length) {
+ return [];
+ }
+ if (isSorted != null && typeof isSorted != 'boolean') {
+ thisArg = iteratee;
+ iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
+ isSorted = false;
+ }
+ var callback = getCallback();
+ if (!(iteratee == null && callback === baseCallback)) {
+ iteratee = callback(iteratee, thisArg, 3);
+ }
+ return (isSorted && getIndexOf() == baseIndexOf)
+ ? sortedUniq(array, iteratee)
+ : baseUniq(array, iteratee);
+ }
+
+ /**
+ * Creates an array excluding all provided values using
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons.
*
- * var object = { 'name': 'barney' };
- * defaults(object, { 'name': 'fred', 'employer': 'slate' });
- * // => { 'name': 'barney', 'employer': 'slate' }
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} array The array to filter.
+ * @param {...*} [values] The values to exclude.
+ * @returns {Array} Returns the new array of filtered values.
+ * @example
+ *
+ * _.without([1, 2, 1, 3], 1, 2);
+ * // => [3]
*/
- var assign = createIterator(defaultsIteratorOptions, {
- 'top':
- defaultsIteratorOptions.top.replace(';',
- ';\n' +
- "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" +
- ' var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n' +
- "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" +
- ' callback = args[--argsLength];\n' +
- '}'
- ),
- 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]'
+ var without = restParam(function(array, values) {
+ return isArrayLike(array)
+ ? baseDifference(array, values)
+ : [];
});
+ /*------------------------------------------------------------------------*/
+
/**
- * Creates a clone of `value`. If `isDeep` is `true` nested objects will also
- * be cloned, otherwise they will be assigned by reference. If a callback
- * is provided it will be executed to produce the cloned values. If the
- * callback returns `undefined` cloning will be handled by the method instead.
- * The callback is bound to `thisArg` and invoked with one argument; (value).
+ * Creates a `lodash` object that wraps `value` with explicit method
+ * chaining enabled.
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to clone.
- * @param {boolean} [isDeep=false] Specify a deep clone.
- * @param {Function} [callback] The function to customize cloning values.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the cloned value.
+ * @category Chain
+ * @param {*} value The value to wrap.
+ * @returns {Object} Returns the new `lodash` wrapper instance.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
+ * var users = [
+ * { 'user': 'barney', 'age': 36 },
+ * { 'user': 'fred', 'age': 40 },
+ * { 'user': 'pebbles', 'age': 1 }
* ];
*
- * var shallow = _.clone(characters);
- * shallow[0] === characters[0];
- * // => true
+ * var youngest = _.chain(users)
+ * .sortBy('age')
+ * .map(function(chr) {
+ * return chr.user + ' is ' + chr.age;
+ * })
+ * .first()
+ * .value();
+ * // => 'pebbles is 1'
+ */
+ function chain(value) {
+ var result = lodash(value);
+ result.__chain__ = true;
+ return result;
+ }
+
+ /**
+ * This method invokes `interceptor` and returns `value`. The interceptor is
+ * bound to `thisArg` and invoked with one argument; (value). The purpose of
+ * this method is to "tap into" a method chain in order to perform operations
+ * on intermediate results within the chain.
*
- * var deep = _.clone(characters, true);
- * deep[0] === characters[0];
- * // => false
+ * @static
+ * @memberOf _
+ * @category Chain
+ * @param {*} value The value to provide to `interceptor`.
+ * @param {Function} interceptor The function to invoke.
+ * @param {*} [thisArg] The `this` binding of `interceptor`.
+ * @returns {*} Returns `value`.
+ * @example
*
- * _.mixin({
- * 'clone': _.partialRight(_.clone, function(value) {
- * return _.isElement(value) ? value.cloneNode(false) : undefined;
- * })
+ * _([1, 2, 3])
+ * .tap(function(array) {
+ * array.pop();
+ * })
+ * .reverse()
+ * .value();
+ * // => [2, 1]
+ */
+ function tap(value, interceptor, thisArg) {
+ interceptor.call(thisArg, value);
+ return value;
+ }
+
+ /**
+ * This method is like `_.tap` except that it returns the result of `interceptor`.
+ *
+ * @static
+ * @memberOf _
+ * @category Chain
+ * @param {*} value The value to provide to `interceptor`.
+ * @param {Function} interceptor The function to invoke.
+ * @param {*} [thisArg] The `this` binding of `interceptor`.
+ * @returns {*} Returns the result of `interceptor`.
+ * @example
+ *
+ * _(' abc ')
+ * .chain()
+ * .trim()
+ * .thru(function(value) {
+ * return [value];
+ * })
+ * .value();
+ * // => ['abc']
+ */
+ function thru(value, interceptor, thisArg) {
+ return interceptor.call(thisArg, value);
+ }
+
+ /**
+ * Enables explicit method chaining on the wrapper object.
+ *
+ * @name chain
+ * @memberOf _
+ * @category Chain
+ * @returns {Object} Returns the new `lodash` wrapper instance.
+ * @example
+ *
+ * var users = [
+ * { 'user': 'barney', 'age': 36 },
+ * { 'user': 'fred', 'age': 40 }
+ * ];
+ *
+ * // without explicit chaining
+ * _(users).first();
+ * // => { 'user': 'barney', 'age': 36 }
+ *
+ * // with explicit chaining
+ * _(users).chain()
+ * .first()
+ * .pick('user')
+ * .value();
+ * // => { 'user': 'barney' }
+ */
+ function wrapperChain() {
+ return chain(this);
+ }
+
+ /**
+ * Executes the chained sequence and returns the wrapped result.
+ *
+ * @name commit
+ * @memberOf _
+ * @category Chain
+ * @returns {Object} Returns the new `lodash` wrapper instance.
+ * @example
+ *
+ * var array = [1, 2];
+ * var wrapper = _(array).push(3);
+ *
+ * console.log(array);
+ * // => [1, 2]
+ *
+ * wrapper = wrapper.commit();
+ * console.log(array);
+ * // => [1, 2, 3]
+ *
+ * wrapper.last();
+ * // => 3
+ *
+ * console.log(array);
+ * // => [1, 2, 3]
+ */
+ function wrapperCommit() {
+ return new LodashWrapper(this.value(), this.__chain__);
+ }
+
+ /**
+ * Creates a clone of the chained sequence planting `value` as the wrapped value.
+ *
+ * @name plant
+ * @memberOf _
+ * @category Chain
+ * @returns {Object} Returns the new `lodash` wrapper instance.
+ * @example
+ *
+ * var array = [1, 2];
+ * var wrapper = _(array).map(function(value) {
+ * return Math.pow(value, 2);
* });
*
- * var clone = _.clone(document.body);
- * clone.childNodes.length;
- * // => 0
+ * var other = [3, 4];
+ * var otherWrapper = wrapper.plant(other);
+ *
+ * otherWrapper.value();
+ * // => [9, 16]
+ *
+ * wrapper.value();
+ * // => [1, 4]
*/
- function clone(value, isDeep, callback, thisArg) {
- // allows working with "Collections" methods without using their `index`
- // and `collection` arguments for `isDeep` and `callback`
- if (typeof isDeep != 'boolean' && isDeep != null) {
- thisArg = callback;
- callback = isDeep;
- isDeep = false;
+ function wrapperPlant(value) {
+ var result,
+ parent = this;
+
+ while (parent instanceof baseLodash) {
+ var clone = wrapperClone(parent);
+ if (result) {
+ previous.__wrapped__ = clone;
+ } else {
+ result = clone;
+ }
+ var previous = clone;
+ parent = parent.__wrapped__;
+ }
+ previous.__wrapped__ = value;
+ return result;
+ }
+
+ /**
+ * Reverses the wrapped array so the first element becomes the last, the
+ * second element becomes the second to last, and so on.
+ *
+ * **Note:** This method mutates the wrapped array.
+ *
+ * @name reverse
+ * @memberOf _
+ * @category Chain
+ * @returns {Object} Returns the new reversed `lodash` wrapper instance.
+ * @example
+ *
+ * var array = [1, 2, 3];
+ *
+ * _(array).reverse().value()
+ * // => [3, 2, 1]
+ *
+ * console.log(array);
+ * // => [3, 2, 1]
+ */
+ function wrapperReverse() {
+ var value = this.__wrapped__;
+ if (value instanceof LazyWrapper) {
+ if (this.__actions__.length) {
+ value = new LazyWrapper(this);
+ }
+ return new LodashWrapper(value.reverse(), this.__chain__);
}
- return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
+ return this.thru(function(value) {
+ return value.reverse();
+ });
+ }
+
+ /**
+ * Produces the result of coercing the unwrapped value to a string.
+ *
+ * @name toString
+ * @memberOf _
+ * @category Chain
+ * @returns {string} Returns the coerced string value.
+ * @example
+ *
+ * _([1, 2, 3]).toString();
+ * // => '1,2,3'
+ */
+ function wrapperToString() {
+ return (this.value() + '');
+ }
+
+ /**
+ * Executes the chained sequence to extract the unwrapped value.
+ *
+ * @name value
+ * @memberOf _
+ * @alias run, toJSON, valueOf
+ * @category Chain
+ * @returns {*} Returns the resolved unwrapped value.
+ * @example
+ *
+ * _([1, 2, 3]).value();
+ * // => [1, 2, 3]
+ */
+ function wrapperValue() {
+ return baseWrapperValue(this.__wrapped__, this.__actions__);
}
+ /*------------------------------------------------------------------------*/
+
/**
- * Creates a deep clone of `value`. If a callback is provided it will be
- * executed to produce the cloned values. If the callback returns `undefined`
- * cloning will be handled by the method instead. The callback is bound to
- * `thisArg` and invoked with one argument; (value).
+ * Checks if `predicate` returns truthy for **all** elements of `collection`.
+ * The predicate is bound to `thisArg` and invoked with three arguments:
+ * (value, index|key, collection).
*
- * Note: This method is loosely based on the structured clone algorithm. Functions
- * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and
- * objects created by constructors other than `Object` are cloned to plain `Object` objects.
- * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm.
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to deep clone.
- * @param {Function} [callback] The function to customize cloning values.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the deep cloned value.
+ * @alias all
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {boolean} Returns `true` if all elements pass the predicate check,
+ * else `false`.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
+ * _.every([true, 1, null, 'yes'], Boolean);
+ * // => false
+ *
+ * var users = [
+ * { 'user': 'barney', 'active': false },
+ * { 'user': 'fred', 'active': false }
* ];
*
- * var deep = _.cloneDeep(characters);
- * deep[0] === characters[0];
+ * // using the `_.matches` callback shorthand
+ * _.every(users, { 'user': 'barney', 'active': false });
* // => false
*
- * var view = {
- * 'label': 'docs',
- * 'node': element
- * };
+ * // using the `_.matchesProperty` callback shorthand
+ * _.every(users, 'active', false);
+ * // => true
+ *
+ * // using the `_.property` callback shorthand
+ * _.every(users, 'active');
+ * // => false
+ */
+ function every(collection, predicate, thisArg) {
+ var func = isArray(collection) ? arrayEvery : baseEvery;
+ if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
+ predicate = null;
+ }
+ if (typeof predicate != 'function' || thisArg !== undefined) {
+ predicate = getCallback(predicate, thisArg, 3);
+ }
+ return func(collection, predicate);
+ }
+
+ /**
+ * Iterates over elements of `collection`, returning an array of all elements
+ * `predicate` returns truthy for. The predicate is bound to `thisArg` and
+ * invoked with three arguments: (value, index|key, collection).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * @static
+ * @memberOf _
+ * @alias select
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Array} Returns the new filtered array.
+ * @example
*
- * var clone = _.cloneDeep(view, function(value) {
- * return _.isElement(value) ? value.cloneNode(true) : undefined;
+ * _.filter([4, 5, 6], function(n) {
+ * return n % 2 == 0;
* });
+ * // => [4, 6]
*
- * clone.node == view.node;
- * // => false
+ * var users = [
+ * { 'user': 'barney', 'age': 36, 'active': true },
+ * { 'user': 'fred', 'age': 40, 'active': false }
+ * ];
+ *
+ * // using the `_.matches` callback shorthand
+ * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
+ * // => ['barney']
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.pluck(_.filter(users, 'active', false), 'user');
+ * // => ['fred']
+ *
+ * // using the `_.property` callback shorthand
+ * _.pluck(_.filter(users, 'active'), 'user');
+ * // => ['barney']
*/
- function cloneDeep(value, callback, thisArg) {
- return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));
+ function filter(collection, predicate, thisArg) {
+ var func = isArray(collection) ? arrayFilter : baseFilter;
+ predicate = getCallback(predicate, thisArg, 3);
+ return func(collection, predicate);
}
/**
- * Iterates over own and inherited enumerable properties of an object,
- * executing the callback for each property. The callback is bound to `thisArg`
- * and invoked with three arguments; (value, key, object). Callbacks may exit
- * iteration early by explicitly returning `false`.
+ * Iterates over elements of `collection`, returning the first element
+ * `predicate` returns truthy for. The predicate is bound to `thisArg` and
+ * invoked with three arguments: (value, index|key, collection).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
*
* @static
* @memberOf _
- * @type Function
- * @category Objects
- * @param {Object} object The object to iterate over.
- * @param {Function} [callback=identity] The function called per iteration.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns `object`.
+ * @alias detect
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to search.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {*} Returns the matched element, else `undefined`.
* @example
*
- * function Shape() {
- * this.x = 0;
- * this.y = 0;
- * }
+ * var users = [
+ * { 'user': 'barney', 'age': 36, 'active': true },
+ * { 'user': 'fred', 'age': 40, 'active': false },
+ * { 'user': 'pebbles', 'age': 1, 'active': true }
+ * ];
*
- * Shape.prototype.move = function(x, y) {
- * this.x += x;
- * this.y += y;
- * };
+ * _.result(_.find(users, function(chr) {
+ * return chr.age < 40;
+ * }), 'user');
+ * // => 'barney'
*
- * _.forIn(new Shape, function(value, key) {
- * console.log(key);
- * });
- * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)
+ * // using the `_.matches` callback shorthand
+ * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
+ * // => 'pebbles'
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.result(_.find(users, 'active', false), 'user');
+ * // => 'fred'
+ *
+ * // using the `_.property` callback shorthand
+ * _.result(_.find(users, 'active'), 'user');
+ * // => 'barney'
*/
- var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, {
- 'useHas': false
- });
+ var find = createFind(baseEach);
/**
- * Iterates over own enumerable properties of an object, executing the callback
- * for each property. The callback is bound to `thisArg` and invoked with three
- * arguments; (value, key, object). Callbacks may exit iteration early by
- * explicitly returning `false`.
+ * Iterates over elements of `collection` invoking `iteratee` for each element.
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
+ * (value, index|key, collection). Iteratee functions may exit iteration early
+ * by explicitly returning `false`.
+ *
+ * **Note:** As with other "Collections" methods, objects with a "length" property
+ * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
+ * may be used for object iteration.
*
* @static
* @memberOf _
- * @type Function
- * @category Objects
- * @param {Object} object The object to iterate over.
- * @param {Function} [callback=identity] The function called per iteration.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns `object`.
+ * @alias each
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {Array|Object|string} Returns `collection`.
* @example
*
- * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {
- * console.log(key);
+ * _([1, 2]).forEach(function(n) {
+ * console.log(n);
+ * }).value();
+ * // => logs each value from left to right and returns the array
+ *
+ * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
+ * console.log(n, key);
* });
- * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)
+ * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
*/
- var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions);
+ var forEach = createForEach(arrayEach, baseEach);
/**
- * Creates a sorted array of property names of all enumerable properties,
- * own and inherited, of `object` that have function values.
+ * Creates an object composed of keys generated from the results of running
+ * each element of `collection` through `iteratee`. The corresponding value
+ * of each key is an array of the elements responsible for generating the key.
+ * The `iteratee` is bound to `thisArg` and invoked with three arguments:
+ * (value, index|key, collection).
+ *
+ * If a property name is provided for `iteratee` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `iteratee` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
*
* @static
* @memberOf _
- * @alias methods
- * @category Objects
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns an array of property names that have function values.
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {Object} Returns the composed aggregate object.
* @example
*
- * _.functions(_);
- * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...]
+ * _.groupBy([4.2, 6.1, 6.4], function(n) {
+ * return Math.floor(n);
+ * });
+ * // => { '4': [4.2], '6': [6.1, 6.4] }
+ *
+ * _.groupBy([4.2, 6.1, 6.4], function(n) {
+ * return this.floor(n);
+ * }, Math);
+ * // => { '4': [4.2], '6': [6.1, 6.4] }
+ *
+ * // using the `_.property` callback shorthand
+ * _.groupBy(['one', 'two', 'three'], 'length');
+ * // => { '3': ['one', 'two'], '5': ['three'] }
*/
- function functions(object) {
- var result = [];
- forIn(object, function(value, key) {
- if (isFunction(value)) {
- result.push(key);
- }
- });
- return result.sort();
- }
+ var groupBy = createAggregator(function(result, value, key) {
+ if (hasOwnProperty.call(result, key)) {
+ result[key].push(value);
+ } else {
+ result[key] = [value];
+ }
+ });
/**
- * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a
- * length of `0` and objects with no own enumerable properties are considered
- * "empty".
+ * Checks if `value` is in `collection` using
+ * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
+ * for equality comparisons. If `fromIndex` is negative, it is used as the offset
+ * from the end of `collection`.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Array|Object|string} value The value to inspect.
- * @returns {boolean} Returns `true` if the `value` is empty, else `false`.
+ * @alias contains, include
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to search.
+ * @param {*} target The value to search for.
+ * @param {number} [fromIndex=0] The index to search from.
+ * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
+ * @returns {boolean} Returns `true` if a matching element is found, else `false`.
* @example
*
- * _.isEmpty([1, 2, 3]);
+ * _.includes([1, 2, 3], 1);
+ * // => true
+ *
+ * _.includes([1, 2, 3], 1, 2);
* // => false
*
- * _.isEmpty({});
+ * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
* // => true
*
- * _.isEmpty('');
+ * _.includes('pebbles', 'eb');
* // => true
*/
- function isEmpty(value) {
- var result = true;
- if (!value) {
- return result;
+ function includes(collection, target, fromIndex, guard) {
+ var length = collection ? getLength(collection) : 0;
+ if (!isLength(length)) {
+ collection = values(collection);
+ length = collection.length;
}
- var className = toString.call(value),
- length = value.length;
-
- if ((className == arrayClass || className == stringClass ||
- (support.argsClass ? className == argsClass : isArguments(value))) ||
- (className == objectClass && typeof length == 'number' && isFunction(value.splice))) {
- return !length;
+ if (!length) {
+ return false;
}
- forOwn(value, function() {
- return (result = false);
- });
- return result;
+ if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
+ fromIndex = 0;
+ } else {
+ fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
+ }
+ return (typeof collection == 'string' || !isArray(collection) && isString(collection))
+ ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
+ : (getIndexOf(collection, target, fromIndex) > -1);
}
/**
- * Performs a deep comparison between two values to determine if they are
- * equivalent to each other. If a callback is provided it will be executed
- * to compare values. If the callback returns `undefined` comparisons will
- * be handled by the method instead. The callback is bound to `thisArg` and
- * invoked with two arguments; (a, b).
+ * Creates an array of values by running each element in `collection` through
+ * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
+ * arguments: (value, index|key, collection).
+ *
+ * If a property name is provided for `iteratee` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `iteratee` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
+ *
+ * Many lodash methods are guarded to work as iteratees for methods like
+ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
+ *
+ * The guarded methods are:
+ * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
+ * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
+ * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
+ * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
+ * `sum`, `uniq`, and `words`
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} a The value to compare.
- * @param {*} b The other value to compare.
- * @param {Function} [callback] The function to customize comparing values.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @alias collect
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [iteratee=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {Array} Returns the new mapped array.
* @example
*
- * var object = { 'name': 'fred' };
- * var copy = { 'name': 'fred' };
- *
- * object == copy;
- * // => false
+ * function timesThree(n) {
+ * return n * 3;
+ * }
*
- * _.isEqual(object, copy);
- * // => true
+ * _.map([1, 2], timesThree);
+ * // => [3, 6]
*
- * var words = ['hello', 'goodbye'];
- * var otherWords = ['hi', 'goodbye'];
+ * _.map({ 'a': 1, 'b': 2 }, timesThree);
+ * // => [3, 6] (iteration order is not guaranteed)
*
- * _.isEqual(words, otherWords, function(a, b) {
- * var reGreet = /^(?:hello|hi)$/i,
- * aGreet = _.isString(a) && reGreet.test(a),
- * bGreet = _.isString(b) && reGreet.test(b);
+ * var users = [
+ * { 'user': 'barney' },
+ * { 'user': 'fred' }
+ * ];
*
- * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined;
- * });
- * // => true
+ * // using the `_.property` callback shorthand
+ * _.map(users, 'user');
+ * // => ['barney', 'fred']
*/
- function isEqual(a, b, callback, thisArg) {
- return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2));
+ function map(collection, iteratee, thisArg) {
+ var func = isArray(collection) ? arrayMap : baseMap;
+ iteratee = getCallback(iteratee, thisArg, 3);
+ return func(collection, iteratee);
}
/**
- * Checks if `value` is a function.
+ * Gets the property value of `path` from all elements in `collection`.
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is a function, else `false`.
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Array|string} path The path of the property to pluck.
+ * @returns {Array} Returns the property values.
* @example
*
- * _.isFunction(_);
- * // => true
+ * var users = [
+ * { 'user': 'barney', 'age': 36 },
+ * { 'user': 'fred', 'age': 40 }
+ * ];
+ *
+ * _.pluck(users, 'user');
+ * // => ['barney', 'fred']
+ *
+ * var userIndex = _.indexBy(users, 'user');
+ * _.pluck(userIndex, 'age');
+ * // => [36, 40] (iteration order is not guaranteed)
*/
- function isFunction(value) {
- return typeof value == 'function';
- }
- // fallback for older versions of Chrome and Safari
- if (isFunction(/x/)) {
- isFunction = function(value) {
- return typeof value == 'function' && toString.call(value) == funcClass;
- };
+ function pluck(collection, path) {
+ return map(collection, property(path));
}
/**
- * Checks if `value` is the language type of Object.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ * Reduces `collection` to a value which is the accumulated result of running
+ * each element in `collection` through `iteratee`, where each successive
+ * invocation is supplied the return value of the previous. If `accumulator`
+ * is not provided the first element of `collection` is used as the initial
+ * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
+ * (accumulator, value, index|key, collection).
+ *
+ * Many lodash methods are guarded to work as iteratees for methods like
+ * `_.reduce`, `_.reduceRight`, and `_.transform`.
+ *
+ * The guarded methods are:
+ * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is an object, else `false`.
+ * @alias foldl, inject
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @param {*} [accumulator] The initial value.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {*} Returns the accumulated value.
* @example
*
- * _.isObject({});
- * // => true
+ * _.reduce([1, 2], function(total, n) {
+ * return total + n;
+ * });
+ * // => 3
*
- * _.isObject([1, 2, 3]);
- * // => true
+ * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
+ * result[key] = n * 3;
+ * return result;
+ * }, {});
+ * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
+ */
+ var reduce = createReduce(arrayReduce, baseEach);
+
+ /**
+ * The opposite of `_.filter`; this method returns the elements of `collection`
+ * that `predicate` does **not** return truthy for.
*
- * _.isObject(1);
- * // => false
+ * @static
+ * @memberOf _
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Array} Returns the new filtered array.
+ * @example
+ *
+ * _.reject([1, 2, 3, 4], function(n) {
+ * return n % 2 == 0;
+ * });
+ * // => [1, 3]
+ *
+ * var users = [
+ * { 'user': 'barney', 'age': 36, 'active': false },
+ * { 'user': 'fred', 'age': 40, 'active': true }
+ * ];
+ *
+ * // using the `_.matches` callback shorthand
+ * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
+ * // => ['barney']
+ *
+ * // using the `_.matchesProperty` callback shorthand
+ * _.pluck(_.reject(users, 'active', false), 'user');
+ * // => ['fred']
+ *
+ * // using the `_.property` callback shorthand
+ * _.pluck(_.reject(users, 'active'), 'user');
+ * // => ['barney']
*/
- function isObject(value) {
- // check if the value is the ECMAScript language type of Object
- // http://es5.github.io/#x8
- // and avoid a V8 bug
- // http://code.google.com/p/v8/issues/detail?id=2291
- return !!(value && objectTypes[typeof value]);
+ function reject(collection, predicate, thisArg) {
+ var func = isArray(collection) ? arrayFilter : baseFilter;
+ predicate = getCallback(predicate, thisArg, 3);
+ return func(collection, function(value, index, collection) {
+ return !predicate(value, index, collection);
+ });
}
/**
- * Checks if `value` is an object created by the `Object` constructor.
+ * Checks if `predicate` returns truthy for **any** element of `collection`.
+ * The function returns as soon as it finds a passing value and does not iterate
+ * over the entire collection. The predicate is bound to `thisArg` and invoked
+ * with three arguments: (value, index|key, collection).
+ *
+ * If a property name is provided for `predicate` the created `_.property`
+ * style callback returns the property value of the given element.
+ *
+ * If a value is also provided for `thisArg` the created `_.matchesProperty`
+ * style callback returns `true` for elements that have a matching property
+ * value, else `false`.
+ *
+ * If an object is provided for `predicate` the created `_.matches` style
+ * callback returns `true` for elements that have the properties of the given
+ * object, else `false`.
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @alias any
+ * @category Collection
+ * @param {Array|Object|string} collection The collection to iterate over.
+ * @param {Function|Object|string} [predicate=_.identity] The function invoked
+ * per iteration.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ * else `false`.
* @example
*
- * function Shape() {
- * this.x = 0;
- * this.y = 0;
- * }
+ * _.some([null, 0, 'yes', false], Boolean);
+ * // => true
*
- * _.isPlainObject(new Shape);
- * // => false
+ * var users = [
+ * { 'user': 'barney', 'active': true },
+ * { 'user': 'fred', 'active': false }
+ * ];
*
- * _.isPlainObject([1, 2, 3]);
+ * // using the `_.matches` callback shorthand
+ * _.some(users, { 'user': 'barney', 'active': false });
* // => false
*
- * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // using the `_.matchesProperty` callback shorthand
+ * _.some(users, 'active', false);
+ * // => true
+ *
+ * // using the `_.property` callback shorthand
+ * _.some(users, 'active');
* // => true
*/
- var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
- if (!(value && toString.call(value) == objectClass) || (!support.argsClass && isArguments(value))) {
- return false;
+ function some(collection, predicate, thisArg) {
+ var func = isArray(collection) ? arraySome : baseSome;
+ if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
+ predicate = null;
}
- var valueOf = value.valueOf,
- objProto = typeof valueOf == 'function' && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
+ if (typeof predicate != 'function' || thisArg !== undefined) {
+ predicate = getCallback(predicate, thisArg, 3);
+ }
+ return func(collection, predicate);
+ }
- return objProto
- ? (value == objProto || getPrototypeOf(value) == objProto)
- : shimIsPlainObject(value);
- };
+ /*------------------------------------------------------------------------*/
/**
- * Checks if `value` is a string.
+ * Gets the number of milliseconds that have elapsed since the Unix epoch
+ * (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
- * @category Objects
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if the `value` is a string, else `false`.
+ * @category Date
* @example
*
- * _.isString('fred');
- * // => true
+ * _.defer(function(stamp) {
+ * console.log(_.now() - stamp);
+ * }, _.now());
+ * // => logs the number of milliseconds it took for the deferred function to be invoked
*/
- function isString(value) {
- return typeof value == 'string' ||
- value && typeof value == 'object' && toString.call(value) == stringClass || false;
- }
+ var now = nativeNow || function() {
+ return new Date().getTime();
+ };
+
+ /*------------------------------------------------------------------------*/
/**
- * Recursively merges own enumerable properties of the source object(s), that
- * don't resolve to `undefined` into the destination object. Subsequent sources
- * will overwrite property assignments of previous sources. If a callback is
- * provided it will be executed to produce the merged values of the destination
- * and source properties. If the callback returns `undefined` merging will
- * be handled by the method instead. The callback is bound to `thisArg` and
- * invoked with two arguments; (objectValue, sourceValue).
+ * Creates a function that invokes `func` with the `this` binding of `thisArg`
+ * and prepends any additional `_.bind` arguments to those provided to the
+ * bound function.
+ *
+ * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
+ * may be used as a placeholder for partially applied arguments.
+ *
+ * **Note:** Unlike native `Function#bind` this method does not set the "length"
+ * property of bound functions.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The destination object.
- * @param {...Object} [source] The source objects.
- * @param {Function} [callback] The function to customize merging properties.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns the destination object.
+ * @category Function
+ * @param {Function} func The function to bind.
+ * @param {*} thisArg The `this` binding of `func`.
+ * @param {...*} [partials] The arguments to be partially applied.
+ * @returns {Function} Returns the new bound function.
* @example
*
- * var names = {
- * 'characters': [
- * { 'name': 'barney' },
- * { 'name': 'fred' }
- * ]
+ * var greet = function(greeting, punctuation) {
+ * return greeting + ' ' + this.user + punctuation;
* };
*
- * var ages = {
- * 'characters': [
- * { 'age': 36 },
- * { 'age': 40 }
- * ]
- * };
+ * var object = { 'user': 'fred' };
+ *
+ * var bound = _.bind(greet, object, 'hi');
+ * bound('!');
+ * // => 'hi fred!'
+ *
+ * // using placeholders
+ * var bound = _.bind(greet, object, _, '!');
+ * bound('hi');
+ * // => 'hi fred!'
+ */
+ var bind = restParam(function(func, thisArg, partials) {
+ var bitmask = BIND_FLAG;
+ if (partials.length) {
+ var holders = replaceHolders(partials, bind.placeholder);
+ bitmask |= PARTIAL_FLAG;
+ }
+ return createWrapper(func, bitmask, thisArg, partials, holders);
+ });
+
+ /**
+ * Creates a debounced function that delays invoking `func` until after `wait`
+ * milliseconds have elapsed since the last time the debounced function was
+ * invoked. The debounced function comes with a `cancel` method to cancel
+ * delayed invocations. Provide an options object to indicate that `func`
+ * should be invoked on the leading and/or trailing edge of the `wait` timeout.
+ * Subsequent calls to the debounced function return the result of the last
+ * `func` invocation.
+ *
+ * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
+ * on the trailing edge of the timeout only if the the debounced function is
+ * invoked more than once during the `wait` timeout.
+ *
+ * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
+ * for details over the differences between `_.debounce` and `_.throttle`.
+ *
+ * @static
+ * @memberOf _
+ * @category Function
+ * @param {Function} func The function to debounce.
+ * @param {number} [wait=0] The number of milliseconds to delay.
+ * @param {Object} [options] The options object.
+ * @param {boolean} [options.leading=false] Specify invoking on the leading
+ * edge of the timeout.
+ * @param {number} [options.maxWait] The maximum time `func` is allowed to be
+ * delayed before it is invoked.
+ * @param {boolean} [options.trailing=true] Specify invoking on the trailing
+ * edge of the timeout.
+ * @returns {Function} Returns the new debounced function.
+ * @example
+ *
+ * // avoid costly calculations while the window size is in flux
+ * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
+ *
+ * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
+ * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
+ * 'leading': true,
+ * 'trailing': false
+ * }));
+ *
+ * // ensure `batchLog` is invoked once after 1 second of debounced calls
+ * var source = new EventSource('/stream');
+ * jQuery(source).on('message', _.debounce(batchLog, 250, {
+ * 'maxWait': 1000
+ * }));
*
- * _.merge(names, ages);
- * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] }
+ * // cancel a debounced call
+ * var todoChanges = _.debounce(batchLog, 1000);
+ * Object.observe(models.todo, todoChanges);
*
- * var food = {
- * 'fruits': ['apple'],
- * 'vegetables': ['beet']
- * };
+ * Object.observe(models, function(changes) {
+ * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
+ * todoChanges.cancel();
+ * }
+ * }, ['delete']);
*
- * var otherFood = {
- * 'fruits': ['banana'],
- * 'vegetables': ['carrot']
- * };
+ * // ...at some point `models.todo` is changed
+ * models.todo.completed = true;
*
- * _.merge(food, otherFood, function(a, b) {
- * return _.isArray(a) ? a.concat(b) : undefined;
- * });
- * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] }
+ * // ...before 1 second has passed `models.todo` is deleted
+ * // which cancels the debounced `todoChanges` call
+ * delete models.todo;
*/
- function merge(object) {
- var args = arguments,
- length = 2;
+ function debounce(func, wait, options) {
+ var args,
+ maxTimeoutId,
+ result,
+ stamp,
+ thisArg,
+ timeoutId,
+ trailingCall,
+ lastCalled = 0,
+ maxWait = false,
+ trailing = true;
- if (!isObject(object)) {
- return object;
+ if (typeof func != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ wait = wait < 0 ? 0 : (+wait || 0);
+ if (options === true) {
+ var leading = true;
+ trailing = false;
+ } else if (isObject(options)) {
+ leading = options.leading;
+ maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
+ trailing = 'trailing' in options ? options.trailing : trailing;
}
- // allows working with `_.reduce` and `_.reduceRight` without using
- // their `index` and `collection` arguments
- if (typeof args[2] != 'number') {
- length = args.length;
+ function cancel() {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ if (maxTimeoutId) {
+ clearTimeout(maxTimeoutId);
+ }
+ maxTimeoutId = timeoutId = trailingCall = undefined;
}
- if (length > 3 && typeof args[length - 2] == 'function') {
- var callback = baseCreateCallback(args[--length - 1], args[length--], 2);
- } else if (length > 2 && typeof args[length - 1] == 'function') {
- callback = args[--length];
+
+ function delayed() {
+ var remaining = wait - (now() - stamp);
+ if (remaining <= 0 || remaining > wait) {
+ if (maxTimeoutId) {
+ clearTimeout(maxTimeoutId);
+ }
+ var isCalled = trailingCall;
+ maxTimeoutId = timeoutId = trailingCall = undefined;
+ if (isCalled) {
+ lastCalled = now();
+ result = func.apply(thisArg, args);
+ if (!timeoutId && !maxTimeoutId) {
+ args = thisArg = null;
+ }
+ }
+ } else {
+ timeoutId = setTimeout(delayed, remaining);
+ }
}
- var sources = slice(arguments, 1, length),
- index = -1,
- stackA = getArray(),
- stackB = getArray();
- while (++index < length) {
- baseMerge(object, sources[index], callback, stackA, stackB);
+ function maxDelayed() {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ maxTimeoutId = timeoutId = trailingCall = undefined;
+ if (trailing || (maxWait !== wait)) {
+ lastCalled = now();
+ result = func.apply(thisArg, args);
+ if (!timeoutId && !maxTimeoutId) {
+ args = thisArg = null;
+ }
+ }
}
- releaseArray(stackA);
- releaseArray(stackB);
- return object;
+
+ function debounced() {
+ args = arguments;
+ stamp = now();
+ thisArg = this;
+ trailingCall = trailing && (timeoutId || !leading);
+
+ if (maxWait === false) {
+ var leadingCall = leading && !timeoutId;
+ } else {
+ if (!maxTimeoutId && !leading) {
+ lastCalled = stamp;
+ }
+ var remaining = maxWait - (stamp - lastCalled),
+ isCalled = remaining <= 0 || remaining > maxWait;
+
+ if (isCalled) {
+ if (maxTimeoutId) {
+ maxTimeoutId = clearTimeout(maxTimeoutId);
+ }
+ lastCalled = stamp;
+ result = func.apply(thisArg, args);
+ }
+ else if (!maxTimeoutId) {
+ maxTimeoutId = setTimeout(maxDelayed, remaining);
+ }
+ }
+ if (isCalled && timeoutId) {
+ timeoutId = clearTimeout(timeoutId);
+ }
+ else if (!timeoutId && wait !== maxWait) {
+ timeoutId = setTimeout(delayed, wait);
+ }
+ if (leadingCall) {
+ isCalled = true;
+ result = func.apply(thisArg, args);
+ }
+ if (isCalled && !timeoutId && !maxTimeoutId) {
+ args = thisArg = null;
+ }
+ return result;
+ }
+ debounced.cancel = cancel;
+ return debounced;
}
/**
- * Creates a shallow clone of `object` excluding the specified properties.
- * Property names may be specified as individual arguments or as arrays of
- * property names. If a callback is provided it will be executed for each
- * property of `object` omitting the properties the callback returns truey
- * for. The callback is bound to `thisArg` and invoked with three arguments;
- * (value, key, object).
+ * Creates a function that invokes `func` with the `this` binding of the
+ * created function and arguments from `start` and beyond provided as an array.
+ *
+ * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The source object.
- * @param {Function|...string|string[]} [callback] The properties to omit or the
- * function called per iteration.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns an object without the omitted properties.
+ * @category Function
+ * @param {Function} func The function to apply a rest parameter to.
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
+ * @returns {Function} Returns the new function.
* @example
*
- * _.omit({ 'name': 'fred', 'age': 40 }, 'age');
- * // => { 'name': 'fred' }
- *
- * _.omit({ 'name': 'fred', 'age': 40 }, function(value) {
- * return typeof value == 'number';
+ * var say = _.restParam(function(what, names) {
+ * return what + ' ' + _.initial(names).join(', ') +
+ * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
* });
- * // => { 'name': 'fred' }
+ *
+ * say('hello', 'fred', 'barney', 'pebbles');
+ * // => 'hello fred, barney, & pebbles'
*/
- function omit(object, callback, thisArg) {
- var result = {};
- if (typeof callback != 'function') {
- var props = [];
- forIn(object, function(value, key) {
- props.push(key);
- });
- props = baseDifference(props, baseFlatten(arguments, true, false, 1));
-
- var index = -1,
- length = props.length;
+ function restParam(func, start) {
+ if (typeof func != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+ start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
+ return function() {
+ var args = arguments,
+ index = -1,
+ length = nativeMax(args.length - start, 0),
+ rest = Array(length);
while (++index < length) {
- var key = props[index];
- result[key] = object[key];
+ rest[index] = args[start + index];
}
- } else {
- callback = lodash.createCallback(callback, thisArg, 3);
- forIn(object, function(value, key, object) {
- if (!callback(value, key, object)) {
- result[key] = value;
- }
- });
- }
- return result;
+ switch (start) {
+ case 0: return func.call(this, rest);
+ case 1: return func.call(this, args[0], rest);
+ case 2: return func.call(this, args[0], args[1], rest);
+ }
+ var otherArgs = Array(start + 1);
+ index = -1;
+ while (++index < start) {
+ otherArgs[index] = args[index];
+ }
+ otherArgs[start] = rest;
+ return func.apply(this, otherArgs);
+ };
}
/**
- * Creates a two dimensional array of an object's key-value pairs,
- * i.e. `[[key1, value1], [key2, value2]]`.
+ * Creates a throttled function that only invokes `func` at most once per
+ * every `wait` milliseconds. The throttled function comes with a `cancel`
+ * method to cancel delayed invocations. Provide an options object to indicate
+ * that `func` should be invoked on the leading and/or trailing edge of the
+ * `wait` timeout. Subsequent calls to the throttled function return the
+ * result of the last `func` call.
+ *
+ * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
+ * on the trailing edge of the timeout only if the the throttled function is
+ * invoked more than once during the `wait` timeout.
+ *
+ * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
+ * for details over the differences between `_.throttle` and `_.debounce`.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns new array of key-value pairs.
+ * @category Function
+ * @param {Function} func The function to throttle.
+ * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
+ * @param {Object} [options] The options object.
+ * @param {boolean} [options.leading=true] Specify invoking on the leading
+ * edge of the timeout.
+ * @param {boolean} [options.trailing=true] Specify invoking on the trailing
+ * edge of the timeout.
+ * @returns {Function} Returns the new throttled function.
* @example
*
- * _.pairs({ 'barney': 36, 'fred': 40 });
- * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments)
+ * // avoid excessively updating the position while scrolling
+ * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
+ *
+ * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
+ * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
+ * 'trailing': false
+ * }));
+ *
+ * // cancel a trailing throttled call
+ * jQuery(window).on('popstate', throttled.cancel);
*/
- function pairs(object) {
- var index = -1,
- props = keys(object),
- length = props.length,
- result = Array(length);
+ function throttle(func, wait, options) {
+ var leading = true,
+ trailing = true;
- while (++index < length) {
- var key = props[index];
- result[index] = [key, object[key]];
+ if (typeof func != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
}
- return result;
+ if (options === false) {
+ leading = false;
+ } else if (isObject(options)) {
+ leading = 'leading' in options ? !!options.leading : leading;
+ trailing = 'trailing' in options ? !!options.trailing : trailing;
+ }
+ debounceOptions.leading = leading;
+ debounceOptions.maxWait = +wait;
+ debounceOptions.trailing = trailing;
+ return debounce(func, wait, debounceOptions);
}
+ /*------------------------------------------------------------------------*/
+
/**
- * Creates a shallow clone of `object` composed of the specified properties.
- * Property names may be specified as individual arguments or as arrays of
- * property names. If a callback is provided it will be executed for each
- * property of `object` picking the properties the callback returns truey
- * for. The callback is bound to `thisArg` and invoked with three arguments;
- * (value, key, object).
+ * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
+ * otherwise they are assigned by reference. If `customizer` is provided it is
+ * invoked to produce the cloned values. If `customizer` returns `undefined`
+ * cloning is handled by the method instead. The `customizer` is bound to
+ * `thisArg` and invoked with two argument; (value [, index|key, object]).
+ *
+ * **Note:** This method is loosely based on the
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
+ * The enumerable properties of `arguments` objects and objects created by
+ * constructors other than `Object` are cloned to plain `Object` objects. An
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
+ * Maps, Sets, and WeakMaps.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The source object.
- * @param {Function|...string|string[]} [callback] The function called per
- * iteration or property names to pick, specified as individual property
- * names or arrays of property names.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns an object composed of the picked properties.
+ * @category Lang
+ * @param {*} value The value to clone.
+ * @param {boolean} [isDeep] Specify a deep clone.
+ * @param {Function} [customizer] The function to customize cloning values.
+ * @param {*} [thisArg] The `this` binding of `customizer`.
+ * @returns {*} Returns the cloned value.
* @example
*
- * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name');
- * // => { 'name': 'fred' }
+ * var users = [
+ * { 'user': 'barney' },
+ * { 'user': 'fred' }
+ * ];
+ *
+ * var shallow = _.clone(users);
+ * shallow[0] === users[0];
+ * // => true
+ *
+ * var deep = _.clone(users, true);
+ * deep[0] === users[0];
+ * // => false
*
- * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) {
- * return key.charAt(0) != '_';
+ * // using a customizer callback
+ * var el = _.clone(document.body, function(value) {
+ * if (_.isElement(value)) {
+ * return value.cloneNode(false);
+ * }
* });
- * // => { 'name': 'fred' }
+ *
+ * el === document.body
+ * // => false
+ * el.nodeName
+ * // => BODY
+ * el.childNodes.length;
+ * // => 0
*/
- function pick(object, callback, thisArg) {
- var result = {};
- if (typeof callback != 'function') {
- var index = -1,
- props = baseFlatten(arguments, true, false, 1),
- length = isObject(object) ? props.length : 0;
-
- while (++index < length) {
- var key = props[index];
- if (key in object) {
- result[key] = object[key];
- }
- }
- } else {
- callback = lodash.createCallback(callback, thisArg, 3);
- forIn(object, function(value, key, object) {
- if (callback(value, key, object)) {
- result[key] = value;
- }
- });
+ function clone(value, isDeep, customizer, thisArg) {
+ if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
+ isDeep = false;
}
- return result;
+ else if (typeof isDeep == 'function') {
+ thisArg = customizer;
+ customizer = isDeep;
+ isDeep = false;
+ }
+ return typeof customizer == 'function'
+ ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))
+ : baseClone(value, isDeep);
}
/**
- * Creates an array composed of the own enumerable property values of `object`.
+ * Creates a deep clone of `value`. If `customizer` is provided it is invoked
+ * to produce the cloned values. If `customizer` returns `undefined` cloning
+ * is handled by the method instead. The `customizer` is bound to `thisArg`
+ * and invoked with two argument; (value [, index|key, object]).
+ *
+ * **Note:** This method is loosely based on the
+ * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
+ * The enumerable properties of `arguments` objects and objects created by
+ * constructors other than `Object` are cloned to plain `Object` objects. An
+ * empty object is returned for uncloneable values such as functions, DOM nodes,
+ * Maps, Sets, and WeakMaps.
*
* @static
* @memberOf _
- * @category Objects
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns an array of property values.
+ * @category Lang
+ * @param {*} value The value to deep clone.
+ * @param {Function} [customizer] The function to customize cloning values.
+ * @param {*} [thisArg] The `this` binding of `customizer`.
+ * @returns {*} Returns the deep cloned value.
* @example
*
- * _.values({ 'one': 1, 'two': 2, 'three': 3 });
- * // => [1, 2, 3] (property order is not guaranteed across environments)
+ * var users = [
+ * { 'user': 'barney' },
+ * { 'user': 'fred' }
+ * ];
+ *
+ * var deep = _.cloneDeep(users);
+ * deep[0] === users[0];
+ * // => false
+ *
+ * // using a customizer callback
+ * var el = _.cloneDeep(document.body, function(value) {
+ * if (_.isElement(value)) {
+ * return value.cloneNode(true);
+ * }
+ * });
+ *
+ * el === document.body
+ * // => false
+ * el.nodeName
+ * // => BODY
+ * el.childNodes.length;
+ * // => 20
*/
- function values(object) {
- var index = -1,
- props = keys(object),
- length = props.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = object[props[index]];
- }
- return result;
+ function cloneDeep(value, customizer, thisArg) {
+ return typeof customizer == 'function'
+ ? baseClone(value, true, bindCallback(customizer, thisArg, 1))
+ : baseClone(value, true);
}
- /*--------------------------------------------------------------------------*/
-
/**
- * Checks if a given value is present in a collection using strict equality
- * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the
- * offset from the end of the collection.
+ * Checks if `value` is classified as an `arguments` object.
*
* @static
* @memberOf _
- * @alias include
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {*} target The value to check for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {boolean} Returns `true` if the `target` element is found, else `false`.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
- * _.contains([1, 2, 3], 1);
+ * _.isArguments(function() { return arguments; }());
* // => true
*
- * _.contains([1, 2, 3], 1, 2);
+ * _.isArguments([1, 2, 3]);
* // => false
- *
- * _.contains({ 'name': 'fred', 'age': 40 }, 'fred');
- * // => true
- *
- * _.contains('pebbles', 'eb');
- * // => true
*/
- function contains(collection, target, fromIndex) {
- var index = -1,
- indexOf = getIndexOf(),
- length = collection ? collection.length : 0,
- result = false;
-
- fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0;
- if (isArray(collection)) {
- result = indexOf(collection, target, fromIndex) > -1;
- } else if (typeof length == 'number') {
- result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1;
- } else {
- baseEach(collection, function(value) {
- if (++index >= fromIndex) {
- return !(result = value === target);
- }
- });
- }
- return result;
+ function isArguments(value) {
+ return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
+ }
+ // Fallback for environments without a `toStringTag` for `arguments` objects.
+ if (!support.argsTag) {
+ isArguments = function(value) {
+ return isObjectLike(value) && isArrayLike(value) &&
+ hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
+ };
}
/**
- * Checks if the given callback returns truey value for **all** elements of
- * a collection. The callback is bound to `thisArg` and invoked with three
- * arguments; (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
- * @alias all
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {boolean} Returns `true` if all elements passed the callback check,
- * else `false`.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
- * _.every([true, 1, null, 'yes']);
- * // => false
- *
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
- * ];
- *
- * // using "_.pluck" callback shorthand
- * _.every(characters, 'age');
+ * _.isArray([1, 2, 3]);
* // => true
*
- * // using "_.where" callback shorthand
- * _.every(characters, { 'age': 36 });
+ * _.isArray(function() { return arguments; }());
* // => false
*/
- function every(collection, callback, thisArg) {
- var result = true;
- callback = lodash.createCallback(callback, thisArg, 3);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- if (!(result = !!callback(collection[index], index, collection))) {
- break;
- }
- }
- } else {
- baseEach(collection, function(value, index, collection) {
- return (result = !!callback(value, index, collection));
- });
- }
- return result;
- }
+ var isArray = nativeIsArray || function(value) {
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
+ };
/**
- * Iterates over elements of a collection, returning an array of all elements
- * the callback returns truey for. The callback is bound to `thisArg` and
- * invoked with three arguments; (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Checks if `value` is empty. A value is considered empty unless it is an
+ * `arguments` object, array, string, or jQuery-like collection with a length
+ * greater than `0` or an object with own enumerable properties.
*
* @static
* @memberOf _
- * @alias select
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array} Returns a new array of elements that passed the callback check.
+ * @category Lang
+ * @param {Array|Object|string} value The value to inspect.
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
* @example
*
- * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });
- * // => [2, 4, 6]
+ * _.isEmpty(null);
+ * // => true
*
- * var characters = [
- * { 'name': 'barney', 'age': 36, 'blocked': false },
- * { 'name': 'fred', 'age': 40, 'blocked': true }
- * ];
+ * _.isEmpty(true);
+ * // => true
*
- * // using "_.pluck" callback shorthand
- * _.filter(characters, 'blocked');
- * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }]
+ * _.isEmpty(1);
+ * // => true
+ *
+ * _.isEmpty([1, 2, 3]);
+ * // => false
*
- * // using "_.where" callback shorthand
- * _.filter(characters, { 'age': 36 });
- * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }]
+ * _.isEmpty({ 'a': 1 });
+ * // => false
*/
- function filter(collection, callback, thisArg) {
- var result = [];
- callback = lodash.createCallback(callback, thisArg, 3);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- var value = collection[index];
- if (callback(value, index, collection)) {
- result.push(value);
- }
- }
- } else {
- baseEach(collection, function(value, index, collection) {
- if (callback(value, index, collection)) {
- result.push(value);
- }
- });
+ function isEmpty(value) {
+ if (value == null) {
+ return true;
}
- return result;
+ if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||
+ (isObjectLike(value) && isFunction(value.splice)))) {
+ return !value.length;
+ }
+ return !keys(value).length;
}
/**
- * Iterates over elements of a collection, returning the first element that
- * the callback returns truey for. The callback is bound to `thisArg` and
- * invoked with three arguments; (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
+ * Performs a deep comparison between two values to determine if they are
+ * equivalent. If `customizer` is provided it is invoked to compare values.
+ * If `customizer` returns `undefined` comparisons are handled by the method
+ * instead. The `customizer` is bound to `thisArg` and invoked with three
+ * arguments: (value, other [, index|key]).
*
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+ * numbers, `Object` objects, regexes, and strings. Objects are compared by
+ * their own, not inherited, enumerable properties. Functions and DOM nodes
+ * are **not** supported. Provide a customizer function to extend support
+ * for comparing other values.
*
* @static
* @memberOf _
- * @alias detect, findWhere
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the found element, else `undefined`.
+ * @alias eq
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {Function} [customizer] The function to customize value comparisons.
+ * @param {*} [thisArg] The `this` binding of `customizer`.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36, 'blocked': false },
- * { 'name': 'fred', 'age': 40, 'blocked': true },
- * { 'name': 'pebbles', 'age': 1, 'blocked': false }
- * ];
+ * var object = { 'user': 'fred' };
+ * var other = { 'user': 'fred' };
*
- * _.find(characters, function(chr) {
- * return chr.age < 40;
- * });
- * // => { 'name': 'barney', 'age': 36, 'blocked': false }
+ * object == other;
+ * // => false
+ *
+ * _.isEqual(object, other);
+ * // => true
*
- * // using "_.where" callback shorthand
- * _.find(characters, { 'age': 1 });
- * // => { 'name': 'pebbles', 'age': 1, 'blocked': false }
+ * // using a customizer callback
+ * var array = ['hello', 'goodbye'];
+ * var other = ['hi', 'goodbye'];
*
- * // using "_.pluck" callback shorthand
- * _.find(characters, 'blocked');
- * // => { 'name': 'fred', 'age': 40, 'blocked': true }
+ * _.isEqual(array, other, function(value, other) {
+ * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
+ * return true;
+ * }
+ * });
+ * // => true
*/
- function find(collection, callback, thisArg) {
- callback = lodash.createCallback(callback, thisArg, 3);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- var value = collection[index];
- if (callback(value, index, collection)) {
- return value;
- }
- }
- } else {
- var result;
- baseEach(collection, function(value, index, collection) {
- if (callback(value, index, collection)) {
- result = value;
- return false;
- }
- });
- return result;
- }
+ function isEqual(value, other, customizer, thisArg) {
+ customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;
+ var result = customizer ? customizer(value, other) : undefined;
+ return result === undefined ? baseIsEqual(value, other, customizer) : !!result;
}
/**
- * Iterates over elements of a collection, executing the callback for each
- * element. The callback is bound to `thisArg` and invoked with three arguments;
- * (value, index|key, collection). Callbacks may exit iteration early by
- * explicitly returning `false`.
- *
- * Note: As with other "Collections" methods, objects with a `length` property
- * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
- * may be used for object iteration.
+ * Checks if `value` is classified as a `Function` object.
*
* @static
* @memberOf _
- * @alias each
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [callback=identity] The function called per iteration.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array|Object|string} Returns `collection`.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
- * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');
- * // => logs each number and returns '1,2,3'
+ * _.isFunction(_);
+ * // => true
*
- * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });
- * // => logs each number and returns the object (property order is not guaranteed across environments)
+ * _.isFunction(/abc/);
+ * // => false
*/
- function forEach(collection, callback, thisArg) {
- if (callback && typeof thisArg == 'undefined' && isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- if (callback(collection[index], index, collection) === false) {
- break;
- }
- }
- } else {
- baseEach(collection, callback, thisArg);
- }
- return collection;
- }
+ var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in older versions of Chrome and Safari which return 'function' for regexes
+ // and Safari 8 equivalents which return 'object' for typed array constructors.
+ return objToString.call(value) == funcTag;
+ };
/**
- * Creates an object composed of keys generated from the results of running
- * each element of a collection through the callback. The corresponding value
- * of each key is an array of the elements responsible for generating the key.
- * The callback is bound to `thisArg` and invoked with three arguments;
- * (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Object} Returns the composed aggregate object.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
- * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); });
- * // => { '4': [4.2], '6': [6.1, 6.4] }
+ * _.isObject({});
+ * // => true
*
- * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math);
- * // => { '4': [4.2], '6': [6.1, 6.4] }
+ * _.isObject([1, 2, 3]);
+ * // => true
*
- * // using "_.pluck" callback shorthand
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
+ * _.isObject(1);
+ * // => false
*/
- var groupBy = createAggregator(function(result, value, key) {
- (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value);
- });
+ function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+ }
/**
- * Creates an array of values by running each element in the collection
- * through the callback. The callback is bound to `thisArg` and invoked with
- * three arguments; (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Checks if `value` is a native function.
*
* @static
* @memberOf _
- * @alias collect
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array} Returns a new array of the results of each `callback` execution.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
* @example
*
- * _.map([1, 2, 3], function(num) { return num * 3; });
- * // => [3, 6, 9]
- *
- * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; });
- * // => [3, 6, 9] (property order is not guaranteed across environments)
- *
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
- * ];
+ * _.isNative(Array.prototype.push);
+ * // => true
*
- * // using "_.pluck" callback shorthand
- * _.map(characters, 'name');
- * // => ['barney', 'fred']
+ * _.isNative(_);
+ * // => false
*/
- function map(collection, callback, thisArg) {
- var index = -1,
- length = collection ? collection.length : 0,
- result = Array(typeof length == 'number' ? length : 0);
-
- callback = lodash.createCallback(callback, thisArg, 3);
- if (isArray(collection)) {
- while (++index < length) {
- result[index] = callback(collection[index], index, collection);
- }
- } else {
- baseEach(collection, function(value, key, collection) {
- result[++index] = callback(value, key, collection);
- });
+ function isNative(value) {
+ if (value == null) {
+ return false;
}
- return result;
+ if (objToString.call(value) == funcTag) {
+ return reIsNative.test(fnToString.call(value));
+ }
+ return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
}
/**
- * Retrieves the value of a specified property from all elements in the collection.
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * **Note:** This method assumes objects created by the `Object` constructor
+ * have no inherited enumerable properties.
*
* @static
* @memberOf _
- * @type Function
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {string} property The property to pluck.
- * @returns {Array} Returns a new array of property values.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
- * ];
+ * function Foo() {
+ * this.a = 1;
+ * }
*
- * _.pluck(characters, 'name');
- * // => ['barney', 'fred']
- */
- var pluck = map;
-
- /**
- * Reduces a collection to a value which is the accumulated result of running
- * each element in the collection through the callback, where each successive
- * callback execution consumes the return value of the previous execution. If
- * `accumulator` is not provided the first element of the collection will be
- * used as the initial `accumulator` value. The callback is bound to `thisArg`
- * and invoked with four arguments; (accumulator, value, index|key, collection).
+ * _.isPlainObject(new Foo);
+ * // => false
*
- * @static
- * @memberOf _
- * @alias foldl, inject
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function} [callback=identity] The function called per iteration.
- * @param {*} [accumulator] Initial value of the accumulator.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the accumulated value.
- * @example
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
*
- * var sum = _.reduce([1, 2, 3], function(sum, num) {
- * return sum + num;
- * });
- * // => 6
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
*
- * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {
- * result[key] = num * 3;
- * return result;
- * }, {});
- * // => { 'a': 3, 'b': 6, 'c': 9 }
+ * _.isPlainObject(Object.create(null));
+ * // => true
*/
- function reduce(collection, callback, accumulator, thisArg) {
- var noaccum = arguments.length < 3;
- callback = lodash.createCallback(callback, thisArg, 4);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- if (noaccum) {
- accumulator = collection[++index];
- }
- while (++index < length) {
- accumulator = callback(accumulator, collection[index], index, collection);
- }
- } else {
- baseEach(collection, function(value, index, collection) {
- accumulator = noaccum
- ? (noaccum = false, value)
- : callback(accumulator, value, index, collection)
- });
+ var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
+ if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) {
+ return false;
}
- return accumulator;
- }
+ var valueOf = getNative(value, 'valueOf'),
+ objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
+
+ return objProto
+ ? (value == objProto || getPrototypeOf(value) == objProto)
+ : shimIsPlainObject(value);
+ };
/**
- * The opposite of `_.filter` this method returns the elements of a
- * collection that the callback does **not** return truey for.
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @memberOf _
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array} Returns a new array of elements that failed the callback check.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
- * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });
- * // => [1, 3, 5]
- *
- * var characters = [
- * { 'name': 'barney', 'age': 36, 'blocked': false },
- * { 'name': 'fred', 'age': 40, 'blocked': true }
- * ];
- *
- * // using "_.pluck" callback shorthand
- * _.reject(characters, 'blocked');
- * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }]
+ * _.isString('abc');
+ * // => true
*
- * // using "_.where" callback shorthand
- * _.reject(characters, { 'age': 36 });
- * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }]
+ * _.isString(1);
+ * // => false
*/
- function reject(collection, callback, thisArg) {
- callback = lodash.createCallback(callback, thisArg, 3);
- return filter(collection, function(value, index, collection) {
- return !callback(value, index, collection);
- });
+ function isString(value) {
+ return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);
}
/**
- * Checks if the callback returns a truey value for **any** element of a
- * collection. The function returns as soon as it finds a passing value and
- * does not iterate over the entire collection. The callback is bound to
- * `thisArg` and invoked with three arguments; (value, index|key, collection).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Checks if `value` is classified as a typed array.
*
* @static
* @memberOf _
- * @alias any
- * @category Collections
- * @param {Array|Object|string} collection The collection to iterate over.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {boolean} Returns `true` if any element passed the callback check,
- * else `false`.
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
* @example
*
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var characters = [
- * { 'name': 'barney', 'age': 36, 'blocked': false },
- * { 'name': 'fred', 'age': 40, 'blocked': true }
- * ];
- *
- * // using "_.pluck" callback shorthand
- * _.some(characters, 'blocked');
+ * _.isTypedArray(new Uint8Array);
* // => true
*
- * // using "_.where" callback shorthand
- * _.some(characters, { 'age': 1 });
+ * _.isTypedArray([]);
* // => false
*/
- function some(collection, callback, thisArg) {
- var result;
- callback = lodash.createCallback(callback, thisArg, 3);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- if ((result = callback(collection[index], index, collection))) {
- break;
- }
- }
- } else {
- baseEach(collection, function(value, index, collection) {
- return !(result = callback(value, index, collection));
- });
- }
- return !!result;
+ function isTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
}
- /*--------------------------------------------------------------------------*/
-
/**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are all falsey.
+ * Converts `value` to a plain object flattening inherited enumerable
+ * properties of `value` to own properties of the plain object.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to compact.
- * @returns {Array} Returns a new array of filtered values.
+ * @category Lang
+ * @param {*} value The value to convert.
+ * @returns {Object} Returns the converted plain object.
* @example
*
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
+ * function Foo() {
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.assign({ 'a': 1 }, new Foo);
+ * // => { 'a': 1, 'b': 2 }
+ *
+ * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
+ * // => { 'a': 1, 'b': 2, 'c': 3 }
*/
- function compact(array) {
- var index = -1,
- length = array ? array.length : 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (value) {
- result.push(value);
- }
- }
- return result;
+ function toPlainObject(value) {
+ return baseCopy(value, keysIn(value));
}
+ /*------------------------------------------------------------------------*/
+
/**
- * Creates an array excluding all values of the provided arrays using strict
- * equality for comparisons, i.e. `===`.
+ * Assigns own enumerable properties of source object(s) to the destination
+ * object. Subsequent sources overwrite property assignments of previous sources.
+ * If `customizer` is provided it is invoked to produce the assigned values.
+ * The `customizer` is bound to `thisArg` and invoked with five arguments:
+ * (objectValue, sourceValue, key, object, source).
+ *
+ * **Note:** This method mutates `object` and is based on
+ * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to process.
- * @param {...Array} [values] The arrays of values to exclude.
- * @returns {Array} Returns a new array of filtered values.
+ * @alias extend
+ * @category Object
+ * @param {Object} object The destination object.
+ * @param {...Object} [sources] The source objects.
+ * @param {Function} [customizer] The function to customize assigned values.
+ * @param {*} [thisArg] The `this` binding of `customizer`.
+ * @returns {Object} Returns `object`.
* @example
*
- * _.difference([1, 2, 3, 4, 5], [5, 2, 10]);
- * // => [1, 3, 4]
+ * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
+ * // => { 'user': 'fred', 'age': 40 }
+ *
+ * // using a customizer callback
+ * var defaults = _.partialRight(_.assign, function(value, other) {
+ * return _.isUndefined(value) ? other : value;
+ * });
+ *
+ * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
+ * // => { 'user': 'barney', 'age': 36 }
*/
- function difference(array) {
- return baseDifference(array, baseFlatten(arguments, true, true, 1));
- }
+ var assign = createAssigner(function(object, source, customizer) {
+ return customizer
+ ? assignWith(object, source, customizer)
+ : baseAssign(object, source);
+ });
/**
- * Gets the first element or first `n` elements of an array. If a callback
- * is provided elements at the beginning of the array are returned as long
- * as the callback returns truey. The callback is bound to `thisArg` and
- * invoked with three arguments; (value, index, array).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Iterates over own enumerable properties of an object invoking `iteratee`
+ * for each property. The `iteratee` is bound to `thisArg` and invoked with
+ * three arguments: (value, key, object). Iteratee functions may exit iteration
+ * early by explicitly returning `false`.
*
* @static
* @memberOf _
- * @alias head, take
- * @category Arrays
- * @param {Array} array The array to query.
- * @param {Function|Object|number|string} [callback] The function called
- * per element or the number of elements to return. If a property name or
- * object is provided it will be used to create a "_.pluck" or "_.where"
- * style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the first element(s) of `array`.
+ * @category Object
+ * @param {Object} object The object to iterate over.
+ * @param {Function} [iteratee=_.identity] The function invoked per iteration.
+ * @param {*} [thisArg] The `this` binding of `iteratee`.
+ * @returns {Object} Returns `object`.
* @example
*
- * _.first([1, 2, 3]);
- * // => 1
- *
- * _.first([1, 2, 3], 2);
- * // => [1, 2]
- *
- * _.first([1, 2, 3], function(num) {
- * return num < 3;
- * });
- * // => [1, 2]
- *
- * var characters = [
- * { 'name': 'barney', 'blocked': true, 'employer': 'slate' },
- * { 'name': 'fred', 'blocked': false, 'employer': 'slate' },
- * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }
- * ];
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
*
- * // using "_.pluck" callback shorthand
- * _.first(characters, 'blocked');
- * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }]
+ * Foo.prototype.c = 3;
*
- * // using "_.where" callback shorthand
- * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name');
- * // => ['barney', 'fred']
- */
- function first(array, callback, thisArg) {
- var n = 0,
- length = array ? array.length : 0;
-
- if (typeof callback != 'number' && callback != null) {
- var index = -1;
- callback = lodash.createCallback(callback, thisArg, 3);
- while (++index < length && callback(array[index], index, array)) {
- n++;
- }
- } else {
- n = callback;
- if (n == null || thisArg) {
- return array ? array[0] : undefined;
- }
- }
- return slice(array, 0, nativeMin(nativeMax(0, n), length));
- }
+ * _.forOwn(new Foo, function(value, key) {
+ * console.log(key);
+ * });
+ * // => logs 'a' and 'b' (iteration order is not guaranteed)
+ */
+ var forOwn = createForOwn(baseForOwn);
/**
- * Flattens a nested array (the nesting can be to any depth). If `isShallow`
- * is truey, the array will only be flattened a single level. If a callback
- * is provided each element of the array is passed through the callback before
- * flattening. The callback is bound to `thisArg` and invoked with three
- * arguments; (value, index, array).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
+ * Creates an array of the own enumerable property names of `object`.
*
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
+ * for more details.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to flatten.
- * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array} Returns a new flattened array.
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
* @example
*
- * _.flatten([1, [2], [3, [[4]]]]);
- * // => [1, 2, 3, 4];
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
*
- * _.flatten([1, [2], [3, [[4]]]], true);
- * // => [1, 2, 3, [[4]]];
+ * Foo.prototype.c = 3;
*
- * var characters = [
- * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] },
- * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }
- * ];
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
*
- * // using "_.pluck" callback shorthand
- * _.flatten(characters, 'pets');
- * // => ['hoppy', 'baby puss', 'dino']
+ * _.keys('hi');
+ * // => ['0', '1']
*/
- function flatten(array, isShallow, callback, thisArg) {
- // juggle arguments
- if (typeof isShallow != 'boolean' && isShallow != null) {
- thisArg = callback;
- callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow;
- isShallow = false;
- }
- if (callback != null) {
- array = map(array, callback, thisArg);
+ var keys = !nativeKeys ? shimKeys : function(object) {
+ var Ctor = object == null ? null : object.constructor;
+ if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
+ (typeof object == 'function' ? lodash.support.enumPrototypes : isArrayLike(object))) {
+ return shimKeys(object);
}
- return baseFlatten(array, isShallow);
- }
+ return isObject(object) ? nativeKeys(object) : [];
+ };
/**
- * Gets the index at which the first occurrence of `value` is found using
- * strict equality for comparisons, i.e. `===`. If the array is already sorted
- * providing `true` for `fromIndex` will run a faster binary search.
+ * Creates an array of the own and inherited enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to search.
- * @param {*} value The value to search for.
- * @param {boolean|number} [fromIndex=0] The index to search from or `true`
- * to perform a binary search on a sorted array.
- * @returns {number} Returns the index of the matched value or `-1`.
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
* @example
*
- * _.indexOf([1, 2, 3, 1, 2, 3], 2);
- * // => 1
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
*
- * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3);
- * // => 4
+ * Foo.prototype.c = 3;
*
- * _.indexOf([1, 1, 2, 2, 3, 3], 2, true);
- * // => 2
+ * _.keysIn(new Foo);
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
- function indexOf(array, value, fromIndex) {
- if (typeof fromIndex == 'number') {
- var length = array ? array.length : 0;
- fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0);
- } else if (fromIndex) {
- var index = sortedIndex(array, value);
- return array[index] === value ? index : -1;
+ function keysIn(object) {
+ if (object == null) {
+ return [];
}
- return baseIndexOf(array, value, fromIndex);
- }
+ if (!isObject(object)) {
+ object = Object(object);
+ }
+ var length = object.length,
+ support = lodash.support;
- /**
- * Creates an array of unique values present in all provided arrays using
- * strict equality for comparisons, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @category Arrays
- * @param {...Array} [array] The arrays to inspect.
- * @returns {Array} Returns an array of composite values.
- * @example
- *
- * _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);
- * // => [1, 2]
- */
- function intersection(array) {
- var args = arguments,
- argsLength = args.length,
- argsIndex = -1,
- caches = getArray(),
+ length = (length && isLength(length) &&
+ (isArray(object) || isArguments(object) || isString(object)) && length) || 0;
+
+ var Ctor = object.constructor,
index = -1,
- indexOf = getIndexOf(),
- length = array ? array.length : 0,
- result = [],
- seen = getArray();
+ proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,
+ isProto = proto === object,
+ result = Array(length),
+ skipIndexes = length > 0,
+ skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),
+ skipProto = support.enumPrototypes && isFunction(object);
- while (++argsIndex < argsLength) {
- var value = args[argsIndex];
- caches[argsIndex] = indexOf === baseIndexOf &&
- (value ? value.length : 0) >= largeArraySize &&
- createCache(argsIndex ? args[argsIndex] : seen);
- }
- outer:
while (++index < length) {
- var cache = caches[0];
- value = array[index];
-
- if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) {
- argsIndex = argsLength;
- (cache || seen).push(value);
- while (--argsIndex) {
- cache = caches[argsIndex];
- if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) {
- continue outer;
- }
- }
- result.push(value);
+ result[index] = (index + '');
+ }
+ // lodash skips the `constructor` property when it infers it is iterating
+ // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`
+ // attribute of an existing property and the `constructor` property of a
+ // prototype defaults to non-enumerable.
+ for (var key in object) {
+ if (!(skipProto && key == 'prototype') &&
+ !(skipErrorProps && (key == 'message' || key == 'name')) &&
+ !(skipIndexes && isIndex(key, length)) &&
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+ result.push(key);
}
}
- while (argsLength--) {
- cache = caches[argsLength];
- if (cache) {
- releaseObject(cache);
+ if (support.nonEnumShadows && object !== objectProto) {
+ var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),
+ nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];
+
+ if (tag == objectTag) {
+ proto = objectProto;
+ }
+ length = shadowProps.length;
+ while (length--) {
+ key = shadowProps[length];
+ var nonEnum = nonEnums[key];
+ if (!(isProto && nonEnum) &&
+ (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {
+ result.push(key);
+ }
}
}
- releaseArray(caches);
- releaseArray(seen);
return result;
}
/**
- * Gets the last element or last `n` elements of an array. If a callback is
- * provided elements at the end of the array are returned as long as the
- * callback returns truey. The callback is bound to `thisArg` and invoked
- * with three arguments; (value, index, array).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Recursively merges own enumerable properties of the source object(s), that
+ * don't resolve to `undefined` into the destination object. Subsequent sources
+ * overwrite property assignments of previous sources. If `customizer` is
+ * provided it is invoked to produce the merged values of the destination and
+ * source properties. If `customizer` returns `undefined` merging is handled
+ * by the method instead. The `customizer` is bound to `thisArg` and invoked
+ * with five arguments: (objectValue, sourceValue, key, object, source).
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to query.
- * @param {Function|Object|number|string} [callback] The function called
- * per element or the number of elements to return. If a property name or
- * object is provided it will be used to create a "_.pluck" or "_.where"
- * style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {*} Returns the last element(s) of `array`.
+ * @category Object
+ * @param {Object} object The destination object.
+ * @param {...Object} [sources] The source objects.
+ * @param {Function} [customizer] The function to customize assigned values.
+ * @param {*} [thisArg] The `this` binding of `customizer`.
+ * @returns {Object} Returns `object`.
* @example
*
- * _.last([1, 2, 3]);
- * // => 3
+ * var users = {
+ * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
+ * };
*
- * _.last([1, 2, 3], 2);
- * // => [2, 3]
+ * var ages = {
+ * 'data': [{ 'age': 36 }, { 'age': 40 }]
+ * };
*
- * _.last([1, 2, 3], function(num) {
- * return num > 1;
- * });
- * // => [2, 3]
+ * _.merge(users, ages);
+ * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
*
- * var characters = [
- * { 'name': 'barney', 'blocked': false, 'employer': 'slate' },
- * { 'name': 'fred', 'blocked': true, 'employer': 'slate' },
- * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' }
- * ];
+ * // using a customizer callback
+ * var object = {
+ * 'fruits': ['apple'],
+ * 'vegetables': ['beet']
+ * };
*
- * // using "_.pluck" callback shorthand
- * _.pluck(_.last(characters, 'blocked'), 'name');
- * // => ['fred', 'pebbles']
+ * var other = {
+ * 'fruits': ['banana'],
+ * 'vegetables': ['carrot']
+ * };
*
- * // using "_.where" callback shorthand
- * _.last(characters, { 'employer': 'na' });
- * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }]
+ * _.merge(object, other, function(a, b) {
+ * if (_.isArray(a)) {
+ * return a.concat(b);
+ * }
+ * });
+ * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
*/
- function last(array, callback, thisArg) {
- var n = 0,
- length = array ? array.length : 0;
-
- if (typeof callback != 'number' && callback != null) {
- var index = length;
- callback = lodash.createCallback(callback, thisArg, 3);
- while (index-- && callback(array[index], index, array)) {
- n++;
- }
- } else {
- n = callback;
- if (n == null || thisArg) {
- return array ? array[length - 1] : undefined;
- }
- }
- return slice(array, nativeMax(0, length - n));
- }
+ var merge = createAssigner(baseMerge);
/**
- * Uses a binary search to determine the smallest index at which a value
- * should be inserted into a given sorted array in order to maintain the sort
- * order of the array. If a callback is provided it will be executed for
- * `value` and each element of `array` to compute their sort ranking. The
- * callback is bound to `thisArg` and invoked with one argument; (value).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * The opposite of `_.pick`; this method creates an object composed of the
+ * own and inherited enumerable properties of `object` that are not omitted.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {number} Returns the index at which `value` should be inserted
- * into `array`.
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {Function|...(string|string[])} [predicate] The function invoked per
+ * iteration or property names to omit, specified as individual property
+ * names or arrays of property names.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Object} Returns the new object.
* @example
*
- * _.sortedIndex([20, 30, 50], 40);
- * // => 2
- *
- * // using "_.pluck" callback shorthand
- * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
- * // => 2
- *
- * var dict = {
- * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 }
- * };
+ * var object = { 'user': 'fred', 'age': 40 };
*
- * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) {
- * return dict.wordToNumber[word];
- * });
- * // => 2
+ * _.omit(object, 'age');
+ * // => { 'user': 'fred' }
*
- * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) {
- * return this.wordToNumber[word];
- * }, dict);
- * // => 2
+ * _.omit(object, _.isNumber);
+ * // => { 'user': 'fred' }
*/
- function sortedIndex(array, value, callback, thisArg) {
- var low = 0,
- high = array ? array.length : low;
-
- // explicitly reference `identity` for better inlining in Firefox
- callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity;
- value = callback(value);
-
- while (low < high) {
- var mid = (low + high) >>> 1;
- (callback(array[mid]) < value)
- ? low = mid + 1
- : high = mid;
+ var omit = restParam(function(object, props) {
+ if (object == null) {
+ return {};
}
- return low;
- }
+ if (typeof props[0] != 'function') {
+ var props = arrayMap(baseFlatten(props), String);
+ return pickByArray(object, baseDifference(keysIn(object), props));
+ }
+ var predicate = bindCallback(props[0], props[1], 3);
+ return pickByCallback(object, function(value, key, object) {
+ return !predicate(value, key, object);
+ });
+ });
/**
- * Creates an array of unique values, in order, of the provided arrays using
- * strict equality for comparisons, i.e. `===`.
+ * Creates a two dimensional array of the key-value pairs for `object`,
+ * e.g. `[[key1, value1], [key2, value2]]`.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {...Array} [array] The arrays to inspect.
- * @returns {Array} Returns an array of composite values.
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the new array of key-value pairs.
* @example
*
- * _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
- * // => [1, 2, 3, 101, 10]
+ * _.pairs({ 'barney': 36, 'fred': 40 });
+ * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
*/
- function union(array) {
- return baseUniq(baseFlatten(arguments, true, true));
+ function pairs(object) {
+ object = toObject(object);
+
+ var index = -1,
+ props = keys(object),
+ length = props.length,
+ result = Array(length);
+
+ while (++index < length) {
+ var key = props[index];
+ result[index] = [key, object[key]];
+ }
+ return result;
}
/**
- * Creates a duplicate-value-free version of an array using strict equality
- * for comparisons, i.e. `===`. If the array is sorted, providing
- * `true` for `isSorted` will use a faster algorithm. If a callback is provided
- * each element of `array` is passed through the callback before uniqueness
- * is computed. The callback is bound to `thisArg` and invoked with three
- * arguments; (value, index, array).
- *
- * If a property name is provided for `callback` the created "_.pluck" style
- * callback will return the property value of the given element.
- *
- * If an object is provided for `callback` the created "_.where" style callback
- * will return `true` for elements that have the properties of the given object,
- * else `false`.
+ * Creates an object composed of the picked `object` properties. Property
+ * names may be specified as individual arguments or as arrays of property
+ * names. If `predicate` is provided it is invoked for each property of `object`
+ * picking the properties `predicate` returns truthy for. The predicate is
+ * bound to `thisArg` and invoked with three arguments: (value, key, object).
*
* @static
* @memberOf _
- * @alias unique
- * @category Arrays
- * @param {Array} array The array to process.
- * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted.
- * @param {Function|Object|string} [callback=identity] The function called
- * per iteration. If a property name or object is provided it will be used
- * to create a "_.pluck" or "_.where" style callback, respectively.
- * @param {*} [thisArg] The `this` binding of `callback`.
- * @returns {Array} Returns a duplicate-value-free array.
+ * @category Object
+ * @param {Object} object The source object.
+ * @param {Function|...(string|string[])} [predicate] The function invoked per
+ * iteration or property names to pick, specified as individual property
+ * names or arrays of property names.
+ * @param {*} [thisArg] The `this` binding of `predicate`.
+ * @returns {Object} Returns the new object.
* @example
*
- * _.uniq([1, 2, 1, 3, 1]);
- * // => [1, 2, 3]
- *
- * _.uniq([1, 1, 2, 2, 3], true);
- * // => [1, 2, 3]
- *
- * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); });
- * // => ['A', 'b', 'C']
+ * var object = { 'user': 'fred', 'age': 40 };
*
- * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math);
- * // => [1, 2.5, 3]
+ * _.pick(object, 'user');
+ * // => { 'user': 'fred' }
*
- * // using "_.pluck" callback shorthand
- * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
+ * _.pick(object, _.isString);
+ * // => { 'user': 'fred' }
*/
- function uniq(array, isSorted, callback, thisArg) {
- // juggle arguments
- if (typeof isSorted != 'boolean' && isSorted != null) {
- thisArg = callback;
- callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted;
- isSorted = false;
+ var pick = restParam(function(object, props) {
+ if (object == null) {
+ return {};
}
- if (callback != null) {
- callback = lodash.createCallback(callback, thisArg, 3);
- }
- return baseUniq(array, isSorted, callback);
- }
+ return typeof props[0] == 'function'
+ ? pickByCallback(object, bindCallback(props[0], props[1], 3))
+ : pickByArray(object, baseFlatten(props));
+ });
/**
- * Creates an array excluding all provided values using strict equality for
- * comparisons, i.e. `===`.
+ * Creates an array of the own enumerable property values of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
*
* @static
* @memberOf _
- * @category Arrays
- * @param {Array} array The array to filter.
- * @param {...*} [value] The values to exclude.
- * @returns {Array} Returns a new array of filtered values.
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property values.
* @example
*
- * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
- * // => [2, 3, 4]
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.values(new Foo);
+ * // => [1, 2] (iteration order is not guaranteed)
+ *
+ * _.values('hi');
+ * // => ['h', 'i']
*/
- function without(array) {
- return baseDifference(array, slice(arguments, 1));
+ function values(object) {
+ return baseValues(object, keys(object));
}
- /*--------------------------------------------------------------------------*/
+ /*------------------------------------------------------------------------*/
/**
- * Creates a function that, when called, invokes `func` with the `this`
- * binding of `thisArg` and prepends any additional `bind` arguments to those
- * provided to the bound function.
+ * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
+ * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
*
* @static
* @memberOf _
- * @category Functions
- * @param {Function} func The function to bind.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {...*} [arg] Arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
+ * @category String
+ * @param {string} [string=''] The string to escape.
+ * @returns {string} Returns the escaped string.
* @example
*
- * var func = function(greeting) {
- * return greeting + ' ' + this.name;
- * };
- *
- * func = _.bind(func, { 'name': 'fred' }, 'hi');
- * func();
- * // => 'hi fred'
+ * _.escapeRegExp('[lodash](https://lodash.com/)');
+ * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
*/
- function bind(func, thisArg) {
- return arguments.length > 2
- ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)
- : createWrapper(func, 1, null, null, thisArg);
+ function escapeRegExp(string) {
+ string = baseToString(string);
+ return (string && reHasRegExpChars.test(string))
+ ? string.replace(reRegExpChars, '\\$&')
+ : string;
}
+ /*------------------------------------------------------------------------*/
+
/**
- * Produces a callback bound to an optional `thisArg`. If `func` is a property
- * name the created callback will return the property value for a given element.
- * If `func` is an object the created callback will return `true` for elements
- * that contain the equivalent object properties, otherwise it will return `false`.
+ * Creates a function that invokes `func` with the `this` binding of `thisArg`
+ * and arguments of the created function. If `func` is a property name the
+ * created callback returns the property value for a given element. If `func`
+ * is an object the created callback returns `true` for elements that contain
+ * the equivalent object properties, otherwise it returns `false`.
*
* @static
* @memberOf _
- * @category Functions
- * @param {*} [func=identity] The value to convert to a callback.
- * @param {*} [thisArg] The `this` binding of the created callback.
- * @param {number} [argCount] The number of arguments the callback accepts.
- * @returns {Function} Returns a callback function.
+ * @alias iteratee
+ * @category Utility
+ * @param {*} [func=_.identity] The value to convert to a callback.
+ * @param {*} [thisArg] The `this` binding of `func`.
+ * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+ * @returns {Function} Returns the callback.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
+ * var users = [
+ * { 'user': 'barney', 'age': 36 },
+ * { 'user': 'fred', 'age': 40 }
* ];
*
* // wrap to create custom callback shorthands
- * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {
- * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);
- * return !match ? func(callback, thisArg) : function(object) {
- * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
+ * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
+ * var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
+ * if (!match) {
+ * return callback(func, thisArg);
+ * }
+ * return function(object) {
+ * return match[2] == 'gt'
+ * ? object[match[1]] > match[3]
+ * : object[match[1]] < match[3];
* };
* });
*
- * _.filter(characters, 'age__gt38');
- * // => [{ 'name': 'fred', 'age': 40 }]
+ * _.filter(users, 'age__gt36');
+ * // => [{ 'user': 'fred', 'age': 40 }]
*/
- function createCallback(func, thisArg, argCount) {
- var type = typeof func;
- if (func == null || type == 'function') {
- return baseCreateCallback(func, thisArg, argCount);
- }
- // handle "_.pluck" style callback shorthands
- if (type != 'object') {
- return function(object) {
- return object[func];
- };
- }
- var props = keys(func),
- key = props[0],
- a = func[key];
-
- // handle "_.where" style callback shorthands
- if (props.length == 1 && a === a && !isObject(a)) {
- // fast path the common case of providing an object with a single
- // property containing a primitive value
- return function(object) {
- var b = object[key];
- return a === b && (a !== 0 || (1 / a == 1 / b));
- };
+ function callback(func, thisArg, guard) {
+ if (guard && isIterateeCall(func, thisArg, guard)) {
+ thisArg = null;
}
- return function(object) {
- var length = props.length,
- result = false;
-
- while (length--) {
- if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {
- break;
- }
- }
- return result;
- };
+ return isObjectLike(func)
+ ? matches(func)
+ : baseCallback(func, thisArg);
}
/**
- * Creates a function that will delay the execution of `func` until after
- * `wait` milliseconds have elapsed since the last time it was invoked.
- * Provide an options object to indicate that `func` should be invoked on
- * the leading and/or trailing edge of the `wait` timeout. Subsequent calls
- * to the debounced function will return the result of the last `func` call.
- *
- * Note: If `leading` and `trailing` options are `true` `func` will be called
- * on the trailing edge of the timeout only if the the debounced function is
- * invoked more than once during the `wait` timeout.
+ * Creates a function that returns `value`.
*
* @static
* @memberOf _
- * @category Functions
- * @param {Function} func The function to debounce.
- * @param {number} wait The number of milliseconds to delay.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout.
- * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called.
- * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
+ * @category Utility
+ * @param {*} value The value to return from the new function.
+ * @returns {Function} Returns the new function.
* @example
*
- * // avoid costly calculations while the window size is in flux
- * var lazyLayout = _.debounce(calculateLayout, 150);
- * jQuery(window).on('resize', lazyLayout);
- *
- * // execute `sendMail` when the click event is fired, debouncing subsequent calls
- * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
- * 'leading': true,
- * 'trailing': false
- * });
+ * var object = { 'user': 'fred' };
+ * var getter = _.constant(object);
*
- * // ensure `batchLog` is executed once after 1 second of debounced calls
- * var source = new EventSource('/stream');
- * source.addEventListener('message', _.debounce(batchLog, 250, {
- * 'maxWait': 1000
- * }, false);
+ * getter() === object;
+ * // => true
*/
- function debounce(func, wait, options) {
- var args,
- maxTimeoutId,
- result,
- stamp,
- thisArg,
- timeoutId,
- trailingCall,
- lastCalled = 0,
- maxWait = false,
- trailing = true;
-
- if (!isFunction(func)) {
- throw new TypeError;
- }
- wait = nativeMax(0, wait) || 0;
- if (options === true) {
- var leading = true;
- trailing = false;
- } else if (isObject(options)) {
- leading = options.leading;
- maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0);
- trailing = 'trailing' in options ? options.trailing : trailing;
- }
- var delayed = function() {
- var remaining = wait - (now() - stamp);
- if (remaining <= 0) {
- if (maxTimeoutId) {
- clearTimeout(maxTimeoutId);
- }
- var isCalled = trailingCall;
- maxTimeoutId = timeoutId = trailingCall = undefined;
- if (isCalled) {
- lastCalled = now();
- result = func.apply(thisArg, args);
- if (!timeoutId && !maxTimeoutId) {
- args = thisArg = null;
- }
- }
- } else {
- timeoutId = setTimeout(delayed, remaining);
- }
- };
-
- var maxDelayed = function() {
- if (timeoutId) {
- clearTimeout(timeoutId);
- }
- maxTimeoutId = timeoutId = trailingCall = undefined;
- if (trailing || (maxWait !== wait)) {
- lastCalled = now();
- result = func.apply(thisArg, args);
- if (!timeoutId && !maxTimeoutId) {
- args = thisArg = null;
- }
- }
- };
-
+ function constant(value) {
return function() {
- args = arguments;
- stamp = now();
- thisArg = this;
- trailingCall = trailing && (timeoutId || !leading);
-
- if (maxWait === false) {
- var leadingCall = leading && !timeoutId;
- } else {
- if (!maxTimeoutId && !leading) {
- lastCalled = stamp;
- }
- var remaining = maxWait - (stamp - lastCalled),
- isCalled = remaining <= 0;
-
- if (isCalled) {
- if (maxTimeoutId) {
- maxTimeoutId = clearTimeout(maxTimeoutId);
- }
- lastCalled = stamp;
- result = func.apply(thisArg, args);
- }
- else if (!maxTimeoutId) {
- maxTimeoutId = setTimeout(maxDelayed, remaining);
- }
- }
- if (isCalled && timeoutId) {
- timeoutId = clearTimeout(timeoutId);
- }
- else if (!timeoutId && wait !== maxWait) {
- timeoutId = setTimeout(delayed, wait);
- }
- if (leadingCall) {
- isCalled = true;
- result = func.apply(thisArg, args);
- }
- if (isCalled && !timeoutId && !maxTimeoutId) {
- args = thisArg = null;
- }
- return result;
+ return value;
};
}
/**
- * Creates a function that, when executed, will only call the `func` function
- * at most once per every `wait` milliseconds. Provide an options object to
- * indicate that `func` should be invoked on the leading and/or trailing edge
- * of the `wait` timeout. Subsequent calls to the throttled function will
- * return the result of the last `func` call.
- *
- * Note: If `leading` and `trailing` options are `true` `func` will be called
- * on the trailing edge of the timeout only if the the throttled function is
- * invoked more than once during the `wait` timeout.
+ * This method returns the first argument provided to it.
*
* @static
* @memberOf _
- * @category Functions
- * @param {Function} func The function to throttle.
- * @param {number} wait The number of milliseconds to throttle executions to.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout.
- * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.
- * @returns {Function} Returns the new throttled function.
+ * @category Utility
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
* @example
*
- * // avoid excessively updating the position while scrolling
- * var throttled = _.throttle(updatePosition, 100);
- * jQuery(window).on('scroll', throttled);
+ * var object = { 'user': 'fred' };
*
- * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes
- * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
- * 'trailing': false
- * }));
+ * _.identity(object) === object;
+ * // => true
*/
- function throttle(func, wait, options) {
- var leading = true,
- trailing = true;
-
- if (!isFunction(func)) {
- throw new TypeError;
- }
- if (options === false) {
- leading = false;
- } else if (isObject(options)) {
- leading = 'leading' in options ? options.leading : leading;
- trailing = 'trailing' in options ? options.trailing : trailing;
- }
- debounceOptions.leading = leading;
- debounceOptions.maxWait = wait;
- debounceOptions.trailing = trailing;
-
- return debounce(func, wait, debounceOptions);
+ function identity(value) {
+ return value;
}
- /*--------------------------------------------------------------------------*/
-
/**
- * This method returns the first argument provided to it.
+ * Creates a function that performs a deep comparison between a given object
+ * and `source`, returning `true` if the given object has equivalent property
+ * values, else `false`.
+ *
+ * **Note:** This method supports comparing arrays, booleans, `Date` objects,
+ * numbers, `Object` objects, regexes, and strings. Objects are compared by
+ * their own, not inherited, enumerable properties. For comparing a single
+ * own or inherited property value see `_.matchesProperty`.
*
* @static
* @memberOf _
- * @category Utilities
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
+ * @category Utility
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new function.
* @example
*
- * var object = { 'name': 'fred' };
- * _.identity(object) === object;
- * // => true
+ * var users = [
+ * { 'user': 'barney', 'age': 36, 'active': true },
+ * { 'user': 'fred', 'age': 40, 'active': false }
+ * ];
+ *
+ * _.filter(users, _.matches({ 'age': 40, 'active': false }));
+ * // => [{ 'user': 'fred', 'age': 40, 'active': false }]
*/
- function identity(value) {
- return value;
+ function matches(source) {
+ return baseMatches(baseClone(source, true));
}
/**
- * Adds function properties of a source object to the `lodash` function and
- * chainable wrapper.
+ * Adds all own enumerable function properties of a source object to the
+ * destination object. If `object` is a function then methods are added to
+ * its prototype as well.
+ *
+ * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
+ * avoid conflicts caused by modifying the original.
*
* @static
* @memberOf _
- * @category Utilities
- * @param {Object} object The object of function properties to add to `lodash`.
- * @param {Object} object The object of function properties to add to `lodash`.
+ * @category Utility
+ * @param {Function|Object} [object=lodash] The destination object.
+ * @param {Object} source The object of functions to add.
+ * @param {Object} [options] The options object.
+ * @param {boolean} [options.chain=true] Specify whether the functions added
+ * are chainable.
+ * @returns {Function|Object} Returns `object`.
* @example
*
- * _.mixin({
- * 'capitalize': function(string) {
- * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
- * }
- * });
+ * function vowels(string) {
+ * return _.filter(string, function(v) {
+ * return /[aeiou]/i.test(v);
+ * });
+ * }
*
- * _.capitalize('fred');
- * // => 'Fred'
+ * _.mixin({ 'vowels': vowels });
+ * _.vowels('fred');
+ * // => ['e']
*
- * _('fred').capitalize();
- * // => 'Fred'
+ * _('fred').vowels().value();
+ * // => ['e']
+ *
+ * _.mixin({ 'vowels': vowels }, { 'chain': false });
+ * _('fred').vowels();
+ * // => ['e']
*/
- function mixin(object, source) {
- var ctor = object,
- isFunc = !source || isFunction(ctor);
+ function mixin(object, source, options) {
+ if (options == null) {
+ var isObj = isObject(source),
+ props = isObj ? keys(source) : null,
+ methodNames = (props && props.length) ? baseFunctions(source, props) : null;
+
+ if (!(methodNames ? methodNames.length : isObj)) {
+ methodNames = false;
+ options = source;
+ source = object;
+ object = this;
+ }
+ }
+ if (!methodNames) {
+ methodNames = baseFunctions(source, keys(source));
+ }
+ var chain = true,
+ index = -1,
+ isFunc = isFunction(object),
+ length = methodNames.length;
- if (!source) {
- ctor = lodashWrapper;
- source = object;
- object = lodash;
+ if (options === false) {
+ chain = false;
+ } else if (isObject(options) && 'chain' in options) {
+ chain = options.chain;
}
- forEach(functions(source), function(methodName) {
- var func = object[methodName] = source[methodName];
- if (isFunc) {
- ctor.prototype[methodName] = function() {
- var value = this.__wrapped__,
- args = [value];
+ while (++index < length) {
+ var methodName = methodNames[index],
+ func = source[methodName];
- push.apply(args, arguments);
- var result = func.apply(object, args);
- if (value && typeof value == 'object' && value === result) {
- return this;
- }
- result = new ctor(result);
- result.__chain__ = this.__chain__;
- return result;
- };
+ object[methodName] = func;
+ if (isFunc) {
+ object.prototype[methodName] = (function(func) {
+ return function() {
+ var chainAll = this.__chain__;
+ if (chain || chainAll) {
+ var result = object(this.__wrapped__),
+ actions = result.__actions__ = arrayCopy(this.__actions__);
+
+ actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
+ result.__chain__ = chainAll;
+ return result;
+ }
+ var args = [this.value()];
+ push.apply(args, arguments);
+ return func.apply(object, args);
+ };
+ }(func));
}
- });
+ }
+ return object;
}
/**
- * A no-operation function.
+ * A no-operation function that returns `undefined` regardless of the
+ * arguments it receives.
*
* @static
* @memberOf _
- * @category Utilities
+ * @category Utility
* @example
*
- * var object = { 'name': 'fred' };
+ * var object = { 'user': 'fred' };
+ *
* _.noop(object) === undefined;
* // => true
*/
function noop() {
- // no operation performed
+ // No operation performed.
}
- /*--------------------------------------------------------------------------*/
-
/**
- * Creates a `lodash` object that wraps the given value with explicit
- * method chaining enabled.
+ * Creates a function that returns the property value at `path` on a
+ * given object.
*
* @static
* @memberOf _
- * @category Chaining
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the wrapper object.
- * @example
- *
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 },
- * { 'name': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _.chain(characters)
- * .sortBy('age')
- * .map(function(chr) { return chr.name + ' is ' + chr.age; })
- * .first()
- * .value();
- * // => 'pebbles is 1'
- */
- function chain(value) {
- value = new lodashWrapper(value);
- value.__chain__ = true;
- return value;
- }
-
- /**
- * Enables explicit method chaining on the wrapper object.
- *
- * @name chain
- * @memberOf _
- * @category Chaining
- * @returns {*} Returns the wrapper object.
+ * @category Utility
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new function.
* @example
*
- * var characters = [
- * { 'name': 'barney', 'age': 36 },
- * { 'name': 'fred', 'age': 40 }
+ * var objects = [
+ * { 'a': { 'b': { 'c': 2 } } },
+ * { 'a': { 'b': { 'c': 1 } } }
* ];
*
- * // without explicit chaining
- * _(characters).first();
- * // => { 'name': 'barney', 'age': 36 }
+ * _.map(objects, _.property('a.b.c'));
+ * // => [2, 1]
*
- * // with explicit chaining
- * _(characters).chain()
- * .first()
- * .pick('age')
- * .value()
- * // => { 'age': 36 }
+ * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
+ * // => [1, 2]
*/
- function wrapperChain() {
- this.__chain__ = true;
- return this;
+ function property(path) {
+ return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
}
- /**
- * Produces the `toString` result of the wrapped value.
- *
- * @name toString
- * @memberOf _
- * @category Chaining
- * @returns {string} Returns the string result.
- * @example
- *
- * _([1, 2, 3]).toString();
- * // => '1,2,3'
- */
- function wrapperToString() {
- return String(this.__wrapped__);
- }
+ /*------------------------------------------------------------------------*/
- /**
- * Extracts the wrapped value.
- *
- * @name valueOf
- * @memberOf _
- * @alias value
- * @category Chaining
- * @returns {*} Returns the wrapped value.
- * @example
- *
- * _([1, 2, 3]).valueOf();
- * // => [1, 2, 3]
- */
- function wrapperValueOf() {
- return this.__wrapped__;
- }
+ // Ensure wrappers are instances of `baseLodash`.
+ lodash.prototype = baseLodash.prototype;
- /*--------------------------------------------------------------------------*/
+ LodashWrapper.prototype = baseCreate(baseLodash.prototype);
+ LodashWrapper.prototype.constructor = LodashWrapper;
+
+ LazyWrapper.prototype = baseCreate(baseLodash.prototype);
+ LazyWrapper.prototype.constructor = LazyWrapper;
+
+ // Add functions to the `Set` cache.
+ SetCache.prototype.push = cachePush;
+ // Add functions that return wrapped values when chaining.
lodash.assign = assign;
lodash.bind = bind;
+ lodash.callback = callback;
lodash.chain = chain;
+ lodash.chunk = chunk;
lodash.compact = compact;
- lodash.createCallback = createCallback;
+ lodash.constant = constant;
lodash.debounce = debounce;
lodash.difference = difference;
lodash.filter = filter;
lodash.flatten = flatten;
lodash.forEach = forEach;
- lodash.forIn = forIn;
lodash.forOwn = forOwn;
- lodash.functions = functions;
lodash.groupBy = groupBy;
lodash.intersection = intersection;
lodash.keys = keys;
+ lodash.keysIn = keysIn;
lodash.map = map;
+ lodash.matches = matches;
lodash.merge = merge;
+ lodash.mixin = mixin;
lodash.omit = omit;
lodash.pairs = pairs;
lodash.pick = pick;
lodash.pluck = pluck;
+ lodash.property = property;
lodash.reject = reject;
+ lodash.restParam = restParam;
+ lodash.tap = tap;
lodash.throttle = throttle;
+ lodash.thru = thru;
+ lodash.toPlainObject = toPlainObject;
lodash.union = union;
lodash.uniq = uniq;
lodash.values = values;
lodash.without = without;
- // add aliases
+ // Add aliases.
lodash.collect = map;
lodash.each = forEach;
lodash.extend = assign;
- lodash.methods = functions;
+ lodash.iteratee = callback;
lodash.select = filter;
lodash.unique = uniq;
- // add functions to `lodash.prototype`
- mixin(lodash);
+ // Add functions to `lodash.prototype`.
+ mixin(lodash, lodash);
- /*--------------------------------------------------------------------------*/
+ /*------------------------------------------------------------------------*/
- // add functions that return unwrapped values when chaining
+ // Add functions that return unwrapped values when chaining.
lodash.clone = clone;
lodash.cloneDeep = cloneDeep;
- lodash.contains = contains;
+ lodash.escapeRegExp = escapeRegExp;
lodash.every = every;
lodash.find = find;
+ lodash.first = first;
lodash.identity = identity;
+ lodash.includes = includes;
lodash.indexOf = indexOf;
lodash.isArguments = isArguments;
lodash.isArray = isArray;
lodash.isEmpty = isEmpty;
lodash.isEqual = isEqual;
lodash.isFunction = isFunction;
+ lodash.isNative = isNative;
lodash.isObject = isObject;
lodash.isPlainObject = isPlainObject;
lodash.isString = isString;
- lodash.mixin = mixin;
+ lodash.isTypedArray = isTypedArray;
+ lodash.last = last;
lodash.noop = noop;
+ lodash.now = now;
lodash.reduce = reduce;
lodash.some = some;
- lodash.sortedIndex = sortedIndex;
- // add aliases
+ // Add aliases.
lodash.all = every;
lodash.any = some;
+ lodash.contains = includes;
+ lodash.eq = isEqual;
lodash.detect = find;
- lodash.findWhere = find;
lodash.foldl = reduce;
- lodash.include = contains;
+ lodash.head = first;
+ lodash.include = includes;
lodash.inject = reduce;
- forOwn(lodash, function(func, methodName) {
- if (!lodash.prototype[methodName]) {
- lodash.prototype[methodName] = function() {
- var args = [this.__wrapped__],
- chainAll = this.__chain__;
-
- push.apply(args, arguments);
- var result = func.apply(lodash, args);
- return chainAll
- ? new lodashWrapper(result, chainAll)
- : result;
- };
- }
- });
-
- /*--------------------------------------------------------------------------*/
-
- // add functions capable of returning wrapped and unwrapped values when chaining
- lodash.first = first;
- lodash.last = last;
-
- // add aliases
- lodash.take = first;
- lodash.head = first;
+ mixin(lodash, (function() {
+ var source = {};
+ baseForOwn(lodash, function(func, methodName) {
+ if (!lodash.prototype[methodName]) {
+ source[methodName] = func;
+ }
+ });
+ return source;
+ }()), false);
- forOwn(lodash, function(func, methodName) {
- var callbackable = methodName !== 'sample';
- if (!lodash.prototype[methodName]) {
- lodash.prototype[methodName]= function(n, guard) {
- var chainAll = this.__chain__,
- result = func(this.__wrapped__, n, guard);
+ /*------------------------------------------------------------------------*/
- return !chainAll && (n == null || (guard && !(callbackable && typeof n == 'function')))
- ? result
- : new lodashWrapper(result, chainAll);
- };
+ lodash.prototype.sample = function(n) {
+ if (!this.__chain__ && n == null) {
+ return sample(this.value());
}
- });
+ return this.thru(function(value) {
+ return sample(value, n);
+ });
+ };
- /*--------------------------------------------------------------------------*/
+ /*------------------------------------------------------------------------*/
/**
* The semantic version number.
* @memberOf _
* @type string
*/
- lodash.VERSION = '2.3.0';
+ lodash.VERSION = VERSION;
+
+ // Assign default placeholders.
+ bind.placeholder = lodash;
+
+ // Add `LazyWrapper` methods that accept an `iteratee` value.
+ arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type) {
+ var isFilter = type != LAZY_MAP_FLAG,
+ isDropWhile = type == LAZY_DROP_WHILE_FLAG;
+
+ LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
+ var filtered = this.__filtered__,
+ result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
+ iteratees = result.__iteratees__ || (result.__iteratees__ = []);
+
+ iteratees.push({
+ 'done': false,
+ 'count': 0,
+ 'index': 0,
+ 'iteratee': getCallback(iteratee, thisArg, 1),
+ 'limit': -1,
+ 'type': type
+ });
- // add "Chaining" functions to the wrapper
- lodash.prototype.chain = wrapperChain;
- lodash.prototype.toString = wrapperToString;
- lodash.prototype.value = wrapperValueOf;
- lodash.prototype.valueOf = wrapperValueOf;
+ result.__filtered__ = filtered || isFilter;
+ return result;
+ };
+ });
- // add `Array` functions that return unwrapped values
- baseEach(['join', 'pop', 'shift'], function(methodName) {
- var func = arrayRef[methodName];
- lodash.prototype[methodName] = function() {
- var chainAll = this.__chain__,
- result = func.apply(this.__wrapped__, arguments);
+ // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
+ arrayEach(['drop', 'take'], function(methodName, index) {
+ var whileName = methodName + 'While';
+
+ LazyWrapper.prototype[methodName] = function(n) {
+ var filtered = this.__filtered__,
+ result = (filtered && !index) ? this.dropWhile() : this.clone();
+
+ n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
+ if (filtered) {
+ if (index) {
+ result.__takeCount__ = nativeMin(result.__takeCount__, n);
+ } else {
+ last(result.__iteratees__).limit = n;
+ }
+ } else {
+ var views = result.__views__ || (result.__views__ = []);
+ views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
+ }
+ return result;
+ };
+
+ LazyWrapper.prototype[methodName + 'Right'] = function(n) {
+ return this.reverse()[methodName](n).reverse();
+ };
+
+ LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
+ return this.reverse()[whileName](predicate, thisArg).reverse();
+ };
+ });
+
+ // Add `LazyWrapper` methods for `_.first` and `_.last`.
+ arrayEach(['first', 'last'], function(methodName, index) {
+ var takeName = 'take' + (index ? 'Right' : '');
+
+ LazyWrapper.prototype[methodName] = function() {
+ return this[takeName](1).value()[0];
+ };
+ });
- return chainAll
- ? new lodashWrapper(result, chainAll)
- : result;
+ // Add `LazyWrapper` methods for `_.initial` and `_.rest`.
+ arrayEach(['initial', 'rest'], function(methodName, index) {
+ var dropName = 'drop' + (index ? '' : 'Right');
+
+ LazyWrapper.prototype[methodName] = function() {
+ return this[dropName](1);
+ };
+ });
+
+ // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
+ arrayEach(['pluck', 'where'], function(methodName, index) {
+ var operationName = index ? 'filter' : 'map',
+ createCallback = index ? baseMatches : property;
+
+ LazyWrapper.prototype[methodName] = function(value) {
+ return this[operationName](createCallback(value));
};
});
- // add `Array` functions that return the wrapped value
- baseEach(['push', 'reverse', 'sort', 'unshift'], function(methodName) {
- var func = arrayRef[methodName];
+ LazyWrapper.prototype.compact = function() {
+ return this.filter(identity);
+ };
+
+ LazyWrapper.prototype.reject = function(predicate, thisArg) {
+ predicate = getCallback(predicate, thisArg, 1);
+ return this.filter(function(value) {
+ return !predicate(value);
+ });
+ };
+
+ LazyWrapper.prototype.slice = function(start, end) {
+ start = start == null ? 0 : (+start || 0);
+
+ var result = this;
+ if (start < 0) {
+ result = this.takeRight(-start);
+ } else if (start) {
+ result = this.drop(start);
+ }
+ if (end !== undefined) {
+ end = (+end || 0);
+ result = end < 0 ? result.dropRight(-end) : result.take(end - start);
+ }
+ return result;
+ };
+
+ LazyWrapper.prototype.toArray = function() {
+ return this.drop(0);
+ };
+
+ // Add `LazyWrapper` methods to `lodash.prototype`.
+ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+ var lodashFunc = lodash[methodName];
+ if (!lodashFunc) {
+ return;
+ }
+ var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
+ retUnwrapped = /^(?:first|last)$/.test(methodName);
+
lodash.prototype[methodName] = function() {
- func.apply(this.__wrapped__, arguments);
- return this;
+ var args = arguments,
+ chainAll = this.__chain__,
+ value = this.__wrapped__,
+ isHybrid = !!this.__actions__.length,
+ isLazy = value instanceof LazyWrapper,
+ iteratee = args[0],
+ useLazy = isLazy || isArray(value);
+
+ if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
+ // avoid lazy use if the iteratee has a "length" value other than `1`
+ isLazy = useLazy = false;
+ }
+ var onlyLazy = isLazy && !isHybrid;
+ if (retUnwrapped && !chainAll) {
+ return onlyLazy
+ ? func.call(value)
+ : lodashFunc.call(lodash, this.value());
+ }
+ var interceptor = function(value) {
+ var otherArgs = [value];
+ push.apply(otherArgs, args);
+ return lodashFunc.apply(lodash, otherArgs);
+ };
+ if (useLazy) {
+ var wrapper = onlyLazy ? value : new LazyWrapper(this),
+ result = func.apply(wrapper, args);
+
+ if (!retUnwrapped && (isHybrid || result.__actions__)) {
+ var actions = result.__actions__ || (result.__actions__ = []);
+ actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
+ }
+ return new LodashWrapper(result, chainAll);
+ }
+ return this.thru(interceptor);
};
});
- // add `Array` functions that return new wrapped values
- baseEach(['concat', 'slice', 'splice'], function(methodName) {
- var func = arrayRef[methodName];
+ // Add `Array` and `String` methods to `lodash.prototype`.
+ arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
+ var protoFunc = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
+ chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
+ fixObjects = !support.spliceObjects && /^(?:pop|shift|splice)$/.test(methodName),
+ retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
+
+ // Avoid array-like object bugs with `Array#shift` and `Array#splice` in
+ // IE < 9, Firefox < 10, and RingoJS.
+ var func = !fixObjects ? protoFunc : function() {
+ var result = protoFunc.apply(this, arguments);
+ if (this.length === 0) {
+ delete this[0];
+ }
+ return result;
+ };
+
lodash.prototype[methodName] = function() {
- return new lodashWrapper(func.apply(this.__wrapped__, arguments), this.__chain__);
+ var args = arguments;
+ if (retUnwrapped && !this.__chain__) {
+ return func.apply(this.value(), args);
+ }
+ return this[chainName](function(value) {
+ return func.apply(value, args);
+ });
};
});
- // avoid array-like object bugs with `Array#shift` and `Array#splice`
- // in IE < 9, Firefox < 10, Narwhal, and RingoJS
- if (!support.spliceObjects) {
- baseEach(['pop', 'shift', 'splice'], function(methodName) {
- var func = arrayRef[methodName],
- isSplice = methodName == 'splice';
+ // Map minified function names to their real names.
+ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
+ var lodashFunc = lodash[methodName];
+ if (lodashFunc) {
+ var key = lodashFunc.name,
+ names = realNames[key] || (realNames[key] = []);
- lodash.prototype[methodName] = function() {
- var chainAll = this.__chain__,
- value = this.__wrapped__,
- result = func.apply(value, arguments);
+ names.push({ 'name': methodName, 'func': lodashFunc });
+ }
+ });
- if (value.length === 0) {
- delete value[0];
- }
- return (chainAll || isSplice)
- ? new lodashWrapper(result, chainAll)
- : result;
- };
- });
- }
+ realNames[createHybridWrapper(null, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': null }];
+
+ // Add functions to the lazy wrapper.
+ LazyWrapper.prototype.clone = lazyClone;
+ LazyWrapper.prototype.reverse = lazyReverse;
+ LazyWrapper.prototype.value = lazyValue;
+
+ // Add chaining functions to the `lodash` wrapper.
+ lodash.prototype.chain = wrapperChain;
+ lodash.prototype.commit = wrapperCommit;
+ lodash.prototype.plant = wrapperPlant;
+ lodash.prototype.reverse = wrapperReverse;
+ lodash.prototype.toString = wrapperToString;
+ lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
+
+ // Add function aliases to the `lodash` wrapper.
+ lodash.prototype.collect = lodash.prototype.map;
+ lodash.prototype.head = lodash.prototype.first;
+ lodash.prototype.select = lodash.prototype.filter;
+ lodash.prototype.tail = lodash.prototype.rest;
/*--------------------------------------------------------------------------*/
if (freeExports && freeModule) {
- // in Node.js or RingoJS
+ // Export for Node.js or RingoJS.
if (moduleExports) {
(freeModule.exports = lodash)._ = lodash;
}
-
}
else {
- // in a browser or Rhino
+ // Export for a browser or Rhino.
root._ = lodash;
}
}.call(this));
locale = locale.split('-')[0];
}
- connection.on('load.context', function loadContext(err, result) {
- history.merge(result.data, result.extent);
- });
-
context.preauth = function(options) {
connection.switch(options);
return context;
};
- context.locale = function(_, path) {
- locale = _;
+ context.locale = function(loc, path) {
+ locale = loc;
localePath = path;
+
+ // Also set iD.detect().locale (unless we detected 'en-us' and openstreetmap wants 'en')..
+ if (!(loc.toLowerCase() === 'en' && iD.detect().locale.toLowerCase() === 'en-us')) {
+ iD.detect().locale = loc;
+ }
+
return context;
};
context.connection = function() { return connection; };
context.history = function() { return history; };
+ /* Connection */
+ function entitiesLoaded(err, result) {
+ if (!err) history.merge(result.data, result.extent);
+ }
+
+ context.loadTiles = function(projection, dimensions, callback) {
+ function done(err, result) {
+ entitiesLoaded(err, result);
+ if (callback) callback(err, result);
+ }
+ connection.loadTiles(projection, dimensions, done);
+ };
+
+ context.loadEntity = function(id, callback) {
+ function done(err, result) {
+ entitiesLoaded(err, result);
+ if (callback) callback(err, result);
+ }
+ connection.loadEntity(id, done);
+ };
+
+ context.zoomToEntity = function(id, zoomTo) {
+ if (zoomTo !== false) {
+ this.loadEntity(id, function(err, result) {
+ if (err) return;
+ var entity = _.find(result.data, function(e) { return e.id === id; });
+ if (entity) { map.zoomTo(entity); }
+ });
+ }
+
+ map.on('drawn.zoomToEntity', function() {
+ if (!context.hasEntity(id)) return;
+ map.on('drawn.zoomToEntity', null);
+ context.on('enter.zoomToEntity', null);
+ context.enter(iD.modes.Select(context, [id]));
+ });
+
+ context.on('enter.zoomToEntity', function() {
+ if (mode.id !== 'browse') {
+ map.on('drawn.zoomToEntity', null);
+ context.on('enter.zoomToEntity', null);
+ }
+ });
+ };
+
/* History */
context.graph = history.graph;
context.changes = history.changes;
};
context.save = function() {
- if (inIntro) return;
+ if (inIntro || (mode && mode.id === 'save')) return;
history.save();
if (history.hasChanges()) return t('save.unsaved_changes');
};
context.perform = withDebouncedSave(history.perform);
context.replace = withDebouncedSave(history.replace);
context.pop = withDebouncedSave(history.pop);
+ context.overwrite = withDebouncedSave(history.overwrite);
context.undo = withDebouncedSave(history.undo);
context.redo = withDebouncedSave(history.redo);
}
};
- context.loadEntity = function(id, zoomTo) {
- if (zoomTo !== false) {
- connection.loadEntity(id, function(error, entity) {
- if (entity) {
- map.zoomTo(entity);
- }
- });
- }
-
- map.on('drawn.loadEntity', function() {
- if (!context.hasEntity(id)) return;
- map.on('drawn.loadEntity', null);
- context.on('enter.loadEntity', null);
- context.enter(iD.modes.Select(context, [id]));
- });
-
- context.on('enter.loadEntity', function() {
- if (mode.id !== 'browse') {
- map.on('drawn.loadEntity', null);
- context.on('enter.loadEntity', null);
- }
- });
- };
-
-
/* Behaviors */
context.install = function(behavior) {
context.surface().call(behavior);
};
/* Copy/Paste */
- var copiedIDs = [];
- context.copiedIDs = function(_) {
- if (!arguments.length) return copiedIDs;
- copiedIDs = _;
+ var copyIDs = [], copyGraph;
+ context.copyGraph = function() { return copyGraph; };
+ context.copyIDs = function(_) {
+ if (!arguments.length) return copyIDs;
+ copyIDs = _;
+ copyGraph = history.graph();
return context;
};
return d3.rebind(context, dispatch, 'on');
};
-iD.version = '1.7.0';
+iD.version = '1.7.3';
(function() {
var detected = {};
var ua = navigator.userAgent,
- msie = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})');
+ m = null;
+
+ m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i); // IE11+
+ if (m !== null) {
+ detected.browser = 'msie';
+ detected.version = m[1];
+ }
+ if (!detected.browser) {
+ m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i); // Opera 15+
+ if (m !== null) {
+ detected.browser = 'Opera';
+ detected.version = m[2];
+ }
+ }
+ if (!detected.browser) {
+ m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
+ if (m !== null) {
+ detected.browser = m[1];
+ detected.version = m[2];
+ m = ua.match(/version\/([\.\d]+)/i);
+ if (m !== null) detected.version = m[1];
+ }
+ }
+ if (!detected.browser) {
+ detected.browser = navigator.appName;
+ detected.version = navigator.appVersion;
+ }
- if (msie.exec(ua) !== null) {
- var rv = parseFloat(RegExp.$1);
- detected.support = !(rv && rv < 9);
+ // keep major.minor version only..
+ detected.version = detected.version.split(/\W/).slice(0,2).join('.');
+
+ if (detected.browser.toLowerCase() === 'msie') {
+ detected.browser = 'Internet Explorer';
+ detected.support = parseFloat(detected.version) > 9;
} else {
detected.support = true;
}
// Added due to incomplete svg style support. See #715
- detected.opera = ua.indexOf('Opera') >= 0;
+ detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );
- detected.locale = navigator.language || navigator.userLanguage;
+ detected.locale = navigator.language || navigator.userLanguage || 'en-US';
detected.filedrop = (window.FileReader && 'ondrop' in window);
return navigator.userAgent.indexOf(x) !== -1;
}
- if (nav('Win')) detected.os = 'win';
- else if (nav('Mac')) detected.os = 'mac';
- else if (nav('X11')) detected.os = 'linux';
- else if (nav('Linux')) detected.os = 'linux';
- else detected.os = 'win';
+ if (nav('Win')) {
+ detected.os = 'win';
+ detected.platform = 'Windows';
+ }
+ else if (nav('Mac')) {
+ detected.os = 'mac';
+ detected.platform = 'Macintosh';
+ }
+ else if (nav('X11') || nav('Linux')) {
+ detected.os = 'linux';
+ detected.platform = 'Linux';
+ }
+ else {
+ detected.os = 'win';
+ detected.platform = 'Unknown';
+ }
iD.detect = function() { return detected; };
})();
return entity.tags[localeName] || entity.tags.name || entity.tags.ref;
};
+iD.util.displayType = function(id) {
+ return {
+ n: t('inspector.node'),
+ w: t('inspector.way'),
+ r: t('inspector.relation')
+ }[id.charAt(0)];
+};
+
iD.util.stringQs = function(str) {
return str.split('&').reduce(function(obj, pair){
var parts = pair.split('=');
// 1. Only works on HTML elements, not SVG
// 2. Does not cause style recalculation
iD.util.fastMouse = function(container) {
- var rect = _.clone(container.getBoundingClientRect()),
+ var rect = container.getBoundingClientRect(),
rectLeft = rect.left,
rectTop = rect.top,
clientLeft = +container.clientLeft,
return null;
};
+iD.geo.pathIntersections = function(path1, path2) {
+ var intersections = [];
+ for (var i = 0; i < path1.length - 1; i++) {
+ for (var j = 0; j < path2.length - 1; j++) {
+ var a = [ path1[i], path1[i+1] ],
+ b = [ path2[j], path2[j+1] ],
+ hit = iD.geo.lineIntersection(a, b);
+ if (hit) intersections.push(hit);
+ }
+ }
+ return intersections;
+};
+
// Return whether point is contained in polygon.
//
// `point` should be a 2-item array of coordinates.
];
},
+ contains: function(obj) {
+ if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
+ return obj[0][0] >= this[0][0] &&
+ obj[0][1] >= this[0][1] &&
+ obj[1][0] <= this[1][0] &&
+ obj[1][1] <= this[1][1];
+ },
+
intersects: function(obj) {
if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
return obj[0][0] <= this[1][0] &&
return graph;
};
};
-iD.actions.CopyEntity = function(entity, deep) {
+iD.actions.CopyEntity = function(id, fromGraph, deep) {
var newEntities = [];
var action = function(graph) {
- newEntities = entity.copy(deep, graph);
+ var entity = fromGraph.entity(id);
+
+ newEntities = entity.copy(deep, fromGraph);
for (var i = 0; i < newEntities.length; i++) {
graph = graph.replace(newEntities[i]);
return graph.remove(way);
};
- action.disabled = function() {
- return false;
+ action.disabled = function(graph) {
+ var disabled = false;
+
+ graph.parentRelations(graph.entity(wayId)).forEach(function(parent) {
+ var type = parent.tags.type,
+ role = parent.memberById(wayId).role || 'outer';
+ if (type === 'route' || type === 'boundary' || (type === 'multipolygon' && role === 'outer')) {
+ disabled = 'part_of_relation';
+ }
+ });
+
+ return disabled;
};
return action;
return action;
};
+iD.actions.MergeRemoteChanges = function(id, localGraph, remoteGraph, formatUser) {
+ var option = 'safe', // 'safe', 'force_local', 'force_remote'
+ conflicts = [];
+
+ function user(d) {
+ return _.isFunction(formatUser) ? formatUser(d) : d;
+ }
+
+
+ function mergeLocation(remote, target) {
+ function pointEqual(a, b) {
+ var epsilon = 1e-6;
+ return (Math.abs(a[0] - b[0]) < epsilon) && (Math.abs(a[1] - b[1]) < epsilon);
+ }
+
+ if (option === 'force_local' || pointEqual(target.loc, remote.loc)) {
+ return target;
+ }
+ if (option === 'force_remote') {
+ return target.update({loc: remote.loc});
+ }
+
+ conflicts.push(t('merge_remote_changes.conflict.location', { user: user(remote.user) }));
+ return target;
+ }
+
+
+ function mergeNodes(base, remote, target) {
+ if (option === 'force_local' || _.isEqual(target.nodes, remote.nodes)) {
+ return target;
+ }
+ if (option === 'force_remote') {
+ return target.update({nodes: remote.nodes});
+ }
+
+ var ccount = conflicts.length,
+ o = base.nodes || [],
+ a = target.nodes || [],
+ b = remote.nodes || [],
+ nodes = [],
+ hunks = Diff3.diff3_merge(a, o, b, true);
+
+ for (var i = 0; i < hunks.length; i++) {
+ var hunk = hunks[i];
+ if (hunk.ok) {
+ nodes.push.apply(nodes, hunk.ok);
+ } else {
+ // for all conflicts, we can assume c.a !== c.b
+ // because `diff3_merge` called with `true` option to exclude false conflicts..
+ var c = hunk.conflict;
+ if (_.isEqual(c.o, c.a)) { // only changed remotely
+ nodes.push.apply(nodes, c.b);
+ } else if (_.isEqual(c.o, c.b)) { // only changed locally
+ nodes.push.apply(nodes, c.a);
+ } else { // changed both locally and remotely
+ conflicts.push(t('merge_remote_changes.conflict.nodelist', { user: user(remote.user) }));
+ break;
+ }
+ }
+ }
+
+ return (conflicts.length === ccount) ? target.update({nodes: nodes}) : target;
+ }
+
+
+ function mergeChildren(targetWay, children, updates, graph) {
+ function isUsed(node, targetWay) {
+ var parentWays = _.pluck(graph.parentWays(node), 'id');
+ return node.hasInterestingTags() ||
+ _.without(parentWays, targetWay.id).length > 0 ||
+ graph.parentRelations(node).length > 0;
+ }
+
+ var ccount = conflicts.length;
+
+ for (var i = 0; i < children.length; i++) {
+ var id = children[i],
+ node = graph.hasEntity(id);
+
+ // remove unused childNodes..
+ if (targetWay.nodes.indexOf(id) === -1) {
+ if (node && !isUsed(node, targetWay)) {
+ updates.removeIds.push(id);
+ }
+ continue;
+ }
+
+ // restore used childNodes..
+ var local = localGraph.hasEntity(id),
+ remote = remoteGraph.hasEntity(id),
+ target;
+
+ if (option === 'force_remote' && remote && remote.visible) {
+ updates.replacements.push(remote);
+
+ } else if (option === 'force_local' && local) {
+ target = iD.Entity(local);
+ if (remote && remote.visible) {
+ target = target.update({ version: remote.version });
+ }
+ updates.replacements.push(target);
+
+ } else if (option === 'safe' && local && remote) {
+ target = iD.Entity(local, { version: remote.version });
+ if (remote.visible) {
+ target = mergeLocation(remote, target);
+ } else {
+ conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
+ }
+
+ if (conflicts.length !== ccount) break;
+ updates.replacements.push(target);
+ }
+ }
+
+ return targetWay;
+ }
+
+
+ function updateChildren(updates, graph) {
+ for (var i = 0; i < updates.replacements.length; i++) {
+ graph = graph.replace(updates.replacements[i]);
+ }
+ if (updates.removeIds.length) {
+ graph = iD.actions.DeleteMultiple(updates.removeIds)(graph);
+ }
+ return graph;
+ }
+
+
+ function mergeMembers(remote, target) {
+ if (option === 'force_local' || _.isEqual(target.members, remote.members)) {
+ return target;
+ }
+ if (option === 'force_remote') {
+ return target.update({members: remote.members});
+ }
+
+ conflicts.push(t('merge_remote_changes.conflict.memberlist', { user: user(remote.user) }));
+ return target;
+ }
+
+
+ function mergeTags(base, remote, target) {
+ function ignoreKey(k) {
+ return _.contains(iD.data.discarded, k);
+ }
+
+ if (option === 'force_local' || _.isEqual(target.tags, remote.tags)) {
+ return target;
+ }
+ if (option === 'force_remote') {
+ return target.update({tags: remote.tags});
+ }
+
+ var ccount = conflicts.length,
+ o = base.tags || {},
+ a = target.tags || {},
+ b = remote.tags || {},
+ keys = _.reject(_.union(_.keys(o), _.keys(a), _.keys(b)), ignoreKey),
+ tags = _.clone(a),
+ changed = false;
+
+ for (var i = 0; i < keys.length; i++) {
+ var k = keys[i];
+
+ if (o[k] !== b[k] && a[k] !== b[k]) { // changed remotely..
+ if (o[k] !== a[k]) { // changed locally..
+ conflicts.push(t('merge_remote_changes.conflict.tags',
+ { tag: k, local: a[k], remote: b[k], user: user(remote.user) }));
+
+ } else { // unchanged locally, accept remote change..
+ if (b.hasOwnProperty(k)) {
+ tags[k] = b[k];
+ } else {
+ delete tags[k];
+ }
+ changed = true;
+ }
+ }
+ }
+
+ return (changed && conflicts.length === ccount) ? target.update({tags: tags}) : target;
+ }
+
+
+ // `graph.base()` is the common ancestor of the two graphs.
+ // `localGraph` contains user's edits up to saving
+ // `remoteGraph` contains remote edits to modified nodes
+ // `graph` must be a descendent of `localGraph` and may include
+ // some conflict resolution actions performed on it.
+ //
+ // --- ... --- `localGraph` -- ... -- `graph`
+ // /
+ // `graph.base()` --- ... --- `remoteGraph`
+ //
+ var action = function(graph) {
+ var updates = { replacements: [], removeIds: [] },
+ base = graph.base().entities[id],
+ local = localGraph.entity(id),
+ remote = remoteGraph.entity(id),
+ target = iD.Entity(local, { version: remote.version });
+
+ // delete/undelete
+ if (!remote.visible) {
+ if (option === 'force_remote') {
+ return iD.actions.DeleteMultiple([id])(graph);
+
+ } else if (option === 'force_local') {
+ if (target.type === 'way') {
+ target = mergeChildren(target, _.uniq(local.nodes), updates, graph);
+ graph = updateChildren(updates, graph);
+ }
+ return graph.replace(target);
+
+ } else {
+ conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
+ return graph; // do nothing
+ }
+ }
+
+ // merge
+ if (target.type === 'node') {
+ target = mergeLocation(remote, target);
+
+ } else if (target.type === 'way') {
+ // pull in any child nodes that may not be present locally..
+ graph.rebase(remoteGraph.childNodes(remote), [graph], false);
+ target = mergeNodes(base, remote, target);
+ target = mergeChildren(target, _.union(local.nodes, remote.nodes), updates, graph);
+
+ } else if (target.type === 'relation') {
+ target = mergeMembers(remote, target);
+ }
+
+ target = mergeTags(base, remote, target);
+
+ if (!conflicts.length) {
+ graph = updateChildren(updates, graph).replace(target);
+ }
+
+ return graph;
+ };
+
+ action.withOption = function(opt) {
+ option = opt;
+ return action;
+ };
+
+ action.conflicts = function() {
+ return conflicts;
+ };
+
+ return action;
+};
// https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
// https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
-iD.actions.Move = function(ids, delta, projection) {
- function addNodes(ids, nodes, graph) {
- ids.forEach(function(id) {
- var entity = graph.entity(id);
- if (entity.type === 'node') {
- nodes.push(id);
- } else if (entity.type === 'way') {
- nodes.push.apply(nodes, entity.nodes);
- } else {
- addNodes(_.pluck(entity.members, 'id'), nodes, graph);
+iD.actions.Move = function(moveIds, tryDelta, projection, cache) {
+ var delta = tryDelta;
+
+ function vecAdd(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
+ function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
+
+ function setupCache(graph) {
+ function canMove(nodeId) {
+ var parents = _.pluck(graph.parentWays(graph.entity(nodeId)), 'id');
+ if (parents.length < 3) return true;
+
+ // Don't move a vertex where >2 ways meet, unless all parentWays are moving too..
+ var parentsMoving = _.all(parents, function(id) { return cache.moving[id]; });
+ if (!parentsMoving) delete cache.moving[nodeId];
+
+ return parentsMoving;
+ }
+
+ function cacheEntities(ids) {
+ _.each(ids, function(id) {
+ if (cache.moving[id]) return;
+ cache.moving[id] = true;
+
+ var entity = graph.hasEntity(id);
+ if (!entity) return;
+
+ if (entity.type === 'node') {
+ cache.nodes.push(id);
+ cache.startLoc[id] = entity.loc;
+ } else if (entity.type === 'way') {
+ cache.ways.push(id);
+ cacheEntities(entity.nodes);
+ } else {
+ cacheEntities(_.pluck(entity.members, 'id'));
+ }
+ });
+ }
+
+ function cacheIntersections(ids) {
+ function isEndpoint(way, id) { return !way.isClosed() && !!way.affix(id); }
+
+ _.each(ids, function(id) {
+ // consider only intersections with 1 moved and 1 unmoved way.
+ _.each(graph.childNodes(graph.entity(id)), function(node) {
+ var parents = graph.parentWays(node);
+ if (parents.length !== 2) return;
+
+ var moved = graph.entity(id),
+ unmoved = _.find(parents, function(way) { return !cache.moving[way.id]; });
+ if (!unmoved) return;
+
+ // exclude ways that are overly connected..
+ if (_.intersection(moved.nodes, unmoved.nodes).length > 2) return;
+
+ if (moved.isArea() || unmoved.isArea()) return;
+
+ cache.intersection[node.id] = {
+ nodeId: node.id,
+ movedId: moved.id,
+ unmovedId: unmoved.id,
+ movedIsEP: isEndpoint(moved, node.id),
+ unmovedIsEP: isEndpoint(unmoved, node.id)
+ };
+ });
+ });
+ }
+
+
+ if (!cache) {
+ cache = {};
+ }
+ if (!cache.ok) {
+ cache.moving = {};
+ cache.intersection = {};
+ cache.replacedVertex = {};
+ cache.startLoc = {};
+ cache.nodes = [];
+ cache.ways = [];
+
+ cacheEntities(moveIds);
+ cacheIntersections(cache.ways);
+ cache.nodes = _.filter(cache.nodes, canMove);
+
+ cache.ok = true;
+ }
+ }
+
+
+ // Place a vertex where the moved vertex used to be, to preserve way shape..
+ function replaceMovedVertex(nodeId, wayId, graph, delta) {
+ var way = graph.entity(wayId),
+ moved = graph.entity(nodeId),
+ movedIndex = way.nodes.indexOf(nodeId),
+ len, prevIndex, nextIndex;
+
+ if (way.isClosed()) {
+ len = way.nodes.length - 1;
+ prevIndex = (movedIndex + len - 1) % len;
+ nextIndex = (movedIndex + len + 1) % len;
+ } else {
+ len = way.nodes.length;
+ prevIndex = movedIndex - 1;
+ nextIndex = movedIndex + 1;
+ }
+
+ var prev = graph.hasEntity(way.nodes[prevIndex]),
+ next = graph.hasEntity(way.nodes[nextIndex]);
+
+ // Don't add orig vertex at endpoint..
+ if (!prev || !next) return graph;
+
+ var key = wayId + '_' + nodeId,
+ orig = cache.replacedVertex[key];
+ if (!orig) {
+ orig = iD.Node();
+ cache.replacedVertex[key] = orig;
+ cache.startLoc[orig.id] = cache.startLoc[nodeId];
+ }
+
+ var start, end;
+ if (delta) {
+ start = projection(cache.startLoc[nodeId]);
+ end = projection.invert(vecAdd(start, delta));
+ } else {
+ end = cache.startLoc[nodeId];
+ }
+ orig = orig.move(end);
+
+ var angle = Math.abs(iD.geo.angle(orig, prev, projection) -
+ iD.geo.angle(orig, next, projection)) * 180 / Math.PI;
+
+ // Don't add orig vertex if it would just make a straight line..
+ if (angle > 175 && angle < 185) return graph;
+
+ // Don't add orig vertex if another point is already nearby (within 10m)
+ if (iD.geo.sphericalDistance(prev.loc, orig.loc) < 10 ||
+ iD.geo.sphericalDistance(orig.loc, next.loc) < 10) return graph;
+
+ // moving forward or backward along way?
+ var p1 = [prev.loc, orig.loc, moved.loc, next.loc].map(projection),
+ p2 = [prev.loc, moved.loc, orig.loc, next.loc].map(projection),
+ d1 = iD.geo.pathLength(p1),
+ d2 = iD.geo.pathLength(p2),
+ insertAt = (d1 < d2) ? movedIndex : nextIndex;
+
+ // moving around closed loop?
+ if (way.isClosed() && insertAt === 0) insertAt = len;
+
+ way = way.addNode(orig.id, insertAt);
+ return graph.replace(orig).replace(way);
+ }
+
+ // Reorder nodes around intersections that have moved..
+ function unZorroIntersection(intersection, graph) {
+ var vertex = graph.entity(intersection.nodeId),
+ way1 = graph.entity(intersection.movedId),
+ way2 = graph.entity(intersection.unmovedId),
+ isEP1 = intersection.movedIsEP,
+ isEP2 = intersection.unmovedIsEP;
+
+ // don't move the vertex if it is the endpoint of both ways.
+ if (isEP1 && isEP2) return graph;
+
+ var nodes1 = _.without(graph.childNodes(way1), vertex),
+ nodes2 = _.without(graph.childNodes(way2), vertex);
+
+ if (way1.isClosed() && way1.first() === vertex.id) nodes1.push(nodes1[0]);
+ if (way2.isClosed() && way2.first() === vertex.id) nodes2.push(nodes2[0]);
+
+ var edge1 = !isEP1 && iD.geo.chooseEdge(nodes1, projection(vertex.loc), projection),
+ edge2 = !isEP2 && iD.geo.chooseEdge(nodes2, projection(vertex.loc), projection),
+ loc;
+
+ // snap vertex to nearest edge (or some point between them)..
+ if (!isEP1 && !isEP2) {
+ var epsilon = 1e-4, maxIter = 10;
+ for (var i = 0; i < maxIter; i++) {
+ loc = iD.geo.interp(edge1.loc, edge2.loc, 0.5);
+ edge1 = iD.geo.chooseEdge(nodes1, projection(loc), projection);
+ edge2 = iD.geo.chooseEdge(nodes2, projection(loc), projection);
+ if (Math.abs(edge1.distance - edge2.distance) < epsilon) break;
+ }
+ } else if (!isEP1) {
+ loc = edge1.loc;
+ } else {
+ loc = edge2.loc;
+ }
+
+ graph = graph.replace(vertex.move(loc));
+
+ // if zorro happened, reorder nodes..
+ if (!isEP1 && edge1.index !== way1.nodes.indexOf(vertex.id)) {
+ way1 = way1.removeNode(vertex.id).addNode(vertex.id, edge1.index);
+ graph = graph.replace(way1);
+ }
+ if (!isEP2 && edge2.index !== way2.nodes.indexOf(vertex.id)) {
+ way2 = way2.removeNode(vertex.id).addNode(vertex.id, edge2.index);
+ graph = graph.replace(way2);
+ }
+
+ return graph;
+ }
+
+
+ function cleanupIntersections(graph) {
+ _.each(cache.intersection, function(obj) {
+ graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, delta);
+ graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
+ graph = unZorroIntersection(obj, graph);
+ });
+
+ return graph;
+ }
+
+ // check if moving way endpoint can cross an unmoved way, if so limit delta..
+ function limitDelta(graph) {
+ _.each(cache.intersection, function(obj) {
+ if (!obj.movedIsEP) return;
+
+ var node = graph.entity(obj.nodeId),
+ start = projection(node.loc),
+ end = vecAdd(start, delta),
+ movedNodes = graph.childNodes(graph.entity(obj.movedId)),
+ movedPath = _.map(_.pluck(movedNodes, 'loc'),
+ function(loc) { return vecAdd(projection(loc), delta); }),
+ unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId)),
+ unmovedPath = _.map(_.pluck(unmovedNodes, 'loc'), projection),
+ hits = iD.geo.pathIntersections(movedPath, unmovedPath);
+
+ for (var i = 0; i < hits.length; i++) {
+ if (_.isEqual(hits[i], end)) continue;
+ var edge = iD.geo.chooseEdge(unmovedNodes, end, projection);
+ delta = vecSub(projection(edge.loc), start);
}
});
}
+
var action = function(graph) {
- var nodes = [];
+ if (delta[0] === 0 && delta[1] === 0) return graph;
+
+ setupCache(graph);
- addNodes(ids, nodes, graph);
+ if (!_.isEmpty(cache.intersection)) {
+ limitDelta(graph);
+ }
- _.uniq(nodes).forEach(function(id) {
+ _.each(cache.nodes, function(id) {
var node = graph.entity(id),
start = projection(node.loc),
- end = projection.invert([start[0] + delta[0], start[1] + delta[1]]);
- graph = graph.replace(node.move(end));
+ end = vecAdd(start, delta);
+ graph = graph.replace(node.move(projection.invert(end)));
});
+ if (!_.isEmpty(cache.intersection)) {
+ graph = cleanupIntersections(graph);
+ }
+
return graph;
};
return entity.type === 'relation' && !entity.isComplete(graph);
}
- if (_.any(ids, incompleteRelation))
+ if (_.any(moveIds, incompleteRelation))
return 'incomplete_relation';
};
+ action.delta = function() {
+ return delta;
+ };
+
return action;
};
// https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
return graph.replace(way.update({nodes: nodes, tags: tags}));
};
};
+iD.actions.Revert = function(id) {
+
+ var action = function(graph) {
+ var entity = graph.hasEntity(id),
+ base = graph.base().entities[id];
+
+ if (entity && !base) { // entity will be removed..
+ if (entity.type === 'node') {
+ graph.parentWays(entity)
+ .forEach(function(parent) {
+ parent = parent.removeNode(id);
+ graph = graph.replace(parent);
+
+ if (parent.isDegenerate()) {
+ graph = iD.actions.DeleteWay(parent.id)(graph);
+ }
+ });
+ }
+
+ graph.parentRelations(entity)
+ .forEach(function(parent) {
+ parent = parent.removeMembersWithID(id);
+ graph = graph.replace(parent);
+
+ if (parent.isDegenerate()) {
+ graph = iD.actions.DeleteRelation(parent.id)(graph);
+ }
+ });
+ }
+
+ return graph.revert(id);
+ };
+
+ return action;
+};
iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
return function(graph) {
return graph.update(function(graph) {
}
}
- context.copiedIDs(canCopy);
+ context.copyIDs(canCopy);
}
function copy() {
if (location.hash) {
var q = iD.util.stringQs(location.hash.substring(1));
- if (q.id) context.loadEntity(q.id.split(',')[0], !q.map);
+ if (q.id) context.zoomToEntity(q.id.split(',')[0], !q.map);
if (q.comment) context.storage('comment', q.comment);
hashchange();
if (q.map) hash.hadHash = true;
if (!iD.geo.pointInPolygon(mouse, viewport)) return;
- var graph = context.graph(),
- extent = iD.geo.Extent(),
- oldIDs = context.copiedIDs(),
+ var extent = iD.geo.Extent(),
+ oldIDs = context.copyIDs(),
+ oldGraph = context.copyGraph(),
newIDs = [],
i, j;
+ if (!oldIDs.length) return;
+
for (i = 0; i < oldIDs.length; i++) {
- var oldEntity = graph.entity(oldIDs[i]),
- action = iD.actions.CopyEntity(oldEntity, true),
+ var oldEntity = oldGraph.entity(oldIDs[i]),
+ action = iD.actions.CopyEntity(oldEntity.id, oldGraph, true),
newEntities;
- extent._extend(oldEntity.extent(graph));
+ extent._extend(oldEntity.extent(oldGraph));
context.perform(action);
// First element in `newEntities` contains the copied Entity,
}
function click() {
- var datum = d3.event.target.__data__;
- var lasso = d3.select('#surface .lasso').node();
+ var datum = d3.event.target.__data__,
+ lasso = d3.select('#surface .lasso').node(),
+ mode = context.mode();
+
if (!(datum instanceof iD.Entity)) {
- if (!d3.event.shiftKey && !lasso)
+ if (!d3.event.shiftKey && !lasso && mode.id !== 'browse')
context.enter(iD.modes.Browse(context));
} else if (!d3.event.shiftKey && !lasso) {
if (context.selectedIDs().length !== 1 || context.selectedIDs()[0] !== datum.id) {
context.enter(iD.modes.Select(context, [datum.id]));
} else {
- context.mode().reselect();
+ mode.suppressMenu(false).reselect();
}
} else if (context.selectedIDs().indexOf(datum.id) >= 0) {
var selectedIDs = _.without(context.selectedIDs(), datum.id);
});
if (sidebar) {
- context.ui().sidebar.hide(sidebar);
+ context.ui().sidebar.hide();
}
};
annotation = entityIDs.length === 1 ?
t('operations.move.annotation.' + context.geometry(entityIDs[0])) :
t('operations.move.annotation.multiple'),
+ cache,
origin,
nudgeInterval;
+ function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
+
function edge(point, size) {
var pad = [30, 100, 30, 100];
if (point[0] > size[0] - pad[0]) return [-10, 0];
if (nudgeInterval) window.clearInterval(nudgeInterval);
nudgeInterval = window.setInterval(function() {
context.pan(nudge);
- context.replace(
- iD.actions.Move(entityIDs, [-nudge[0], -nudge[1]], context.projection),
- annotation);
- var c = context.projection(origin);
- origin = context.projection.invert([c[0] - nudge[0], c[1] - nudge[1]]);
+
+ var currMouse = context.mouse(),
+ origMouse = context.projection(origin),
+ delta = vecSub(vecSub(currMouse, origMouse), nudge),
+ action = iD.actions.Move(entityIDs, delta, context.projection, cache);
+
+ context.overwrite(action, annotation);
+
}, 50);
}
}
function move() {
- var p = context.mouse();
+ var currMouse = context.mouse(),
+ origMouse = context.projection(origin),
+ delta = vecSub(currMouse, origMouse),
+ action = iD.actions.Move(entityIDs, delta, context.projection, cache);
- var delta = origin ?
- [p[0] - context.projection(origin)[0],
- p[1] - context.projection(origin)[1]] :
- [0, 0];
+ context.overwrite(action, annotation);
- var nudge = edge(p, context.map().dimensions());
+ var nudge = edge(currMouse, context.map().dimensions());
if (nudge) startNudge(nudge);
else stopNudge();
-
- origin = context.map().mouseCoordinates();
-
- context.replace(
- iD.actions.Move(entityIDs, delta, context.projection),
- annotation);
}
function finish() {
d3.event.stopPropagation();
- context.enter(iD.modes.Select(context, entityIDs)
- .suppressMenu(true));
+ context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
stopNudge();
}
function cancel() {
context.pop();
- context.enter(iD.modes.Select(context, entityIDs)
- .suppressMenu(true));
+ context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
stopNudge();
}
}
mode.enter = function() {
+ origin = context.map().mouseCoordinates();
+ cache = {};
+
context.install(edit);
context.perform(
};
iD.modes.Save = function(context) {
var ui = iD.ui.Commit(context)
- .on('cancel', cancel)
- .on('save', save);
+ .on('cancel', cancel)
+ .on('save', save);
function cancel() {
context.enter(iD.modes.Browse(context));
}
- function save(e) {
- var loading = iD.ui.Loading(context)
- .message(t('save.uploading'))
- .blocking(true);
+ function save(e, tryAgain) {
+ function withChildNodes(ids, graph) {
+ return _.uniq(_.reduce(ids, function(result, id) {
+ var e = graph.entity(id);
+ if (e.type === 'way') {
+ var cn = graph.childNodes(e);
+ result.push.apply(result, _.pluck(_.filter(cn, 'version'), 'id'));
+ }
+ return result;
+ }, _.clone(ids)));
+ }
+
+ var loading = iD.ui.Loading(context).message(t('save.uploading')).blocking(true),
+ history = context.history(),
+ origChanges = history.changes(iD.actions.DiscardTags(history.difference())),
+ localGraph = context.graph(),
+ remoteGraph = iD.Graph(history.base(), true),
+ modified = _.filter(history.difference().summary(), {changeType: 'modified'}),
+ toCheck = _.pluck(_.pluck(modified, 'entity'), 'id'),
+ toLoad = withChildNodes(toCheck, localGraph),
+ conflicts = [],
+ errors = [];
+
+ if (!tryAgain) history.perform(iD.actions.Noop()); // checkpoint
+ context.container().call(loading);
+
+ if (toCheck.length) {
+ context.connection().loadMultiple(toLoad, loaded);
+ } else {
+ finalize();
+ }
- context.container()
- .call(loading);
-
- context.connection().putChangeset(
- context.history().changes(iD.actions.DiscardTags(context.history().difference())),
- e.comment,
- context.history().imageryUsed(),
- function(err, changeset_id) {
- loading.close();
- if (err) {
- var confirm = iD.ui.confirm(context.container());
- confirm
- .select('.modal-section.header')
- .append('h3')
- .text(t('save.error'));
- confirm
- .select('.modal-section.message-text')
- .append('p')
- .text(err.responseText || t('save.unknown_error_details'));
- } else {
- context.flush();
- success(e, changeset_id);
+
+ // Reload modified entities into an alternate graph and check for conflicts..
+ function loaded(err, result) {
+ if (errors.length) return;
+
+ if (err) {
+ errors.push({
+ msg: err.responseText,
+ details: [ t('save.status_code', { code: err.status }) ]
+ });
+ showErrors();
+
+ } else {
+ var loadMore = [];
+ _.each(result.data, function(entity) {
+ remoteGraph.replace(entity);
+ toLoad = _.without(toLoad, entity.id);
+
+ // Because loadMultiple doesn't download /full like loadEntity,
+ // need to also load children that aren't already being checked..
+ if (!entity.visible) return;
+ if (entity.type === 'way') {
+ loadMore.push.apply(loadMore,
+ _.difference(entity.nodes, toCheck, toLoad, loadMore));
+ } else if (entity.type === 'relation' && entity.isMultipolygon()) {
+ loadMore.push.apply(loadMore,
+ _.difference(_.pluck(entity.members, 'id'), toCheck, toLoad, loadMore));
+ }
+ });
+
+ if (loadMore.length) {
+ toLoad.push.apply(toLoad, loadMore);
+ context.connection().loadMultiple(loadMore, loaded);
+ }
+
+ if (!toLoad.length) {
+ checkConflicts();
+ }
+ }
+ }
+
+
+ function checkConflicts() {
+ function choice(id, text, action) {
+ return { id: id, text: text, action: function() { history.replace(action); } };
+ }
+ function formatUser(d) {
+ return '<a href="' + context.connection().userURL(d) + '" target="_blank">' + d + '</a>';
+ }
+ function entityName(entity) {
+ return iD.util.displayName(entity) || (iD.util.displayType(entity.id) + ' ' + entity.id);
+ }
+
+ function compareVersions(local, remote) {
+ if (local.version !== remote.version) return false;
+
+ if (local.type === 'way') {
+ var children = _.union(local.nodes, remote.nodes);
+
+ for (var i = 0; i < children.length; i++) {
+ var a = localGraph.hasEntity(children[i]),
+ b = remoteGraph.hasEntity(children[i]);
+
+ if (a && b && a.version !== b.version) return false;
+ }
}
+
+ return true;
+ }
+
+ _.each(toCheck, function(id) {
+ var local = localGraph.entity(id),
+ remote = remoteGraph.entity(id);
+
+ if (compareVersions(local, remote)) return;
+
+ var action = iD.actions.MergeRemoteChanges,
+ merge = action(id, localGraph, remoteGraph, formatUser);
+
+ history.replace(merge);
+
+ var mergeConflicts = merge.conflicts();
+ if (!mergeConflicts.length) return; // merged safely
+
+ var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'),
+ forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'),
+ keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')),
+ keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
+
+ conflicts.push({
+ id: id,
+ name: entityName(local),
+ details: mergeConflicts,
+ chosen: 1,
+ choices: [
+ choice(id, keepMine, forceLocal),
+ choice(id, keepTheirs, forceRemote)
+ ]
+ });
});
+
+ finalize();
+ }
+
+
+ function finalize() {
+ if (conflicts.length) {
+ conflicts.sort(function(a,b) { return b.id.localeCompare(a.id); });
+ showConflicts();
+ } else if (errors.length) {
+ showErrors();
+ } else {
+ var changes = history.changes(iD.actions.DiscardTags(history.difference()));
+ if (changes.modified.length || changes.created.length || changes.deleted.length) {
+ context.connection().putChangeset(
+ changes,
+ e.comment,
+ history.imageryUsed(),
+ function(err, changeset_id) {
+ if (err) {
+ errors.push({
+ msg: err.responseText,
+ details: [ t('save.status_code', { code: err.status }) ]
+ });
+ showErrors();
+ } else {
+ history.clearSaved();
+ success(e, changeset_id);
+ // Add delay to allow for postgres replication #1646 #2678
+ window.setTimeout(function() {
+ loading.close();
+ context.flush();
+ }, 2500);
+ }
+ });
+ } else { // changes were insignificant or reverted by user
+ loading.close();
+ context.flush();
+ cancel();
+ }
+ }
+ }
+
+
+ function showConflicts() {
+ var selection = context.container()
+ .select('#sidebar')
+ .append('div')
+ .attr('class','sidebar-component');
+
+ loading.close();
+
+ selection.call(iD.ui.Conflicts(context)
+ .list(conflicts)
+ .on('download', function() {
+ var data = JXON.stringify(context.connection().osmChangeJXON('CHANGEME', origChanges)),
+ win = window.open('data:text/xml,' + encodeURIComponent(data), '_blank');
+ win.focus();
+ })
+ .on('cancel', function() {
+ history.pop();
+ selection.remove();
+ })
+ .on('save', function() {
+ for (var i = 0; i < conflicts.length; i++) {
+ if (conflicts[i].chosen === 1) { // user chose "keep theirs"
+ var entity = context.hasEntity(conflicts[i].id);
+ if (entity && entity.type === 'way') {
+ var children = _.uniq(entity.nodes);
+ for (var j = 0; j < children.length; j++) {
+ history.replace(iD.actions.Revert(children[j]));
+ }
+ }
+ history.replace(iD.actions.Revert(conflicts[i].id));
+ }
+ }
+
+ selection.remove();
+ save(e, true);
+ })
+ );
+ }
+
+
+ function showErrors() {
+ var selection = iD.ui.confirm(context.container());
+
+ history.pop();
+ loading.close();
+
+ selection
+ .select('.modal-section.header')
+ .append('h3')
+ .text(t('save.error'));
+
+ addErrors(selection, errors);
+ selection.okButton();
+ }
+
+
+ function addErrors(selection, data) {
+ var message = selection
+ .select('.modal-section.message-text');
+
+ var items = message
+ .selectAll('.error-container')
+ .data(data);
+
+ var enter = items.enter()
+ .append('div')
+ .attr('class', 'error-container');
+
+ enter
+ .append('a')
+ .attr('class', 'error-description')
+ .attr('href', '#')
+ .classed('hide-toggle', true)
+ .text(function(d) { return d.msg || t('save.unknown_error_details'); })
+ .on('click', function() {
+ var error = d3.select(this),
+ detail = d3.select(this.nextElementSibling),
+ exp = error.classed('expanded');
+
+ detail.style('display', exp ? 'none' : 'block');
+ error.classed('expanded', !exp);
+
+ d3.event.preventDefault();
+ });
+
+ var details = enter
+ .append('div')
+ .attr('class', 'error-detail-container')
+ .style('display', 'none');
+
+ details
+ .append('ul')
+ .attr('class', 'error-detail-list')
+ .selectAll('li')
+ .data(function(d) { return d.details || []; })
+ .enter()
+ .append('li')
+ .attr('class', 'error-detail-item')
+ .text(function(d) { return d; });
+
+ items.exit()
+ .remove();
+ }
+
}
+
function success(e, changeset_id) {
context.enter(iD.modes.Browse(context)
.sidebar(iD.ui.Success(context)
id: changeset_id,
comment: e.comment
})
- .on('cancel', function(ui) {
- context.ui().sidebar.hide(ui);
+ .on('cancel', function() {
+ context.ui().sidebar.hide();
})));
}
id: 'save'
};
- var behaviors = [
- iD.behavior.Hover(context),
- iD.behavior.Select(context),
- iD.behavior.Lasso(context),
- iD.modes.DragNode(context).behavior];
-
mode.enter = function() {
- behaviors.forEach(function(behavior) {
- context.install(behavior);
- });
-
context.connection().authenticate(function() {
context.ui().sidebar.show(ui);
});
};
mode.exit = function() {
- behaviors.forEach(function(behavior) {
- context.uninstall(behavior);
- });
-
- context.ui().sidebar.hide(ui);
+ context.ui().sidebar.hide();
};
return mode;
return operation;
};
iD.Connection = function() {
-
- var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'load', 'loaded'),
+ var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'loaded'),
url = 'http://www.openstreetmap.org',
connection = {},
inflight = {},
nodeStr = 'node',
wayStr = 'way',
relationStr = 'relation',
+ userDetails,
off;
+
connection.changesetURL = function(changesetId) {
return url + '/changeset/' + changesetId;
};
};
connection.loadFromURL = function(url, callback) {
- function done(dom) {
- return callback(null, parse(dom));
+ function done(err, dom) {
+ return callback(err, parse(dom));
}
- return d3.xml(url).get().on('load', done);
+ return d3.xml(url).get(done);
};
connection.loadEntity = function(id, callback) {
connection.loadFromURL(
url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''),
function(err, entities) {
- event.load(err, {data: entities});
- if (callback) callback(err, entities && _.find(entities, function(e) { return e.id === id; }));
+ if (callback) callback(err, {data: entities});
+ });
+ };
+
+ connection.loadMultiple = function(ids, callback) {
+ _.each(_.groupBy(_.uniq(ids), iD.Entity.id.type), function(v, k) {
+ var type = k + 's',
+ osmIDs = _.map(v, iD.Entity.id.toOSM);
+
+ _.each(_.chunk(osmIDs, 150), function(arr) {
+ connection.loadFromURL(
+ url + '/api/0.6/' + type + '?' + type + '=' + arr.join(),
+ function(err, entities) {
+ if (callback) callback(err, {data: entities});
+ });
});
+ });
};
function authenticating() {
event.authenticated();
}
+ function getLoc(attrs) {
+ var lon = attrs.lon && attrs.lon.value,
+ lat = attrs.lat && attrs.lat.value;
+ return [parseFloat(lon), parseFloat(lat)];
+ }
+
function getNodes(obj) {
var elems = obj.getElementsByTagName(ndStr),
nodes = new Array(elems.length);
return members;
}
+ function getVisible(attrs) {
+ return (!attrs.visible || attrs.visible.value !== 'false');
+ }
+
var parsers = {
node: function nodeData(obj) {
var attrs = obj.attributes;
return new iD.Node({
id: iD.Entity.id.fromOSM(nodeStr, attrs.id.value),
- loc: [parseFloat(attrs.lon.value), parseFloat(attrs.lat.value)],
+ loc: getLoc(attrs),
version: attrs.version.value,
user: attrs.user && attrs.user.value,
- tags: getTags(obj)
+ tags: getTags(obj),
+ visible: getVisible(attrs)
});
},
version: attrs.version.value,
user: attrs.user && attrs.user.value,
tags: getTags(obj),
- nodes: getNodes(obj)
+ nodes: getNodes(obj),
+ visible: getVisible(attrs)
});
},
version: attrs.version.value,
user: attrs.user && attrs.user.value,
tags: getTags(obj),
- members: getMembers(obj)
+ members: getMembers(obj),
+ visible: getVisible(attrs)
});
}
};
function parse(dom) {
- if (!dom || !dom.childNodes) return new Error('Bad request');
+ if (!dom || !dom.childNodes) return;
var root = dom.childNodes[0],
children = root.childNodes,
};
connection.changesetTags = function(comment, imageryUsed) {
- var tags = {
- imagery_used: imageryUsed.join(';').substr(0, 255),
- created_by: 'iD ' + iD.version
- };
+ var detected = iD.detect(),
+ tags = {
+ created_by: 'iD ' + iD.version,
+ imagery_used: imageryUsed.join(';').substr(0, 255),
+ host: (window.location.origin + window.location.pathname).substr(0, 255),
+ locale: detected.locale,
+ };
if (comment) {
- tags.comment = comment;
+ tags.comment = comment.substr(0, 255);
}
return tags;
content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
}, function(err) {
if (err) return callback(err);
+ // POST was successful, safe to call the callback.
+ // Still attempt to close changeset, but ignore response because #2667
+ // Add delay to allow for postgres replication #1646 #2678
+ window.setTimeout(function() { callback(null, changeset_id); }, 2500);
oauth.xhr({
method: 'PUT',
path: '/api/0.6/changeset/' + changeset_id + '/close'
- }, function(err) {
- callback(err, changeset_id);
- });
+ }, d3.functor(true));
});
});
};
- var userDetails;
-
connection.userDetails = function(callback) {
if (userDetails) {
callback(undefined, userDetails);
return connection;
};
- connection.loadTiles = function(projection, dimensions) {
+ connection.loadTiles = function(projection, dimensions, callback) {
if (off) return;
loadedTiles[id] = true;
delete inflight[id];
- event.load(err, _.extend({data: parsed}, tile));
+ if (callback) callback(err, _.extend({data: parsed}, tile));
if (_.isEmpty(inflight)) {
event.loaded();
};
connection.flush = function() {
+ userDetails = undefined;
_.forEach(inflight, abortRequest);
loadedTiles = {};
inflight = {};
};
connection.logout = function() {
+ userDetails = undefined;
oauth.logout();
event.auth();
return connection;
};
connection.authenticate = function(callback) {
+ userDetails = undefined;
function done(err, res) {
event.auth();
if (callback) callback(err, res);
var changes = {}, length = 0;
function changed(h, b) {
- return !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
+ return h !== b && !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
}
_.each(head.entities, function(h, id) {
if (!this.id && this.type) {
this.id = iD.Entity.id(this.type);
}
+ if (!this.hasOwnProperty('visible')) {
+ this.visible = true;
+ }
if (iD.debug) {
Object.freeze(this);
this.transients = {};
this._childNodes = {};
-
- if (!mutable) {
- this.freeze();
- }
+ this.frozen = !mutable;
};
iD.Graph.prototype = {
result = [];
if (parents) {
- for (var i = 0, imax = parents.length; i !== imax; i++) {
+ for (var i = 0; i < parents.length; i++) {
result.push(this.entity(parents[i]));
}
}
result = [];
if (parents) {
- for (var i = 0, imax = parents.length; i !== imax; i++) {
+ for (var i = 0; i < parents.length; i++) {
result.push(this.entity(parents[i]));
}
}
var nodes = [];
if (entity.nodes) {
- for (var i = 0, l = entity.nodes.length; i < l; i++) {
+ for (var i = 0; i < entity.nodes.length; i++) {
nodes[i] = this.entity(entity.nodes[i]);
}
}
// is used only during the history operation that merges newly downloaded
// data into each state. To external consumers, it should appear as if the
// graph always contained the newly downloaded data.
- rebase: function(entities, stack) {
+ rebase: function(entities, stack, force) {
var base = this.base(),
i, j, k, id;
for (i = 0; i < entities.length; i++) {
var entity = entities[i];
- if (base.entities[entity.id])
+ if (!entity.visible || (!force && base.entities[entity.id]))
continue;
// Merging data into the base graph
base.entities[entity.id] = entity;
- this._updateCalculated(undefined, entity,
- base.parentWays, base.parentRels);
+ this._updateCalculated(undefined, entity, base.parentWays, base.parentRels);
// Restore provisionally-deleted nodes that are discovered to have an extant parent
if (entity.type === 'way') {
});
},
+ revert: function(id) {
+ var baseEntity = this.base().entities[id],
+ headEntity = this.entities[id];
+
+ if (headEntity === baseEntity)
+ return this;
+
+ return this.update(function() {
+ this._updateCalculated(headEntity, baseEntity);
+ delete this.entities[id];
+ });
+ },
+
update: function() {
var graph = this.frozen ? iD.Graph(this, true) : this;
arguments[i].call(graph, graph);
}
- return this.frozen ? graph.freeze() : this;
- },
-
- freeze: function() {
- this.frozen = true;
-
- // No longer freezing entities here due to in-place updates needed in rebase.
+ if (this.frozen) graph.frozen = true;
- return this;
+ return graph;
},
// Obliterates any existing entities
return stack[index].graph;
},
+ base: function() {
+ return stack[0].graph;
+ },
+
merge: function(entities, extent) {
- stack[0].graph.rebase(entities, _.pluck(stack, 'graph'));
- tree.rebase(entities);
+ stack[0].graph.rebase(entities, _.pluck(stack, 'graph'), false);
+ tree.rebase(entities, false);
dispatch.change(undefined, extent);
},
}
},
+ // Same as calling pop and then perform
+ overwrite: function() {
+ var previous = stack[index].graph;
+
+ if (index > 0) {
+ index--;
+ stack.pop();
+ }
+ stack = stack.slice(0, index + 1);
+ stack.push(perform(arguments));
+ index++;
+
+ return change(previous);
+ },
+
undo: function() {
var previous = stack[index].graph;
if (id in base.graph.entities) {
baseEntities[id] = base.graph.entities[id];
}
+ // get originals of parent entities too
+ _.forEach(base.graph._parentWays[id], function(parentId) {
+ if (parentId in base.graph.entities) {
+ baseEntities[parentId] = base.graph.entities[parentId];
+ }
+ });
});
var x = {};
var baseEntities = h.baseEntities.map(function(entity) {
return iD.Entity(entity);
});
- stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'));
- tree.rebase(baseEntities);
+ stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'), true);
+ tree.rebase(baseEntities, true);
}
stack = h.stack.map(function(d) {
var tree = {};
- tree.rebase = function(entities) {
+ tree.rebase = function(entities, force) {
var insertions = {};
for (var i = 0; i < entities.length; i++) {
var entity = entities[i];
- if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id])
+ if (!entity.visible)
continue;
+ if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
+ if (!force) {
+ continue;
+ } else if (rectangles[entity.id]) {
+ rtree.remove(rectangles[entity.id]);
+ }
+ }
+
insertions[entity.id] = entity;
updateParents(entity, insertions, {});
}
background.zoomToGpxLayer = function() {
if (background.hasGpxLayer()) {
- var viewport = context.map().extent().polygon(),
+ var map = context.map(),
+ viewport = map.trimmedExtent().polygon(),
coords = _.reduce(gpxLayer.geojson().features, function(coords, feature) {
var c = feature.geometry.coordinates;
return _.union(coords, feature.geometry.type === 'Point' ? [c] : c);
}, []);
if (!iD.geo.polygonIntersectsPolygon(viewport, coords)) {
- context.map().extent(d3.geo.bounds(gpxLayer.geojson()));
+ var extent = iD.geo.Extent(d3.geo.bounds(gpxLayer.geojson()));
+ map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
}
}
};
name = source.name;
source.scaleExtent = data.scaleExtent || [0, 20];
+ source.overzoom = data.overzoom !== false;
source.offset = function(_) {
if (!arguments.length) return offset;
source.validZoom = function(z) {
return source.scaleExtent[0] <= z &&
- (!source.isLocatorOverlay() || source.scaleExtent[1] > z);
+ (source.overzoom || source.scaleExtent[1] > z);
};
source.isLocatorOverlay = function() {
var strings = Object.keys(entity.tags);
- for (var i = 0, imax = strings.length; i !== imax; i++) {
+ for (var i = 0; i < strings.length; i++) {
var s = strings[i];
if (past_futures[s] || past_futures[entity.tags[s]]) { return true; }
}
return false;
});
- // lines or areas that don't match another feature filter.
+ // Lines or areas that don't match another feature filter.
+ // IMPORTANT: The 'others' feature must be the last one defined,
+ // so that code in getMatches can skip this test if `hasMatch = true`
defineFeature('others', function isOther(entity, resolver, geometry) {
- return (geometry === 'line' || geometry === 'area') && !(
- _features.major_roads.filter(entity, resolver, geometry) ||
- _features.minor_roads.filter(entity, resolver, geometry) ||
- _features.paths.filter(entity, resolver, geometry) ||
- _features.buildings.filter(entity, resolver, geometry) ||
- _features.landuse.filter(entity, resolver, geometry) ||
- _features.boundaries.filter(entity, resolver, geometry) ||
- _features.water.filter(entity, resolver, geometry) ||
- _features.rail.filter(entity, resolver, geometry) ||
- _features.power.filter(entity, resolver, geometry) ||
- _features.past_future.filter(entity, resolver, geometry)
- );
+ return (geometry === 'line' || geometry === 'area');
});
function features() {}
+ features.features = function() {
+ return _features;
+ };
+
features.keys = function() {
return _keys;
};
features.gatherStats = function(d, resolver, dimensions) {
var needsRedraw = false,
+ type = _.groupBy(d, function(ent) { return ent.type; }),
+ entities = [].concat(type.relation || [], type.way || [], type.node || []),
currHidden, geometry, matches;
_.each(_features, function(f) { f.count = 0; });
// a _cullFactor of 1 corresponds to a 1000x1000px viewport..
_cullFactor = dimensions[0] * dimensions[1] / 1000000;
- for (var i = 0, imax = d.length; i !== imax; i++) {
- geometry = d[i].geometry(resolver);
+ for (var i = 0; i < entities.length; i++) {
+ geometry = entities[i].geometry(resolver);
if (!(geometry === 'vertex' || geometry === 'relation')) {
- matches = Object.keys(features.getMatches(d[i], resolver, geometry));
- for (var j = 0, jmax = matches.length; j !== jmax; j++) {
+ matches = Object.keys(features.getMatches(entities[i], resolver, geometry));
+ for (var j = 0; j < matches.length; j++) {
_features[matches[j]].count++;
}
}
};
features.clear = function(d) {
- for (var i = 0, imax = d.length; i !== imax; i++) {
+ for (var i = 0; i < d.length; i++) {
features.clearEntity(d[i]);
}
};
hasMatch = false;
if (!(geometry === 'vertex' || geometry === 'relation')) {
- for (var i = 0, imax = _keys.length; i !== imax; i++) {
- if (hasMatch && _keys[i] === 'others') {
- continue;
+ for (var i = 0; i < _keys.length; i++) {
+
+ if (_keys[i] === 'others') {
+ if (hasMatch) continue;
+
+ // If the entity is a way that has not matched any other
+ // feature type, see if it has a parent relation, and if so,
+ // match whatever feature types the parent has matched.
+ // (The way is a member of a multipolygon.)
+ //
+ // IMPORTANT:
+ // For this to work, getMatches must be called on relations before ways.
+ //
+ if (entity.type === 'way') {
+ var parents = features.getParents(entity, resolver, geometry);
+ if (parents.length === 1) {
+ var pkey = iD.Entity.key(parents[0]);
+ if (_cache[pkey] && _cache[pkey].matches) {
+ matches = _.clone(_cache[pkey].matches);
+ continue;
+ }
+ }
+ }
}
+
if (_features[_keys[i]].filter(entity, resolver, geometry)) {
matches[_keys[i]] = hasMatch = true;
}
var matches = features.getMatches(entity, resolver, geometry);
- for (var i = 0, imax = _hidden.length; i !== imax; i++) {
+ for (var i = 0; i < _hidden.length; i++) {
if (matches[_hidden[i]]) { return true; }
}
return false;
if (!parents.length) { return false; }
- for (var i = 0, imax = parents.length; i !== imax; i++) {
+ for (var i = 0; i < parents.length; i++) {
if (!features.isHidden(parents[i], resolver, parents[i].geometry(resolver))) {
return false;
}
return d;
var result = [];
- for (var i = 0, imax = d.length; i !== imax; i++) {
+ for (var i = 0; i < d.length; i++) {
var entity = d[i];
if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
result.push(entity);
context.features()
.on('redraw.map', redraw);
- selection.call(zoom);
+ selection
+ .on('dblclick.map', dblClick)
+ .call(zoom);
supersurface = selection.append('div')
.attr('id', 'supersurface');
dispatch.drawn({full: true});
}
- function zoomPan() {
- if (d3.event && d3.event.sourceEvent.type === 'dblclick') {
- if (!dblclickEnabled) {
- zoom.scale(projection.scale() * 2 * Math.PI)
- .translate(projection.translate());
- return d3.event.sourceEvent.preventDefault();
- }
+ function dblClick() {
+ if (!dblclickEnabled) {
+ d3.event.preventDefault();
+ d3.event.stopImmediatePropagation();
}
+ }
- if (Math.log(d3.event.scale / Math.LN2 - 8) < minzoom + 1) {
+ function zoomPan() {
+ if (Math.log(d3.event.scale) / Math.LN2 - 8 < minzoom) {
+ surface.interrupt();
iD.ui.flash(context.container())
.select('.content')
.text(t('cannot_zoom'));
- return setZoom(context.minEditableZoom(), true);
+ setZoom(context.minEditableZoom(), true);
+ queueRedraw();
+ dispatch.move(map);
+ return;
}
projection
}
if (map.editable()) {
- context.connection().loadTiles(projection, dimensions);
+ context.loadTiles(projection, dimensions);
drawVector(difference, extent);
} else {
editOff();
return map;
};
+ function interpolateZoom(_) {
+ var k = projection.scale(),
+ t = projection.translate();
+
+ surface.node().__chart__ = {
+ x: t[0],
+ y: t[1],
+ k: k * 2 * Math.PI
+ };
+
+ setZoom(_);
+ projection.scale(k).translate(t); // undo setZoom projection changes
+
+ zoom.event(surface.transition());
+ }
+
function setZoom(_, force) {
if (_ === map.zoom() && !force)
return false;
return redraw();
};
- map.zoomIn = function() { return map.zoom(~~map.zoom() + 1); };
- map.zoomOut = function() { return map.zoom(~~map.zoom() - 1); };
+ map.zoomIn = function() { interpolateZoom(~~map.zoom() + 1); };
+ map.zoomOut = function() { interpolateZoom(~~map.zoom() - 1); };
map.center = function(loc) {
if (!arguments.length) {
}
if (z < minzoom) {
+ surface.interrupt();
iD.ui.flash(context.container())
.select('.content')
.text(t('cannot_zoom'));
};
map.zoomTo = function(entity, zoomLimits) {
- var extent = entity.extent(context.graph()),
- zoom = map.extentZoom(extent);
+ var extent = entity.extent(context.graph());
+ if (!isFinite(extent.area())) return;
+
+ var zoom = map.trimmedExtentZoom(extent);
zoomLimits = zoomLimits || [context.minEditableZoom(), 20];
map.centerZoom(extent.center(), Math.min(Math.max(zoom, zoomLimits[0]), zoomLimits[1]));
};
}
};
- map.trimmedExtent = function() {
- var headerY = 60, footerY = 30, pad = 10;
- return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
- projection.invert([dimensions[0] - pad, headerY + pad]));
+ map.trimmedExtent = function(_) {
+ if (!arguments.length) {
+ var headerY = 60, footerY = 30, pad = 10;
+ return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
+ projection.invert([dimensions[0] - pad, headerY + pad]));
+ } else {
+ var extent = iD.geo.Extent(_);
+ map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
+ }
};
- map.extentZoom = function(_) {
- var extent = iD.geo.Extent(_),
- tl = projection([extent[0][0], extent[1][1]]),
+ function calcZoom(extent, dim) {
+ var tl = projection([extent[0][0], extent[1][1]]),
br = projection([extent[1][0], extent[0][1]]);
// Calculate maximum zoom that fits extent
- var hFactor = (br[0] - tl[0]) / dimensions[0],
- vFactor = (br[1] - tl[1]) / dimensions[1],
+ var hFactor = (br[0] - tl[0]) / dim[0],
+ vFactor = (br[1] - tl[1]) / dim[1],
hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2,
vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2,
newZoom = map.zoom() - Math.max(hZoomDiff, vZoomDiff);
return newZoom;
+ }
+
+ map.extentZoom = function(_) {
+ return calcZoom(iD.geo.Extent(_), dimensions);
+ };
+
+ map.trimmedExtentZoom = function(_) {
+ var trimY = 120, trimX = 40,
+ trimmed = [dimensions[0] - trimX, dimensions[1] - trimY];
+ return calcZoom(iD.geo.Extent(_), trimmed);
};
map.editable = function() {
i = 0,
offset = dt,
segments = [],
- viewport = iD.geo.Extent(projection.clipExtent()),
+ clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
coordinates = graph.childNodes(entity).map(function(n) {
return n.loc;
});
d3.geo.stream({
type: 'LineString',
coordinates: coordinates
- }, projection.stream({
+ }, projection.stream(clip({
lineStart: function() {},
lineEnd: function() {
a = null;
b = [x, y];
if (a) {
- var extent = iD.geo.Extent(a).extend(b),
- span = iD.geo.euclideanDistance(a, b) - offset;
+ var span = iD.geo.euclideanDistance(a, b) - offset;
- if (extent.intersects(viewport) && span >= 0) {
+ if (span >= 0) {
var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
dx = dt * Math.cos(angle),
dy = dt * Math.sin(angle),
a = b;
}
- }));
+ })));
return segments;
};
return function drawPoints(surface, entities, filter) {
var graph = context.graph(),
- points = _.filter(entities, function(e) { return e.geometry(graph) === 'point'; });
+ wireframe = surface.classed('fill-wireframe'),
+ points = wireframe ? [] : _.filter(entities, function(e) {
+ return e.geometry(graph) === 'point';
+ });
points.sort(sortY);
'leisure', 'place'
],
secondary = [
- 'oneway', 'bridge', 'tunnel', 'construction', 'embankment', 'cutting'
+ 'oneway', 'bridge', 'tunnel', 'construction', 'embankment', 'cutting', 'barrier'
],
tagClassRe = /^tag-/,
tags = function(entity) { return entity.tags; };
function drawVertices(surface, graph, entities, filter, extent, zoom) {
var selected = siblingAndChildVertices(context.selectedIDs(), graph, extent),
+ wireframe = surface.classed('fill-wireframe'),
vertices = [];
for (var i = 0; i < entities.length; i++) {
- var entity = entities[i];
+ var entity = entities[i],
+ geometry = entity.geometry(graph);
+
+ if (wireframe && geometry === 'point') {
+ vertices.push(entity);
+ continue;
+ }
- if (entity.geometry(graph) !== 'vertex')
+ if (geometry !== 'vertex')
continue;
if (entity.id in selected ||
.attr('id', 'map')
.call(map);
+ content.append('div')
+ .attr('class', 'map-in-map')
+ .style('display', 'none')
+ .call(iD.ui.MapInMap(context));
+
+ content.append('div')
+ .attr('class', 'infobox fillD2')
+ .style('display', 'none')
+ .call(iD.ui.Info(context));
+
bar.append('div')
.attr('class', 'spacer col4');
.attr('id', 'footer')
.attr('class', 'fillD');
+ footer.append('div')
+ .attr('class', 'api-status')
+ .call(iD.ui.Status(context));
+
footer.append('div')
.attr('id', 'scale-block')
.call(iD.ui.Scale(context));
.attr('tabindex', -1)
.call(iD.ui.Contributors(context));
- footer.append('div')
- .attr('class', 'api-status')
- .call(iD.ui.Status(context));
-
window.onbeforeunload = function() {
return context.save();
};
['bottom', [0, 1]]],
opacityDefault = (context.storage('background-opacity') !== null) ?
(+context.storage('background-opacity')) : 0.5,
- customTemplate = '';
+ customTemplate = context.storage('background-custom-template') || '';
// Can be 0 from <1.3.0 use or due to issue #1923.
if (opacityDefault === 0) opacityDefault = 0.5;
function setCustom(template) {
context.background().baseLayerSource(iD.BackgroundSource.Custom(template));
selectLayer();
+ context.storage('background-custom-template', template);
}
function clickSetOverlay(d) {
.placement('left'))
.append('div')
.attr('class', 'opacity')
- .style('opacity', String);
+ .style('opacity', function(d) { return 1.25 - d; });
var backgroundList = content.append('ul')
.attr('class', 'layer-list');
summary = context.history().difference().summary();
function zoomToEntity(change) {
+
var entity = change.entity;
if (change.changeType !== 'deleted' &&
context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
// Confirm Button
var saveButton = saveSection.append('button')
- .attr('class', 'action col4 button')
+ .attr('class', 'action col6 button')
.on('click.save', function() {
event.save({
comment: commentField.node().value
section.append('div')
.attr('class', 'modal-section message-text');
- var buttonwrap = section.append('div')
+ var buttons = section.append('div')
.attr('class', 'modal-section buttons cf');
- buttonwrap.append('button')
- .attr('class', 'col2 action')
- .on('click.confirm', function() {
- modal.remove();
- })
- .text(t('confirm.okay'));
+ modal.okButton = function() {
+ buttons
+ .append('button')
+ .attr('class', 'action col4')
+ .on('click.confirm', function() {
+ modal.remove();
+ })
+ .text(t('confirm.okay'));
+
+ return modal;
+ };
return modal;
};
+iD.ui.Conflicts = function(context) {
+ var dispatch = d3.dispatch('download', 'cancel', 'save'),
+ list;
+
+ function conflicts(selection) {
+ var header = selection
+ .append('div')
+ .attr('class', 'header fillL');
+
+ header
+ .append('button')
+ .attr('class', 'fr')
+ .on('click', function() { dispatch.cancel(); })
+ .append('span')
+ .attr('class', 'icon close');
+
+ header
+ .append('h3')
+ .text(t('save.conflict.header'));
+
+ var body = selection
+ .append('div')
+ .attr('class', 'body fillL');
+
+ body
+ .append('div')
+ .attr('class', 'conflicts-help')
+ .text(t('save.conflict.help'))
+ .append('a')
+ .attr('class', 'conflicts-download')
+ .text(t('save.conflict.download_changes'))
+ .on('click.download', function() { dispatch.download(); });
+
+ body
+ .append('div')
+ .attr('class', 'conflict-container fillL3')
+ .call(showConflict, 0);
+
+ body
+ .append('div')
+ .attr('class', 'conflicts-done')
+ .attr('opacity', 0)
+ .style('display', 'none')
+ .text(t('save.conflict.done'));
+
+ var buttons = body
+ .append('div')
+ .attr('class','buttons col12 joined conflicts-buttons');
+
+ buttons
+ .append('button')
+ .attr('disabled', list.length > 1)
+ .attr('class', 'action conflicts-button col6')
+ .text(t('save.title'))
+ .on('click.try_again', function() { dispatch.save(); });
+
+ buttons
+ .append('button')
+ .attr('class', 'secondary-action conflicts-button col6')
+ .text(t('confirm.cancel'))
+ .on('click.cancel', function() { dispatch.cancel(); });
+ }
+
+
+ function showConflict(selection, index) {
+ if (index < 0 || index >= list.length) return;
+
+ var parent = d3.select(selection.node().parentElement);
+
+ // enable save button if this is the last conflict being reviewed..
+ if (index === list.length - 1) {
+ window.setTimeout(function() {
+ parent.select('.conflicts-button')
+ .attr('disabled', null);
+
+ parent.select('.conflicts-done')
+ .transition()
+ .attr('opacity', 1)
+ .style('display', 'block');
+ }, 250);
+ }
+
+ var item = selection
+ .selectAll('.conflict')
+ .data([list[index]]);
+
+ var enter = item.enter()
+ .append('div')
+ .attr('class', 'conflict');
+
+ enter
+ .append('h4')
+ .attr('class', 'conflict-count')
+ .text(t('save.conflict.count', { num: index + 1, total: list.length }));
+
+ enter
+ .append('a')
+ .attr('class', 'conflict-description')
+ .attr('href', '#')
+ .text(function(d) { return d.name; })
+ .on('click', function(d) {
+ zoomToEntity(d.id);
+ d3.event.preventDefault();
+ });
+
+ var details = enter
+ .append('div')
+ .attr('class', 'conflict-detail-container');
+
+ details
+ .append('ul')
+ .attr('class', 'conflict-detail-list')
+ .selectAll('li')
+ .data(function(d) { return d.details || []; })
+ .enter()
+ .append('li')
+ .attr('class', 'conflict-detail-item')
+ .html(function(d) { return d; });
+
+ details
+ .append('div')
+ .attr('class', 'conflict-choices')
+ .call(addChoices);
+
+ details
+ .append('div')
+ .attr('class', 'conflict-nav-buttons joined cf')
+ .selectAll('button')
+ .data(['previous', 'next'])
+ .enter()
+ .append('button')
+ .text(function(d) { return t('save.conflict.' + d); })
+ .attr('class', 'conflict-nav-button action col6')
+ .attr('disabled', function(d, i) {
+ return (i === 0 && index === 0) ||
+ (i === 1 && index === list.length - 1) || null;
+ })
+ .on('click', function(d, i) {
+ var container = parent.select('.conflict-container'),
+ sign = (i === 0 ? -1 : 1);
+
+ container
+ .selectAll('.conflict')
+ .remove();
+
+ container
+ .call(showConflict, index + sign);
+
+ d3.event.preventDefault();
+ });
+
+ item.exit()
+ .remove();
+
+ }
+
+ function addChoices(selection) {
+ var choices = selection
+ .append('ul')
+ .attr('class', 'layer-list')
+ .selectAll('li')
+ .data(function(d) { return d.choices || []; });
+
+ var enter = choices.enter()
+ .append('li')
+ .attr('class', 'layer');
+
+ var label = enter
+ .append('label');
+
+ label
+ .append('input')
+ .attr('type', 'radio')
+ .attr('name', function(d) { return d.id; })
+ .on('change', function(d, i) {
+ var ul = this.parentElement.parentElement.parentElement;
+ ul.__data__.chosen = i;
+ choose(ul, d);
+ });
+
+ label
+ .append('span')
+ .text(function(d) { return d.text; });
+
+ choices
+ .each(function(d, i) {
+ var ul = this.parentElement;
+ if (ul.__data__.chosen === i) choose(ul, d);
+ });
+ }
+
+ function choose(ul, datum) {
+ if (d3.event) d3.event.preventDefault();
+
+ d3.select(ul)
+ .selectAll('li')
+ .classed('active', function(d) { return d === datum; })
+ .selectAll('input')
+ .property('checked', function(d) { return d === datum; });
+
+ var extent = iD.geo.Extent(),
+ entity;
+
+ entity = context.graph().hasEntity(datum.id);
+ if (entity) extent._extend(entity.extent(context.graph()));
+
+ datum.action();
+
+ entity = context.graph().hasEntity(datum.id);
+ if (entity) extent._extend(entity.extent(context.graph()));
+
+ zoomToEntity(datum.id, extent);
+ }
+
+ function zoomToEntity(id, extent) {
+ context.surface().selectAll('.hover')
+ .classed('hover', false);
+
+ var entity = context.graph().hasEntity(id);
+ if (entity) {
+ if (extent) {
+ context.map().trimmedExtent(extent);
+ } else {
+ context.map().zoomTo(entity);
+ }
+ context.surface().selectAll(
+ iD.util.entityOrMemberSelector([entity.id], context.graph()))
+ .classed('hover', true);
+ }
+ }
+
+
+ // The conflict list should be an array of objects like:
+ // {
+ // id: id,
+ // name: entityName(local),
+ // details: merge.conflicts(),
+ // chosen: 1,
+ // choices: [
+ // choice(id, keepMine, forceLocal),
+ // choice(id, keepTheirs, forceRemote)
+ // ]
+ // }
+ conflicts.list = function(_) {
+ if (!arguments.length) return list;
+ list = _;
+ return conflicts;
+ };
+
+ return d3.rebind(conflicts, dispatch, 'on');
+};
iD.ui.Contributors = function(context) {
function update(selection) {
var users = {},
return function(selection) {
update(selection);
- context.connection().on('load.contributors', function() {
+ context.connection().on('loaded.contributors', function() {
update(selection);
});
}
function clean(o) {
+
+ function cleanVal(k, v) {
+ function keepSpaces(k) {
+ var whitelist = ['opening_hours', 'service_times', 'collection_times',
+ 'operating_times', 'smoking_hours', 'happy_hours'];
+ return _.any(whitelist, function(s) { return k.indexOf(s) !== -1; });
+ }
+
+ var blacklist = ['description', 'note', 'fixme'];
+ if (_.any(blacklist, function(s) { return k.indexOf(s) !== -1; })) return v;
+
+ var cleaned = v.split(';')
+ .map(function(s) { return s.trim(); })
+ .join(keepSpaces(k) ? '; ' : ';');
+
+ // The code below is not intended to validate websites and emails.
+ // It is only intended to prevent obvious copy-paste errors. (#2323)
+
+ // clean website-like tags
+ if (k.indexOf('website') !== -1 || cleaned.indexOf('http') === 0) {
+ cleaned = cleaned
+ .replace(/[\u200B-\u200F\uFEFF]/g, '') // strip LRM and other zero width chars
+ .replace(/[^\w\+\-\.\/\?\[\]\(\)~!@#$%&*',:;=]/g, encodeURIComponent);
+
+ // clean email-like tags
+ } else if (k.indexOf('email') !== -1) {
+ cleaned = cleaned
+ .replace(/[\u200B-\u200F\uFEFF]/g, '') // strip LRM and other zero width chars
+ .replace(/[^\w\+\-\.\/\?\|~!@#$%^&*'`{};=]/g, ''); // note: ';' allowed as OSM delimiter
+ }
+
+ return cleaned;
+ }
+
var out = {}, k, v;
- /*jshint -W083 */
for (k in o) {
if (k && (v = o[k]) !== undefined) {
- out[k] = v.split(';').map(function(s) { return s.trim(); }).join(';');
+ out[k] = cleanVal(k, v);
}
}
- /*jshint +W083 */
return out;
}
else if (d.entity) {
context.enter(iD.modes.Select(context, [d.entity.id]));
} else {
- context.loadEntity(d.id);
+ context.zoomToEntity(d.id);
}
}
function clickHelp(d, i) {
pane.property('scrollTop', 0);
- doctitle.text(d.title);
+ doctitle.html(d.title);
body.html(d.html);
body.selectAll('a')
.attr('target', '_blank');
clickHelp(docs[i - 1], i - 1);
});
prevLink.append('span').attr('class', 'icon back blue');
- prevLink.append('span').text(docs[i - 1].title);
+ prevLink.append('span').html(docs[i - 1].title);
}
if (i < docs.length - 1) {
var nextLink = nav.append('a')
.on('click', function() {
clickHelp(docs[i + 1], i + 1);
});
- nextLink.append('span').text(docs[i + 1].title);
+ nextLink.append('span').html(docs[i + 1].title);
nextLink.append('span').attr('class', 'icon forward blue');
}
}
.enter()
.append('li')
.append('a')
- .text(function(d) { return d.title; })
+ .html(function(d) { return d.title; })
.on('click', clickHelp);
toc.append('li')
return help;
};
+iD.ui.Info = function(context) {
+ var key = iD.ui.cmd('⌘I'),
+ imperial = (iD.detect().locale.toLowerCase() === 'en-us');
+
+ function info(selection) {
+ function radiansToMeters(r) {
+ // using WGS84 authalic radius (6371007.1809 m)
+ return r * 6371007.1809;
+ }
+
+ function steradiansToSqmeters(r) {
+ // http://gis.stackexchange.com/a/124857/40446
+ return r / 12.56637 * 510065621724000;
+ }
+
+ function displayLength(m) {
+ var d = m * (imperial ? 3.28084 : 1),
+ p, unit;
+
+ if (imperial) {
+ if (d >= 5280) {
+ d /= 5280;
+ unit = 'mi';
+ } else {
+ unit = 'ft';
+ }
+ } else {
+ if (d >= 1000) {
+ d /= 1000;
+ unit = 'km';
+ } else {
+ unit = 'm';
+ }
+ }
+
+ // drop unnecessary precision
+ p = d > 1000 ? 0 : d > 100 ? 1 : 2;
+
+ return String(d.toFixed(p)) + ' ' + unit;
+ }
+
+ function displayArea(m2) {
+ var d = m2 * (imperial ? 10.7639111056 : 1),
+ d1, d2, p1, p2, unit1, unit2;
+
+ if (imperial) {
+ if (d >= 6969600) { // > 0.25mi² show mi²
+ d1 = d / 27878400;
+ unit1 = 'mi²';
+ } else {
+ d1 = d;
+ unit1 = 'ft²';
+ }
+
+ if (d > 4356 && d < 43560000) { // 0.1 - 1000 acres
+ d2 = d / 43560;
+ unit2 = 'ac';
+ }
+
+ } else {
+ if (d >= 250000) { // > 0.25km² show km²
+ d1 = d / 1000000;
+ unit1 = 'km²';
+ } else {
+ d1 = d;
+ unit1 = 'm²';
+ }
+
+ if (d > 1000 && d < 10000000) { // 0.1 - 1000 hectares
+ d2 = d / 10000;
+ unit2 = 'ha';
+ }
+ }
+
+ // drop unnecessary precision
+ p1 = d1 > 1000 ? 0 : d1 > 100 ? 1 : 2;
+ p2 = d2 > 1000 ? 0 : d2 > 100 ? 1 : 2;
+
+ return String(d1.toFixed(p1)) + ' ' + unit1 +
+ (d2 ? ' (' + String(d2.toFixed(p2)) + ' ' + unit2 + ')' : '');
+ }
+
+
+ function redraw() {
+ if (hidden()) return;
+
+ var resolver = context.graph(),
+ selected = context.selectedIDs(),
+ singular = selected.length === 1 ? selected[0] : null,
+ extent = iD.geo.Extent(),
+ entity;
+
+ selection.html('');
+ selection.append('h4')
+ .attr('class', 'selection-heading fillD')
+ .text(singular || t('infobox.selected', { n: selected.length }));
+
+ if (!selected.length) return;
+
+ var center;
+ for (var i = 0; i < selected.length; i++) {
+ entity = context.entity(selected[i]);
+ extent._extend(entity.extent(resolver));
+ }
+ center = extent.center();
+
+
+ var list = selection.append('ul');
+
+ // multiple selection, just display extent center..
+ if (!singular) {
+ list.append('li')
+ .text(t('infobox.center') + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
+ return;
+ }
+
+ // single selection, display details..
+ if (!entity) return;
+ var geometry = entity.geometry(resolver);
+
+ if (geometry === 'line' || geometry === 'area') {
+ var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
+ feature = entity.asGeoJSON(resolver),
+ length = radiansToMeters(d3.geo.length(feature)),
+ lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')),
+ centroid = d3.geo.centroid(feature);
+
+ list.append('li')
+ .text(t('infobox.geometry') + ': ' +
+ (closed ? t('infobox.closed') + ' ' : '') + t('geometry.' + geometry) );
+
+ if (closed) {
+ var area = steradiansToSqmeters(entity.area(resolver));
+ list.append('li')
+ .text(t('infobox.area') + ': ' + displayArea(area));
+ }
+
+ list.append('li')
+ .text(lengthLabel + ': ' + displayLength(length));
+
+ list.append('li')
+ .text(t('infobox.centroid') + ': ' + centroid[0].toFixed(5) + ', ' + centroid[1].toFixed(5));
+
+
+ var toggle = imperial ? 'imperial' : 'metric';
+ selection.append('a')
+ .text(t('infobox.' + toggle))
+ .attr('href', '#')
+ .attr('class', 'button')
+ .on('click', function() {
+ d3.event.preventDefault();
+ imperial = !imperial;
+ redraw();
+ });
+
+ } else {
+ var centerLabel = t('infobox.' + (entity.type === 'node' ? 'location' : 'center'));
+
+ list.append('li')
+ .text(t('infobox.geometry') + ': ' + t('geometry.' + geometry));
+
+ list.append('li')
+ .text(centerLabel + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
+ }
+ }
+
+
+ function hidden() {
+ return selection.style('display') === 'none';
+ }
+
+
+ function toggle() {
+ if (d3.event) d3.event.preventDefault();
+
+ if (hidden()) {
+ selection
+ .style('display', 'block')
+ .style('opacity', 0)
+ .transition()
+ .duration(200)
+ .style('opacity', 1);
+
+ redraw();
+
+ } else {
+ selection
+ .style('display', 'block')
+ .style('opacity', 1)
+ .transition()
+ .duration(200)
+ .style('opacity', 0)
+ .each('end', function() {
+ d3.select(this).style('display', 'none');
+ });
+ }
+ }
+
+ context.map()
+ .on('drawn.info', redraw);
+
+ redraw();
+
+ var keybinding = d3.keybinding('info')
+ .on(key, toggle);
+
+ d3.select(document)
+ .call(keybinding);
+ }
+
+ return info;
+};
iD.ui.Inspector = function(context) {
var presetList = iD.ui.PresetList(context),
entityEditor = iD.ui.EntityEditor(context),
function map_data(selection) {
function showsFeature(d) {
- return autoHiddenFeature(d) ? null : context.features().enabled(d);
+ return context.features().enabled(d);
}
function autoHiddenFeature(d) {
items
.classed('active', active)
.selectAll('input')
- .property('checked', active);
-
- if (name === 'feature') {
- items
- .selectAll('input')
- .property('indeterminate', autoHiddenFeature);
- }
+ .property('checked', active)
+ .property('indeterminate', function(d) {
+ return (name === 'feature' && autoHiddenFeature(d));
+ });
//exit
items.exit()
d3.event.stopPropagation();
}
setFill((fillSelected === 'wireframe' ? fillDefault : 'wireframe'));
+ context.map().pan([0,0]); // trigger a redraw
}
function setVisible(show) {
context.features()
.on('change.map_data-update', update);
- update();
setFill(fillDefault);
var keybinding = d3.keybinding('features')
return map_data;
};
+iD.ui.MapInMap = function(context) {
+ var key = '/';
+
+ function map_in_map(selection) {
+ var backgroundLayer = iD.TileLayer(),
+ overlayLayer = iD.TileLayer(),
+ projection = iD.geo.RawMercator(),
+ zoom = d3.behavior.zoom()
+ .scaleExtent([ztok(0.5), ztok(24)])
+ .on('zoom', zoomPan),
+ transformed = false,
+ panning = false,
+ zDiff = 6, // by default, minimap renders at (main zoom - 6)
+ tStart, tLast, tCurr, kLast, kCurr, tiles, svg, timeoutId;
+
+ function ztok(z) { return 256 * Math.pow(2, z); }
+ function ktoz(k) { return Math.log(k) / Math.LN2 - 8; }
+
+
+ function startMouse() {
+ context.surface().on('mouseup.map-in-map-outside', endMouse);
+ context.container().on('mouseup.map-in-map-outside', endMouse);
+
+ tStart = tLast = tCurr = projection.translate();
+ panning = true;
+ }
+
+
+ function zoomPan() {
+ var e = d3.event.sourceEvent,
+ t = d3.event.translate,
+ k = d3.event.scale,
+ zMain = ktoz(context.projection.scale() * 2 * Math.PI),
+ zMini = ktoz(k);
+
+ // restrict minimap zoom to < (main zoom - 3)
+ if (zMini > zMain - 3) {
+ zMini = zMain - 3;
+ zoom.scale(kCurr).translate(tCurr); // restore last good values
+ return;
+ }
+
+ tCurr = t;
+ kCurr = k;
+ zDiff = zMain - zMini;
+
+ var scale = kCurr / kLast,
+ tX = Math.round((tCurr[0] / scale - tLast[0]) * scale),
+ tY = Math.round((tCurr[1] / scale - tLast[1]) * scale);
+
+ iD.util.setTransform(tiles, tX, tY, scale);
+ iD.util.setTransform(svg, 0, 0, scale);
+ transformed = true;
+
+ queueRedraw();
+
+ e.preventDefault();
+ e.stopPropagation();
+ }
+
+
+ function endMouse() {
+ context.surface().on('mouseup.map-in-map-outside', null);
+ context.container().on('mouseup.map-in-map-outside', null);
+
+ updateProjection();
+ panning = false;
+
+ if (tCurr[0] !== tStart[0] && tCurr[1] !== tStart[1]) {
+ var dMini = selection.dimensions(),
+ cMini = [ dMini[0] / 2, dMini[1] / 2 ];
+
+ context.map().center(projection.invert(cMini));
+ }
+ }
+
+
+ function updateProjection() {
+ var loc = context.map().center(),
+ dMini = selection.dimensions(),
+ cMini = [ dMini[0] / 2, dMini[1] / 2 ],
+ tMain = context.projection.translate(),
+ kMain = context.projection.scale(),
+ zMain = ktoz(kMain * 2 * Math.PI),
+ zMini = Math.max(zMain - zDiff, 0.5),
+ kMini = ztok(zMini);
+
+ projection
+ .translate(tMain)
+ .scale(kMini / (2 * Math.PI));
+
+ var s = projection(loc),
+ mouse = panning ? [ tCurr[0] - tStart[0], tCurr[1] - tStart[1] ] : [0, 0],
+ tMini = [
+ cMini[0] - s[0] + tMain[0] + mouse[0],
+ cMini[1] - s[1] + tMain[1] + mouse[1]
+ ];
+
+ projection
+ .translate(tMini)
+ .clipExtent([[0, 0], dMini]);
+
+ zoom
+ .center(cMini)
+ .translate(tMini)
+ .scale(kMini);
+
+ tLast = tCurr = tMini;
+ kLast = kCurr = kMini;
+
+ if (transformed) {
+ iD.util.setTransform(tiles, 0, 0);
+ iD.util.setTransform(svg, 0, 0);
+ transformed = false;
+ }
+ }
+
+
+ function redraw() {
+ if (hidden()) return;
+
+ updateProjection();
+
+ var dMini = selection.dimensions(),
+ zMini = ktoz(projection.scale() * 2 * Math.PI);
+
+ // setup tile container
+ tiles = selection
+ .selectAll('.map-in-map-tiles')
+ .data([0]);
+
+ tiles
+ .enter()
+ .append('div')
+ .attr('class', 'map-in-map-tiles');
+
+
+ // redraw background
+ backgroundLayer
+ .source(context.background().baseLayerSource())
+ .projection(projection)
+ .dimensions(dMini);
+
+ var background = tiles
+ .selectAll('.map-in-map-background')
+ .data([0]);
+
+ background.enter()
+ .append('div')
+ .attr('class', 'map-in-map-background');
+
+ background
+ .call(backgroundLayer);
+
+ // redraw overlay
+ var overlaySources = context.background().overlayLayerSources(),
+ hasOverlay = false;
+
+ for (var i = 0; i < overlaySources.length; i++) {
+ if (overlaySources[i].validZoom(zMini)) {
+ overlayLayer
+ .source(overlaySources[i])
+ .projection(projection)
+ .dimensions(dMini);
+
+ hasOverlay = true;
+ break;
+ }
+ }
+
+ var overlay = tiles
+ .selectAll('.map-in-map-overlay')
+ .data(hasOverlay ? [0] : []);
+
+ overlay.enter()
+ .append('div')
+ .attr('class', 'map-in-map-overlay');
+
+ overlay.exit()
+ .remove();
+
+ if (hasOverlay) {
+ overlay
+ .call(overlayLayer);
+ }
+
+ // redraw bounding box
+ if (!panning) {
+ var getPath = d3.geo.path().projection(projection),
+ bbox = { type: 'Polygon', coordinates: [context.map().extent().polygon()] };
+
+ svg = selection.selectAll('.map-in-map-svg')
+ .data([0]);
+
+ svg.enter()
+ .append('svg')
+ .attr('class', 'map-in-map-svg');
+
+ var path = svg.selectAll('.map-in-map-bbox')
+ .data([bbox]);
+
+ path.enter()
+ .append('path')
+ .attr('class', 'map-in-map-bbox');
+
+ path
+ .attr('d', getPath)
+ .classed('thick', function(d) { return getPath.area(d) < 30; });
+ }
+ }
+
+
+ function queueRedraw() {
+ clearTimeout(timeoutId);
+ timeoutId = setTimeout(function() { redraw(); }, 300);
+ }
+
+
+ function hidden() {
+ return selection.style('display') === 'none';
+ }
+
+
+ function toggle() {
+ if (d3.event) d3.event.preventDefault();
+
+ if (hidden()) {
+ selection
+ .style('display', 'block')
+ .style('opacity', 0)
+ .transition()
+ .duration(200)
+ .style('opacity', 1);
+
+ redraw();
+
+ } else {
+ selection
+ .style('display', 'block')
+ .style('opacity', 1)
+ .transition()
+ .duration(200)
+ .style('opacity', 0)
+ .each('end', function() {
+ d3.select(this).style('display', 'none');
+ });
+ }
+ }
+
+
+ selection
+ .on('mousedown.map-in-map', startMouse)
+ .on('mouseup.map-in-map', endMouse);
+
+ selection
+ .call(zoom)
+ .on('dblclick.zoom', null);
+
+ context.map()
+ .on('drawn.map-in-map', function(drawn) {
+ if (drawn.full === true) redraw();
+ });
+
+ redraw();
+
+ var keybinding = d3.keybinding('map-in-map')
+ .on(key, toggle);
+
+ d3.select(document)
+ .call(keybinding);
+ }
+
+ return map_in_map;
+};
iD.ui.modal = function(selection, blocking) {
var previous = selection.select('div.modal');
if (animate) {
shaded.transition().style('opacity', 1);
- modal
- .style('top','0px')
- .transition()
- .duration(200)
- .style('top','40px');
} else {
shaded.style('opacity', 1);
}
-
return shaded;
};
iD.ui.Modes = function(context) {
};
iD.ui.Scale = function(context) {
var projection = context.projection,
- imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
maxLength = 180,
tickHeight = 8;
function scaleDefs(loc1, loc2) {
var lat = (loc2[1] + loc1[1]) / 2,
+ imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
conversion = (imperial ? 3.28084 : 1),
dist = iD.geo.lonToMeters(loc2[0] - loc1[0], lat) * conversion,
scale = { dist: 0, px: 0, text: '' },
};
iD.ui.SelectionList = function(context, selectedIDs) {
+ function selectEntity(entity) {
+ context.enter(iD.modes.Select(context, [entity.id]).suppressMenu(true));
+ }
+
+
function selectionList(selection) {
selection.classed('selection-list-pane', true);
var enter = items.enter().append('button')
.attr('class', 'feature-list-item')
- .on('click', function(entity) {
- context.enter(iD.modes.Select(context, [entity.id]));
- });
+ .on('click', selectEntity);
// Enter
context.connection()
.switch(live ? keys[1] : keys[0]);
+ context.enter(iD.modes.Browse(context));
context.flush();
d3.select(this)
// (see `iD.Way#isArea()`). In other words, the keys of L form the whitelist,
// and the subkeys form the blacklist.
all.areaKeys = function() {
- var areaKeys = {};
+ var areaKeys = {},
+ ignore = ['barrier', 'highway', 'footway', 'railway', 'type'],
+ presets = _.reject(all.collection, 'suggestion');
+
+ // whitelist
+ presets.forEach(function(d) {
+ for (var key in d.tags) break;
+ if (!key) return;
+ if (ignore.indexOf(key) !== -1) return;
- all.collection.forEach(function(d) {
- if (d.suggestion) return;
+ if (d.geometry.indexOf('area') !== -1) {
+ areaKeys[key] = areaKeys[key] || {};
+ }
+ });
+ // blacklist
+ presets.forEach(function(d) {
for (var key in d.tags) break;
if (!key) return;
- var value = d.tags[key];
+ if (ignore.indexOf(key) !== -1) return;
- if (['highway', 'footway', 'railway', 'type'].indexOf(key) === -1) {
- if (d.geometry.indexOf('area') >= 0) {
- areaKeys[key] = areaKeys[key] || {};
- } else if (key in areaKeys && value !== '*') {
- areaKeys[key][value] = true;
- }
+ var value = d.tags[key];
+ if (d.geometry.indexOf('area') === -1 && key in areaKeys && value !== '*') {
+ areaKeys[key][value] = true;
}
});
preset.id = id;
preset.fields = (preset.fields || []).map(getFields);
+ preset.geometry = (preset.geometry || []);
function getFields(f) {
return fields[f];
}
}
+ delete tags.area;
return tags;
};
}
}
- // Add area=yes if necessary
- for (k in applyTags) {
- if (geometry === 'area' && !(k in iD.areaKeys))
+ // Add area=yes if necessary.
+ // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
+ // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
+ // 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
+ if (geometry === 'area') {
+ var needsAreaTag = true;
+ if (preset.geometry.indexOf('line') === -1) {
+ for (k in applyTags) {
+ if (k in iD.areaKeys) {
+ needsAreaTag = false;
+ break;
+ }
+ }
+ }
+ if (needsAreaTag) {
tags.area = 'yes';
- break;
+ }
}
for (var f in preset.fields) {
},
"multipolygon": {
"relation": [
- 140,
+ 141,
25
]
},
},
"locales": [
"af",
- "sq",
- "sq-AL",
"ar",
"ar-AA",
"hy",
"ca",
"zh",
"zh-CN",
- "zh-CN.GB2312",
- "gan",
"zh-HK",
"zh-TW",
"yue",
"cs",
"da",
"nl",
- "en-DE",
"en-GB",
"eo",
"et",
"fr",
"gl",
"de",
- "de-DE",
"el",
"hi-IN",
"hu",
"it",
"ja",
"kn",
- "km",
- "km-KH",
"ko",
"ko-KR",
"lv",
"lt",
"no",
- "nn",
"fa",
"pl",
"pt",
"pt-BR",
"ro-RO",
"ru",
- "ru-RU",
"sc",
"sr",
- "sr-RS",
"si",
"sk",
"sl",
"multiple": "Deleted {n} objects."
},
"incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
+ "part_of_relation": "This feature can't be deleted because it's part of a larger relation. You must remove it from the relation first.",
"connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
},
"add_member": {
"commit": {
"title": "Save Changes",
"description_placeholder": "Brief description of your contributions",
- "message_label": "Commit message",
+ "message_label": "Changeset comment",
"upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
"upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
"save": "Save",
"list": "Edits by {users}",
"truncated_list": "Edits by {users} and {count} others"
},
+ "infobox": {
+ "selected": "{n} selected",
+ "geometry": "Geometry",
+ "closed": "closed",
+ "center": "Center",
+ "perimeter": "Perimeter",
+ "length": "Length",
+ "area": "Area",
+ "centroid": "Centroid",
+ "location": "Location",
+ "metric": "Metric",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "point",
+ "vertex": "vertex",
+ "line": "line",
+ "area": "area",
+ "relation": "relation"
+ },
"geocoder": {
"search": "Search worldwide...",
"no_results_visible": "No results in visible map area",
"title": "Save",
"help": "Save changes to OpenStreetMap, making them visible to other users.",
"no_changes": "No changes to save.",
- "error": "An error occurred while trying to save",
+ "error": "Errors occurred while trying to save",
+ "status_code": "Server returned status code {code}",
"unknown_error_details": "Please ensure you are connected to the internet.",
"uploading": "Uploading changes to OpenStreetMap.",
- "unsaved_changes": "You have unsaved changes"
+ "unsaved_changes": "You have unsaved changes",
+ "conflict": {
+ "header": "Resolve conflicting edits",
+ "count": "Conflict {num} of {total}",
+ "previous": "< Previous",
+ "next": "Next >",
+ "keep_local": "Keep mine",
+ "keep_remote": "Use theirs",
+ "restore": "Restore",
+ "delete": "Leave Deleted",
+ "download_changes": "Or download your changes.",
+ "done": "All conflicts resolved!",
+ "help": "Another user changed some of the same map features you changed.\nClick on each item below for more details about the conflict, and choose whether to keep\nyour changes or the other user's changes.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "This object has been deleted by {user}.",
+ "location": "This object was moved by both you and {user}.",
+ "nodelist": "Nodes were changed by both you and {user}.",
+ "memberlist": "Relation members were changed by both you and {user}.",
+ "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Edited OSM!",
"help_html": "Your changes should appear in the \"Standard\" layer in a few minutes. Other layers, and certain features, may take longer\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
},
"confirm": {
- "okay": "Okay"
+ "okay": "Okay",
+ "cancel": "Cancel"
},
"splash": {
"welcome": "Welcome to the iD OpenStreetMap editor",
},
"help": {
"title": "Help",
- "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need a\n[free OpenStreetMap account](https://www.openstreetmap.org/user/new).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click\non it on the map. This will highlight the selected feature, open a panel with\ndetails about it, and show a menu of things you can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a rectangle.\nThis will draw a box and select all the points within it.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Save' again to post the changes\nto [OpenStreetMap.org](http://www.openstreetmap.org/), where they are visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n",
"roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a small tools menu on the map and a sidebar showing more information\nabout the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also click the 'Move' tool or press the `M` shortcut key to move the entire road at\none time, and then click again to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n",
"gps": "# GPS\n\nGPS data is the most trusted source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n",
"construction": {
"label": "Type"
},
+ "content": {
+ "label": "Contents"
+ },
"country": {
"label": "Country"
},
"description": {
"label": "Description"
},
+ "drive_through": {
+ "label": "Drive-Through"
+ },
"electrified": {
"label": "Electrification",
"placeholder": "Contact Line, Electrified Rail...",
"incline": {
"label": "Incline"
},
+ "incline_steps": {
+ "label": "Incline",
+ "options": {
+ "up": "Up",
+ "down": "Down"
+ }
+ },
"information": {
"label": "Type"
},
"power": {
"label": "Type"
},
+ "power_supply": {
+ "label": "Power Supply"
+ },
"railway": {
"label": "Type"
},
"difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
}
},
+ "sanitary_dump_station": {
+ "label": "Toilet Disposal"
+ },
"seasonal": {
"label": "Seasonal"
},
"service": {
"label": "Type"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Chain Tool",
"options": {
"undefined": "Assumed to be No",
"no": "No"
}
},
+ "service_rail": {
+ "label": "Service Type",
+ "options": {
+ "spur": "Spur",
+ "yard": "Yard",
+ "siding": "Siding",
+ "crossover": "Crossover"
+ }
+ },
"shelter": {
"label": "Shelter"
},
"water": {
"label": "Type"
},
+ "water_point": {
+ "label": "Water Point"
+ },
"waterway": {
"label": "Type"
},
"name": "Bicycle Repair Station",
"terms": "bike"
},
+ "amenity/biergarten": {
+ "name": "Beer Garden",
+ "terms": "beer,bier,booze"
+ },
"amenity/boat_rental": {
"name": "Boat Rental",
"terms": ""
"name": "Restaurant",
"terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
},
+ "amenity/sanitary_dump_station": {
+ "name": "RV Toilet Disposal",
+ "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
+ },
"amenity/school": {
"name": "School Grounds",
"terms": "academy,elementary school,middle school,high school"
"name": "Lighthouse",
"terms": ""
},
+ "man_made/mast": {
+ "name": "Radio Mast",
+ "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
+ },
"man_made/observation": {
"name": "Observation Tower",
"terms": "lookout tower,fire tower"
},
+ "man_made/petroleum_well": {
+ "name": "Oil Well",
+ "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
+ },
"man_made/pier": {
"name": "Pier",
"terms": ""
"name": "Pipeline",
"terms": ""
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "grain,corn,wheat"
+ },
+ "man_made/storage_tank": {
+ "name": "Storage Tank",
+ "terms": "water,oil,gas,petrol"
+ },
"man_made/survey_point": {
"name": "Survey Point",
"terms": ""
"name": "City",
"terms": ""
},
+ "place/farm": {
+ "name": "Farm",
+ "terms": ""
+ },
"place/hamlet": {
"name": "Hamlet",
"terms": ""
"name": "Relation",
"terms": ""
},
+ "roundabout": {
+ "name": "Roundabout",
+ "terms": ""
+ },
"route/ferry": {
"name": "Ferry Route",
"terms": ""
},
"tourism/camp_site": {
"name": "Camp Site",
- "terms": ""
+ "terms": "Tent"
},
"tourism/caravan_site": {
"name": "RV Park",
- "terms": ""
+ "terms": "Motor Home,Camper"
},
"tourism/chalet": {
"name": "Chalet",
"name": "Drain",
"terms": ""
},
+ "waterway/fuel": {
+ "name": "Marine Fuel Station",
+ "terms": "petrol,gas,diesel,boat"
+ },
"waterway/river": {
"name": "River",
"terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
"name": "Riverbank",
"terms": ""
},
+ "waterway/sanitary_dump_station": {
+ "name": "Marine Toilet Disposal",
+ "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
+ },
"waterway/stream": {
"name": "Stream",
"terms": "beck,branch,brook,burn,course,creek,current,drift,flood,flow,freshet,race,rill,rindle,rivulet,run,runnel,rush,spate,spritz,surge,tide,torrent,tributary,watercourse"
"ENEOS": {
"count": 736
},
- "Stacja paliw": {
- "count": 94
- },
"Bharat Petroleum": {
"count": 64
},
}
},
"Taco Bell": {
- "count": 1423
+ "count": 1423,
+ "tags": {
+ "cuisine": "mexican"
+ }
},
"Pizza Nova": {
"count": 63
"Mr. Sub": {
"count": 103
},
- "Kebab": {
- "count": 182
- },
"Макдоналдс": {
"count": 324,
"tags": {
"Asia Imbiss": {
"count": 111
},
- "Imbiss": {
- "count": 199
- },
"Chipotle": {
"count": 290,
"tags": {
}
},
"Panda Express": {
- "count": 238
+ "count": 238,
+ "tags": {
+ "cuisine": "chinese"
+ }
},
"Whataburger": {
"count": 364
},
"restaurant": {
"Pizza Hut": {
- "count": 1180
+ "count": 1180,
+ "tags": {
+ "cuisine": "pizza"
+ }
},
"Little Chef": {
"count": 64
"Hirschen": {
"count": 79
},
- "Papa John's": {
- "count": 67,
- "tags": {
- "cuisine": "pizza"
- }
- },
"Denny's": {
"count": 450
},
"ジョナサン": {
"count": 59
},
- "Arby's": {
- "count": 51
- },
"Longhorn Steakhouse": {
"count": 66
}
"Security Bank": {
"count": 78
},
- "Millenium Bank": {
+ "Millenium": {
"count": 60
},
"Bankia": {
"Second Cup": {
"count": 193
},
- "Eisdiele": {
- "count": 73
- },
"Dunkin Donuts": {
"count": 428,
"tags": {
"count": 547
},
"Lidl": {
- "count": 6208
+ "count": 7130
},
- "EDEKA": {
- "count": 506
+ "Edeka": {
+ "count": 2293
},
"Coles": {
"count": 400
"count": 315
},
"Coop": {
- "count": 1906
+ "count": 2100
},
"Tesco": {
"count": 1297
"Netto": {
"count": 4379
},
- "REWE": {
- "count": 1474
- },
"Rewe": {
- "count": 1171
+ "count": 2645
},
"Aldi Süd": {
"count": 594
"Kiwi": {
"count": 167
},
- "Edeka": {
- "count": 1787
- },
"Pick n Pay": {
"count": 241
},
"count": 258
},
"Spar": {
- "count": 2100
+ "count": 2386
},
"Hofer": {
"count": 442
"M-Preis": {
"count": 76
},
- "LIDL": {
- "count": 922
- },
"tegut": {
"count": 210
},
"Hoogvliet": {
"count": 53
},
- "COOP": {
- "count": 194
- },
"Food Basics": {
"count": 75
},
"count": 80
},
"Whole Foods": {
- "count": 210
+ "count": 210,
+ "tags": {
+ "shop": "supermarket"
+ }
},
"Pam": {
"count": 56
"Unimarc": {
"count": 177
},
- "Co-operative Food": {
- "count": 59
+ "The Co-operative Food": {
+ "count": 190
},
"Santa Isabel": {
"count": 128
"Carrefour Contact": {
"count": 83
},
- "SPAR": {
- "count": 286
- },
"No Frills": {
"count": 105
},
"Biedronka": {
"count": 1335
},
- "The Co-operative Food": {
- "count": 131
- },
"Eurospin": {
"count": 155
},
"count": 255
},
"Spar": {
- "count": 922
+ "count": 1119
},
"McColl's": {
"count": 100
"count": 135
},
"Coop": {
- "count": 538
+ "count": 678
},
"Sale": {
"count": 80
"Valintatalo": {
"count": 62
},
- "SPAR": {
- "count": 197
- },
- "COOP": {
- "count": 140
- },
"Casino": {
"count": 90
},
"Гастроном": {
"count": 152
},
- "Sklep spożywczy": {
- "count": 318
- },
"Centra": {
"count": 111
},
"Kiosk": {
"count": 55
},
+ "Sklep spożywczy": {
+ "count": 130
+ },
"24 часа": {
"count": 58
},
"เซเว่นอีเลฟเว่น": {
"count": 185
},
- "Spożywczy": {
- "count": 78
- },
"Delikatesy Centrum": {
"count": 53
},
"count": 83
},
"Kwik Fit": {
- "count": 75
+ "count": 128
},
"ATU": {
"count": 261
},
- "Kwik-Fit": {
- "count": 53
- },
"Midas": {
"count": 202
},
"Firestone": {
"count": 88
},
- "AutoZone": {
- "count": 82
- },
"Автосервис": {
"count": 361
},
"Backwerk": {
"count": 95
},
- "Bäcker": {
- "count": 68
- },
"Schäfer's": {
"count": 51
},
"Хлеб": {
"count": 89
},
- "Piekarnia": {
- "count": 62
- },
"Пекарня": {
"count": 52
},
"Стиль": {
"count": 51
},
- "Fryzjer": {
- "count": 56
- },
"Franck Provost": {
"count": 70
},
id="namedview392"
showgrid="true"
inkscape:zoom="1"
- inkscape:cx="262.65678"
- inkscape:cy="510.36274"
+ inkscape:cx="475.13394"
+ inkscape:cy="495.7147"
inkscape:window-x="276"
inkscape:window-y="71"
inkscape:window-maximized="0"
inkscape:current-layer="svg12393"
- showguides="false"
+ showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-global="true"
inkscape:snap-bbox="true"
orientation="-0.41576267,-0.90947315"
position="646,553.53846"
id="guide6219" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="480,470"
+ id="guide3809" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="500,505"
+ id="guide3811" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="495,480"
+ id="guide3813" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="515,460"
+ id="guide3815" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="520,475"
+ id="guide3817" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="505,440"
+ id="guide3819" />
+ <sodipodi:guide
+ orientation="1,0"
+ position="540,470"
+ id="guide3821" />
</sodipodi:namedview>
<defs
id="defs12395">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
inkscape:connector-curvature="0"
style="color:#000000;fill:#e06d5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path2997-7"
- d="m 514,84 -1,1 0,1.59375 L 506.59375,93 505,93 l -1,1 0,2 1,1 2,0 1,-1 0,-1.59375 L 514.40625,88 516,88 l 1,-1 0,-2 -1,-1 z m -22,1 c -2.76142,0 -5,2.23858 -5,5 0,2.76143 5,7 5,7 0,0 5,-4.23857 5,-7 0,-2.76142 -2.23858,-5 -5,-5 z m 23,0 c 0.55228,0 1,0.44772 1,1 0,0.55229 -0.44772,1 -1,1 -0.25152,0 -0.48052,-0.0967 -0.65625,-0.25 -0.0344,-0.03002 -0.0638,-0.05934 -0.0937,-0.09375 -0.15335,-0.175731 -0.25,-0.404729 -0.25,-0.65625 0,-0.55228 0.44772,-1 1,-1 z m 10,0 -1,1 0,2 1,1 0,4 -1,1 0,2 1,1 2,0 1,-1 4,0 1,1 2,0 1,-1 0,-2 -1,-1 0,-4 1,-1 0,-2 -1,-1 -2,0 -1,1 -4,0 -1,-1 z m 1,1 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m -41.84375,2 c 1.10457,0 2,0.89543 2,2 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 z M 528,88 l 4,0 1,1 0,4 -1,1 -4,0 -1,-1 0,-4 z m -22,6 c 0.25152,0 0.48052,0.0967 0.65625,0.25 l 0.0937,0.09375 c 0.15335,0.175731 0.25,0.404734 0.25,0.65625 0,0.55229 -0.44772,1 -1,1 -0.55228,0 -1,-0.44771 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 20,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z" />
- <path
- d="m 514,104 -1,1 0,1.59375 L 506.59375,113 505,113 l -1,1 0,2 1,1 2,0 1,-1 0,-1.59375 L 514.40625,108 516,108 l 1,-1 0,-2 -1,-1 z m -22,1 c -2.76142,0 -5,2.23858 -5,5 0,2.76143 5,7 5,7 0,0 5,-4.23857 5,-7 0,-2.76142 -2.23858,-5 -5,-5 z m 23,0 c 0.55228,0 1,0.44772 1,1 0,0.55229 -0.44772,1 -1,1 -0.25152,0 -0.48052,-0.0967 -0.65625,-0.25 -0.0344,-0.03 -0.0638,-0.0593 -0.0937,-0.0937 -0.15335,-0.17573 -0.25,-0.40473 -0.25,-0.65625 0,-0.55228 0.44772,-1 1,-1 z m 10,0 -1,1 0,2 1,1 0,4 -1,1 0,2 1,1 2,0 1,-1 4,0 1,1 2,0 1,-1 0,-2 -1,-1 0,-4 1,-1 0,-2 -1,-1 -2,0 -1,1 -4,0 -1,-1 z m 1,1 c 0.55228,0 1,0.44771 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55229 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.44771 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55229 0.44772,-1 1,-1 z m -41.84375,2 c 1.10457,0 2,0.89543 2,2 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 z M 528,108 l 4,0 1,1 0,4 -1,1 -4,0 -1,-1 0,-4 z m -22,6 c 0.25152,0 0.48052,0.0967 0.65625,0.25 l 0.0937,0.0937 c 0.15335,0.17573 0.25,0.40473 0.25,0.65625 0,0.55229 -0.44772,1 -1,1 -0.55228,0 -1,-0.44771 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 20,0 c 0.55228,0 1,0.44771 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55229 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.44771 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55229 0.44772,-1 1,-1 z"
- id="path3444"
- style="color:#000000;fill:#8cd05f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccsscsscssccscccccccccccccccccccccccccccssssssssssssssscccccccccsccsssssssssssssss" />
+ d="m 514,83 -1,1 0,1.59375 L 506.59375,92 505,92 l -1,1 0,2 1,1 2,0 1,-1 0,-1.59375 L 514.40625,87 516,87 l 1,-1 0,-2 -1,-1 z m -24,1 c -2.76142,0 -5,2.23858 -5,5 0,2.76143 5,7 5,7 0,0 5,-4.23857 5,-7 0,-2.76142 -2.23858,-5 -5,-5 z m 25,0 c 0.55228,0 1,0.44772 1,1 0,0.55229 -0.44772,1 -1,1 -0.25152,0 -0.48052,-0.0967 -0.65625,-0.25 -0.0344,-0.03002 -0.0638,-0.05934 -0.0937,-0.09375 -0.15335,-0.175731 -0.25,-0.404729 -0.25,-0.65625 0,-0.55228 0.44772,-1 1,-1 z m 10,0 -1,1 0,2 1,1 0,4 -1,1 0,2 1,1 2,0 1,-1 4,0 1,1 2,0 1,-1 0,-2 -1,-1 0,-4 1,-1 0,-2 -1,-1 -2,0 -1,1 -4,0 -1,-1 z m 1,1 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m -43.84375,2 c 1.10457,0 2,0.89543 2,2 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 z M 528,87 l 4,0 1,1 0,4 -1,1 -4,0 -1,-1 0,-4 z m -22,6 c 0.25152,0 0.48052,0.0967 0.65625,0.25 l 0.0937,0.09375 c 0.15335,0.175731 0.25,0.404734 0.25,0.65625 0,0.55229 -0.44772,1 -1,1 -0.55228,0 -1,-0.44771 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 20,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.447715 1,1 0,0.552285 -0.44772,1 -1,1 -0.55228,0 -1,-0.447715 -1,-1 0,-0.552285 0.44772,-1 1,-1 z" />
<rect
width="2"
height="5.9999971"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccc" />
</g>
+ <path
+ d="m 514,104 -1,1 0,1.59375 L 506.59375,113 505,113 l -1,1 0,2 1,1 2,0 1,-1 0,-1.59375 L 514.40625,108 516,108 l 1,-1 0,-2 -1,-1 z m -24,1 c -2.76142,0 -5,2.23858 -5,5 0,2.76143 5,7 5,7 0,0 5,-4.23857 5,-7 0,-2.76142 -2.23858,-5 -5,-5 z m 25,0 c 0.55228,0 1,0.44772 1,1 0,0.55229 -0.44772,1 -1,1 -0.25152,0 -0.48052,-0.0967 -0.65625,-0.25 -0.0344,-0.03 -0.0638,-0.0593 -0.0937,-0.0937 -0.15335,-0.17573 -0.25,-0.40473 -0.25,-0.65625 0,-0.55228 0.44772,-1 1,-1 z m 10,0 -1,1 0,2 1,1 0,4 -1,1 0,2 1,1 2,0 1,-1 4,0 1,1 2,0 1,-1 0,-2 -1,-1 0,-4 1,-1 0,-2 -1,-1 -2,0 -1,1 -4,0 -1,-1 z m 1,1 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m -43.84375,2 c 1.10457,0 2,0.89543 2,2 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 z M 528,108 l 4,0 1,1 0,4 -1,1 -4,0 -1,-1 0,-4 z m -22,6 c 0.25152,0 0.48052,0.0967 0.65625,0.25 l 0.0937,0.0937 c 0.15335,0.17573 0.25,0.40473 0.25,0.65625 0,0.55229 -0.44772,1 -1,1 -0.55228,0 -1,-0.44771 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 20,0 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z m 8,0 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z"
+ id="path3823"
+ style="color:#000000;fill:#8cd05f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccsscsscssccscccccccccccccccccccccccccccssssssssssssssscccccccccsccsssssssssssssss" />
</svg>
"commit": {
"title": "Bêre veranderinge",
"description_placeholder": "Kortlikse beskrywing van jou bydraes",
- "message_label": "Bêre boodskap",
"save": "Bȇre",
"cancel": "Kanseleer",
"warnings": "Waarskuwings",
"title": "Stoor",
"help": "Stoor veranderinge na OpenStreetMap, en maak dit sigbaar vir ander gebruikers.",
"no_changes": "Geen verandering om te stoor.",
- "error": "'n Fout het ingekruip toe jy probeer stoor het",
"uploading": "Laai verandering op na OpenStreetMap.",
"unsaved_changes": "Jy het ongestoorde veranderinge"
},
"fields": {
"access": {
"label": "Toegang",
- "placeholder": "Onbekend",
- "types": {
- "access": "Algemene",
- "foot": "Voet",
- "motor_vehicle": "Motorvoertuie",
- "bicycle": "Fietse",
- "horse": "Perde"
- },
"options": {
- "yes": {
- "title": "Toegelaat"
+ "designated": {
+ "description": "Voorgeskrewe toegang",
+ "title": "Toegewys"
+ },
+ "destination": {
+ "description": "Beperkte toegang",
+ "title": "Eindbestemming"
},
"no": {
- "title": "Toegang Verbode",
- "description": "Geen toegang vir algemene publiek"
+ "description": "Geen toegang vir algemene publiek",
+ "title": "Toegang Verbode"
},
"permissive": {
"description": "Voorwaardelike toegang"
},
"private": {
- "title": "Privaat",
- "description": "Toegang slegs soos gereël met eienaar"
- },
- "designated": {
- "title": "Toegewys",
- "description": "Voorgeskrewe toegang"
+ "description": "Toegang slegs soos gereël met eienaar",
+ "title": "Privaat"
},
- "destination": {
- "title": "Eindbestemming",
- "description": "Beperkte toegang"
+ "yes": {
+ "title": "Toegelaat"
}
+ },
+ "placeholder": "Onbekend",
+ "types": {
+ "access": "Algemene",
+ "bicycle": "Fietse",
+ "foot": "Voet",
+ "horse": "Perde",
+ "motor_vehicle": "Motorvoertuie"
}
},
"access_simple": {
"address": {
"label": "Adres",
"placeholders": {
- "housename": "Huisnaam",
- "street": "Straat",
"city": "Tipe",
+ "housename": "Huisnaam",
+ "place": "Plek",
"postcode": "Poskode",
- "place": "Plek"
+ "street": "Straat"
}
},
"admin_level": {
"cardinal_direction": {
"label": "Rigting",
"options": {
- "N": "Noord",
"E": "Oos",
- "S": "Suid",
- "W": "Wes",
+ "N": "Noord",
"NE": "Noordoos",
+ "NW": "Noordwes",
+ "S": "Suid",
"SE": "Suidoos",
"SW": "Suidwes",
- "NW": "Noordwes"
+ "W": "Wes"
}
},
"clock_direction": {
"label": "Rigting",
"options": {
- "clockwise": "Kloksgewys",
- "anticlockwise": "Antikloksgewys"
+ "anticlockwise": "Antikloksgewys",
+ "clockwise": "Kloksgewys"
}
},
"collection_times": {
"internet_access": {
"label": "Internet Toegang",
"options": {
- "wlan": "Wifi",
+ "terminal": "Terminaal",
"wired": "Bedraad",
- "terminal": "Terminaal"
+ "wlan": "Wifi"
}
},
"landuse": {
},
"structure": {
"label": "Struktuur",
- "placeholder": "Onbekend",
"options": {
"bridge": "Brug",
- "tunnel": "Tonnel",
+ "cutting": "Uitgrawing",
"embankment": "Dyk",
- "cutting": "Uitgrawing"
- }
+ "tunnel": "Tonnel"
+ },
+ "placeholder": "Onbekend"
},
"supervised": {
"label": "Onder toesig"
"commit": {
"title": "إحفظ التغييرات",
"description_placeholder": "وصف مختصر لمساهماتك",
- "message_label": "شرح التغيير ",
"save": "حفظ",
"cancel": "إلغاء",
"warnings": "تنبيه",
"title": "حفظ",
"help": "احفظ التغييرات في OpenStreetMap لجعلها ظاهرة لبقية المستخدمين.",
"no_changes": "لا يوجد تعديلات للحفظ.",
- "error": "حدث خطاء أثناء محاولة الحفظ",
"uploading": "يجري رفع التغييرات إلى OpenStreetMap.",
"unsaved_changes": "لديك تغييرات غير محفوظة"
},
"fields": {
"access": {
"label": "الدخول",
- "placeholder": "غير معروف",
- "types": {
- "access": "عام",
- "foot": "بالقدم",
- "motor_vehicle": "مركبات",
- "bicycle": "درجات هوائية",
- "horse": "أحصنة"
- },
"options": {
- "yes": {
- "title": "مسموح",
- "description": "الدخول مسموح به بنص القانون، حق الطريق"
+ "designated": {
+ "description": "الدخول مصرح به وفقا للعلامات أو قوانين محلية مخصصة.",
+ "title": "مخصص"
+ },
+ "destination": {
+ "description": "الدخول مسموح به فقط للوصل إلى وجهة معينة",
+ "title": "الوجهة"
},
"no": {
- "title": "محظور",
- "description": "الدخول ليس مسموحا به للعامة"
+ "description": "الدخول ليس مسموحا به للعامة",
+ "title": "محظور"
},
"permissive": {
- "title": "مرخص",
- "description": "الدخول مسموح به حتى يلغى المالك هذا الترخيص."
+ "description": "الدخول مسموح به حتى يلغى المالك هذا الترخيص.",
+ "title": "مرخص"
},
"private": {
- "title": "خاص",
- "description": "الدخول مسموح به فقط بإذن من المالك على أساس فردي."
+ "description": "الدخول مسموح به فقط بإذن من المالك على أساس فردي.",
+ "title": "خاص"
},
- "designated": {
- "title": "مخصص",
- "description": "الدخول مصرح به وفقا للعلامات أو قوانين محلية مخصصة."
- },
- "destination": {
- "title": "الوجهة",
- "description": "الدخول مسموح به فقط للوصل إلى وجهة معينة"
+ "yes": {
+ "description": "الدخول مسموح به بنص القانون، حق الطريق",
+ "title": "مسموح"
}
+ },
+ "placeholder": "غير معروف",
+ "types": {
+ "access": "عام",
+ "bicycle": "درجات هوائية",
+ "foot": "بالقدم",
+ "horse": "أحصنة",
+ "motor_vehicle": "مركبات"
}
},
"access_simple": {
"address": {
"label": "العنوان",
"placeholders": {
+ "city": "المدينة",
+ "country": "دولة",
"housename": "اسم المنزل",
"housenumber": "123",
- "street": "الشارع",
- "city": "المدينة",
"postcode": "الرمز البريدي",
"state": "ولاية",
- "country": "دولة"
+ "street": "الشارع"
}
},
"admin_level": {
"aerialway/access": {
"label": "دخول",
"options": {
+ "both": "كلاهما",
"entry": "مدخل",
- "exit": "مخرج",
- "both": "كلاهما"
+ "exit": "مخرج"
}
},
"aerialway/duration": {
"clock_direction": {
"label": "الاتجاه",
"options": {
- "clockwise": "باتجاه عقارب الساعة",
- "anticlockwise": "عكس عقارب الساعة"
+ "anticlockwise": "عكس عقارب الساعة",
+ "clockwise": "باتجاه عقارب الساعة"
}
},
"collection_times": {
"internet_access": {
"label": "إنترنت",
"options": {
- "wlan": "واي فاي",
+ "terminal": "بوابة",
"wired": "سلكي",
- "terminal": "بوابة"
+ "wlan": "واي فاي"
}
},
"landuse": {
},
"structure": {
"label": "بنية",
- "placeholder": "غير معروف",
"options": {
"bridge": "جسر",
- "tunnel": "نفق",
+ "cutting": "طريق منخفض",
"embankment": "طريق مرتفع",
- "cutting": "طريق منخفض"
- }
+ "tunnel": "نفق"
+ },
+ "placeholder": "غير معروف"
},
"supervised": {
"label": "مراقب"
"commit": {
"title": "Guardar cambios",
"description_placeholder": "Descripción curtia de les collaboraciones",
- "message_label": "Mensaxe d'unviu",
"upload_explanation": "Los cambios que xuba tarán visibles en tolos mapes qu'usen los datos d'OpenStreetMap.",
"save": "Guardar",
"cancel": "Encaboxar",
"title": "Guardar",
"help": "Guardar cambios a OpenStreetMap, faciendolos visibles a otros usuarios.",
"no_changes": "Nun hai cambios que guardar.",
- "error": "Hebo un error al intentar guardar",
"uploading": "Xubiendo cambios a OpenStreetMap.",
"unsaved_changes": "Tien cambios ensin guardar"
},
"fields": {
"access": {
"label": "Accesu",
- "placeholder": "Desconocíu",
- "types": {
- "access": "Xeneral",
- "foot": "A pie",
- "motor_vehicle": "Vehículos de motor",
- "bicycle": "Bicicletes",
- "horse": "Caballos"
- },
"options": {
- "yes": {
- "title": "Permitíu",
- "description": "Accesu permitíu por llei; un drechu de pasu"
+ "designated": {
+ "description": "Accesu permitíu acordies con señales o lleis llocales especifiques",
+ "title": "Designáu"
+ },
+ "destination": {
+ "description": "Accesu permitíu sólo de pasu a un destín",
+ "title": "Destín"
},
"no": {
- "title": "Torgáu",
- "description": "Accesu nun permitíu al públicu en xeneral"
+ "description": "Accesu nun permitíu al públicu en xeneral",
+ "title": "Torgáu"
},
"permissive": {
- "title": "Permisivu",
- "description": "Accesu permitíu mentanto'l propietariu nun quite'l permisu"
+ "description": "Accesu permitíu mentanto'l propietariu nun quite'l permisu",
+ "title": "Permisivu"
},
"private": {
- "title": "Priváu",
- "description": "Accesu permitíu sólo col permisu del propietariu de manera individual"
+ "description": "Accesu permitíu sólo col permisu del propietariu de manera individual",
+ "title": "Priváu"
},
- "designated": {
- "title": "Designáu",
- "description": "Accesu permitíu acordies con señales o lleis llocales especifiques"
- },
- "destination": {
- "title": "Destín",
- "description": "Accesu permitíu sólo de pasu a un destín"
+ "yes": {
+ "description": "Accesu permitíu por llei; un drechu de pasu",
+ "title": "Permitíu"
}
+ },
+ "placeholder": "Desconocíu",
+ "types": {
+ "access": "Xeneral",
+ "bicycle": "Bicicletes",
+ "foot": "A pie",
+ "horse": "Caballos",
+ "motor_vehicle": "Vehículos de motor"
}
},
"access_simple": {
"address": {
"label": "Direición",
"placeholders": {
- "street": "Cai",
- "city": "Ciudá"
+ "city": "Ciudá",
+ "street": "Cai"
}
},
"admin_level": {
"clock_direction": {
"label": "Direición",
"options": {
- "clockwise": "Sentíu horariu",
- "anticlockwise": "Sentíu antihorariu"
+ "anticlockwise": "Sentíu antihorariu",
+ "clockwise": "Sentíu horariu"
}
},
"collection_times": {
"internet_access": {
"label": "Accesu a Internet",
"options": {
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Per cable",
- "terminal": "Terminal"
+ "wlan": "Wifi"
}
},
"landuse": {
},
"structure": {
"label": "Estructura",
- "placeholder": "Desconocíu",
"options": {
"bridge": "Ponte",
- "tunnel": "Túnel",
- "embankment": "Rellenu",
"cutting": "Trinchera",
- "ford": "Vau"
- }
+ "embankment": "Rellenu",
+ "ford": "Vau",
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Desconocíu"
},
"studio_type": {
"label": "Tipu"
"commit": {
"title": "Запис на промените",
"description_placeholder": "Кратко описание на вашия принос",
- "message_label": "Предайте съобщение",
"upload_explanation": "Промените, които качвате ще са видими на всички карти използващи данни от OpenStreetMap.",
"upload_explanation_with_user": "Промените, които качвате като {user} ще са видими на всички карти използващи данни от OpenStreetMap.",
"save": "Запис",
"title": "Запис",
"help": "Запишете промените в OpenStreetMap, правейки ги видими за останалите потребители.",
"no_changes": "Няма промени за запис.",
- "error": "Възникна грешка при опит за запис",
"uploading": "Качване на промените в OpenStreetMap.",
"unsaved_changes": "Имате незаписани промени"
},
"fields": {
"access": {
"label": "Достъп",
- "placeholder": "Неизвестен",
- "types": {
- "access": "Публичен",
- "foot": "Пешеходен",
- "motor_vehicle": "МПС",
- "bicycle": "Велосипеди",
- "horse": "Коне"
- },
"options": {
- "yes": {
- "title": "Разрешен",
- "description": "Достъпът позволен с нормативен акт; право на преминаване"
+ "designated": {
+ "description": "Достъпът позволен според указателни табели или специфични местни разпоредби",
+ "title": "По предназначение"
+ },
+ "destination": {
+ "description": "Достъпът разрешен само за достигане до дестинация",
+ "title": "До дестинация"
},
"no": {
- "title": "Забранен",
- "description": "Забранен публичният достъп"
+ "description": "Забранен публичният достъп",
+ "title": "Забранен"
},
"permissive": {
- "title": "Частичен",
- "description": "Достъпът позволен докато собственика позволява"
+ "description": "Достъпът позволен докато собственика позволява",
+ "title": "Частичен"
},
"private": {
- "title": "Частен",
- "description": "Достъпът разрешен само с позволение на собственика"
- },
- "designated": {
- "title": "По предназначение",
- "description": "Достъпът позволен според указателни табели или специфични местни разпоредби"
+ "description": "Достъпът разрешен само с позволение на собственика",
+ "title": "Частен"
},
- "destination": {
- "title": "До дестинация",
- "description": "Достъпът разрешен само за достигане до дестинация"
+ "yes": {
+ "description": "Достъпът позволен с нормативен акт; право на преминаване",
+ "title": "Разрешен"
}
+ },
+ "placeholder": "Неизвестен",
+ "types": {
+ "access": "Публичен",
+ "bicycle": "Велосипеди",
+ "foot": "Пешеходен",
+ "horse": "Коне",
+ "motor_vehicle": "МПС"
}
},
"address": {
"label": "Адрес",
"placeholders": {
+ "city": "Град",
+ "country": "Държава",
+ "district": "Община",
"housename": "Къща",
"housenumber": "123",
- "street": "Улица",
- "city": "Град",
"place": "Място",
- "suburb": "Квартал",
- "subdistrict": "Землище",
- "district": "Община",
"province": "Област",
"state": "Икономически район NUT2",
- "country": "Държава"
+ "street": "Улица",
+ "subdistrict": "Землище",
+ "suburb": "Квартал"
}
},
"admin_level": {
"clock_direction": {
"label": "Посока",
"options": {
- "clockwise": "По часовниковата стрелка",
- "anticlockwise": "Обратно на часовниковата стрелка"
+ "anticlockwise": "Обратно на часовниковата стрелка",
+ "clockwise": "По часовниковата стрелка"
}
},
"collection_times": {
"internet_access": {
"label": "Интернет достъп",
"options": {
- "wlan": "Wifi",
+ "terminal": "Терминал",
"wired": "Кабелен",
- "terminal": "Терминал"
+ "wlan": "Wifi"
}
},
"lamp_type": {
},
"structure": {
"label": "Структура",
- "placeholder": "Неизвестен",
"options": {
"bridge": "Мост",
- "tunnel": "Тунел",
+ "cutting": "Изкоп",
"embankment": "Насип",
- "cutting": "Изкоп"
- }
+ "tunnel": "Тунел"
+ },
+ "placeholder": "Неизвестен"
},
"supervised": {
"label": "Под наблюдение"
"commit": {
"title": "পরিবর্তনগুলিকে সেভ করুন",
"description_placeholder": "অাপনার সাহায্যের সংক্ষিপ্ত বিবরন",
- "message_label": "কমিট বার্তা",
"save": "সেভ করুন",
"cancel": "বাতিল করুন",
"warnings": "সতর্ক বার্তাসমুহ",
"title": "সেভ করুন",
"help": "ওপেনস্ট্রীটম্যাপ-এ অাপনার পরিবর্তনগুলি সেভ করে অন্যদের কাছে তা দৃশ্যমান করুন।",
"no_changes": "সেভ করার মত কোন পরিবর্তন বাকি নেই।",
- "error": "সেভ করার সময় একটি বিভ্রান্তি দেখা দিয়েছে।",
"uploading": "ওপেনস্ট্রীটম্যাপ-এ পরিবর্তনগুলি অাপলোড করা হচ্ছে।",
"unsaved_changes": "অাপনার কিছু পরিবর্তন সেভ করা বাকি অাছে।"
},
"fields": {
"access": {
"label": "প্রবেশ করা",
- "placeholder": "অজানা",
- "types": {
- "access": "সাধারণ",
- "foot": "পদচালন",
- "motor_vehicle": "মোটরগাড়ি",
- "bicycle": "সাইকেল",
- "horse": "ঘোড়া"
- },
"options": {
- "yes": {
- "title": "অনুমোদিত",
- "description": "অাইনানুসারে প্রবেশ অনুমোদিত"
+ "designated": {
+ "description": "কোন চিহ্ন বা স্থানীয় অাইন অনুযায়ী প্রবেশ অনুমোদিত।"
+ },
+ "destination": {
+ "description": "শুধুমাত্র কোন গন্তব্যে পৌছানোর জন্য প্রবেশ অনুমোদিত।",
+ "title": "গন্তব্য"
},
"no": {
- "title": "নিষিদ্ধ",
- "description": "জনসাধারনের প্রবেশ অনুমোদিত নয়।"
+ "description": "জনসাধারনের প্রবেশ অনুমোদিত নয়।",
+ "title": "নিষিদ্ধ"
},
"permissive": {
- "title": "অনুমতিসূচক",
- "description": "প্রবেশ অনুমোদিত, যতক্ষন অব্দি এর মালিক অনুমতি প্রত্যাহার না করছেন।"
+ "description": "প্রবেশ অনুমোদিত, যতক্ষন অব্দি এর মালিক অনুমতি প্রত্যাহার না করছেন।",
+ "title": "অনুমতিসূচক"
},
"private": {
- "title": "à¦\8fà¦\95ানà§\8dত",
- "description": "পà§\8dরতà§\8dযà§\87à¦\95 বà§\8dযà¦\95à§\8dতির à¦\9cনà§\8dয মালিà¦\95-à¦\8fর à¦\85নà§\81মতি থাà¦\95লà§\87 পà§\8dরবà§\87শ à¦\85নà§\81মà§\8bদিত।"
+ "description": "পà§\8dরতà§\8dযà§\87à¦\95 বà§\8dযà¦\95à§\8dতির à¦\9cনà§\8dয মালিà¦\95-à¦\8fর à¦\85নà§\81মতি থাà¦\95লà§\87 পà§\8dরবà§\87শ à¦\85নà§\81মà§\8bদিত।",
+ "title": "à¦\8fà¦\95ানà§\8dত"
},
- "designated": {
- "description": "কোন চিহ্ন বা স্থানীয় অাইন অনুযায়ী প্রবেশ অনুমোদিত।"
- },
- "destination": {
- "title": "গন্তব্য",
- "description": "শুধুমাত্র কোন গন্তব্যে পৌছানোর জন্য প্রবেশ অনুমোদিত।"
+ "yes": {
+ "description": "অাইনানুসারে প্রবেশ অনুমোদিত",
+ "title": "অনুমোদিত"
}
+ },
+ "placeholder": "অজানা",
+ "types": {
+ "access": "সাধারণ",
+ "bicycle": "সাইকেল",
+ "foot": "পদচালন",
+ "horse": "ঘোড়া",
+ "motor_vehicle": "মোটরগাড়ি"
}
},
"access_simple": {
"address": {
"label": "ঠিকানা",
"placeholders": {
+ "city": "শহর",
+ "country": "দেশ",
+ "district": "জেলা",
"housename": "বাড়ির নাম",
"housenumber": "১২৩",
- "street": "স্ট্রীট",
- "city": "শহর",
- "postcode": "পিনকোড",
"place": "জায়গা",
- "suburb": "শহরতলি",
- "subdistrict": "উপজেলা",
- "district": "জেলা",
+ "postcode": "পিনকোড",
"state": "রাজ্য",
- "country": "দেশ"
+ "street": "স্ট্রীট",
+ "subdistrict": "উপজেলা",
+ "suburb": "শহরতলি"
}
},
"aerialway": {
"aerialway/access": {
"label": "প্রবেশ করা",
"options": {
+ "both": "উভয়",
"entry": "প্রবেশ",
- "exit": "প্রস্থাণ",
- "both": "উভয়"
+ "exit": "প্রস্থাণ"
}
},
"aerialway/capacity": {
},
"aerialway/summer/access": {
"options": {
+ "both": "উভয়",
"entry": "প্রবেশ",
- "exit": "প্রস্থাণ",
- "both": "উভয়"
+ "exit": "প্রস্থাণ"
}
},
"aeroway": {
"cardinal_direction": {
"label": "দিক/অভিমুখ",
"options": {
- "N": "উত্তর",
"E": "পূর্ব",
+ "N": "উত্তর",
+ "NE": "উত্তরপূর্ব",
"S": "দক্ষিণ",
- "W": "পশ্চিম",
- "NE": "উত্তরপূর্ব"
+ "W": "পশ্চিম"
}
},
"clock_direction": {
"label": "দিক/অভিমুখ",
"options": {
- "clockwise": "ঘড়ির কাটার দিকে",
- "anticlockwise": "ঘড়ির কাটার উল্টো দিকে"
+ "anticlockwise": "ঘড়ির কাটার উল্টো দিকে",
+ "clockwise": "ঘড়ির কাটার দিকে"
}
},
"collection_times": {
"fire_hydrant/type": {
"label": "টাইপ",
"options": {
- "wall": "দেয়াল",
- "pond": "পুকুর"
+ "pond": "পুকুর",
+ "wall": "দেয়াল"
}
},
"fixme": {
"internet_access": {
"label": "ইন্টারনেট সুবিধা",
"options": {
- "yes": "হ্যা",
"no": "না",
- "wlan": "তারবিহীন",
+ "terminal": "টার্মিনাল",
"wired": "তারযুক্ত",
- "terminal": "টার্মিনাল"
+ "wlan": "তারবিহীন",
+ "yes": "হ্যা"
}
},
"landuse": {
},
"structure": {
"label": "কাঠামো",
- "placeholder": "অজানা",
"options": {
"bridge": "সেতু",
"tunnel": "সুড়ঙ্গ"
- }
+ },
+ "placeholder": "অজানা"
},
"surface": {
"label": "উপরিভাগ"
"commit": {
"title": "Sačuvajte izmjene",
"description_placeholder": "Kratak opis Vaših doprinosa",
- "message_label": "Predaja poruke",
"upload_explanation": "Promjene koje postavite će biti vidljive na svim kartama koje koriste OpenStreetMap podatke.",
"upload_explanation_with_user": "Promjene koje postavite kao {user} će biti vidljive na svim kartama koje koriste OpenStreetMap podatke.",
"save": "Sačuvajte",
"title": "Sačuvajte",
"help": "Sačuvajte promjene na OpenStreetMap karti, čineći ih vidljivim drugim korisnicima.",
"no_changes": "Nema promjena za sačuvati.",
- "error": "Dogodila se greška prilikom pokušaja spašavanja.",
"uploading": "Postavljanje promjena na OpenStreetMap.",
"unsaved_changes": "Imate promjene koje nisu spašene"
},
"fields": {
"access": {
"label": "Pristup",
- "placeholder": "Nepoznato",
- "types": {
- "access": "Opće",
- "foot": "Pješke",
- "motor_vehicle": "Motorna vozila",
- "bicycle": "Bicikli",
- "horse": "Konji"
- },
"options": {
- "yes": {
- "title": "Dozvoljeno",
- "description": "Pristup dozvoljen zakonom: pravo prvenstva prolaza"
+ "designated": {
+ "description": "Pristup dozvoljen u skladu sa saobraćajnim znakovima ili posebnim lokalnim zakonima",
+ "title": "Namjenski"
+ },
+ "destination": {
+ "description": "Pristup dozvoljen samo kako bi se dostiglo odredište",
+ "title": "Odredište"
},
"no": {
- "title": "Zabranjeno",
- "description": "Pristup nije dozvoljen za širu javnost"
+ "description": "Pristup nije dozvoljen za širu javnost",
+ "title": "Zabranjeno"
},
"permissive": {
- "title": "Propustljiv",
- "description": "Pristup dozvoljen sve dok vlasnik ne povuče dozvolu"
+ "description": "Pristup dozvoljen sve dok vlasnik ne povuče dozvolu",
+ "title": "Propustljiv"
},
"private": {
- "title": "Privatan",
- "description": "Pristup dozvoljen samo uz dozvolu vlasnika na ličnoj bazi"
- },
- "designated": {
- "title": "Namjenski",
- "description": "Pristup dozvoljen u skladu sa saobraćajnim znakovima ili posebnim lokalnim zakonima"
+ "description": "Pristup dozvoljen samo uz dozvolu vlasnika na ličnoj bazi",
+ "title": "Privatan"
},
- "destination": {
- "title": "Odredište",
- "description": "Pristup dozvoljen samo kako bi se dostiglo odredište"
+ "yes": {
+ "description": "Pristup dozvoljen zakonom: pravo prvenstva prolaza",
+ "title": "Dozvoljeno"
}
+ },
+ "placeholder": "Nepoznato",
+ "types": {
+ "access": "Opće",
+ "bicycle": "Bicikli",
+ "foot": "Pješke",
+ "horse": "Konji",
+ "motor_vehicle": "Motorna vozila"
}
},
"access_simple": {
"address": {
"label": "Adresa",
"placeholders": {
- "street": "Ulica",
- "city": "Grad"
+ "city": "Grad",
+ "street": "Ulica"
}
},
"admin_level": {
"clock_direction": {
"label": "Pravac",
"options": {
- "clockwise": "U smjeru kazaljke na satu",
- "anticlockwise": "U smjeru suprotnom od kazaljke na satu"
+ "anticlockwise": "U smjeru suprotnom od kazaljke na satu",
+ "clockwise": "U smjeru kazaljke na satu"
}
},
"collection_times": {
"internet_access": {
"label": "Internet pristup",
"options": {
- "wlan": "WiFi",
+ "terminal": "Terminal",
"wired": "Kablovski",
- "terminal": "Terminal"
+ "wlan": "WiFi"
}
},
"landuse": {
},
"structure": {
"label": "Struktura",
- "placeholder": "Nepoznato",
"options": {
"bridge": "Most",
- "tunnel": "Tunel",
+ "cutting": "Usjek",
"embankment": "Nasip",
- "cutting": "Usjek"
- }
+ "tunnel": "Tunel"
+ },
+ "placeholder": "Nepoznato"
},
"studio_type": {
"label": "Vrsta"
"multiple": "Heu eliminat {n} objectes."
},
"incomplete_relation": "No es pot eliminar aquesta característica ja que no s'ha baixat completament.",
+ "part_of_relation": "Aquesta característica no es pot eliminar perquè forma part d'una relació més extensa. Heu d'eliminar-la de la relació primer.",
"connected_to_hidden": "No es pot esborrar perquè està connectat a una característica oculta."
},
"add_member": {
"commit": {
"title": "Desa els canvis",
"description_placeholder": "Breu descripció de les vostres contribucions",
- "message_label": "Afegiu un comentari",
+ "message_label": "Comentari de conjunt de canvis",
"upload_explanation": "Els canvis que deseu seran visibles a tots els mapes que utilitzin dades d'OpenStreetMap.",
"upload_explanation_with_user": "Els canvis que deseu com a {user} seran visibles en tots els mapes que utilitzin dades d'OpenStreetMap.",
"save": "Desa",
"list": "Edicions fetes per {users}",
"truncated_list": "Edicions fetes per {users} i {count} més"
},
+ "infobox": {
+ "selected": "{n} seleccionats",
+ "geometry": "Geometria",
+ "closed": "tancat",
+ "center": "Centre",
+ "perimeter": "Perímetre",
+ "length": "Llargària",
+ "area": "Àrea",
+ "centroid": "Centroide",
+ "location": "Ubicació",
+ "metric": "Mètric",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "punt",
+ "vertex": "vèrtex",
+ "line": "línia",
+ "area": "àrea",
+ "relation": "relació"
+ },
"geocoder": {
"search": "Cerca mundialment...",
"no_results_visible": "No s'han trobat resultats a l'àrea visible del mapa",
"title": "Desa",
"help": "Desa els canvis a l'OpenStreetMap, fent-los visibles per als altres usuaris.",
"no_changes": "No hi ha canvis a desar.",
- "error": "Hi ha hagut un error en intentar desar",
+ "error": "Ha hagut un error en intentar desar",
+ "status_code": "El servidor ha expedit el codi d'estat {code}",
"unknown_error_details": "Assegureu-vos d'estar connectats a Internet",
"uploading": "Pujant els canvis a l'OpenStreetMap.",
- "unsaved_changes": "Teniu canvis sense desar."
+ "unsaved_changes": "Teniu canvis sense desar.",
+ "conflict": {
+ "header": "Resoldre les edicions conflictives",
+ "count": "Conflicte {num} de {total}",
+ "previous": "< Anterior",
+ "next": "Següent >",
+ "keep_local": "Mantenir els meus",
+ "keep_remote": "Utilitzar els seus",
+ "restore": "Restaurar",
+ "delete": "Deixar eliminat",
+ "download_changes": "O bé descarregueu els vostres canvis.",
+ "done": "Tots els conflictes resolts!",
+ "help": "Un altre usuari ha canviat algunes característiques del mapa que també heu canviat.\nCliqueu a cada ítem dels d'aquí sota per saber més detalls dels conflictes, i escolliu si manteniu\nels vostres canvis o bé els canvis de l'altre usuari.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Aquest objecte ha estat eliminat per {user}.",
+ "location": "Tant tu com {user} vau moure aquest objecte.",
+ "nodelist": "Tant tu com {user} vau canviar els nodes.",
+ "memberlist": "Tant tu com {user} vau canviar els membres de la relació.",
+ "tags": "Heu canviat l'etiqueta <b>{tag}</b> a \"{local}\" i {user} ho ha canviat a \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Heu editat l'OSM!",
"help_html": "Els canvis haurien d'aparèixer a la capa \"Estàndard\" en pocs minuts. Altres capes i algunes característiques, poden trigar més temps.\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map'>detalls</a>).\n"
},
"confirm": {
- "okay": "D'acord"
+ "okay": "D'acord",
+ "cancel": "Cancel·lar"
},
"splash": {
"welcome": "Benvinguts a l'editor iD per a l'OpenStreetMap",
},
"help": {
"title": "Ajuda",
- "help": "# Ajuda\n\nAixò és un editor per al [OpenStreetMap](http://www.openstreetmap.org/), el mapa lliure i editable del món. Podeu utilitzar-lo per afegir i actualitzar\nles dades a la vostra àrea, contibuint així a fer un mapa de codi obert i amb dades lliures del món\nmillor per a tothom.\n\nLes edicions que feu en aquest mapa seran visibles per tothom que faci servir OpenStreetMap. per tal de començar a editar, necessitareu un\n[compte gratuït d'OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n L'[Editor iD](http://ideditor.com/) iés un projecte cooperatiu que té el [codi font\ndisponible a GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Ajuda\n\nAixò és un editor per al [OpenStreetMap](http://www.openstreetmap.org/), el mapa lliure i editable del món. Podeu utilitzar-lo per afegir i actualitzar\nles dades a la vostra àrea, contibuint així a fer un mapa de codi obert i amb dades lliures del món\nmillor per a tothom.\n\nLes edicions que feu en aquest mapa seran visibles per tothom que faci servir OpenStreetMap. per tal de començar a editar, necessitareu\n[iniciar sessió](https://www.openstreetmap.org/login).\n\n L'[Editor iD](http://ideditor.com/) és un projecte cooperatiu que té el [codi font\ndisponible a GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Edició i desat\n\nAquest editor està dissenyat per treballar principalment en línia, i hi heu accedit mitjançant una pàgina web.\n\n### Selecció de característiques\n\nPer selecionar una característica del mapa, com ara una carretera o un punt d'interès, cliqueu-hi a sobre. Això ressaltarà la característica, obrirà un panell amb els detalls sobre aquesta, i un menú amb les coses que hi podeu fer .\n\nPodeu seleccionar múltiples característiques, prement la tecla 'Shift' i clicant-les per separat, o bé clicant i arrossegant el cursor. Això seleccionarà totes les característiques que englobi el requadre que es dibuixarà i permetrà modificar totes les característiques seleccionades en un sol cop.\n\n### Desant les edicions\n\nQuan feu canvis com ara editar carreteres, edificis, o llocs, aquests canvis es desen localment fins que els deseu al servidor. No us preocupeu si cometeu algun error- podeu desfer els canvis clicant el botó de desfer, i podeu refer els canvis clicant el botó de refer.\n\nCliqueu 'Desa' per acabar un grup d'edicions - per exemple, si heu acabat de delimitar l'àrea d'una ciutat i voleu començar a fer-ne una altra. Tindreu la oportunitat de revisar la feina feta,\ni l'editor proporcionarà suggeriments que us podran ajudar\ni també mostrarà alertes si alguna cosa no està del tot bé als vostres canvis.\n\nSi tot sembla correcte, podeu escriure un breu comentari explicant el canvis\nque heu fet, i clicar desa un altre cop per publicar els canvis\na [OpenStreetMap.org](http://www.openstreetmap.org/), on seran visibles\nper a tots els altres usuaris i disponibles per a altres editors per refer-los o bé millorar-los.\n\nSi no podeu acabar les vostres edicions en una sessió, podeu sortir de la finestra d'edició i tornar més tard (al mateix navegador i ordinador), i l'aplicació d'edició\npreguntarà si voleu restaurar els canvis anteriors.\n",
"roads": "# Carreteres\n\nPodeu crear, ajustar i eliminar carreteres amb aquest editor. Les carreteres poden ser\nde molts tipus: pistes, autovies, camins, carrils bici, i molts més - tots els segments\nmés comuns han de ser cartografiables.\n\n### Selecció\n\nCliqueu a la carretera per seleccionar-la. Al fer això els seus contorns es faran visibles, \ncom també un petit menú d'eines i una barra lateral que mostrarà més informació\nsobre la carretera.\n\n### Modificació\n\nDe vegades veureu carreteres que no estan alineades amb la imatge del darrere \no amb una traça de GPS. Podeu ajustar aquestes carreteres per tal que estiguin al lloc\ncorrecte.\n\nPrimer cliqueu a la carretera que voleu canviar. Això la ressaltarà i mostrarà els punts de control\nque podeu arrossegar a les ubicacions desitjades. Si el que\nvoleu és afegir nous punts per obtenir un grau de detall més alt, feu doble clic en una part de la carretera sense cap punt, i se'n afegirà un.\n\nSi la carretera es connecta amb una altra, però no es reflecteix al mapa, \npodeu arrossegar un dels punts de control cap a l'altra carretera \nper tal d'unir-les. Fer que les carreteres es connectin és molt important \nper al mapa i essencial per proveir direccions per a la conducció.\n\nTambé podeu clicar l'eina «Moure» o prémer la tecla «M» per moure la carretera sencera, tota de cop, i llavors clicar altra vegada per guardar aquest moviment.\n\n### Eliminació\n\nSi una carretera està totalment malament -podeu apreciar que no existeix a la imatge per satèl·lit\ni a més a més, els veïns ens han confirmat que no existeix - la podeu eliminar, cosa que la treurà del mapa. Aneu amb molt de compte a l'hora d'eliminar característiques -\ncom ara altres edicions; els resultats podran ser vistos per tothom i moltes vegades la imatgeria per satèl·lit no està actualitzada, per tant la carretera es pot haver estat construida recentment.\n\nPodeu eliminar una carretera clicant-la, i llavors clicant la icona de la paperera o bé prement la tecla «Suprimir».\n\n### Creació\n\nHeu trobat que en algun lloc hi hauria d'haver una carretera però no hi és? Cliqueu la icona «Línia»\nal marge superior esquerre de la zona del mapa o bé prem la tecla «2» per començar a dibuixar\nuna línia.\n\nCliqueu a l'inici de la carretera al mapa per començar a dibuixar. Si la carretera comença amb una bifurcació en una carretera existent, cliqueu al lloc a on connecten.\n\nA continuació cliqueu a diferents punts al llarg de la carretera per tal que segueixi el traçat correcte, d'acord amb la imatge del satèl·lit o la traça del GPS. Si la carretera que esteu dibuixant s'encreua amb una altra carretera, connecteu-les clicant al punt d'intersecció. Quan acabeu el dibuix, feu doble clic o premeu «Retorn» del teclat.\n",
"gps": "# GPS\n\nLes dades de GPS són la font més fiable de dades per a l'OpenStreetMap. Aquest editor \nés compatible amb les traces locals - fitxers`.gpx`al vostre ordinador. Pots recollir aquest tipus de traça GPS amb algunes aplicacions per a smartphones com també \ndispositius personals de GPS.\n\nPer a més informació sobre com recollir dades amb GPS, llegeix\n[Recollir dades amb GPS](http://learnosm.org/en/beginner/using-gps/).\n\nper fer servir una traça GPX per editar el mapa, arrossega i deixa el fitxer GPX a l'editor. \nSi es detecta, s'afegirà el mapa com una línia verda llampant. \nClica a 'Dades del mapa' al cantó dret per activar,\ndesactivar, o per ajustar la vista a aquesta capa GPX.\n\nLa traça GPX no és pujada directament a OpenStreetMap - la millor manera de \nfer-la servir és dibuixar tu el mapa, fent-la servir com a guia per a les noves característiques que afegiràs. també les pots [pujar a l'OpenStreetMap] \n(http://www.openstreetmap.org/trace/create)\nperquè d'altres persones les utilitzin.\n",
"fields": {
"access": {
"label": "Accés",
- "placeholder": "Desconegut",
- "types": {
- "access": "General",
- "foot": "A peu",
- "motor_vehicle": "Vehicles de motor",
- "bicycle": "Bicicletes",
- "horse": "Cavalls"
- },
"options": {
- "yes": {
- "title": "Permès",
- "description": "Accés garantit per llei; us dona dret de pas"
+ "designated": {
+ "description": "Accés garantit seguint les normes de les senyals o les normes locals específiques.",
+ "title": "Específic"
+ },
+ "destination": {
+ "description": "Accés permès només per arribar a un destí",
+ "title": "Destinació"
},
"no": {
- "title": "Prohibit",
- "description": "No es permet l'accés al públic en general"
+ "description": "No es permet l'accés al públic en general",
+ "title": "Prohibit"
},
"permissive": {
- "title": "Permissiu",
- "description": "Accés garantit fins que el propietari ho prohibeixi."
+ "description": "Accés garantit fins que el propietari ho prohibeixi.",
+ "title": "Permissiu"
},
"private": {
- "title": "Privat",
- "description": "Accés permès només amb autorització individualitzada del propietari"
- },
- "designated": {
- "title": "Específic",
- "description": "Accés garantit seguint les normes de les senyals o les normes locals específiques."
+ "description": "Accés permès només amb autorització individualitzada del propietari",
+ "title": "Privat"
},
- "destination": {
- "title": "Destinació",
- "description": "Accés permès només per arribar a un destí"
+ "yes": {
+ "description": "Accés garantit per llei; us dona dret de pas",
+ "title": "Permès"
}
+ },
+ "placeholder": "Desconegut",
+ "types": {
+ "access": "General",
+ "bicycle": "Bicicletes",
+ "foot": "A peu",
+ "horse": "Cavalls",
+ "motor_vehicle": "Vehicles de motor"
}
},
"access_simple": {
"address": {
"label": "Adreça",
"placeholders": {
+ "city": "Ciutat ",
+ "country": "País",
+ "district": "Districte",
+ "hamlet": "Llogaret",
"housename": "Nom de la casa",
"housenumber": "123",
- "street": "Carrer",
- "city": "Ciutat ",
- "postcode": "Codi postal",
"place": "Lloc",
- "hamlet": "Llogaret",
- "suburb": "Sector",
- "subdistrict": "Subdistricte",
- "district": "Districte",
+ "postcode": "Codi postal",
"province": "Província",
"state": "Estat",
- "country": "País"
+ "street": "Carrer",
+ "subdistrict": "Subdistricte",
+ "suburb": "Sector"
}
},
"admin_level": {
"aerialway/access": {
"label": "Accés",
"options": {
+ "both": "Ambdues",
"entry": "Entrada",
- "exit": "Sortida",
- "both": "Ambdues"
+ "exit": "Sortida"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Accés (estival)",
"options": {
+ "both": "Ambdues",
"entry": "Entrada",
- "exit": "Sortida",
- "both": "Ambdues"
+ "exit": "Sortida"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Direcció",
"options": {
- "N": "Nord",
"E": "Est",
- "S": "Sud",
- "W": "Oest",
- "NE": "Nord-est",
- "SE": "Sud-est",
- "SW": "Sud-oest",
- "NW": "Nord-oest",
- "NNE": "Nord-nord-est",
"ENE": "Est-nord-est",
"ESE": "Est-sud-est",
+ "N": "Nord",
+ "NE": "Nord-est",
+ "NNE": "Nord-nord-est",
+ "NNW": "Nord-nord-oest",
+ "NW": "Nord-oest",
+ "S": "Sud",
+ "SE": "Sud-est",
"SSE": "Sud-sud-est",
"SSW": "Sud-sud-oest",
- "WSW": "Oest-sud-oest",
+ "SW": "Sud-oest",
+ "W": "Oest",
"WNW": "Oest-nord-oest",
- "NNW": "Nord-nord-oest"
+ "WSW": "Oest-sud-oest"
}
},
"clock_direction": {
"label": "Direcció",
"options": {
- "clockwise": "en sentit de les agulles del rellotge",
- "anticlockwise": "en sentit contrari al de les agulles del rellotge"
+ "anticlockwise": "en sentit contrari al de les agulles del rellotge",
+ "clockwise": "en sentit de les agulles del rellotge"
}
},
"collection_times": {
"construction": {
"label": "Tipus"
},
+ "content": {
+ "label": "Continguts"
+ },
"country": {
"label": "País"
},
"description": {
"label": "Descripció"
},
+ "drive_through": {
+ "label": "Via dins una propietat."
+ },
"electrified": {
"label": "Electrificació",
- "placeholder": "Catenària, 3r rail...",
"options": {
"contact_line": "Catenària",
+ "no": "No",
"rail": "3r rail",
- "yes": "Sí (no especificat)",
- "no": "No"
- }
+ "yes": "Sí (no especificat)"
+ },
+ "placeholder": "Catenària, 3r rail..."
},
"elevation": {
"label": "Elevació"
"label": "Tipus",
"options": {
"pillar": "Pilona/visible",
+ "pond": "Bassa",
"underground": "Subterrani",
- "wall": "Mur",
- "pond": "Bassa"
+ "wall": "Mur"
}
},
"fixme": {
"gauge": {
"label": "Ample"
},
+ "gender": {
+ "label": "Gènere",
+ "options": {
+ "female": "Femení",
+ "male": "Masculí",
+ "unisex": "Unisex"
+ },
+ "placeholder": "Desconegut"
+ },
"generator/method": {
"label": "Mètode"
},
"incline": {
"label": "Pendent"
},
+ "incline_steps": {
+ "label": "Inclinar",
+ "options": {
+ "down": "Avall",
+ "up": "Amunt"
+ }
+ },
"information": {
"label": "Tipus"
},
"internet_access": {
"label": "Accés a Internet",
"options": {
- "yes": "Sí",
"no": "No",
- "wlan": "WiFi",
+ "terminal": "Mitjançant un terminal",
"wired": "Per cable",
- "terminal": "Mitjançant un terminal"
+ "wlan": "WiFi",
+ "yes": "Sí"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Cicle del fullatge",
"options": {
- "evergreen": "Perenne",
"deciduous": "Caducifoli",
- "semi_evergreen": "Semiperenne",
+ "evergreen": "Perenne",
+ "mixed": "Barrejat",
"semi_deciduous": "Semicaducifoli",
- "mixed": "Barrejat"
+ "semi_evergreen": "Semiperenne"
}
},
"leaf_type": {
"label": "Tipus de fulles",
"options": {
"broadleaved": "Fulles amples",
- "needleleaved": "Fulles primes",
+ "leafless": "Sense fullatge",
"mixed": "Barrejat",
- "leafless": "Sense fullatge"
+ "needleleaved": "Fulles primes"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Dificultat per a bicicletes de muntanya",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Grava sòlida/terra compactada, sense obstacles, corbes de radi ample",
"1": "1: Algunes zones amb superfície inestable, petits obstacles, corbes de radi ample",
"4": "4: Superfície inestable o còdols, corbes en paella perilloses",
"5": "5: Dificultat màxima, camps de còdols, esllavissades",
"6": "6: No ciclable excepte per als millors ciclistes de muntanya"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Dificultat del camí segons IMBA",
- "placeholder": "Fàcil, Mitjana, Difícil...",
"options": {
"0": "La més fàcil (cercle blanc)",
"1": "Fàcil (cercle verd)",
"2": "Mitjana (quadrat blau)",
"3": "Difícil (diamant negre)",
"4": "Extremadament difícil (diamant negre doble)"
- }
+ },
+ "placeholder": "Fàcil, Mitjana, Difícil..."
},
"mtb/scale/uphill": {
"label": "Dificultat d'ascens per a ciclistes de muntanya",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Incl. mitjana <10%, grava/terra compactada, sense obstacles",
"1": "1: Incl. mitjana <15%. grava/terra compactada, pocs i petits obstacles",
"3": "3: Incl. mitjana <25%, superfície variable, roques i banques de la mida d'un puny",
"4": "4: Incl. mitjana <30%, condicions pobres, grans roques/branques",
"5": "5: Molt empinat, generalment la bicicleta ha de ser empesa."
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nom",
"oneway": {
"label": "Sentit únic",
"options": {
+ "no": "No",
"undefined": "Sobreentès que no",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
}
},
"oneway_yes": {
"label": "Sentit únic",
"options": {
+ "no": "No",
"undefined": "Sobreentès que sí",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
}
},
"opening_hours": {
"parking": {
"label": "Tipus",
"options": {
- "surface": "Superfície",
- "multi-storey": "Diversos nivells",
- "underground": "Subterrani",
- "sheds": "Garatges",
"carports": "Aixoplucs",
"garage_boxes": "Boxs",
- "lane": "Adossat a la carretera"
+ "lane": "Adossat a la carretera",
+ "multi-storey": "Diversos nivells",
+ "sheds": "Garatges",
+ "surface": "Superfície",
+ "underground": "Subterrani"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Dificultat",
- "placeholder": "Fàcil, Intermedi, avançat...",
"options": {
- "novice": "Debutants (instrucció)",
- "easy": "Fàcil (pista verda)",
- "intermediate": "Intermedi (Pista blava)",
"advanced": "Avançat (Pista negra nivell I )",
+ "easy": "Fàcil (pista verda)",
"expert": "Expert (Pista negra nivell II)",
+ "extreme": "Extrem (es necessita equipament d'escalada)",
"freeride": "Pista no oficial (fora pistes)",
- "extreme": "Extrem (es necessita equipament d'escalada)"
- }
+ "intermediate": "Intermedi (Pista blava)",
+ "novice": "Debutants (instrucció)"
+ },
+ "placeholder": "Fàcil, Intermedi, avançat..."
},
"piste/grooming": {
"label": "Adequació",
"options": {
- "classic": "Classic",
- "mogul": "Mogul",
"backcountry": "Backcountry",
+ "classic": "Classic",
"classic+skating": "Classic i Skating",
+ "mogul": "Mogul",
"scooter": "Retrack petita/moto de neu",
"skating": "Skating"
}
"label": "Tipus",
"options": {
"downhill": "Descens",
+ "hike": "Raquetes/senderistes",
+ "ice_skate": "Patinatge sobre gel",
"nordic": "Esquí de fons",
+ "playground": "Parc infantil",
"skitour": "Esquí de muntanya",
"sled": "Trineus",
- "hike": "Raquetes/senderistes",
"sleigh": "Trineus multiplaça",
- "ice_skate": "Patinatge sobre gel",
- "snow_park": "Parc per a snowboards",
- "playground": "Parc infantil"
+ "snow_park": "Parc per a snowboards"
}
},
"place": {
"power": {
"label": "Tipus"
},
+ "power_supply": {
+ "label": "Abastament elèctric"
+ },
"railway": {
"label": "Tipus"
},
},
"sac_scale": {
"label": "Dificultat per al senderisme",
- "placeholder": "Muntanysime, Alpinisme...",
"options": {
- "hiking": "T1: Senderisme",
- "mountain_hiking": "T2: Muntanyisme",
- "demanding_mountain_hiking": "T3: Muntanyisme exigent",
"alpine_hiking": "T4: Alpinisme",
"demanding_alpine_hiking": "T5: Alpinisme exigent",
- "difficult_alpine_hiking": "T6: Alpinisme difícil"
- }
+ "demanding_mountain_hiking": "T3: Muntanyisme exigent",
+ "difficult_alpine_hiking": "T6: Alpinisme difícil",
+ "hiking": "T1: Senderisme",
+ "mountain_hiking": "T2: Muntanyisme"
+ },
+ "placeholder": "Muntanysime, Alpinisme..."
+ },
+ "sanitary_dump_station": {
+ "label": "Lavabo"
},
"seasonal": {
"label": "Estacional"
"service": {
"label": "Tipus"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Eina de cadena",
"options": {
- "undefined": "Entès que no",
- "yes": "Sí",
- "no": "No"
+ "no": "No",
+ "undefined": "Sobreentès que és no",
+ "yes": "Sí"
}
},
"service/bicycle/pump": {
"label": "Bombament d'aire",
"options": {
+ "no": "No",
"undefined": "Entès que no",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
+ }
+ },
+ "service_rail": {
+ "label": "Tipus de servei de la via",
+ "options": {
+ "crossover": "Intercambiador",
+ "siding": "Apartador",
+ "spur": "Canvi d'agulles",
+ "yard": "Platja"
}
},
"shelter": {
},
"smoking": {
"label": "Apte per a fumadors",
- "placeholder": "No, Separats, Sí...",
"options": {
- "no": "Prohibit fumar a tot arreu",
- "separated": "A les àrees per a fumadors, no aïllades físicament",
+ "dedicated": "Dedicat a fumadors (ex: club de fumadors)",
"isolated": "A les àrees per a fumadors, aïllades físicament",
+ "no": "Prohibit fumar a tot arreu",
"outside": "Permès a fora",
- "yes": "Permès a tot arreu",
- "dedicated": "Dedicat a fumadors (ex: club de fumadors)"
- }
+ "separated": "A les àrees per a fumadors, no aïllades físicament",
+ "yes": "Permès a tot arreu"
+ },
+ "placeholder": "No, Separats, Sí..."
},
"smoothness": {
"label": "Uniformitat",
- "placeholder": "Rodetes, Rodes, Tot terreny...",
"options": {
+ "bad": "Rodes robustes: bicicleta de muntanya, cotxe, carruatge oriental",
"excellent": "Rodetes: Patí en línia, skateboard",
"good": "Rodes primes: bicicleta de competició",
+ "horrible": "Tot terreny : vehicle utilitari pesant tot terreny",
+ "impassable": "Impassable / Vehicles sense rodes",
"intermediate": "Rodes: bicicleta urbana, cadira de rodes, patinet",
- "bad": "Rodes robustes: bicicleta de muntanya, cotxe, carruatge oriental",
"very_bad": "Gran altura: vehicle utilitari lleuger tot terreny",
- "horrible": "Tot terreny : vehicle utilitari pesant tot terreny",
"very_horrible": "Tot terreny especialitzades: tractors, Quads"
- }
+ },
+ "placeholder": "Rodetes, Rodes, Tot terreny..."
},
"social_facility_for": {
"label": "Persones ateses",
},
"structure": {
"label": "Estructura",
- "placeholder": "Desconegut",
"options": {
"bridge": "Pont",
- "tunnel": "Túnel",
- "embankment": "Terraplè ",
"cutting": "Trinxera",
- "ford": "Ford"
- }
+ "embankment": "Terraplè ",
+ "ford": "Ford",
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Desconegut"
},
"studio_type": {
"label": "Tipus"
},
"takeaway": {
"label": "Per emportar",
- "placeholder": "Sí, No, Només per emportar...",
"options": {
- "yes": "Sí",
"no": "No",
- "only": "Només per emportar"
- }
+ "only": "Només per emportar",
+ "yes": "Sí"
+ },
+ "placeholder": "Sí, No, Només per emportar..."
},
"toilets/disposal": {
"label": "Contenidor",
"options": {
- "flush": "Renovació d'aigua",
- "pitlatrine": "Latrina",
+ "bucket": "Cubell",
"chemical": "Químic",
- "bucket": "Cubell"
+ "flush": "Renovació d'aigua",
+ "pitlatrine": "Latrina"
}
},
"tourism": {
},
"tracktype": {
"label": "Tipus de pista",
- "placeholder": "Sòlid, majoritàriament sòlid, tou...",
"options": {
"grade1": "Sòlid: pavimentat o amb superfície altament compactada",
"grade2": "Majoritàriament sòlid: Grava/roca amb materials tous barrejats",
"grade3": "Barreja uniforme de materials durs i tous",
"grade4": "Majoritàriament tou: terra/sorra/herba amb alguns materials durs barrejats",
"grade5": "Tou: terra/sorra/herba"
- }
+ },
+ "placeholder": "Sòlid, majoritàriament sòlid, tou..."
},
"trail_visibility": {
"label": "Visibilitat del camí",
- "placeholder": "Excel·lent, Bona, Dolenta...",
"options": {
+ "bad": "Dolenta: sense marcadors. el camí a vegades no es veu/no hi és",
"excellent": "Excel·lent: camí no ambigu o amb presència de marques a tots llocs",
"good": "Bona: marcadors visibles, a vegades cal cercar-los",
- "intermediate": "Intermedia: pocs marcadors, el camí es majoritàriament visible",
- "bad": "Dolenta: sense marcadors. el camí a vegades no es veu/no hi és",
"horrible": "Horrible: a vegades sense camí, calen nocions d'orientació",
+ "intermediate": "Intermedia: pocs marcadors, el camí es majoritàriament visible",
"no": "Nul·la: sense camí, calen coneixements experts d'orientació"
- }
+ },
+ "placeholder": "Excel·lent, Bona, Dolenta..."
},
"trees": {
"label": "Arbres"
"water": {
"label": "Tipus"
},
+ "water_point": {
+ "label": "Punt d'aigua"
+ },
"waterway": {
"label": "Tipus"
},
"name": "Restaurant",
"terms": "Restaurant, Lloc per menjar, Bistro, Wok, Trattoria, Pizzeria"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Estació de buidatge de lavabos"
+ },
"amenity/school": {
"name": "Escola",
"terms": "Escola, CEIP, IES, Col·legi, Institut, Centre educatiu, Guarderia"
"landuse/churchyard": {
"name": "Terrenys d'església"
},
+ "landuse/commercial": {
+ "name": "Zona Comercial"
+ },
"landuse/construction": {
"name": "Zona en construcció",
"terms": "En construcció"
},
+ "landuse/farm": {
+ "name": "Zona Agrícola"
+ },
+ "landuse/farmland": {
+ "name": "Zona Agrícola"
+ },
"landuse/farmyard": {
"name": "Edificis de Granja",
"terms": "Granja, Granges, Galliner, Estable, Mas, Masia, Masoveria, Ranxo, Nau, Naus, Dipòsit, Femta, Fems, Fem, Porc, Porcs, Purí, Purins, Gallina, Gallines, Conill, Conills, Pinso, Tancat, Tanca, Valles, Valla"
"name": "Herba",
"terms": "Herba,Gespa"
},
+ "landuse/industrial": {
+ "name": "Zona Industrial"
+ },
"landuse/landfill": {
"name": "Abocador"
},
"name": "Prat",
"terms": "Prat,Prada,Natural"
},
+ "landuse/military": {
+ "name": "Zona Militar"
+ },
"landuse/orchard": {
"name": "Verger",
"terms": "Horta,Hort,Plantació"
"name": "Mina a cel obert",
"terms": "Pedrera"
},
+ "landuse/residential": {
+ "name": "Zona Residencial"
+ },
+ "landuse/retail": {
+ "name": "Zona de Comerç minorista"
+ },
"landuse/vineyard": {
"name": "Vinya",
"terms": "Vinyar, Vinyal, Vinyet, Vinya"
"name": "Far",
"terms": "Far"
},
+ "man_made/mast": {
+ "name": "Torre de ràdio"
+ },
"man_made/observation": {
"name": "Torre de vigilància"
},
+ "man_made/petroleum_well": {
+ "name": "Pou petrolífer"
+ },
"man_made/pier": {
"name": "Moll de pilons",
"terms": "Moll,Dàrsena"
"name": "Canonada",
"terms": "Gàseoducte,Oleoducte,Canonades"
},
+ "man_made/silo": {
+ "name": "Sitja"
+ },
+ "man_made/storage_tank": {
+ "name": "Dipòsit d'emmagatzematge"
+ },
"man_made/survey_point": {
"name": "Punt referencial",
"terms": "Punt de salvació,Punt de salvament,Punt d'evacuació"
"name": "Ciutat ",
"terms": "Ciutat, Municipi"
},
+ "place/farm": {
+ "name": "Granja"
+ },
"place/hamlet": {
"name": "Llogaret"
},
"name": "Relació",
"terms": "Relació"
},
+ "roundabout": {
+ "name": "Rotonda"
+ },
"route/ferry": {
"name": "Ruta de ferri"
},
"shop/hifi": {
"name": "Botiga d'alta fidelitat"
},
+ "shop/houseware": {
+ "name": "Botiga de la llar"
+ },
"shop/interior_decoration": {
"name": "Botiga d'Interiorisme"
},
"name": "Torrent",
"terms": "Torrentera, Rambla"
},
+ "waterway/fuel": {
+ "name": "Benzinera per a embarcacions"
+ },
"waterway/river": {
"name": "Riu",
"terms": "Riu"
"name": "Banc fluvial",
"terms": "Riba del riu, Ribera"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Lavabo per a vaixells"
+ },
"waterway/stream": {
"name": "Rierol",
"terms": "Séquia, rierol, Fil d'aigua, Rajolí, Riuet, Ramal, Reguer, Segla, Canal, Rec, Regueró, Sequiola, Sequió, Cavim."
"tail": "Klikněte na mapu a začněte tak kreslit plochu, jako třeba park, jezero nebo budovu."
},
"add_line": {
- "title": "Cesta",
- "description": "Přidat do mapy silnice, ulice, stezky, potoky či jiné cesty.",
+ "title": "Čára",
+ "description": "Přidat do mapy silnice, ulice, stezky, potoky či jiné čáry.",
"tail": "Klikněte na mapu a začněte tak kreslit silnice, stezky nebo trasy."
},
"add_point": {
"tail": "Uzly k oblasti přidáte kliknutím. Oblast uzavřete kliknutím na první uzel."
},
"draw_line": {
- "tail": "Uzly k cestě přidáte kliknutím. Když kliknete na jinou cestu, připojíte cesty k sobě. Cestu ukončíte dvojklikem."
+ "tail": "Uzly k čáře přidáte kliknutím. Když kliknete na jinou čáru, připojíte čáry k sobě. Editaci ukončíte dvojklikem."
}
},
"operations": {
"add": {
"annotation": {
"point": "Přidán uzel.",
- "vertex": "Přidán uzel k cestě.",
+ "vertex": "Přidán uzel k čáře.",
"relation": "Přidána relace."
}
},
"start": {
"annotation": {
- "line": "Vytvořen začátek cesty.",
+ "line": "Vytvořen začátek čáry.",
"area": "Vytvořen začátek plochy."
}
},
"continue": {
"key": "A",
"title": "Pokračovat",
- "description": "Navázat na cestu.",
- "not_eligible": "Nelze navázat na žádnou cestu.",
- "multiple": "Zde je možné navázat na několik cest. Stiskněte klávesu Shift a kliknutím zvolte jednu z cest.",
+ "description": "Navázat na čáru.",
+ "not_eligible": "Nelze navázat na žádnou čáru.",
+ "multiple": "Zde je možné navázat na několik čar. Stiskněte klávesu Shift a kliknutím zvolte jednu z čar.",
"annotation": {
- "line": "Cesta pokračuje.",
+ "line": "Prodloužena čára.",
"area": "Plocha pokračuje."
}
},
"circularize": {
"title": "Zakulatit",
"description": {
- "line": "Udělat z této cesty kruh.",
+ "line": "Udělat z této čáry kruh.",
"area": "Udělat z této plochy kruh."
},
"key": "O",
"annotation": {
- "line": "Zakulacena cesta.",
+ "line": "Zakulacena čára.",
"area": "Zakulacena plocha."
},
"not_closed": "Z objektu nelze udělat kruh, protože nejde o smyčku.",
"too_large": "Z objektu nelze udělat kruh, protože není vidět dostatečně velká část.",
- "connected_to_hidden": "Z objektu nelze udělat kruh, protože je napojen na skytý objekt."
+ "connected_to_hidden": "Z objektu nelze udělat kruh, protože je napojen na skrytý objekt."
},
"orthogonalize": {
"title": "Zhranatit",
"description": {
- "line": "Udělat rohy této cesty do hranata.",
+ "line": "Udělat rohy této čáry do hranata.",
"area": "Udělat rohy této plochy do hranata."
},
"key": "S",
"annotation": {
- "line": "Úhly cesty do pravého úhle.",
+ "line": "Úhly čáry do pravého úhle.",
"area": "Rohy plochy do pravého úhle."
},
"not_squarish": "Objekt nelze zhranatit, protože se čtverci vůbec nepodobá.",
},
"straighten": {
"title": "Narovnat",
- "description": "Narovnat tuto cestu.",
+ "description": "Narovnat tuto čáru.",
"key": "S",
- "annotation": "Narovnána cesta",
+ "annotation": "Narovnána čára",
"too_bendy": "Objekt nelze narovnat, protože je příliš zakroucený.",
- "connected_to_hidden": "Cestu nelze narovnat, protože je napojená na skytý objekt."
+ "connected_to_hidden": "Čáru nelze narovnat, protože je napojená na skrytý objekt."
},
"delete": {
"title": "Smazat",
"description": "Smazat objekt trvale.",
"annotation": {
"point": "Smazán uzel.",
- "vertex": "Smazán uzel z cesty.",
- "line": "Smazána cesta.",
+ "vertex": "Smazán uzel z čáry.",
+ "line": "Smazána čára.",
"area": "Smazána plocha.",
"relation": "Smazána relace.",
"multiple": "Bylo smazáno {n} objektů."
},
"incomplete_relation": "Objekt nelze smazat, protože je stažený jen částečně.",
+ "part_of_relation": "Objekt nelze smazat, protože je součástí rozsáhlejší relace. Musíte ho napřed z této relace vyřadit.",
"connected_to_hidden": "Objekt nelze smazat, protože je napojen na skrytý objekt."
},
"add_member": {
},
"connect": {
"annotation": {
- "point": "Cesta byla připojena k uzlu.",
- "vertex": "Cesta byla připojena k jiné cestě.",
- "line": "Cesta byla připojena k cestě.",
- "area": "Cesta byla připojena k ploše."
+ "point": "Čára byla připojena k uzlu.",
+ "vertex": "Čára byla připojena k jiné čáře.",
+ "line": "Čára byla připojena k čáře.",
+ "area": "Čára byla připojena k ploše."
}
},
"disconnect": {
"title": "Rozpojit",
- "description": "Rozpojit tyto cesty/plochy.",
+ "description": "Rozpojit tyto čáry/plochy.",
"key": "D",
- "annotation": "Cesty/plochy byly rozpojeny.",
- "not_connected": "Není tu žádná cesta/plocha, kterou by bylo možné rozpojit.",
+ "annotation": "Čáry/plochy byly rozpojeny.",
+ "not_connected": "Není tu žádná čára/plocha, kterou by bylo možné rozpojit.",
"connected_to_hidden": "Toto nelze rozpojit, protože je to napojeno na skrytý objekt."
},
"merge": {
"title": "Spojit",
- "description": "Spojit tyto cesty.",
+ "description": "Spojit tyto čáry.",
"key": "C",
- "annotation": "Cesty spojeny (celkem {n}).",
+ "annotation": "Čáry spojeny (celkem {n}).",
"not_eligible": "Objekty nelze spojit v jeden.",
- "not_adjacent": "Tyto cesty nelze spojit v jednu, protože nekončí v jednom bodě.",
- "restriction": "Tyto cesty není možné spojit, protože aspoň jedna z nich je členem relace \"{relation}\".",
+ "not_adjacent": "Tyto čáry nelze spojit v jednu, protože nekončí v jednom bodě.",
+ "restriction": "Tyto čáry není možné spojit, protože aspoň jedna z nich je členem relace \"{relation}\".",
"incomplete_relation": "Tyto objekty nelze spojit, protože jsou stažené jen částečně."
},
"move": {
"key": "M",
"annotation": {
"point": "Posunut uzel.",
- "vertex": "Posunut uzel v cestě.",
- "line": "Posunuta cesta.",
+ "vertex": "Posunut uzel v čáře.",
+ "line": "Posunuta čára.",
"area": "Posunuta plocha.",
"multiple": "Posunuty objekty."
},
"description": "Otočit tento objekt okolo středu.",
"key": "R",
"annotation": {
- "line": "Cesta byla otočena.",
+ "line": "Čára byla otočena.",
"area": "Plocha byla pootočena."
},
"too_large": "Objekt nelze otočit, protože není vidět dostatečně velká část.",
},
"reverse": {
"title": "Převrátit",
- "description": "Změnit směr cesty na opačný.",
+ "description": "Změnit směr čáry na opačný.",
"key": "V",
- "annotation": "Ceta byla převrácena."
+ "annotation": "Čára byla převrácena."
},
"split": {
"title": "Rozdělit",
"description": {
- "line": "Zvolenou cestu rozdělit v tomto uzlu na dvě.",
+ "line": "Zvolenou čáru rozdělit v tomto uzlu na dvě.",
"area": "Rozdělit hranici této plochy na dvě.",
- "multiple": "Cestu/hranici plochy v tomto uzlu rozdělit na dvě."
+ "multiple": "Čáru/hranici plochy v tomto uzlu rozdělit na dvě."
},
"key": "X",
"annotation": {
- "line": "Cesta rozdělena.",
+ "line": "Čára rozdělena.",
"area": "Rozdělit hranici plochy.",
- "multiple": "Rozdělit {n} cest/hranic plochy."
+ "multiple": "Rozdělit {n} čar/hranic plochy."
},
- "not_eligible": "Cestu nelze rozdělit v jejím začátku ani konci.",
- "multiple_ways": "Není jasné, kterou cestu rozdělit.",
+ "not_eligible": "Čáru nelze rozdělit v jejím začátku ani konci.",
+ "multiple_ways": "Není jasné, kterou čáru rozdělit.",
"connected_to_hidden": "Toto nelze rozdělit, protože je to napojené na skrytý objekt."
},
"restriction": {
"nothing": "Není co znovu provádět."
},
"tooltip_keyhint": "Zkratka:",
- "browser_notice": "Tento editor funguje ve Firefoxu, Chrome, Safari, Opeře a Internet Exploreru od verze 9. Musíte tedy upgradovat na novější verzi prohlížeče; nebo použijte editor Potlatch 2.",
+ "browser_notice": "Tento editor funguje ve Firefoxu, Chrome, Safari, Opeře a Internet Exploreru od verze 9. Musíte tedy aktualizovat na novější verzi prohlížeče nebo použijte editor Potlatch 2.",
"translate": {
"translate": "Přeložit",
"localized_translation_label": "Mezinárodní název",
"loading_auth": "Připojuji se na OpenStreetMap...",
"report_a_bug": "ohlásit chybu",
"feature_info": {
- "hidden_warning": "{count} skrytých objetků",
+ "hidden_warning": "{count} skrytých objektů",
"hidden_details": "Tyto objekty jsou právě skryté: {details}"
},
"status": {
"commit": {
"title": "Uložit změny",
"description_placeholder": "Stručný popis vašich úprav",
- "message_label": "Zpráva k publikaci",
+ "message_label": "Komentář ke změnám",
"upload_explanation": "Vámi provedené změny budou viditelné na všech mapách postavených na datech z OpenStreetMap.",
"upload_explanation_with_user": "Změny provedené pod jménem {user} budou viditelné na všech mapách postavených na datech z OpenStreetMap.",
"save": "Uložit",
"list": "Přispěli {users}",
"truncated_list": "Přispěli {users} a {count} další."
},
+ "infobox": {
+ "selected": "zvoleno {n}",
+ "geometry": "Geometrie",
+ "closed": "uzavřená",
+ "center": "Střed",
+ "perimeter": "Obvod",
+ "length": "Délka",
+ "area": "Plocha",
+ "centroid": "Těžiště",
+ "location": "Poloha",
+ "metric": "Metrické jednotky",
+ "imperial": "Imperiální jednotky"
+ },
+ "geometry": {
+ "point": "uzel",
+ "vertex": "uzel",
+ "line": "čára",
+ "area": "plocha",
+ "relation": "relace"
+ },
"geocoder": {
"search": "Hledat celosvětově...",
"no_results_visible": "Na zobrazené části mapy nic nalezeno",
},
"none": "Žádné",
"node": "Uzel",
- "way": "Cesta",
+ "way": "Čára",
"relation": "Relace",
"location": "Poloha",
"add_fields": "Přidat pole:"
"title": "Mapová data",
"description": "Mapová data",
"data_layers": "Datové vrstvy",
- "fill_area": "Vyplňující plochy",
+ "fill_area": "Vyplnění ploch",
"map_features": "Mapové objekty",
- "autohidden": "Tyto objekty jsou nyní skryté, protože jinak by na mapě byl strašný bordel. Když mapu zvětšíte, můžete je zobrazit a editovat."
+ "autohidden": "Tyto objekty jsou nyní skryté, protože jinak by jich na mapě bylo zobrazeno příliš mnoho. Když mapu zvětšíte, můžete je zobrazit a editovat."
},
"feature": {
"points": {
"title": "Uložit",
"help": "Uložit změny do OpenStreetMap, aby je viděli ostatní uživatelé.",
"no_changes": "Není co uložit.",
- "error": "Při ukládání došlo k chybě.",
+ "error": "Při pokusu o uložení se vyskytly chyby",
+ "status_code": "Server vrátil stavový kód {code}",
"unknown_error_details": "Ujistěte se, prosím, že jste připojen k internetu.",
"uploading": "Ukládám úpravy na OpenStreetMap.",
- "unsaved_changes": "Vaše úpravy nebyly uloženy"
+ "unsaved_changes": "Vaše úpravy nebyly uloženy",
+ "conflict": {
+ "header": "Vyřešit konflikty mezi editacemi",
+ "count": "Konflikt č. {num} z {total}",
+ "previous": "< Předchozí",
+ "next": "Další >",
+ "keep_local": "Nechat moji",
+ "keep_remote": "Použít cizí",
+ "restore": "Obnovit",
+ "delete": "Nechat smazané",
+ "download_changes": "Nebo stáhnout vaše úpravy.",
+ "done": "Všechny konflikty vyřešeny!",
+ "help": "Jiný uživatel upravil některé z objektů, které jste editoval/a i vy.\nProjděte prosím detailně níže uvedené položky a vyberte, jestli chcete nechat v platnosti vaše nebo cizí úpravy.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Tento objekt smazal uživatel {user}.",
+ "location": "Tento objekt přesunul uživatel {user} i vy.",
+ "nodelist": "Uzly upravil uživatel {user} i vy.",
+ "memberlist": "Členy relace upravil uživatel {user} i vy.",
+ "tags": "Nastavil/a jste vlastnost <b>{tag}</b> na \"{local}\", zatímco uživatel {user} ji změnil na \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM upraveno!",
"help_html": "Vaše úpravy by se obvykle měly objevit na \"Standardní\" vrstvě během několika minut. U některých objektů a ostatních vrstev to může trvat déle⏎\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detaily anglicky</a>).⏎\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Storno"
},
"splash": {
"welcome": "Vítá vás iD, program pro editaci OpenStreetMap",
},
"validations": {
"untagged_point": "Neoznačený bod",
- "untagged_line": "Neoznačená cesta",
+ "untagged_line": "Neoznačená čára",
"untagged_area": "Neoznačená plocha",
"many_deletions": "Pokoušíte se smazat {n} objektů. Opravdu to chcete provést? Odstranilo by je z globální mapy na openstreetmap.org.",
- "tag_suggests_area": "Vlastnost {tag} obvykle označuje plochu - ale zvolený objekt není plocha",
+ "tag_suggests_area": "Vlastnost {tag} obvykle označuje plochu, ale zvolený objekt není plocha",
"untagged_point_tooltip": "Zvolte typ vlastnosti popisující, co je tento bod zač.",
"untagged_line_tooltip": "Zvolte typ vlastnosti popisující, co je tato čára zač.",
"untagged_area_tooltip": "Zvolte typ vlastnosti popisující, co je tato plocha zač.",
"browse": "Zvolit .gpx soubor v dialogu"
},
"mapillary": {
- "tooltip": "Fotografie na úrovni zobrazení ulice z Mapillary",
- "title": "Překrytí fotografií (Mapillary)",
+ "tooltip": "Fotografie z úrovně ulice z Mapillary",
+ "title": "Vrstva fotografií (Mapillary)",
"view_on_mapillary": "Zobrazit tento obrázek na Mapillary"
},
"help": {
"title": "Pomoc",
- "help": "# Pomoc\n\nToto je editor [OpenStreetMap](http://www.openstreetmap.org/), svobodné a otevřené mapy světa, vytvářené jako open-source a open-data. S pomocí editoru můžete přidávat a upravovat data v mapě třeba ve svém okolí, a zlepšovat tak celou mapu pro každého.\n\nVaše úpravy mapy budou viditelné každým, kdo používá OpenStreetMap. Je ovšem třeba mít uživatelský účet na OpenStreetMap, který si můžete [snadno a zdarma zřídit](https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) je projekt vytvářený spoluprácí více lidí, se [zdrojovým kódem na GitHubu](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Editace a publikace\n\nTento editor pracuje primárně online - právě teď k němu přistupujete prostřednictvím webové stránky.\n\n### Výběr objektů\n\nChcete-li vybrat objekt, jako třeba silnici nebo obchod, klikněte na něj v mapě. Objekt se tím označí, otevře se boční panel s vlastnostmi objektu a zobrazí se nabídka akcemi, které lze s objektem provést.\n\nMůžete označit a pracovat s několika objekty najednou: podržte klávesu 'Shift', a pak buď postupně označte dotyčné objekty, anebo klikněte na mapu a táhněte myší či prstem - editor označí všechny objekty uvnitř příslušného obdélníku.\n\n### Publikace změn\n\nKdyž provedete nějaké úpravy objektů v mapě, úpravy jsou uloženy lokálně ve vašem prohlížeči. Nelekejte se, když uděláte chybu - úpravy lze vrátit zpět tlačítkem Zpět, a naopak je znovu provést tlačítkem Znovu.\n\nPo dokončení bloku úprav klikněte na 'Uložit' - například když jste upravili jednu část města, a chcete začít úpravy někde jinde. Zobrazí se přehled úprav, které jste provedli, editor tyto úpravy zkontroluje, a když se mu něco nebude zdát, zobrazí varování a návrhy.\n\nKdyž bude všechno v pořádku, můžete přidat krátký komentář s vysvětlením vašich úprav a kliknout znovu 'Uložit'. Úpravy se tímto publikují na [OpenStreetMap.org](http://www.openstreetmap.org/), kde za chvíli budou viditelné pro všechny uživatele a bude na nich možné provádět další úpravy.\n\nPokud nechcete nebo nemůžete pravy dokončit teď, stačí prostě odejít ze stránky pryč. Až příště navštívíte stránku (na stejném počítači, ve stejném prohlížeči), editor vám nabídne možnost znovu načíst neuložené úpravy.\n",
+ "help": "# Pomoc\n\nToto je editor [OpenStreetMap](http://www.openstreetmap.org/), svobodné a otevřené mapy světa, vytvářené jako open-source a open-data. S pomocí editoru můžete přidávat a upravovat data v mapě třeba ve svém okolí, a zlepšovat tak celou mapu pro každého.\n\nVaše úpravy mapy budou viditelné pro každého uživatele OpenStreetMap. Před editací se ovšem musíte [přihlásit](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) je projekt vytvářený spoluprací mnoha lidí, se [zdrojovým kódem na GitHubu](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Editace a publikace\n\nTento editor pracuje primárně online - právě teď k němu přistupujete prostřednictvím webové stránky.\n\n### Výběr objektů\n\nChcete-li vybrat objekt, jako třeba silnici nebo obchod, klikněte na něj v mapě. Objekt se tím označí, otevře se boční panel s vlastnostmi objektu a zobrazí se nabídka akcemi, které lze s objektem provést.\n\nMůžete označit a pracovat s několika objekty najednou: podržte klávesu 'Shift', a pak buď postupně označte dotyčné objekty, anebo klikněte na mapu a táhněte myší či prstem - editor označí všechny objekty uvnitř příslušného obdélníku.\n\n### Publikace změn\n\nKdyž provedete nějaké úpravy objektů v mapě, úpravy jsou uloženy lokálně ve vašem prohlížeči. Nelekejte se, když uděláte chybu - úpravy lze vrátit zpět tlačítkem Zpět, a naopak je znovu provést tlačítkem Znovu.\n\nPo dokončení bloku úprav klikněte na 'Uložit' - například když jste upravili jednu část města, a chcete začít úpravy někde jinde. Zobrazí se přehled úprav, které jste provedli, editor tyto úpravy zkontroluje, a když se mu něco nebude zdát, zobrazí varování a návrhy.\n\nKdyž bude všechno v pořádku, můžete přidat krátký komentář s vysvětlením vašich úprav a kliknout znovu 'Uložit'. Úpravy se tímto publikují na [OpenStreetMap.org](http://www.openstreetmap.org/), kde za chvíli budou viditelné pro všechny uživatele a bude na nich možné provádět další úpravy.\n\nPokud nechcete nebo nemůžete úpravy dokončit teď, stačí prostě odejít ze stránky pryč. Až příště navštívíte stránku (na stejném počítači, ve stejném prohlížeči), editor vám nabídne možnost znovu načíst neuložené úpravy.\n",
"roads": "# Cesty\n\nEditor umožňuje vytvářet, opravovat a mazat silnice, pěšiny, cyklostezky, železnice atd. Zmapovat by mělo jít jakýkoli druh komunikace.\n\n### Výběr\n\nKdyž na cestu kliknete, zbarví se její obrys, otevře se u ní malá nabídka s nástroji a dále boční panel s informacemi o cestě.\n\n### Úpravy\n\nČasto narazíte na cesty, které jen nepřesně sledují pozadí či trasu GPS. Takové cesty můžete zarovnat na správné místo.\n\nNapřed klikněte na cestu, kterou chcete upravit. Cesta se rozsvítí a podél ní se objeví kontrolní uzly, které můžete posunout na správné místo. Pokud chcete přidat další kontrolní body a zpřesnit tak průběh cesty, stačí dvakrát kliknout na kus cesty mezi dvěma uzly - na zvolené místo přibude nový uzel.\n\nKdyž je reálná cesta napojena na jinou, ale v mapě spojeny nejsou, posuňte myší kontrolní uzel jedné cesty nad druhou - cesty se pak spojí. Propojení cest je velmi důležité pro správnou funkci navigací.\n\nTaké můžete posunout najednou celou cestu: buď klikněte na ikonu posunu v menu zobrazeném u cesty nebo stiskněte klávesu `M` a potom klikněte myší pro ukončení posunu. Jen pozor - pokud jsou vůči pozadí či GPS stopě všechny objekty v okolí, pravděpodobně to bude chybným pozadím a ne chybnou polohou objektů.\n\n### Mazání\n\nPokud je cesta úplně špatně, můžete ji zcela odstranit z mapy. Neměli byste se spoléhat pouze na satelitní snímky - mohou být zastaralé nebo zavádějící -, ideální je se přesvědčit na místě, že cesta opravdu neexistuje. Zvlášť při mazání objektů buďte opatrní - výsledek vaší úpravy se projeví v mapě pro všechny její uživatele.\n\nCestu smažete tak, že na ni kliknete a zvolíte ikonu odpadkového koše nebo stisknete klávesu Delete.\n\n### Vytváření\n\nNarazili jste na cestu, která by v mapě měla být, ale není? Klikněte na tlačítko 'Cesta' vlevo nahoře nebo stiskněte klávesu `2` - to vám umožní nakreslit novou cestu.\n\nKlikněte na místo, kde cesta začíná. Pokud cesta vychází z jiné, existující cesty, klikněte na místo, kde se cesty oddělují.\n\nPotom postupně klikejte na body, kudy cesta vede, podle satelitních snímků nebo trasy z GPS. Pokud vaše cesta protíná jinou, je třeba je propojit tak, že kliknete na bod křížení. Nakonec dvakrát klikněte na stejné místo nebo stiskněte klávesu 'Return' nebo 'Enter', cesta se tak ukončí.\n",
"gps": "# GPS\n\nData z GPS jsou nejdůvěryhodnějším zdrojem informací pro OpenStreetMap. Tento editor podporuje zobrazení tras ve formátu `.gpx` nahraných z vašeho počítače. Takovou trasu můžete nasbírat s pomocí nejrůznějších aplikací pro mobily nebo s pomocí specializované navigace.\n\nPro více informací, jak provést takový sběr dat z GPS, viz např. návod anglicky: [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nPokud už máte záznam ve formátu GPX, přetáhněte soubor myší či prstem nad editor. Rozpozná-li editor formát souboru, zobrazí se trasa v mapě jako světle růžová čára. Pokud chcete tuto novou vrstvu zapnout, vypnout nebo zvětšit na velikost pracovní plochy, klikněte na menu 'Mapová data' na pravé straně.\n\nTrasa GPX nebude přímo nahrána na OpenStreetMap - pouze slouží jako vodítko, podle kterého se můžete orientovat, a podle kterého můžete kreslit nové objekty do mapy. Pokud chcete přímo trasu GPX poskytnout i ostatním, můžete ji [nahrát do samostatné databáze OpenStreetMap](http://www.openstreetmap.org/trace/create).\n",
- "imagery": "# Podkladové snímky\n\nSatelitní a letecké snímky jsou důležitým zdrojem mapových dat. V menu 'Nastavení pozadí' na levé straně editoru je k dispozici kombinace leteckých snímků, satelitních snímků a dalších volně dostupných podkladů.\n\nImplicitní vrstvou jsou satelitní snímky [Bing](http://www.bing.com/maps/), ale jakmile se přesunete do konkrétní geografické oblasti a nastavíte dostatečné zvětšení, nabídnou se vám další mapové podklady. V některých státech, jako jsou Spojené státy, Francie či Dánskou, jsou k dispozici snímky ve vysoké kvalitě. Pro velkou část České republiky jsou také dostupné velmi detailní satelitní snímky (data z katastru nemovitostí bohužel zatím nejsou v iD jednoduše dostupná).\n\nPodklady jsou někdy posunuté vůči mapě, kvůli chybám na straně poskytovatele snímků. Pokud uvidíte, že je mnoho cest v mapě posunuto vůči pozadí, nesnažte se je hned přesunout - posun obvykle znamená chybu v podkladu a ne chybu v mapě. V menu 'Nastavení pozadí' klikněte na 'Zarovnat pozadí' - to vám dovolí posunout podklad, aby lícoval s mapou.\n",
+ "imagery": "# Podkladové snímky\n\nSatelitní a letecké snímky jsou důležitým zdrojem mapových dat. V menu 'Nastavení pozadí' na levé straně editoru je k dispozici kombinace leteckých snímků, satelitních snímků a dalších volně dostupných podkladů.\n\nImplicitní vrstvou jsou satelitní snímky [Bing](http://www.bing.com/maps/), ale jakmile se přesunete do konkrétní geografické oblasti a nastavíte dostatečné zvětšení, nabídnou se vám další mapové podklady. V některých státech, jako jsou Spojené státy, Francie či Dánskou, jsou k dispozici snímky ve vysoké kvalitě. Pro velkou část České republiky jsou také dostupné velmi detailní satelitní snímky. **Data z katastru nemovitostí a letecké mapy ÚHUL** je možné zobrazit dle [návodu zde](https://wiki.openstreetmap.org/wiki/WikiProject_Czech_Republic/freemap#WMS_UHUL_-_ortofotomapa).\n\nPodklady jsou někdy posunuté vůči mapě, kvůli chybám na straně poskytovatele snímků. Pokud uvidíte, že je mnoho cest v mapě posunuto vůči pozadí, nesnažte se je hned přesunout - posun obvykle znamená chybu v podkladu a ne chybu v mapě. V menu 'Nastavení pozadí' klikněte na 'Zarovnat pozadí' - to vám dovolí posunout podklad, aby lícoval s mapou.\n",
"addresses": "# Adresy\n\nJednou z nejužitečnějších součástí mapy jsou adresy.\n\nAdresy jsou sice někdy chápány jako označení kousku ulice, ale v OpenStreetMap jsou uloženy v budovách či objektech podél ulice. V České republice jsou adresy většinou samostatným uzlem uvnitř budovy.\n\nMůžete tedy data o adrese vkládat jak k samostatnému bodu, tak k ploše označující budovu.\nNejlepším zdrojem informací o adresách je průzkum přímo v terénu či jeho dobrá znalost - stejně jako u celého projektu OpenStreetMap je přebírání dat z komerčních zdrojů typu Google Maps přísně zakázáno.\n",
- "inspector": "# Používání Inspektoru\n\nInspektor je prvek uživatelského rozhraní na levé straně, který umožňuje editovat vlastnosti zvoleného objektu.\n\n### Výběr typu objektu\n\nJakmile vytvoříte uzel, cestu nebo plochu, můžete zvolit typ vytvořeného objektu. Např. jestli jde o silnici nebo pěšinu, obchod nebo hospodu. Inspektor zobrazí tlačítka pro nejčastější typy objektů; další můžete najít prostřednictvím pole pro vyhledávání.\n\nKdyž u tlačítka typu objektu kliknete na 'i' vpravo dole, zobrazí se vám o něm více informací. Když kliknete na samotné tlačítko, vyberete příslušný typ.\n\n### Formuláře a editace vlastností\n\nPoté, co vyberete typ objektu nebo když vyberete objekt s už přiřazeným typem, v inspektoru se zobrazí pole s bližšími informacemi o objektu - jako třeba název nebo adresa.\n\nPod těmito poli jsou další ikony. Když na ně kliknete, tak můžete přidávat další detaily, jako vazbu na [Wikipedii](http://www.wikipedia.org/), přístup pro vozíčkáře atd.\n\nPokud chcete přidat k objektu ještě nějaké jiné vlastnosti, klikněte na 'Další vlastnosti' úplně dole. Jedním z informačních zdrojů pak může být [Taginfo](http://taginfo.openstreetmap.org/), kde se dozvíte o nejčastějších kombinacích tagů.\n\nZměny provedené v inspektoru jsou ihned vidět na mapě zobrazené ve vašem prohlížeči. Můžete je vrátit zpět kliknutím na tlačítko 'Undo'.\n",
- "buildings": "# Budovy\n\nOpenStreetMap je největší databází budov na světě. Můžete tuto databázi rozšiřovat a vylepšovat.\n\n### Výběr\n\nBudovu označíte kliknutím na její hranici. Budova se v editoru rozsvítí, otevře se malá nabídka nástrojů a boční panel s informacemi o budově.\n\n### Úpravy\n\nBudovy někdy mohou mít špatnou polohu, tvar nebo nesprávné vlastnosti.\n\nPokud chcete posunout celou budovu, označte ji a kliněte na ikonu posunu - pak můžete pohnout budovou myší. Posun ukončíte kliknutím.\n\nKdyž má budova špatný tvar, klikněte na uzel na hranici budovy a posuňte ho na správné místo.\n\n### Vytváření\n\nMohou být budovy v mapě zaznamenané jako plochy, nebo jako samostatné uzly? Pravidlo je takové, že _pokud je to možné, budovy by se měly mapovat jako plochy_, a firmy, podniky, zařízení a další subjekty působící v budově by se měly mapovat jako uzly uvnitř budovy. V České republice se jako uzly uvnitř budovy obvykle mapují i adresy.\n\nChcete-li nakreslit novou budovu, klikněte na tlačítko 'Plocha' vlevo nahoře a klikáním nakreslete obrys budovy. Kreslení ukončíte buď kliknutím na první nakreslený uzel nebo stisknutím klávesy 'Enter' nebo 'Return'.\n\n### Smazání\n\nBudovy lze také mazat - ale dělejte to pouze v případě, že jste si opravdu jistí, že budova ve skutečnosti neexistuje. Satelitní snímky nejsou dostatečným důkazem, protože mohou být zastaralé nebo zavádějící. Buďte opatrní - když budovu smažete, budova zmizí z mapy pro všechny její uživatele.\n\nBudovu smažete tak, že ji označíte kliknutím a potom buď kliknete na ikonu odpadkového koše, nebo stisknete klávesu 'Delete'.\n",
+ "inspector": "# Používání Inspektoru\n\nInspektor je prvek uživatelského rozhraní na levé straně, který umožňuje editovat vlastnosti zvoleného objektu.\n\n### Výběr typu objektu\n\nJakmile vytvoříte uzel, čáru nebo plochu, můžete zvolit typ vytvořeného objektu. Např. jestli jde o silnici nebo pěšinu, obchod nebo hospodu. Inspektor zobrazí tlačítka pro nejčastější typy objektů; další můžete najít prostřednictvím pole pro vyhledávání.\n\nKdyž u tlačítka typu objektu kliknete na 'i' vpravo dole, zobrazí se vám o něm více informací. Když kliknete na samotné tlačítko, vyberete příslušný typ.\n\n### Formuláře a editace vlastností\n\nPoté, co vyberete typ objektu nebo když vyberete objekt s už přiřazeným typem, v inspektoru se zobrazí pole s bližšími informacemi o objektu - jako třeba název nebo adresa.\n\nPod těmito poli jsou další ikony. Když na ně kliknete, tak můžete přidávat další detaily, jako vazbu na [Wikipedii](http://www.wikipedia.org/), přístup pro vozíčkáře atd.\n\nPokud chcete přidat k objektu ještě nějaké jiné vlastnosti, klikněte na 'Další vlastnosti' úplně dole. Jedním z informačních zdrojů pak může být [Taginfo](http://taginfo.openstreetmap.org/), kde se dozvíte o nejčastějších kombinacích tagů.\n\nZměny provedené v inspektoru jsou ihned vidět na mapě zobrazené ve vašem prohlížeči. Můžete je vrátit zpět kliknutím na tlačítko 'Undo'.\n",
+ "buildings": "# Budovy\n\nOpenStreetMap je největší databází budov na světě. Můžete tuto databázi rozšiřovat a vylepšovat.\n\n### Výběr\n\nBudovu označíte kliknutím na její hranici. Budova se v editoru rozsvítí, otevře se malá nabídka nástrojů a boční panel s informacemi o budově.\n\n### Úpravy\n\nBudovy někdy mohou mít špatnou polohu, tvar nebo nesprávné vlastnosti.\n\nPokud chcete posunout celou budovu, označte ji a klikněte na ikonu posunu - pak můžete pohnout budovou myší. Posun ukončíte kliknutím.\n\nKdyž má budova špatný tvar, klikněte na uzel na hranici budovy a posuňte ho na správné místo.\n\n### Vytváření\n\nMohou být budovy v mapě zaznamenané jako plochy, nebo jako samostatné uzly? Pravidlo je takové, že _pokud je to možné, budovy by se měly mapovat jako plochy_, a firmy, podniky, zařízení a další subjekty působící v budově by se měly mapovat jako uzly uvnitř budovy. V České republice se jako uzly uvnitř budovy obvykle mapují i adresy.\n\nChcete-li nakreslit novou budovu, klikněte na tlačítko 'Plocha' vlevo nahoře a klikáním nakreslete obrys budovy. Kreslení ukončíte buď kliknutím na první nakreslený uzel nebo stisknutím klávesy 'Enter' nebo 'Return'.\n\n### Smazání\n\nBudovy lze také mazat - ale dělejte to pouze v případě, že jste si opravdu jistí, že budova ve skutečnosti neexistuje. Satelitní snímky nejsou dostatečným důkazem, protože mohou být zastaralé nebo zavádějící. Buďte opatrní - když budovu smažete, budova zmizí z mapy pro všechny její uživatele.\n\nBudovu smažete tak, že ji označíte kliknutím a potom buď kliknete na ikonu odpadkového koše, nebo stisknete klávesu 'Delete'.\n",
"relations": "# Relace\n\nRelace je speciálním typem objektu OpenStreetMap, který seskupuje dohromady jiné objekty.\nDvěma nejčastějšími příklady relací jsou *relace trasy*, které obsahují seznam částí cest, po kterých vede nějaká trasa, a *multipolygony*, které obsahují seznam jednoduchých ploch tvořících dohromady složitější plochu (např. plochu z několika částí nebo s dírami uvnitř).\n\nObjekty seznamu v relaci se nazývají *prvky*. V bočním panelu jsou vidět relace, kterých je zvolený objekt prvkem, a relaci pak můžete kliknutím zvolit. Po zvolení relace jsou všechny její prvky jednak uvedené v bočním panelu a také označené na mapě.\n\nVe většině případů iD dokáže relace udržovat při editacích automaticky. Měli byste si být vědomi jistých omezení: třeba když smažete kus cesty a potom ji nakreslíte znovu, je třeba zkontrolovat, že nový kus cesty je prvkem stejných relací jako původní kus.\n\n## Editace relací\n\nPři editaci relací se držte následujících principů.\n\nNový prvek do relace přidáte tak, že zvolíte daný objekt, kliknete na tlačítko \"+\" v bočním panelu v sekci \"Všechny relace\", a zvolíte nebo napíšete jméno relace.\n\nPodobně novou relaci založíte tak, že zvolíte objekt, který by se měl stát prvním prvkem relace, kliknete na tlačítko \"+\" v sekci \"Všechny relace\" a zvolíte \"Nová relace...\".\n\nPrvek z relace vyjmete tím způsobem, že zvolíte daný objekt a kliknete na tlačítko odpadkového koše vedle relace, ze které objekt chcete vyjmout.\n\nMultipolygony s dírami můžete vytvořit pomocí nástroje \"Spojit\". Nakreslete dvě plochy (vnitřní a vnější), stiskněte klávesu Shift a klikněte postupně na obě plochy, čímž je označíte. Multipolygon pak vytvoříte kliknutím na tlačítko \"Spojit\" (+).\n"
},
"intro": {
"navigation": {
"title": "Navigace",
"drag": "Hlavní část stránky, tedy mapa, zobrazuje data z OpenStreetMap a pod nimi pozadí. Po mapě se můžete pohybovat uchopením mapy myší a skrolováním, podobně jako po jakékoli jiné mapě na internetu. **Uchopte mapu!**",
- "select": "Mapa se skládá z objektů tří typů: uzlů, cest a ploch. Můžete zvolit libovolný objekt tak, že na něj kliknete. **Klikněte na uzel.**",
+ "select": "Mapa se skládá z objektů tří typů: uzlů, čar a ploch. Můžete zvolit libovolný objekt tak, že na něj kliknete. **Klikněte na uzel.**",
"header": "Titulek ukazuje typ objektu.",
"pane": "Když je objekt zvolen, zobrazí se nástroj pro editaci jeho vlastností. Titulek ukazuje typ objektu a hlavní panel zobrazuje vlastnosti objektu, jako jeho název či adresu. **Zavřete editor vlastností kliknutím na tlačítko vpravo nahoře.**"
},
"place": "Plochu zakreslíte tak, že přidáte další uzly. Kreslení zakončíte kliknutím na počáteční uzel. **Nakreslete plochu hřiště.**",
"search": "**Dejte hledat '{name}'.**",
"choose": "**V seznamu zvolte Hřiště.**",
- "describe": "**Pridejte název a zavřete editor vlastností.**"
+ "describe": "**Přidejte název a zavřete editor vlastností.**"
},
"lines": {
- "title": "Cesty",
- "add": "Silnice, železnice nebo řeky lze v mapě zachytit pomocí lomených čar neboli cest. **Klikněte na tlačítko Cesta.**",
- "start": "**Cestu začněte kliknutím na jeden konec silnice.**",
- "intersect": "Klikáním přidáte další a další uzly k cestě. Mapu si můžete během kreslení posouvat. Silnice a další druhy cest jsou obvykle součástí širší sítě. V takovém případě je důležité, aby cesty byly vzájemně propojeny, aby správně fungovaly navigační aplikace. **Klikněte na Flower Street - vytvoříte tak křižovatku těchto dvou cest.**",
- "finish": "Kreslení cesty ukončíte tak, že kliknete na znovu na poslední uzel. **Ukončete kreslení ulice.**",
+ "title": "Čáry",
+ "add": "Silnice, železnice nebo řeky lze v mapě zachytit pomocí lomených čar. **Klikněte na tlačítko Čára.**",
+ "start": "**Čáru začněte kliknutím na jeden konec silnice.**",
+ "intersect": "Klikáním přidáte další a další uzly k čáře. Mapu si můžete během kreslení posouvat. Silnice a další druhy čar jsou obvykle součástí širší sítě. V takovém případě je důležité, aby čáry byly vzájemně propojeny, aby správně fungovaly navigační aplikace. **Klikněte na čáru na Flower Street - vytvoříte tak křižovatku obou cest.**",
+ "finish": "Kreslení čáry ukončíte tak, že kliknete na znovu na poslední uzel. **Ukončete kreslení ulice.**",
"road": "**V seznamu zvolte Silnici.**",
"residential": "Existuje několik druhů silnic, nejběžnější je silnice s obytnými domy čili ulice. **Vyberte Ulici.**",
"describe": "**Pojmenujte ulici a zavřete editor vlastností.**",
"fields": {
"access": {
"label": "Přístup",
- "placeholder": "Není známo",
- "types": {
- "access": "Všem",
- "foot": "Pěší",
- "motor_vehicle": "Motorová vozidla",
- "bicycle": "Jízdní kola",
- "horse": "Koně"
- },
"options": {
- "yes": {
- "title": "Povolen",
- "description": "Přístup oficiálně, ze zákona povolen"
+ "designated": {
+ "description": "Přístup je povolen podle značení či místních předpisů",
+ "title": "Explicitně povolen"
+ },
+ "destination": {
+ "description": "Průjezd zakázán, průchod zakázán apod.",
+ "title": "Jen do místa"
},
"no": {
- "title": "Zakázán",
- "description": "Přístup širší veřejnosti zakázán"
+ "description": "Přístup širší veřejnosti zakázán",
+ "title": "Zakázán"
},
"permissive": {
- "title": "Do odvolání",
- "description": "Vstup je povolen do té doby, než majitel povolení zruší"
+ "description": "Vstup je povolen do té doby, než majitel povolení zruší",
+ "title": "Do odvolání"
},
"private": {
- "title": "Soukromé",
- "description": "Přístup je povolen jen s individuálním svolením majitele"
- },
- "designated": {
- "title": "Explicitně povolen",
- "description": "Přístup je povolen podle značení či místních předpisů"
+ "description": "Přístup je povolen jen s individuálním svolením majitele",
+ "title": "Soukromé"
},
- "destination": {
- "title": "Jen do místa",
- "description": "Průjezd zakázán, průchod zakázán apod."
+ "yes": {
+ "description": "Přístup oficiálně, ze zákona povolen",
+ "title": "Povolen"
}
+ },
+ "placeholder": "Není známo",
+ "types": {
+ "access": "Všem",
+ "bicycle": "Jízdní kola",
+ "foot": "Pěší",
+ "horse": "Koně",
+ "motor_vehicle": "Motorová vozidla"
}
},
"access_simple": {
"address": {
"label": "Adresa",
"placeholders": {
+ "city": "Město",
+ "country": "Stát (země)",
+ "district": "Distrikt",
+ "hamlet": "Osada",
"housename": "Název domu",
"housenumber": "123",
- "street": "Ulice",
- "city": "Město",
- "postcode": "Poštovní směrovací číslo",
"place": "Obydlené místo",
- "hamlet": "Osada",
- "suburb": "Městská část (obvod)",
- "subdistrict": "Subdistrikt",
- "district": "Distrikt",
+ "postcode": "Poštovní směrovací číslo",
"province": "Provincie",
"state": "Stát (v rámci federace)",
- "country": "Stát (země)"
+ "street": "Ulice",
+ "subdistrict": "Subdistrikt",
+ "suburb": "Městská část (obvod)"
}
},
"admin_level": {
"aerialway/access": {
"label": "Přístup",
"options": {
+ "both": "Oboje",
"entry": "Vstup",
- "exit": "Výstup",
- "both": "Oboje"
+ "exit": "Výstup"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Přístup v létě",
"options": {
+ "both": "Oboje",
"entry": "Vstup",
- "exit": "Výstup",
- "both": "Oboje"
+ "exit": "Výstup"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Směr",
"options": {
- "N": "Sever",
"E": "Východ",
- "S": "Jih",
- "W": "Západ",
- "NE": "Severovýchod",
- "SE": "Jihovýchod",
- "SW": "Jihozápad",
- "NW": "Severozápad",
- "NNE": "Severo-severovýchod",
"ENE": "Východo-severovýchod",
"ESE": "Východo-jihovýchod",
+ "N": "Sever",
+ "NE": "Severovýchod",
+ "NNE": "Severo-severovýchod",
+ "NNW": "Severo-severozápad",
+ "NW": "Severozápad",
+ "S": "Jih",
+ "SE": "Jihovýchod",
"SSE": "Jiho-jihovýchod",
"SSW": "Jiho-jihozápad",
- "WSW": "Západo-jihozápad",
+ "SW": "Jihozápad",
+ "W": "Západ",
"WNW": "Západo-severozápad",
- "NNW": "Severo-severozápad"
+ "WSW": "Západo-jihozápad"
}
},
"clock_direction": {
"label": "Směr",
"options": {
- "clockwise": "Po směru hod. ručiček",
- "anticlockwise": "Proti směru hod. ručiček"
+ "anticlockwise": "Proti směru hod. ručiček",
+ "clockwise": "Po směru hod. ručiček"
}
},
"collection_times": {
"construction": {
"label": "Typ"
},
+ "content": {
+ "label": "Obsah"
+ },
"country": {
"label": "Stát"
},
"description": {
"label": "Popis"
},
+ "drive_through": {
+ "label": "Obsluha z/do auta"
+ },
"electrified": {
"label": "Elektrifikace",
- "placeholder": "Trolejové vedení, napájecí kolejnice...",
"options": {
"contact_line": "Trolejové vedení",
+ "no": "Ne",
"rail": "Napájecí kolejnice",
- "yes": "Ano (nespecifikováno)",
- "no": "Ne"
- }
+ "yes": "Ano (nespecifikováno)"
+ },
+ "placeholder": "Trolejové vedení, napájecí kolejnice..."
},
"elevation": {
"label": "Nadmořská výška"
"label": "Typ",
"options": {
"pillar": "Nadzemní",
+ "pond": "U vody (suchý)",
"underground": "Podzemní",
- "wall": "Nástěnný",
- "pond": "U vody (suchý)"
+ "wall": "Nástěnný"
}
},
"fixme": {
},
"gender": {
"label": "Pohlaví",
- "placeholder": "Neznámé",
"options": {
- "male": "Muži",
"female": "Ženy",
+ "male": "Muži",
"unisex": "Muži i ženy"
- }
+ },
+ "placeholder": "Neznámé"
},
"generator/method": {
"label": "Princip"
"incline": {
"label": "Sklon"
},
+ "incline_steps": {
+ "label": "Sklon",
+ "options": {
+ "down": "Dolů",
+ "up": "Nahoru"
+ }
+ },
"information": {
"label": "Typ"
},
"internet_access": {
"label": "Přístup k internetu",
"options": {
- "yes": "Ano",
"no": "Ne",
- "wlan": "Wifi",
+ "terminal": "Počítače",
"wired": "Přes kabel",
- "terminal": "Počítače"
+ "wlan": "Wifi",
+ "yes": "Ano"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Opadavost listí",
"options": {
- "evergreen": "Stálezelené",
"deciduous": "Opadavé",
- "semi_evergreen": "Polostálezelené",
+ "evergreen": "Stálezelené",
+ "mixed": "Smíšené",
"semi_deciduous": "Poloopadavé",
- "mixed": "Smíšené"
+ "semi_evergreen": "Polostálezelené"
}
},
"leaf_type": {
"label": "Druh listů",
"options": {
"broadleaved": "Listnaté",
- "needleleaved": "Jehličnaté",
+ "leafless": "Bezlisté",
"mixed": "Smíšené",
- "leafless": "Bezlisté"
+ "needleleaved": "Jehličnaté"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Klasifikace obtížnosti pro MTB",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Štěrkový/udusaný povrch, bez překážek, oblé zatáčky",
"1": "1: Místy nezpevněná půda, kořeny a malé kameny, oblé zatáčky",
"4": "4: Sypký povrch, velké schodky, nebezpečné zatáčky",
"5": "5: Nejvyšší obtížnost, skály, sutiny, sesuvy",
"6": "6: Prakticky nesjízdné a velmi nebezpečné i pro trialové mistry"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Podle IMBA",
- "placeholder": "Lehké, středně těžké, těžké",
"options": {
"0": "Nejlehčí (bílý kruh)",
"1": "Lehké (zelený kruh)",
"2": "Středně těžké (modrý čtverec)",
"3": "Těžké (černý kosočtverec)",
"4": "Velmi těžké (dvojitý černý kosočtverec)"
- }
+ },
+ "placeholder": "Lehké, středně těžké, těžké"
},
"mtb/scale/uphill": {
"label": "Klasifikace obtížnosti pro MTB do kopce",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Průměrný sklon do 10%, štěrk či zpevněný povrch, bez překážek",
"1": "1: Průměrný sklon do 15%, štěrk či zpevněný povrch, trocha drobných překážek",
"3": "3: Průměrný sklon do 25%, různorodý povrch, volné kameny do velikosti pěsti, větve",
"4": "4: Průměrný sklon do 30%, nestabilní povrch, velké kameny či větve",
"5": "5: Velmi prudké, do kopce prakticky nesjízdné"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Název",
"oneway": {
"label": "Jednosměrka",
"options": {
+ "no": "Ne",
"undefined": "Implicitně Ne",
- "yes": "Ano",
- "no": "Ne"
+ "yes": "Ano"
}
},
"oneway_yes": {
"label": "Jednosměrka",
"options": {
+ "no": "Ne",
"undefined": "Implicitně Ano",
- "yes": "Ano",
- "no": "Ne"
+ "yes": "Ano"
}
},
"opening_hours": {
"parking": {
"label": "Typ",
"options": {
- "surface": "Povrchové",
- "multi-storey": "Víceúrovňové",
- "underground": "Podzemní",
- "sheds": "Lehký přístřešek",
"carports": "Přístřešek",
"garage_boxes": "Garáž",
- "lane": "Parkování po straně ulice"
+ "lane": "Parkování po straně ulice",
+ "multi-storey": "Víceúrovňové",
+ "sheds": "Lehký přístřešek",
+ "surface": "Povrchové",
+ "underground": "Podzemní"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Obtížnost",
- "placeholder": "Lehká, Střední, Těžká...",
"options": {
- "novice": "Pro začátečníky (francouzské sjezdovky: zelená)",
- "easy": "Lehká (evropské sjezdovky: modrá)",
- "intermediate": "Střední (evropské sjezdovky: červená)",
"advanced": "Těžká (evropské sjezdovky: černá)",
+ "easy": "Lehká (evropské sjezdovky: modrá)",
"expert": "Velmi těžká (alpské sjezdovky: oranžová; americké: dva černé diamanty)",
+ "extreme": "Extrémní (je třeba horolezecké výbavy)",
"freeride": "Freeride (mimo trať)",
- "extreme": "Extrémní (je třeba horolezecké výbavy)"
- }
+ "intermediate": "Střední (evropské sjezdovky: červená)",
+ "novice": "Pro začátečníky (francouzské sjezdovky: zelená)"
+ },
+ "placeholder": "Lehká, Střední, Těžká..."
},
"piste/grooming": {
"label": "Úprava",
"options": {
- "classic": "Klasika",
- "mogul": "Boule",
"backcountry": "Strojově neupraveno",
+ "classic": "Klasika",
"classic+skating": "Klasika a bruslení",
+ "mogul": "Boule",
"scooter": "Skútrem",
"skating": "Bruslení (na hladko)"
}
"label": "Typ",
"options": {
"downhill": "Sjezd",
+ "hike": "Pěší",
+ "ice_skate": "Bruslení na ledu",
"nordic": "Běžky",
+ "playground": "Dětský ski park",
"skitour": "Skialpinismus",
"sled": "Sportovní saně",
- "hike": "Pěší",
"sleigh": "Tažené saně",
- "ice_skate": "Bruslení na ledu",
- "snow_park": "Snowpark",
- "playground": "Dětský ski park"
+ "snow_park": "Snowpark"
}
},
"place": {
"power": {
"label": "Typ"
},
+ "power_supply": {
+ "label": "Elektrická přípojka"
+ },
"railway": {
"label": "Typ"
},
"label": "Textil"
},
"recycling/glass": {
- "label": "Skl"
+ "label": "Sklo"
},
"recycling/paper": {
"label": "Papír"
},
"sac_scale": {
"label": "Klasifikace pro pěší",
- "placeholder": "Horská turistika, vysokohorská turistika...",
"options": {
- "hiking": "T1: Turistika",
- "mountain_hiking": "T2: Horská turistika",
- "demanding_mountain_hiking": "T3: Náročná horská turistika",
"alpine_hiking": "T4: Vysokohorská turistika",
"demanding_alpine_hiking": "T5: Náročná vysokohorská turistika",
- "difficult_alpine_hiking": "T6: Těžká vysokohorská turistika"
- }
+ "demanding_mountain_hiking": "T3: Náročná horská turistika",
+ "difficult_alpine_hiking": "T6: Těžká vysokohorská turistika",
+ "hiking": "T1: Turistika",
+ "mountain_hiking": "T2: Horská turistika"
+ },
+ "placeholder": "Horská turistika, vysokohorská turistika..."
+ },
+ "sanitary_dump_station": {
+ "label": "Výlevka pro WC"
},
"seasonal": {
"label": "Sezónní"
"service": {
"label": "Typ"
},
- "service/bicycle/chaintool": {
- "label": "Nýtovačka",
+ "service/bicycle/chain_tool": {
+ "label": "Nýtovač řetězu",
"options": {
+ "no": "Ne",
"undefined": "Implicitně Ne",
- "yes": "Ano",
- "no": "Ne"
+ "yes": "Ano"
}
},
"service/bicycle/pump": {
"label": "Pumpička",
"options": {
+ "no": "Ne",
"undefined": "Implicitně Ne",
- "yes": "Ano",
- "no": "Ne"
+ "yes": "Ano"
+ }
+ },
+ "service_rail": {
+ "label": "Typ manipulační koleje",
+ "options": {
+ "crossover": "Kolejová spojka",
+ "siding": "Výhybna",
+ "spur": "Nákladiště",
+ "yard": "Kolej seřaďovacího nádraží"
}
},
"shelter": {
},
"smoking": {
"label": "Kouření",
- "placeholder": "Ne, V oddělené místnosti, Ano...",
"options": {
- "no": "Ne, všude zakázáno",
- "separated": "Na určených místech, neoddělených",
+ "dedicated": "Zaměřeno na kuřáky (např. kuřácký klub)",
"isolated": "Na určených místech, oddělených",
+ "no": "Ne, všude zakázáno",
"outside": "Povoleno venku",
- "yes": "Povoleno všude",
- "dedicated": "Zaměřeno na kuřáky (např. kuřácký klub)"
- }
+ "separated": "Na určených místech, neoddělených",
+ "yes": "Povoleno všude"
+ },
+ "placeholder": "Ne, V oddělené místnosti, Ano..."
},
"smoothness": {
"label": "Hladkost",
- "placeholder": "Tenká kolečka, Běžná kola, Terénní kola...",
"options": {
+ "bad": "Robustní kola: běžná auta, trekové bicykly, rikši",
"excellent": "Tenká kolečka: brusle, skateboardy",
"good": "Tenká kola: závodní bicykly",
+ "horrible": "Terénní kola: off-road auta",
+ "impassable": "Neprůjezdné žádným vozidlem",
"intermediate": "Běžná kola: závodní auta, městské bicykly, kolečková křesla, skútry",
- "bad": "Robustní kola: běžná auta, trekové bicykly, rikšy",
"very_bad": "Vysoký podvozek: lehká terénní auta",
- "horrible": "Terénní kola: off-road auta",
- "very_horrible": "Speciální terénní kola: traktory, čtyřkolky, tanky, MTB",
- "impassable": "Neprůjezdné žádným vozidlem"
- }
+ "very_horrible": "Speciální terénní kola: traktory, čtyřkolky, tanky, MTB"
+ },
+ "placeholder": "Tenká kolečka, Běžná kola, Terénní kola..."
},
"social_facility_for": {
"label": "Zákazníci",
},
"structure": {
"label": "Struktura",
- "placeholder": "Není známo",
"options": {
"bridge": "Most",
- "tunnel": "Tunel",
- "embankment": "Násyp",
"cutting": "Zářez",
- "ford": "Brod"
- }
+ "embankment": "Násyp",
+ "ford": "Brod",
+ "tunnel": "Tunel"
+ },
+ "placeholder": "Není známo"
},
"studio_type": {
"label": "Typ"
},
"takeaway": {
"label": "Jídlo s sebou",
- "placeholder": "Ano, Ne, Jen s sebou",
"options": {
- "yes": "Ano",
"no": "Ne",
- "only": "Jen s sebou"
- }
+ "only": "Jen s sebou",
+ "yes": "Ano"
+ },
+ "placeholder": "Ano, Ne, Jen s sebou"
},
"toilets/disposal": {
"label": "Zacházení s odpadem",
"options": {
- "flush": "Splachovací",
- "pitlatrine": "Suchý",
+ "bucket": "Nádrž na odpad",
"chemical": "Chemický",
- "bucket": "Nádrž na odpad"
+ "flush": "Splachovací",
+ "pitlatrine": "Suchý"
}
},
"tourism": {
},
"tracktype": {
"label": "Klasifikace povrchu",
- "placeholder": "Pevný, převážně pevný, měkký povrch",
"options": {
"grade1": "1: Pevný nebo silně udusaný povrch s pevným jádrem",
"grade2": "2: Převážně zpevněný povrch s menším množstvím neudusaného písku, hlíny, bahna, trávy",
"grade3": "3: Napůl zpevněný a napůl měkký povrch jako nezpevněný písek, hlína, bahno, tráva",
"grade4": "4: Převážně měkký povrch jako nezpevněný písek, hlína, bahno, tráva; ale i trocha zpevněného povrchu",
"grade5": "5: Nezpevněný písek, hlína, bahno, tráva"
- }
+ },
+ "placeholder": "Pevný, převážně pevný, měkký povrch"
},
"trail_visibility": {
"label": "Viditelnost pěšiny",
- "placeholder": "Výborná, Dobrá, Špatná...",
"options": {
+ "bad": "Špatná: žádné značení, pěšina se místy úplně vytrácí",
"excellent": "Výborná: všudypřítomné značení nebo zcela jednoznačná cesta",
"good": "Dobrá: značení viditelné, ale občas je nutné hledat další značku nebo pěšinu",
- "intermediate": "Střední: občasné značení, pěšina je většinou zřetelná",
- "bad": "Špatná: žádné značení, pěšina se místy úplně vytrácí",
"horrible": "Hrozná: pěšina se často ztrácí, je nutné mít orientační smysl",
+ "intermediate": "Střední: občasné značení, pěšina je většinou zřetelná",
"no": "Žádná: pěšina je skoro nezřetelná, je nutné mít výborný orientační smysl"
- }
+ },
+ "placeholder": "Výborná, Dobrá, Špatná..."
},
"trees": {
"label": "Stromy"
"water": {
"label": "Typ"
},
+ "water_point": {
+ "label": "Kohout s pitnou vodou"
+ },
"waterway": {
"label": "Typ"
},
},
"aerialway/magic_carpet": {
"name": "Pojízdný koberec",
- "terms": "pojízdný koberec,pásový dopravník,lyžařský vlek,vlek,lanovka na pásu,pohybivý pás,eskalátor"
+ "terms": "pojízdný koberec,pásový dopravník,lyžařský vlek,vlek,lanovka na pásu,pohyblivý pás,eskalátor"
},
"aerialway/platter": {
"name": "Vlek - talíř (poma)",
},
"aerialway/rope_tow": {
"name": "Vlek - kotvičkový",
- "terms": "lyžařský vlek,vlek,kotvička,lanový vlek"
+ "terms": "lyžařský vlek,vlek,kotva,kotvička,lanový vlek"
},
"aerialway/station": {
"name": "Stanice lanovky",
},
"aeroway": {
"name": "Přistávací dráha",
- "terms": "letitiště,přistávací dráha,letadlo,terminál"
+ "terms": "letiště,přistávací dráha,letadlo,terminál"
},
"aeroway/aerodrome": {
"name": "Letiště",
},
"aeroway/runway": {
"name": "Vzletová a přistávací dráha",
- "terms": "runway,přistávací dráha,vzletová dráha,přistávací plocha"
+ "terms": "runway,ranvej,přistávací dráha,vzletová dráha,přistávací plocha"
},
"aeroway/taxiway": {
"name": "Pojezdová dráha",
"name": "Montážní stojan na kola",
"terms": "stojan,kolo,stojan na kolo,montážní stojan,opravna kol,cykloopravna,samoobslužná opravna kol"
},
+ "amenity/biergarten": {
+ "name": "Pivní zahrádka",
+ "terms": "zahrádka,venku,posezení,pivo,pod širým nebem"
+ },
"amenity/boat_rental": {
"name": "Půjčovna lodí",
"terms": "půjčovna lodí,půjčovna loděk,půjčovna člunů"
},
"amenity/place_of_worship": {
"name": "Chrám",
- "terms": "křesťanský,křesťanství,kostel,kostelík,chrám,bazilika,katedrála,kaple,kaplička,chrám páně,rotunda,farnost,diecéze,mešita,minaret,synagoga,pagoda,stúpa,oratorium,motlitebna,náboženský,náboženská,náboženské,sakrální,svatyně"
+ "terms": "křesťanský,křesťanství,kostel,kostelík,chrám,bazilika,katedrála,kaple,kaplička,chrám páně,rotunda,farnost,diecéze,mešita,minaret,synagoga,pagoda,stúpa,oratorium,modlitebna,náboženský,náboženská,náboženské,sakrální,svatyně"
},
"amenity/place_of_worship/buddhist": {
- "name": "Budhistický chrám",
+ "name": "Buddhistický chrám",
"terms": "stúpa,vihara,klášter,chrám,pagoda,zendo,dojo"
},
"amenity/place_of_worship/christian": {
"name": "Restaurace",
"terms": "bar,jídelna,kantýna,bistro,bufet,rychlé občerstvení,fast food,hamburger,restaurace,restaurant,hostinec,pohostinství,krčma,gastronomie,občerstvení,stánek,jídlo,obědy,gril,pizzeria,čína,kebab"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Výlevka pro karavany",
+ "terms": "záchod,kanalizace,výlevka,žumpa,odpadní voda,wc,toaleta,karavan,kemp,obytný vůz"
+ },
"amenity/school": {
"name": "Prostor školy",
"terms": "škola,základní škola,střední škola,obecná škola,gymnázium,gymnasium,střední odborná škola,učiliště,odborné učiliště,střední odborné učiliště,školní,školský"
},
"building/chapel": {
"name": "Kaple",
- "terms": "kaple,kaplička,babtisterium,karner,modlitebna,kostel"
+ "terms": "kaple,kaplička,baptisterium,karner,modlitebna,kostel"
},
"building/church": {
"name": "Budova kostela",
},
"craft/insulator": {
"name": "Firma na izolace",
- "terms": "zateplovlování,zateplení,izolace"
+ "terms": "zateplování,zateplení,izolace"
},
"craft/jeweler": {
"name": "Klenotník",
},
"craft/plasterer": {
"name": "Štukatér",
- "terms": "štukatér,škukatérství,štuky"
+ "terms": "štukatér,štukatérství,štuky"
},
"craft/plumber": {
"name": "Instalatér",
},
"craft/sailmaker": {
"name": "Výroba plachet",
- "terms": "plachty,plachetář,výroba plachet"
+ "terms": "plachty,plachtář,výroba plachet"
},
"craft/sawmill": {
"name": "Pila",
},
"highway/mini_roundabout": {
"name": "Malý kruhový objezd",
- "terms": "malý kruhový objezd, kruháč"
+ "terms": "malý kruhový objezd,kruháč"
},
"highway/motorway": {
"name": "Dálnice",
},
"highway/service/drive-through": {
"name": "Drive-through",
- "terms": "okénko pro řidiče, pult pro řidiče, obsluha řidiče, obsluha do auta"
+ "terms": "okénko pro řidiče,pult pro řidiče,obsluha řidiče,obsluha do auta,drive through"
},
"highway/service/driveway": {
"name": "Příjezdová cesta",
"terms": "archeologické naleziště,vykopávky,archeologický průzkum"
},
"historic/boundary_stone": {
- "name": "Hraniční káme",
+ "name": "Hraniční kámen",
"terms": "hraniční kámen,hranice,značka"
},
"historic/castle": {
},
"historic/wayside_shrine": {
"name": "Boží muka",
- "terms": "svatostánek u cesty,svatyně,svatostánek"
+ "terms": "svatostánek u cesty,svatyně,svatostánek,kaplička"
},
"junction": {
"name": "Křižovatka",
},
"landuse/allotments": {
"name": "Zahrádky",
- "terms": "zahradkářská osada,zahrádky,zahrady,zahradkářská kolonie"
+ "terms": "zahrádkářská osada,zahrádky,zahrady,zahrádkářská kolonie"
},
"landuse/basin": {
"name": "Umělá vodní plocha",
},
"leisure/pitch/baseball": {
"name": "Baseballové hřiště",
- "terms": "basebalové hřiště,basebal"
+ "terms": "baseballové hřiště,baseball"
},
"leisure/pitch/basketball": {
"name": "Basketbalové hřiště",
"name": "Maják",
"terms": "maják,světlo"
},
+ "man_made/mast": {
+ "name": "Telekomunikační stožár",
+ "terms": "stožár,radio,komunikace,telekomunikace,bts,základnová stanice"
+ },
"man_made/observation": {
"name": "Rozhledna",
"terms": "rozhledna,pozorovatelna,věž"
},
+ "man_made/petroleum_well": {
+ "name": "Ropný vrt",
+ "terms": "ropa,těžba,těžební,ropný,vrt"
+ },
"man_made/pier": {
"name": "Molo",
"terms": "molo,sloupy,pilíř,vlnolam,hráz,kotva,kotvení,ukotvení,lodě,promenáda,lávka,promenáda a přístaviště,přístavní hráz"
},
"man_made/pipeline": {
"name": "Dálkové potrubí",
- "terms": "rouura,roury,transport,vodovod,ropovod,plynovod,kanál,rozvod"
+ "terms": "roura,roury,transport,vodovod,ropovod,plynovod,kanál,rozvod"
+ },
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "silo,zásobník,silážní,sýpka,špýchar,špejchar"
+ },
+ "man_made/storage_tank": {
+ "name": "Zásobník",
+ "terms": "zásobník,nádrž"
},
"man_made/survey_point": {
"name": "Triangulační bod",
},
"natural/water/pond": {
"name": "Rybník",
- "terms": "rybník,rybíček,louže,tůň,hráz,přehrada"
+ "terms": "rybník,rybníček,louže,tůň,hráz,přehrada"
},
"natural/water/reservoir": {
"name": "Přehrada",
"name": "Velkoměsto",
"terms": "velkoměsto,město,city"
},
+ "place/farm": {
+ "name": "Zemědělská usedlost",
+ "terms": "zemědělská usedlost,farma,zemědělské družstvo,jzd"
+ },
"place/hamlet": {
"name": "Vesnička",
"terms": "vesnička,vesnice,obec,lhota"
},
"power/generator": {
"name": "Generátor",
- "terms": "generátor, elektrický generátor, elektrárna, zdroj proudu"
+ "terms": "generátor,elektrický generátor,elektrárna,zdroj proudu"
},
"power/line": {
"name": "Elektrické vedení vyššího napětí (nad 50 kV)",
"terms": "elektrické vedení,velmi vysoké napětí,zvláště vysoké napětí,přenosová soustava,energetika"
},
"power/minor_line": {
- "name": "Elektrické vedení nížšího napětí (pod 50 kV)",
+ "name": "Elektrické vedení nižšího napětí (pod 50 kV)",
"terms": "elektrické vedení,nízké napětí,vysoké napětí,přenosová soustava,elektrický kabel,energetika"
},
"power/pole": {
- "name": "Eletrický sloup",
+ "name": "Sloup elektrického vedení",
"terms": "sloup el.vedení,elektrický sloup,sloup elektrického vedení,sloupový stožár"
},
"power/sub_station": {
"name": "Relace",
"terms": "relace,vztah,seznam,objekt"
},
+ "roundabout": {
+ "name": "Kruhový objezd",
+ "terms": "kruhový objezd,okružní křižovatka,kruháč,kruhák,kruhovka,rondel"
+ },
"route/ferry": {
"name": "Trasa trajektu",
"terms": "trajekt,trasa,linka,loď,trasa trajektu"
},
"shop/doityourself": {
"name": "Obchod pro kutily",
- "terms": "obchod pro kutily,stavební materiál,stavebniny,staviva,potřeby pro kutily,zahradní potřeby,železářství,kutil"
+ "terms": "obchod pro kutily,stavební materiál,stavebniny,staviva,potřeby pro kutily,zahradní potřeby,železářství,kutil,hobby"
},
"shop/dry_cleaning": {
"name": "Čistírna",
},
"shop/funeral_directors": {
"name": "Pohřební služba",
- "terms": "pohřební služba,pohřební služba,pohřebák,hřbitovní služby,hřitovní služba,hrobař"
+ "terms": "pohřební služba,pohřební služba,pohřebák,hřbitovní služby,hřbitovní služba,hrobař"
},
"shop/furnace": {
"name": "Trouby a pece",
"name": "Odvodňovací strouha",
"terms": "odvodňovací strouha,strouha,odvodňovací kanál,odvaděč"
},
+ "waterway/fuel": {
+ "name": "Lodní čerpací stanice",
+ "terms": "lodní pumpa,pumpa,čerpací stanice,loď,jachta,hausbót"
+ },
"waterway/river": {
"name": "Řeka",
"terms": "potok,potůček,strouha,říčka,přítok,koryto"
"name": "Břeh řeky",
"terms": "břeh řeky,břeh,nábřeží,pobřeží"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Výlevka pro lodě",
+ "terms": "záchod,kanalizace,výlevka,žumpa,odpadní voda,wc,toaleta,loď,jachta,hausbót"
+ },
"waterway/stream": {
"name": "Potok",
"terms": "potok,potůček,strouha,tok,říčka,přítok,koryto,řeka,proud,vír,odtok,příliv,odliv"
"add_area": {
"title": "Område",
"description": "Tilføj parker, bygninger, søer, eller andre områder til kortet.",
- "tail": "Klik på kortet for at begynde et område som fx en park, sø eller bygning."
+ "tail": "Klik på kortet for at påbegynde et område, såsom en park, sø eller bygning."
},
"add_line": {
"title": "Linje",
- "description": "Tilføj veje, gader, gangstier, kanaler eller andre linjer til kortet",
- "tail": "Klik på kortet for at begynde at indtegne en vej, sti eller rute."
+ "description": "Tilføj veje, gader, gangstier, kanaler eller andre linjer til kortet.",
+ "tail": "Klik på kortet for at begynde at tegne en vej, sti eller rute."
},
"add_point": {
"title": "Punkt",
},
"continue": {
"key": "A",
- "title": "Forsæt",
- "description": "Forsæt denne linje.",
+ "title": "Fortsæt",
+ "description": "Fortsæt denne linje.",
"not_eligible": "Ingen linje kan fortsættes her.",
- "multiple": "Adskillige linjer kan fortsættes her. Vælg en linje ved at klikke på Shift key og så klik på linjen for at udvælge den.",
+ "multiple": "Adskillige linjer kan fortsættes her. Vælg en linje ved at holde Skift-tasten nede og klikke på linjen for at markere den.",
"annotation": {
"line": "Fortsatte en linje.",
"area": "Fortsatte et område."
"area": "Gjorde et område cirkulært."
},
"not_closed": "Dette kan ikke gøres cirkulært fordi det ikke er en løkke.",
- "too_large": "Dette kan ikke laves rundt da der ikke er nok vist kortudsnit.",
- "connected_to_hidden": "Dette kan ikke laves rundt da det er forbundet til et skjult objekt."
+ "too_large": "Dette kan ikke gøres cirkulært, da kortudsnittet ikke viser nok af objektet.",
+ "connected_to_hidden": "Dette kan ikke gøres cirkulært, da det er forbundet til et skjult objekt."
},
"orthogonalize": {
- "title": "Firkantet",
+ "title": "Gør retvinklet",
"description": {
- "line": "Lavede hjørner på en linje firkantet.",
- "area": "Lavede hjørner på dette område firkantet."
+ "line": "Gør hjørnerne på denne linje retvinklede",
+ "area": "Gør hjørnerne på dette område retvinklede."
},
"key": "S",
"annotation": {
- "line": "Gjorde hjørner på en linje retvinklede.",
- "area": "Gjorde hjørner på et område retvinklede."
+ "line": "Gjorde hjørnerne på denne linje retvinklede.",
+ "area": "Gjorde hjørnerne på dette område retvinklede."
},
- "not_squarish": "Dette kan ikke laves firkantet da det ikke er firkantet.",
- "too_large": "Dette kan ikke laves firkantet da det ikke er nok vist kortudsnit.",
- "connected_to_hidden": "Det kan ikke laves til en firkant da det er forbundet til et skjult objekt."
+ "not_squarish": "Dette kan ikke gøres retvinklet da det ikke er firkantet.",
+ "too_large": "Dette kan ikke gøres retvinklet, da kortudsnittet ikke viser nok af objektet.",
+ "connected_to_hidden": "Dette kan ikke gøres retvinklet, da det er forbundet til et skjult objekt."
},
"straighten": {
- "title": "Ret lige",
- "description": "Ret denne linje lige ud",
+ "title": "Udret",
+ "description": "Gør denne linje lige.",
"key": "S",
- "annotation": "Rettede en linje ud.",
- "too_bendy": "Denne linje kan ikke rettes ud da den er for alt for bøjet.",
- "connected_to_hidden": "Denne linje kan ikke rettes lige ud da den er forbundet til et skjult objekt."
+ "annotation": "Gjorde denne linje lige.",
+ "too_bendy": "Denne linje kan ikke rettes ud da den bøjer for meget.",
+ "connected_to_hidden": "Denne linje kan ikke rettes ud, da den er forbundet til et skjult objekt."
},
"delete": {
"title": "Slet",
"description": "Slet objekt permanent.",
"annotation": {
"point": "Slettede et punkt.",
- "vertex": "Slettede et punkt på en vej.",
+ "vertex": "Slettede et punkt fra en vej.",
"line": "Slettede en linje.",
"area": "Slettede et område.",
"relation": "Sletede en relation.",
"multiple": "Slettede {n} objekter."
},
- "incomplete_relation": "Dette objekt kan ikke slettes, da det ikke er blevet downloadet helt ned.",
+ "incomplete_relation": "Dette objekt kan ikke slettes, da det ikke er blevet downloadet helt.",
+ "part_of_relation": "Dette objekt kan ikke slettes fordi det er en del af en større relation. Du er nødt til at fjerne det fra relationen først.",
"connected_to_hidden": "Dette kan ikke slettes da det er forbundet til et skjult objekt."
},
"add_member": {
- "annotation": "Tilføj et medlem til en relation."
+ "annotation": "Tilføjede et medlem til en relation."
},
"delete_member": {
"annotation": "Fjernede et medlem fra en relation."
},
"disconnect": {
"title": "Frakobl",
- "description": "Kobl disse veje/områder fra hinanden.",
+ "description": "Kobl disse linjer/områder fra hinanden.",
"key": "D",
"annotation": "Frakoblede linjer/områder.",
- "not_connected": "Der er ikke nok linjer/områder her til at fraklippe.",
- "connected_to_hidden": "Dette kan ikke klippes over da det er forbundet til et skjult objekt."
+ "not_connected": "Der er ikke nok linjer/områder at frakoble her.",
+ "connected_to_hidden": "Dette kan ikke frakobles, da det er forbundet til et skjult objekt."
},
"merge": {
"title": "Fusioner",
"key": "C",
"annotation": "Fusionerede {n} linjer.",
"not_eligible": "Disse elementer kan ikke fusioneres.",
- "not_adjacent": "Disse linjer kan ikke fusioneres fordi de ikke er knyttet sammen",
- "restriction": "Disse linjer kan ikke flettes sammen, da mindst en af disse er medlem af \"{relation}\" relation.",
- "incomplete_relation": "Disse kortegenskaber kan ikke fusioneres, da de ikke er blevet downloadet fuldstændigt."
+ "not_adjacent": "Disse linjer kan ikke fusioneres fordi de ikke er knyttet sammen.",
+ "restriction": "Disse linjer kan ikke flettes sammen, da mindst en af disse er medlem af \"{relation}\"-relation.",
+ "incomplete_relation": "Disse kortegenskaber kan ikke fusioneres, da de ikke er blevet downloadet helt."
},
"move": {
"title": "Flyt",
"area": "Flyttede et område.",
"multiple": "Flyttede flere objekter."
},
- "incomplete_relation": "Dette element kan ikke flyttes, fordi det ikke er fuldstændigt downloadet.",
- "too_large": "Dette kan ikke flyttes pga der ikke er nok synligt.",
- "connected_to_hidden": "Dette kan ikke flyttes da det er forbundet til et skjult objekt."
+ "incomplete_relation": "Dette objekt kan ikke flyttes, fordi det ikke er helt downloadet.",
+ "too_large": "Dette kan ikke flyttes, da kortudsnittet ikke viser nok af objektet.",
+ "connected_to_hidden": "Dette kan ikke flyttes, da det er forbundet til et skjult objekt."
},
"rotate": {
- "title": "Roter",
+ "title": "Rotér",
"description": "Roterer dette objekt omkring dets centerpunkt.",
"key": "R",
"annotation": {
"line": "Roterede en linje.",
"area": "Roterede et område."
},
- "too_large": "Dette kunne ikke blive roteret pga der ikke var nok synligt.",
- "connected_to_hidden": "Dette kan ikke roteres da det er forbundet til et skjult objekt."
+ "too_large": "Dette kan ikke roteres, da kortudsnittet ikke viser nok af objektet.",
+ "connected_to_hidden": "Dette kan ikke roteres, da det er forbundet til et skjult objekt."
},
"reverse": {
- "title": "Reverser",
+ "title": "Vend om",
"description": "Lad denne linje gå i den modsatte retning.",
"key": "V",
- "annotation": "Reverserede en linje."
+ "annotation": "Vendte en linje om."
},
"split": {
- "title": "Split",
+ "title": "Opdel",
"description": {
"line": "Del linjen i to ved dette punkt.",
"area": "Del dette områdes afgrænsning i to.",
},
"key": "X",
"annotation": {
- "line": "Klip en linje op.",
- "area": "Del et områdes afgrænsning op.",
- "multiple": "Split {n} afgrænsninger for linjer/områder ."
+ "line": "Opdelte en linje.",
+ "area": "Opdelte en områdeafgrænsning.",
+ "multiple": "Opdelte {n} linjer/områdeafgrænsninger."
},
- "not_eligible": "Linje kan ikke deles op ved deres begyndelse eller ende.",
+ "not_eligible": "Linjer kan ikke deles op ved deres begyndelse eller ende.",
"multiple_ways": "Der er for mange linjer her til at dele op.",
- "connected_to_hidden": "Dette kan ikke klippes da det er forbundet til et skjult objekt."
+ "connected_to_hidden": "Dette kan ikke opdeles, da det er forbundet til et skjult objekt."
},
"restriction": {
"help": {
- "select": "Vælg et vejsegment.",
- "toggle": "Klik for at slå dreje restriktioner til.",
- "toggle_on": "Klik for tilføje \"{restriction}\" restriktion.",
- "toggle_off": "Klik for at fjerne \"{restriction}\" restriktionen."
+ "select": "Klik for at vælge et vejsegment.",
+ "toggle": "Klik for at slå drejebegrænsninger til.",
+ "toggle_on": "Klik for tilføje en \"{restriction}\"-begrænsning.",
+ "toggle_off": "Klik for at fjerne \"{restriction}\"-begrænsningen."
},
"annotation": {
- "create": "Tilføjede en dreje restriktion",
- "delete": "Slettede en dreje restriktion"
+ "create": "Tilføjede en drejebegrænsning",
+ "delete": "Slettede en drejebegrænsning"
}
}
},
"undo": {
- "tooltip": "Fortryd:{action}",
- "nothing": "Ingenting at fortryde."
+ "tooltip": "Fortryd: {action}",
+ "nothing": "Intet at fortryde."
},
"redo": {
- "tooltip": "Gendan:{action}",
- "nothing": "Ingenting at gendanne."
+ "tooltip": "Gendan: {action}",
+ "nothing": "Intet at gendanne."
},
"tooltip_keyhint": "Genvejstast:",
- "browser_notice": "Dette værktøj er understøttet i Firefox, Chrome, Safari, Opera og Internet Explorer 9 og højere. Vær venlig at opgradere din browser eller benyt Potlatch 2 for at rette i kortet.",
+ "browser_notice": "Dette værktøj er understøttet i Firefox, Chrome, Safari, Opera og Internet Explorer 9 og højere. Opgrader din browser eller benyt Potlatch 2 for at redigere kortet.",
"translate": {
"translate": "Oversæt",
- "localized_translation_label": "Flersproget navne",
+ "localized_translation_label": "Flersproget navn",
"localized_translation_language": "Vælg sprog",
"localized_translation_name": "Navn"
},
"loading_auth": "Forbinder til OpenStreetMap...",
"report_a_bug": "rapporter en fejl",
"feature_info": {
- "hidden_warning": "{count} skjulte objekter",
- "hidden_details": "Disse objekter er pt. skjulte: {details}"
+ "hidden_warning": "{count} skjulte objekter",
+ "hidden_details": "Disse objekter er for øjeblikket skjulte: {details}"
},
"status": {
"error": "Er ikke i stand til at forbinde til API'et.",
- "offline": "API'et er off-line. Prøv venligst senere.",
- "readonly": "API'et er i læs-kun status. Du er nødt til at vente med at gemme dine ændringer."
+ "offline": "API'et er offline. Prøv venligst at redigere senere.",
+ "readonly": "API'et er i læs-kun-status. Du er nødt til at vente med at gemme dine ændringer."
},
"commit": {
"title": "Gem ændringer",
"description_placeholder": "Kort beskrivelse af dine bidrag",
- "message_label": "Tilføj en besked",
- "upload_explanation": "Dine ændringer du uploader vil blive synlige på alle kort der bruger OpenStreetMap data.",
- "upload_explanation_with_user": "Ændringer du som brugernavn {user} uploader, vil blive synlige på alle kort der bruger OpenStreetMap data.",
+ "message_label": "Ændringssætskommentar",
+ "upload_explanation": "De ændringer du uploader vil blive synlige på alle kort der bruger OpenStreetMap-data.",
+ "upload_explanation_with_user": "Ændringer du uploader under brugernavnet {user} vil blive synlige på alle kort der bruger OpenStreetMap-data.",
"save": "Gem",
"cancel": "Annuller",
- "changes": "{count} Ã\86ndringer",
+ "changes": "{count} ændringer",
"warnings": "Advarsler",
- "modified": "Modificeret",
+ "modified": "Ændret",
"deleted": "Slettet",
- "created": "Skabte"
+ "created": "Oprettet"
},
"contributors": {
"list": "Redigeringer af {users}",
- "truncated_list": "Redigeringer af {users} og {count} andre"
+ "truncated_list": "Redigeringer af {users} og {count} andre"
+ },
+ "infobox": {
+ "selected": "{n} valgte",
+ "geometry": "Geometri",
+ "closed": "lukket",
+ "center": "Center",
+ "perimeter": "Perimeter",
+ "length": "Længde",
+ "area": "Område",
+ "centroid": "Centroid",
+ "location": "Lokalitet",
+ "metric": "Meter",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "punkt",
+ "vertex": "hjørne",
+ "line": "linje",
+ "area": "område",
+ "relation": "relation"
},
"geocoder": {
"search": "Søg i hele verden...",
"choose": "Vælg elementtype",
"results": "{n} resultater for {search}",
"reference": "Se på OpenStreetMap Wiki",
- "back_tooltip": "Ændre objekt",
+ "back_tooltip": "Ændr objekt",
"remove": "Fjern",
"search": "Søg",
"multiselect": "Valgte objekter",
"unknown": "Ukendt",
"incomplete": "<ikke downloadet>",
"feature_list": "Søgefunktioner",
- "edit": "Ret objekt",
+ "edit": "Rediger objekt",
"check": {
"yes": "Ja",
"no": "Nej"
"node": "Punkt",
"way": "Vej",
"relation": "Relation",
- "location": "Lokalitet",
+ "location": "Sted",
"add_fields": "Tilføj felt:"
},
"background": {
"title": "Baggrund",
"description": "Baggrundsindstillinger",
- "percent_brightness": "{opacity}% lysstyrke",
+ "percent_brightness": "{opacity} % lysstyrke",
"none": "Ingen",
"custom": "Brugerdefineret",
- "custom_button": "Ret brugerdefineret baggrund",
- "custom_prompt": "Angiv en URL tile skabelon. Valide værdier er {z}, {x}, {y} for Z/X/Y skemaer og {u} for quadtile skema. ",
+ "custom_button": "Rediger brugerdefineret baggrund",
+ "custom_prompt": "Angiv en URL-skabelon for fliser. Gyldige værdier er {z}, {x}, {y} for Z/X/Y-systemet og {u} for quadtile-systemet. ",
"fix_misalignment": "Ret justering",
"reset": "nulstil"
},
"map_data": {
"title": "Kortdata",
"description": "Kortdata",
- "data_layers": "Data lag",
- "fill_area": "Fyldte områder",
+ "data_layers": "Datalag",
+ "fill_area": "Udfyldning af områder",
"map_features": "Kortobjekter",
- "autohidden": "Disse objekter er automatisk blevet skjult da ellers for mange vil blive vist på skærmen.\nDu kan zoome ind for at redigere i dem."
+ "autohidden": "Disse objekter er automatisk blevet skjult, da for mange ellers ville blive vist på skærmen.\nDu kan zoome ind for at redigere dem."
},
"feature": {
"points": {
"tooltip": "Interessepunkter"
},
"major_roads": {
- "description": "Store veje",
- "tooltip": "Veje, Gader, osv."
+ "description": "Større veje",
+ "tooltip": "Veje, gader, osv."
},
"minor_roads": {
"description": "Mindre veje",
- "tooltip": "Serviceveje, parkeringspladsveje, markveje, skoveveje osv."
+ "tooltip": "Serviceveje, parkeringspladsveje, markveje, skovveje osv."
},
"paths": {
"description": "Stier",
- "tooltip": "Fortov, gangstier, cykelstier, osv."
+ "tooltip": "Fortove, gangstier, cykelstier, osv."
},
"buildings": {
"description": "Bygninger",
- "tooltip": "Bygninger, Shelter, Garager, osv."
+ "tooltip": "Bygninger, læskure, garager, osv."
},
"landuse": {
- "description": "Landområdeobjekter",
- "tooltip": "Skove, Marker, Parker, Boligområder, Handelsområder, os.v"
+ "description": "Arealanvendelse",
+ "tooltip": "Skove, marker, parker, boligområder, handelsområder, osv."
},
"boundaries": {
"description": "Grænser",
"tooltip": "Administrative grænser"
},
"water": {
- "description": "Vandobjekter",
- "tooltip": "Floder, Søer, Damme, Basiner, osv."
+ "description": "Vandområder",
+ "tooltip": "Floder, søer, damme, bassiner, osv."
},
"rail": {
- "description": "Jernbaneobjekter",
+ "description": "Jernbane",
"tooltip": "Jernbaner"
},
"power": {
- "description": "Elektricitetsobjekter",
- "tooltip": "Højspændingsmaster, kraftstationer, transformatorstationer, osv."
+ "description": "Elektricitet",
+ "tooltip": "Højspændingsmaster, kraftværker, transformatorstationer, osv."
},
"past_future": {
- "description": "Fortid/Fremtid",
- "tooltip": "Planlagt, Konstruktion, Forladt, Tilintetgjort, osv."
+ "description": "Fortid/fremtid",
+ "tooltip": "Planlagt, under konstruktion, forladt, nedrevet, osv."
},
"others": {
"description": "Andet",
},
"area_fill": {
"wireframe": {
- "description": "Ingen fyld (Trådnet)",
- "tooltip": "At slå trådnet visning til gør det lettere at se baggrundsbilledet."
+ "description": "Ingen fyld (trådnet)",
+ "tooltip": "At slå visning med trådnet til gør det let at se baggrundsbilledet."
},
"partial": {
- "description": "En smule fyldt",
- "tooltip": "Områder er optegnet med fyld kun omkring inderkanten. (Anbefales til nybegyndere)"
+ "description": "Delvist udfyldt",
+ "tooltip": "Områder opfyldes kun omkring inderkanten. (Anbefales til nybegyndere.)"
},
"full": {
- "description": "Fuldt fyld",
- "tooltip": "Områder er optegnet med fuldt fyld."
+ "description": "Helt udfyldt",
+ "tooltip": "Områder vises helt udfyldt."
}
},
"restore": {
"heading": "Du har ændringer der ikke er gemt endnu",
- "description": "Ønsker du at gendanne ikke gemte ændringer fra en foregående session?",
+ "description": "Ønsker du at gendanne ikke gemte ændringer fra en tidligere redigeringssession?",
"restore": "Gendan",
"reset": "Nulstil"
},
"save": {
"title": "Gem",
- "help": "Gem ændringer til OpenStreetMap og gør dem synlige for andre brugere.",
+ "help": "Gem ændringer til OpenStreetMap og gør dem dermed synlige for andre brugere.",
"no_changes": "Ingen ændringer at gemme.",
- "error": "Der skete en fejl under forsøget på at gemme",
- "unknown_error_details": "Vær sikker på du er forbundet til internettet.",
+ "error": "Der skete en fejl da du prøvede at gemme",
+ "status_code": "Serveren returnerede følgende statuskode {code}",
+ "unknown_error_details": "Kontrollér om du har forbindelse til internettet.",
"uploading": "Gemmer ændringer til OpenStreetMap.",
- "unsaved_changes": "Du har endnu ikke gemte ændringer"
+ "unsaved_changes": "Du har ændringer, der endnu ikke er gemt",
+ "conflict": {
+ "header": "Løs konfliktredigeringer",
+ "count": "Konfliktantal {num} af i alt {total}",
+ "previous": "< Forrige",
+ "next": "Næste >",
+ "keep_local": "Behold mine",
+ "keep_remote": "Brug deres",
+ "restore": "Gendan",
+ "delete": "Behold slettet",
+ "download_changes": "Eller download dine ændringer.",
+ "done": "All konflikter løst!",
+ "help": "En anden bruger ændrede nogle af de kortobjekter du ændrede.\nKlik på hver af dem for flere informationer om konflikten og vælg hvilken der skal beholdes\ndine ændringer eller den anden brugers ændringer\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Dette objekt blev slettet af {user}.",
+ "location": "Dette objekt blev flyttet af både dig og {user}.",
+ "nodelist": "Punkter var ændret af både dig og {user}.",
+ "memberlist": "Relationsmedlemmer blev ændret af både dig og {user}.",
+ "tags": "Du ændrede <b>{tag}</b> tag til \"{local}\" og {user} ændrede det til \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Redigerede OSM!",
"facebook": "Del på Facebook",
"twitter": "Del på Twitter",
"google": "Del på Google+",
- "help_html": "Dine ændringer skulle blive synlige om nogle få minutter i \"Standard\" laget. Andre lag og specielle objekter kan tage længere tid\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map'>mere information</a>).\n"
+ "help_html": "Dine ændringer skulle blive synlige i \"Standard\"-laget om få minutter. Andre lag og visse specielle objekter kan tage længere tid\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map'>mere information</a>).\n"
},
"confirm": {
- "okay": "Okay"
+ "okay": "Okay",
+ "cancel": "Fortryd"
},
"splash": {
- "welcome": "Velkommen til iD OpenStreetMap værktøjet",
- "text": "iD er et venligt, men kraftfuldt værktøj til at bidrage til verdens bedste frie verdenskort. Dette er version {version}. For mere information se {website} og indrapporter fejl hos {github}.",
+ "welcome": "Velkommen til OpenStreetMap-redigeringsværktøjet iD",
+ "text": "iD er et venligt men kraftfuldt værktøj til at bidrage til verdens bedste frie verdenskort. Dette er version {version}. Se {website} for mere information og indrapporter fejl på {github}.",
"walkthrough": "Start gennemgangen",
"start": "Rediger nu"
},
"source_switch": {
"live": "live",
- "lose_changes": "Du har ændringer som ikke er gemt endnu. At skifte kort server vil kassere ændringerne. Er du sikker på at du vil skifte server?",
+ "lose_changes": "Du har ændringer som ikke er gemt endnu. At skifte kortserver vil kassere ændringerne. Er du sikker på at du vil skifte server?",
"dev": "dev"
},
"tag_reference": {
"untagged_line": "Linje uden tags",
"untagged_area": "Område uden tags",
"many_deletions": "Du er ved at slette {n} objekter. Er du sikker på du ønsker at gøre dette? Det vil slette dem fra det kort som alle andre ser på openstreetmap.org.",
- "tag_suggests_area": "Tagget {tag} antyder at linjen er et område, selvom det ikke er et område",
+ "tag_suggests_area": "Tagget {tag} antyder at linjen skulle være et område, men den er ikke et område",
"untagged_point_tooltip": "Vælg en objekttype der beskriver hvad dette punkt er.",
"untagged_line_tooltip": "Vælg en objekttype der beskriver hvad slags linje dette er.",
"untagged_area_tooltip": "Vælg en objekttype der beskriver hvad slags område dette er.",
- "deprecated_tags": "Forældede tags: {tags}"
+ "deprecated_tags": "Frarådede tags: {tags}"
},
"zoom": {
"in": "Zoom ind",
},
"cannot_zoom": "Kan ikke zoome længere ud i nuværende tilstand.",
"gpx": {
- "local_layer": "Lokal GPX fil",
- "drag_drop": "Træk og slip en .gpx fil på siden eller klik på knappen til højre for at browse",
- "zoom": "Zoom hen til GPX spor",
- "browse": "Browse efter en .gpx fil"
+ "local_layer": "Lokal GPX-fil",
+ "drag_drop": "Træk og slip en .gpx-fil på siden eller klik på knappen til højre for at lede efter en",
+ "zoom": "Zoom til GPX-spor",
+ "browse": "Vælg en .gpx-fil"
},
"mapillary": {
- "tooltip": "Gadeniveau billeder fra Mapillary",
+ "tooltip": "Billeder på gadeniveau fra Mapillary",
"title": "Fotolag (Mapillary)",
"view_on_mapillary": "Vis dette billede på Mapillary"
},
"help": {
"title": "Hjælp",
- "help": "# Hjælp\n\nDette er et redigeringsværktøj for [OpenStreetMap](http://www.openstreetmap.org/), det\nåbne og redigeringsbare verdenskort. Du kan bruge dette værktøj til at opdatere\ngeodata i dit lokalområde. Derved skaber du et bedre verdenskort med open source og frie geodata\ntil gavn for alle.\n\nDine ændringer på kortet vil blive synligt for alle og enhver der benytter\nOpenStreetMap. For at lave redigeringer skal du oprette\n[en gratis OpenStreetMap konto](https://www.openstreetmap.org/user/new).\n\nDette [iD redigeringsværktøj](http://ideditor.com/) er et kollaborativ projekt og [kildekoden\ner tilgængelig på GitHub](https://github.com/systemed/iD). \n",
- "editing_saving": "# Redigering & Gem\n\nDette redigeringsværktøj er lavet primært til at arbejde online, og du\narbejder gennem et website lige nu.\n\n### Vælg Objekter\n\nFor at vælge et kortobjekt, som fx en vej eller et interessepunkt, klik\npå dette på kortet. Dette vil highlighte det valgte objekt, åbne et panel med\nyderligere detajler om det og samtidigt vise en menu med forskellige ting du kan gøre\nmed dette objekt.\n\nFlere objekter på en gang kan vælges ved at holde \"Shift\" knappen ned, klik og udvælg\npå kortet. Dette vil vælge alle indtegnede objekter indenfor en firkant. Dette tillader\ndig at gøre flere ting med flere objekter på en gang.\n\n### Gem Redigeringer\n\nNår du laver ændringer fx tilføjer veje, bygninger og steder, så er disse\ngemt lokalt på din computer lige ind til du har gemt dem på OpenStreetMaps server.\nDu skal ikke bekymre dig om, hvis du laver en fejl - du kan fortryde ændringer ved at klikke på \"Fortryd\" knappen.\n\nKlik på \"Gem\" for at afslutte dine ændringer - fx du har lavet et komplet område af en by og du ønsker at gå i gang med et nyt område. Du har mulighed for at gennemse hvad du har lavet og redigeringsværktøjet giver nogle hjælpsomme forslag og advarsler, hvis der er noget som ikke ser helt korrekt ud.\n\nHvis alting ser fint nok ud, så kan du skrive en lille kort kommentar om de ændringer du lige har lavet og klik så \"Gem\" igen for at sende ændringerne til [OpenStreetMap.org](http://www.openstreetmap.org/). Dine ændringer vil nu være synlige og tilgængelige for alle. Der igen kan bygge videre og forbedre data.\n\nHvis du ikke kan afslutte dine ændringer lige med det samme, så kan du forlade redigeringsværktøjet og komme igen senere (NB kræver du bruger samme browser og computer igen). Redigeringsværktøjet vil nu gendanne alt dit arbejde igen.\n",
+ "help": "# Hjælp\n\nDette er et redigeringsværktøj for [OpenStreetMap](http://www.openstreetmap.org/), det åbne og redigeringsbare verdenskort. Du kan bruge dette værktøj til at opdatere geodata i dit lokalområde. Derved skaber du et bedre verdenskort med open source og frie geodata til gavn for alle.\n\nDine ændringer på kortet vil blive synligt for alle og enhver der benytter OpenStreetMap. For at lave redigeringer skal du [logge ind](https://www.openstreetmap.org/login).\n\n Dette [iD redigeringsværktøj](http://ideditor.com/) er et kollaborativ projekt og [kildekoden er tilgængelig på GitHub](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Redigere og gemme\n\nDette redigeringsværktøj er lavet primært til at arbejde online, og du\narbejder gennem et website lige nu.\n\n### Vælge objekter\n\nFor at vælge et kortobjekt, såsom en vej eller et interessepunkt, skal \ndu klikke på det på kortet. Dette vil fremhæve det valgte objekt, åbne \net panel med yderligere detajler om det og samtidig vise en menu med \nforskellige ting, du kan gøre med dette objekt.\n\nFlere objekter på en gang kan vælges ved at holde Skift-tasten nede. \nDerefter kan du enten klikke på hver enkelt af de objekter, du ønsker at \nvælge, eller trække en firkant med musen og dermed vælge alle objekter \ninden for firkanten. Dette tillader dig at arbejde med flere objekter samtidig.\n\n### Gemme redigeringer\n\nNår du laver ændringer, fx tilføjer veje, bygninger og steder, bliver disse\ngemt lokalt på din computer indtil du har gemt dem på OpenStreetMaps server.\nDu skal ikke bekymre dig om, hvis du laver en fejl - du kan fortryde ændringer \nved at klikke på Fortryd-knappen.\n\nKlik på Gem for at afslutte en gruppe af ændringer - fx hvis du har lavet et \nkomplet område af en by og nu ønsker at gå i gang med et nyt område. \nDu har mulighed for at gennemse hvad du har lavet og redigeringsværktøjet \ngiver nogle hjælpsomme forslag og advarsler, hvis der er noget som ikke ser \nhelt korrekt ud.\n\nHvis alting ser fint ud, kan du skrive en lille kort kommentar om de ændringer \ndu lige har lavet og derefter klikke Gem igen for at sende ændringerne til \n[OpenStreetMap.org](http://www.openstreetmap.org/). Dine ændringer vil nu være synlige og tilgængelige for alle, der så kan bygge videre og forbedre på dem.\n\nHvis du ikke kan afslutte dine ændringer i én omgang, kan du forlade \nredigeringsværktøjet og komme igen senere (til den samme browser og computer),\nhvorefter redigeringsværktøjet vil tilbyde at gendanne dit arbejde.\n",
"roads": "# Veje\n\nDu kan oprette, tilrette og slette veje med dette tegneværktøj. Veje kan være af mange forskellige typer: stier, landeveje, spor, cykelstier mv. Enhver ofte benyttet rute kan kortlægges.\n\n### Vælg\n\nKlik på en vej for at vælge den. Et omrids dukker op sammen med en lille værktøjsmenu og et sidepanel der viser flere oplysninger om vejen.\n\n### Ændring\n\nOfte ses veje der ikke er justeret i forhold til luftfotoet bag dem eller i forhold til et GPS-spor. Du kan justere disse veje så de er placeret rigtigt.\n\nKlik først på vejen du vil ændre. Dette fremhæver den og viser kontrolpunkter langs med den som kan trækkes det rigtige sted hen. Hvis du har brug for flere kontrolpunkter for at gøre vejen mere detaljeret, kan du dobbeltklikke på en del af vejen, så dukker et punkt op.\n\nHvis vejen er forbundet til andre veje, men ikke er korrekt forbundet på kortet, så træk et af kontrolpunkterne hen på den anden vej for at koble dem sammen. Det er vigtigt for kortet, faktisk vitalt for rutevejledninger, at veje er forbundet.\n\nDu kan også klikke på flytteværktøjet eller trykke på tastegenvejen \"M\" for at flytte hele vejen på en gang, og så klikke igen for at gemme flytningen.\n\n### Sletning\n\nHvis en vej er helt forkert - du kan ikke se den på et luftfoto og du har ideelt set fået bekræftet at vejen ikke findes lokalt - så kan du slette vejen. Men pas på med at slette hvad andre har lavet - som med andre ændringer er resultatet synligt for alle og luftfoto kan være forældede så vejen kunne være bygget i mellemtiden.\n\nDu kan slette en bygning ved at vælge den og klikke på skraldespands-ikonet - alternativt kan du bruge slet-tasten på dit tastatur.\n\n### Oprettelse\n\nHar du fundet et sted hvor der skulle være en vej, men den er ikke på kortet? Klik på linje-ikonet i øverste venstre del af tegneværktøjet eller klik på tastegenvejen \"2\" for at tegne en linje.\n\nKlik på begyndelsen af vejen for at påbegynde den. Hvis vejen forgrener sig fra en eksisterende vej, så begynd vejen der hvor de er forbundet.\n\nKlik derefter på punkter på vejens forløb så det passer med luftfoto eller GPS-spor. Hvis vejen du tegner krydser en anden vej, så kobl dem sammen ved at klikke på punktet hvor de skærer hinanden. Når du er færdig med at tegne, så dobbeltklik eller tryk på enter-tasten på tastaturet.\n",
"gps": "## GPS\n\nGPS data er de mest troværdige data for OpenStreetMap. Dette redigeringsværktøj\nunderstøtter lokalt lagrede - `.gpx` filer på din computer. Du kan indsamle\nGPX spor med mange forskellige smartphone applikationer og med dedikeret\nGPS hardware.\n\nDu kan finde mere information om hvordan du laver en GPS undersøgelse - læs\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nFor at bruge et GPX spor til kortlægning - træk og slip GPX filen indover kortet i \nredigeringsværktøjet. Hvis den bliver genkendt som gyldigt format, så vil den blive tilføjet kortet som en\nlyse grøn linje. Klik på \"Baggrundsindstillinger\" menuen på den højre side for tilkoble\neller frakoble. Eller også zoom til det nye GPX understøttet lag.\n\nGPX sporet er ikke direkte oploadet til OpenStreetMap - Den bedste måde\nat bruge dette spor at indtegne efter det og bruge det som en rettesnor for de\nnye objekter du tilføjer. Du kan også [opload GPX sporet til OpenStreetMap](http://www.openstreetmap.org/trace/create)\nderved kan andre brugere også bruge dette.\n",
"imagery": "# Billeder\n\nLuftfotos er en vigtig ressource til kortlægning. En kombination af luftfotos taget fra fly, satellitbilleder og frit tilgængelige andre kilder er tilgængelig i redigeringsværktøjet i 'Baggrundsindstillinger\" menuen i højre side.\n\n[Bing Maps](http://www.bing.com/maps/) satellitbilledelaget er standardopsætning i redigeringsværktøjet. Når du zoomer og kommer til nye geografiske områder, så vil andre kilder være tilgængelige. I nogle lande som fx USA, Frankrig og Danmark vil der ofte være luftfotos i høj kvalitet i nogle egne.\n\nBillederne er af og til forskudt i forhold til de geografiske data, dette skyldes en fejl fra billedeleverandørens side. Hvis du ser en masse veje forskudt i forhold til billederne, så skal du ikke begynde at rykke disse objekter for at matche billedlaget. Du kan i stedet for i 'Baggrundsindstillinger\" og nederst \"Ret fejljustering\" flytte billede, så det passer til de geografisk objekter.\n",
"describe": "Punktet er nu markeret som en cafe. Ved at bruge redigeringsværktøjet kan vi tilføje mere information om elementet.**Tilføj et navn**",
"close": "Elementeditoren kan lukkes ved at klikke på luk knappen.\n**Luk redigeringsværktøjet**",
"reselect": "Ofte vil punkter allerede findes, men have fejl eller mangler. Vi kan rette i allerede eksisterende punkter.**Vælg punktet du lige lavede.**",
- "fixname": "**Ændre navnet og luk elementeditoren.**",
+ "fixname": "**Ændr navnet og luk elementeditoren.**",
"reselect_delete": "Alle geografiske objekter på kortet kan slettes.**Klik på punktet du har lavet.**",
"delete": "Menuen omkring punktet indeholder værktøjer der kan bruges på det, inkl. sletning.**Slet punktet.**"
},
"name": "Golf"
},
"category-landuse": {
- "name": "Brug af land"
+ "name": "Arealanvendelse"
},
"category-path": {
"name": "Sti"
"fields": {
"access": {
"label": "Adgang",
- "placeholder": "Ukendt",
- "types": {
- "access": "Generelt",
- "foot": "Til fods",
- "motor_vehicle": "Motorkøretøjer",
- "bicycle": "Cykler",
- "horse": "Heste"
- },
"options": {
- "yes": {
- "title": "Tilladt",
- "description": "Adgang tilladt i følge loven"
+ "designated": {
+ "description": "Adgang tilladt ifølge trafikskilte eller lokale bestemmelser",
+ "title": "Udpeget til netop dette formål"
+ },
+ "destination": {
+ "description": "Ærindekørsel tilladt",
+ "title": "Destination"
},
"no": {
- "title": "Forbudt",
- "description": "Adgang ikke tilladt for offentligheden"
+ "description": "Adgang ikke tilladt for offentligheden",
+ "title": "Forbudt"
},
"permissive": {
- "title": "Adgang efter tilladelse",
- "description": "Adgang tilladt indtil ejer tilbagekalder tilladelsen"
+ "description": "Adgang tilladt indtil ejer tilbagekalder tilladelsen",
+ "title": "Adgang efter tilladelse"
},
"private": {
- "title": "Privat",
- "description": "Adgang tilladt ved udstedelse af individuelle tilladelser fra ejer"
- },
- "designated": {
- "title": "Udpeget til netop dette formål",
- "description": "Adgang tilladt iflg. trafikskilte eller lokale bestemmelser"
+ "description": "Adgang kun tilladt ved udstedelse af individuelle tilladelser fra ejer",
+ "title": "Privat"
},
- "destination": {
- "title": "Destination",
- "description": "Ærindekørsel tilladt"
+ "yes": {
+ "description": "Adgang tilladt i følge loven",
+ "title": "Tilladt"
}
+ },
+ "placeholder": "Ukendt",
+ "types": {
+ "access": "Generelt",
+ "bicycle": "Cykler",
+ "foot": "Til fods",
+ "horse": "Heste",
+ "motor_vehicle": "Motorkøretøjer"
}
},
"access_simple": {
"address": {
"label": "Adresse",
"placeholders": {
+ "city": "By",
+ "country": "Land",
+ "district": "Bydel",
+ "hamlet": "Lille landsby",
"housename": "Husnavn",
"housenumber": "123",
- "street": "Gade",
- "city": "By",
- "postcode": "Postnummer",
"place": "Sted",
- "hamlet": "Mindre beboet område",
- "suburb": "Bydel",
+ "postcode": "Postnummer",
+ "province": "Landsdel",
+ "state": "Delstat",
+ "street": "Gade",
"subdistrict": "Kvarter",
- "district": "Distrikt",
- "province": "Provins",
- "state": "Region",
- "country": "Land"
+ "suburb": "Forstad"
}
},
"admin_level": {
"aerialway/access": {
"label": "Adgang",
"options": {
+ "both": "Begge",
"entry": "Indgang",
- "exit": "Udgang",
- "both": "Begge"
+ "exit": "Udgang"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Adgang (sommer)",
"options": {
+ "both": "Begge",
"entry": "Indgang",
- "exit": "Udgang",
- "both": "Begge"
+ "exit": "Udgang"
}
},
"aeroway": {
"label": "Type"
},
"artist": {
- "label": "Kunster"
+ "label": "Kunstner"
},
"artwork_type": {
"label": "Type"
"label": "Type"
},
"brand": {
- "label": "Brand"
+ "label": "Mærke"
},
"building": {
"label": "Bygning"
"cardinal_direction": {
"label": "Retning",
"options": {
- "N": "Nord",
"E": "Øst",
- "S": "Syd",
- "W": "Vest",
- "NE": "Nordøst",
- "SE": "Sydøst",
- "SW": "Sydvest",
- "NW": "Nordvest",
- "NNE": "Nord-nordøst",
"ENE": "Øst-nordøst",
"ESE": "Øst-sydøst",
+ "N": "Nord",
+ "NE": "Nordøst",
+ "NNE": "Nord-nordøst",
+ "NNW": "Nord-nordvest",
+ "NW": "Nordvest",
+ "S": "Syd",
+ "SE": "Sydøst",
"SSE": "Syd-sydøst",
"SSW": "Syd-sydvest",
- "WSW": "Vest-sydvest",
+ "SW": "Sydvest",
+ "W": "Vest",
"WNW": "Vest-nordvest",
- "NNW": "Nord-nordvest"
+ "WSW": "Vest-sydvest"
}
},
"clock_direction": {
"label": "Retning",
"options": {
- "clockwise": "Retning med uret",
- "anticlockwise": "Mod uret"
+ "anticlockwise": "Mod uret",
+ "clockwise": "Med uret"
}
},
"collection_times": {
- "label": "Indsamlingstidspunkt"
+ "label": "Indsamlingstidspunkter"
},
"construction": {
"label": "Type"
},
+ "content": {
+ "label": "Indhold"
+ },
"country": {
"label": "Land"
},
"label": "Trosretning"
},
"denotation": {
- "label": "Denotation"
+ "label": "Betegnelse"
},
"description": {
"label": "Beskrivelse"
},
+ "drive_through": {
+ "label": "Gennemkørsel - uden stop"
+ },
"electrified": {
"label": "Elektrificering",
- "placeholder": "Kontaktlinje, Elektrificeret jernbane",
"options": {
- "contact_line": "Kontaktlinje",
+ "contact_line": "Køreledning",
+ "no": "Nej",
"rail": "Elektrificeret jernbane",
- "yes": "Ja (udspecificeret)",
- "no": "Nej"
- }
+ "yes": "Ja (uspecificeret)"
+ },
+ "placeholder": "Køreledning, elektrificeret jernbane"
},
"elevation": {
"label": "Højde over havet"
"fire_hydrant/type": {
"label": "Type",
"options": {
- "pillar": "Brandhane/Overjordisk",
+ "pillar": "Søjle/overjordisk",
+ "pond": "Dam",
"underground": "Underjordisk",
- "wall": "Mur",
- "pond": "Dam"
+ "wall": "Mur"
}
},
"fixme": {
"label": "Sælger E85"
},
"fuel/lpg": {
- "label": "Sælger gas"
+ "label": "Sælger propangas"
},
"fuel/octane_100": {
- "label": "Sælger høj oktan benzin"
+ "label": "Sælger \"racing\"-benzin"
},
"fuel/octane_91": {
- "label": "Sælger almindelig benzin"
+ "label": "Sælger \"regular\"-benzin (oktan 87)"
},
"fuel/octane_95": {
- "label": "Sælger medium benzin"
+ "label": "Sælger \"medium\"-benzin (oktan 89)"
},
"fuel/octane_98": {
- "label": "Sælger premium benzin"
+ "label": "Sælger \"premium\"-benzin (oktan 92-93)"
},
"gauge": {
"label": "Sporvidde"
},
"gender": {
"label": "Køn",
- "placeholder": "Ukendt",
"options": {
- "male": "Mand",
"female": "Kvinde",
+ "male": "Mand",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Ukendt"
},
"generator/method": {
"label": "Metode"
},
"golf_hole": {
"label": "Reference",
- "placeholder": "Hul nummer (1-18)"
+ "placeholder": "Hulnummer (1-18)"
},
"handicap": {
"label": "Handikap",
"incline": {
"label": "Stigning"
},
+ "incline_steps": {
+ "label": "Stigning",
+ "options": {
+ "down": "Ned",
+ "up": "Op"
+ }
+ },
"information": {
"label": "Type"
},
"internet_access": {
"label": "Internetadgang",
"options": {
- "yes": "Ja",
"no": "Nej",
+ "terminal": "Terminal",
+ "wired": "Via kabel",
"wlan": "Wifi",
- "wired": "Kabeladgang",
- "terminal": "Terminal"
+ "yes": "Ja"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Bladcyklus",
"options": {
- "evergreen": "Altid grønt",
"deciduous": "Løvfældende",
- "semi_evergreen": "Semi-grønt",
- "semi_deciduous": "Semi-løvfældende",
- "mixed": "Blandet"
+ "evergreen": "Stedsegrønt",
+ "mixed": "Blandet",
+ "semi_deciduous": "Delvist løvfældende",
+ "semi_evergreen": "Delvist stedsegrønt"
}
},
"leaf_type": {
"label": "Bladtype",
"options": {
"broadleaved": "Løvtræsblade",
- "needleleaved": "Nåleblade",
+ "leafless": "Bladløs",
"mixed": "Blandet",
- "leafless": "Bladløs"
+ "needleleaved": "Nåleblade"
}
},
"leisure": {
"label": "Type"
},
"length": {
- "label": "Længde(Meter)"
+ "label": "Længde (meter)"
},
"levels": {
"label": "Etager",
"placeholder": "40, 50, 60..."
},
"mtb/scale": {
- "label": "Mountain bike vanskelighedsniveau",
- "placeholder": "0, 1, 2, 3...",
+ "label": "Sværhedsgrad for mountainbike",
"options": {
"0": "0: Fast grus/ pakket jord, ingen forhindringer, brede kurver",
- "1": "1: Noget løst overflade, små forhindringer, brede kurver",
- "2": "2: Meget løs overflade, store forhindringer, nemme hårnåle sving",
- "3": "3: Glat overflade, store forhindringer, stramme hårnåle sving",
- "4": "4: løs overflade eller kampesten, farlige hårnåle sving",
+ "1": "1: Noget løs overflade, små forhindringer, brede kurver",
+ "2": "2: Meget løs overflade, store forhindringer, nemme hårnålesving",
+ "3": "3: Glat overflade, store forhindringer, stramme hårnålesving",
+ "4": "4: Løs overflade eller kampesten, farlige hårnålesving",
"5": "5: Maksimal sværhedsgrad, kampestensområder, jordskred",
- "6": "6: Ikke farbar område undtagen for de allerbedste mountainbikere"
- }
+ "6": "6: Ikke farbart undtagen for de allerbedste mountainbikere"
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
- "label": "IMBA spor vanskelighedsniveau",
- "placeholder": "Nemt, Medium, Svært",
+ "label": "Sværhedsgrad for IMBA-spor",
"options": {
"0": "Nemmeste (hvid cirkel)",
"1": "Let (grøn cirkel)",
"2": "Medium (blå firkant)",
"3": "Vanskelig (sort diamant)",
- "4": "Ekstremt vanskeligt (dobbelt sort diamant)"
- }
+ "4": "Ekstremt vanskelig (dobbelt sort diamant)"
+ },
+ "placeholder": "Nemt, medium, svært"
},
"mtb/scale/uphill": {
- "label": "Mountainbike op ad bakke Sværhedsgrad",
- "placeholder": "0, 1, 2, 3...",
+ "label": "Sværhedsgrad for mountainbike op ad bakke",
"options": {
- "0": "0: Gennemsnitlig hældning <10%, grus / hård jord, ingen forhindringer",
- "1": "1: Gennemsnitlig hældning <15%, grus / hård jord, nogle små genstande",
- "2": "2: Gennemsnitlig hældning <20%, stabil overflade, klipperstykker/trærødder",
- "3": "3: Gennemsnitlig hældning <25%, variabel overflade, klippestykker/træstykker",
- "4": "4: Gennemsnitlig hældning <30%, dårlige forhold, store sten /træstykker",
- "5": "5: Meget stejlt, cykel er generelt nødvendigt blive skubbet eller bæres"
- }
+ "0": "0: Gennemsnitlig hældning < 10 %, grus / hård jord, ingen forhindringer",
+ "1": "1: Gennemsnitlig hældning < 15 %, grus / hård jord, nogle små genstande",
+ "2": "2: Gennemsnitlig hældning < 20 %, stabil overflade, klipperstykker/trærødder",
+ "3": "3: Gennemsnitlig hældning < 25 %, variabel overflade, klippestykker/træstykker",
+ "4": "4: Gennemsnitlig hældning < 30 %, dårlige forhold, store sten/træstykker",
+ "5": "5: Meget stejlt, cyklen skal for det meste skubbes eller bæres"
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Navn",
- "placeholder": "Mest kendte navn (hvis nogen)"
+ "placeholder": "Mest kendte navn (hvis noget)"
},
"natural": {
"label": "Naturlig"
"oneway": {
"label": "Ensrettet",
"options": {
- "undefined": "Forventet at være Nej",
- "yes": "Ja",
- "no": "Nej"
+ "no": "Nej",
+ "undefined": "Antages at være Nej",
+ "yes": "Ja"
}
},
"oneway_yes": {
"label": "Ensrettet",
"options": {
- "undefined": "Forventet at være Ja",
- "yes": "Ja",
- "no": "Nej"
+ "no": "Nej",
+ "undefined": "Antages at være Ja",
+ "yes": "Ja"
}
},
"opening_hours": {
"parking": {
"label": "Type",
"options": {
- "surface": "Overflade",
- "multi-storey": "Multiniveau",
- "underground": "Underjordisk",
- "sheds": "Skur",
"carports": "Carporte",
"garage_boxes": "Garagebokse",
- "lane": "Vejsidespor"
+ "lane": "Vejsidespor",
+ "multi-storey": "Multiniveau",
+ "sheds": "Læskure",
+ "surface": "Overflade",
+ "underground": "Underjordisk"
}
},
"phone": {
"placeholder": "+31 42 123 4567"
},
"piste/difficulty": {
- "label": "Vanskelighedsniveau",
- "placeholder": "Let, Mellemsvært, Avanceret...",
+ "label": "Sværhedsgrad",
"options": {
- "novice": "Nybegynder (instruktioner)",
- "easy": "Nemt (grøn cirkel)",
- "intermediate": "Mellemsvært (blå firkant)",
"advanced": "Avanceret (sort diamant)",
+ "easy": "Nemt (grøn cirkel)",
"expert": "Ekspert (dobbelt sort diamant)",
+ "extreme": "Ekstremt (klatreudstyr påkrævet)",
"freeride": "Freeride (off-piste)",
- "extreme": "Ekstremt (klatreudstyr påkrævet)"
- }
+ "intermediate": "Mellemsvært (blå firkant)",
+ "novice": "Nybegynder (vejledning)"
+ },
+ "placeholder": "Let, mellemsvær, avanceret..."
},
"piste/grooming": {
"label": "Sikkerhed",
"options": {
- "classic": "Klassisk",
- "mogul": "Pukkelpist",
"backcountry": "Offpiste",
+ "classic": "Klassisk",
"classic+skating": "Klassisk og skiløb",
+ "mogul": "Pukkelpist",
"scooter": "Snescooter",
"skating": "Skøjteløb"
}
"label": "Type",
"options": {
"downhill": "Styrtløb",
+ "hike": "Skivandretur",
+ "ice_skate": "Skøjter",
"nordic": "Nordisk",
+ "playground": "Legeplads",
"skitour": "Skirute",
"sled": "Slæde",
- "hike": "Skivandretur",
"sleigh": "Kælk",
- "ice_skate": "Skøjter",
- "snow_park": "Snepark",
- "playground": "Legeplads"
+ "snow_park": "Snepark"
}
},
"place": {
"power": {
"label": "Type"
},
+ "power_supply": {
+ "label": "Eltransformator"
+ },
"railway": {
"label": "Type"
},
"label": "Accepterer dåser"
},
"recycling/clothes": {
- "label": "Acceptere tøj"
+ "label": "Accepterer tøj"
},
"recycling/glass": {
- "label": "Acceptere glas"
+ "label": "Accepterer glas"
},
"recycling/paper": {
"label": "Accepterer papir"
"label": "Type"
},
"restrictions": {
- "label": "Sving restriktioner"
+ "label": "Drejebegrænsninger"
},
"route": {
"label": "Type"
"label": "Type"
},
"sac_scale": {
- "label": "Vandrings vanskelighedsniveau",
- "placeholder": "Bjergvandring, Alpintvandring...",
+ "label": "Sværhedsgrad for vandrere",
"options": {
+ "alpine_hiking": "T4: Alpin vandring",
+ "demanding_alpine_hiking": "T5: Udfordrende alpinvandring",
+ "demanding_mountain_hiking": "T3: Krævende bjergvandring",
+ "difficult_alpine_hiking": "T6: Vanskelig alpinvandring",
"hiking": "T1: Vandring",
- "mountain_hiking": "T2: Bjergvandring",
- "demanding_mountain_hiking": "T3: Udfordrende bjergvandring",
- "alpine_hiking": "T4: Alpint vandring",
- "demanding_alpine_hiking": "T5: Udfordrende alpint vandring",
- "difficult_alpine_hiking": "T6: Vanskelig alpint vandring"
- }
+ "mountain_hiking": "T2: Bjergvandring"
+ },
+ "placeholder": "Bjergvandring, alpinvandring..."
+ },
+ "sanitary_dump_station": {
+ "label": "Toilet funktionsmåde"
},
"seasonal": {
"label": " Sæsonpræget"
"service": {
"label": "Type"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Kædeværktøj",
"options": {
- "undefined": "Forventet at være Nej",
- "yes": "Ja",
- "no": "Nej"
+ "no": "Nej",
+ "undefined": "Antages at være Nej",
+ "yes": "Ja"
}
},
"service/bicycle/pump": {
"label": "Luftpumpe",
"options": {
- "undefined": "Er forventet at være Nej",
- "yes": "Ja",
- "no": "Nej"
+ "no": "Nej",
+ "undefined": "Antages at være Nej",
+ "yes": "Ja"
+ }
+ },
+ "service_rail": {
+ "label": "Servicetype",
+ "options": {
+ "crossover": "Kryds",
+ "siding": "Langsomt spor",
+ "spur": "Firmaspor",
+ "yard": "Rangergård"
}
},
"shelter": {
},
"smoking": {
"label": "Rygning",
- "placeholder": "Nej, Separeret, Ja...",
"options": {
+ "dedicated": "Dedikeret til rygere (fx rygerklub)",
+ "isolated": "I rygeområder, fysisk adskilte",
"no": "Rygning forbudt overalt",
- "separated": "I rygeområder, ikke fysisk isolerede",
- "isolated": "I rygeområder, fysisk isolerede",
"outside": "Tilladt udenfor",
- "yes": "Tilladt alle steder",
- "dedicated": "Dedikeret til rygere (fx rygeres klub)"
- }
+ "separated": "I rygeområder, ikke fysisk adskilte",
+ "yes": "Tilladt alle steder"
+ },
+ "placeholder": "Nej, adskilt, ja..."
},
"smoothness": {
"label": "Glathed",
- "placeholder": "Tynd hjul, Hjul, Off-Road...",
"options": {
+ "bad": "Robuste hjul: mountainbikecykel, bil, rickshaw",
"excellent": "Tynde hjul: rulleskøjter, skateboard",
"good": "Tynde hjul: racercykel",
+ "horrible": "Offroad: kraftigt terrængående køretøj",
+ "impassable": "Ufremkommeligt / intet køretøj på hjul",
"intermediate": "Hjul: citybike, kørestol, scooter",
- "bad": "Robuste hjul: mountainbikecykel, bil, rickshaw",
"very_bad": "Høj frihøjde: lettere terrængående køretøj",
- "horrible": "Off-Road: terrængående køretøj",
- "very_horrible": "Specialiseret off-road: traktor, ATV",
- "impassable": "Ufremkommeligt /Intet køretøj på hjul"
- }
+ "very_horrible": "Specialiseret offroad: traktor, ATV"
+ },
+ "placeholder": "Tynde hjul, hjul, offroad..."
},
"social_facility_for": {
- "label": "Serviceret folk",
- "placeholder": "Hjemmeløse, Handicappede, Børn osv"
+ "label": "Klientel",
+ "placeholder": "Hjemløse, handicappede, børn, osv."
},
"source": {
"label": "Kilde"
},
"structure": {
"label": "Struktur",
- "placeholder": "Ukendt",
"options": {
"bridge": "Bro",
- "tunnel": "Tunnel",
- "embankment": "Forhøjning til tog, vej",
"cutting": "Forsænkning",
- "ford": "Vadested"
- }
+ "embankment": "Forhøjning til tog, vej",
+ "ford": "Vadested",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Ukendt"
},
"studio_type": {
"label": "Type"
"label": "Type"
},
"supervised": {
- "label": "Supervision"
+ "label": "Overvåget"
},
"surface": {
"label": "Overflade"
},
"tactile_paving": {
- "label": "Tactile Paving"
+ "label": "Følbar belægning for blinde"
},
"takeaway": {
"label": "Takeaway",
- "placeholder": "Ja, Nej, kun Takeaway...",
"options": {
- "yes": "Ja",
"no": "Nej",
- "only": "Kun Takeway"
- }
+ "only": "Kun Takeway",
+ "yes": "Ja"
+ },
+ "placeholder": "Ja, nej, kun takeaway..."
},
"toilets/disposal": {
- "label": "Bortskaffelse affald",
+ "label": "Funktionsmåde",
"options": {
- "flush": "Træk & Slip",
- "pitlatrine": "Latrin",
+ "bucket": "Spand",
"chemical": "Kemisk",
- "bucket": "Spand"
+ "flush": "Træk & slip",
+ "pitlatrine": "Latrin"
}
},
"tourism": {
"label": "Type"
},
"towertype": {
- "label": "Tårn type"
+ "label": "Tårntype"
},
"tracktype": {
"label": "Sportype",
- "placeholder": "Solid, for det meste solid, blød",
"options": {
- "grade1": "Solid: hårdt vejbelagt eller stærkt komprimeret overflade",
- "grade2": "Overvejende solid: grus / småsten med nogle bløde materiale blandet i",
+ "grade1": "Fast: hårdt vejbelagt eller stærkt komprimeret overflade",
+ "grade2": "Overvejende fast: grus / småsten med nogle bløde materiale blandet i",
"grade3": "En blanding af hårde og bløde materialer",
- "grade4": "Overvejende blødt: jord / sand / græs med nogle hårde materialer blandet i",
- "grade5": "Blødt: jord/sand/græs"
- }
+ "grade4": "Overvejende blød: jord / sand / græs med nogle hårde materialer blandet i",
+ "grade5": "Blød: jord/sand/græs"
+ },
+ "placeholder": "Fast, overvejende fast, blød …"
},
"trail_visibility": {
- "label": "Spor synlighed",
- "placeholder": "Udmærket, God, Dårlig...",
+ "label": "Synlighed af spor",
"options": {
- "excellent": "Udmærket: entydig sti eller markører overalt",
- "good": "Godt: markører synlige, undertiden kræves at lave lidt søgning",
- "intermediate": "Mellemsværhedsgrad: få markører, sti for det meste synlig",
- "bad": "Dårlig: ingen markører, sti til tider usynlig /sporløse",
- "horrible": "Horrible: ofte sporløse, kræves nogle orientering færdigheder",
- "no": "Nej: sporløse, kræves glimrende orientering færdigheder"
- }
+ "bad": "Dårlig: ingen markører, sti til tider usynlig / sporløs",
+ "excellent": "Fremragende: entydig sti eller markører overalt",
+ "good": "God: markører synlige, undertiden kræves søgning",
+ "horrible": "Frygtelig: ofte sporløs, kræver visse orienteringsfærdigheder",
+ "intermediate": "Mellemsvær: kun få markører, sti for det meste synlig",
+ "no": "Ingen: sporløs, kræver fremragende orienteringsfærdigheder"
+ },
+ "placeholder": "Fremragende, god, dårlig..."
},
"trees": {
"label": "Træer"
"label": "Tunnel"
},
"vending": {
- "label": "Gods type"
+ "label": "Varetype"
},
"water": {
"label": "Type"
},
+ "water_point": {
+ "label": "Vandbrønd"
+ },
"waterway": {
"label": "Type"
},
"website": {
- "label": "Webside",
+ "label": "Websted",
"placeholder": "http://example.com/"
},
"wetland": {
"label": "Kørestolsadgang"
},
"width": {
- "label": "Bredde(Meter)"
+ "label": "Bredde (meter)"
},
"wikipedia": {
"label": "Wikipedia"
},
"aerialway/cable_car": {
"name": "Svævebane",
- "terms": "Svævebane, Gongolbane"
+ "terms": "Svævebane, Gondolbane"
},
"aerialway/chair_lift": {
"name": "Skilift",
"terms": "Lufthavn, Flyveplads"
},
"aeroway/apron": {
- "name": "Apron",
+ "name": "forplads foran hangarer",
"terms": "Apron"
},
"aeroway/gate": {
- "name": "Lufthavns gate",
+ "name": "Lufthavnsgate",
"terms": "Lufthavns gate"
},
"aeroway/hangar": {
"name": "Cykelværktøjlån",
"terms": "Cykelværktøjlån, Cykelværktøj"
},
+ "amenity/biergarten": {
+ "name": "Ølhave",
+ "terms": "Ølhave, Ølstue"
+ },
"amenity/boat_rental": {
"name": "Bådudlejning",
"terms": "Bådudlejning, lystbådudlejning"
"name": "Restaurant",
"terms": "Restaurant, Spisested, Spisehus"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Tør closettoilet funtionsområde",
+ "terms": "Tør closettoilet funtionsområde"
+ },
"amenity/school": {
"name": "Skolegrund",
"terms": "Skoleområde, Skolegrund"
"name": "Fyr (navigation)",
"terms": "Fyr (navigation)"
},
+ "man_made/mast": {
+ "name": "Radiomast",
+ "terms": "Radiomast"
+ },
"man_made/observation": {
"name": "Observationstårn",
"terms": "observationstårn, udkigstårn"
},
+ "man_made/petroleum_well": {
+ "name": "Oliebrønd",
+ "terms": "Oliebrønd"
+ },
"man_made/pier": {
"name": "Bådebro",
"terms": "Bådebro"
"name": "Rørledning",
"terms": "Rørledning"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "Silo, Silotank"
+ },
+ "man_made/storage_tank": {
+ "name": "Lagertank",
+ "terms": "Lagertank"
+ },
"man_made/survey_point": {
"name": "Geografisk fixpunkt",
"terms": "Geografisk fixpunkt"
"name": "Storby",
"terms": "Storby"
},
+ "place/farm": {
+ "name": "Gård",
+ "terms": "Gård, Bondegård"
+ },
"place/hamlet": {
"name": "Mindre beboet område",
"terms": "Mindre beboet område"
"name": "Relation",
"terms": "Relation"
},
+ "roundabout": {
+ "name": "Rundkørsel",
+ "terms": "Rundkørsel"
+ },
"route/ferry": {
"name": "Færgerute",
"terms": "Færgerute"
"name": "Drænløb",
"terms": "Drænløb"
},
+ "waterway/fuel": {
+ "name": "Søtankstation",
+ "terms": "Søtankstation"
+ },
"waterway/river": {
"name": "Flod/å",
"terms": "Flod, Å"
"name": "Flodbred",
"terms": "Flodbred"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Søtoilet funktionsområde",
+ "terms": "Søtoilet funktionsområde"
+ },
"waterway/stream": {
"name": "Bæk",
"terms": "Bæk"
+++ /dev/null
-{}
\ No newline at end of file
"modes": {
"add_area": {
"title": "Fläche",
- "description": "Füge Parks, Gebäude, Seen oder andere Flächen zur Karte hinzu.",
+ "description": "Parks, Gebäude, Seen oder andere Flächen zur Karte hinzufügen.",
"tail": "Klicke auf die Karte, um das Zeichnen einer Fläche wie einen Park, eines Sees oder eines Gebäudes zu starten."
},
"add_line": {
"title": "Linie",
- "description": "Füge Autobahnen, Straßen, Fußwege, Kanäle oder andere Linien zur Karte hinzu.",
- "tail": "Klicke auf die Karte, um das Zeichnen einer Straße, eines Pfades oder eines Weges zu starten."
+ "description": "Autobahnen, Straßen, Fußwege, Kanäle oder andere Linien zur Karte hinzufügen.",
+ "tail": "Klicke auf die Karte, um das Zeichnen einer Straße, eines Pfades oder eines Weges zu beginnen."
},
"add_point": {
"title": "Punkt",
- "description": "Füge Restaurants, Denkmäler, Briefkästen oder andere Punkte der Karte hinzu.",
+ "description": "Restaurants, Denkmäler, Briefkästen oder andere Punkte der Karte hinzufügen.",
"tail": "Klicke in die Karte, um einen Punkt hinzuzufügen."
},
"browse": {
"tail": "Klicke, um Punkte zur Fläche hinzuzufügen. Klicke auf den ersten Punkt, um die Fläche abzuschließen."
},
"draw_line": {
- "tail": "Klicke, um mehr Punkte zur Linie hinzuzufügen. Klicke auf eine andere Linie, um die Linien zu verbinden und klicke doppelt, um die Linie zu beenden."
+ "tail": "Klicke, um weitere Punkte zur Linie hinzuzufügen. Klicke auf eine andere Linie, um die Linien zu verbinden und klicke doppelt, um die Linie zu beenden."
}
},
"operations": {
"circularize": {
"title": "Abrunden",
"description": {
- "line": "Diese Linie kreisförmig machen.",
- "area": "Diese Fläche kreisförmig machen."
+ "line": "Diese Linie kreisförmig anordnen.",
+ "area": "Diese Fläche kreisförmig anordnen."
},
"key": "O",
"annotation": {
"line": "Eine Fläche abgerundet",
- "area": "Eine Fläche kreisförmig gemacht"
+ "area": "Eine Fläche kreisförmig angeordnet."
},
- "not_closed": "Dieses Objekt kann nicht kreisförmig gemacht werden, da es keine Schleife ist.",
- "too_large": "Dieses Objekt kann nicht kreisförmig gemacht werden, weil zu wenig sichtbar ist.",
- "connected_to_hidden": "Dieses Objekt kann nicht kreisfömig gemacht werden, weil es mit einem versteckten Objekt verbunden ist."
+ "not_closed": "Dieses Objekt kann nicht kreisförmig angeordnet werden, da es keine Schleife ist.",
+ "too_large": "Dieses Objekt kann nicht kreisförmig angeordnet werden, da zu wenig davon sichtbar ist.",
+ "connected_to_hidden": "Dieses Objekt kann nicht kreisförmig angeordnet werden, da es mit einem versteckten Objekt verbunden ist."
},
"orthogonalize": {
"title": "Rechteck",
"description": {
- "line": "Die Ecken dieser Linien rechteckig machen.",
- "area": "Die Ecken dieser Fläche rechteckig machen."
+ "line": "Die Ecken dieser Linien rechteckig ausrichten.",
+ "area": "Die Ecken dieser Fläche rechteckig ausrichten."
},
"key": "S",
"annotation": {
"line": "Die Ecken einer Linie rechtwinklig ausgerichtet.",
"area": "Die Ecken einer Fläche rechtwinklig ausgerichtet."
},
- "not_squarish": "Dieses Objekt kann nicht rechtwinklig gemacht werden, da es nicht annähernd rechtwinklig ist.",
- "too_large": "Dieses Objekt kann nicht quadratisch gemacht werden, weil zu wenig sichtbar ist.",
- "connected_to_hidden": "Dieses Objekt kann nicht quadratisch gemacht werden, weil es mit einem versteckten Objekt verbunden ist."
+ "not_squarish": "Dieses Objekt kann nicht rechtwinklig ausgerichtet werden, da es nicht annähernd rechtwinklig ist.",
+ "too_large": "Dieses Objekt kann nicht quadratisch ausgerichtet werden, da zu wenig davon sichtbar ist.",
+ "connected_to_hidden": "Dieses Objekt kann nicht quadratisch ausgerichtet werden, da es mit einem versteckten Objekt verbunden ist."
},
"straighten": {
"title": "Begradigen",
"key": "S",
"annotation": "Linie begradigt.",
"too_bendy": "Dieses Objekt kann nicht begradigt werden, da es zu kurvig ist.",
- "connected_to_hidden": "Dieses Objekt kann nicht geradlinig gemacht werden, weil es mit einem versteckten Objekt verbunden ist."
+ "connected_to_hidden": "Dieses Objekt kann nicht begradigt werden, da es mit einem versteckten Objekt verbunden ist."
},
"delete": {
"title": "Löschen",
- "description": "Objekt löschen.",
+ "description": "Objekt dauerhaft löschen.",
"annotation": {
"point": "Punkt gelöscht.",
"vertex": "Punkt aus einem Weg gelöscht.",
"multiple": "{n} Objekte gelöscht."
},
"incomplete_relation": "Dieses Objekt kann nicht gelöscht werden, da es nicht vollständig heruntergeladen wurde.",
- "connected_to_hidden": "Dieses Objekt kann nicht gelöscht werden, weil es mit einem versteckten Objekt verbunden ist."
+ "part_of_relation": "Dieses Objekt kann nicht gelöscht werden, da es Mitglied einer Relation ist. Entferne vor dem Löschen das Objekt aus der Relation.",
+ "connected_to_hidden": "Dieses Objekt kann nicht gelöscht werden, da es mit einem versteckten Objekt verbunden ist."
},
"add_member": {
"annotation": "Ein Mitglied zu einer Relation hinzugefügt."
},
"merge": {
"title": "Vereinigen",
- "description": "Vereinige diese Linien.",
+ "description": "Diese Linien vereinigen.",
"key": "C",
"annotation": "{n} Linien vereinigt.",
"not_eligible": "Diese Objekte können nicht vereinigt werden.",
"not_adjacent": "Diese Linien können nicht vereinigt werden, da sie nicht verbunden sind.",
- "restriction": "Diese Linien können nicht vereinigt werden, da mindestens eine Linie ein Mitglied einer \"{relation}\" Relation ist.",
+ "restriction": "Diese Linien können nicht vereinigt werden, da mindestens eine Linie ein Mitglied der Relation „{relation}“ ist.",
"incomplete_relation": "Diese Objekte können nicht zusammengefügt werden, da mindestens eines noch nicht vollständig heruntergeladen wurde."
},
"move": {
"title": "Verschieben",
- "description": "Verschiebe dieses Objekt an einen anderen Standort.",
+ "description": "Dieses Objekt an einen anderen Standort verschieben.",
"key": "M",
"annotation": {
"point": "Punkt verschoben.",
"multiple": "Mehrere Objekte verschoben."
},
"incomplete_relation": "Dieses Objekt kann nicht verschoben werden, da es nicht vollständig heruntergeladen wurde.",
- "too_large": "Dieses Objekt kann nicht bewegt werden, weil nicht genug davon sichtbar ist.",
- "connected_to_hidden": "Dieses Objekt kann nicht verschoben werden, weil es mit einem versteckten Objekt verbunden ist."
+ "too_large": "Dieses Objekt kann nicht bewegt werden, da nicht genug davon sichtbar ist.",
+ "connected_to_hidden": "Dieses Objekt kann nicht verschoben werden, da es mit einem versteckten Objekt verbunden ist."
},
"rotate": {
"title": "Drehen",
"line": "Linie gedreht.",
"area": "Fläche gedreht."
},
- "too_large": "Das Objekt kann nicht gedreht werden, weil nicht genug davon sichtbar ist.",
- "connected_to_hidden": "Dieses Objekt kann nicht gedreht werden, weil es mit einem versteckten Objekt verbunden ist."
+ "too_large": "Das Objekt kann nicht gedreht werden, da nicht genug davon sichtbar ist.",
+ "connected_to_hidden": "Dieses Objekt kann nicht gedreht werden, da es mit einem versteckten Objekt verbunden ist."
},
"reverse": {
"title": "Umkehren",
- "description": "Ändere die Richtung dieser Linie.",
+ "description": "Richtung dieser Linie umkehren.",
"key": "V",
"annotation": "Linienrichtung umgekehrt."
},
},
"not_eligible": "Linien können nicht am Anfang oder Ende geteilt werden.",
"multiple_ways": "Es gibt hier zu viele Linien, um diese teilen zu können.",
- "connected_to_hidden": "Dieses Objekt kann nicht geteilt werden, weil es mit einem versteckten Objekt verbunden ist."
+ "connected_to_hidden": "Dieses Objekt kann nicht geteilt werden, da es mit einem versteckten Objekt verbunden ist."
},
"restriction": {
"help": {
- "select": "Klicke um ein Straßensegment auszuwählen.",
- "toggle": "Klicke um das Abbiegeverbot umzudrehen.",
- "toggle_on": "Klicke um ein \"{restriction}\"-Verbot anzulegen.",
- "toggle_off": "Klicke um das \"{restriction}\"-Verbot zu löschen."
+ "select": "Klicke, um ein Straßensegment auszuwählen.",
+ "toggle": "Klicke, um die Abbiegeeinschränkung umzudrehen.",
+ "toggle_on": "Klicke, um eine „{restriction}“-Einschränkung hinzuzufügen.",
+ "toggle_off": "Klicke, um die „{restriction}“-Einschränkung zu löschen."
},
"annotation": {
- "create": "Füge ein Abbiegeverbot ein",
- "delete": "Lösche ein Abbiegeverbot"
+ "create": "Abbiegeeinschränkung hinzugefügt",
+ "delete": "Abbiegeeinschränkung gelöscht"
}
}
},
"nothing": "Nichts zum Wiederherstellen."
},
"tooltip_keyhint": "Tastenkürzel:",
- "browser_notice": "Dieser Editor wird von Firefox, Chrome, Safari, Opera, und Internet Explorer (Version 9 und höher) unterstützt. Bitte aktualisieren Sie Ihren Browser oder nutzen Sie Potlatch 2, um die Karte zu modifizieren.",
+ "browser_notice": "Dieser Editor wird in Firefox, Chrome, Safari, Opera, und Internet Explorer (Version 9 und höher) unterstützt. Bitte aktualisiere Deinen Browser oder verwende Potlatch 2, um die Karte zu bearbeiten.",
"translate": {
"translate": "Übersetzen",
"localized_translation_label": "Mehrsprachiger Name",
},
"zoom_in_edit": "Hineinzoomen, um zu bearbeiten",
"logout": "Abmelden",
- "loading_auth": "Verbinde mit OpenStreetMap …",
+ "loading_auth": "Mit OpenStreetMap verbinden …",
"report_a_bug": "Programmfehler melden",
"feature_info": {
"hidden_warning": "{count} versteckte Objekte",
"status": {
"error": "Verbindungsaufbau zur API nicht möglich.",
"offline": "Die API ist offline. Bitte versuche es später noch einmal.",
- "readonly": "Die API ist im \"Nur-Lese\"-Modus. Änderungen können zur Zeit nicht gespeichert werden."
+ "readonly": "Die API ist im „Nur-Lese“-Modus. Änderungen können zur Zeit nicht gespeichert werden."
},
"commit": {
"title": "Änderungen speichern",
"description_placeholder": "Eine kurze Beschreibung deiner Beiträge",
- "message_label": "Änderungskommentar",
+ "message_label": "Änderungssatzkommentar",
"upload_explanation": "Änderungen, die du hoch lädst, werden auf allen Karten sichtbar, die OpenStreetMap nutzen.",
"upload_explanation_with_user": "Änderungen, die du als {user} hoch lädst, werden auf allen Karten sichtbar, die OpenStreetMap nutzen.",
"save": "Speichern",
"list": "Bearbeitet von {users}",
"truncated_list": "Bearbeitet von {users} und {count} anderen"
},
+ "infobox": {
+ "selected": "{n} ausgewählt",
+ "geometry": "Geometrie",
+ "closed": "geschlossen",
+ "length": "Länge",
+ "area": "Fläche",
+ "location": "Standort",
+ "metric": "Metrisch"
+ },
+ "geometry": {
+ "point": "Punkt",
+ "vertex": "Vertex",
+ "line": "Linie",
+ "area": "Fläche",
+ "relation": "Relation"
+ },
"geocoder": {
- "search": "Suche weltweit …",
+ "search": "Weltweit suchen …",
"no_results_visible": "Keine Ergebnisse im sichtbaren Kartenbereich",
"no_results_worldwide": "Keine Ergebnisse gefunden"
},
"geolocate": {
- "title": "Zeige meinen Standort"
+ "title": "Meinen Standort anzeigen"
},
"inspector": {
"no_documentation_combination": "Für diese Eigenschaftskombination ist keine Dokumentation verfügbar.",
"no_documentation_key": "Für dieses Schlüsselwort ist keine Dokumentation verfügbar.",
- "show_more": "Zeige mehr",
+ "show_more": "Mehr zeigen",
"view_on_osm": "Auf openstreetmap.org ansehen",
"all_tags": "Alle Eigenschaften",
"all_members": "Alle Mitglieder",
"new_relation": "Neue Relation …",
"role": "Rolle",
"choose": "Objekttyp auswählen",
- "results": "{n} Resultate für {search}",
- "reference": "Im OpenStreetMap-Wiki anschauen",
+ "results": "{n} Ergebnisse für {search}",
+ "reference": "Im OpenStreetMap-Wiki ansehen",
"back_tooltip": "Objekt ändern",
"remove": "Entfernen",
"search": "Suchen",
"percent_brightness": "{opacity}% Helligkeit",
"none": "Kein Hintergrund",
"custom": "Benutzerdefiniert",
- "custom_button": "Benutzerdefinierten Hintergrund editieren",
- "custom_prompt": "Gib eine Vorlage für eine Kachel-URL ein. Gültige Platzhalter sind {z}, {x}, {y} für das Z/X/Y Schema und {u} für das \"quadtile\"-Schema.",
+ "custom_button": "Benutzerdefinierten Hintergrund bearbeiten",
+ "custom_prompt": "Gib eine Vorlage für eine Kachel-URL ein. Gültige Platzhalter sind {z}, {x}, {y} für das Z/X/Y Schema und {u} für das „quadtile“-Schema.",
"fix_misalignment": "Ausrichtung korrigieren",
"reset": "Zurücksetzen"
},
"map_data": {
"title": "Kartendaten",
"description": "Kartendaten",
- "data_layers": "Datenlayer",
+ "data_layers": "Datenebenen",
"fill_area": "Füllflächen",
"map_features": "Kartenobjekte",
- "autohidden": "Diese Objekte wurden automatisch versteckt, weil zu viele auf dem Bildschirm sichtbar wären. Um diese zu editieren bitte hineinzoomen."
+ "autohidden": "Diese Objekte wurden automatisch versteckt, da zu viele auf dem Bildschirm angezeigt wären. Bitte hereinzoomen, um diese zu bearbeiten."
},
"feature": {
"points": {
},
"past_future": {
"description": "Vergangen/Zukünftig",
- "tooltip": "Geplant, in Bau, Außer Betrieb, Abgerissen, etc."
+ "tooltip": "Geplant, in Bau, außer Betrieb, abgerissen, etc."
},
"others": {
"description": "Andere",
},
"partial": {
"description": "Teilweise Füllung",
- "tooltip": "Flächen werden nur mit Füllung in den Innenecken gezeichnet (Empfohlen für Anfänger)"
+ "tooltip": "Flächen werden nur mit Füllung in den Innenecken gezeichnet. (Empfohlen für Anfänger)"
},
"full": {
"description": "Vollständige Füllung",
},
"save": {
"title": "Speichern",
- "help": "Speichere Änderungen auf OpenStreetMap, wodurch sie für andere Nutzer sichtbar werden.",
+ "help": "Änderungen auf OpenStreetMap speichern, wodurch sie für andere Nutzer sichtbar werden.",
"no_changes": "Keine zu speichernden Änderungen.",
- "error": "Beim Speichern ist ein Fehler aufgetreten",
- "unknown_error_details": "Bitte überprüfe dass Dein Gerät mit dem Internet verbunden ist.",
- "uploading": "Änderungen werden zu OpenStreetMap hoch geladen.",
- "unsaved_changes": "Ungesicherte Änderungen vorhanden"
+ "error": "Beim Speichern sind Fehler aufgetreten",
+ "status_code": "Server hat folgenden Status zurückgegeben: {code}",
+ "unknown_error_details": "Bitte überprüfe, dass Dein Gerät mit dem Internet verbunden ist.",
+ "uploading": "Änderungen werden zu OpenStreetMap hochgeladen.",
+ "unsaved_changes": "Ungesicherte Änderungen vorhanden",
+ "conflict": {
+ "header": "Bearbeitungskonflikte auflösen",
+ "count": "Konflikt {num} von {total}",
+ "previous": "< Voriger",
+ "next": "Nächster >",
+ "keep_local": "Eigene behalten",
+ "keep_remote": "Andere Version verwenden",
+ "restore": "Wiederherstellen",
+ "delete": "Gelöscht lassen",
+ "download_changes": "Oder die eigenen Änderungen herunterladen.",
+ "done": "Alle Konflikte aufgelöst!",
+ "help": "Ein anderer Nutzer hat einige derselben Kartenelemente wie Du bearbeitet.\nWähle jeden der Einträge unterhalb für weitere Konfliktdetails aus und entscheide\ndann, ob Deine Version oder die des anderen Nutzern behalten werden soll.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Dieses Objekt wurde von {user} gelöscht.",
+ "location": "Dieses Objekt wurde von {user} und Ihnen verschoben.",
+ "nodelist": "Knoten wurden von {user} und Ihnen geändert.",
+ "memberlist": "Relationsmitglieder wurden von {user} und Ihnen geändert.",
+ "tags": "Du hast das Merkmal <b>{tag}</b> in „{local}“ geändert und {user} hat es in „{remote}“ geändert."
+ }
},
"success": {
"edited_osm": "OSM bearbeitet!",
- "just_edited": "Sie haben gerade OpenStreetMap bearbeitet!",
+ "just_edited": "Du hast gerade OpenStreetMap bearbeitet!",
"view_on_osm": "Auf OpenStreetMap ansehen",
"facebook": "Auf Facebook teilen",
"twitter": "Auf Twitter teilen",
"google": "Auf Google+ teilen",
- "help_html": "Die Änderungen sollte in der \"Standard\"-Ebene in wenigen Minuten sichtbar sein. Andere Ebenen und spezielle Features können länger dauern (<a href='https://help.openstreetmap.org/questions/10636/warum-werden-meine-anderungen-nicht-angezeigt' target='_blank'>details</a>).\n"
+ "help_html": "Die Änderungen sollte in der „Standard“-Ebene in wenigen Minuten sichtbar sein. Andere Ebenen und spezielle Features können länger dauern\n(<a href='https://help.openstreetmap.org/questions/10636/warum-werden-meine-anderungen-nicht-angezeigt' target='_blank'>Mehr Informationen</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Abbrechen"
},
"splash": {
- "welcome": "Willkommen bei iD, einem OpenStreetMap-Editor",
- "text": "iD ist ein benutzerfreundliches aber mächtiges Werkzeug, um die weltbeste freie Weltkarte zu bearbeiten. Dies ist die Entwicklungsversion {version}. Für weitere Informationen besuche {website} und melde Fehler unter {github}.",
- "walkthrough": "Starte die Einführung",
+ "welcome": "Willkommen beim OpenStreetMap-Editor iD",
+ "text": "iD ist ein benutzerfreundliches, aber mächtiges Werkzeug, um die weltbeste freie Weltkarte zu bearbeiten. Dies ist Version {version}. Für weitere Informationen besuche {website} und melde Fehler unter {github}.",
+ "walkthrough": "Einführung starten",
"start": "Jetzt bearbeiten"
},
"source_switch": {
"untagged_point": "Punkt ohne Eigenschaften",
"untagged_line": "Linie ohne Eigenschaften",
"untagged_area": "Fläche ohne Eigenschaften",
- "many_deletions": "Du löscht gerade {n} Elemente. Willst Du das wirklich? Damit werden diese Elemente von der Karte gelöscht die alle auf openstreetmap.org sehen können.",
+ "many_deletions": "Du löscht gerade {n} Elemente. Willst Du das wirklich? Damit werden diese Elemente von der Karte gelöscht, die alle auf openstreetmap.org sehen können.",
"tag_suggests_area": "Die Eigenschaft {tag} legt nahe, dass die Linie eine Fläche sein sollte, es ist aber keine Fläche",
- "untagged_point_tooltip": "Wähle den Objekttyp der diesen Punkt beschreibt.",
- "untagged_line_tooltip": "Wähle den Objekttyp der diese Linie beschreibt.",
- "untagged_area_tooltip": "Wähle den Objekttyp der diese Fläche beschreibt.",
+ "untagged_point_tooltip": "Wähle den Objekttyp, der diesen Punkt beschreibt.",
+ "untagged_line_tooltip": "Wähle den Objekttyp, der diese Linie beschreibt.",
+ "untagged_area_tooltip": "Wähle den Objekttyp, der diese Fläche beschreibt.",
"deprecated_tags": "Veraltete Eigenschaften: {tags}"
},
"zoom": {
"cannot_zoom": "Es kann im aktuellen Modus nicht weiter heraus gezoomt werden.",
"gpx": {
"local_layer": "Lokale GPX-Datei",
- "drag_drop": "Ein GPX-Datei mit Drag & Drop auf die Seite ziehen oder den Knopf rechts klicken um eine GPX-Datei zu laden",
+ "drag_drop": "Ziehe eine GPX-Datei per Drag & Drop auf die Seite oder klicke den Knopf rechts, um eine GPX-Datei zu laden",
"zoom": "Zur GPX-Spur zoomen",
"browse": "Eine GPX-Datei laden"
},
},
"help": {
"title": "Hilfe",
- "help": "#Hilfe\n\nDies ist ein Editor für [OpenStreetMap](http://www.openstreetmap.org/), der freien und editierbaren Weltkarte. Du kannst ihn verwenden, um Daten in deiner Umgebung hinzuzufügen oder zu verändern und so diese Karte mit freien Quellen und freien Daten für jeden verbessern.\n\nVeränderungen werden für alle Nutzer von OpenStreetMap sichtbar. Um Veränderungen vornehmen zu können, musst du ein [kostenloses OpenStreetMap-Profil](https://www.openstreetmap.org/user/new) anlegen.\n\nDer [iD-Editor](http://ideditor.com/) ist ein Gemeinschaftsprojekt dessen [Quellcode\nauf GitHub verfügbar ist](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Bearbeiten & Speichern\n\nDieser Editor wurde entworfen, um online zu arbeiten und du erreichst ihn über diese Webseite.\n\n### Objekte auswählen\n\nUm ein Kartenobjekt wie eine Straße oder ein Sonderziel (POI) auszuwählen, klicke auf der Karte darauf. Dadurch wird das Objekt hervorgehoben und ein Bedienfeld mit Details und Möglichkeiten zur Veränderung aufgerufen.\n\nMehrere Objekte kannst du auswählen indem du die Umschalttaste (Shift) drückst und die Objekte einzeln anklickst oder klickst und einen Rahmen darum ziehst. So können mehrere Objekte gleichzeitig geändert werden.\n\n### Speichern der Änderungen\n\nWenn du Änderungen an einer Straße, einem Gebäude oder einem Platz vorgenommen hast, sind diese lokal gespeichert, bis du sie auf dem Server speicherst. Keine Sorge falls du einen Fehler machen solltest: Du kannst Änderungen jederzeit über den Rückgängig-Knopf rückgängig machen oder über den Wiederherstellen-Knopf noch einmal ausführen.\n\nKlicke auf \"Speichern\", um eine Gruppe von Änderungen zu speichern. Zum Beispiel, wenn du in einem Stadtteil fertig bist und in einer neuen Gegend weiter arbeiten willst. Du bekommst dann die Möglichkeit noch einmal zu überprüfen, was du gerade getan hast und der Editor zeigt dir nützliche Hinweise oder mögliche Fehler, wenn etwas nicht in Ordnung zu sein scheint.\n\nWenn alles gut aussieht kannst du einen kurzen Kommentar schreiben, der erklärt, was du gemacht hast. Drücke nun \"Speichern\", um die Änderungen auf dem Server zu speichern. Nun können es alle auf [OpenStreetMap.org](http://www.openstreetmap.org/) sehen und darauf aufbauen.\n\nWenn du es zeitlich nicht schaffst, kannst du das Editor-Fenster einfach schließen. Wenn du die Seite wieder aufrufst (mit dem gleichen Browser und Rechner) wird dir angeboten, die letzte Sitzung wiederherzustellen.\n",
- "roads": "# Straßen\n\nMit dem Editor kannst du Wege erstellen, verändern und löschen. Wege können alles mögliche sein, zum Beispiel Pfade, Straßen, Schienen, Fahrradwege und anderes.\n\n### Auswählen\n\nKlicke auf einen Weg, um ihn auszuwählen. Er sollte nun hervorgehoben werden. Außerdem erscheint ein kleines Werkzeugmenü und eine Seitenleiste mit den Eigenschaften des Weges.\n\n### Modifizieren\n\nOft sieht man, dass Wege nicht mit dem Luftbild oder einer GPS-Spur übereinstimmen. Du kannst den Weg aber so anpassen, dass er an der richtigen Stelle ist. Beachte jedoch, dass Luftbilder einen Versatz aufweisen können.\n\nAls Erstes wählst du einen Weg aus. Dieser wird nun hervorgehoben und es werden die Knoten des Weges angezeigt. Diese kannst du verschieben, bis sie an der richtigen Stelle sind. Wenn du neue Knoten hinzufügen möchtest, klicke doppelt zwischen den Knoten auf die Linie und es wird ein neuer Punkt erzeugt.\n\nWenn zwei Wege in Wirklichkeit mit einander verbunden sind, aber auf der Karte nicht, kannst du sie verbinden, indem du einen Knoten des einen Weges auf den anderen Weg ziehst. Dass Wege verbunden sind, ist wichtig für die Karte und essentiell für die Nutzung von Routenführung.\n\nDu kannst auch das \"Bewegen\"-Werkzeug nutzen oder \"M\" drücken, um den kompletten Weg zu verschieben. Beende die Aktion mit einem Klick.\n\n### Löschen\n\nWenn du weißt, dass ein Weg nicht existiert, kannst du ihn löschen, um ihn von der Karte zu entfernen. Sei beim Löschen von Objekten - wie immer beim Editieren vorsichtig, da die Ergebnisse von jedem gesehen werden können und Luftbilder oft veraltet sind. Das heißt, dass ein Weg, der im Luftbild nicht zu sehen ist, vielleicht einfach neu gebaut wurde.\n\nDu kannst Wege löschen, indem du sie anklickst und das Mülltonnensymbol auswählst oder die \"Entfernen\"-Taste drückst.\n\n### Erstellen\n\nDu kennst einen Weg der nicht eingezeichnet ist? Dann klicke auf das \"Linien\"-Symbol oben links im Editor oder drücke die Taste \"2\" und beginne mit dem Zeichnen einer Linie.\n\nKlicke dort hin, wo die Straße anfängt. Sollte sie von einer bereits existierenden Straße abzweigen, klicke an der entsprechenden Stelle auf diese Straße.\n\nZeichne nun den Weg, indem du Punkte anhand der Luftaufnahme oder der GPS-Spur entlang des Weges setzt. Sollte der Weg einen anderen kreuzen, klicke auf den Kreuzungspunkt, um beide Wege zu verbinden. Wenn du mit dem Zeichnen fertig bist, klicke doppelt oder drücke \"Enter\" auf der Tastatur, um den Weg abzuschließen.\n",
- "gps": "# GPS\n\nGPS-Daten sind die vertrauenswürdigste Quelle für OpenStreetMap.\nDieser Editor unterstützt lokale GPS-Tracks — \".gpx\"-Dateien auf \ndeinem Computer. Du kannst diese GPS-Tracks mit Hilfe diverser\nSmartphone-Apps oder anderen GPS-Geräten aufnehmen.\n\nFür Informationen über das Sammeln von GPS-Daten kannst du dir\nfolgende Anleitung durchlesen: [Surveying with a GPS, zur Zeit nur auf Englisch](http://learnosm.org/en/beginner/using-gps/)\n\nUm einen GPX-Track fürs Mapping zu verwenden, ziehe ihn einfach in den Karteneditor.\nWenn er erkannt wurde, wird der Track als helle lila Linie auf\nder Karte dargestellt. Klicke auf \"Hintergrundeinstellungen\", um die neue Ebene mit dem Track zu aktivieren/deaktivieren oder zoome zum Gebiet des Tracks.\n\nDer GPX-Track wird nicht automatisch direkt zu OpenStreetMap hochgeladen.\nAm besten verwendest du ihn als Grundlage um neue Objekte zu zeichnen. Möchtest du den GPX-Track jedem zugänglich machen, kannst du ihn [nach OpenStreetMap hochladen] (http://www.openstreetmap.org/trace/create).\n",
- "imagery": "# Bildmaterial\n\nLuftbilder sind eine wichtige Quelle für das Kartografieren. Eine Kombination aus Luftbildern von Flugzeugen, Satellitenbilder und freien Quellen sind im Editor über das \"Hintergrundeinstellungen\"-Menü auf der linken Seite verfügbar.\n\nAls Standard ist die [Bing-Maps](http://www.bing.com/maps/)-Satelliten-Ebene ausgewählt. Je nach angezeigter Gegend werden Dir verschiedene andere Quellen angezeigt. In einigen Länder wie den USA, Frankreich, Deutschland und Dänemark stehen zum Teil sehr hochauflösende Luftbilder zur Verfügung.\n\nLuftbilder sind manchmal durch Fehler der Luftbild-Anbieter verschoben. Wenn du feststellst, dass viele Straßen gegenüber dem Hintergrund verschoben sind, dann verschiebe nicht die Straßen sondern das Luftbild, bis sie übereinstimmen. Um das Luftbild zu korrigieren, klicke auf \"Fehlerhafte Ausrichtung korrigieren\" unten in den Hintergrundeinstellungen.\n",
- "addresses": "# Adressen\n\nAdressen sind eine der wichtigsten Informationen einer Karte.\n\nObwohl Adressen oft als Teil einer Straße repräsentiert werden, werden sie in OpenStreetMap als Eigenschaften von Gebäuden oder Objekten neben der Straße eingetragen.\n\nDu kannst Adressinformationen sowohl zu Flächen, die als Gebäudegrundriss gezeichnet sind, als auch zu einzelnen Punkten hinzufügen. 'Die beste Quelle für Adressen ist eigenes Wisse oder eine Erhebung vor Ort. Wie bei allen anderen Objekten ist die Nutzung kommerzieller Quellen wie Google Maps strikt verboten.\n",
- "inspector": "# Den Inspektor benutzen\n\nDer Inspektor ist das Bedienelement, das rechts im Editor erscheint, wenn du ein Objekt auswählst. Mit dem Inspektor kannst du die Details des Objektes bearbeiten.\n\n### Eine Eigenschaft auswählen\n\nNachdem du einen Punkt, eine Linie oder eine Fläche hinzugefügt hast kannst du auswählen, welchen Typ das Objekt hat – ob es eine Autobahn oder eine Wohnstraße; ein Supermarkt oder ein Café ist. Der Inspektor wird Knöpfe für die am häufigsten verwendeten Eigenschaften zeigen. Andere Eigenschaften findest du, indem du im Suchfeld eingibst wonach du suchst.\n\nKlicke auf den 'i'-Knopf in der Ecke rechts unten bei einem Objekt-Typ, um mehr darüber zu erfahren.\n\n### Vorlagen verwenden und Tags editieren\n\nNachdem du ein Objekt mit einer Eigenschaft versehen oder ausgewählt hast, zeigt der Inspektor Felder mit Details zu der Eigenschaft an wie Name und Adresse.\n\nUnter diesen Feldern kannst du Icons anklicken, um weitere Details hinzuzufügen wie zum Beispiel einen [Wikipedia](http://www.wikipedia.org/)-Link, Zugänglichkeit für Rollstühle und anderes.\n\nGanz unten im Inspektor kannst du auf 'Weitere Merkmale' klicken, um das Objekt mit beliebigen anderen Eigenschaften zu versehen. [Taginfo](http://taginfo.openstreetmap.org/) ist eine gute Quelle, um oft genutzte Kombinationen von Eigenschaften zu finden.\n\nÄnderungen die du im Inspektor vornimmst, werden automatisch auf die ausgewählten Objekte angewendet. Durch Klicken auf den 'Rückgängig'-Knopf kannst du sie rückgängig machen.\n\n### Den Inspektor schließen\n\nDu kannst den Inspektor schließen, indem du auf den Schließen-Knopf oben rechts klickst, den 'Escape'-Knopf auf der Tastatur drückst oder in die Karte klickst.\n",
- "buildings": "# Gebäude\n\nOpenStreetMap ist die weltgrößte Datenbank für Gebäude und du kannst helfen sie weiter zu verbessern.\n\n### Auswahl\n\nDu kannst ein Gebäude auswählen, indem du auf dessen Umrisslinie klickst. Der Umriss wird nun hervorgehoben. Außerdem wird ein Werkzeugmenü und eine Seitenleiste eingeblendet, welche Informationen zum Gebäude zeigt.\n\n### Bearbeitung\n\nManchmal sind Gebäude falsch platziert oder haben falsche Eigenschaften.\n\nUm ein Gebäude komplett zu verschieben wähle es aus und klicke auf das „Bewegen“-Werkzeug. Verschiebe nun das Gebäude mit der Maus und klicke einmal, wenn es an der richtigen Stelle ist.\n\nUm den Gebäudeumriss zu korrigieren, klicke und ziehe die Umrissknoten, bis sie an der richtigen Stelle sind.\n\n### Erstellen\n\nEine oft gestellte Frage bezieht sich auf das Erstellen von Gebäuden als Gebäudefläche und/oder als Punkt. Hier gilt, wann immer es möglich ist, sollte das Gebäude als Fläche eingetragen werden. Firmen, Geschäfte und ähnliches werden zusätzlich als Punkte innerhalb des Gebäudeumrisses angelegt.\n\nUm ein Gebäude als Fläche zu zeichnen, klicke auf den „Fläche“-Knopf oben links und vollende das Gebäude, indem du entweder die \"Enter\"-Taste drückst, oder auf den ersten Knoten klickst.\n\n### Löschen\n\nWenn du siehst und weißt, dass ein Gebäude nicht existiert – zum Beispiel, weil du vor Ort warst – kannst du es löschen und es wird von der Karte entfernt. Sei vorsichtig beim Löschen von Objekten, das Ergebnis kann, wie bei jeder anderen Veränderung, von allen gesehen werden. Außerdem sind Satellitenbilder oft veraltet und ein Gebäude könnte einfach neu gebaut sein.\n\nDu kannst ein Gebäude löschen, indem du es auswählst und auf das Papierkorbsymbol klickst oder die „Entfernen“-Taste betätigst.\n",
- "relations": "# Relationen\n\nEine Relation ist ein besonderes Element in OpenStreetMap, welches andere Elemente zusammenfasst. Es gibt zwei gängige Arten von Relationen: *Routen* fassen Abschnitte eines Weges zu einer Autobahn (oder zu einem anderen Weg) zusammen. *Multipolygone* fassen mehrere Flächen zu einer komplexen Fläche zusammen, dabei kann auch eine Fläche ein Loch in einer anderen Fläche (wie der Innenhof in einem Gebäude oder die Lichtung im Wald) beschreiben.\n\nDie Elemente in einer Relation werden *Mitglieder* genannt. In der Seitenleiste kannst Du sehen, in welchen Relationen ein Element enthalten ist. Durch Klick auf eine Relation werden alle Elemente der Relation in der Seitenleisten aufgezeigt und auf der Karte markiert.\n\nNormalerweise kümmert sich iD während der Bearbeitung automatisch um die Pflege der Relationen. Wenn Du einen Abschnitt eines Weges löscht um ihn genauer neu zu zeichnen, solltest Du sicherstellen, dass der neuen Abschnitt Mitglied in den gleichen Relationen wie das Original wird.\n\n## Bearbeiten von Relationen\n\nUm ein Element einer Relation hinzuzufügen, wähle das zukünftige Mitglied aus und klicke in der Seitenleiste auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\". Du kannst dann die Relation auswählen oder den Namen der Relation eintippen.\n\nUm eine neue Relation erstellen, wähle das erste zukünftige Mitglied aus und klicke in der Seitenleiste auf die Schaltfläche \"+\" im Abschnitt \"Alle Relationen\" und wähle \"Neue Relation …\".\n\nUm ein Element aus einer Relation zu entfernen, wähle das Mitglied aus und klicke auf den Papierkorb neben der Relation aus der Du es entfernen willst.\n\nDu kannst Multipolygone mit Löchern mit dem \"Vereinigen\"-Werkzeug erstellen. Zeichne zwei Bereiche (den äußeren und den inneren Bereich) und klicke auf den äußeren Bereich. Dann halte die Umschalttaste gedrückt und klicke auf den inneren Bereich und klicke dann auf \"Vereinigen\" (+).\n"
+ "help": "#Hilfe\n\nDies ist ein Editor für [OpenStreetMap](http://www.openstreetmap.org/), der freien und editierbaren Weltkarte. Du kannst ihn verwenden, um Daten in deiner Umgebung hinzuzufügen oder zu verändern und so diese Karte mit freien Quellen und freien Daten für jeden verbessern.\n\nDeine Veränderungen werden für alle Nutzer von OpenStreetMap sichtbar. Um Veränderungen vornehmen zu können, musst du [einloggen](https://www.openstreetmap.org/login).\n\nDer [iD Editor](http://ideditor.com/) ist ein Gemeinschaftsprojekt dessen [Quellcode auf GitHub](https://github.com/openstreetmap/iD) verfügbar ist.\n",
+ "editing_saving": "# Bearbeiten & Speichern\n\nDieser Editor wurde entworfen, um online zu arbeiten und du erreichst ihn aktuell auf dieser Webseite.\n\n### Objekte auswählen\n\nUm ein Kartenobjekt wie eine Straße oder ein Sonderziel (POI) auszuwählen, klicke auf der Karte darauf. Dadurch wird das Objekt hervorgehoben und ein Bedienfeld mit Details und Möglichkeiten zur Veränderung angezeigt.\n\nMehrere Objekte kannst du auswählen, indem du die Umschalttaste (Shift) drückst und die Objekte einzeln anklickst oder klickst und einen Rahmen darum ziehst. So können mehrere Objekte gleichzeitig bearbeitet werden.\n\n### Speichern der Änderungen\n\nWenn du Änderungen an einer Straße, einem Gebäude oder einem Platz vorgenommen hast, sind diese lokal gespeichert, bis du sie auf dem Server speicherst. Keine Sorge, falls du einen Fehler machen solltest: Du kannst Änderungen jederzeit über den Rückgängig-Knopf rückgängig machen oder über den Wiederherstellen-Knopf noch einmal ausführen.\n\nKlicke auf „Speichern“, um eine Gruppe von Änderungen zu speichern. Zum Beispiel, wenn du in einem Stadtteil fertig bist und in einer neuen Gegend weiter arbeiten willst. Du bekommst dann die Möglichkeit, noch einmal zu überprüfen, was du gerade getan hast und der Editor zeigt dir nützliche Hinweise oder mögliche Fehler, wenn etwas nicht in Ordnung zu sein scheint.\n\nWenn alles gut aussieht, kannst du einen kurzen Kommentar schreiben, der erklärt, was du gemacht hast. Drücke nun „Speichern“, um die Änderungen auf dem Server zu speichern. Nun können es alle auf [OpenStreetMap.org](http://www.openstreetmap.org/) sehen und darauf aufbauen.\n\nWenn du es zeitlich nicht schaffst, kannst du das Editor-Fenster einfach schließen. Wenn du die Seite wieder aufrufst (mit dem gleichen Rechner und Browser) wird dir angeboten, die letzte Sitzung wiederherzustellen.\n",
+ "roads": "# Straßen\n\nMit dem Editor kannst du Wege erstellen, verändern und löschen. Wege können alles mögliche sein, zum Beispiel Pfade, Straßen, Schienen, Fahrradwege und anderes.\n\n### Auswählen\n\nKlicke auf einen Weg, um ihn auszuwählen. Er sollte nun hervorgehoben werden. Außerdem erscheint ein kleines Werkzeugmenü und eine Seitenleiste mit den Eigenschaften des Weges.\n\n### Modifizieren\n\nOft sieht man, dass Wege nicht mit dem Luftbild oder einer GPS-Spur übereinstimmen. Du kannst den Weg aber so anpassen, dass er an der richtigen Stelle ist. Beachte jedoch, dass Luftbilder einen Versatz aufweisen können.\n\nAls Erstes wählst du einen Weg aus. Dieser wird nun hervorgehoben und es werden die Knoten des Weges angezeigt. Diese kannst du verschieben, bis sie an der richtigen Stelle sind. Wenn du neue Knoten hinzufügen möchtest, klicke doppelt zwischen den Knoten auf die Linie und es wird ein neuer Punkt erzeugt.\n\nWenn zwei Wege in Wirklichkeit mit einander verbunden sind, aber auf der Karte nicht, kannst du sie verbinden, indem du einen Knoten des einen Weges auf den anderen Weg ziehst. Dass Wege verbunden sind, ist wichtig für die Karte und essentiell für die Nutzung von Routenführung.\n\nDu kannst auch das „Bewegen“-Werkzeug nutzen oder „M“ drücken, um den kompletten Weg zu verschieben. Beende die Aktion mit einem Klick.\n\n### Löschen\n\nWenn du weißt, dass ein Weg nicht existiert, kannst du ihn löschen, um ihn von der Karte zu entfernen. Sei beim Löschen von Objekten - wie immer beim Bearbeiten vorsichtig, da die Ergebnisse von jedem gesehen werden können und Luftbilder oft veraltet sind. Das heißt, dass ein Weg, der im Luftbild nicht zu sehen ist, vielleicht einfach neu gebaut wurde.\n\nDu kannst Wege löschen, indem du sie anklickst und das Mülltonnensymbol auswählst oder die „Entfernen“-Taste drückst.\n\n### Erstellen\n\nDu kennst einen Weg der nicht eingezeichnet ist? Dann klicke auf das „Linien“-Symbol oben links im Editor oder drücke die Taste „2“ und beginne mit dem Zeichnen einer Linie.\n\nKlicke dort hin, wo die Straße anfängt. Sollte sie von einer bereits existierenden Straße abzweigen, klicke an der entsprechenden Stelle auf diese Straße.\n\nZeichne nun den Weg, indem du Punkte anhand der Luftaufnahme oder der GPS-Spur entlang des Weges setzt. Sollte der Weg einen anderen kreuzen, klicke auf den Kreuzungspunkt, um beide Wege zu verbinden. Wenn du mit dem Zeichnen fertig bist, klicke doppelt oder drücke „Enter“ auf der Tastatur, um den Weg abzuschließen.\n",
+ "gps": "# GPS\n\nGPS-Daten sind die vertrauenswürdigste Quelle für OpenStreetMap.\nDieser Editor unterstützt lokale GPS-Tracks — „.gpx“-Dateien auf \ndeinem Computer. Du kannst diese GPS-Tracks mit Hilfe diverser\nSmartphone-Apps oder anderen GPS-Geräten aufnehmen.\n\nFür Informationen über das Sammeln von GPS-Daten kannst du dir\nfolgende Anleitung durchlesen: [Surveying with a GPS, zur Zeit nur auf Englisch](http://learnosm.org/en/beginner/using-gps/)\n\nUm einen GPX-Track fürs Mapping zu verwenden, ziehe ihn einfach in den Karteneditor.\nWenn er erkannt wurde, wird der Track als helle lila Linie auf\nder Karte dargestellt. Klicke auf „Hintergrundeinstellungen“, um die neue Ebene mit dem Track zu aktivieren/deaktivieren oder zoome zum Gebiet des Tracks.\n\nDer GPX-Track wird nicht automatisch direkt zu OpenStreetMap hochgeladen.\nAm besten verwendest du ihn als Grundlage um neue Objekte zu zeichnen. Möchtest du den GPX-Track jedem zugänglich machen, kannst du ihn [nach OpenStreetMap hochladen] (http://www.openstreetmap.org/trace/create).\n",
+ "imagery": "# Bildmaterial\n\nLuftbilder sind eine wichtige Quelle für das Kartografieren. Eine Kombination aus Luftbildern von Flugzeugen, Satellitenbilder und freien Quellen sind im Editor über das „Hintergrundeinstellungen“-Menü auf der linken Seite verfügbar.\n\nAls Standard ist die [Bing-Maps](http://www.bing.com/maps/)-Satelliten-Ebene ausgewählt. Je nach angezeigter Gegend werden Dir verschiedene andere Quellen angezeigt. In einigen Länder wie den USA, Frankreich, Deutschland und Dänemark stehen zum Teil sehr hochauflösende Luftbilder zur Verfügung.\n\nLuftbilder sind manchmal durch Fehler der Luftbild-Anbieter verschoben. Wenn du feststellst, dass viele Straßen gegenüber dem Hintergrund verschoben sind, dann verschiebe nicht die Straßen sondern das Luftbild, bis sie übereinstimmen. Um das Luftbild zu korrigieren, klicke auf „Fehlerhafte Ausrichtung korrigieren“ unten in den Hintergrundeinstellungen.\n",
+ "addresses": "# Adressen\n\nAdressen sind eine der wichtigsten Informationen einer Karte.\n\nObwohl Adressen oft als Teil einer Straße repräsentiert werden, werden sie in OpenStreetMap als Eigenschaften von Gebäuden oder Objekten neben der Straße eingetragen.\n\nDu kannst Adressinformationen sowohl zu Flächen, die als Gebäudegrundriss gezeichnet sind, als auch zu einzelnen Punkten hinzufügen. Die beste Quelle für Adressen ist eigenes Wissen oder eine Erhebung vor Ort. Wie bei allen anderen Objekten ist die Nutzung kommerzieller Quellen wie Google Maps strikt verboten.\n",
+ "inspector": "# Den Inspektor verwenden\n\nDer Inspektor ist das Bedienelement, das rechts im Editor erscheint, wenn du ein Objekt auswählst. Mit dem Inspektor kannst du die Details des Objektes bearbeiten.\n\n### Eine Eigenschaft auswählen\n\nNachdem du einen Punkt, eine Linie oder eine Fläche hinzugefügt hast kannst du auswählen, welchen Typ das Objekt hat – ob es eine Autobahn oder eine Wohnstraße, ein Supermarkt oder ein Café ist. Der Inspektor zeigt Knöpfe für die am häufigsten verwendeten Eigenschaften an. Andere Eigenschaften findest du, indem du im Suchfeld eingibst, wonach du suchst.\n\nKlicke auf den Knopf „i“ in der unteren rechten Ecke bei einem Objekt-Typ, um mehr darüber zu erfahren.\n\n### Vorlagen verwenden und Tags editieren\n\nNachdem du ein Objekt mit einer Eigenschaft versehen oder ausgewählt hast, zeigt der Inspektor Felder mit Details zu der Eigenschaft an wie Name und Adresse.\n\nUnter diesen Feldern kannst du Symbole anklicken, um weitere Details hinzuzufügen wie zum Beispiel einen [Wikipedia](http://www.wikipedia.org/)-Link, Zugänglichkeit für Rollstühle und anderes.\n\nGanz unten im Inspektor kannst du auf „Weitere Merkmale“ klicken, um das Objekt mit beliebigen anderen Eigenschaften zu versehen. [Taginfo](http://taginfo.openstreetmap.org/) ist eine gute Quelle, um oft genutzte Kombinationen von Eigenschaften zu finden.\n\nÄnderungen die du im Inspektor vornimmst, werden automatisch auf die ausgewählten Objekte angewendet. Durch Klicken auf den Knopf „Rückgängig“ kannst du sie rückgängig machen.\n\n### Den Inspektor schließen\n\nDu kannst den Inspektor schließen, indem du auf den Schließen-Knopf oben rechts klickst, die Taste „Escape“ auf deiner Tastatur drückst oder in die Karte klickst.\n",
+ "buildings": "# Gebäude\n\nOpenStreetMap ist die weltgrößte Datenbank für Gebäude und du kannst helfen, sie weiter zu verbessern.\n\n### Auswahl\n\nDu kannst ein Gebäude auswählen, indem du auf dessen Umrisslinie klickst. Der Umriss wird nun hervorgehoben. Außerdem wird ein Werkzeugmenü und eine Seitenleiste eingeblendet, die Informationen zum Gebäude zeigt.\n\n### Bearbeitung\n\nManchmal sind Gebäude falsch platziert oder haben falsche Eigenschaften.\n\nUm ein Gebäude komplett zu verschieben wähle es aus und klicke auf das „Bewegen“-Werkzeug. Verschiebe nun das Gebäude mit der Maus und klicke einmal, wenn es an der richtigen Stelle ist.\n\nUm den Gebäudeumriss zu korrigieren, klicke und ziehe die Umrissknoten, bis sie an der richtigen Stelle sind.\n\n### Erstellen\n\nEine oft gestellte Frage bezieht sich auf das Erstellen von Gebäuden als Gebäudefläche und/oder als Punkt. Hier gilt, wann immer es möglich ist, sollte das Gebäude als Fläche eingetragen werden. Firmen, Geschäfte und ähnliches werden zusätzlich als Punkte innerhalb des Gebäudeumrisses angelegt.\n\nUm ein Gebäude als Fläche zu zeichnen, klicke auf den Knopf „Fläche“ oben links und vollende das Gebäude, indem du entweder die „Enter“-Taste drückst, oder auf den ersten Knoten klickst.\n\n### Löschen\n\nWenn du siehst und weißt, dass ein Gebäude nicht existiert – zum Beispiel, weil du vor Ort warst – kannst du es löschen und es wird von der Karte entfernt. Sei vorsichtig beim Löschen von Objekten, das Ergebnis kann, wie bei jeder anderen Veränderung, von allen gesehen werden. Außerdem sind Satellitenbilder oft veraltet und ein Gebäude könnte einfach neu gebaut sein.\n\nDu kannst ein Gebäude löschen, indem du es auswählst und auf das Papierkorbsymbol klickst oder die „Entfernen“-Taste betätigst.\n",
+ "relations": "# Relationen\n\nEine Relation ist ein besonderes Element in OpenStreetMap, welches andere Elemente zusammenfasst. Es gibt zwei gängige Arten von Relationen: *Routen* fassen Abschnitte eines Weges zu einer Autobahn (oder zu einem anderen Weg) zusammen. *Multipolygone* fassen mehrere Flächen zu einer komplexen Fläche zusammen, dabei kann auch eine Fläche ein Loch in einer anderen Fläche (wie der Innenhof in einem Gebäude oder die Lichtung im Wald) beschreiben.\n\nDie Elemente in einer Relation werden *Mitglieder* genannt. In der Seitenleiste kannst Du sehen, in welchen Relationen ein Element enthalten ist. Durch Klick auf eine Relation werden alle Elemente der Relation in der Seitenleisten aufgezeigt und auf der Karte markiert.\n\nNormalerweise kümmert sich iD während der Bearbeitung automatisch um die Pflege der Relationen. Wenn Du einen Abschnitt eines Weges löschst, um ihn genauer neu zu zeichnen, solltest Du sicherstellen, dass der neuen Abschnitt Mitglied in den gleichen Relationen wie das Original wird.\n\n## Bearbeiten von Relationen\n\nUm ein Element einer Relation hinzuzufügen, wähle das zukünftige Mitglied aus und klicke in der Seitenleiste auf die Schaltfläche „+“ im Abschnitt „Alle Relationen“. Du kannst dann die Relation auswählen oder den Namen der Relation eintippen.\n\nUm eine neue Relation erstellen, wähle das erste zukünftige Mitglied aus und klicke in der Seitenleiste auf die Schaltfläche „+“ im Abschnitt „Alle Relationen“ und wähle „Neue Relation …“.\n\nUm ein Element aus einer Relation zu entfernen, wähle das Mitglied aus und klicke auf den Papierkorb neben der Relation, aus der Du es entfernen willst.\n\nDu kannst Multipolygone mit Löchern mit dem „Vereinigen“-Werkzeug erstellen. Zeichne zwei Bereiche (den äußeren und den inneren Bereich) und klicke auf den äußeren Bereich. Dann halte die Umschalttaste gedrückt und klicke auf den inneren Bereich und klicke dann auf „Vereinigen“ (+).\n"
},
"intro": {
"navigation": {
"add": "Punkte können verwendet werden, um Objekte wie Läden, Restaurants oder Denkmäler darzustellen. Sie markieren einen bestimmten Standort und beschreiben, was sich dort befindet. **Klicke den Punkt-Knopf an, um einen neuen Punkt hinzuzufügen.**",
"place": "Punkte können durch Klicken auf die Karte platziert werden. **Platziere einen Punkt auf dem Gebäude.**",
"search": "Es gibt viele verschiedene Objekte, die ein Punkt repräsentieren kann. Der Punkt, den du gerade hinzugefügt hast, ist ein Café. **Suche nach '{name}'.**",
- "choose": "**Wähle \"Café\" aus der Liste aus.**",
- "describe": "Der Knoten wurde nun als Café markiert. Mit dem Objekteditor können wir mehr Informationen über das Objekt angeben. **Füge einen Namen hinzu.**",
+ "choose": "**Wähle „Café“ aus der Liste aus.**",
+ "describe": "Der Knoten wurde nun als Café markiert. Mit dem Objekteditor können weitere Informationen über das Objekt erfasst werden. **Füge einen Namen hinzu.**",
"close": "Der Objekteditor kann mithilfe des Schließen-Knopfes beendet werden. **Schließe den Objekteditor.**",
"reselect": "Oftmals existieren Knoten bereits, haben aber falsche oder unvollständige Eigenschaften. Wir können vorhandene Knoten bearbeiten. **Wähle den Punkt aus, den du gerade erstellt hast.**",
"fixname": "**Ändere den Namen und schließe den Objekteditor.**",
},
"areas": {
"title": "Flächen",
- "add": "Flächen werden benutzt um Grenzen von Objekten wie Seen, Gebäuden oder Wohngebieten zu erfassen. Sie können auch benutzt werden um viele Objekte die normalerweise als Punkte erfasst werden detaillierter zu erfassen. **Klicke auf den Knopf Fläche um eine neue Fläche hinzuzufügen.**",
+ "add": "Flächen werden verwendet, um Grenzen von Objekten wie Seen, Gebäuden oder Wohngebieten zu erfassen. Sie können auch benutzt werden, um viele Objekte, die normalerweise als Punkte erfasst werden, detaillierter zu erfassen. **Klicke auf den Knopf „Fläche“, um eine neue Fläche hinzuzufügen.**",
"corner": "Flächen werden gezeichnet, indem man Punkte platziert, die den Umriss der Fläche repräsentieren. **Setze den Startpunkt auf eine Ecke des Spielplatzes.**",
- "place": "Zeichne eine Fläche, indem du mehr Punkte hinzufügst. Beende die Fläche, indem du auf den Startpunkt klickst. **Zeichne eine Fläche für den Spielplatz.**",
+ "place": "Zeichne eine Fläche, indem du weitere Punkte hinzufügst. Beende die Fläche, indem du auf den Startpunkt klickst. **Zeichne eine Fläche für den Spielplatz.**",
"search": "**Suche nach '{name}'.**",
"choose": "**Wähle Spielplatz aus der Liste aus.**",
"describe": "**Füge einen Namen hinzu und schließe den Objekteditor.**"
},
"lines": {
"title": "Linien",
- "add": "Linien werden verwendet um Objekte wie Straßen, Bahngleise und Flüsse zu erzeugen. **Klicke auf den Linien-Knopf um eine neue Linie zu zeichnen.**",
+ "add": "Linien werden verwendet, um Objekte wie Straßen, Bahngleise und Flüsse zu erzeugen. **Klicke auf den Linien-Knopf, um eine neue Linie zu zeichnen.**",
"start": "**Beginne die Linie, indem du auf das Ende der Straße klickst.**",
- "intersect": "Klicke, um mehr Punkte zu einer Linie hinzuzufügen. Du kannst während des Zeichnens die Karte verschieben. Straßen und andere Wege sind Teil eines großen Netzwerkes und müssen ordnungsgemäß miteinander verbunden sein, um sie für Routenführung nutzen zu können. **Klicke auf die \"Flower Street\", um eine Kreuzung zu erzeugen und beide Linien zu verbinden.**",
+ "intersect": "Klicke, um mehr Punkte zu einer Linie hinzuzufügen. Du kannst während des Zeichnens die Karte verschieben. Straßen und andere Wege sind Teil eines großen Netzwerkes und müssen ordnungsgemäß miteinander verbunden sein, um sie für Routenführung nutzen zu können. **Klicke auf die „Flower Street“, um eine Kreuzung zu erzeugen und beide Linien zu verbinden.**",
"finish": "Linien können vollendet werden, indem man den letzten Punkt erneut anklickt **Beende das Zeichnen der Straße.**",
"road": "**Wähle Straße aus der Liste aus.**",
"residential": "Es gibt verschiedene Straßenarten, die häufigste ist die Wohngebietsstraße. **Wähle die Wohngebietsstraße.**",
"describe": "**Benenne die Straße und schließe den Objekteditor.**",
- "restart": "Die Straße muss die Flower Street schneiden.",
+ "restart": "Die Straße muss die „Flower Street“ schneiden.",
"wrong_preset": "Du hast nicht die Wohngebietsstraße ausgewählt. **Klicke hier, um es erneut zu versuchen.**"
},
"startediting": {
"fields": {
"access": {
"label": "Zugangsberechtigung",
- "placeholder": "Unbekannt",
- "types": {
- "access": "Allgemein",
- "foot": "zu Fuß",
- "motor_vehicle": "Motorfahrzeuge",
- "bicycle": "Fahrräder",
- "horse": "Pferde"
- },
"options": {
- "yes": {
- "title": "Erlaubt",
- "description": "Zugang gesetzlich erlaubt; Wegerecht"
+ "designated": {
+ "description": "Zugang durch Schilder oder bestimmte lokale Gesetze erlaubt",
+ "title": "vorgesehen"
+ },
+ "destination": {
+ "description": "Zugang nur erlaubt, um ein Ziel zu erreichen",
+ "title": "Ziel"
},
"no": {
- "title": "Verboten",
- "description": "Zugang der Allgemeinheit nicht erlaubt"
+ "description": "Zugang der Allgemeinheit nicht erlaubt",
+ "title": "Verboten"
},
"permissive": {
- "title": "geduldet",
- "description": "Zugang solange gewährt, bis der Besitzer seine Erlaubnis zurück nimmt."
+ "description": "Zugang solange gewährt, bis der Besitzer seine Erlaubnis zurück nimmt.",
+ "title": "geduldet"
},
"private": {
- "title": "Privat",
- "description": "Zugang nur mit individueller Erlaubnis des Eigentümers"
- },
- "designated": {
- "title": "vorgesehen",
- "description": "Zugang durch Schilder oder bestimmte lokale Gesetze erlaubt"
+ "description": "Zugang nur mit individueller Erlaubnis des Eigentümers",
+ "title": "Privat"
},
- "destination": {
- "title": "Ziel",
- "description": "Zugang nur erlaubt, um ein Ziel zu erreichen"
+ "yes": {
+ "description": "Zugang gesetzlich erlaubt; Wegerecht",
+ "title": "Erlaubt"
}
+ },
+ "placeholder": "Unbekannt",
+ "types": {
+ "access": "Allgemein",
+ "bicycle": "Fahrräder",
+ "foot": "zu Fuß",
+ "horse": "Pferde",
+ "motor_vehicle": "Motorfahrzeuge"
}
},
"access_simple": {
"address": {
"label": "Adresse",
"placeholders": {
+ "city": "Stadt",
+ "country": "Staat",
+ "district": "Kreis/Bezirk",
+ "hamlet": "Weiler",
"housename": "Hausname",
"housenumber": "123",
- "street": "Straße",
- "city": "Stadt",
- "postcode": "Postleitzahl",
"place": "Ort",
- "hamlet": "Weiler",
- "suburb": "Stadtteil",
- "subdistrict": "Stadtbezirk",
- "district": "Kreis/Bezirk",
+ "postcode": "Postleitzahl",
"province": "Regierungsbezirk",
"state": "Bundesland",
- "country": "Staat"
+ "street": "Straße",
+ "subdistrict": "Stadtbezirk",
+ "suburb": "Stadtteil"
}
},
"admin_level": {
"aerialway/access": {
"label": "Zugang",
"options": {
+ "both": "Beide",
"entry": "Eingang",
- "exit": "Ausgang",
- "both": "Beide"
+ "exit": "Ausgang"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Zugang (Sommer)",
"options": {
+ "both": "Beide",
"entry": "Eingang",
- "exit": "Ausgang",
- "both": "Beide"
+ "exit": "Ausgang"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Richtung",
"options": {
- "N": "Nord",
"E": "Ost",
- "S": "Süd",
- "W": "West",
- "NE": "Nordost",
- "SE": "Südost",
- "SW": "Südwest",
- "NW": "Nordwest",
- "NNE": "Nord-Nordost",
"ENE": "Ost-Nordost",
"ESE": "Ost-Südost",
+ "N": "Nord",
+ "NE": "Nordost",
+ "NNE": "Nord-Nordost",
+ "NNW": "Nord-Nordwest",
+ "NW": "Nordwest",
+ "S": "Süd",
+ "SE": "Südost",
"SSE": "Süd-Südost",
"SSW": "Süd-Südwest",
- "WSW": "West-Südwest",
+ "SW": "Südwest",
+ "W": "West",
"WNW": "West-Nordwest",
- "NNW": "Nord-Nordwest"
+ "WSW": "West-Südwest"
}
},
"clock_direction": {
"label": "Richtung",
"options": {
- "clockwise": "im Uhrzeigersinn",
- "anticlockwise": "gegen den Uhrzeigersinn"
+ "anticlockwise": "gegen den Uhrzeigersinn",
+ "clockwise": "im Uhrzeigersinn"
}
},
"collection_times": {
"description": {
"label": "Beschreibung"
},
+ "drive_through": {
+ "label": "Durchfahrtslokal"
+ },
"electrified": {
"label": "Elektrifizierung",
- "placeholder": "Fahrleitung, elektrifizierte Eisenbahn ...",
"options": {
"contact_line": "Fahrleitung",
+ "no": "Nein",
"rail": "Elektrifizierte Eisenbahn",
- "yes": "Ja (unspezifiziert)",
- "no": "Nein"
- }
+ "yes": "Ja (unspezifiziert)"
+ },
+ "placeholder": "Fahrleitung, elektrifizierte Eisenbahn ..."
},
"elevation": {
"label": "Höhe über dem Meeresspiegel"
"label": "Typ",
"options": {
"pillar": "Ständer/Oberirdisch",
+ "pond": "Teich",
"underground": "Unterirdisch",
- "wall": "Mauer",
- "pond": "Teich"
+ "wall": "Mauer"
}
},
"fixme": {
},
"gender": {
"label": "Geschlecht",
- "placeholder": "Unbekannt",
"options": {
- "male": "Männlich",
"female": "Weiblich",
+ "male": "Männlich",
"unisex": "Geschlechtsneutral"
- }
+ },
+ "placeholder": "Unbekannt"
},
"generator/method": {
"label": "Methode"
"incline": {
"label": "Steigung"
},
+ "incline_steps": {
+ "label": "Steigung",
+ "options": {
+ "down": "Hinunter",
+ "up": "Hinauf"
+ }
+ },
"information": {
"label": "Typ"
},
"internet_access": {
"label": "Internetzugang",
"options": {
- "yes": "Ja",
"no": "Nein",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "kabelgebunden",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Ja"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Blätterzyklus",
"options": {
- "evergreen": "Immergrün",
"deciduous": "Sommergrün",
- "semi_evergreen": "Halbimmergrün",
+ "evergreen": "Immergrün",
+ "mixed": "Gemischt",
"semi_deciduous": "Halbimmergrün",
- "mixed": "Gemischt"
+ "semi_evergreen": "Halbimmergrün"
}
},
"leaf_type": {
"label": "Blatttyp",
"options": {
"broadleaved": "Breitblättrig",
- "needleleaved": "Nadelblätter",
+ "leafless": "Blattlos",
"mixed": "Gemischt",
- "leafless": "Blattlos"
+ "needleleaved": "Nadelblätter"
}
},
"leisure": {
},
"mtb/scale": {
"label": "MTB Schwierigkeitsgrad",
- "placeholder": "0, 1, 2, 3 ...",
"options": {
"0": "0: Solider Kies/komprimierte Erde, keine Hindernisse, weite Kurven",
"1": "1: Teilweise lockerer Untergrund, kleine Hindernisse, weite Kurve",
"4": "4: Lockere Oberfläche oder Felsbrocken, gefährliche Haarnadelkurven",
"5": "5: Maximale Schwierigkeit, Geröllfelder, Erdrutsche",
"6": "6: Nicht befahrbar ausgenommen durch die allerbesten Mountain Biker"
- }
+ },
+ "placeholder": "0, 1, 2, 3 ..."
},
"mtb/scale/imba": {
"label": "IMBA Schwierigkeitsgrad",
- "placeholder": "Einfach, Mittel, Schwierig ...",
"options": {
"0": "Am Einfachsten (weißer Kreis)",
"1": "einfach (grüner Kreis)",
"2": "Mittel (blaues Quadrat)",
"3": "Schwierig (schwarze Raute)",
"4": "Sehr schwierig (doppelte schwarze Raute)"
- }
+ },
+ "placeholder": "Einfach, Mittel, Schwierig ..."
},
"mtb/scale/uphill": {
"label": "Mountain Bike Bergauf-Hinderniss",
- "placeholder": "0, 1, 2, 3 ...",
"options": {
"0": "0: Durschnittliche Steigung <10%, Kies/verdichtete Erde, keine Hindernisse",
"1": "1: Durchschnittliche Steigung <15%, Kies/verdichtete Erde, wenige kleine Hindernisse",
"3": "3: Durchschnittliche Steigung <25%, unterschiedliche Oberfläche, faustgroße Steine/Wurzeln",
"4": "4: Durchschnittliche Steigung <30%, schlechter Zustand, große Steine/Zweige",
"5": "5: sehr steig, Fahrrad muss generell geschoben oder getragen werden"
- }
+ },
+ "placeholder": "0, 1, 2, 3 ..."
},
"name": {
"label": "Name",
- "placeholder": "allgemeine Bezeichnung (falls vorhanden)"
+ "placeholder": "Allgemeine Bezeichnung (falls vorhanden)"
},
"natural": {
"label": "Natur"
"oneway": {
"label": "Einbahnstraße",
"options": {
+ "no": "Nein",
"undefined": "Vermutlich Nein",
- "yes": "Ja",
- "no": "Nein"
+ "yes": "Ja"
}
},
"oneway_yes": {
"label": "Einbahnstraße",
"options": {
+ "no": "Nein",
"undefined": "Vermutlich Ja",
- "yes": "Ja",
- "no": "Nein"
+ "yes": "Ja"
}
},
"opening_hours": {
"parking": {
"label": "Typ",
"options": {
- "surface": "Oberfläche",
- "multi-storey": "Mehrstufig",
- "underground": "Untergrund",
- "sheds": "Schuppen",
- "carports": "Carports",
+ "carports": "Carport",
"garage_boxes": "Garagen",
- "lane": "Straßenrand"
+ "lane": "Straßenrand",
+ "multi-storey": "Parkhaus",
+ "sheds": "Schuppen",
+ "surface": "Ebenerdig",
+ "underground": "Tiefgarage"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Schwierigkeit",
- "placeholder": "Einfach, Mittel, Fortgeschritten ...",
"options": {
- "novice": "Anfänger (Unterricht)",
- "easy": "Einfach (grüner Kreis)",
- "intermediate": "Mittel (blaues Quadrat)",
"advanced": "fortgeschritten (schwarze Raute)",
+ "easy": "Einfach (grüner Kreis)",
"expert": "Experte (doppelte schwarze Raute)",
+ "extreme": "Extrem (Kletterausrüstung benötigt)",
"freeride": "Variantenabfahrt (abseits der Piste)",
- "extreme": "Extrem (Kletterausrüstung benötigt)"
- }
+ "intermediate": "Mittel (blaues Quadrat)",
+ "novice": "Anfänger (Unterricht)"
+ },
+ "placeholder": "Einfach, Mittel, Fortgeschritten ..."
},
"piste/grooming": {
"label": "Grooming",
"options": {
- "classic": "Klassisch",
- "mogul": "Buckelpiste",
"backcountry": "Hinterland-Skitouren",
+ "classic": "Klassisch",
"classic+skating": "Klassisch oder Skating",
+ "mogul": "Buckelpiste",
"scooter": "Roller/Schneemobil",
"skating": "Skating"
}
"label": "Typ",
"options": {
"downhill": "Abfahrt",
+ "hike": "Wandern",
+ "ice_skate": "Eislaufen",
"nordic": "Nordisch",
+ "playground": "Spielplatz",
"skitour": "Skitour",
"sled": "Rodeln",
- "hike": "Wandern",
"sleigh": "Schlitten fahren",
- "ice_skate": "Eislaufen",
- "snow_park": "Snowpark",
- "playground": "Spielplatz"
+ "snow_park": "Snowpark"
}
},
"place": {
},
"sac_scale": {
"label": "Wanderweg Klassifizierung",
- "placeholder": "Bergwandern, Bergsteigen ...",
"options": {
- "hiking": "T1: Wandern",
- "mountain_hiking": "T2: Bergwandern",
- "demanding_mountain_hiking": "T3: Anspruchsvolles Bergwandern",
"alpine_hiking": "T4: Bergsteigen",
"demanding_alpine_hiking": "T5: Anspruchsvolles Bergsteigen",
- "difficult_alpine_hiking": "T6: Schwieriges Bergsteigen"
- }
+ "demanding_mountain_hiking": "T3: Anspruchsvolles Bergwandern",
+ "difficult_alpine_hiking": "T6: Schwieriges Bergsteigen",
+ "hiking": "T1: Wandern",
+ "mountain_hiking": "T2: Bergwandern"
+ },
+ "placeholder": "Bergwandern, Bergsteigen ..."
},
"seasonal": {
"label": "Saisonal"
"service": {
"label": "Typ"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Kettennietdrücker",
"options": {
+ "no": "Nein",
"undefined": "Vermutlich Nein",
- "yes": "Ja",
- "no": "Nein"
+ "yes": "Ja"
}
},
"service/bicycle/pump": {
"label": "Luftpumpe",
"options": {
+ "no": "Nein",
"undefined": "Vermutlich Nein",
- "yes": "Ja",
- "no": "Nein"
+ "yes": "Ja"
+ }
+ },
+ "service_rail": {
+ "label": "Diensttyp",
+ "options": {
+ "crossover": "Gleiskreuzung",
+ "siding": "Abstellgleis",
+ "spur": "Spur",
+ "yard": "Hof"
}
},
"shelter": {
},
"smoking": {
"label": "Rauchen",
- "placeholder": "Nein, Getrennt, Ja ...",
"options": {
- "no": "Rauchen überall verboten",
- "separated": "In Raucherzonen, nicht baulich getrennt",
+ "dedicated": "Für Raucher bestimmt (z.B.: Raucherklub)",
"isolated": "In Raucherzonen, baulich getrennt",
+ "no": "Rauchen überall verboten",
"outside": "Im Freien erlaubt",
- "yes": "Überall erlaubt",
- "dedicated": "Für Raucher besteimmt (z.B.: Raucherklub)"
- }
+ "separated": "In Raucherzonen, nicht baulich getrennt",
+ "yes": "Überall erlaubt"
+ },
+ "placeholder": "Nein, Getrennt, Ja ..."
},
"smoothness": {
"label": "Gleichmäßigkeit",
- "placeholder": "Schmale Reifen, Räder, Off-Road ...",
"options": {
+ "bad": "Robuste Räder: Trekkingrad, Auto, Rikscha",
"excellent": "Schmale Reifen: Rollerblade, Skateboard",
"good": "Schmale Reifen: Rennrad",
+ "horrible": "Off-Road: Schweres Off-Road-Fahrzeug",
+ "impassable": "Unpassierbar / Keine Fahrzeuge mit Rädern",
"intermediate": "Räder: Citybike, Rollstuhl, Roller",
- "bad": "Robuste Räder: Trekkingrad, Auto, Rikscha",
"very_bad": "Hoher Radstand: leichtes Off-Road-Fahrzeug",
- "horrible": "Off-Road: Schweres Off-Road-Fahrzeug",
- "very_horrible": "Spezialisiertes Off-Road: Traktor, Quad",
- "impassable": "Unpassierbar / Keine Fahrzeuge mit Rädern"
- }
+ "very_horrible": "Spezialisiertes Off-Road: Traktor, Quad"
+ },
+ "placeholder": "Schmale Reifen, Räder, Off-Road ..."
},
"social_facility_for": {
"label": "Zielgruppe der Einrichtung",
},
"structure": {
"label": "Struktur",
- "placeholder": "Unbekannt",
"options": {
"bridge": "Brücke",
- "tunnel": "Tunnel",
- "embankment": "Fahrdamm",
"cutting": "Senke",
- "ford": "Furt"
- }
+ "embankment": "Fahrdamm",
+ "ford": "Furt",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Unbekannt"
},
"studio_type": {
"label": "Typ"
},
"takeaway": {
"label": "Takeaway",
- "placeholder": "Ja, Nein, Nur Takeaway ...",
"options": {
- "yes": "Ja",
"no": "Nein",
- "only": "Nur Takeaway"
- }
+ "only": "Nur Takeaway",
+ "yes": "Ja"
+ },
+ "placeholder": "Ja, Nein, Nur Takeaway ..."
},
"toilets/disposal": {
"label": "Toiletten-Bauart",
"options": {
- "flush": "Spülung",
- "pitlatrine": "Grube/Latrine",
+ "bucket": "Eimer",
"chemical": "Chemisch",
- "bucket": "Eimer"
+ "flush": "Spülung",
+ "pitlatrine": "Grube/Latrine"
}
},
"tourism": {
},
"tracktype": {
"label": "Feld-/Waldweg-Typ",
- "placeholder": "fest, großteils fest, weich ...",
"options": {
"grade1": "Fest: befestigt oder sehr kompakte harte Oberfläche",
"grade2": "Großteils Fest: Kies/Stein gemischt mit etwas weichem Material",
"grade3": "Gleichmäßige Mischung von harten und weichem Material",
"grade4": "Großteils weich: Erde/Sand/Gras gemischt mit etwas hartem Material",
"grade5": "Weiche: Erde/Sand/Gras"
- }
+ },
+ "placeholder": "fest, großteils fest, weich ..."
},
"trail_visibility": {
"label": "Erkennbarkeit des Wanderweges",
- "placeholder": "Ausgezeichnet, Gut, Schlecht ...",
"options": {
+ "bad": "Schlecht: Keine Markierungen, Weg teilweise unsichtbar oder nicht vorhanden",
"excellent": "Ausgezeichnet: unmissverständlicher Weg oder überall Markierungen",
"good": "Gut: sicherbare Markierungen, müssen teilweise gesucht werden",
- "intermediate": "Mittelmäßig: Wenige Markierungen, Weg großteils sichtbar",
- "bad": "Schlecht: Keine Markierungen, Weg teilweise unsichtbar oder nicht vorhanden",
"horrible": "Schrecklich: oft kein Weg, teilweise Orientierungserfahrung benötigt",
+ "intermediate": "Mittelmäßig: Wenige Markierungen, Weg großteils sichtbar",
"no": "Nein: Kein Weg, ausgezeichnete Orientierungserfahrung benötigt"
- }
+ },
+ "placeholder": "Ausgezeichnet, Gut, Schlecht ..."
},
"trees": {
"label": "Bäume"
},
"amenity/atm": {
"name": "Geldautomat",
- "terms": "Geldautomat"
+ "terms": "Geldautomat,Bankautomat,Bankomat,Bancomat,Geldausgabeautomat,ATM"
},
"amenity/bank": {
"name": "Bank (Geldinstitut)",
"name": "Fahrradreperaturstation",
"terms": "Fahrradreperaturstation, Fahrradreperaturbox"
},
+ "amenity/biergarten": {
+ "name": "Biergarten"
+ },
"amenity/boat_rental": {
"name": "Bootvermietung",
"terms": "Bootsverleih"
"terms": "Krankenhaus, Klinik, Klinikgelände, Hospital"
},
"amenity/kindergarten": {
- "name": "Vorschul-/Kindergartengelände",
+ "name": "Kindergarten",
"terms": "Kindergartengeläde,Kinderkrippengelände"
},
"amenity/library": {
"terms": "Hotelgebäude"
},
"building/house": {
- "name": "Haus",
+ "name": "Einfamilienhaus",
"terms": "Haus"
},
"building/hut": {
"terms": "Gleitbahn, Rampe"
},
"leisure/sports_center": {
- "name": "Fitnessstudio",
- "terms": "Fitnessstudio, Sportstudio, Trainingszentrum"
+ "name": "Sportzentrum",
+ "terms": "Fitnessstudio, Sportstudio, Trainingszentrum, Aerobicstudio, Sporthalle"
},
"leisure/stadium": {
"name": "Stadion",
"name": "Aussichtsturm",
"terms": "Ausguck, Ausblick, Beobachtungsstand"
},
+ "man_made/petroleum_well": {
+ "name": "Erdölpumpe",
+ "terms": "Tiefpumpe"
+ },
"man_made/pier": {
"name": "Steg",
"terms": "Anleger, Pier"
"name": "Pipeline",
"terms": "Pipeline, Rohrleitung"
},
+ "man_made/silo": {
+ "name": "Silo"
+ },
+ "man_made/storage_tank": {
+ "name": "Lagertank"
+ },
"man_made/survey_point": {
"name": "Vermessungspunkt",
"terms": "Trigonometrischer Punkt, Geodätischer Festpunkt"
"name": "Großstadt",
"terms": "Stadt"
},
+ "place/farm": {
+ "name": "Bauernhof"
+ },
"place/hamlet": {
"name": "Siedlung",
"terms": "Weiler, kleines Dorf"
"name": "Relation",
"terms": "Relation, Beziehung, Verbindung"
},
+ "roundabout": {
+ "name": "Kreisverkehr",
+ "terms": "Kreisverkehr, Kreisel, Rondell, Verkehrskreisel"
+ },
"route/ferry": {
"name": "Fährenroute",
"terms": "Fährlinie"
"terms": "Kanal"
},
"waterway/dam": {
- "name": "Damm",
- "terms": "Staudamm, Staumauer"
+ "name": "Staudamm",
+ "terms": "Damm, Staumauer"
},
"waterway/ditch": {
"name": "Graben",
"commit": {
"title": "Αποθήκευση Αλλαγών",
"description_placeholder": "Σύντομη περιγραφή των συνεισφορών σας",
- "message_label": "Υποβολή μηνύματος",
"upload_explanation": "ΟΙ αλλαγές που θα ανεβάσετε θα είναι ορατές σε όλους τους χάρτες που χρησιμοποιούν δεδομένα OpenStreetMap.",
"upload_explanation_with_user": "ΟΙ αλλαγές που θα ανεβάσετε ως {user} θα είναι ορατές σε όλους τους χάρτες που χρησιμοποιούν δεδομένα OpenStreetMap.",
"save": "Αποθήκευση",
"title": "Αποθήκευση",
"help": "Αποθήκευση των αλλαγών στο OpenStreetMap, κάντε τες ορατές στου άλλους χρήστες.",
"no_changes": "Δεν υπάρχουν αλλαγές για αποθήκευση.",
- "error": "Παρουσιάστηκε ένα σφάλμα κατά την προσπάθεια αποθήκευσης",
"uploading": "Αποστολή αλλαγών στο OpenStreetMap.",
"unsaved_changes": "Έχετε μη αποθηκευμένες αλλαγές"
},
"fields": {
"access": {
"label": "Πρόσβαση",
- "placeholder": "Άγνωστο",
- "types": {
- "access": "Γενική",
- "foot": "Πεζοί",
- "motor_vehicle": "Μηχανοκίνητα",
- "bicycle": "Ποδήλατα",
- "horse": "Άλογα"
- },
"options": {
- "yes": {
- "title": "Επιτρέπεται",
- "description": "Η πρόσβαση επιτρέπεται νόμιμα, Δικαίωμα διέλευσης"
+ "designated": {
+ "description": "Η πρόσβαση επιτρέπεται βάσει πινακίδων ή συγκεκριμένων τοπικών νόμων",
+ "title": "Καθορισμένο"
+ },
+ "destination": {
+ "description": "Η πρόσβαση επιτρέπεται μόνο για για να φτάσετε σε κάποιο προορισμό",
+ "title": "Προορισμός"
},
"no": {
- "title": "Απαγορεύεται",
- "description": "Η πρόσβαση δεν επιτρέπεται στο ευρύ κοινό"
+ "description": "Η πρόσβαση δεν επιτρέπεται στο ευρύ κοινό",
+ "title": "Απαγορεύεται"
},
"permissive": {
- "title": "Ανεκτική",
- "description": "Η πρόσβαση επιτρέπεται μέχρι ο ιδιοκτήτης αναιρέσει την άδεια"
+ "description": "Η πρόσβαση επιτρέπεται μέχρι ο ιδιοκτήτης αναιρέσει την άδεια",
+ "title": "Ανεκτική"
},
"private": {
- "title": "Ιδιωτική",
- "description": "Η πρόσβαση επιτρέπεται μόνο με άδεια από τον ιδιοκτήτη σε ατομική βάση"
+ "description": "Η πρόσβαση επιτρέπεται μόνο με άδεια από τον ιδιοκτήτη σε ατομική βάση",
+ "title": "Ιδιωτική"
},
- "designated": {
- "title": "Καθορισμένο",
- "description": "Η πρόσβαση επιτρέπεται βάσει πινακίδων ή συγκεκριμένων τοπικών νόμων"
- },
- "destination": {
- "title": "Προορισμός",
- "description": "Η πρόσβαση επιτρέπεται μόνο για για να φτάσετε σε κάποιο προορισμό"
+ "yes": {
+ "description": "Η πρόσβαση επιτρέπεται νόμιμα, Δικαίωμα διέλευσης",
+ "title": "Επιτρέπεται"
}
+ },
+ "placeholder": "Άγνωστο",
+ "types": {
+ "access": "Γενική",
+ "bicycle": "Ποδήλατα",
+ "foot": "Πεζοί",
+ "horse": "Άλογα",
+ "motor_vehicle": "Μηχανοκίνητα"
}
},
"access_simple": {
"address": {
"label": "Διεύθυνση",
"placeholders": {
+ "city": "Πόλη",
+ "country": "Χώρα",
+ "hamlet": "Οικισμός",
"housename": "Όνομα Σπιτιού",
"housenumber": "123",
- "street": "Οδός",
- "city": "Πόλη",
- "postcode": "Ταχ. Κώδικας",
"place": "Τόπος",
- "hamlet": "Οικισμός",
- "suburb": "Προάστιο",
+ "postcode": "Ταχ. Κώδικας",
"state": "Πολιτεία",
- "country": "Χώρα"
+ "street": "Οδός",
+ "suburb": "Προάστιο"
}
},
"admin_level": {
"cardinal_direction": {
"label": "Κατεύθυνση",
"options": {
- "N": "Βοράς",
"E": "Ανατολή",
- "S": "Νότος",
- "W": "Δύση",
- "NE": "Βορειοανατολικά",
- "SE": "Νοτιοανατολικά",
- "SW": "Νοτιοδυτικά",
- "NW": "Βορειοδυτικά",
- "NNE": "Βόρεια-βορειοανατολικά",
"ENE": "Ανατολικά-βορειοανατολικά",
"ESE": "Ανατολικά-νοτιοανατολικά",
+ "N": "Βοράς",
+ "NE": "Βορειοανατολικά",
+ "NNE": "Βόρεια-βορειοανατολικά",
+ "NNW": "Βόρεια-βορειοδυτικά",
+ "NW": "Βορειοδυτικά",
+ "S": "Νότος",
+ "SE": "Νοτιοανατολικά",
"SSE": "Νότια-νοτιοανατολικά",
"SSW": "Νότια-νοτιοδυτικά",
- "WSW": "Δυτικά-νοτιοδυτικά",
+ "SW": "Νοτιοδυτικά",
+ "W": "Δύση",
"WNW": "Δυτικά-βορειοδυτικά",
- "NNW": "Βόρεια-βορειοδυτικά"
+ "WSW": "Δυτικά-νοτιοδυτικά"
}
},
"clock_direction": {
"label": "Κατεύθυνση",
"options": {
- "clockwise": "Δεξιόστροφα",
- "anticlockwise": "Αριστερόστροφα"
+ "anticlockwise": "Αριστερόστροφα",
+ "clockwise": "Δεξιόστροφα"
}
},
"collection_times": {
},
"electrified": {
"options": {
- "yes": "Ναι (ακαθόριστο)",
- "no": "Όχι"
+ "no": "Όχι",
+ "yes": "Ναι (ακαθόριστο)"
}
},
"elevation": {
"fire_hydrant/type": {
"label": "Τύπος",
"options": {
+ "pond": "Λιμνούλα",
"underground": "Υπόγεια",
- "wall": "Τοίχος",
- "pond": "Λιμνούλα"
+ "wall": "Τοίχος"
}
},
"fixme": {
"internet_access": {
"label": "Πρόσβαση Στο Διαδίκτυο",
"options": {
- "yes": "Ναι",
"no": "Όχι",
- "wlan": "Ασύρματο Δίκτυο",
+ "terminal": "Τερματικό",
"wired": "Ενσύρματο δύκτυο",
- "terminal": "Τερματικό"
+ "wlan": "Ασύρματο Δίκτυο",
+ "yes": "Ναι"
}
},
"lamp_type": {
"oneway": {
"label": "Μονόδρομος",
"options": {
- "yes": "Ναι",
- "no": "Όχι"
+ "no": "Όχι",
+ "yes": "Ναι"
}
},
"oneway_yes": {
"label": "Μονόδρομος",
"options": {
- "yes": "Ναι",
- "no": "Όχι"
+ "no": "Όχι",
+ "yes": "Ναι"
}
},
"opening_hours": {
},
"smoking": {
"label": "Κάπνισμα",
- "placeholder": "Όχι, Ξεχωριστά, Ναι...",
"options": {
"outside": "Επιτρέπεται έξω",
"yes": "Επιτρέπεται παντού"
- }
+ },
+ "placeholder": "Όχι, Ξεχωριστά, Ναι..."
},
"source": {
"label": "Πηγή"
},
"structure": {
"label": "Διάρθρωση",
- "placeholder": "Άγνωστο",
"options": {
"bridge": "Γέφυρα",
- "tunnel": "Σήραγγα",
- "embankment": "Ανάχωμα",
"cutting": "Ανασκαφή",
- "ford": "Κοιτόστρωση"
- }
+ "embankment": "Ανάχωμα",
+ "ford": "Κοιτόστρωση",
+ "tunnel": "Σήραγγα"
+ },
+ "placeholder": "Άγνωστο"
},
"studio_type": {
"label": "Τύπος"
+++ /dev/null
-{}
\ No newline at end of file
"multiple": "Deleted {n} objects."
},
"incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
+ "part_of_relation": "This feature can't be deleted because it's part of a larger relation. You must remove it from the relation first.",
"connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
},
"add_member": {
"commit": {
"title": "Save Changes",
"description_placeholder": "Brief description of your contributions",
- "message_label": "Commit message",
+ "message_label": "Changeset comment",
"upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
"upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
"save": "Save",
"list": "Edits by {users}",
"truncated_list": "Edits by {users} and {count} others"
},
+ "infobox": {
+ "selected": "{n} selected",
+ "geometry": "Geometry",
+ "closed": "closed",
+ "center": "Center",
+ "perimeter": "Perimeter",
+ "length": "Length",
+ "area": "Area",
+ "centroid": "Centroid",
+ "location": "Location",
+ "metric": "Metric",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "point",
+ "vertex": "vertex",
+ "line": "line",
+ "area": "area",
+ "relation": "relation"
+ },
"geocoder": {
"search": "Search worldwide...",
"no_results_visible": "No results in visible map area",
"title": "Save",
"help": "Save changes to OpenStreetMap, making them visible to other users.",
"no_changes": "No changes to save.",
- "error": "An error occurred while trying to save",
+ "error": "Errors occurred while trying to save",
+ "status_code": "Server returned status code {code}",
"unknown_error_details": "Please ensure you are connected to the internet.",
"uploading": "Uploading changes to OpenStreetMap.",
- "unsaved_changes": "You have unsaved changes"
+ "unsaved_changes": "You have unsaved changes",
+ "conflict": {
+ "header": "Resolve conflicting edits",
+ "count": "Conflict {num} of {total}",
+ "previous": "< Previous",
+ "next": "Next >",
+ "keep_local": "Keep mine",
+ "keep_remote": "Use theirs",
+ "restore": "Restore",
+ "delete": "Leave Deleted",
+ "download_changes": "Or download your changes.",
+ "done": "All conflicts resolved!",
+ "help": "Another user changed some of the same map features you changed.\nClick on each item below for more details about the conflict, and choose whether to keep\nyour changes or the other user's changes.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "This object has been deleted by {user}.",
+ "location": "This object was moved by both you and {user}.",
+ "nodelist": "Nodes were changed by both you and {user}.",
+ "memberlist": "Relation members were changed by both you and {user}.",
+ "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Edited OSM!",
"help_html": "Your changes should appear in the \"Standard\" layer in a few minutes. Other layers, and certain features, may take longer\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
},
"confirm": {
- "okay": "Okay"
+ "okay": "Okay",
+ "cancel": "Cancel"
},
"splash": {
"welcome": "Welcome to the iD OpenStreetMap editor",
},
"help": {
"title": "Help",
- "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need a\n[free OpenStreetMap account](https://www.openstreetmap.org/user/new).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click\non it on the map. This will highlight the selected feature, open a panel with\ndetails about it, and show a menu of things you can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a rectangle.\nThis will draw a box and select all the points within it.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Save' again to post the changes\nto [OpenStreetMap.org](http://www.openstreetmap.org/), where they are visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n",
"roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a small tools menu on the map and a sidebar showing more information\nabout the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also click the 'Move' tool or press the `M` shortcut key to move the entire road at\none time, and then click again to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n",
"gps": "# GPS\n\nGPS data is the most trusted source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n",
"construction": {
"label": "Type"
},
+ "content": {
+ "label": "Contents"
+ },
"country": {
"label": "Country"
},
"description": {
"label": "Description"
},
+ "drive_through": {
+ "label": "Drive-Through"
+ },
"electrified": {
"label": "Electrification",
"placeholder": "Contact Line, Electrified Rail...",
"incline": {
"label": "Incline"
},
+ "incline_steps": {
+ "label": "Incline",
+ "options": {
+ "up": "Up",
+ "down": "Down"
+ }
+ },
"information": {
"label": "Type"
},
"power": {
"label": "Type"
},
+ "power_supply": {
+ "label": "Power Supply"
+ },
"railway": {
"label": "Type"
},
"difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
}
},
+ "sanitary_dump_station": {
+ "label": "Toilet Disposal"
+ },
"seasonal": {
"label": "Seasonal"
},
"service": {
"label": "Type"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Chain Tool",
"options": {
"undefined": "Assumed to be No",
"no": "No"
}
},
+ "service_rail": {
+ "label": "Service Type",
+ "options": {
+ "spur": "Spur",
+ "yard": "Yard",
+ "siding": "Siding",
+ "crossover": "Crossover"
+ }
+ },
"shelter": {
"label": "Shelter"
},
"water": {
"label": "Type"
},
+ "water_point": {
+ "label": "Water Point"
+ },
"waterway": {
"label": "Type"
},
"name": "Bicycle Repair Station",
"terms": "bike"
},
+ "amenity/biergarten": {
+ "name": "Beer Garden",
+ "terms": "beer,bier,booze"
+ },
"amenity/boat_rental": {
"name": "Boat Rental",
"terms": ""
"name": "Restaurant",
"terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
},
+ "amenity/sanitary_dump_station": {
+ "name": "RV Toilet Disposal",
+ "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
+ },
"amenity/school": {
"name": "School Grounds",
"terms": "academy,elementary school,middle school,high school"
"name": "Lighthouse",
"terms": ""
},
+ "man_made/mast": {
+ "name": "Radio Mast",
+ "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
+ },
"man_made/observation": {
"name": "Observation Tower",
"terms": "lookout tower,fire tower"
},
+ "man_made/petroleum_well": {
+ "name": "Oil Well",
+ "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
+ },
"man_made/pier": {
"name": "Pier",
"terms": ""
"name": "Pipeline",
"terms": ""
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "grain,corn,wheat"
+ },
+ "man_made/storage_tank": {
+ "name": "Storage Tank",
+ "terms": "water,oil,gas,petrol"
+ },
"man_made/survey_point": {
"name": "Survey Point",
"terms": ""
"name": "City",
"terms": ""
},
+ "place/farm": {
+ "name": "Farm",
+ "terms": ""
+ },
"place/hamlet": {
"name": "Hamlet",
"terms": ""
"name": "Relation",
"terms": ""
},
+ "roundabout": {
+ "name": "Roundabout",
+ "terms": ""
+ },
"route/ferry": {
"name": "Ferry Route",
"terms": ""
},
"tourism/camp_site": {
"name": "Camp Site",
- "terms": ""
+ "terms": "Tent"
},
"tourism/caravan_site": {
"name": "RV Park",
- "terms": ""
+ "terms": "Motor Home,Camper"
},
"tourism/chalet": {
"name": "Chalet",
"name": "Drain",
"terms": ""
},
+ "waterway/fuel": {
+ "name": "Marine Fuel Station",
+ "terms": "petrol,gas,diesel,boat"
+ },
"waterway/river": {
"name": "River",
"terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
"name": "Riverbank",
"terms": ""
},
+ "waterway/sanitary_dump_station": {
+ "name": "Marine Toilet Disposal",
+ "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
+ },
"waterway/stream": {
"name": "Stream",
"terms": "beck,branch,brook,burn,course,creek,current,drift,flood,flow,freshet,race,rill,rindle,rivulet,run,runnel,rush,spate,spritz,surge,tide,torrent,tributary,watercourse"
"disconnect": {
"title": "Malkonekti"
},
+ "move": {
+ "key": "M"
+ },
"rotate": {
"title": "Rotacio",
"description": "Rotacii tiu objekto ĉirkaŭ ĝia centra punkto.",
}
},
"reverse": {
- "title": "dorsflanko"
+ "title": "dorsflanko",
+ "key": "V"
+ },
+ "split": {
+ "key": "X"
}
},
"translate": {
"translate": "Traduki",
"localized_translation_label": "Multlingva nomon"
},
+ "commit": {
+ "changes": "{count} ŝanĝoj"
+ },
+ "inspector": {
+ "reference": "Vidi en la vikio de OpenStreetMap",
+ "check": {
+ "yes": "Jes",
+ "no": "Ne"
+ },
+ "way": "Vojo"
+ },
+ "feature": {
+ "others": {
+ "description": "Aliaj"
+ }
+ },
+ "help": {
+ "title": "Helpo"
+ },
"intro": {
"navigation": {
"title": "Navigado"
},
"fields": {
"access": {
- "placeholder": "Nekonata",
- "types": {
- "bicycle": "Bicikloj",
- "horse": "Ĉevaloj"
- },
"options": {
- "yes": {
- "title": "Permesita"
- },
"no": {
"title": "Malpermesita"
+ },
+ "yes": {
+ "title": "Permesita"
}
+ },
+ "placeholder": "Nekonata",
+ "types": {
+ "bicycle": "Bicikloj",
+ "horse": "Ĉevaloj"
}
},
"access_simple": {
"address": {
"label": "Adreso",
"placeholders": {
- "housenumber": "123",
- "street": "Strato",
"city": "Urbo",
+ "country": "Lando",
+ "housenumber": "123",
"province": "Provinco",
- "country": "Lando"
+ "street": "Strato"
}
},
"aerialway/capacity": {
},
"internet_access": {
"options": {
- "yes": "Jes",
"no": "Ne",
- "wlan": "Wi-Fi"
+ "wlan": "Wi-Fi",
+ "yes": "Jes"
}
},
"lanes": {
},
"oneway": {
"options": {
- "yes": "Jes",
- "no": "Ne"
+ "no": "Ne",
+ "yes": "Jes"
}
},
"oneway_yes": {
"options": {
- "yes": "Jes",
- "no": "Ne"
+ "no": "Ne",
+ "yes": "Jes"
}
},
"opening_hours": {
},
"straighten": {
"title": "Enderezado",
- "description": "Enderezar esta línea",
+ "description": "Enderezar esta línea.",
"key": "S",
"annotation": "Línea enderezada.",
"too_bendy": "Esto no puede ser enderezado porque es demasiado sinuoso.",
"description": "Objeto eliminado permanentemente.",
"annotation": {
"point": "Punto eliminado.",
- "vertex": "Vértice elimnado de la ruta.",
+ "vertex": "Nodo eliminado de la vía.",
"line": "Línea eliminada.",
"area": "Área eliminada.",
"relation": "Relación eliminada.",
"multiple": "{n} objetos eliminados."
},
- "incomplete_relation": "Está característica no puede ser borrada porque no se ha descargado completa.",
- "connected_to_hidden": "Esto no puede ser borrado porque está conectado a un elemento oculto."
+ "incomplete_relation": "Está característica no puede ser borrada porque no se ha descargado completamente.",
+ "part_of_relation": "Esta característica no puede ser eliminada porque es parte de una relación más grande. Usted debe quitarla de la relación primero.",
+ "connected_to_hidden": "Esto no puede ser borrado porque está conectado a una característica oculta."
},
"add_member": {
"annotation": "Añadir un miembro a la relación."
},
"delete_member": {
- "annotation": "Eliminar un miembro de una relación"
+ "annotation": "Quitar un miembro de una relación."
},
"connect": {
"annotation": {
"description": "Combinar líneas.",
"key": "C",
"annotation": "{n} líneas combinadas.",
- "not_eligible": "Estos elementos no pueden ser fusionados.",
+ "not_eligible": "Estas características no pueden ser combinadas.",
"not_adjacent": "Estas líneas no pueden ser fusionadas porque no están conectadas",
"restriction": "Estas líneas no se pueden combinar porque al menos una es miembro de una relación de \"{relation}\".",
- "incomplete_relation": "Estos elementos no se pueden combinar porque al menos uno de ellos no se ha descargado por completo."
+ "incomplete_relation": "Estas características no pueden ser combinadas porque al menos una no ha sido descargado por completo."
},
"move": {
"title": "Mover",
"loading_auth": "Conectando a OpenStreetMap...",
"report_a_bug": "Informar de un error",
"feature_info": {
- "hidden_warning": "{count} elementos ocultos",
- "hidden_details": "Estos elementos actualmente están ocultos: {details}"
+ "hidden_warning": "{count} características ocultas",
+ "hidden_details": "Estas características actualmente están ocultas: {details}"
},
"status": {
"error": "No se puede conectar con la API.",
"commit": {
"title": "Guardar cambios",
"description_placeholder": "Breve descripción de tus contribuciones",
- "message_label": "Mensaje del registro",
+ "message_label": "Comentario del conjunto de cambios",
"upload_explanation": "Los cambios que sube serán visibles en todos los mapas que usen datos de OpenStreetMap.",
"upload_explanation_with_user": "Los cambios que sube como {user} serán visibles en todos los mapas que usen datos de OpenStreetMap.",
"save": "Guardar",
"list": "Ediciones de {users}",
"truncated_list": "Ediciones de {users} y {count} más"
},
+ "infobox": {
+ "selected": "{n} seleccionado",
+ "geometry": "Geometría",
+ "closed": "cerrado",
+ "center": "Centro",
+ "perimeter": "Perímetro",
+ "length": "Tamaño",
+ "area": "Área",
+ "centroid": "Centroide",
+ "location": "Ubicación",
+ "metric": "Métrica",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "punto",
+ "vertex": "vértice",
+ "line": "línea",
+ "area": "área",
+ "relation": "relación"
+ },
"geocoder": {
"search": "Buscar mundialmente…",
"no_results_visible": "No hay resultados en el área visible",
"results": "{n} resultados para {search}",
"reference": "Ver más información en la wiki de OpenStreetMap",
"back_tooltip": "Cambiar tipo de elemento",
- "remove": "Eliminar",
+ "remove": "Quitar",
"search": "Buscar",
"multiselect": "Elementos seleccionados",
"unknown": "Desconocido",
"incomplete": "<no descargado>",
- "feature_list": "Buscar elementos",
+ "feature_list": "Buscar características",
"edit": "Editar elemento",
"check": {
"yes": "Si",
"description": "Datos de mapa",
"data_layers": "Capas de datos",
"fill_area": "Pintar las áreas",
- "map_features": "Elementos de la mapa",
- "autohidden": "Estos objetos geográficos se han ocultado automáticamente porque existen demasiados representados en la pantalla. Puede acercarse con el zoom para editarlos."
+ "map_features": "Características del mapa",
+ "autohidden": "Estas características se han ocultado automáticamente porque existen demasiadas mostradas en la pantalla. Puede acercarse para editarlos."
},
"feature": {
"points": {
"tooltip": "Edificios, garajes, cobertizos, etc."
},
"landuse": {
- "description": "Usos del suelo",
+ "description": "Características de usos del suelo",
"tooltip": "Bosques, explotaciones agropecuarias, parques, zonas residenciales o comerciales, etc."
},
"boundaries": {
"tooltip": "Límites administrativos"
},
"water": {
- "description": "Elementos relacionados con el agua",
+ "description": "Características de agua",
"tooltip": "Ríos, lagos, embalses, estanques, láminas de agua, etc."
},
"rail": {
- "description": "Elementos ferroviarios",
+ "description": "Características ferroviarias",
"tooltip": "Ferrocarriles"
},
"power": {
- "description": "Elementos relacionados con la energía",
+ "description": "Características de energía",
"tooltip": "Líneas eléctricas, plantas de energía, subestaciones, etc."
},
"past_future": {
"title": "Guardar",
"help": "Guardar los cambios en OpenStreetMap haciéndolos visibles a otros usuarios.",
"no_changes": "No hay cambios que guardar.",
- "error": "Ocurrió un error mientras se trataba de guardar",
+ "error": "Se han producido errores al tratar de guardar",
+ "status_code": "El servidor devolvió el código de estado {code}",
"unknown_error_details": "Asegúrese de que está conectado a Internet.",
"uploading": "Subiendo cambios a OpenStreetMap.",
- "unsaved_changes": "Tiene cambios sin guardar"
+ "unsaved_changes": "Tiene cambios sin guardar",
+ "conflict": {
+ "header": "Resolver las ediciones conflictivas",
+ "count": "Conflicto {num} de {total}",
+ "previous": "< Anterior",
+ "next": "Siguiente >",
+ "keep_local": "Mantener el mío",
+ "keep_remote": "Usar el suyo",
+ "restore": "Restaurar",
+ "delete": "Dejar borrado",
+ "download_changes": "O descargar tus cambios.",
+ "done": "¡Todos los conflictos resueltos!",
+ "help": "Otro usuario cambió algunas de las mismas características del mapa que cambió.\nHaga clic en cada ítem para más detalles sobre el conflicto, y elija si desea mantener\nsus cambios o los cambios de los otros usuarios.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Este objeto ha sido borrado por {user}.",
+ "location": "Este objeto fue movido por ambos, usted y {user}.",
+ "nodelist": "Los nodos fueron cambiados por ambos, usted y {user}.",
+ "memberlist": "Los miembros de la relación fueron cambiados por ambos, usted y {user}.",
+ "tags": "Usted cambió la etiqueta <b>{tag}</b> a «{local}» y el {user} la cambió a «{remote}»."
+ }
},
"success": {
"edited_osm": "¡OSM editado!",
"help_html": "Los cambios deben aparecer en la capa «Estándar» en pocos minutos. Otras capas, y ciertas características, podría tomar más tiempo\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>ver detalles</a>).\n"
},
"confirm": {
- "okay": "De acuerdo"
+ "okay": "De acuerdo",
+ "cancel": "Cancelar"
},
"splash": {
"welcome": "Bienvenido al editor iD de OpenStreetMap",
"untagged_point": "Punto sin etiquetar",
"untagged_line": "Línea sin etiquetar",
"untagged_area": "Área sin etiquetar",
- "many_deletions": "Está eliminando {n} objetos ¿Está seguro que quiere hacer esto? Esto los eliminará del mapa que todos ven en openstreetmap.org.",
+ "many_deletions": "Está eliminando {n} objetos. ¿Está seguro que quiere hacer esto? Esto eliminará del mapa que todo el mundo ve en openstreetmap.org.",
"tag_suggests_area": "La etiqueta {tag} sugiere que esta línea debería ser una área, pero no es un área",
"untagged_point_tooltip": "Seleccione un tipo de característica que describa lo que es este punto.",
"untagged_line_tooltip": "Seleccione un tipo de característica que describa lo que es esta línea.",
},
"help": {
"title": "Ayuda",
- "help": "# Ayuda\n\nEste es un editor para [OpenStreetMap](http://www.openstreetmap.org/), el\nmapa del mundo libre y editable. Puedes usarlo para agregar y actualizar\ndatos en tu región, haciendo un mapa del mundo de código y datos abiertos\nmejor para todos.\n\nLas ediciones que haces en este mapa serán visibles para todos quienes usen\nOpenStreetMap. Para hacer una edición, necesitarás una\n[cuenta gratuita de OpenStreetMap](https://www.openstreetmap.org/user/new).\n\nEl [editor iD](http://ideditor.com/) es un proyecto colaborativo con [código\nfuente disponible en GitHub](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Editar & Guardar\n\nEste editor está diseñado para trabajar en línea principalmente, ya que en estos momentos esta accediendo a través de un sitio web.\n\n### Seleccionar elementos gráficos\n\nPara seleccionar un elemento del mapa, como una carretera o un punto de interés, simplemente haz clic sobre él. Esto resaltará el elemento seleccionado, abriendo un panel con sus características, y mostrará un menú de cosas que puedes hacer con ese elemento.\n\nSe pueden seleccionar múltiples elementos de una vez manteniendo pulsada la tecla 'Mayús' y haciendo clic y arrastrando el ratón sobre el mapa. Esto seleccionará todas los elementos que están dentro del recuadro que se dibuja, lo que le permite realizar acciones con todos ellos al mismo tiempo.\n\n### Guardar ediciones\n\nCuando haga cambios -como editar carreteras, edificios o lugares- estos se almacenan localmente en tu ordenador hasta que decidas guardarlos en el servidor. No se preocupe si cometes un error - puede deshacer los cambios haciendo clic en el botón 'Deshacer', y rehacerlos de nuevo haciendo clic en el botón 'Rehacer'.\n\nHaga clic en 'Guardar' para finalizar un grupo de ediciones (por ejemplo, si ha completado una zona de la ciudad y quisiera empezar en una nueva área). Antes de subir los cambios al servidor tendrás oportunidad de revisar lo que has hecho, y el editor proporciona avisos y sugerencias útiles si algo parece que no es correcto en los cambios.\n\nSi ve que todo es correcto escriba un breve comentario explicando el cambio que ha hecho y haga clic en 'Guardar' de nuevo para registrar los cambios en [OpenStreetMap.org](http:\\/\\/www.openstreetmap.org\\/), donde serán visibles para todos los demás usuarios y estarán disponible para que otros colaboradores del proyecto puedan seguir construyendo y mejorando el mapa.\n\nSi aún no ha terminado sus ediciones en una sesión, puede dejar la ventana del editor abierta y volver más tarde (en el mismo navegador y ordenador), y el editor le permitirá retomar tu trabajo.\n",
+ "help": "# Ayuda\n\nEste es un editor para [OpenStreetMap](http://www.openstreetmap.org/), el\nmapa libre y editable del mundo. Se puede utilizar para agregar y actualizar\ndatos en su área, haciendo el mapa de fuente abierto y de datos abiertos del mundo\nmejor para todos.\n\nLas ediciones que realice en este mapa serán visible a todos los que usen\nOpenStreetMap. Con el fin de hacer una edición, tendrá que\n[Iniciar sesión](https://www.openstreetmap.org/login).\n\n\nEl [editor iD](http://ideditor.com/) es un proyecto colaborativo con [código\nfuente disponible en GitHub](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Editar & Guardar\n\nEste editor está diseñado para trabajar en línea principalmente, ya que en estos momentos esta accediendo a través de un sitio web.\n\n### Seleccionar características\n\nPara seleccionar una característica del mapa, como una carretera o un punto de interés, simplemente haz clic sobre él. Esto resaltará el elemento seleccionado, abriendo un panel con sus características, y mostrará un menú de cosas que puedes hacer con ese elemento.\n\nSe pueden seleccionar múltiples elementos de una vez manteniendo pulsada la tecla 'Mayús' y haciendo clic y arrastrando el ratón sobre el mapa. Esto seleccionará todas los elementos que están dentro del recuadro que se dibuja, lo que le permite realizar acciones con todos ellos al mismo tiempo.\n\n### Guardar ediciones\n\nCuando haga cambios -como editar carreteras, edificios o lugares- estos se almacenan localmente en tu ordenador hasta que decidas guardarlos en el servidor. No se preocupe si cometes un error - puede deshacer los cambios haciendo clic en el botón 'Deshacer', y rehacerlos de nuevo haciendo clic en el botón 'Rehacer'.\n\nHaga clic en 'Guardar' para finalizar un grupo de ediciones (por ejemplo, si ha completado una zona de la ciudad y quisiera empezar en una nueva área). Antes de subir los cambios al servidor tendrás oportunidad de revisar lo que has hecho, y el editor proporciona avisos y sugerencias útiles si algo parece que no es correcto en los cambios.\n\nSi ve que todo es correcto escriba un breve comentario explicando el cambio que ha hecho y haga clic en 'Guardar' de nuevo para registrar los cambios en [OpenStreetMap.org](http:\\/\\/www.openstreetmap.org\\/), donde serán visibles para todos los demás usuarios y estarán disponible para que otros colaboradores del proyecto puedan seguir construyendo y mejorando el mapa.\n\nSi aún no ha terminado sus ediciones en una sesión, puede dejar la ventana del editor abierta y volver más tarde (en el mismo navegador y ordenador), y el editor le permitirá retomar tu trabajo.\n",
"roads": "# Carreteras\n\nPuede crear, corregir y borrar carreteras con este editor. Las vías pueden ser de todas las clases: caminos, carreteras, senderos, ciclovías, etc. A cualquier línea dibujada en el mapa se le debe indicar el tipo de elemento lineal que es.\n\n### Seleccionar\n\nHaga clic sobre una vía para seleccionarla. Verá sobre ella como se visualiza su esquema, formada por nodos y segmentos, junto con un menú de herramientas que aparece sobre el mapa y una barra lateral que muestra más información sobre la vía.\n\n### Modificar\n\nA menudo verá viales que no están alineados correctamente con la imagen aérea de fondo o con la traza GPS. Puede ajustar esas vías para situarlas en el lugar exacto.\n\nPrimero haga clic sobre la vía que desea cambiar. Esto la resaltará y mostrará los nodos o puntos de control a lo largo de la vía que la forman. A continuación simplemente arrastre esos puntos a la posición correcta. Si desea añadir nuevos puntos de control para dibujar la carretera con mayor detalle haga doble clic sobre la parte de la vía donde quiere añadir el nuevo nodo y este será creado en la vía. \n\nSi la vía conecta con otra carretera o camino pero esta conexión no aparece correctamente en el mapa puede arrastrar uno de los puntos de la vía hasta la otra carretera y se unirá automáticamente a ella mediante un nodo común. Es muy importante tener las carreteras conectadas en el mapa, ya que es esencial para proporcionar instrucciones correctas para la conducción si queremos que la cartografía se útil, por ejemplo, para los navegadores GPS.\n\n### Eliminar\n\nSi un camino es totalmente incorrecto -ha observado que no aparece en las imágenes de satélite y de manera ideal lo ha confirmado en campo- puede eliminarlo, lo cual lo borrará del mapa. Sea precavido al eliminar elementos del mapa. Como cualquier otra edición que haga este cambio será visto por todo el mundo y las imágenes de satélite a menudo no están actualizadas, por lo que una carretera que no existe en ellas pero sí en el mapa simplemente puede aparecer porque es de reciente construcción y otro usuario la ha añadido. \n\n### Crear\n\n¿Ha encontrado un lugar donde debería existir una carretera pero no aparece? Haga clic con el ratón sobre el icono 'Línea' situado en la parte superior izquierda del editor o simplemente presione la tecla '2' de su teclado que es el acceso rápido para comenzar a dibujar una línea. \n\nHaga clic sobre el mapa en el inicio de la carretera para comenzar a dibujar. Si la vía se ramifica a partir de una carretera ya existente empiece haciendo clic sobre el lugar donde ambas conectan.\n\nHaga clic en puntos a lo largo de la vía para definir el trazado correcto de la carretera. La densidad de puntos dependerá de la complejidad del recorrido, por lo que es aconsejable dibujar desde un nivel de zoom apropiado. Si la vía que está dibujando atraviesa otra carretera conéctela con esta haciendo clic sobre el punto de intersección. Una vez haya terminado el dibujo haga doble clic con el ratón o presiones la tecla 'Return' o 'Intro' de su teclado para finalizar.\n",
"gps": "# GPS\n\nLos datos provenientes de un GPS son la fuente de información más fiable para OpenStreetMap. Este editor soporta el uso de trazas GPS locales: archivos con la extensión \".gpx\" ubicados en su equipo. Usted puede capturar este tipo de trazas GPS mediante numerosas aplicaciones que existen para teléfonos inteligentes, así como con dispositivos GPS de uso personal.\n\nPara obtener información sobre cómo realizar un levantamiento de información mediante GPS lea [Tomando datos con un GPS] (http://learnosm.org/es/beginner/using-gps/) .\n\nPara utilizar una traza GPX que le ayude a cartografiar, arrastre y suelte el archivo GPX sobre el editor del mapa editor. Si se reconoce el tipo de archivo la traza aparecerá en el mapa en un color púrpura brillante. Haga clic en el menú \"Configuración del fondo\" del lado derecho para activar, desactivar o poder hacer zoom sobre esta nueva capa GPX.\n\nTenga en cuenta que el archivo GPX no está subido a OpenStreetMap. La mejor manera de utilizar esta traza es dibujar en el mapa usándola como guía para añadir nuevas características al mapa, así como [subirla a los servidores de OpenStreetMap] (http://www.openstreetmap.org/trace/create) para que otros usuarios puedan también utilizarla en sus ediciones.\n",
"imagery": "# imágenes\n\nimágenes aéreas es un importante recurso para el trazado de mapas. Una combinación\nde vuelos aéreos, vistas de satélite, y compilaciones grátis están disponibles\nen el editor bajo el menú 'Ajustes de Fondo' a la derecha.\n\nPor defecto [Bing Maps](http://www.bing.com/maps/) capa satelital es\npresentado en el editor, pero mientras se mueve y hace zoom a nuevas áreas\ngeográficas, nuevas fuentes estarán disponibles. Algunos Países, como los Estados\nUnidos, Francia, y Dinamarca poseen imágenes de muy alta calidad disponible\npara algunas áreas.\n\nImágenes aveces están desplazadas de la data del mapa por un error en el\nproveedor de imágenes. Si observa muchos caminos desplazados del fondo,\nno los mueva inmediatamente para emparejarlos. En cambio puede ajustar\nlas imágenes para que ella se empareje con los datos existentes dando click\nen 'Corregir Alineación' en el botón de Ajustes de Fondo.\n",
"close": "El editor de elementos se puede cerrar haciendo clic en el botón 'X' de la esquina superior derecha. **Cierre el editor de elementos**",
"reselect": "A menudo los puntos ya existirán, pero tendrán errores o estarán incompletos. Podemos editar puntos ya presentes en el mapa. **Seleccione el punto que acaba de crear.**",
"fixname": "**Cambie el nombre y cierre el editor de elementos.**",
- "reselect_delete": "Todos los elementos en el mapa pueden ser eliminados. **Haga clic en el punto que creó.**",
- "delete": "El menú que aparece alrededor del punto sugiere acciones que se pueden aplicar al elemento seleccionado, incluyendo la opción de eliminar. **Elimine el punto.**"
+ "reselect_delete": "Todos las características en el mapa pueden ser eliminadas. **Haga clic en el punto que creó.**",
+ "delete": "El menú alrededor del punto contiene operaciones que pueden ser aplicadas a esta, incluyendo eliminar. **Elimine el punto.**"
},
"areas": {
"title": "Áreas",
- "add": "Las áreas se utilizan para mostrar los límites de características como lagos, edificios y zonas residenciales. Ellos también pueden ser utilizados para la cartografía más detallada de las muchas características que usted puede ser que normalmente mapa como puntos. ** Haga clic en el botón Área para agregar una nueva zona. **",
+ "add": "Las áreas son utilizadas para mostrar los límites de características como lagos, edificios y zonas residenciales. Estas también pueden ser utilizadas para mapear con más detalle las diversas características que pondría normalmente en el mapa como puntos. ** Haga clic en el botón «área» para añadir una nueva área.**",
"corner": "Las áreas son dibujadas ubicando nodos que marcan los límites del área. **Sitúe el nodo inicial en una de las esquinas de la zona de juegos.**",
"place": "Dibuje el área ubicando más nodos. Termine el área haciendo clic en el punto inicial. **Dibuje un área para la zona de juegos.**",
"search": "**Busque por '{name}'.**",
- "choose": "**Elija 'Parque infantil' de la lista.**",
- "describe": "**Agregue un nombre y cierre el editor de elementos**"
+ "choose": "**Elija «zona de juegos» de la lista.**",
+ "describe": "**De un nombre y cierre el editor de características**"
},
"lines": {
"title": "Líneas",
- "add": "Las líneas son utilizadas para representar elementos como caminos, líneas férreas y ríos. **Haga clic en el botón Línea para agregar una nueva línea.**",
- "start": "**Inicie la línea haciendo clic al final de la vía.**",
- "intersect": "Haga clic para añadir más puntos a la línea. Si es necesario, puede arrastrar el mapa mientras dibuja. Los caminos, y muchos otros tipos de líneas, son parte de una red más grande. Es importante que estas líneas estén conectadas apropiadamente para que las aplicaciones de enrutamiento, como los navegadores de automóvil, puedan funcionar correctamente. **Haga clic en la calle 'Flower Street' para crear una intersección conectando las dos líneas.** ",
- "finish": "Las líneas pueden finalizarse haciendo clic nuevamente en el ultimo punto. **Termine de dibujar la vía.** ",
- "road": "**Seleccione 'Carretera sin categoría conocida' de la lista**",
- "residential": "Existen diferentes tipos de vías, la más común de las cuales es la de calle urbana. **Elija el tipo 'Calle urbana'**",
- "describe": "**Asigne un nombre a la vía y cierre el editor de elementos.**",
- "restart": "El vía debe intersectar con la calle Flower Street..",
- "wrong_preset": "No ha seleccionado el tipo 'Calle urbana'. **Haga clic aquí para elegir de nuevo**"
+ "add": "Las líneas son utilizadas para representar características como vías, líneas férreas y ríos. **Haga clic en el botón «línea» para agregar una nueva línea.**",
+ "start": "**Comience la línea haciendo clic al final de la vía.**",
+ "intersect": "Haga clic para añadir más nodos a la línea. Puede arrastrar el mapa mientras dibuja si fuese necesario. Las vías, y muchos otros tipos de líneas, son parte de una red más grande. Es importante que estas líneas estén conectadas apropiadamente para que las aplicaciones de navegación funcionen correctamente. **Haga clic en «Flower Street» para crear una intersección conectando las dos líneas.**",
+ "finish": "Puede terminar las líneas haciendo clic nuevamente en el ultimo nodo. **Termine de dibujar la vía.**",
+ "road": "**Seleccione la «vía» de la lista**",
+ "residential": "Existen diferentes tipos de vías, la más común es «residencial». **Elija el tipo de vía «residencial»**",
+ "describe": "**De un nombre a la vía y cierre el editor de características.**",
+ "restart": "La vía tiene que intersectar con Flower Street.",
+ "wrong_preset": "No ha seleccionado el tipo de vía «residencial». **Haga clic aquí para elegir de nuevo**"
},
"startediting": {
"title": "Empezar a editar",
- "help": "Para ver más documentación y este tutorial pulse aquí.",
+ "help": "Más documentación y este tutorial están disponibles aquí.",
"save": "¡No olvide guardar sus cambios regularmente!",
- "start": "¡Empezar a editar el mapa!"
+ "start": "¡Comience a mapear!"
}
},
"presets": {
"name": "Restricción"
},
"category-road": {
- "name": "Carretera"
+ "name": "Camino"
},
"category-route": {
"name": "Ruta"
"fields": {
"access": {
"label": "Acceso",
- "placeholder": "Desconocido",
- "types": {
- "access": "General",
- "foot": "A pie",
- "motor_vehicle": "Automóviles",
- "bicycle": "Bicicletas",
- "horse": "Caballos"
- },
"options": {
- "yes": {
- "title": "Permitido",
- "description": "Acceso permitido por ley; un derecho de paso"
+ "designated": {
+ "description": "Acceso permitido según señales u ordenanzas locales específicas",
+ "title": "Designado"
+ },
+ "destination": {
+ "description": "Acceso permitido sólo para llegar a un destino concreto",
+ "title": "Destino"
},
"no": {
- "title": "Prohibido",
- "description": "Acceso no permitido al público en general"
+ "description": "Acceso no permitido al público en general",
+ "title": "Prohibido"
},
"permissive": {
- "title": "Permisivo",
- "description": "Acceso permitido hasta el momento en que el propietario revoque el permiso"
+ "description": "Acceso permitido hasta el momento en que el propietario revoque el permiso",
+ "title": "Permisivo"
},
"private": {
- "title": "Privado",
- "description": "Acceso permitido sólo con permiso del propietario de manera individual"
+ "description": "Acceso permitido sólo con permiso del propietario de manera individual",
+ "title": "Privado"
},
- "designated": {
- "title": "Designado",
- "description": "Acceso permitido según señales u ordenanzas locales específicas"
- },
- "destination": {
- "title": "Destino",
- "description": "Acceso permitido sólo para llegar a un destino concreto"
+ "yes": {
+ "description": "Acceso permitido por ley; un derecho de paso",
+ "title": "Permitido"
}
+ },
+ "placeholder": "Desconocido",
+ "types": {
+ "access": "General",
+ "bicycle": "Bicicletas",
+ "foot": "A pie",
+ "horse": "Caballos",
+ "motor_vehicle": "Automóviles"
}
},
"access_simple": {
"address": {
"label": "Dirección",
"placeholders": {
+ "city": "Ciudad",
+ "country": "País",
+ "district": "Distrito",
+ "hamlet": "Aldea",
"housename": "Nombre de casa",
"housenumber": "123",
- "street": "Calle",
- "city": "Ciudad",
- "postcode": "Código postal",
"place": "Lugar",
- "hamlet": "Aldea",
- "suburb": "Suburbio",
- "subdistrict": "Subdistrito",
- "district": "Distrito",
+ "postcode": "Código postal",
"province": "Provincia",
"state": "Estado",
- "country": "País"
+ "street": "Calle",
+ "subdistrict": "Subdistrito",
+ "suburb": "Suburbio"
}
},
"admin_level": {
"aerialway/access": {
"label": "Acceso",
"options": {
+ "both": "Ambas",
"entry": "Entrada",
- "exit": "Salida",
- "both": "Ambas"
+ "exit": "Salida"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Acceso (verano)",
"options": {
+ "both": "Ambas",
"entry": "Entrada",
- "exit": "Salida",
- "both": "Ambas"
+ "exit": "Salida"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Dirección",
"options": {
- "N": "Norte",
"E": "Este",
- "S": "Sur",
- "W": "Oeste",
- "NE": "Noreste",
- "SE": "Sureste",
- "SW": "Suroeste",
- "NW": "Noroeste",
- "NNE": "Norte-Noreste",
"ENE": "Este-Noreste",
"ESE": "Este-Sureste",
+ "N": "Norte",
+ "NE": "Noreste",
+ "NNE": "Norte-Noreste",
+ "NNW": "Norte-Noroeste",
+ "NW": "Noroeste",
+ "S": "Sur",
+ "SE": "Sureste",
"SSE": "Sur-Sureste",
"SSW": "Sur-Suroeste",
- "WSW": "Oeste-Sureste",
+ "SW": "Suroeste",
+ "W": "Oeste",
"WNW": "Oeste-Noroeste",
- "NNW": "Norte-Noroeste"
+ "WSW": "Oeste-Sureste"
}
},
"clock_direction": {
"label": "Dirección",
"options": {
- "clockwise": "En sentido horario",
- "anticlockwise": "En sentido antihorario"
+ "anticlockwise": "En sentido antihorario",
+ "clockwise": "En sentido horario"
}
},
"collection_times": {
"construction": {
"label": "Tipo"
},
+ "content": {
+ "label": "Contenido"
+ },
"country": {
"label": "País"
},
"description": {
"label": "Descripción"
},
+ "drive_through": {
+ "label": "Ventanilla de autoservicio"
+ },
"electrified": {
"label": "Electrificación",
- "placeholder": "Línea de contacto, Riel electrificada...",
"options": {
"contact_line": "Línea de contacto",
+ "no": "No",
"rail": "Riel electrificada",
- "yes": "Sí (sin especificar)",
- "no": "No"
- }
+ "yes": "Sí (sin especificar)"
+ },
+ "placeholder": "Línea de contacto, Riel electrificada..."
},
"elevation": {
"label": "Altitud"
"label": "Tipo",
"options": {
"pillar": "Pilar/Sobre la tierra",
+ "pond": "Estanque",
"underground": "Subterráneo",
- "wall": "Pared",
- "pond": "Estanque"
+ "wall": "Pared"
}
},
"fixme": {
},
"gender": {
"label": "Género",
- "placeholder": "Desconocido",
"options": {
- "male": "Masculino",
"female": "Femenino",
+ "male": "Masculino",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Desconocido"
},
"generator/method": {
"label": "Método"
"incline": {
"label": "Pendiente"
},
+ "incline_steps": {
+ "label": "Pendiente",
+ "options": {
+ "down": "Abajo",
+ "up": "Arriba"
+ }
+ },
"information": {
"label": "Tipo"
},
"internet_access": {
"label": "Acceso a Internet",
"options": {
- "yes": "Sí",
"no": "No",
- "wlan": "Wi-Fi",
+ "terminal": "Terminal",
"wired": "Por cable",
- "terminal": "Terminal"
+ "wlan": "Wi-Fi",
+ "yes": "Sí"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Ciclo hoja",
"options": {
- "evergreen": "Perenne",
"deciduous": "Caduco",
- "semi_evergreen": "Semi-perenne",
+ "evergreen": "Perenne",
+ "mixed": "Mixta",
"semi_deciduous": "Semi-caduco",
- "mixed": "Mixta"
+ "semi_evergreen": "Semi-perenne"
}
},
"leaf_type": {
"label": "Tipo hoja",
"options": {
"broadleaved": "Hoja ancha",
- "needleleaved": "Hoja angosta",
+ "leafless": "Sin hojas",
"mixed": "Mixta",
- "leafless": "Sin hojas"
+ "needleleaved": "Hoja angosta"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Dificultad de bicicleta de montaña",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: grava sólida/tierra compactada, sin obstáculos, curvas amplias",
"1": "1: Poca superficie suleta, pequeños obstáculos, curvas amplias",
"4": "4: Superficie suelta o rocosa, giros en U peligrosos",
"5": "5: Dificultad máxima, campo rocoso, derrumbes",
"6": "6: No manejable, excepto por los mejores ciclistas de montaña"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Dificultad de pista IMBA",
- "placeholder": "Fácil, Medio, Difícil...",
"options": {
"0": "Más fácil (círculo blanco)",
"1": "Fácil (círculo verde)",
"2": "Media (círculo azul)",
"3": "Difícil (diamante negro)",
"4": "Extremadamente difícil (doble diamante negro)"
- }
+ },
+ "placeholder": "Fácil, medio, difícil..."
},
"mtb/scale/uphill": {
"label": "Dificultad de ciclismo de montaña cuesta arriba",
- "placeholder": "0, 1, 2, 3...",
"options": {
- "0": "0: Promedio de inclinación <10%, grava/tierra apisonada, sin obstáculos",
- "1": "1: Promedio de inclinación <15%, grava/tierra compactada, pocos objetos pequeños",
- "2": "2: Promedio de inclinación <20%, superficie estable, rocas del tamaño del puño/raíces",
- "3": "3: Promedio de inclinación <25%, superficie variable, rocas del tamaño del puño/ramas",
- "4": "4: Promedio de inclinación <30%, mal estado, rocas grandes/ramas",
+ "0": "0: Promedio de pendiente <10%, grava/tierra apisonada, sin obstáculos",
+ "1": "1: Promedio de pendiente <15%, grava/tierra compactada, pocos objetos pequeños",
+ "2": "2: Promedio de pendiente <20%, superficie estable, rocas del tamaño del puño/raíces",
+ "3": "3: Promedio de pendiente <25%, superficie variable, rocas del tamaño del puño/ramas",
+ "4": "4: Promedio de pendiente <30%, mal estado, rocas grandes/ramas",
"5": "5: Muy empinado, la bicicleta generalmente necesita ser empujada o llevada"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nombre",
"oneway": {
"label": "Sentido único",
"options": {
+ "no": "No",
"undefined": "Se asume que es No",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
}
},
"oneway_yes": {
"label": "Sentido único",
"options": {
+ "no": "No",
"undefined": "Se asume que es Sí",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
}
},
"opening_hours": {
"parking": {
"label": "Tipo",
"options": {
- "surface": "Superficie",
- "multi-storey": "Multinivel",
- "underground": "Subterráneo",
- "sheds": "Galpones",
"carports": "Cocheras",
"garage_boxes": "Garaje en cubículos",
- "lane": "Carril al borde del camino"
+ "lane": "Carril al borde del camino",
+ "multi-storey": "Multinivel",
+ "sheds": "Galpones",
+ "surface": "Superficie",
+ "underground": "Subterráneo"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Dificultad",
- "placeholder": "Fácil, Intermedio, Avanzado...",
"options": {
- "novice": "Novato (instrucción)",
- "easy": "Fácil (círculo verde)",
- "intermediate": "Intermediate (blue square)",
"advanced": "Avanzado (diamante negro)",
+ "easy": "Fácil (círculo verde)",
"expert": "Experto (doble diamante negro)",
+ "extreme": "Extremo (necesario equipo de escalada)",
"freeride": "Paseo libre (fuera de pista)",
- "extreme": "Extremo (necesario equipo de escalada)"
- }
+ "intermediate": "Intermedio (cuadrado azul)",
+ "novice": "Novato (instrucción)"
+ },
+ "placeholder": "Fácil, Intermedio, Avanzado..."
},
"piste/grooming": {
"label": "Adiestramiento",
"options": {
+ "backcountry": "Campo abierto",
"classic": "Clásico",
- "mogul": "Mogul",
- "backcountry": "Backcountry",
"classic+skating": "Clásico y patinaje",
+ "mogul": "Mogul",
"scooter": "Ciclomotor/Motonieve",
"skating": "Patinaje"
}
"label": "Tipo",
"options": {
"downhill": "Cuesta abajo",
+ "hike": "Caminata",
+ "ice_skate": "Patín sobre hielo",
"nordic": "Nórdico",
+ "playground": "Parque infantil",
"skitour": "Esquí turístico",
"sled": "Trineo",
- "hike": "Caminata",
"sleigh": "Trineo",
- "ice_skate": "Patín sobre hielo",
- "snow_park": "Parque de nieve",
- "playground": "Jardín de juegos"
+ "snow_park": "Parque de nieve"
}
},
"place": {
"power": {
"label": "Tipo"
},
+ "power_supply": {
+ "label": "Fuente de energía"
+ },
"railway": {
"label": "Tipo"
},
},
"sac_scale": {
"label": "Dificultad de senderismo",
- "placeholder": "Caminata de montaña, Caminata Alpina...",
"options": {
+ "alpine_hiking": "T4: Senderismo alpino",
+ "demanding_alpine_hiking": "T5: Senderismo alpino exigente",
+ "demanding_mountain_hiking": "T3: Senderismo de montaña exigente",
+ "difficult_alpine_hiking": "T6: Senderismo alpino difícil",
"hiking": "T1: Senderismo",
- "mountain_hiking": "T2: Senderismo de Montaña",
- "demanding_mountain_hiking": "T3: Senderismo de Montaña Exigente",
- "alpine_hiking": "T4: Senderismo Alpino",
- "demanding_alpine_hiking": "T5: Senderismo Alpino Exigente",
- "difficult_alpine_hiking": "T6: Senderismo Alpino Difícil"
- }
+ "mountain_hiking": "T2: Senderismo de montaña"
+ },
+ "placeholder": "Caminata de montaña, caminata alpina..."
+ },
+ "sanitary_dump_station": {
+ "label": "Desecho del inodoro"
},
"seasonal": {
"label": "Estacional"
"service": {
"label": "Tipo"
},
- "service/bicycle/chaintool": {
- "label": "Tronchacadenas",
+ "service/bicycle/chain_tool": {
+ "label": "Trochacadena",
"options": {
- "undefined": "Se asume que es No",
- "yes": "Si",
- "no": "No"
+ "no": "No",
+ "undefined": "Asume que es No",
+ "yes": "Si"
}
},
"service/bicycle/pump": {
"label": "Bomba de aire",
"options": {
+ "no": "No",
"undefined": "Se asume que es Si",
- "yes": "Sí",
- "no": "No"
+ "yes": "Sí"
+ }
+ },
+ "service_rail": {
+ "label": "Tipo de servicio",
+ "options": {
+ "crossover": "Ramal de cruce",
+ "siding": "Ramal paralelo",
+ "spur": "Ramal corto",
+ "yard": "Patio de maniobra"
}
},
"shelter": {
},
"smoking": {
"label": "Fumar",
- "placeholder": "No, Separado, Sí...",
"options": {
- "no": "No fumar en todas partes",
- "separated": "En zonas de fumadores, no físicamente aislado",
+ "dedicated": "Dedicado a los fumadores (ej: el club de los fumadores)",
"isolated": "En zonas de fumadores, físicamente aislados",
+ "no": "No fumar en todas partes",
"outside": "Permitido fuera",
- "yes": "Permitido en todas partes",
- "dedicated": "Dedicado a los fumadores (ej: el club de los fumadores)"
- }
+ "separated": "En zonas de fumadores, no físicamente aislado",
+ "yes": "Permitido en todas partes"
+ },
+ "placeholder": "No, Separado, Sí..."
},
"smoothness": {
"label": "Rugosidad",
- "placeholder": "Ruedas delgadas, todoterreno,...",
"options": {
+ "bad": "Ruedas robustas: bicicleta de montaña, automóvil, carreta",
"excellent": "Ruedas delgadas: patines, monotopatín",
"good": "Ruedas finas: bicicletas de competición",
+ "horrible": "Todo terreno: vehículo todo terreno de trabajo pesado",
+ "impassable": "Impasable / Ningún vehículo con ruedas",
"intermediate": "Ruedas: bicicleta urbana, silla de ruedas, ciclomotor",
- "bad": "Ruedas robustas: bicicleta de montaña, automóvil, carreta",
- "very_bad": "Gran Despeje: vehículo todoterreno de trabajo livianos",
- "horrible": "Todoterreno: vehículo todoterreno de trabajo pesado",
- "very_horrible": "Todoterreno especializado: tractor, cuatriciclos",
- "impassable": "Impasable / Ningún vehículo con ruedas"
- }
+ "very_bad": "Gran despeje: vehículo todo terreno de trabajo livianos",
+ "very_horrible": "Todo terreno especializado: tractor, vehículo todo terreno"
+ },
+ "placeholder": "Ruedas delgadas, todo terreno..."
},
"social_facility_for": {
"label": "Personas atendidas",
},
"structure": {
"label": "Estructura",
- "placeholder": "Desconocido",
"options": {
"bridge": "Puente",
- "tunnel": "Túnel",
- "embankment": "Dique",
"cutting": "Desmonte",
- "ford": "Vado"
- }
+ "embankment": "Dique",
+ "ford": "Vado",
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Desconocido"
},
"studio_type": {
"label": "Tipo"
},
"takeaway": {
"label": "Para llevar",
- "placeholder": "Si, no, sólo para llevar...",
"options": {
- "yes": "Si",
"no": "No",
- "only": "Sólo para llevar"
- }
+ "only": "Sólo para llevar",
+ "yes": "Si"
+ },
+ "placeholder": "Si, no, sólo para llevar..."
},
"toilets/disposal": {
- "label": "Disponible",
+ "label": "Desecho",
"options": {
- "flush": "Descarga",
- "pitlatrine": "Pozo/Letrina",
+ "bucket": "Bucket",
"chemical": "Chemical",
- "bucket": "Bucket"
+ "flush": "Descarga",
+ "pitlatrine": "Pozo/Letrina"
}
},
"tourism": {
},
"tracktype": {
"label": "Tipo de pista",
- "placeholder": "Sólido, mayormente sólido, suave...",
"options": {
"grade1": "Pavimentada o de superficie compacta y dura",
- "grade2": "De áridos: ripio, zahorra, grava, etc.",
+ "grade2": "Mayormente sólido: grava/roca con algún material suave mezclado",
"grade3": "De áridos con vegetación entre rodaduras",
"grade4": "De tierra con vegetación entre rodaduras",
"grade5": "De tierra o hierba con rodaduras apenas visibles"
- }
+ },
+ "placeholder": "Sólido, mayormente sólido, suave..."
},
"trail_visibility": {
"label": "Visibilidad de la senda",
- "placeholder": "Excelente, Bueno, Malo...",
"options": {
+ "bad": "Malo: no hay marcadores, sendero a veces invisible / sin caminos",
"excellent": "Excelente: sendero sin ambigüedades o marcadores en todas partes",
"good": "Bueno: marcadores visibles, a veces requiere buscar",
- "intermediate": "Intermedio: pocos marcadores, sendero mayormente visible",
- "bad": "Malo: no hay marcadores, sendero a veces invisible / sin caminos",
"horrible": "Horrible: a menudo sin camino, requiere algunas habilidades de orientación",
+ "intermediate": "Intermedio: pocos marcadores, sendero mayormente visible",
"no": "No: sin caminos, requiere excelentes habilidades de orientación"
- }
+ },
+ "placeholder": "Excelente, bueno, malo..."
},
"trees": {
"label": "Árboles"
"water": {
"label": "Tipo"
},
+ "water_point": {
+ "label": "Punto de agua"
+ },
"waterway": {
"label": "Tipo"
},
"name": "Estación de reparación de bicicletas",
"terms": "bicicletería pública, reparación de bicicletas pública, bicicleta"
},
+ "amenity/biergarten": {
+ "name": "Bar al aire libre",
+ "terms": "cerveza, bar, terraza, jardín, al aire libre"
+ },
"amenity/boat_rental": {
"name": "Alquiler de barcos",
"terms": "alquiler de botes"
"name": "Restaurante",
"terms": "restaurante, restorán, comedor, ambigú, bufé, mesón, taberna, comida, bebida, plaza de comida"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Desecho de inodoro RV",
+ "terms": "desecho, inodoro, taza, letrina, servicio, baño, aseo, lavabo"
+ },
"amenity/school": {
"name": "Terreno Escuela",
"terms": "recinto escolar, terreno escolar, escuela, colegio, instituto"
},
"amenity/toilets": {
"name": "Baños",
- "terms": "baños, baño, aseo, letrina, lavabo, servicio, tocador, ducha"
+ "terms": "baño, inodoro, taza, letrina, servicio, baño, aseo, lavabo, tocador"
},
"amenity/townhall": {
"name": "Ayuntamiento",
"terms": "almacén, depósito, bodega, lonja, nave"
},
"craft": {
- "name": "Artesanía",
- "terms": "arte, oficio, trabajo"
+ "name": "Oficio",
+ "terms": "oficio, trabajo, artesanal"
},
"craft/basket_maker": {
"name": "Fabricante de cestas",
},
"craft/boatbuilder": {
"name": "Constructor de barco",
- "terms": "barco, bote, lancha"
+ "terms": "barco, bote, lancha, canoa"
},
"craft/bookbinder": {
"name": "Encuadernador",
- "terms": "encuadernador"
+ "terms": "encuadernador, empastador"
},
"craft/brewery": {
"name": "Cervecería",
- "terms": "cervecería, fábrica de cerveza"
+ "terms": "cervecería, fábrica de cerveza, cerveza"
},
"craft/carpenter": {
"name": "Carpintero",
- "terms": "carpintería, carpintero, ebanistería, ebanista, madera, madedero"
+ "terms": "carpintería, carpintero, ebanistería, ebanista, madera, maderero"
},
"craft/carpet_layer": {
"name": "Tapizador de alfombras",
- "terms": "alfombra, moqueta, tapiz, tapicero"
+ "terms": "alfombra, tapete, moqueta, tapiz, tapicero"
},
"craft/caterer": {
- "name": "Proveedor",
- "terms": "abastecedor, proveedor, catering, cáterin"
+ "name": "Catering",
+ "terms": "abastecedor, proveedor, catering, cáterin, comida"
},
"craft/clockmaker": {
"name": "Relojero",
"terms": "relojero, reloj, relojería"
},
"craft/confectionery": {
- "name": "Confitería",
- "terms": "confitería, dulces, repostería, golosina, bombones, tienda de dulces, pastelería, dulcería"
+ "name": "Repostero",
+ "terms": "confitería, dulces, repostería, repostero, golosina, bombones, pastelería, dulcería"
},
"craft/dressmaker": {
"name": "Modista",
- "terms": "modista, costurera"
+ "terms": "modista, costurera, sastre, diseñador, moda"
},
"craft/electrician": {
"name": "Electricista",
- "terms": "electricista, iluminista, trabajo de electricidad"
+ "terms": "electricista, iluminista, electricidad"
},
"craft/gardener": {
"name": "Jardinero",
- "terms": "Jardinero, Jardinería"
+ "terms": "jardinero, jardinería, jardín"
},
"craft/glaziery": {
"name": "Vidriería",
- "terms": "Vidriería"
+ "terms": "vidriería, cristalero"
},
"craft/handicraft": {
- "name": "Artesanía",
- "terms": "artesanía, destreza manual, trabajos manuales"
+ "name": "Artesano",
+ "terms": "artesano, artesanía, destreza manual, trabajos manuales"
},
"craft/hvac": {
"name": "Aire acondicionado",
},
"highway/service/drive-through": {
"name": "Ventanilla de autoservicio",
- "terms": "Parada sin bajar del vehiculo"
+ "terms": "ventanilla, autoservicio, autobanco, autofarmacia"
},
"highway/service/driveway": {
- "name": "Vía privada de acceso",
- "terms": "calle, carril, pista, trayecto, avenida, carretera, vía de servicio, vía"
+ "name": "Vía privada de entrada",
+ "terms": "calle, carril, avenida, carretera, vía de servicio, entrada, privada, acceso, garaje"
},
"highway/service/emergency_access": {
"name": "Acceso de emergencia",
"terms": "cementerio, camposanto, tumbas"
},
"landuse/commercial": {
- "name": "Área Comercial",
- "terms": "Zona Comercial"
+ "name": "Área comercial",
+ "terms": "área comercial, comercio, negocio, tiendas"
},
"landuse/construction": {
"name": "Construcción",
},
"landuse/farm": {
"name": "Tierras de cultivo",
- "terms": "Tierras agrícolas, Tierras de labranza"
+ "terms": "tierras de cultivo, tierras agrícolas, tierras de labranza, terreno agrícola"
},
"landuse/farmland": {
"name": "Tierras de cultivo",
- "terms": "Tierras agrícolas, Tierras de labranza"
+ "terms": "tierras de cultivo, tierras agrícolas, tierras de labranza, terreno agrícola"
},
"landuse/farmyard": {
"name": "Edificio de granja",
"terms": "herbazal, pradera, pradería, prado, pasto, majada, monte, dehesa"
},
"landuse/industrial": {
- "name": "Área Industrial",
- "terms": "Zona Industrial"
+ "name": "Área industrial",
+ "terms": "área industrial, parque industrial, industria, fábrica"
},
"landuse/landfill": {
"name": "Vertedero",
"terms": "prado, pradera, campo, mies, braniza, braña"
},
"landuse/military": {
- "name": "Área Militar",
- "terms": "Zona Militar"
+ "name": "Área militar",
+ "terms": "área militar"
},
"landuse/orchard": {
"name": "Huerta",
"terms": "cantera, mina"
},
"landuse/residential": {
- "name": "Área Residencial",
- "terms": "Barrio Residencial"
+ "name": "Área residencial",
+ "terms": "área residencial"
},
"landuse/retail": {
- "name": "Área Comercial",
- "terms": "Zona Comercial"
+ "name": "Área comercial",
+ "terms": "área comercial, comercio, negocio, tienda"
},
"landuse/vineyard": {
"name": "Viñedo",
},
"leisure/playground": {
"name": "Parque infantil",
- "terms": "parque infantil, columpios, zona de juegos, juegos, niños"
+ "terms": "parque infantil, jardín infantil, área de juegos, zona de juegos, juegos, infantil, niños, niñas"
},
"leisure/running_track": {
"name": "Pista de atletismo",
"name": "Faro",
"terms": "faro, fanal"
},
+ "man_made/mast": {
+ "name": "Mástil de radio",
+ "terms": "mástil, torre, estructura, radio, telefonía, telecomunicación"
+ },
"man_made/observation": {
"name": "Torre de Observación",
"terms": "Torre de observación"
},
+ "man_made/petroleum_well": {
+ "name": "Pozo de petróleo",
+ "terms": "pozo, petróleo, aceite"
+ },
"man_made/pier": {
"name": "Embarcadero",
"terms": "Pilote, Embarcadero"
"name": "Tubería",
"terms": "tubería, cañería, caño, conducto, red"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "silo"
+ },
+ "man_made/storage_tank": {
+ "name": "Tanque de Almacenamiento",
+ "terms": "tanque"
+ },
"man_made/survey_point": {
"name": "Punto geodésico",
"terms": "Vértice geodésico"
"name": "Ciudad",
"terms": "urbe, capital, metrópoli, ciudad, núcleo urbano, localidad, villa"
},
+ "place/farm": {
+ "name": "Granja",
+ "terms": "granja, rancho, hacienda, finca, estancia, chacra"
+ },
"place/hamlet": {
"name": "Aldea",
"terms": "aldea, caserío, poblado, pueblo, aldehuela, aldeorrio, villorrio, localidad, barrio, vecindario"
"name": "Relación",
"terms": "Relación, Vínculo, Asociación"
},
+ "roundabout": {
+ "name": "Rotonda",
+ "terms": " rotonda, glorieta, óvalo, redoma, redondel"
+ },
"route/ferry": {
"name": "Ruta de ferry",
"terms": "ruta, ferry, transbordador, lancha, embarcación"
"terms": "sonido, hifi, alta fidelidad, electrónica, altavoz, amplificador, tienda, almacén, negocio"
},
"shop/houseware": {
- "name": "Tienda de Artículos para el Hogar ",
- "terms": "Tienda de Electrodomésticos"
+ "name": "Tienda de artículos del hogar ",
+ "terms": "artículos del hogar, enseres del hogar, hogar, casa, almacén, comercio, negocio, tienda"
},
"shop/interior_decoration": {
"name": "Tienda de decoración de interiores",
"name": "Desagüe",
"terms": "Desagüe, Sumidero"
},
+ "waterway/fuel": {
+ "name": "Estación de combustible marino",
+ "terms": "estación, combustible, carburante, gasolina, mar, río, fluvial, marino"
+ },
"waterway/river": {
"name": "Río",
"terms": "río, torrente, arroyo, torrentera, riachuelo, riacho, afluente, regato"
"name": "Ribera de río",
"terms": "borde, orilla, ribazo, riba, ribera"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Desecho de inodoro marino",
+ "terms": "desecho, inodoro, taza, letrina, servicio, baño, aseo, lavabo, mar, río, fluvial, marino"
+ },
"waterway/stream": {
"name": "Arroyo",
"terms": "torrente, riachuelo, arroyuelo, regato, reguero, torrentera, rivera, corriente, afluente, brazo, toma, río, arroyo"
"browse": {
"title": "Sirvi",
"description": "Nihuta ja suumi kaarti."
+ },
+ "draw_area": {
+ "tail": "Alale punkti lisamiseks tee klikk. Ala lõpetamiseks tee klikk ala esimesele punktile."
+ },
+ "draw_line": {
+ "tail": "Joonele punktide lisamiseks tee hiirega klikk. Tee klikk teiste joonte peale, et jooni ühendada ja topeltklikk, et joont lõpetada."
}
},
"operations": {
"key": "A",
"title": "Jätka",
"description": "Jätka seda joont.",
+ "not_eligible": "Joont ei saa siit jätkata.",
+ "multiple": "Siit saab jätkata mitut joont. Joone valimiseks hoia all Shift klahvi ja tee klikk joonele.",
"annotation": {
"line": "Joon jätkatud.",
"area": "Ala jätkatud."
"line": "Joon tehtud ringikujuliseks.",
"area": "Ala tehtud ringikujuliseks."
},
- "not_closed": "Seda ei saa teha ringikujuliseks kuna see ei ole silmus."
+ "not_closed": "Seda ei saa teha ringikujuliseks kuna see ei ole silmus.",
+ "too_large": "Seda ei saa teha ringikujuliseks, kuna see ei ole täielikult nähtaval.",
+ "connected_to_hidden": "Seda ei saa teha ringikujuliseks, kuna see on ühendatud peidetud objektiga."
},
"orthogonalize": {
"title": "Nurgad täisnurkseks",
"line": "Joone nurgad täisnurgastatud.",
"area": "Ala nurgad täisnurgastatud."
},
- "not_squarish": "Seda ei saa teha täisnurkseks kuna see ei ole nurgeline."
+ "not_squarish": "Seda ei saa teha täisnurkseks kuna see ei ole nurgeline.",
+ "too_large": "Seda ei saa teha täisnurkseks, kuna see ei ole täielikult nähtaval.",
+ "connected_to_hidden": "Seda ei saa teha täisnurkseks, kuna see on ühendatud peidetud objektiga."
},
"straighten": {
"title": "Tee sirgeks",
"description": "Tee see joon sirgeks.",
"key": "S",
"annotation": "Joon tehti sirgeks.",
- "too_bendy": "Seda ei saa sirgeks teha kuna see painduks liiga palju."
+ "too_bendy": "Seda ei saa sirgeks teha kuna see painduks liiga palju.",
+ "connected_to_hidden": "Seda ei saa teha sirgeks, kuna see on ühendatud peidetud objektiga."
},
"delete": {
"title": "Kustuta",
+ "description": "Kustuta objekt lõplikult.",
"annotation": {
"point": "Punkt kustutatud.",
"vertex": "Punkt kustutatud joonelt.",
"area": "Ala kustutatud.",
"relation": "Seos kustutatud.",
"multiple": "{n} objekti kustutatud."
- }
+ },
+ "incomplete_relation": "Seda objekti ei saa kustutada, kuna see ei ole täielikult laetud.",
+ "part_of_relation": "Seda objekti ei saa kustutada, kuna ta on osa suuremast relatsioonist. Sa pead eelnevalt selle relatsioonist eemaldama.",
+ "connected_to_hidden": "Seda ei saa kustutada, kuna see on ühendatud peidetud objektiga."
},
"add_member": {
"annotation": "Lisatud relatsiooni liige."
"title": "Ühenda lahti",
"description": "Ühenda need jooned/alad üksteisest lahti.",
"key": "D",
- "annotation": "Lahtiühendatud jooned/alad."
+ "annotation": "Lahtiühendatud jooned/alad.",
+ "not_connected": "Siin pole piisavalt jooni/alasid lahtiühendamiseks.",
+ "connected_to_hidden": "Seda ei saa lahti ühendada, kuna see on ühendatud peidetud objektiga."
},
"merge": {
"title": "Ühenda",
"key": "C",
"annotation": "{n} joont ühendatud.",
"not_eligible": "Neid objekte ei saa ühendada.",
- "not_adjacent": "Neid jooni ei saa ühendada kuna need ei ole üksteisega seotud."
+ "not_adjacent": "Neid jooni ei saa ühendada kuna need ei ole üksteisega seotud.",
+ "restriction": "Neid jooni ei saa ühendada, kuna vähemalt üks neist on \"{relation}\" relatsiooni osa.",
+ "incomplete_relation": "Neid objekte ei saa ühendada, kuna vähemalt üks neist ei ole täielikult laetud."
},
"move": {
"title": "Liiguta",
"description": "Liiguta see teise asukohta.",
"key": "M",
"annotation": {
- "point": "Punkt liigutatud.",
- "vertex": "Liigutatud Joone punkti.",
- "line": "Liigutatud joont.",
- "area": "Liigutatud ala.",
- "multiple": "Liigutatud mitut objekti."
- }
+ "point": "Punkt nihutatud.",
+ "vertex": "Nihutatud Joone punkti.",
+ "line": "Nihutatud joont.",
+ "area": "Nihutatud ala.",
+ "multiple": "Nihutatud mitut objekti."
+ },
+ "incomplete_relation": "Seda objekti ei saa nihutada, kuna ta pole täielikult laetud.",
+ "too_large": "Seda objekti ei saa nihutada, kuna see pole piisavalt nähtav.",
+ "connected_to_hidden": "Seda objekti ei saa nihutada, kuna ta on ühendatud peidetud objektiga."
},
"rotate": {
"title": "Pööra",
}
},
"reverse": {
- "title": "Pööra",
+ "title": "Pööra ümber",
"description": "Pööra tee vastassuunda.",
"key": "V",
"annotation": "Tee on pööratud."
"commit": {
"title": "Salvesta muudatused",
"description_placeholder": "Muudatuste lühikirjeldus",
- "message_label": "Salvestuse kommentaar",
"upload_explanation": "Su salvestatavad muudatused on nähtaval kõikidel kaartidel mis kasutavad OpenStreetMap-i andmeid.",
"upload_explanation_with_user": "Su kasutajana {user} salvestatavad muudatused on nähtaval kõikidel kaartidel, mis kasutavad OpenStreetMap-i andmeid.",
"save": "Salvesta",
"title": "Salvesta",
"help": "Salvesta muudatused OpenStreetMap'i, tehes need teistele kasutajatele nähtavaks.",
"no_changes": "Salvestamist vajavad muudatused puuduvad.",
- "error": "Salvestamisel ilmnes tõrge",
"uploading": "Muudatuste üleslaadimine OpenStreetMap'i.",
"unsaved_changes": "Sul on salvestamata muudatusi"
},
"fields": {
"access": {
"label": "Juurdepääs",
- "placeholder": "Teadmata",
- "types": {
- "access": "Üldine",
- "foot": "Jalg",
- "motor_vehicle": "Mootorsõidukid",
- "bicycle": "Jalgrattad",
- "horse": "Hobused"
- },
"options": {
- "yes": {
- "title": "Lubatud",
- "description": "Juurdepääs seaduse alusel; igameheõigus"
+ "designated": {
+ "title": "Määratud"
+ },
+ "destination": {
+ "title": "Sihtkoht"
},
"no": {
- "title": "Keelatud",
- "description": "Avalik juurdepääs puudub"
+ "description": "Avalik juurdepääs puudub",
+ "title": "Keelatud"
},
"permissive": {
- "title": "Soovituslik",
- "description": "Juurdepääs on lubatud ajani, mil omanik tühistab loa"
+ "description": "Juurdepääs on lubatud ajani, mil omanik tühistab loa",
+ "title": "Soovituslik"
},
"private": {
- "title": "Era",
- "description": "Juurdepääs lubatud ainult omaniku eriloal"
+ "description": "Juurdepääs lubatud ainult omaniku eriloal",
+ "title": "Era"
},
- "designated": {
- "title": "Määratud"
- },
- "destination": {
- "title": "Sihtkoht"
+ "yes": {
+ "description": "Juurdepääs seaduse alusel; igameheõigus",
+ "title": "Lubatud"
}
+ },
+ "placeholder": "Teadmata",
+ "types": {
+ "access": "Üldine",
+ "bicycle": "Jalgrattad",
+ "foot": "Jalg",
+ "horse": "Hobused",
+ "motor_vehicle": "Mootorsõidukid"
}
},
"access_simple": {
"address": {
"label": "Aadress",
"placeholders": {
+ "city": "Linn",
+ "country": "Riik",
"housename": "Maja nimetus",
"housenumber": "123",
- "street": "Tänav",
- "city": "Linn",
- "postcode": "Sihtnumber",
"place": "Koht",
- "country": "Riik"
+ "postcode": "Sihtnumber",
+ "street": "Tänav"
}
},
"aerialway/access": {
"clock_direction": {
"label": "Suund",
"options": {
- "clockwise": "Päripäeva",
- "anticlockwise": "Vastupäeva"
+ "anticlockwise": "Vastupäeva",
+ "clockwise": "Päripäeva"
}
},
"collection_times": {
},
"internet_access": {
"options": {
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Juhtmega",
- "terminal": "Terminal"
+ "wlan": "Wifi"
}
},
"lanes": {
"structure": {
"options": {
"bridge": "Sild",
- "tunnel": "Tunnel",
- "embankment": "Tamm"
+ "embankment": "Tamm",
+ "tunnel": "Tunnel"
}
},
"surface": {
"commit": {
"title": "ذخیره تغییرات",
"description_placeholder": "شرح مختصری از کمک های شما",
- "message_label": "پیام تعهد",
"upload_explanation": "تغییراتی که بارگذاری میکنید در همه ی نقشه هایی که از داده های OpenStreetMap استفاده میکنند پدیدار میشوند.",
"upload_explanation_with_user": "تفییراتی که شما به عنوان {user} بارگذاری میکنید در همه ی نقشه هایی که از داده های OpenStreetMap استفاده میکنند پدیدار میشوند.",
"save": "ذخیره",
"cancel": "لغو",
+ "changes": "{count} تغییر",
"warnings": "اخطارها",
"modified": "اصلاح شد",
"deleted": "حذف شد",
"incomplete": "<دانلود نشده>",
"feature_list": "جستجوی ویژگی ها",
"edit": "ویرایش ویژگی",
+ "check": {
+ "yes": "بله",
+ "no": "خیر"
+ },
"none": "هیچ",
"node": "گره",
"way": "راه",
"fix_misalignment": "تعمیر تراز",
"reset": "باز نشاندن"
},
+ "map_data": {
+ "title": "نقشه داده",
+ "description": "نقشه داده",
+ "data_layers": "لایها داده ها"
+ },
+ "feature": {
+ "points": {
+ "description": "نقاط"
+ },
+ "paths": {
+ "description": "مسیرها"
+ },
+ "buildings": {
+ "description": "ساختمانها"
+ },
+ "boundaries": {
+ "description": "مرزها"
+ },
+ "rail": {
+ "tooltip": "راه آهن"
+ }
+ },
"restore": {
"heading": "شما تغییرات ذخیره نشده دارید",
"description": "آیا مایلید تغییرات ذخیره نشده جلسه قبل را بازیابی کنید؟",
"title": "ذخیره",
"help": "ذخیره تغییرات در OpenStreetMap, آنها را برای دیگران قابل نمایش می سازد.",
"no_changes": "تغییراتی برای دخیره نیست.",
- "error": "هنگام تلاش برای ذخیره خطایی رخ داده است",
"uploading": "در حال بارگذاری تغییرات در OpenStreetMap.",
- "unsaved_changes": "شما تغییرات ذخیره نشده دارید"
+ "unsaved_changes": "شما تغییرات ذخیره نشده دارید",
+ "conflict": {
+ "previous": "قبلی >",
+ "next": "< بعد"
+ }
},
"success": {
"edited_osm": "OSMویرایش شد!",
"help_html": "تغییرات شما در نمای \"استاندارد\" در چند دقیقه قابل رؤیت است. سایر نما ها، و ویژگی های خاص، ممکن است بیشتر طول کشد\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>جزییات</a>).\n"
},
"confirm": {
- "okay": "باشه"
+ "okay": "باشه",
+ "cancel": "لغو"
},
"splash": {
"welcome": "به ویرایشگر ID OpenStreetMap خوش آمدید",
"fields": {
"access": {
"label": "دسترسي",
- "placeholder": "ناشناخته",
- "types": {
- "access": "عمومی",
- "foot": "پیاده",
- "motor_vehicle": "وسایل نقلیه موتوری",
- "bicycle": "دوچرخه ها",
- "horse": "اسب ها"
- },
"options": {
- "yes": {
- "title": "مجاز",
- "description": "دسترسی مجاز طبق قانون: حق از راه"
+ "designated": {
+ "description": "دسترسی با توجه به علائم و قوانین محلی مجاز است",
+ "title": "تعیین شده"
+ },
+ "destination": {
+ "description": "دسترسی فقط برای رسیدن به مقصدی مجاز است",
+ "title": "مقصد"
},
"no": {
- "title": "ممنوع",
- "description": "دسترسی برای عموم مردم مجاز نیست"
+ "description": "دسترسی برای عموم مردم مجاز نیست",
+ "title": "ممنوع"
},
"permissive": {
- "title": "مجاز",
- "description": "دسترسی تا وقتی صاحبش مجوز را لغو نکند مجاز است"
+ "description": "دسترسی تا وقتی صاحبش مجوز را لغو نکند مجاز است",
+ "title": "مجاز"
},
"private": {
- "title": "خصوصی",
- "description": "دسترسی فقط با اجازه از صاحب بصورت انفرادی مجاز است"
- },
- "designated": {
- "title": "تعیین شده",
- "description": "دسترسی با توجه به علائم و قوانین محلی مجاز است"
+ "description": "دسترسی فقط با اجازه از صاحب بصورت انفرادی مجاز است",
+ "title": "خصوصی"
},
- "destination": {
- "title": "مقصد",
- "description": "دسترسی فقط برای رسیدن به مقصدی مجاز است"
+ "yes": {
+ "description": "دسترسی مجاز طبق قانون: حق از راه",
+ "title": "مجاز"
}
+ },
+ "placeholder": "ناشناخته",
+ "types": {
+ "access": "عمومی",
+ "bicycle": "دوچرخه ها",
+ "foot": "پیاده",
+ "horse": "اسب ها",
+ "motor_vehicle": "وسایل نقلیه موتوری"
}
},
"access_simple": {
"address": {
"label": "ادرس",
"placeholders": {
- "street": "خيابان",
- "city": "شهر"
+ "city": "شهر",
+ "street": "خيابان"
}
},
"admin_level": {
"clock_direction": {
"label": "جهت",
"options": {
- "clockwise": "ساعتگرد",
- "anticlockwise": "پاد ساعتگرد"
+ "anticlockwise": "پاد ساعتگرد",
+ "clockwise": "ساعتگرد"
}
},
"collection_times": {
"internet_access": {
"label": "دسترسی اینترنت",
"options": {
- "wlan": "واي فاي",
+ "terminal": "پايانه",
"wired": "سيمي",
- "terminal": "پايانه"
+ "wlan": "واي فاي"
}
},
"landuse": {
},
"structure": {
"label": "ساختاری",
- "placeholder": "ناشناخته",
"options": {
"bridge": "پل",
- "tunnel": "تونل",
+ "cutting": "برش",
"embankment": "خاکریز",
- "cutting": "برش"
- }
+ "tunnel": "تونل"
+ },
+ "placeholder": "ناشناخته"
},
"studio_type": {
"label": "نوع"
"line": "Viiva pyöristettiin.",
"area": "Alue pyöristettiin."
},
- "not_closed": "Tätä ei voi tehdä ympyränmuotoiseksi, sillä sitä ei ole suljettu.",
- "too_large": "Tätä ei voi pyöristää koska se ei ole tarpeeksi näkyvissä."
+ "not_closed": "Tätä kohdetta ei voi pyöristää, sillä se ei ole suljettu alue.",
+ "too_large": "Tätä kohdetta ei voi pyöristää, sillä se ei ole tarpeeksi näkyvissä.",
+ "connected_to_hidden": "Tätä kohdetta ei voi pyöristää, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"orthogonalize": {
"title": "Muuta suorakulmaiseksi",
"line": "Viiva muutettu suorakulmaiseksi.",
"area": "Alue muutettu suorakulmaiseksi."
},
- "not_squarish": "Nelikulmion tekeminen epäonnistui, koska se ei ole neliömäinen.",
- "too_large": "Tätä ei voi tehdä suorakulmaiseksi, koska se ei ole tarpeeksi näkyvissä."
+ "not_squarish": "Tämän alueen kulmia ei voida muuttaa suorakulmaisiksi, sillä se on muodoltaan liian epäsäännöllinen.",
+ "too_large": "Tätä kohdetta ei voi tehdä suorakulmaiseksi, koska se ei ole tarpeeksi näkyvissä.",
+ "connected_to_hidden": "Tätä kohdetta ei voi tehdä suorakulmaiseksi, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"straighten": {
"title": "Suorista",
"description": "Suorista tämä viiva.",
"key": "S",
"annotation": "Viiva suoristettiin.",
- "too_bendy": "Oikaiseminen epäonnistui, koska se taipuu liian paljon."
+ "too_bendy": "Oikaiseminen epäonnistui, koska se taipuu liian paljon.",
+ "connected_to_hidden": "Tätä kohdetta ei voi suoristaa, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"delete": {
"title": "Poista",
"relation": "Relaatio poistettu.",
"multiple": "{n] kohdetta poistettu."
},
- "incomplete_relation": "Tätä ominaisuutta ei voi poistaa, sillä sitä ei ole ladattu kokonaan."
+ "incomplete_relation": "Tätä ominaisuutta ei voi poistaa, sillä sitä ei ole ladattu kokonaan.",
+ "part_of_relation": "Tätä kohdetta ei voi poistaa, sillä se on osana isompaa relaatiota. Poista ensin relaatiojäsenyys.",
+ "connected_to_hidden": "Tätä kohdetta ei voi poistaa, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"add_member": {
"annotation": "Osapuoli lisättiin relatioon."
"description": "Erota nämä viivat/alueet toisistaan.",
"key": "D",
"annotation": "Erotetut viivat/alueet.",
- "not_connected": "Ei riittävästi viivoja/alueita niiden erottamiseksi."
+ "not_connected": "Ei riittävästi viivoja/alueita niiden erottamiseksi.",
+ "connected_to_hidden": "Tätä kohdetta ei voi katkaista, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"merge": {
"title": "Sulauta yhteen",
"multiple": "Monta kohdetta siirretty."
},
"incomplete_relation": "Tätä ominaisuutta ei voi siirtää, sillä sitä ei ole ladattu kokonaan.",
- "too_large": "Tätä ei voi siirtää, koska sitä ei ole nykyisin riittävästi näkyvillä."
+ "too_large": "Tätä ei voi siirtää, koska sitä ei ole nykyisin riittävästi näkyvillä.",
+ "connected_to_hidden": "Tätä kohdetta ei voi siirtää, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"rotate": {
- "title": "Käännä",
- "description": "Käännä tätä kappaletta sen keskipisteen ympäri.",
+ "title": "Kierrä",
+ "description": "Kierrä tätä kappaletta sen keskipisteen ympäri.",
"key": "R",
"annotation": {
- "line": "Viiva käännetty.",
- "area": "Alue käännetty."
+ "line": "Viivaa kierretty.",
+ "area": "Aluetta kierretty."
},
- "too_large": "Tätä ei voi pyörittää, koska sitä ei ole nykyisin riittävästi näkyvillä."
+ "too_large": "Tätä ei voi kiertää, koska sitä ei ole nykyisin riittävästi näkyvillä.",
+ "connected_to_hidden": "Tätä kohdetta ei voi kiertää, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"reverse": {
"title": "Vaihda suuntaa",
- "description": "Muuta viivan suunta päinvastaiseksi.",
+ "description": "Muuta tämän viivan suunta päinvastaiseksi.",
"key": "V",
"annotation": "Viivan suunta vaihdettu."
},
"multiple": "Jaa {n} viivaa/aluiden reunaviivaa."
},
"not_eligible": "Viivoja ei voi jakaa alusta tai lopusta.",
- "multiple_ways": "Viivoja on liian monta jotta niitä voitaisiin jakaa osiin."
+ "multiple_ways": "Viivoja on liian monta jotta niitä voitaisiin jakaa osiin.",
+ "connected_to_hidden": "Tätä kohdetta ei voi jakaa, sillä se on yhdistetty piilotettuun karttakohteeseen."
},
"restriction": {
"help": {
"commit": {
"title": "Tallenna muutokset",
"description_placeholder": "Kuvaile lyhyesti karttaan tehtyjä muutoksia",
- "message_label": "Yhteenveto",
+ "message_label": "Muutossarjan kommentti",
"upload_explanation": "Palvelimelle lähetettävät muutokset tulevat pian näkyviin kaikkiin OpenStreetMap-kartta-aineistoa käyttäviin palveluihin.",
"upload_explanation_with_user": "Palvelimelle lähetetään muutokset käyttäjätunnisteella {user}. Muutokset tulevat pian näkyviin kaikkiin OpenStreetMap-kartta-aineistoa käyttäviin palveluihin.",
"save": "Tallenna",
"list": "Muokkaajat {users}",
"truncated_list": "Muokkaajat {users} ja {count} muuta"
},
+ "infobox": {
+ "selected": "{n} valittu",
+ "geometry": "Geometria",
+ "closed": "suljettu",
+ "length": "Pituus",
+ "location": "Sijainti",
+ "metric": "Metrinen järjestelmä",
+ "imperial": "Brittiläinen järjestelmä"
+ },
"geocoder": {
"search": "Etsi maailmanlaajuisesti...",
"no_results_visible": "Ei tuloksia näkyvällä kartalla",
"incomplete": "<ei ladattu>",
"feature_list": "Etsi ominaisuuksia",
"edit": "Muokkaa ominaisuutta",
+ "check": {
+ "yes": "Kyllä",
+ "no": "Ei"
+ },
"none": "Ei kohteita",
"node": "Noodi",
"way": "Tie",
"title": "Tausta",
"description": "Taustan asetukset",
"percent_brightness": "{opacity}% kirkkaus",
- "none": "Ei kohteita",
+ "none": "Ei taustaa",
"custom": "Mukautettu",
"custom_button": "Muokkaa omaa taustaa",
"custom_prompt": "Kirjoita tiilen verkko-osoitemallinne. Kelvollisia merkkejä ovat {z}, {x}, {y} Z/X/Y-skeemalle ja {u} quadtile-skeemalle.",
"title": "Karttatiedot",
"description": "Karttatiedot",
"data_layers": "Tietokerrokset",
- "map_features": "Karttaominaisuudet"
+ "fill_area": "Alueen taustatäyttö",
+ "map_features": "Karttaominaisuudet",
+ "autohidden": "Nämä kohteet ovat piilotettu automaattisesti, sillä ne sotkisivat karttanäkymää liikaa. Näytä ne suurentamalla karttaa."
},
"feature": {
"points": {
},
"major_roads": {
"description": "Päätiet",
- "tooltip": "Valtatiet, kadut, jne."
+ "tooltip": "Valtatiet, kadut jne."
},
"minor_roads": {
- "description": "Pienemmät tiet"
+ "description": "Pienemmät tiet",
+ "tooltip": "Huoltotiet, pysäköintialuetiet, polut jne."
},
"paths": {
- "description": "Polut"
+ "description": "Kevyenliikenteenväylät",
+ "tooltip": "Jalkakäytävät, kävely- ja pyörätiet jne."
},
"buildings": {
- "description": "Rakennukset"
+ "description": "Rakennukset",
+ "tooltip": "Rakennukset, katokset, autotallit jne."
+ },
+ "landuse": {
+ "description": "Maankäyttökohteet",
+ "tooltip": "Metsät, maatilat, puistot, asutus, kaupalliset alueet jne."
+ },
+ "boundaries": {
+ "description": "Rajat",
+ "tooltip": "Hallinnolliset rajat"
+ },
+ "water": {
+ "description": "Vesikohteet",
+ "tooltip": "Joet, järvet, lammet, lammikot jne."
},
"rail": {
+ "description": "Raidekohteet",
"tooltip": "Rautatiet"
},
+ "power": {
+ "description": "Voimalinjakohteet",
+ "tooltip": "Voimalinjat, muuntajat, sähköasemat, voimalaitokset jne."
+ },
+ "past_future": {
+ "description": "Mennyt/tuleva",
+ "tooltip": "Suunnitteilla, rakenteilla, hylätty, purettu jne."
+ },
"others": {
"description": "Muut",
"tooltip": "Kaikki muu"
}
},
+ "area_fill": {
+ "wireframe": {
+ "description": "Ei täyttöä (viivakehys)",
+ "tooltip": "Viivakehystäyttö helpottaa taustalla olevan ilmakuvan näkemistä."
+ },
+ "partial": {
+ "description": "Osittainen täyttö",
+ "tooltip": "Alueen taustatäyttö on käytössä vain sen ulkoreunan läheisyydessä (suositus aloittelijoille)."
+ },
+ "full": {
+ "description": "Täyttö kokonaan",
+ "tooltip": "Alueen taustatäyttö on käytössä koko alueen laajuudella."
+ }
+ },
"restore": {
"heading": "Kaikkia muutoksia ei ole tallennettu",
"description": "Haluatko palauttaa tallentamattomat muutokset edelliseltä muokkauskerralta?",
"title": "Tallenna",
"help": "Tallenna muutokset OpenStreetMapiin kaikkien käyttöön.",
"no_changes": "Ei tallennettavia muutoksia.",
- "error": "Tallennettaessa tapahtui virhe",
+ "error": "Tallenntamisen aikana ilmenneet virheet",
+ "status_code": "Palvelimen virhekoodi {code}",
+ "unknown_error_details": "Varmista, että Internet-yhteys on käytössä.",
"uploading": "Tallennetaan muutoksia OpenStreetMapiin...",
- "unsaved_changes": "Kaikkia muutoksia ei ole tallennettu"
+ "unsaved_changes": "Kaikkia muutoksia ei ole tallennettu",
+ "conflict": {
+ "header": "Ratkaise muokkausristiriidat",
+ "count": "Ristiriita {num}/{total}",
+ "previous": "< Edellinen",
+ "next": "Seuraava >",
+ "keep_local": "Säilytä minun",
+ "keep_remote": "Käytä muiden",
+ "restore": "Palauta",
+ "delete": "Poista pysyvästi",
+ "download_changes": "Vaihtoehtoisesti voit ladata omat muutoksesi.",
+ "done": "Kaikki ristiriidat on ratkaistu!",
+ "help": "Joku muu käyttäjä on muuttanut samaa karttakohdetta kuin sinä.\nNapsauta jokaista alapuolella olevan listan kohdetta, ja valitse jokaisen ristiriidan kohdalla\nhaluatko säilyttää omat vai toisen käyttäjän muutokset.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "{user} on poistanut tämän karttakohteen.",
+ "location": "Sekä sinä että {user} ovat siirtäneet tätä karttakohdetta.",
+ "nodelist": "Sekä sinä että {user} ovat muuttaneet pisteitä.",
+ "memberlist": "Sekä sinä että {user} ovat muuttaneet relaation jäseniä."
+ }
},
"success": {
"edited_osm": "OSM:ia muokattu!",
"help_html": "Karttaan tehdyt muutokset ilmestyvät perinteiseen karttanäkymään muutaman minuutin kuluessa. Tiettyjen ominaisuuksien ilmestyminen kartalle ja muutokset tiettyihin karttanäkymiin voivat viedä kauemmin\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>lisätietoja</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Peruuta"
},
"splash": {
"welcome": "Tervetuloa iD-kartanmuokkausohjelmaan",
"validations": {
"untagged_point": "Piste ilman tageja",
"untagged_line": "Viiva ilman tageja",
- "untagged_area": "Alue, jolla ei ole tageja",
+ "untagged_area": "Alue ilman tageja",
"many_deletions": "Haluatko varmasti poistaa {n} kohdetta? Kohteet poistetaan kaikkien näkyviltä OpenStreetMap-palvelussa.",
"tag_suggests_area": "Tagin {tag} mukaan viiva on alue, vaikka se ei sitä ole.",
"untagged_point_tooltip": "Valitse ominaisuustyyppi, joka kuvaa tämän pisteen tarkoitusta.",
"cannot_zoom": "Nykyisessä tilassa ei voi loitontaa enempää.",
"gpx": {
"local_layer": "Oma GPX-tiedosto",
- "drag_drop": "Vedä ja pudota GPX-tiedosto tähän tai selaa tiedostoja napsauttamalla oikean yläreunan painiketta",
+ "drag_drop": "Vedä ja pudota GPX-tiedosto tähän tai selaa tiedostoja napsauttamalla oikealla olevaa painiketta",
"zoom": "Lähennä GPX-reittiin",
"browse": "Selaa GPX-tiedostoja"
},
+ "mapillary": {
+ "tooltip": "Mapillaryn toimittamat katutasokuvat",
+ "title": "Kuvakerros (Mapillary)",
+ "view_on_mapillary": "Näytä tämä kuva Mapillary-palvelussa"
+ },
"help": {
"title": "Ohje",
- "help": "# Ohje\n\nTämä on ohjelma [OpenStreetMap-kartan](http://www.openstreetmap.org/)\nilmaisen ja muokattavan kartan muokkaamiseen. Voit käyttää ja \nmuokata sitä alueellasi vapaasti ja osallistua ihmisten tekemän\nmaailmankartan luomiseen.\n\nKarttaan tehtävät muutokset ovat näkyvillä kaikille\nOpenStreetMapin käyttäjille. Kartan muokkaaminen edellyttää\n[ilmaista OpenStreetMap-käyttäjätiliä](https://www.openstreetmap.org/user/new).\n\n[iD-muokkausohjelma](http://ideditor.com/) on yhteistyöprojekti, jonka [lähdekoodi\non saatavilla GitHubista](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Muokkaaminen ja tallentaminen\n\nTätä muokkausohjelmaa tulisi ensisijaisesti käyttää toimivalla\n Internet-yhteydellä, kuten nyt verkkoselaimella.\n\n### Karttakohteiden valitseminen\n\nValitse karttakohde, kuten tie tai ravintola napsauttamalla\nsitä kerran kartalla. Tällöin karttakohde korostetaan ja vasemmalle\navautuu kohteen muokkausnäkymä.\n\nValitse useita karttakohteita kerralla napsauttamalla niitä\nja pitämällä Shiht-näppäin pohjassapohjassa tai vetämällä kartalle valintaikkunan.\nKaikki valintaikkunan sisällä olevat kohteet valitaan.\n\n### Muokkausten tallentaminen\n\nKartalle tehtävät muutokset tallennetaan tietokoneelle,\nkunnes ne tallennetaan palvelimelle. Älä pelkää virheiden\ntekemistä - muutoksen voi perua napsauttamalla Kumoa ja tuoda\ntakaisin napsauttamalla Tee uudelleen\n\nTallenna kaikki karttaan tehdyt muutokset napsauttamalla\n\"Tallenna\" - tee näin säännöllisesti. Karttalaadun varmistamiseksi\niD varmistaa muutokset tyypillisten huolimattomuusvirheiden varalta\nja varoittaa, jos osa muutoksista edellyttää toimenpiteitä ennen tallennusta.\n\nJos huomautettavaa ei ole, lisää pieni kommentti tehdyistä muutoksista\nja tallenna muutokset palvelimelle napsauttamalla jälleen \"Tallenna\".\nMuutokset tulevat näkyviin [OpenStreetMap.orgiin](http://www.openstreetmap.org/), missä ne ovat\nkaikkien käyttäjien nähtävissä ja tarkasteltavissa.\n\nJos muutokset meinaavat jäädä kesken ja et halua vielä tallentaa niitä,\nvoit sulkea selainikkunan. Seuraavalla kerralla iD-muokkain\nmahdollistaa viime kerran muokkausten palauttamisten.\n",
+ "help": "# Ohje\n\nTämä on ohjelma vapaasti muokattavan \n[OpenStreetMap](http://www.openstreetmap.org/)-kartan\nmuokkaamiseen. Voit käyttää sitä vapaasti alueesi muokkaamiseen ja osallistua ihmisten tekemän \nmaailmankartan luomiseen.\n\nKarttaan tehtävät muutokset ovat näkyvillä kaikille OpenStreetMapin käyttäjille.\nKartan muokkaaminen edellyttää ilmaista [OpenStreetMap-käyttäjätiliä](https://www.openstreetmap.org/login).\n\n[iD-muokkausohjelma](http://ideditor.com/) on yhteistyöprojekti, jonka\n[lähdekoodi on saatavilla GitHubista](https://github.com/openstreetmap/iD).\n\n\n",
+ "editing_saving": "# Muokkaaminen ja tallentaminen\n\nTätä muokkausohjelmaa tulisi ensisijaisesti käyttää toimivalla\n Internet-yhteydellä, kuten nyt verkkoselaimella.\n\n### Karttakohteiden valitseminen\n\nValitse karttakohde, kuten tie tai ravintola napsauttamalla\nsitä kerran kartalla. Tällöin karttakohde korostetaan ja vasemmalle\navautuu kohteen muokkausnäkymä.\n\nValitse useita karttakohteita kerralla napsauttamalla niitä\nja pitämällä Shiht-näppäin pohjassapohjassa tai vetämällä kartalle valintaikkunan.\nKaikki valintaikkunan sisällä olevat kohteet valitaan.\n\n### Muokkausten tallentaminen\n\nKartalle tehtävät muutokset tallennetaan tietokoneelle,\nkunnes ne tallennetaan palvelimelle. Älä pelkää virheiden\ntekemistä - muutoksen voi perua napsauttamalla Kumoa ja tuoda\ntakaisin napsauttamalla Tee uudelleen.\n\nTallenna kaikki karttaan tehdyt muutokset napsauttamalla\n\"Tallenna\" - muista toimia näin säännöllisesti. Karttalaadun varmistamiseksi\niD tarkistaa muutokset tyypillisten huolimattomuusvirheiden varalta\nja varoittaa, jos osa muutoksista edellyttää toimenpiteitä ennen tallennusta.\n\nJos huomautettavaa ei ole, lisää pieni kommentti tehdyistä muutoksista\nja tallenna muutokset palvelimelle napsauttamalla jälleen \"Tallenna\".\nMuutokset tulevat näkyviin [OpenStreetMap.orgiin](http://www.openstreetmap.org/), missä ne ovat\nkaikkien käyttäjien nähtävissä ja tarkasteltavissa.\n\nJos muutokset meinaavat jäädä kesken ja et halua vielä tallentaa niitä,\nvoit sulkea selainikkunan. Seuraavalla kerralla iD-muokkain\nmahdollistaa viime kerran muokkausten palauttamisten.\n",
"roads": "# Tiet\n\nTällä muokkausohjelmalla voi lisätä, muokata ja poistaa teitä. Tie-sanalla\ntarkoitetaan kaikkia väyliä, kuten moottoriteitä, latuja, polkuja, pyöräteitä\nja monia muita.\n\n### Valitseminen\n\nValitse tie kartalta napsauttamalla sitä. Tien ulkoreuna korostuu, sen viereen\navautuu pikatoimintopalkki ja sivupalkkiin ilmestyy tien kohdemuokkain.\n\n### Siirtäminen ja muotoileminen\n\nKartalta voi löytää usein teitä, jotka eivät täsmää taustalla olevan ilmakuvan\ntai GPS-jäljen kanssa. Tällaiset tiet tulisi siirtää nopeasti oikealle paikalleen.\n\nAloita napsauttamalla siirrettävää tietä. Tien ulkoreunat korostuvat ja sen\nviivapisteet korostuvat. Tien muotoa voi muuttaa vetämällä viivapisteitä\nuusiin paikkoihin. Uuden viivapisteen voi luoda kaksoisnapsauttamalla\nmitä tahansa tien kohtaa, jossa ei jo ole viivapistettä.\n\nJos oikeassa maailmassa on kahden tien risteys, mutta ne eivät risteä\nkartalla, vedä joku viivapiste toiseen tiehen, jolloin niiden välille tulee\nristeys. Ei riitä, että tiet vain näyttävät risteävän kartalla, vaan niillä tulee\nolla yhteinen viivapiste. Tämä on erityisen tärkeää navigaattoreiden\nreititysohjelmistojen toimivuuden vuoksi.\n\nSiirrä koko tietä kerralla pikatoimintopalkin Siirrä-toiminnolla tai painamalla\nnäppäimistöstä M-näppäintä. Siirrä tie uudelle paikalleen ja lukitse siirto\nnapsauttamalla.\n\n### Poistaminen\n\nJos tie on täysin virheellinen - se esimerkiksi puuttuu satelliittikuvasta\nkokonaan tai se ei varmasti ole enää olemassa - se tulee poistaa\nkartalta. Mieti tarkkaan ennen karttakohteiden poistamispäätöstä -\nmuutos näkyy kartalla kaikille ja lisäksi satelliittikuvat ovat usein\nvanhentuneita, joten tie on jo voitu ehtiä rakentaa uudelleen.\n\nPoista tie valitsemalla se ja napsauttamalla sitten roskakorin\nkuvaketta tai napsauttamalla näppäimistön Delete-näppäintä.\n\n### Luominen\n\nPuuttuuko tie kartalta? Aloita tien piirtäminen napsauttamalla yläpalkista\nViiva tai paina pikanäppäintä `2` näppäimistöstä.\n\nNapsauta seuraavaksi tien lähtöpistettä. Jos tie lähtee jo kartalla olevan tien\nristeyksestä, napsauta risteyskohtaa.\n\nJatka napsauttelemalla tielle viivapisteitä säännöllisin välimatkoin\nseuraamalla ilmakuvaa tai GPS-jälkeä. Jos tie risteää jonkun muun tien kanssa, muodosta risteys napsauttamalla risteyskohtaa ja jatka taas normaaliin tapaan. Lopeta piirtäminen ja viimeistele tie\nkaksoisnapsauttamalla tai painamalla Enter-näppäintä. Peru tien piirtäminen ja poista tie painamalla näppäimistön askelpalautinta.\n",
+ "gps": "# GPS \n\nGPS-mittaukset ovat tärkein OpenStreetMapin aineiston lähde. Tämä \nmuokkausohjelma tukee omalta tietokoneeltasi ladattavia `.gpx`-tiedostoja. \nGPS-mittauksia voi tehdä useilla älypuhelinsovelluksilla ja tietysti myös erillisillä \nGPS-mittalaitteilla. \n\nLisätietoja GPS-mittausten tekemisestä on sivuilla [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/) ja [Aloittelijan opas](http://wiki.openstreetmap.org/wiki/Fi:Beginners_Guide_1.1).\n\nKäytä GPX-tiedostoa kartoittamisen apuna vetämällä ja pudottamalla tiedosto kartanmuokkausohjelmaan. Jos se toimii, GPS-jälki ilmestyy karttapohjalle \nkirkkaanviolettina viivana. Piilota, näytä uudelleen tai muuta tämän GPX-tason \nlähennystasoa Karttatiedot-valikosta oikeasta reunasta.\n\nTällä tavalla kartoittamisen apuna käytettyä GPX-tiedostoa ei tallenneta OpenStreetMapiin - tiedosto tulee hyödynnettyä parhaiten tallentamalla tiedosto myös muiden [karttakehittäjien käyttöön](http://www.openstreetmap.org/trace/create).\n",
"imagery": "# Ilmakuvat\n\nIlmakuvat ovat tärkeä kartoittamisen apuväline. Lentokuvien,\nsatelliittikuvien ja vapaasti koottujen materiaalien kokoelma on\nkäytettävissä Taustan asetukset -valikosta oikean reunan sivupalkista.\n\nOletuksena taustalla näytetään [Bing-karttojen](http://www.bing.com/maps/) satelliittikuvat,\nmutta karttaa lähentämällä vaihtoehtoja tulee lisää.\nJoissakin maissa, kuten Suomessa, Ranskassa ja Tanskassa\non saatavilla korkealaatuisia lentokoneesta kuvattuja ilmakuvia.\n\nIlmakuva voi näyttää virheelliseltä palveluntarjoajan sivuston\nvirheen vuoksi. Jos tiestön sijainti heittää ilmakuvasta, älä ala heti\nsiirtämään niitä vastaamaan taustakuvaa, vaan siirrä ilmakuvataustaa\nvastaamaan tiestöä asetuksella \"Korjaa ilmakuvavirhe\"\nTaustan asetusten alaosassa.\n",
"addresses": "# Osoitteet\n\nOsoitteet ovat yksi tärkeimmistä kartalla olevasta tiedosta.\n\nSen lisäksi että osoitetiedot ovat myös katujen nimiä,\nOpenStreetMapissa ne ovat olennaisia myös rakennusten\nja muiden kadunvarsikohteiden tiedoissa.\n\nOsoitetietoja voi katujen lisäksi lisätä rakennuksien ulkoreunoille\nja paikkapisteille. Paras osoitetietojen lähde on jalkautuminen tai\noma paikallistuntemus. Kuten kaikessa muussakin muokkaamisessa,\ntietojen kopioiminen kaupallisista lähteistä kuten Google Kartoista\non ehdottomasti kielletty.\n",
- "inspector": "# Kohdemuokkaimen käyttö\n\nKohdemuokkain on näytön vasemmassa reunassa oleva osio,\njolla muutetaan valitun kohteen ominaisuuksia.\n\n### Kohteen tyypin valitseminen\n\nPisteen, viivan tai alueen lisäämisen jälkeen tulee valita, millainen kohde\nse on - kuten kahvila, moottoritie, joki tai leikkipuisto. Kohdemuokkain\nnäyttää painikkeet yleisimmille kohteille. Jos kohde ei näy listalla, hae\npaikkaa hakusanalla ja valitse se sitten luettelosta. Haku ymmärtää myös\nsynonyymit ja englanninkieliset nimet, joten kokeile sitä rohkeasti.\n\nTarkastele kohdetyypin lisätietoja tarkemmin napsauttamalla i-kirjainta\nsen reunassa. Valitse kohdetyyppi muokattavalle kohteelle napsauttamalla.\n\n### Kohteen tagien muokkaaminen\n\nKun kohdetyyppi on valittu, kohdemuokkain näyttää tietokenttiä, joilla\nvoidaan kuvailla kohteen ominaisuuksia, kuten nimi ja osoite.\n\nKenttäjoukon alapuolella on rivi painikkeita, joilla voi avata lisäkenttiä,\nkuten [Wikipedia-sivun](http://fi.wikipedia.org/), esteettömyystiedot\nja paljon muuta.\n\nKohdemuokkaimen alaosassa on Kaikki tagit -kohta, jossa voi lisätä\nkohteelle mitä tahansa tageja eli ominaisuustietoja. [Taginfosta](http://taginfo.openstreetmap.org/)\nlöytää lisätietoja erilaisista tageista ja niiden käyttömahdollisuuksista.\n\nKohdemuokkaimella tehtävät muutokset päivittyvät muokkauskartalle.\nreaaliaikaisesti. Muutoksen voi kuitenkin aina perua napsauttamalla\nKumoa-painiketta.\n",
+ "inspector": "# Kohdemuokkaimen \nkäyttö\n\nKohdemuokkain on näytön vasemmassa reunassa oleva osio,\njolla muutetaan valitun kohteen ominaisuuksia.\n\n### Kohteen tyypin valitseminen\n\nPisteen, viivan tai alueen lisäämisen jälkeen valitaan, millainen kohde\non kyseessä - kuten kahvila, moottoritie, joki tai leikkipuisto. Kohdemuokkain\nnäyttää painikkeet yleisimmille kohteille. Jos kohde ei näy listalla, hae\npaikkaa hakusanalla ja valitse se sitten luettelosta. Haku ymmärtää myös\nsynonyymit ja paikkaan liittyviä sanoja, joten kokeile sitä rohkeasti.\n\nTarkastele kohdetyypin lisätietoja tarkemmin napsauttamalla i-kirjainta\nsen reunassa. Valitse kohdetyyppi muokattavalle kohteelle napsauttamalla sitä hakutuloslistassa.\n\n### Kohteen tagien muokkaaminen\n\nKun kohdetyyppi on valittu, kohdemuokkain näyttää tietokenttiä, joilla\nvoidaan kuvailla kohteen ominaisuuksia, kuten nimi ja osoite.\n\nKenttäjoukon alapuolella on rivi painikkeita, joilla voi avata lisätietokenttiä,\nkuten [Wikipedia-sivun](http://fi.wikipedia.org/), esteettömyystiedot\nja paljon muuta.\n\nKohdemuokkaimen alaosassa on Kaikki tagit -kohta, jossa voi lisätä\nkohteelle mitä tahansa tageja eli ominaisuustietoja. [Taginfosta](http://taginfo.openstreetmap.org/)\nlöytää lisätietoja erilaisista tageista ja niiden käyttömahdollisuuksista.\n\nKohdemuokkaimella tehtävät muutokset päivittyvät muokkauskartalle.\nreaaliaikaisesti. Muutoksen voi kuitenkin aina perua napsauttamalla\nKumoa-painiketta.\n",
"buildings": "# Rakennukset\n\nOpenStreetMap sisältää maailman laajimman rakennustietokannan.\nVoit osallistua tämän tietokannan luomiseen ja kehittämiseen.\n\n### Valitseminen\n\nValitse rakennus napsauttamalla sen seinää. Rakennus korostuu,\nrakennuksen viereen tulee pikatoiminto palkki ja rakennuksen\nmuokkausnäkymä avautuu.\n\n### Muokkaaminen\n\nJoskus rakennukset ovat väärin sijoitettuja tai niiden tiedot ovat virheellisiä.\n\nSiirrä rakennusta valitsemalla se ja napsauttamalla Muokkaa. Liikuta\nrakennusta hiirellä ja aseta se uudelle paikalleen napsauttamalla.\n\nMuuta rakennuksen muotoa napsauttamalla ja vetämällä\nsen rajojen pisteitä oikeille kohdille.\n\n### Piirtäminen\n\nYksi yleisimmistä rakennusten piirtämiseen liittyvistä kysymyksistä on se,\nettä OpenStreetMapissa rakennus voidaan piirtää tai merkitä vain pisteellä.\nNyrkkisääntö on, että rakennusten ulkomuodot tulisi aina pyrkiä piirtämään\nmahdollisimman tarkasti ja sijoittaa mahdolliset sisällä toimivat yritykset paikkapisteinä sen sisään.\n\nAloita rakennuksen piirtäminen napsauttamalla yläpalkista Alue.\nPeruuta piirtäminen painamalla näppäimistön askelpalautinta.\nViimeistele rakennus sulkemalla se napsauttamalla lähtöpistettä uudelleen.\n\n### Poistaminen\n\nJos rakennus on täysin virheellinen - se esimerkiksi puuttuu satelliittikuvasta\nkokonaan tai se ei varmasti ole enää olemassa - se tulee poistaa\nkartalta. Mieti tarkkaan ennen karttakohteiden poistamispäätöstä -\nmuutos näkyy kartalla kaikille ja lisäksi satelliittikuvat ovat usein\nvanhentuneita, joten rakennus on jo voitu ehtiä rakentaa uudelleen.\n\nPoista rakennus valitsemalla se ja napsauttamalla sitten roskakorin\nkuvaketta tai napsauttamalla näppäimistön Delete-näppäintä.\n",
"relations": "# Suhteet\n\nSuhde on erityistyyppinen OpenStreetMap-ominaisuus, joka ryhmittää yhteen muita\nominaisuuksia. Esimerkiksi kaksi yleistä suhdetyyppiä ovat *route relations*,\njotka ryhmittävät yhteen tienosat, jotka kuuluvat tiettyyn moottoritiehen tai\npäätiehen, ja *multipolygons*, jotka ryhmittävät yhteen useita viivoja, jotka määrittävät\nmutkikkaita alueita (sellaisia, joissa on useita kappaleita tai reikiä, kuten donitsissa).\n\nOminaisryhmää suhteessa kutsutaan *members*. Sivupalkissa voit nähdä\nminkä suhteiden jäsenenä ominaisuus on, ja napsauttaa suhdetta siellä\nsen valitsemiseksi. Kun suhde on valittu, voit nähdä kaikki sen jäsenet\nlueteltuina sivupalkissa ja korostettuna kartalla.\n\nEnimmäkseen iD huolehtii suhteiden ylläpidosta automaattisesti muokkauksen\naikana. Tärkein seikka, josta sinun pitäisi olla tietoinen, on että jos poistat\ntienpätkän piirtääksesi sen tarkempaa, sinun pitäisi varmistua, että uusi pätkä on\nsaman suhteen jäsen kuin alkuperäinen.\n\n## Suhteiden muokkaus\n\nJos haluat muokata suhteita, tässä ovat perusasiat.\n\nOminaisuuden lisäämiseksi suhteeseen, valitse ominaisuus, napsauta ”+”-painiketta\nsivupalkin ”All relations”-kappaleessa, ja valitse tai kirjoita suhteen nimi.\n\nUuden suhteen luomisesksi valitse ensin ominaisuus, jonka pitäisi olla jäsen,\nnapsauta ”+”-painiketta ”All relations”-kappaleessa ja valitse ”New relation...”.\n\nOminaisuuden poistamiseksi suhteesta valitse ominaisuus ja napsauta\nroskakoripainiketta sen suhteen vieressä, josta haluat sen poistaa.\n\nVoit luoda monikulmioita rei'illä käyttäen ”Merge”-työkalua. Piirrä kaksi aluetta (sisempi\nja ulompi), pidä Vaihto-näppäin alhaalla ja napsauta niistä kumpaakin molempien\nvalitsemiseksi, ja napsauta sitten ”Merge” (+)-painiketta.\n"
},
},
"areas": {
"title": "Alueet",
+ "add": "Alueet ovat tarkempia kuin pelkät viivat tai paikkapisteet. Ne soveltuvat esimerkiksi järvien, rakennusten ja asuinalueiden merkitsemiseen. **Luo uusi alue napsauttamalla Alue-painiketta.**",
"corner": "Alueet piirretään sijoittamalla (viiva)pisteitä sen reunoille eli \"aitaamalla\" piirrettävä alue. **Aloita alueen piirtäminen napsauttamalla leikkipuiston nurkkaa.**",
"place": "Piirrä alue napsauttamalla lisää viivapisteitä. Viimeistele alue napsauttamalla aloituspistettä uudelleen, jolloin alue sulkeutuu. **Piirrä leikkipuisto.**",
"search": "**Hae '{name}'.**",
"fields": {
"access": {
"label": "Käyttöoikeus",
- "placeholder": "Tuntematon",
- "types": {
- "access": "Yleinen",
- "foot": "Kävely",
- "motor_vehicle": "Moottoriajoneuvot",
- "bicycle": "Pyöräily",
- "horse": "Hevoset"
- },
"options": {
- "yes": {
- "title": "Sallittu",
- "description": "Laki sallii pääsyn alueelle"
+ "designated": {
+ "description": "Liikennemerkki, erityislaki tai muu vastaava sallii pääsyn",
+ "title": "Ilmoitettu"
+ },
+ "destination": {
+ "description": "Pääsy sallittu vain, jos kohde on alueella",
+ "title": "Läpikulku"
},
"no": {
- "title": "Kielletty",
- "description": "Ei pääsyä ilman erityislupaa"
+ "description": "Ei pääsyä ilman erityislupaa",
+ "title": "Kielletty"
},
"permissive": {
- "title": "Luvanvarainen",
- "description": "Pääsy sallittu, kunnes omistaja peruuttaa luvan"
+ "description": "Pääsy sallittu, kunnes omistaja peruuttaa luvan",
+ "title": "Luvanvarainen"
},
"private": {
- "title": "Yksityinen",
- "description": "Pääsy sallittu vain omistajan erityisluvalla"
+ "description": "Pääsy sallittu vain omistajan erityisluvalla",
+ "title": "Yksityinen"
},
- "designated": {
- "title": "Ilmoitettu",
- "description": "Liikennemerkki, erityislaki tai muu vastaava sallii pääsyn"
- },
- "destination": {
- "title": "Läpikulku",
- "description": "Pääsy sallittu vain, jos kohde on alueella"
+ "yes": {
+ "description": "Laki sallii pääsyn alueelle",
+ "title": "Sallittu"
}
+ },
+ "placeholder": "Tuntematon",
+ "types": {
+ "access": "Yleinen",
+ "bicycle": "Pyöräily",
+ "foot": "Kävely",
+ "horse": "Hevoset",
+ "motor_vehicle": "Moottoriajoneuvot"
}
},
"access_simple": {
+ "label": "Käyttöoikeus",
"placeholder": "kyllä"
},
+ "access_toilets": {
+ "label": "Käyttöoikeus"
+ },
"address": {
"label": "Osoite",
"placeholders": {
+ "city": "Paikkakunta",
+ "country": "Valtio",
+ "district": "Seutu",
"housename": "Talon nimi",
"housenumber": "123",
- "street": "Kadunnimi",
- "city": "Paikkakunta",
- "postcode": "Postinumero",
"place": "Paikka",
- "suburb": "Lähiö",
- "subdistrict": "Aliseutu",
- "district": "Seutu",
+ "postcode": "Postinumero",
"province": "Maakunta",
"state": "Osavaltio",
- "country": "Valtio"
+ "street": "Kadunnimi",
+ "subdistrict": "Aliseutu",
+ "suburb": "Lähiö"
}
},
"admin_level": {
"label": "Tyyppi"
},
"aerialway/access": {
- "label": "Käyttöoikeus"
+ "label": "Käyttöoikeus",
+ "options": {
+ "both": "Molemmat",
+ "entry": "Sisäänkäynti",
+ "exit": "Uloskäynti"
+ }
},
"aerialway/bubble": {
"label": "Tuulisuoja"
"placeholder": "2, 4, 8..."
},
"aerialway/summer/access": {
- "label": "Käyttöoikeus kesällä"
+ "label": "Käyttöoikeus kesällä",
+ "options": {
+ "both": "Molemmat",
+ "entry": "Sisäänkäynti",
+ "exit": "Uloskäynti"
+ }
},
"aeroway": {
"label": "Tyyppi"
"boundary": {
"label": "Tyyppi"
},
+ "brand": {
+ "label": "Brändi"
+ },
"building": {
"label": "Rakennus"
},
"cardinal_direction": {
"label": "Suunta",
"options": {
- "N": "Pohjoinen",
"E": "Itä",
- "S": "Etelä",
- "W": "Länsi",
+ "ENE": "Itä-koillinen",
+ "ESE": "Itä-kaakko",
+ "N": "Pohjoinen",
"NE": "Koillinen",
+ "NNE": "Pohjois-koillinen",
+ "NNW": "Pohjois-luode",
+ "NW": "Luode",
+ "S": "Etelä",
"SE": "Kaakko",
+ "SSE": "Etelä-kaakko",
+ "SSW": "Etelä-lounas",
"SW": "Lounas",
- "NW": "Luode",
- "WSW": "Länsilounas",
- "WNW": "Länsiluode"
+ "W": "Länsi",
+ "WNW": "Länsiluode",
+ "WSW": "Länsilounas"
}
},
"clock_direction": {
"label": "Suunta",
"options": {
- "clockwise": "Myötäpäivään",
- "anticlockwise": "Vastapäivään"
+ "anticlockwise": "Vastapäivään",
+ "clockwise": "Myötäpäivään"
}
},
"collection_times": {
"craft": {
"label": "Tyyppi"
},
+ "crop": {
+ "label": "Rajaa"
+ },
"crossing": {
"label": "Tyyppi"
},
"cuisine": {
"label": "Ruokakulttuuri"
},
+ "delivery": {
+ "label": "Kotiinkuljetus"
+ },
"denomination": {
"label": "Suuntaus"
},
"denotation": {
- "label": "Esittäminen"
+ "label": "Merkittävyys"
},
"description": {
"label": "Kuvaus"
},
+ "drive_through": {
+ "label": "Autokaista"
+ },
"electrified": {
"label": "Sähköistys",
"options": {
- "contact_line": "Sähkojohtimet",
+ "contact_line": "Sähköjohtimet",
+ "no": "Ei",
"rail": "Sähkökisko",
- "yes": "Kyllä (määrittelemätön)",
- "no": "Ei"
- }
+ "yes": "Kyllä (tarkemmin määrittelemätön)"
+ },
+ "placeholder": "Sähköjohtimet, sähkökisko..."
},
"elevation": {
"label": "Korkeus"
"fire_hydrant/type": {
"label": "Tyyppi",
"options": {
- "wall": "Seinä",
- "pond": "Lampi"
+ "pillar": "Ilmajohto",
+ "pond": "Lampi",
+ "underground": "Maakaapeli",
+ "wall": "Seinä"
}
},
"fixme": {
"gauge": {
"label": "Raideväli"
},
+ "gender": {
+ "label": "Sukupuolirajoitus",
+ "options": {
+ "female": "Naiset",
+ "male": "Miehet",
+ "unisex": "Sukupuolirajoitukseton"
+ },
+ "placeholder": "Ei tiedossa"
+ },
"generator/method": {
"label": "Metodi"
},
"label": "Tyypp"
},
"hoops": {
+ "label": "Koritelineet",
"placeholder": "1, 2, 4..."
},
"iata": {
"incline": {
"label": "Kaltevuus"
},
+ "incline_steps": {
+ "label": "Kulkusuunta",
+ "options": {
+ "down": "Alas",
+ "up": "Ylös"
+ }
+ },
"information": {
"label": "Tyyppi"
},
"internet_access": {
"label": "Internet-yhteys",
"options": {
- "yes": "Kyllä",
"no": "Ei",
- "wlan": "WLAN",
+ "terminal": "Terminaali",
"wired": "Ethernet-yhteys",
- "terminal": "Terminaali"
+ "wlan": "WLAN",
+ "yes": "Kyllä"
}
},
"lamp_type": {
"layer": {
"label": "Kerros"
},
+ "leaf_cycle": {
+ "label": "Lehtien pudotuskierto",
+ "options": {
+ "deciduous": "Pudottaa kaikki lehtensä",
+ "evergreen": "Ei pudota lehtiä",
+ "mixed": "Sekoitus",
+ "semi_deciduous": "Pudottaa kaikki lehtensä hyvin lyhyeksi ajaksi",
+ "semi_evergreen": "Pudottaa suurimman osan lehdistään"
+ }
+ },
+ "leaf_type": {
+ "label": "Lehtilajike",
+ "options": {
+ "broadleaved": "Leveälehtinen",
+ "leafless": "Lehdetön",
+ "mixed": "Sekoitus",
+ "needleleaved": "Neulaset"
+ }
+ },
"leisure": {
"label": "Tyyppi"
},
},
"mtb/scale": {
"label": "Maastopyöräilyn haastavuus",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Tasainen sora/pakattu maa-aines, ei esteitä, laajakaariset käännökset",
"1": "1: Hieman irtomaata, pieniä esteitä, laajakaariset käännökset",
"4": "4: Irtomaapäällyste tai -kalliot, vaarralliset käännökset",
"5": "5: Vaikein mahdollinen, kivikkoa, jyrkänteitä",
"6": "6: Ei ajokelpoinen huippuammattilaisia lukuunottamatta"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBA-polkuluokitus",
- "placeholder": "Helppo, keskivaikea, Vaikea...",
"options": {
"0": "Helpoin (valkoinen ympyrä)",
"1": "Helppo (vihreä ympyrä)",
"2": "Keskivaikea (sininen nelikulmio)",
"3": "Vaikea (musta vinoneliö)",
"4": "Äärimmäisen vaikea (kaksinkertainen musta vinoneliö)"
- }
+ },
+ "placeholder": "Helppo, keskivaikea, Vaikea..."
},
"mtb/scale/uphill": {
"label": "Ylämäkipyöräilyn haastavuus",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Nousu keskimäärin <10%, sorapohja, ei esteitä",
"1": "1: Nousu keskimäärin <15%, sorapohja, satunnaisia pieniä esteitä",
"3": "3: Nousu keskimäärin <25%, vaihteleva pinta, kiviä, runsasta juurikkoa",
"4": "4: Nousu keskimäärin <30%, huonokuntoinen, suuria kiviä ja erittäin runsasta juurikkoa",
"5": "5: Todella jyrkkä, pyörän taluttaminen tai kantaminen suositeltavaa"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nimi",
"oneway": {
"label": "Yksisuuntaisuus",
"options": {
+ "no": "Ei",
"undefined": "Oletettavasti ei",
- "yes": "Kyllä",
- "no": "Ei"
+ "yes": "Kyllä"
}
},
"oneway_yes": {
"label": "Yksisuuntaisuus",
"options": {
+ "no": "Ei",
"undefined": "Oletettavasti kyllä",
- "yes": "Kyllä",
- "no": "Ei"
+ "yes": "Kyllä"
}
},
"opening_hours": {
"parking": {
"label": "Tyyppi",
"options": {
- "surface": "Pinta"
+ "carports": "Autokatos",
+ "garage_boxes": "Autotallipaikka",
+ "lane": "Kadunvarren pysäköintikaista",
+ "multi-storey": "Monikerroksinen",
+ "sheds": "Metallikatos",
+ "surface": "Pysäköintikenttä",
+ "underground": "Maanalainen"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Haastavuus",
- "placeholder": "Helppo, keskivaikea, vaikea...",
"options": {
- "novice": "Vasta-alkaja (ohjeellinen)",
- "easy": "Erittäin helppo (vihreä ympyrä)",
- "intermediate": "Helppo (sininen neliö)",
"advanced": "Keskivaikea (punainen timantti)",
+ "easy": "Erittäin helppo (vihreä ympyrä)",
"expert": "Vaikea (musta timantti)",
+ "extreme": "Extreme (edellyttää kiipeilyvarusteet)",
"freeride": "Merkitsemätön (off-rinne)",
- "extreme": "Extreme (edellyttää kiipeilyvarusteet)"
- }
+ "intermediate": "Helppo (sininen neliö)",
+ "novice": "Vasta-alkaja (ohjeellinen)"
+ },
+ "placeholder": "Helppo, keskivaikea, vaikea..."
},
"piste/grooming": {
"label": "Rinne/latupohja",
"options": {
- "classic": "Tasainen",
- "mogul": "Kumpare",
"backcountry": "Maaseutuhiihto",
+ "classic": "Tasainen",
"classic+skating": "Perinteinen ja vapaa hiihtotyyli",
+ "mogul": "Kumpare",
"scooter": "Lumikelkka",
- "skating": "Luistelu"
+ "skating": "Vapaa hiihtotyyli"
}
},
"piste/type": {
"label": "Tyyppi",
"options": {
"downhill": "Laskettelu",
+ "hike": "Vaeltaminen",
+ "ice_skate": "Luistelu",
"nordic": "Murtomaahiihto",
- "playground": "Leikkipuisto"
+ "playground": "Leikkipuisto",
+ "skitour": "Erämaahiihto",
+ "sled": "Pulkkamäki/kelkkailu",
+ "sleigh": "Hevos- tai koiravetoinen reki",
+ "snow_park": "Lumihuvipuisto"
}
},
"place": {
},
"sac_scale": {
"label": "Patikointireitin vaikeustaso",
- "placeholder": "Vuoristopatikointi, alppipatikointi...",
"options": {
- "hiking": "T1: Patikointi",
- "mountain_hiking": "T2: Vuoristopatikointi",
- "demanding_mountain_hiking": "T3: Vaativa vuoristopatikointi",
"alpine_hiking": "T4: Alppipatikointi",
"demanding_alpine_hiking": "T5: Vaativa alppipatikointi",
- "difficult_alpine_hiking": "T6: Vaikea alppipatikointi"
- }
+ "demanding_mountain_hiking": "T3: Vaativa vuoristopatikointi",
+ "difficult_alpine_hiking": "T6: Vaikea alppipatikointi",
+ "hiking": "T1: Patikointi",
+ "mountain_hiking": "T2: Vuoristopatikointi"
+ },
+ "placeholder": "Vuoristopatikointi, alppipatikointi..."
+ },
+ "sanitary_dump_station": {
+ "label": "Tyhjennystekniikka"
},
"seasonal": {
"label": "Kausiluonteisuus"
"service": {
"label": "Tyyppi"
},
+ "service/bicycle/chain_tool": {
+ "label": "Ketjutyökalu",
+ "options": {
+ "no": "Ei",
+ "undefined": "Oletettavasti ei",
+ "yes": "Kyllä"
+ }
+ },
+ "service/bicycle/pump": {
+ "label": "Rengaspainepumppu",
+ "options": {
+ "no": "Ei",
+ "undefined": "Oletettavasti ei",
+ "yes": "Kyllä"
+ }
+ },
+ "service_rail": {
+ "label": "Käyttötarkoitus",
+ "options": {
+ "crossover": "Raiteenvaihtoraide",
+ "siding": "Ohitusraide",
+ "spur": "Teollisuuden pistoraide",
+ "yard": "Ratapiharaide"
+ }
+ },
"shelter": {
"label": "Katos"
},
"label": "Viistetty reunakivi"
},
"smoking": {
- "label": "Tupakointi"
+ "label": "Tupakointi",
+ "options": {
+ "dedicated": "Erityisesti tupakoijille (esim. tupakointikerho)",
+ "isolated": "Eristetyillä tupakointialueilla",
+ "no": "Ei tupakointia lainkaan",
+ "outside": "Sallittu ulkona",
+ "separated": "Eristämättömillä tupakointialueilla",
+ "yes": "Sallittu kaikkialla"
+ },
+ "placeholder": "Ei, eristettynä, kyllä..."
+ },
+ "social_facility_for": {
+ "label": "Kohderyhmä",
+ "placeholder": "Kodittomat, vammaiset, lapset jne."
},
"source": {
"label": "Lähde"
"sport": {
"label": "Urheilulaji"
},
+ "sport_ice": {
+ "label": "Urheilulaji"
+ },
+ "sport_racing": {
+ "label": "Urheilulaji"
+ },
"structure": {
"label": "Rakenne",
- "placeholder": "Tuntematon",
"options": {
"bridge": "Silta",
- "tunnel": "Tunneli",
+ "cutting": "Kallioleikkaus",
"embankment": "Penger",
- "cutting": "Kallioleikkaus"
- }
+ "tunnel": "Tunneli"
+ },
+ "placeholder": "Tuntematon"
},
"studio_type": {
"label": "Tyyppi"
"tactile_paving": {
"label": "Huomioreuna näkövammaisille"
},
+ "takeaway": {
+ "label": "Noutoateria (takeaway)",
+ "options": {
+ "no": "Ei",
+ "only": "Vain noutoateriat",
+ "yes": "Kyllä"
+ },
+ "placeholder": "Kyllä, ei, vain noutoateriat..."
+ },
"toilets/disposal": {
"label": "Tyhjennystekniikka",
"options": {
+ "chemical": "Kemikaalinen",
"flush": "Huuhtelu",
- "pitlatrine": "Peittoaines",
- "chemical": "Kemikaalinen"
+ "pitlatrine": "Peittoaines"
}
},
"tourism": {
},
"trail_visibility": {
"label": "Havaittavuus",
- "placeholder": "Erinomainen, hyvä, huono...",
"options": {
+ "bad": "Huono: ei viitoitusta, polku on satunnaisesti heikosti havaittavissa/puuttuu kokonaan",
"excellent": "Erinomainen: selkeästi erottuva tai viitoitettu polku",
"good": "Hyvä: viitoitettu hyvin, vaatii satunnaisesti polun hakemista",
- "intermediate": "Keskinkertainen: viitoitettu satunnaisesti, polku pääosin näkyvissä",
- "bad": "Huono: ei viitoitusta, polku on satunnaisesti heikosti havaittavissa/puuttuu kokonaan",
"horrible": "Surkea: pääosin ei polkua ollenkaan, suunnistustaidot välttämättömiä",
+ "intermediate": "Keskinkertainen: viitoitettu satunnaisesti, polku pääosin näkyvissä",
"no": "Ei: ei minkäänlaista polkua, edistyneet suunnistustaidot välttämättömiä"
- }
+ },
+ "placeholder": "Erinomainen, hyvä, huono..."
},
"trees": {
"label": "Puut"
"name": "Köysirata"
},
"aerialway/chair_lift": {
- "name": "Tuolihissi"
+ "name": "Tuolihissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, penkki, tuoli, istuin"
},
"aerialway/gondola": {
- "name": "Gondolihissi"
+ "name": "Gondolihissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, gondoli, koppi, koppihissi"
},
"aerialway/magic_carpet": {
- "name": "Mattohissi"
+ "name": "Mattohissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, liukuhihna, hihna, hihnahissi, liukuhihnahissi"
},
"aerialway/platter": {
- "name": "Sompahissi"
+ "name": "Sompahissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, sompa, tutti, tuttihissi"
},
"aerialway/pylon": {
"name": "Ilmaradan pylväs"
},
"aerialway/rope_tow": {
- "name": "Naruhissi"
+ "name": "Naruhissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, naru, köysi, köysihissi"
},
"aerialway/station": {
"name": "Ilmarata-asema"
},
"aerialway/t-bar": {
- "name": "Ankkurihissi"
+ "name": "Ankkurihissi",
+ "terms": "hissi, hiihtohissi, lasketteluhissi, laskettelu, ankkuri, parihissi"
},
"aeroway": {
"name": "Kiitorata",
"name": "Pyörävuokraamo",
"terms": "pyörävuokraamo, kaupunkipyörä, pyöränvuokraus, pyörän vuokraus, polkupyörävuokraamo, polkupyörän vuokraus, polkupyöränvuokraus, polkupyörä, pyörä"
},
+ "amenity/bicycle_repair_station": {
+ "name": "Pyöränhuoltopiste",
+ "terms": "polkupyörä, pyörä, pyöräily, polkupyöräily, huolto, pyörän, polkupyörän, pyöräilyhuolto, pyörähuolto, pikahuolto, korjaus, pyöräkorjaus, pyöränkorjaus, pyöränhuolto, rengaspaine, rengaspaineet, renkaanpaine, renkaanpaineet, ilma, ilmanpumppaus, ilmantäyttö, paineistus"
+ },
"amenity/boat_rental": {
"name": "Venevuokraamo",
"terms": "vene, laiva, paatti, jolla, veneenvuokraus, venevuokra, vuokra, venevuokraus, venevuokraamo, veneenvuokraamo"
"terms": "oikeustalo, käräjätalo, alioikeus, kihlakunnanoikeus, syyttäjäntalo, raastupa, käräjätuomari, syyttäjä, lautamies, käräjäoikeus"
},
"amenity/dentist": {
- "name": "hammaslääkäri"
+ "name": "Hammaslääkäriasema",
+ "terms": "hammaslääkäri, klinikka, hammasklinikka, hammas, hampaat, hammashoito, suuhygienia, suuhygienisti, sairaala, terveyskeskus, terveys, lääkäri, sairaus, suuterveys, suu"
},
"amenity/doctor": {
"name": "lääkäri"
"terms": "auto, parkki, parkkihalli, pysäköintialue, pysäköinti, parkki, parkkipaikka, pysäköintialue, parkkialue"
},
"amenity/parking_entrance": {
- "name": "Pysäköintihallin sisäänajo",
- "terms": "pysäköinti, parkkipaikka, pysäköintipaikka, parkki, pysäköintitalo, parkkitalo, ulosajo, sisäänajo, ajo, ulos, sisään"
+ "name": "Pysäköintihallin ajoramppi",
+ "terms": "pysäköinti, parkkipaikka, pysäköintipaikka, parkki, pysäköintitalo, parkkitalo, ulosajo, sisäänajo, ajo, ulos, sisään, ramppi"
},
"amenity/pharmacy": {
"name": "Apteekki",
"amenity/pub": {
"name": "Pubi"
},
+ "amenity/public_bookcase": {
+ "name": "Julkinen kirjahylly",
+ "terms": "avoin, kirja, kirjoja, kirjat, vapaa, kirjan, kirjanjakelupiste, kirjapiste, jako, jakaa, jakelu, ilmainen, kädestä käteen, kirjanvaihto"
+ },
"amenity/recycling": {
"name": "Kierrätyspiste",
"terms": "kierrättäminen, kierrätys, lajittelu, uudelleenkäyttö, uudelleenkäyttäminen, ympäristö, lajittelupiste, lajitteluasema, jäte, jätteet, roskat, roska, roskikset, roskis, säiliö, roskasäiliö"
"amenity/shelter": {
"name": "Katos"
},
+ "amenity/social_facility/food_bank": {
+ "name": "Ruokapankki"
+ },
+ "amenity/social_facility/group_home": {
+ "name": "Vanhainkoti",
+ "terms": "vanhus, eläkeläinen, palvelu, palvelutalo, palvelukoti, talo, koti, sosiaalipalvelu, sosiaalipalvelut, vanhukset, eläkeläiset"
+ },
"amenity/social_facility/homeless_shelter": {
"name": "Kodittomien turvakoti",
- "terms": "koditon, kodittomia, turvatalo, kodittomien"
+ "terms": "koditon, kodittomia, turvatalo, kodittomien, turvakoti"
},
"amenity/studio": {
"name": "Studio"
"terms": "Teatteri, Kaupunginteatteri, Kansallisteatteri"
},
"amenity/toilets": {
- "name": "WC"
+ "name": "WC",
+ "terms": "vessa, käymälä, saniteetti, saniteettitila, sanitaatio, pisuaari, pönttö, wc-istuin, wc-pönttö, pesuhuone, pesuallas, tarpeet, uloste, ulostaminen, virtsa, virtsaaminen"
},
"amenity/townhall": {
"name": "Kunnantalo",
"terms": "kunnantalo, kaupungintalo, valtuusto,"
},
+ "amenity/university": {
+ "name": "Yliopistoalue"
+ },
"amenity/vending_machine": {
"name": "Myyntiautomaatti",
"terms": "välipalamaatti, välipala-automaatti, välipala, ruokamaatti, ruoka-automaatti, juoma, juomia, juomamaatti, kahvikone, kahviautomaatti, kahvi, automaatti, myyntilaite, myyntipiste"
"building/bunker": {
"name": "Bunkkeri"
},
+ "building/cathedral": {
+ "name": "Katedraali"
+ },
+ "building/chapel": {
+ "name": "Kappeli"
+ },
"building/church": {
"name": "Kirkko"
},
+ "building/college": {
+ "name": "Korkeakoulurakennus (college)"
+ },
"building/commercial": {
"name": "Kaupallinen rakennus"
},
"name": "Keskeneräinen rakennus",
"terms": "rakennus, rakennustyömaa, rakenteilla"
},
+ "building/detached": {
+ "name": "Omakotitalo"
+ },
+ "building/dormitory": {
+ "name": "Asuntola"
+ },
"building/entrance": {
"name": "Sisään- tai uloskäynti"
},
"name": "Suuri autotalli",
"terms": "ryhmäautotalli, joukkoautotalli, joukkotalli, ryhmätalli, autotalli"
},
+ "building/greenhouse": {
+ "name": "Kasvihuone"
+ },
"building/hospital": {
"name": "Sairaalarakennus"
},
"craft/clockmaker": {
"name": "Kelloseppä"
},
+ "craft/confectionery": {
+ "name": "Konditoria"
+ },
"craft/dressmaker": {
"name": "ompelija"
},
"name": "Lukkoseppä"
},
"craft/metal_construction": {
- "name": "metallirakennelma"
+ "name": "Metallirakennustelinemyymälä",
+ "terms": "rakennusteline, rakennus, rakentaminen, työmaa, rakennustyö, työmies, metalli, teline, työteline, työalusta, tikkaat, metalli, metallinen, metalliset, rautainen, rauta, rautaiset"
},
"craft/optician": {
"name": "optikko"
"terms": "saha, sahaamo, lauta, puu"
},
"craft/scaffolder": {
- "name": "rakennustelineasentaja"
+ "name": "Rakennustelineliike"
},
"craft/sculpter": {
"name": "Kuvanveistämö"
"craft/window_construction": {
"name": "Ikkunankorjaus"
},
+ "craft/winery": {
+ "name": "Viinitila",
+ "terms": "viini, viinipanimo, viinit, alkoholi, juoma, juominen, panimo, viininvalmistamo, viininpanimo, viinivalmistamo, viinitalo"
+ },
+ "embankment": {
+ "name": "Penger",
+ "terms": "maavalli, rantavalli, valli, pengerrys, pato"
+ },
"emergency/ambulance_station": {
"name": "Ambulanssiasema",
"terms": "ambulanssi, ambulanssit, hälytysajoneuvo, ambulanssihalli, ambulanssivarasto, ambulanssitalli, hälytysajoneuvohalli, hälytysajoneuvotalli, hälytysajoneuvovarasto"
"name": "Jalkakäytävä",
"terms": "jalkakäytävä, jalankulku"
},
+ "ford": {
+ "name": "Kahlauspaikka"
+ },
"golf/bunker": {
"name": "Hiekkaeste",
"terms": "bunker, bunkkeri, hiekkabunkkeri, hiekkakuoppa, golf"
"highway/primary_link": {
"name": "Kantatien ramppi"
},
+ "highway/raceway": {
+ "name": "Moottoriurheilurata"
+ },
"highway/residential": {
"name": "Asuinaluetie"
},
"name": "Kuja"
},
"highway/service/drive-through": {
- "name": "Läpiajo"
+ "name": "Autokaista"
},
"highway/service/driveway": {
"name": "Ajoväylä"
"name": "Tienvarsialttari",
"terms": "tienvarsi, kadunvarsi, varsi, tie, katu, rukoilupaikka, pyhättö, uskonnot, uskonto, kirkko, pyhä, uhripaikka, uhrauspaikka, uhrilahja"
},
+ "junction": {
+ "name": "Risteys"
+ },
"landuse": {
"name": "Maankäyttö"
},
"name": "Hautausmaa",
"terms": "hautaaminen, vainaja, kuollut, ruumis, hautuumaa, hautaus, hauta, haudat"
},
+ "landuse/commercial": {
+ "name": "Liiketoiminta-alue"
+ },
"landuse/construction": {
- "name": "Rakennustyömaa"
+ "name": "Rakennustyömaa",
+ "terms": "rakennustyö, työmaa, työ, raksa, tietyö, tietyömaa"
+ },
+ "landuse/farm": {
+ "name": "Maatila"
+ },
+ "landuse/farmland": {
+ "name": "Maatila-alue"
},
"landuse/farmyard": {
"name": "Pihamaa"
"landuse/grass": {
"name": "Ruohokenttä"
},
+ "landuse/industrial": {
+ "name": "Teollisuusalue"
+ },
"landuse/meadow": {
"name": "Niitty/pelto"
},
"landuse/quarry": {
"name": "Louhos"
},
+ "landuse/residential": {
+ "name": "Asuinalue"
+ },
+ "landuse/retail": {
+ "name": "Vähittäiskauppa-alue"
+ },
"landuse/vineyard": {
"name": "Viinitarha"
},
"name": "Koirapuisto",
"terms": "koira, koirat, koira-alue, koiranulkoilutusalue, koirahäkki, koirapuisto"
},
+ "leisure/firepit": {
+ "name": "Tulipiste",
+ "terms": "nuotio, ruoanlaitto, ruoka, piste, grilli, grillaus"
+ },
"leisure/garden": {
"name": "Puutarha"
},
},
"leisure/pitch/soccer": {
"name": "Jalkapallokenttä",
- "terms": "jalkapallo, urheilu, liikunta, kenttä, areena, futis"
+ "terms": "jalkapallo, urheilu, liikunta, kenttä, areena, futis, futiskenttä"
},
"leisure/pitch/tennis": {
"name": "Tenniskenttä"
"terms": "leikkipuisto, leikkipaikka, leikki, leikkiä, lapsipuisto, leikkipiste"
},
"leisure/running_track": {
- "name": "Juoksupolku"
+ "name": "Juoksupolku",
+ "terms": "juoksu, juokseminen, polku, rata, reitti, juoksupolku, juoksurata, juoksureitti, liikunta, urheilu, kuntoilu, yleisurheilu"
},
"leisure/slipway": {
"name": "Veneramppi",
"leisure/swimming_pool": {
"name": "Uima-allas"
},
+ "leisure/track": {
+ "name": "Kilparata (ei moottoriurheilu)"
+ },
"line": {
"name": "Viiva"
},
"man_made/lighthouse": {
"name": "Majakka"
},
+ "man_made/mast": {
+ "name": "Radiomasto"
+ },
"man_made/observation": {
"name": "Näkötorni",
"terms": "observatorio, näköalatasanne, näköala, maisema, maisematorni"
},
+ "man_made/petroleum_well": {
+ "name": "Öljylähde"
+ },
"man_made/pier": {
"name": "Laituri"
},
"man_made/water_tower": {
"name": "Vesitorni"
},
+ "man_made/water_well": {
+ "name": "Vesikaivo"
+ },
"man_made/water_works": {
"name": "Vesilaitos"
},
"natural/beach": {
"name": "Ranta"
},
+ "natural/cave_entrance": {
+ "name": "Luolan suuaukko"
+ },
"natural/cliff": {
"name": "Kallionjyrkänne"
},
"name": "Vuorenhuippu",
"terms": "Huippu, Vuorenhuippu, Korkein kohta, Vuoren huippu"
},
+ "natural/scree": {
+ "name": "Louhikko",
+ "terms": "kivikko, rakka, kivikasa, kasa, kivikumpu, maakasa, vyörylohkareikko, lohkareikko"
+ },
"natural/scrub": {
"name": "Pensaikko"
},
"name": "Lähde"
},
"natural/tree": {
- "name": "Havupuu"
+ "name": "Puu"
},
"natural/water": {
"name": "Vesi"
"name": "Suo"
},
"natural/wood": {
- "name": "Lehtipuu"
+ "name": "Luonnonvarainen metsä/puu"
},
"office": {
"name": "Toimisto"
"name": "Tilintarkastustoimisto",
"terms": "tilintarkastus, tilintarkastaja, kirjanpito, kirjanpitäjä, kirjanpitotoimisto"
},
+ "office/administrative": {
+ "name": "Hallinnon toimisto"
+ },
"office/architect": {
"name": "Arkkitehtitoimisto"
},
"name": "Työnvälitystoimisto",
"terms": "työ, työvoimatoimisto, työnvälitys, työnvälittäjä, työpaikka, työpaikat"
},
+ "office/estate_agent": {
+ "name": "Kiinteistötoimisto"
+ },
"office/financial": {
"name": "Taloustoimisto"
},
"name": "Puoluetoimisto",
"terms": "politiikka, politiikko, poliittinen, puolue, hallinto, toimisto"
},
+ "office/research": {
+ "name": "Tutkimustoimisto"
+ },
+ "office/telecommunication": {
+ "name": "Tietoliikennetoimisto"
+ },
+ "office/therapist": {
+ "name": "Terapialaitos"
+ },
"office/travel_agent": {
"name": "Matkatoimisto"
},
"piste": {
- "name": "Laskettelurinne/hiihtolatu"
+ "name": "Laskettelurinne/hiihtolatu",
+ "terms": "laskettelu, alamäki, mäki, laskettelumäki, rinne, latu, hiihtolatu, urheilu, kuntoilu, liikunta, talvi, talviliikunta, talviurheilu, talvikuntoilu"
},
"place": {
"name": "Paikka"
"name": "Kaupunki",
"terms": "kaupunki, suurkaupunki, pääkaupunki"
},
+ "place/farm": {
+ "name": "Maatila"
+ },
"place/hamlet": {
"name": "Pikkukylä"
},
"power/sub_station": {
"name": "Sähköasema"
},
+ "power/substation": {
+ "name": "Sähköasema"
+ },
"power/tower": {
"name": "Korkeajännitetorni"
},
"name": "Laiturialue",
"terms": "pysäkki, asema, pysäkkilaituri, laituri, odotus, odotusalue, odotuslaituri, odottaminen, katos, asemalaituri, asema"
},
+ "public_transport/stop_position": {
+ "name": "Pysätyspaikka"
+ },
"railway": {
"name": "Rautatie"
},
"relation": {
"name": "Relaatio"
},
+ "roundabout": {
+ "name": "Liikenneympyrä"
+ },
"route/ferry": {
"name": "Lauttareitti"
},
"shop/bakery": {
"name": "Leipomo"
},
+ "shop/bathroom_furnishing": {
+ "name": "Kylpyhuoneliike",
+ "terms": "kylpyhuone, kylpy, suihku, amme, sisustus, sisustaminen, pesuhuone, sauna"
+ },
"shop/beauty": {
"name": "Kauneushoitola"
},
"shop/cosmetics": {
"name": "Kosmetiikkamyymälä"
},
+ "shop/curtain": {
+ "name": "Verhomyymälä",
+ "terms": "verho, kaihdin, verhot, kaihtimet, rullaverho, liukuverho, verhokauppa, verholiike"
+ },
"shop/dairy": {
"name": "Maitotuotemyymälä",
"terms": "maito, meijeri, maitotuote, maitoa, juusto, jogurtti, viili, piimä, jäätelö, lehmä"
"shop/erotic": {
"name": "Erotiikkamyymälä"
},
+ "shop/fabric": {
+ "name": "Rakennusliike"
+ },
"shop/farm": {
"name": "Tuotteen esittelypiste",
"terms": "tuotestandi, standi, ständi, esittely, tuote-esittely, tuote, tavara, esittelypiste, esittelyständi, esittelystandi"
},
+ "shop/fashion": {
+ "name": "Muotiliike"
+ },
"shop/fishmonger": {
"name": "Kalakauppias"
},
"shop/laundry": {
"name": "Pesula"
},
+ "shop/leather": {
+ "name": "Nahkaliike"
+ },
"shop/locksmith": {
"name": "Lukkoliike",
"terms": "lukkoseppä, lukko, lukot, hälytys, valvonta, hälytin, hälyttimet, lukonavaus"
"name": "Kauppakeskus",
"terms": "kauppakeskus, ostoskeskus, kauppakeskittymä"
},
+ "shop/massage": {
+ "name": "Hierontayritys"
+ },
"shop/mobile_phone": {
"name": "Matkapuhelinmyymälä"
},
+ "shop/money_lender": {
+ "name": "Rahanlainausliike"
+ },
"shop/motorcycle": {
"name": "Moottoripyöräliike"
},
"shop/music": {
"name": "Musiikkiliike"
},
+ "shop/musical_instrument": {
+ "name": "Instrumenttimyymälä",
+ "terms": "musiikki, soitin, soittimet, instrumentti, soittaminen, soitto"
+ },
"shop/optician": {
"name": "Optikko",
"terms": "optikko, optiikko, optometristi, optometri, optometria, silmälasi, silmälasit, aurinkolasi, aurinkolasit, silmälasiliike"
},
+ "shop/paint": {
+ "name": "Maalikauppa",
+ "terms": "maalaaminen, maali, maalit, maalaus, rautakauppa, maalimyymälä, maaliliike"
+ },
"shop/pet": {
"name": "Lemmikkiliike"
},
"shop/photo": {
"name": "Valokuvausliike"
},
+ "shop/radiotechnics": {
+ "name": "Elektroniikkakomponenttimyymälä",
+ "terms": "radio, elektroniikka, komponentti, tekninen, tekniikka, osa, osat, varaosa"
+ },
"shop/scuba_diving": {
"name": "Sukellusliike",
"terms": "laitesukellus, sukellus, sukeltaminen, laitesukeltaminen, sukelluskauppa, sukellusliike"
},
+ "shop/seafood": {
+ "name": "Meriruokakauppa"
+ },
"shop/shoes": {
"name": "Kenkäkauppa"
},
"shop/tailor": {
"name": "räätäli"
},
+ "shop/tattoo": {
+ "name": "Tatuointisalonki"
+ },
+ "shop/tea": {
+ "name": "Teekauppa"
+ },
+ "shop/ticket": {
+ "name": "Lipunmyyntipiste",
+ "terms": "lippupalvelu, lippu, liput, lippupiste, matkalippu, konserttilippu, tapahtumalippu, pääsylippu, pääsyliput"
+ },
"shop/tobacco": {
"name": "Tupakkapuoti"
},
"shop/vacant": {
"name": "Tyhjä liikehuoneisto"
},
+ "shop/vacuum_cleaner": {
+ "name": "Pölynimuriliike",
+ "terms": "pölynimuri, siivoaminen, siivous, imuri, pölynimuri, imurointi"
+ },
"shop/variety_store": {
"name": "Halpahalli"
},
"shop/video": {
"name": "Videovuokraamo"
},
+ "shop/video_games": {
+ "name": "Videopeliliike",
+ "terms": "konsoli, konsolipeli, pelikonsoli, xbox, playstation, nintendo, peli, pelaaminen, videopeli, pc, tietokone, tietotekniikka"
+ },
+ "shop/water_sports": {
+ "name": "Vesiurheiluliike",
+ "terms": "uinti, uiminen, sukellus, sukeltaminen, laitesukellus, laitesukeltaminen, vesi, vesiurheilu, kauppa, liike, myymälä"
+ },
+ "shop/weapons": {
+ "name": "Aseliike",
+ "terms": "ase, pyssy, ampuma-ase, ampuminen, ammunta, starttipistooli, pistooli"
+ },
+ "shop/window_blind": {
+ "name": "Kaihdinmyymälä",
+ "terms": "verho, ikkuna, ikkunaverho, ikkunakaihdin, kaihdin, verhot, kaihtimet, rullaverho, rullakaihdin, rullakaihtimet, rullaverhot"
+ },
"shop/wine": {
"name": "Viinikauppa"
},
"tourism/zoo": {
"name": "Eläintarha"
},
+ "traffic_calming/bump": {
+ "name": "Hidastustöyssy"
+ },
+ "traffic_calming/hump": {
+ "name": "Lievä hidastustöyssy"
+ },
+ "traffic_calming/rumble_strip": {
+ "name": "Väristysviivahidaste"
+ },
"traffic_calming/table": {
"name": "Korotettu suojatie"
},
"waterway/riverbank": {
"name": "Joentörmä"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Satama-WC:n tyhjennystekniikka"
+ },
"waterway/stream": {
"name": "Puro"
},
"description": "Rendre cette ligne droite.",
"key": "S",
"annotation": "Rendre une ligne droite.",
- "too_bendy": "Ne peux être redressé car il courbe trop.",
+ "too_bendy": "Cela ne peut pas être redressé, car la courbe est trop importante.",
"connected_to_hidden": "Cette ligne ne peut être rendue droite parce qu'elle est connecté à un élément caché."
},
"delete": {
"multiple": "{n} objets supprimés."
},
"incomplete_relation": "Cet élément ne peut pas être supprimé car il n'a pas été téléchargé dans son intégralité.",
+ "part_of_relation": "Cet élément ne peut pas être effacé parce qu'il fait partie d'une relation. Vous devez d'abord le retirer de la relation.",
"connected_to_hidden": "Ceci ne peut être supprimé parce que c'est connecté à un élément caché."
},
"add_member": {
"commit": {
"title": "Sauvegarder vos modifications",
"description_placeholder": "Description succinte de vos contributions",
- "message_label": "Description des changements",
+ "message_label": "Commentaire de changeset",
"upload_explanation": "Les modifications envoyées seront visibles sur toutes les cartes qui utilisent les données d'OpenStreetMap.",
"upload_explanation_with_user": "Les modifications envoyées en tant que {user} seront visibles sur toutes les cartes qui utilisent les données d'OpenStreetMap.",
"save": "Sauvegarder",
"list": "Editions de {users}",
"truncated_list": "Editions de {users} et de {count} autres"
},
+ "infobox": {
+ "selected": "{n} selectionné s",
+ "geometry": "Géométrie",
+ "closed": "fermé",
+ "center": "Centre",
+ "perimeter": "Périmètre",
+ "length": "Longueur",
+ "area": "Polygone",
+ "centroid": "Centroïde",
+ "location": "Emplacement",
+ "metric": "Métrique",
+ "imperial": "Impérial"
+ },
+ "geometry": {
+ "point": "point",
+ "vertex": "sommet",
+ "line": "ligne",
+ "area": "polygone",
+ "relation": "relation"
+ },
"geocoder": {
"search": "Rechercher dans le monde entier...",
"no_results_visible": "Aucun résultat sur la zone visible de la carte",
"no": "Non"
},
"none": "Aucun",
- "node": "Noeud",
+ "node": "Nœud",
"way": "Chemin",
"relation": "Relation",
"location": "Endroit",
"title": "Sauvegarder",
"help": "Envoi des modifications au serveur OpenStreetMap afin qu'elles soient visibles par les autres contributeurs.",
"no_changes": "Aucune modification à sauvegarder",
- "error": "Une erreur est survenue lors de l'enregistrement des données",
+ "error": "Des erreurs sont survenues en tentant de sauvegarder",
+ "status_code": "Le serveur a renvoyé le code de statut {code}",
"unknown_error_details": "S'il vous plaît, assurez-vous d'être connecté à l'internet.",
"uploading": "Envoi des modifications vers OpenStreetMap.",
- "unsaved_changes": "Vous avez des modifications non enregistrées"
+ "unsaved_changes": "Vous avez des modifications non enregistrées",
+ "conflict": {
+ "header": "Résoudre les modifications conflictuelles",
+ "count": "Conflit {num} de {total}",
+ "previous": "Précédent",
+ "next": "Suivant",
+ "keep_local": "Garder la mienne",
+ "keep_remote": "Utiliser la leur",
+ "restore": "Restaurer",
+ "delete": "Laisser la suppression",
+ "download_changes": "Ou télécharger vos changements",
+ "done": "Tous les conflits sont résolus !",
+ "help": "Un autre utilisateur a modifié certains éléments de la carte que vous aviez modifiés changés.\nCliquez sur chaque élément ci-dessous pour plus de détails à propos du conflit, et choisissez si vous conservez vos modifications ou celles de l'autre utilisateur.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Cet objet a été supprimé par {user}",
+ "location": "Cet objet a été déplacé à la fois par vous et {user}",
+ "nodelist": "Les nœuds ont été changés à la fois par vous et {user}",
+ "memberlist": "Les membres de la relation ont été changés à la fois par vous et {user}",
+ "tags": "Vous avez changé le tag <b>{tag}</b> en \"{local}\" et {user} l'a changé en \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM Edité!",
"help_html": "Vos changements doivent apparaitre sur la couche \"Standard\" dans quelques minutes. Les autres couches, et certains éléments nécessiteront plus de temps\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>détails</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Annuler"
},
"splash": {
"welcome": "Bienvenue sur ID, l'éditeur en ligne d'OpenStreetMap",
},
"help": {
"title": "Aide",
- "help": "#Aide\n\n Ceci est un éditeur pour [OpenStreetMap](http://www.openstreetmap.org/), la carte du\n monde gratuite et éditable. Vous pouvez l'utiliser pour ajouter ou corriger les données\n dans votre zone, et participer ainsi à la réalisation d'une carte du monde libre de droits.\n\n Les modifications que vous réaliserez seront visibles de tout le monde. Pour commencer\n à éditer, vous devez créer un [compte gratuit sur OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n [iD editor](http://ideditor.com/) est un projet collaboratif dont le [code source est\n disponible sur GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Aide\n\nCeci est un éditeur pour [OpenStreetMap](http://www.openstreetmap.org/), la \ncarte du monde libre et éditable. Vous pouvez l'utiliser pour ajouter ou mettre à jour\nles données dans votre zone, et participer ainsi à la réalisation d'une carte du monde libre et à données ouvertes\nmeilleure pour tout le monde.\n\nLes modifications que vous réaliserez sur cette carte seront visibles par tous les utilisateurs d'\nOpenStreetMap. Pour commencer à éditer, vous devez vous\n[connecter](https://www.openstreetmap.org/login).\n\nL'[éditeur iD](http://ideditor.com/) est un projet collaboratif dont le [code\nsource est disponible sur GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Éditer et sauvegarder⏎\n⏎\nCet éditeur est conçu principalement pour travailler en mode connecté, et vous l'accéder depuis un site Web en ce moment.⏎\n⏎\n### Sélectionner un élément de la carte⏎\n⏎\nPour sélection un élément de la carte, tel qu'une rue ou un point d'intérêt, cliquez sur ce dernier⏎\nsur la carte. Cette action mettra l'élément en surbrillance, et ouvrira le panneau latéral⏎\nqui affiche les propriétés de l'élément. Un menu apparaîtra également sur la carte,⏎\npermettant de poser des actions sur l'élément (telles que le déplacer, repositionner⏎\nses points constituants, etc).\n⏎\nPour sélectionner plusieurs éléments, appuyez sur la touche 'Majuscule'. Puis, cliquez⏎\nun à un sur les éléments à sélectionner. Alternativement, il est possible de dessinez un rectangle⏎\nsur la carte (toujours en appuyant sur 'Majuscule) pour effectuer la sélection multiple.⏎\nles points à sélectionner.⏎\n⏎\n### Enregistrer les modifications⏎\n⏎\nL'éditeur enregistre localement (sur votre ordinateur) toutes les modifications⏎\nque vous effectuez sur les éléments de la carte (les rues, les bâtiments, etc.).⏎\nCes modifications seront envoyées au serveur OpenStreetMap uniquement⏎\nlorsque vous appuierez sur \"Sauvegarder\".⏎\n⏎\nNe vous faites donc pas de souci si vous faites une erreur. Vous pouvez annuler⏎\ntout changement effectué en appuyant sur le bouton d'annulation (la flèche de demi-tour⏎\npointant vers la gauche).⏎\n⏎\nLorsque vous avez terminé un groupe de modifications - par exemple, vous avez⏎\ncomplété une partie de la ville et vous voulez en débuter une nouvelle,⏎\nil suffit d'appuyer sur le bouton \"Sauvegarder\". Vos changements ne seront pas⏎\nenvoyés immédiatement - vous avez l'occasion de réviser le travail effectué⏎\navant de confirmer les changements. ⏎\n⏎\nSi tout semble bon, entrez un commentaire décrivant vos changements⏎\n(par exemple: \"Ajout d'une boulangerie\" ou \"Ajout de commerces du quartier\"),⏎\npuis appuyez à nouveau sur le bouton 'Sauvegarder' (qui, cette fois-ci, apparaîtra\nen bleu dans le panneau latéral). Vos changements seront alors envoyés à⏎\n[OpenStreetMap.org](http://www.openstreetmap.org/), où il seront partagés et rendus⏎\nvisibles à tous les autres utilisateurs.\n⏎\nSi vous ne pouvez pas terminer vos changements en une seule séance, vous pouvez⏎\nfermer la fenêtre de l'éditeur. Vos changements seront enregistrés localement.⏎\nLorsque vous ouvrirez à nouveau l'éditeur, sur le même ordinateur et avec le même⏎\nnavigateur Web, l'éditeur vous proposera de récupérer le travail de la séance précédente.⏎\n",
"roads": "# Routes\n\nVous pouvez créer, mettre à jour et supprimer des routes à l'aide de l'éditeur. Il peut s'agir de tous types de routes : chemins, autoroutes, pistes cyclables, et plus encore : toute voie régulièrement fréquentée peut être cartographiée.\n\n### Sélection\n\nCliquez sur une route pour la sélectionner. Elle sera alors surlignée et un menu 'outils' apparaîtra sur la carte, ainsi qu'une barre d'état affichant des informations supplémentaires.\n\n### Modification\n\nIl est fréquent que les routes ne soient pas bien alignées avec l'imagerie satellite ou avec les traces GPS. Vous pouvez ajuster et corriger la position des routes.\n\nCliquez d'abord sur la route à modifier. Elle est alors surlignée et des points de contrôle apparaissent qui permettent de corriger sa position. Pour ajouter des points de contrôle, double-cliquez sur un segment de la route sans nœuds.\n\nSi la route est connectée à une autre, mais que la connexion est incorrecte, vous pouvez déplacer un de ses points de contrôle sur la seconde route pour corriger la connexion. Des routes bien connectées sont essentielles pour la carte et pour fournir de bonnes informations d'itinéraire.\n\nVous pouvez également cliquer sur l'outil 'Déplacer' ou appuyer sur le raccourci `M` pour déplacer l'ensemble de la route en une fois, puis cliquer de nouveau une fois pour sauvegarder le déplacement.\n\n### Suppression\n\nSi une route est complètement fausse - c'est-à-dire qu'elle n'apparaît pas sur l'image satellite, et que dans l'idéal, vous avez confirmé qu'elle n'existe pas sur le terrain - vous pouvez la supprimer, ce qui l'enlèvera de la carte. Faites attention lorsque vous supprimez des éléments : comme n'importe quelle autre modification, le résultat sera visible par tout le monde sur la carte. Les photos aériennes sont souvent dépassées et la route est peut-être tout simplement récente.\n\nPour supprimer une route, sélectionnez-la en cliquant dessus, puis cliquez sur l'icône 'Poubelle' ou appuyez sur la touche 'Suppr'.\n\n### Création\n\nVous avez constaté qu'une route de votre connaissance manque à la carte ? Cliquez sur l'icône 'Ligne' en haut à gauche de l'éditeur ou appuyez sur le raccourci `2` pour dessiner une route. \n\nPour commencer le dessin, cliquez sur l'endroit où commence la route. Si elle commence à l'embranchement d'une autre route, commencez le dessin en cliquant à l'endroit de la connexion.\n\nCliquez ensuite régulièrement le long de la route pour ajouter des points, en utilisant l'imagerie satellite comme référence. Si la route que vous dessinez croise une autre route, connectez les deux en cliquant à l'endroit de l'intersection. Lorsque vous avez terminé le dessin, double-cliquez ou appuyez sur 'Entrée'.\n",
"gps": "# GPS\n\nLa donnée GPS est la source la plus fiable de données pour OpenStreetMap. Cet éditeur\nsupporte les traces en local - fichiers `.gpx` sur votre ordinateur. Vous pouvez collecter\nce genre de trace GPS à l'aide de nombreuses applications pour smartphones ainsi qu'avec\ndu matériel GPS personnel.\n\nPour de la documentation sur la manière de faire un relevé GPS, lisez\n[Sur le terrain avec un GPS](http://learnosm.org/fr/beginner/using-gps/).\n\nPour utiliser un tracé GPX pour cartographier, effectuer un \"glissé-déposé\" du fichier GPX dans l'éditeur de cartes.\nS'il est reconnu, il sera ajouté à la carte comme une ligne violette en surbrillance.\nCliquez dans le menu \"Données de la carte\" sur le côté droit pour activer,\ndésactiver, ou zoomer dans ce nouveau calque GPX.\n\nLe tracé GPX n'est pas directement chargé vers OpenStreetMap - le meilleur moyen de\nl'utiliser est de dessiner sur la carte, en l'utilisant comme guide pour les nouveaux éléments que\nvous ajoutez, et aussi de le [charger dans OpenStreetMap](http://www.openstreetmap.org/trace/create) pour que les autres utilisateurs puissent s'en servir.\n",
"fields": {
"access": {
"label": "Accès",
- "placeholder": "Inconnu",
- "types": {
- "access": "Général",
- "foot": "À pied",
- "motor_vehicle": "Véhicules motorisés",
- "bicycle": "Vélos",
- "horse": "Cavaliers"
- },
"options": {
- "yes": {
- "title": "Autorisé",
- "description": "Accès autorisé par servitude de passage"
+ "designated": {
+ "description": "Accès autorisé par des panneaux ou par une réglementation locale",
+ "title": "Restreint à certains types de véhicules"
+ },
+ "destination": {
+ "description": "Circulation interdite, sauf pour accéder aux zones desservies",
+ "title": "Interdit sauf riverains"
},
"no": {
- "title": "Interdit",
- "description": "Accès interdit au public"
+ "description": "Accès interdit au public",
+ "title": "Interdit"
},
"permissive": {
- "title": "Accès permis",
- "description": "Accès laissé libre par le propriétaire, révocable à tout moment"
+ "description": "Accès laissé libre par le propriétaire, révocable à tout moment",
+ "title": "Accès permis"
},
"private": {
- "title": "Privé",
- "description": "Accès autorisé sur demande au propriétaire"
+ "description": "Accès autorisé sur demande au propriétaire",
+ "title": "Privé"
},
- "designated": {
- "title": "Restreint à certains types de véhicules",
- "description": "Accès autorisé par des panneaux ou par une réglementation locale"
- },
- "destination": {
- "title": "Interdit sauf riverains",
- "description": "Circulation interdite, sauf pour accéder aux zones desservies"
+ "yes": {
+ "description": "Accès autorisé par servitude de passage",
+ "title": "Autorisé"
}
+ },
+ "placeholder": "Inconnu",
+ "types": {
+ "access": "Général",
+ "bicycle": "Vélos",
+ "foot": "À pied",
+ "horse": "Cavaliers",
+ "motor_vehicle": "Véhicules motorisés"
}
},
"access_simple": {
"address": {
"label": "Adresse",
"placeholders": {
+ "city": "Ville",
+ "country": "Pays",
+ "district": "District",
+ "hamlet": "Hameau",
"housename": "Nom de la maison",
"housenumber": "123",
- "street": "Rue",
- "city": "Ville",
- "postcode": "Code postal",
"place": "Place",
- "hamlet": "Hameau",
- "suburb": "Banlieue",
- "subdistrict": "Sous-district",
- "district": "District",
+ "postcode": "Code postal",
"province": "Province",
"state": "État",
- "country": "Pays"
+ "street": "Rue",
+ "subdistrict": "Sous-district",
+ "suburb": "Banlieue"
}
},
"admin_level": {
"aerialway/access": {
"label": "Accès",
"options": {
+ "both": "Les deux",
"entry": "Entrée",
- "exit": "Sortie",
- "both": "Les deux"
+ "exit": "Sortie"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Accès (été)",
"options": {
+ "both": "Les deux",
"entry": "Entrée",
- "exit": "Sortie",
- "both": "Les deux"
+ "exit": "Sortie"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Sens",
"options": {
- "N": "Nord",
"E": "Est",
- "S": "Sud",
- "W": "Ouest",
- "NE": "Nord-Est",
- "SE": "Sud-Est",
- "SW": "Sud-Ouest",
- "NW": "Nord-Ouest",
- "NNE": "Nord-Nord-Est",
"ENE": "Est-Nord-Est",
"ESE": "Est-Sud-Est",
+ "N": "Nord",
+ "NE": "Nord-Est",
+ "NNE": "Nord-Nord-Est",
+ "NNW": "Nord-Nord-Ouest",
+ "NW": "Nord-Ouest",
+ "S": "Sud",
+ "SE": "Sud-Est",
"SSE": "Sud-Sud-Est",
"SSW": "Sud-Sud-Ouest",
- "WSW": "Ouest-Sud-Ouest",
+ "SW": "Sud-Ouest",
+ "W": "Ouest",
"WNW": "Ouest-Nord-Ouest",
- "NNW": "Nord-Nord-Ouest"
+ "WSW": "Ouest-Sud-Ouest"
}
},
"clock_direction": {
"label": "Sens",
"options": {
- "clockwise": "Sens horaire",
- "anticlockwise": "Sens anti-horaire"
+ "anticlockwise": "Sens anti-horaire",
+ "clockwise": "Sens horaire"
}
},
"collection_times": {
"construction": {
"label": "Type"
},
+ "content": {
+ "label": "Contenu"
+ },
"country": {
"label": "Pays"
},
"description": {
"label": "Description"
},
+ "drive_through": {
+ "label": "Point-retrait"
+ },
"electrified": {
"label": "Électrification",
- "placeholder": "Ligne de contact, Lignes électriques",
"options": {
"contact_line": "Ligne de contact",
+ "no": "Non",
"rail": "Rails électrifiés",
- "yes": "Oui (non spécifié)",
- "no": "Non"
- }
+ "yes": "Oui (non spécifié)"
+ },
+ "placeholder": "Ligne de contact, Lignes électriques"
},
"elevation": {
"label": "Altitude"
"label": "Type",
"options": {
"pillar": "Pilier / hors sol",
+ "pond": "Étang",
"underground": "Sous-terrain",
- "wall": "Mur",
- "pond": "Étang"
+ "wall": "Mur"
}
},
"fixme": {
},
"gender": {
"label": "Genre",
- "placeholder": "Inconnu",
"options": {
- "male": "Homme",
"female": "Femme",
+ "male": "Homme",
"unisex": "Unisexe"
- }
+ },
+ "placeholder": "Inconnu"
},
"generator/method": {
"label": "Méthode"
"incline": {
"label": "Pente"
},
+ "incline_steps": {
+ "label": "Inclinaison",
+ "options": {
+ "down": "En bas",
+ "up": "En haut"
+ }
+ },
"information": {
"label": "Type"
},
"internet_access": {
"label": "Accès internet",
"options": {
- "yes": "Oui",
"no": "Non",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Par câble",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Oui"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Phénologie des feuilles",
"options": {
- "evergreen": "Sempervirent",
"deciduous": "Caduc",
- "semi_evergreen": "Semi-Sempervirent",
+ "evergreen": "Sempervirent",
+ "mixed": "Mélangé",
"semi_deciduous": "Semi-Caduc",
- "mixed": "Mélangé"
+ "semi_evergreen": "Semi-Sempervirent"
}
},
"leaf_type": {
"label": "Type de feuille",
"options": {
"broadleaved": "Feuillus",
- "needleleaved": "Arbres à aiguilles",
+ "leafless": "Sans feuilles",
"mixed": "Mélangé",
- "leafless": "Sans feuilles"
+ "needleleaved": "Arbres à aiguilles"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Difficulté VTT",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0 : Gravier/terre battue, pas d'obstacles, de grandes courbes",
"1": "1 : Quelques graviers, de petits obstacles, de grandes courbes",
"4": "4 : Surface avec des rochers, des épingles à cheveux dangereuses",
"5": "5 : Difficulté maximale, champs de blocs, glissements de terrain",
"6": "6 : Non praticable, que par les meilleurs vététistes"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBA Trail Difficulté",
- "placeholder": "Facile, Intermédiaire, Difficile...",
"options": {
"0": "Simplissime (ronds blancs)",
"1": "Facile (ronds verts)",
"2": "Intermédiaire (carrés bleus)",
"3": "Difficile (losanges noirs)",
"4": "Extrèmement difficile (doubles losanges noirs)"
- }
+ },
+ "placeholder": "Facile, Intermédiaire, Difficile..."
},
"mtb/scale/uphill": {
"label": "Difficulté VTT en montée",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Inclinaison <10% , sol consistent, pas d'obstacles",
"1": "1: Inclinaison < 15%, sol consistant, quelques menus obstacles",
"3": "3: Inclinaison <25%, différents types de terrains, pierres/branches",
"4": "4: Inclinaison <30%, conditions difficiles, rochers/branches",
"5": "5: Abrupt, le vélo doit généralement être porté ou poussé"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nom",
"oneway": {
"label": "Sens unique",
"options": {
+ "no": "Non",
"undefined": "Supposément Non",
- "yes": "Oui",
- "no": "Non"
+ "yes": "Oui"
}
},
"oneway_yes": {
"label": "Sens unique",
"options": {
+ "no": "Non",
"undefined": "Supposément Oui",
- "yes": "Oui",
- "no": "Non"
+ "yes": "Oui"
}
},
"opening_hours": {
"label": "Heures"
},
"operator": {
- "label": "Opérateur"
+ "label": "Exploitant"
},
"par": {
"label": "Par",
"parking": {
"label": "Type",
"options": {
- "surface": "Surface",
- "multi-storey": "Multiples niveaux",
- "underground": "Souterrain",
- "sheds": "Cabanes",
"carports": "Abris de voiture",
"garage_boxes": "Boxes de garage",
- "lane": "Route"
+ "lane": "Route",
+ "multi-storey": "Multiples niveaux",
+ "sheds": "Cabanes",
+ "surface": "Surface",
+ "underground": "Souterrain"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Difficulté",
- "placeholder": "Facile, Intermédiaire, Avancé...",
"options": {
- "novice": "Novice (enseignement)",
- "easy": "Facile (ronds verts)",
- "intermediate": "Intermédiaire (carrés bleus)",
"advanced": "Avancé (losanges noirs)",
+ "easy": "Facile (ronds verts)",
"expert": "Expert (doubles losanges noirs)",
+ "extreme": "Extrème (matériel d'escalade requis)",
"freeride": "Freeride (hors piste)",
- "extreme": "Extrème (matériel d'escalade requis)"
- }
+ "intermediate": "Intermédiaire (carrés bleus)",
+ "novice": "Novice (enseignement)"
+ },
+ "placeholder": "Facile, Intermédiaire, Avancé..."
},
"piste/grooming": {
"label": "Damage",
"options": {
- "classic": "Classique",
- "mogul": "Piste de ski de bosses",
"backcountry": "Arrière pays",
+ "classic": "Classique",
"classic+skating": "Damage classique et pour pas de patineur",
+ "mogul": "Piste de ski de bosses",
"scooter": "Scooter des neiges",
"skating": "Patinage"
}
"label": "Type",
"options": {
"downhill": "Aval",
+ "hike": "Randonnée",
+ "ice_skate": "Patin à glace",
"nordic": "Nordique",
+ "playground": "Aire de jeux",
"skitour": "Randonnée à ski ",
"sled": "Luge",
- "hike": "Randonnée",
"sleigh": "Traîneau",
- "ice_skate": "Patin à glace",
- "snow_park": "Parc à neige",
- "playground": "Aire de jeux"
+ "snow_park": "Parc à neige"
}
},
"place": {
"power": {
"label": "Type"
},
+ "power_supply": {
+ "label": "Source de courant"
+ },
"railway": {
"label": "Type"
},
},
"sac_scale": {
"label": "Difficulté de la randonnée",
- "placeholder": "Randonnée de Montagne, Randonnée Alpine",
"options": {
- "hiking": "T1 : Randonnée",
- "mountain_hiking": "T2 : Randonnée de Montagne",
- "demanding_mountain_hiking": "T3 : Randonnée de Montagne Exigeante",
"alpine_hiking": "T4 : Randonnée Alpine",
"demanding_alpine_hiking": "T5 : Randonnée Alpine Exieante",
- "difficult_alpine_hiking": "T6 : Randonnée Alpine Difficile"
- }
+ "demanding_mountain_hiking": "T3 : Randonnée de Montagne Exigeante",
+ "difficult_alpine_hiking": "T6 : Randonnée Alpine Difficile",
+ "hiking": "T1 : Randonnée",
+ "mountain_hiking": "T2 : Randonnée de Montagne"
+ },
+ "placeholder": "Randonnée de Montagne, Randonnée Alpine"
+ },
+ "sanitary_dump_station": {
+ "label": "Station de vidange sanitaire"
},
"seasonal": {
"label": "Saisonnier"
"service": {
"label": "Type"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Outil de réparation de chaînes de vélo",
"options": {
+ "no": "Non",
"undefined": "Supposé être Non",
- "yes": "Oui",
- "no": "Non"
+ "yes": "Oui"
}
},
"service/bicycle/pump": {
"label": "Pompe à air",
"options": {
+ "no": "Non",
"undefined": "Supposé être Non",
- "yes": "Oui",
- "no": "Non"
+ "yes": "Oui"
+ }
+ },
+ "service_rail": {
+ "label": "Type de voie de service",
+ "options": {
+ "crossover": "Voie de traversée",
+ "siding": "Voie parallèle",
+ "spur": "Embranchement particulier court permettant à une compagnie ou une entité d'accéder au réseau principal.",
+ "yard": "Voie interne à la compagnie utilisée pour le triage ou la maintenance."
}
},
"shelter": {
},
"smoking": {
"label": "Fumeur",
- "placeholder": "Non, Séparé, Oui",
"options": {
- "no": "Interdiction de fumer, quel que soit l'endroit",
- "separated": "Dans des endroits fumeurs, non isolés physiquement",
+ "dedicated": "Dédié aux fumeurs (ex : club de fumeurs)",
"isolated": "Dans des endroits fumeurs, isolés physiquement",
+ "no": "Interdiction de fumer, quel que soit l'endroit",
"outside": "Autorisé dehors",
- "yes": "Autorisé partout",
- "dedicated": "Dédié aux fumeurs (ex : club de fumeurs)"
- }
+ "separated": "Dans des endroits fumeurs, non isolés physiquement",
+ "yes": "Autorisé partout"
+ },
+ "placeholder": "Non, Séparé, Oui"
},
"smoothness": {
"label": "Douceur",
- "placeholder": "Petites Roulettes, Roues, Hors-Piste",
"options": {
+ "bad": "Grandes Roues : VTT, voiture, pousse-pousse",
"excellent": "Petites Roulettes : rollers, planche à roulettes",
"good": "Petites Roues : Vélo de course",
+ "horrible": "Hors-Piste : Gros véhicule hors-piste",
+ "impassable": "Infranchissable / Pas de véhicules à roues",
"intermediate": "Roues : vélo de ville, fauteuil roulant, scooter",
- "bad": "Grandes Roues : VTT, voiture, pousse-pousse",
"very_bad": "Garde au sol élevée : véhicule léger tout terrain",
- "horrible": "Hors-Piste : Gros véhicule hors-piste",
- "very_horrible": "Spécialisé tout-terrain : tracteur, véhicule tout-terrain",
- "impassable": "Infranchissable / Pas de véhicules à roues"
- }
+ "very_horrible": "Spécialisé tout-terrain : tracteur, véhicule tout-terrain"
+ },
+ "placeholder": "Petites Roulettes, Roues, Hors-Piste"
},
"social_facility_for": {
"label": "Personnes desservies",
},
"structure": {
"label": "Structure",
- "placeholder": "Inconnu",
"options": {
"bridge": "Pont",
- "tunnel": "Tunnel",
- "embankment": "Remblai",
"cutting": "Tranchée",
- "ford": "Gué"
- }
+ "embankment": "Remblai",
+ "ford": "Gué",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Inconnu"
},
"studio_type": {
"label": "Type"
},
"takeaway": {
"label": "À emporter",
- "placeholder": "Oui, Non, À emporter seulement...",
"options": {
- "yes": "Oui",
"no": "Non",
- "only": "À emporter seulement"
- }
+ "only": "À emporter seulement",
+ "yes": "Oui"
+ },
+ "placeholder": "Oui, Non, À emporter seulement..."
},
"toilets/disposal": {
"label": "Élimination",
"options": {
- "flush": "Toilettes publiques",
- "pitlatrine": "Latrines",
+ "bucket": "Seau",
"chemical": "Chimique",
- "bucket": "Seau"
+ "flush": "Toilettes publiques",
+ "pitlatrine": "Latrines"
}
},
"tourism": {
},
"tracktype": {
"label": "Type de piste",
- "placeholder": "Dur, Majoritairement Dur, Mou...",
"options": {
"grade1": "Dur : pavé ou surface très compacte",
"grade2": "Majoritairement dur : gravier/pierre avec quelque matériaux mous mélangés dedans",
"grade3": "Mélange à égalité entre matériaux mous et durs",
"grade4": "Majoritairement mou : terre/sable/herbe avec quelque matériaux durs mélangés dedans",
"grade5": "Mou : terre/sable/herbe"
- }
+ },
+ "placeholder": "Dur, Majoritairement Dur, Mou..."
},
"trail_visibility": {
"label": "Visibilité du sentier",
- "placeholder": "Excellent, Bon, Mauvais...",
"options": {
+ "bad": "Mauvais: pas de balisage, sentier inconsistent",
"excellent": "Excellent: chemin clairement identifiable ou balisage fréquent",
"good": "Bon: balisage globalement visible",
- "intermediate": "Intermédiaire: peu de balisage, sentier identifiable",
- "bad": "Mauvais: pas de balisage, sentier inconsistent",
"horrible": "Horrible: sentier disaraît fréquemment, nécessite de s'orienter",
+ "intermediate": "Intermédiaire: peu de balisage, sentier identifiable",
"no": "Non: sans sentier, nécessite de bonnes compétences d'orientation"
- }
+ },
+ "placeholder": "Excellent, Bon, Mauvais..."
},
"trees": {
"label": "Arbres"
"water": {
"label": "Type"
},
+ "water_point": {
+ "label": "Point d'eau"
+ },
"waterway": {
"label": "Type"
},
"name": "Station de réparation de vélos",
"terms": "Borne de réparation de vélos,Point de réparation de vélos"
},
+ "amenity/biergarten": {
+ "name": "Brasserie de plein air",
+ "terms": "Brasserie, bière, boissons alcolisées"
+ },
"amenity/boat_rental": {
"name": "Location de bateau",
"terms": "Location de bateaux"
"name": "Restaurant",
"terms": "Restaurant"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Station de vidange sanitaire",
+ "terms": "Station de vidange, sanitaires, mobilehome ,camping, toilettes chimiques"
+ },
"amenity/school": {
"name": "Terrains d'école primaire, collège, lycée, Cycles primaires et secondaires",
"terms": "Terrains d'école primaire, collège, lycée, Cycles primaires et secondaires"
"name": "Phare",
"terms": "Phare"
},
+ "man_made/mast": {
+ "name": "Mât d'émission radio",
+ "terms": "Émetteur de téléphonie mobile, émetteur de téléphonie cellulaire, mât de transmission, pylône de transmission, tour haubanée, émetteur radio, émetteur de télévision, tour de télévision, tour de télédiffusion, ..."
+ },
"man_made/observation": {
"name": "Tour d'observation",
"terms": "Tour d'observation, Mirador"
},
+ "man_made/petroleum_well": {
+ "name": "Puits de pétrole",
+ "terms": "Puits de forage, derrick, chevalet de pompage, ..."
+ },
"man_made/pier": {
"name": "Jetée",
"terms": "Quai"
"name": "Pipeline",
"terms": "Pipeline, Gazoduc, Oleoduc"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "Réservoir, emplacement de stockage, ..."
+ },
+ "man_made/storage_tank": {
+ "name": "Réservoir de stockage",
+ "terms": "Silo de stockage"
+ },
"man_made/survey_point": {
"name": "Poteau de triangulation",
"terms": "Borne géodésique, monument géodésique, repère géodésique"
"name": "Grande ville (>100.000 habitants)",
"terms": "Ville"
},
+ "place/farm": {
+ "name": "Ferme isolée",
+ "terms": "Écart"
+ },
"place/hamlet": {
"name": "Hameau (Moins de 100 habitants)",
"terms": "Hameau"
"terms": "Transformateur"
},
"public_transport/platform": {
- "name": "Plateforme",
+ "name": "Plateforme d'attente",
"terms": "Quai"
},
"public_transport/stop_position": {
"name": "Relation",
"terms": "Relation"
},
+ "roundabout": {
+ "name": "Carrefour giratoire ",
+ "terms": "Rond-point"
+ },
"route/ferry": {
"name": "Trajet de ferry",
"terms": "Ligne de Ferry"
"name": "Canal d'évacuation d'eau pluviale",
"terms": "Drain"
},
+ "waterway/fuel": {
+ "name": "Station-service marine",
+ "terms": "Station-service nautique, nautisme, bateaux, essence"
+ },
"waterway/river": {
"name": "Rivière",
"terms": "Rivière"
"name": "Berge",
"terms": "Berge"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Station de vidange sanitaire marine",
+ "terms": "Station de vidange sanitaire nautique"
+ },
"waterway/stream": {
"name": "Ruisseau",
"terms": "Ruisseau"
+++ /dev/null
-{}
\ No newline at end of file
"commit": {
"title": "Gardar Cambios",
"description_placeholder": "Breve descrición das túas contribucións",
- "message_label": "Mensaxe de envío",
"upload_explanation": "Os cambios que subas serán visibles en tódolos mapas que usen os datos de OpenStreetMap.",
"upload_explanation_with_user": "Os cambios que subas como {user} serán visibles en tódolos mapas que usen os datos de OpenStreetMap.",
"save": "Gardar",
"title": "Gardar",
"help": "Gardar os cambios en OpenStreetMap, facéndoos visibles aos demáis usuarios.",
"no_changes": "Non hai cambios para gardar.",
- "error": "Ocorreu un erro mentras se intentaba gardar",
"uploading": "Subindo cambios a OpenStreetMap.",
"unsaved_changes": "Tes cambios sen gardar"
},
"title": "Superposición de fotos (Mapillary)"
},
"help": {
- "title": "Axuda",
- "help": "# Axuda\n\nEste é un editor para [OpenStreetMap](http://www.openstreetmap.org/), o\nmapa mundial libre e editable. Podes usalo para engadir e actualizar datos\nna túa zona, facendo un mellor mapa mundial de código e datos abertos\nmellor para todos.\n\nAs edicións que fagas neste mapa serán visibles a todos os que usen\nOpenStreetMap. Para facer unha edición, necesitarás unha\n[conta de OpenStreetMap gratuíta](https://www.openstreetmap.org/user/new).\n\nO [editor iD](http://ideditor.com/) é un proxecto colaborativo con [código\nfonte dispoñible en GitHub](https://github.com/openstreetmap/iD).\n"
+ "title": "Axuda"
},
"intro": {
"navigation": {
"fields": {
"access": {
"label": "Acceso",
- "placeholder": "Descoñecido",
- "types": {
- "access": "Xeral",
- "foot": "A pé",
- "motor_vehicle": "Automóbiles",
- "bicycle": "Bicicletas",
- "horse": "Cabalos"
- },
"options": {
- "yes": {
- "title": "Permitido",
- "description": "Acceso permitido pola lei; un dereito de paso"
+ "designated": {
+ "description": "Acceso permitido segundo sinais ou ordenanzas locais específicas",
+ "title": "Designado"
+ },
+ "destination": {
+ "description": "Acceso permitido só para chegar a un destino determinado",
+ "title": "Destino"
},
"no": {
- "title": "Prohibido",
- "description": "Acceso non permitido ao público en xeral"
+ "description": "Acceso non permitido ao público en xeral",
+ "title": "Prohibido"
},
"permissive": {
- "title": "Permisivo",
- "description": "Acceso permitido ata que o propietario revogue o permiso"
+ "description": "Acceso permitido ata que o propietario revogue o permiso",
+ "title": "Permisivo"
},
"private": {
- "title": "Privado",
- "description": "Acceso permitido só coa autorización do propietario de forma individual"
+ "description": "Acceso permitido só coa autorización do propietario de forma individual",
+ "title": "Privado"
},
- "designated": {
- "title": "Designado",
- "description": "Acceso permitido segundo sinais ou ordenanzas locais específicas"
- },
- "destination": {
- "title": "Destino",
- "description": "Acceso permitido só para chegar a un destino determinado"
+ "yes": {
+ "description": "Acceso permitido pola lei; un dereito de paso",
+ "title": "Permitido"
}
+ },
+ "placeholder": "Descoñecido",
+ "types": {
+ "access": "Xeral",
+ "bicycle": "Bicicletas",
+ "foot": "A pé",
+ "horse": "Cabalos",
+ "motor_vehicle": "Automóbiles"
}
},
"access_simple": {
"address": {
"label": "Enderezo",
"placeholders": {
+ "city": "Cidade",
+ "country": "País",
+ "hamlet": "Aldea",
"housename": "Nome da casa",
"housenumber": "123",
- "street": "Rúa",
- "city": "Cidade",
- "postcode": "Código postal",
"place": "Lugar",
- "hamlet": "Aldea",
- "suburb": "Barrio",
- "country": "País"
+ "postcode": "Código postal",
+ "street": "Rúa",
+ "suburb": "Barrio"
}
},
"admin_level": {
"cardinal_direction": {
"label": "Sentido",
"options": {
- "N": "Norte",
"E": "Leste",
- "S": "Sur",
- "W": "Oeste",
- "NE": "Nordeste",
- "SE": "Sueste",
- "SW": "Suroeste",
- "NW": "Noroeste",
- "NNE": "Nor-nordeste",
"ENE": "Les-nordeste",
"ESE": "Les-sueste",
+ "N": "Norte",
+ "NE": "Nordeste",
+ "NNE": "Nor-nordeste",
+ "NNW": "Nor-noroeste",
+ "NW": "Noroeste",
+ "S": "Sur",
+ "SE": "Sueste",
"SSE": "Sur-sueste",
"SSW": "Sur-suroeste",
- "WSW": "Oés-suroeste",
+ "SW": "Suroeste",
+ "W": "Oeste",
"WNW": "Oés-noroeste",
- "NNW": "Nor-noroeste"
+ "WSW": "Oés-suroeste"
}
},
"clock_direction": {
"label": "Sentido",
"options": {
- "clockwise": "Sentido horario",
- "anticlockwise": "Sentido antihorario"
+ "anticlockwise": "Sentido antihorario",
+ "clockwise": "Sentido horario"
}
},
"collection_times": {
"internet_access": {
"label": "Acceso a internet",
"options": {
- "yes": "Si",
"no": "Non",
- "wlan": "Wi-Fi",
+ "terminal": "Terminal",
"wired": "Por cable",
- "terminal": "Terminal"
+ "wlan": "Wi-Fi",
+ "yes": "Si"
}
},
"lamp_type": {
"oneway": {
"label": "Sentido único",
"options": {
+ "no": "Non",
"undefined": "Suponse Non",
- "yes": "Si",
- "no": "Non"
+ "yes": "Si"
}
},
"oneway_yes": {
"label": "Sentido único",
"options": {
+ "no": "Non",
"undefined": "Suponse Si",
- "yes": "Si",
- "no": "Non"
+ "yes": "Si"
}
},
"opening_hours": {
},
"structure": {
"label": "Estructura",
- "placeholder": "Descoñecido",
"options": {
"bridge": "Ponte",
- "tunnel": "Túnel",
+ "cutting": "Desmonte",
"embankment": "Terraplén",
- "cutting": "Desmonte"
- }
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Descoñecido"
},
"supervised": {
"label": "Vixiado"
-{}
\ No newline at end of file
+{
+ "modes": {
+ "add_area": {
+ "title": "क्षेत्र"
+ },
+ "add_line": {
+ "title": "रेखा"
+ },
+ "add_point": {
+ "title": "बिन्दु"
+ }
+ },
+ "operations": {
+ "continue": {
+ "key": "A",
+ "title": "जारी रखें"
+ },
+ "circularize": {
+ "key": "O"
+ }
+ },
+ "presets": {
+ "categories": {
+ "category-building": {
+ "name": "इमारत"
+ }
+ }
+ }
+}
\ No newline at end of file
"relation": "Relacija je obrisana.",
"multiple": "Obrisano je {n} objekata."
},
- "incomplete_relation": "Ovo se svojstvo ne može se obrisati jer nije potpuno preuzeto.",
+ "incomplete_relation": "Ova se značajka ne može se obrisati jer nije potpuno preuzeta.",
+ "part_of_relation": "Ova značajka se ne može obrisati jer je dio veće relacije. Moraš ju prvo obrisati iz relacije.",
"connected_to_hidden": "Ovo se ne može se obrisati jer je spojeno na skrivenu značajku."
},
"add_member": {
"area": "Područje je premješteno.",
"multiple": "Nekoliko objekata je premješteno."
},
- "incomplete_relation": "Ovo svojstvo se ne može premjestiti jer nije potpuno preuzeto.",
+ "incomplete_relation": "Ova značajka se ne može premjestiti jer nije potpuno preuzeto.",
"too_large": "Ovo se ne može premjestiti jer je premalo objekta trenutno vidljivo.",
"connected_to_hidden": "Ovo se ne može premjestiti jer je spojeno na skrivenu značajku."
},
"commit": {
"title": "Spremi promjene",
"description_placeholder": "Kratki opis tvojih doprinosa",
- "message_label": "Predaj poruku",
+ "message_label": "Komentar promjene",
"upload_explanation": "Promjene koje postaviš biti će vidljive na svim kartama koje koriste podatke OpenStreetMap-a.",
"upload_explanation_with_user": "Promjene koje postaviš kao {user} biti će vidljive na svim kartama koje koriste podatke OpenStreetMap-a.",
"save": "Spremi",
"list": "Uređivali {users}",
"truncated_list": "Uređivali {users} i {count} drugih"
},
+ "infobox": {
+ "selected": "{n} selektiranih",
+ "geometry": "Geometrija",
+ "closed": "zatvoreno",
+ "center": "Centar",
+ "perimeter": "Opseg",
+ "length": "Duljina",
+ "area": "Područje",
+ "centroid": "Centroid",
+ "location": "Lokacija",
+ "metric": "Metrički",
+ "imperial": "Imperijalni"
+ },
+ "geometry": {
+ "point": "točka",
+ "vertex": "čvor",
+ "line": "linija",
+ "area": "područje",
+ "relation": "relacija"
+ },
"geocoder": {
"search": "Globalna pretraga...",
"no_results_visible": "Nema rezultata na vidljivom dijelu karte",
"title": "Spremi",
"help": "Spremi promjene na OpenStreetMap, čime će biti vidljive drugim korisnicima.",
"no_changes": "Nema promjena za spremiti.",
- "error": "Dogodila se pogreška pri pokušaju spremanja.",
+ "error": "Došlo je do grešaka pri pokušaju spremanja",
+ "status_code": "Poslužitelj je vratio status kôd {code}",
"unknown_error_details": "Molim provjeri jesi li spojen na internet.",
"uploading": "Postavljanje promjena na OpenStreetMap.",
- "unsaved_changes": "Imaš nespremljenih promjena."
+ "unsaved_changes": "Imaš nespremljenih promjena.",
+ "conflict": {
+ "header": "Riješi konfliktna uređivanja",
+ "count": "Nedoumica {num} od {total}",
+ "previous": "< Prethodni",
+ "next": "Sljedeći >",
+ "keep_local": "Zadrži moje",
+ "keep_remote": "Koristi njihovo",
+ "restore": "Vrati",
+ "delete": "Ostavi obrisano",
+ "download_changes": "Ili preuzmi svoje promjene.",
+ "done": "Sve nedoumice su riješene!",
+ "help": "Drugi korisnik je uredio neke od značajki koje si i ti uredio/la. \nKlikni na svaku stavku ispod za dobivanje više detalja o konfliktu i odaberi koju treba zadržati\ntvoje promjene ili promjene drugog korisnika.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Ovaj objekt je obrisao {user}",
+ "location": "Ovaj objekt si pomaknuo/la ti i {user}.",
+ "nodelist": "Čvorove si promijenio/la ti i {user}.",
+ "memberlist": "Članove relacije si promijenio/la ti i {user}.",
+ "tags": "Promijenio/la su <b>{tag}</b> oznaku u \"{local}\" i {user} ju je promijenio/la u \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Uređen OSM!",
"help_html": "Tvoje promjene bi se trebale pojaviti u sloju \"Standard\" kroz par minuta. Za druge slojeve i određena svojstva trebati će više vremena.\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detalji</a>).\n"
},
"confirm": {
- "okay": "Ok"
+ "okay": "Ok",
+ "cancel": "Otkaži"
},
"splash": {
"welcome": "Dobrodošli na iD OpenStreetMap uređivač",
},
"help": {
"title": "Pomoć",
- "help": "# Pomoć\n\niD je program za uređivanje [OpenStreetMap](http://www.openstreetmap.org/), \nbesplatne karte svijeta. Možeš ga koristiti za dodavanje i obnavljanje podataka u \nsvom području, čime stvaraš bolju kartu svijeta slobodnih izvornika i podataka \ndostupnu svima.\n\nKorekcije koje napraviš na karti će biti vidljive svakome tko koristi\nOpenStreetMap. Da bi mogao/la uređivati kartu, trebaš [besplatni\nOpenStreetMap korisnički račun](https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) je suradnički projekt sa [izvornim kôdom dostupnim \nna GitHub-u](https://github.com/openstreetmap/iD).\n",
+ "help": "# Pomoć\n\niD je mrežna aplikacija za uređivanje [OpenStreetMap-a](http://www.openstreetmap.org/), \nbesplatne karte svijeta. Možeš ju koristiti za dodavanje \ni obnavljanje podataka u svojoj okolini, čime stvaraš bolju otvorenu kartu svijeta dostupnu svima, uključujući izvorne podatke karte. \n\nIspravke i sadržaj koji napraviš na karti biti će vidljive svakome tko koristi \nOpenStreetMap. Da bi mogao/la uređivati kartu, trebaš se \n[prijaviti] (https://www.openstreetmap.org/login). \n\n[iD editor](http://ideditor.com/) je suradnički projekt sa [izvornim kôdom \ndostupnim na GitHub-u](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Uređivanje i spremanje promjena\n\nOvaj uređivač je primarno dizajniran za uređivanje na mreži i trenutačno ga\nkoristiš kroz internet preglednik kao web stranicu.\n\n### Odabir značajki\n\nZa odabir značajke karte, npr. ceste ili točke od interesa, klikni na nju na karti.\nPojaviti će se obrub oko značajke, otvoriti će se bočno okno koje prikazuje više\ndetalja o značajki i prikazati će se alatni izbornik sa mogućnostima koje možeš\nnapraviti na značajki.\n\nZa odabir nekoliko značajki istovremeno, drži tipku \"Shift\". Zatim ili klikni na\nznačajke koje želiš odabrati ili klikni i povuci za crtanje četverokuta. Time ćeš\nodabrati sve točke unutar četverokuta.\n\n### Spremanje uređivanja\n\nKada napraviš promjene na karti, npr. urediš ulice, zgrade i mjesta, one su\nspremljene lokalno sve dok ih ne spremiš na server. Nemoraš se briniti ukoliko\nnapraviš pogrešku - možeš poništiti promjene klikom na tipku \"Opovrgni\" i\nponoviti promjene klikom na tipku \"Ponovi\".\n\nKlikni na tipku \"Spremi\" da završiš grupu promjena - na primjer ako si završio/la\npodručje grada i želiš početi uređivati novo područje. Nakon što stisneš \"Spremi\"\nmoći ćeš pregledati sve promjene koje si napravio/la i uređivač će ti dati korisne\nprijedloge i upozorenja ako je nešto neuobičajeno među promjenama.\n\nAko je sve u redu, možeš ostaviti kratak komentar u kojem ćeš opisati napravljenu\npromjenu na karti. Ponovno klikni \"Spremi\" za postavljanje promjena na\n[OpenStreetMap.org](http://www.openstreetmap.org/), gdje će biti vidljive svim\ndrugim korisnicima i dostupne drugima za dopunu i nadogradnju.\n\nAko ne možeš završiti sve planirane promjene odjednom, možeš ugasiti prozor\nuređivača i kasnije se vratiti (na isti internet preglednik i isto računalo) i uređivač\nće ti ponuditi da nastaviš gdje si stao/la. \n",
"roads": "# Ceste\n\nMožeš stvarati, popraviti/urediti i obrisati ceste pomoću ovog uređivača. Ceste\nmogu biti svih vrsta: puteljci, ceste, poljski putovi, biciklističke staze i drugo -\nsve staze preko kojih se često prolazi bi se trebale kartirati.\n\n### Odabir\n\nKlikni na cestu da ju odabereš. Pojaviti će se obrub oko ceste, zajedno s\nmalim alatnim izbornikom na karti i bočnim oknom koji prikazuje dodatne\ninformacije o selektiranoj cesti.\n\n### Uređivanje\n\nČesto ćeš vidjeti ceste koje se ne podudaraju s pozadinskim snimcima ili s\nGNSS tragom. Možeš urediti te ceste tako da se nalaze na ispravnom mjestu.\n\nPrvo klikni na cestu koju želiš urediti. To će ju označiti i prikazati kontrolne\ntočke unutar nje koje možeš premjestiti na točnije lokacije. Ako želiš dodati\nnove kontrolne točke za precizniju putanju, klikni dvoklikom na dio ceste gdje\nnema točke kako bi dodao/la novu.\n\nAko se cesta spaja s drugom cestom, ali nije ispravno spojena na karti, možeš\npovući kontrolnu točku na drugu cestu kako bi ih spojio/la. Spojene ceste su\nvrlo važne za kartu i osnova za omogućavanje uputa za navigaciju.\n\nTakođer možeš kliknuti alat \"Premjesti\" ili pritisnuti kraticu - tipku `M` za\npomak cijele ceste odjednom i zatim kliknuti ponovno za spremanje tog\npomaka.\n\n### Brisanje\n\nAko je cesta potpuno krivo ucrtana - ne vidi se na satelitskim snimkama i ako\nsi utvrdio/la da zbilja ne postoji uvidom na terenu možeš ju obrisati, što će ju\nobrisati s karte. Budi oprezan/na kada brišeš značajke - kao i kod svakog\ndrugog uređivanja rezultati su vidljivi svima, a satelitske snimke su često\nzastarjele, pa je moguće da je cesta nedavno sagrađena.\n\nZa brisanje ceste najprije ju označi, a zatim klikni na ikonicu kante za smeće ili\npritisni tipku \"Delete\".\n\n### Stvaranje\n\nAko si pronašao/la cestu koja bi trebala biti ucrtana ali nije, klikni ikonicu\n\"Linija\" na gornjem lijevom dijelu uređivača ili pritisni kraticu - tipku `2` da\nzapočneš crtanje linije.\n\nKlikni na početak ceste na karti da započneš crtanje. Ako se cesta odvaja od\npostojeće ceste, klikni na mjesto gdje se spajaju.\n\nZatim klikni na točke duž ceste tako da prate ispravnu putanju ceste, prema\npodacima satelitske snimke ili GNSS traga. Ako se cesta koju crtaš križa s\ndrugom cestom, spoji ih klikom na mjestu raskrižja. Kada si završio/la s\ncrtanjem, klikni dvoklikom sastrane ili pritisni tipku \"Return\" ili \"Enter\" na\ntipkovnici.\n",
"gps": "# GNSS \n\nGNSS podaci su najpouzdaniji izvor podataka za OpenStreetMap. Ovaj uređivač podržava lokalne tragove - `.gpx` datoteteke s tvog računala. Takav oblik GNSS traga možeš prikupiti s raznim aplikacijama za pametne telefone kao i s drugim GNSS/GPS uređajima.\n\nZa više informacija o postupku izmjere pomoću GNSS satelita, pročitaj članak [\"Mjerenje sa GPS-om\"](http://learnosm.org/en/beginner/using-gps/).\n\nKako bi koristio GPX tragove za kartiranje, povuci i ispusti GPX datoteku na uređivač karte. Ako se datoteka ispravno učita, biti će dodana na kartu kao linija svjetlo ljubičaste boje. Klikni na izbornik \"Podaci karte\" s desne strane za uključivanje, isključivanje ili povećanje na taj novi GPX sloj.\n\nGPX trag nije direktno postavljen na OpenStreetMap, samo je prikazan na karti. Da bi ga iskoristio/la na najbolji način, preko njega crtaj na karti koristeći ga kao vodilju za dodavanje novih značajki. Trag možeš također [postaviti na OpenStreetMap](http://www.openstreetmap.org/trace/create) kako bi ga i drugi\nkorisnici mogli koristiti.\n",
"fields": {
"access": {
"label": "Pristup",
- "placeholder": "Nepoznat",
- "types": {
- "access": "Općeniti pristup",
- "foot": "Pješacima",
- "motor_vehicle": "Motornim vozilima",
- "bicycle": "Biciklima",
- "horse": "Konjima"
- },
"options": {
- "yes": {
- "title": "Dozvoljeno",
- "description": "Regulirano zakonom, pravilo desne strane"
+ "designated": {
+ "description": "Pristup dozvoljen prema znakovima ili prema lokalnom zakonu",
+ "title": "Označeno"
+ },
+ "destination": {
+ "description": "Pristup dozvoljen samo za pristup destinaciji",
+ "title": "Destinacija"
},
"no": {
- "title": "Zabranjeno",
- "description": "Pristup nije dozvoljen javnosti"
+ "description": "Pristup nije dozvoljen javnosti",
+ "title": "Zabranjeno"
},
"permissive": {
- "title": "Dopustivo",
- "description": "Pristup dozvoljen dok vlasnik ne zabrani"
+ "description": "Pristup dozvoljen dok vlasnik ne zabrani",
+ "title": "Dopustivo"
},
"private": {
- "title": "Privatno",
- "description": "Pristup dozvoljen samo s dozvolom vlasnika na pojedinačnoj bazi"
+ "description": "Pristup dozvoljen samo s dozvolom vlasnika na pojedinačnoj bazi",
+ "title": "Privatno"
},
- "designated": {
- "title": "Označeno",
- "description": "Pristup dozvoljen prema znakovima ili prema lokalnom zakonu"
- },
- "destination": {
- "title": "Destinacija",
- "description": "Pristup dozvoljen samo za pristup destinaciji"
+ "yes": {
+ "description": "Regulirano zakonom, pravilo desne strane",
+ "title": "Dozvoljeno"
}
+ },
+ "placeholder": "Nepoznat",
+ "types": {
+ "access": "Općeniti pristup",
+ "bicycle": "Biciklima",
+ "foot": "Pješacima",
+ "horse": "Konjima",
+ "motor_vehicle": "Motornim vozilima"
}
},
"access_simple": {
"address": {
"label": "Adresa",
"placeholders": {
+ "city": "Grad",
+ "country": "Država",
+ "district": "Oblast",
+ "hamlet": "Zaseok",
"housename": "Naziv kuće",
"housenumber": "123",
- "street": "Ulica",
- "city": "Grad",
- "postcode": "Poštanski broj",
"place": "Mjesto",
- "hamlet": "Zaseok",
- "suburb": "Predgrađe",
- "subdistrict": "Okrug",
- "district": "Oblast",
+ "postcode": "Poštanski broj",
"province": "Pokrajina",
"state": "Savezna država, republika",
- "country": "Država"
+ "street": "Ulica",
+ "subdistrict": "Okrug",
+ "suburb": "Predgrađe"
}
},
"admin_level": {
"aerialway/access": {
"label": "Pristup",
"options": {
+ "both": "Oba",
"entry": "Ulaz",
- "exit": "Izlaz",
- "both": "Oba"
+ "exit": "Izlaz"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Pristup (ljeto)",
"options": {
+ "both": "Oba",
"entry": "Ulaz",
- "exit": "Izlaz",
- "both": "Oba"
+ "exit": "Izlaz"
}
},
"aeroway": {
"boundary": {
"label": "Vrsta"
},
+ "brand": {
+ "label": "Marka"
+ },
"building": {
"label": "Zgrada"
},
"cardinal_direction": {
"label": "Smijer",
"options": {
- "N": "Sjever",
"E": "Istok",
- "S": "Jug",
- "W": "Zapad",
- "NE": "Sjeveroistok",
- "SE": "Jugoistok",
- "SW": "Jugozapad",
- "NW": "Sjeverozapad",
- "NNE": "Sjever-sjeveroistok",
"ENE": "Istok-sjeveroistok",
"ESE": "Istok-jugoistok",
+ "N": "Sjever",
+ "NE": "Sjeveroistok",
+ "NNE": "Sjever-sjeveroistok",
+ "NNW": "Sjever-sjeverozapad",
+ "NW": "Sjeverozapad",
+ "S": "Jug",
+ "SE": "Jugoistok",
"SSE": "Jug-jugoistok",
"SSW": "Jug-jugozapad",
- "WSW": "Zapad-jugozapad",
+ "SW": "Jugozapad",
+ "W": "Zapad",
"WNW": "Zapad-sjeverozapad",
- "NNW": "Sjever-sjeverozapad"
+ "WSW": "Zapad-jugozapad"
}
},
"clock_direction": {
"label": "Smjer",
"options": {
- "clockwise": "U smijeru kazaljke za satu",
- "anticlockwise": "U suprotnom smijeru od kazaljke na satu"
+ "anticlockwise": "U suprotnom smijeru od kazaljke na satu",
+ "clockwise": "U smijeru kazaljke za satu"
}
},
"collection_times": {
},
"electrified": {
"label": "Elektrifikacija",
- "placeholder": "Dodirna crta, elektrificirana željeznica",
"options": {
"contact_line": "Dodirna crta",
+ "no": "Ne",
"rail": "Elektrificirana željeznica",
- "yes": "Da (nedefinirano)",
- "no": "Ne"
- }
+ "yes": "Da (nedefinirano)"
+ },
+ "placeholder": "Dodirna crta, elektrificirana željeznica"
},
"elevation": {
"label": "Nadmorska visina"
"label": "Vrsta",
"options": {
"pillar": "Stub/nadzemni",
+ "pond": "Jezerce",
"underground": "Podzemni",
- "wall": "Zid",
- "pond": "Jezerce"
+ "wall": "Zid"
}
},
"fixme": {
"gauge": {
"label": "Širina kolosijeka"
},
+ "gender": {
+ "label": "Spol",
+ "options": {
+ "female": "Žensko",
+ "male": "Muško",
+ "unisex": "Unisex"
+ },
+ "placeholder": "Nepoznato"
+ },
"generator/method": {
"label": "Metoda"
},
"incline": {
"label": "Nagib"
},
+ "incline_steps": {
+ "label": "Nagib",
+ "options": {
+ "down": "Dolje",
+ "up": "Gore"
+ }
+ },
"information": {
"label": "Vrsta"
},
"internet_access": {
"label": "Dostupan internet",
"options": {
- "yes": "Da",
"no": "Ne",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Žično",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Da"
}
},
"lamp_type": {
"placeholder": "2, 4, 6..."
},
"lit": {
- "label": "Ulična rasvjeta"
+ "label": "Osvijetljeno"
},
"location": {
"label": "Lokacija"
},
"mtb/scale": {
"label": "Težina brdske biciklističke staze",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Tvrd tucanik/nabijena zemlja, bez prepreka, blage krivine",
"1": "1: Malo neravna površina, male prepreke, blage krivine",
"4": "4: Neravna površina ili veliko kamenje, opasne krivine",
"5": "5: Maksimalno težak teren, polja kamenih gromada, odroni",
"6": "6: Nije za vožnju osim za najbolje brdske bicikliste"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
- "placeholder": "Lagano, srednje, teško...",
+ "label": "Težina staze po IMBA",
"options": {
"0": "Najlakše (bijeli krug)",
- "1": "Lagano (zeleni krug)",
+ "1": "Lagano (plava staza)",
"2": "Srednje (plavi kvadrat)",
"3": "Teško (crni dijamant)",
"4": "Izuzetno teško (dupli crni dijamant)"
- }
+ },
+ "placeholder": "Lagano, srednje, teško..."
},
"mtb/scale/uphill": {
"label": "Težina uspona staze za brdski biciklizam",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Prosječan nagib <10%, tucanik/nabijena zemlja, bez prepreka",
"1": "1: Prosječan nagib <15%, tucanik/nabijena zemlja, manje prepreke",
"3": "3: Prosječan nagib <25%, raznolika površina, kamenje veličine šake/granje",
"4": "4: Prosječan nagib <30%, loši uvjeti, veliko kamenje/granje",
"5": "5: Jako strmo, bicikl je uglavnom potrebno gurati ili nositi"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Ime",
"oneway": {
"label": "Jednosmjerna",
"options": {
+ "no": "Ne",
"undefined": "Pretpostavlja se da je Ne",
- "yes": "Da",
- "no": "Ne"
+ "yes": "Da"
}
},
"oneway_yes": {
"label": "Jednosmjerno",
"options": {
+ "no": "Ne",
"undefined": "Pretpostavlja se da je Da",
- "yes": "Da",
- "no": "Ne"
+ "yes": "Da"
}
},
"opening_hours": {
- "label": "Sati"
+ "label": "Radno vrijeme"
},
"operator": {
"label": "Operator"
"parking": {
"label": "Vrsta",
"options": {
- "surface": "Površinski",
- "multi-storey": "Višerazinski",
- "underground": "Podzemni",
- "sheds": "Šupe",
"carports": "Nastrešnica",
"garage_boxes": "Boks garaža",
- "lane": "Parking uz prometnicu"
+ "lane": "Parking uz prometnicu",
+ "multi-storey": "Višerazinski",
+ "sheds": "Šupe",
+ "surface": "Površinski",
+ "underground": "Podzemni"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Težina",
- "placeholder": "Lagano, srednje, napredno...",
"options": {
- "novice": "Početnik (nastavni)",
+ "advanced": "Napredno (crna staza)",
"easy": "Lagano (zeleni krug)",
- "intermediate": "Srednje (plavi kvadrat)",
- "advanced": "Napredno (crni dijamant)",
"expert": "Ekspert (dupli crni dijamant)",
+ "extreme": "Ekstremno (potrebna oprema za penjanje)",
"freeride": "Slobodna vožnja (izvan staze)",
- "extreme": "Ekstremno (potrebna oprema za penjanje)"
- }
+ "intermediate": "Srednje (crvena staza)",
+ "novice": "Za početnike (baby staza)"
+ },
+ "placeholder": "Lagano, srednje, napredno..."
},
"piste/grooming": {
+ "label": "Uređenje staze",
"options": {
- "mogul": "Brežuljkasti"
+ "backcountry": "Neuređeno, \"off piste\"",
+ "classic": "Klasično",
+ "classic+skating": "Klasično i riblja kost",
+ "mogul": "Hupseri",
+ "scooter": "Za snježni skuter ili motorne sanjke",
+ "skating": "Riblja kost"
}
},
"piste/type": {
"label": "Vrsta",
"options": {
- "downhill": "Spust",
- "nordic": "Nordijsko",
+ "downhill": "Alpsko skijanje",
+ "hike": "Pješačenje",
+ "ice_skate": "Klizanje na ledu",
+ "nordic": "Nordijsko skijanje",
+ "playground": "Igralište za djecu",
"skitour": "Ski obilazak",
"sled": "Sanjkanje",
- "hike": "Pješačenje",
"sleigh": "Zaprežne sanjke",
- "ice_skate": "Klizanje na ledu",
- "snow_park": "Snježni park",
- "playground": "Igralište za djecu"
+ "snow_park": "Snježni park"
}
},
"place": {
"label": "Vrsta"
},
+ "population": {
+ "label": "Broj stanovnika"
+ },
"power": {
"label": "Vrsta"
},
"restriction": {
"label": "Vrsta"
},
+ "restrictions": {
+ "label": "Zabrane skretanja"
+ },
"route": {
"label": "Vrsta"
},
"route_master": {
"label": "Vrsta"
},
+ "sac_scale": {
+ "options": {
+ "alpine_hiking": "T4: Alpinističko planinarenje",
+ "demanding_alpine_hiking": "T5: Zahtjevno alpinističko planinarenje",
+ "demanding_mountain_hiking": "T3: Zahtjevno planinarenje",
+ "difficult_alpine_hiking": "T6: Teško alpinističko planinarenje",
+ "hiking": "T1: Pješačenje",
+ "mountain_hiking": "T2: Planinarenje"
+ }
+ },
"service": {
"label": "Vrsta"
},
+ "service/bicycle/chain_tool": {
+ "options": {
+ "no": "Ne",
+ "undefined": "Pretpostavlja se da je Ne",
+ "yes": "Da"
+ }
+ },
+ "service/bicycle/pump": {
+ "options": {
+ "no": "Ne",
+ "undefined": "Pretpostavlja se da je Ne",
+ "yes": "Da"
+ }
+ },
"shelter": {
"label": "Sklonište"
},
"shop": {
"label": "Vrsta"
},
+ "smoking": {
+ "label": "Pušenje",
+ "options": {
+ "isolated": "U prostorijama za pušenje fizički odvojenima",
+ "no": "Nedozvoljeno svugdje",
+ "outside": "Dopušteno vani",
+ "separated": "U djelovima za pušenje koji nisu fizički odvojeni",
+ "yes": "Dopušteno svugdje"
+ },
+ "placeholder": "Ne, odvojeno, da..."
+ },
+ "smoothness": {
+ "label": "Glatkost",
+ "options": {
+ "bad": "Jači kotači: trekking bicikl, automobil, rikša",
+ "excellent": "Tanki kotačići: role, skejtbord",
+ "good": "Tanki kotači: bicikli trkačice",
+ "horrible": "Off road: prava off-road vozila",
+ "impassable": "Neprolazno / nijedno vozilo sa kotačima",
+ "intermediate": "Kotači: gradski bicikl, kolica za invalide, skuteri",
+ "very_bad": "Visoko podvozje: gradski terenci, SUV-ovi",
+ "very_horrible": "Specijalizirana off-road vozila: traktori, quad vozila"
+ },
+ "placeholder": "Mali kotačići, kotači, off-road"
+ },
"source": {
"label": "Izvor"
},
},
"structure": {
"label": "Konstrukcija",
- "placeholder": "Nepoznat",
"options": {
"bridge": "Most",
- "tunnel": "Tunel",
+ "cutting": "Usjek",
"embankment": "Nasip",
- "cutting": "Usjek"
- }
+ "tunnel": "Tunel"
+ },
+ "placeholder": "Nepoznat"
},
"supervised": {
"label": "Pod nadzorom"
"trail_visibility": {
"label": "Vidljivost staze"
},
+ "trees": {
+ "label": "Drveće"
+ },
"tunnel": {
"label": "Tunel"
},
"wheelchair": {
"label": "Pristup s invalidskim kolicima"
},
+ "width": {
+ "label": "Širina (u metrima)"
+ },
"wikipedia": {
"label": "Wikipedia"
}
"terms": "praonica automobila"
},
"amenity/charging_station": {
- "name": "Punionica"
+ "name": "Punionica za električna vozila",
+ "terms": "električna punionica,pumpa za električna vozila"
+ },
+ "amenity/childcare": {
+ "name": "Jaslice"
},
"amenity/cinema": {
"name": "Kino",
"amenity/shelter": {
"name": "Sklonište"
},
+ "amenity/social_facility": {
+ "name": "Socijalna ustanova"
+ },
"amenity/social_facility/homeless_shelter": {
"name": "Sklonište za beskućnike"
},
"entrance": {
"name": "Ulaz/izlaz"
},
+ "footway/crossing": {
+ "name": "Pružni prijelaz za pješake"
+ },
+ "footway/crosswalk": {
+ "name": "Pješački prijelaz"
+ },
+ "footway/sidewalk": {
+ "name": "Pločnik"
+ },
"golf/rough": {
"name": "Grubo"
},
"name": "Šuma",
"terms": "šuma,održavana šuma,šuma nasada,upravljana šuma"
},
+ "landuse/garages": {
+ "name": "Garaže"
+ },
"landuse/grass": {
"name": "Travnjak"
},
+ "landuse/industrial": {
+ "name": "Industrijska zona"
+ },
+ "landuse/landfill": {
+ "name": "Odlagalište otpada"
+ },
"landuse/meadow": {
"name": "Livada"
},
+ "landuse/military": {
+ "name": "Vojna zona"
+ },
"landuse/orchard": {
"name": "Voćnjak"
},
"landuse/quarry": {
"name": "Kamenolom"
},
+ "landuse/residential": {
+ "name": "Stambena zona"
+ },
+ "landuse/retail": {
+ "name": "Trgovačka zona"
+ },
"landuse/vineyard": {
"name": "Vinograd"
},
"name": "Golf tečaj",
"terms": "golf teren"
},
+ "leisure/ice_rink": {
+ "name": "Klizalište"
+ },
"leisure/marina": {
"name": "Marina",
"terms": "marina"
"name": "Igralište",
"terms": "dječje igralište,penjalice,tobogan,vrtuljak"
},
+ "leisure/running_track": {
+ "name": "Staza za trčanje"
+ },
"leisure/slipway": {
"name": "Navoz za brodove",
"terms": "istezalište"
"name": "Prosjeka",
"terms": "prosjeka,prosječen pojas u šumi,šumska prosjeka,prosjeka šume,prosjeka u šumi,prosjeka kroz šumu"
},
+ "man_made/embankment": {
+ "name": "Nasip"
+ },
+ "man_made/flagpole": {
+ "name": "Jarbol za zastavu"
+ },
"man_made/lighthouse": {
"name": "Svjetionik",
"terms": "svjetionik,svjetlosni signal,toranj za svjetlosnu navigaciju"
"name": "Plaža",
"terms": "plaža,mjesto za kupanje,obala za kupanje,prostor uz more,prostor uz more uređen za kupanje,kupanje,pjeskovita obala,kupalište,žal"
},
+ "natural/cave_entrance": {
+ "name": "Ulaz u pećinu"
+ },
"natural/cliff": {
"name": "Litica",
"terms": "litica,stijena"
"office/ngo": {
"name": "Nevladina organizacija"
},
+ "office/political_party": {
+ "name": "Politička stranka"
+ },
"office/travel_agent": {
"name": "Putnička agencija"
},
"name": "Trafostanica",
"terms": "ts,trafostanica"
},
+ "power/substation": {
+ "name": "Trafostanica"
+ },
"power/tower": {
"name": "Visokonaponski stup",
"terms": "električni stup,stup dalekovoda,dalekovod"
"name": "Relacija",
"terms": "relacija,odnos objekata,veza objekata,relacija između objekata"
},
+ "roundabout": {
+ "name": "Kružni tok"
+ },
"route/ferry": {
"name": "Brodska linija",
"terms": "trajektna linija,trajektna ruta,brodska ruta"
"name": "Prodavaonica alkoholnih pića",
"terms": "prodavaonica alkoholnih pića,diskont pića,dućan pića,dućan s pićem"
},
+ "shop/antiques": {
+ "name": "Antikvarijat"
+ },
+ "shop/art": {
+ "name": "Umjetnička galerija"
+ },
"shop/bakery": {
"name": "Pekara",
"terms": "pekara,pekarnica,pekarna"
},
+ "shop/bathroom_furnishing": {
+ "name": "Prodavaonica kupaonske opreme"
+ },
"shop/beauty": {
"name": "Kozmetički salon",
"terms": "kozmetički salon,solarij,salon ljepote,pediker,beauty centar"
"name": "prodavaonica bicikala",
"terms": "trgovina biciklima"
},
+ "shop/books": {
+ "name": "Knjižara"
+ },
"shop/boutique": {
"name": "Butik",
"terms": "butik,trgovina odjeće"
"name": "Automehaničar",
"terms": "automehaničar,auto-servis,auto servis"
},
+ "shop/carpet": {
+ "name": "Prodavaonica tepiha"
+ },
+ "shop/cheese": {
+ "name": "Prodavaonica sira"
+ },
"shop/chemist": {
"name": "Drogerija",
"terms": "ljekarna, farmacija, apoteka"
},
+ "shop/chocolate": {
+ "name": "Prodavaonica čokolade"
+ },
"shop/clothes": {
"name": "Prodavaonica odjeće",
"terms": "dućan sa odjećom"
"name": "Prodavaonica računala",
"terms": "trgovina računalne opreme"
},
+ "shop/confectionery": {
+ "name": "Prodavaonica slatkiša"
+ },
"shop/convenience": {
"name": "Trgovina mješovitom robom",
"terms": "dućan,trgovina,prodavaonica,samoposluga,kvartovska trgovina,trgovina mješovitom robom, prodavaonica mješovite robe"
},
+ "shop/cosmetics": {
+ "name": "Prodavaonica kozmetike"
+ },
+ "shop/dairy": {
+ "name": "Prodavaonica mliječnih proizvoda"
+ },
"shop/deli": {
"name": "Prodavaonica delikatesa",
"terms": "delikatesni dućan,trgovina delikatesama"
"name": "Uradi sam",
"terms": "alat,vrt,uređenje doma,bauhaus,pevec,uradi sam"
},
+ "shop/dry_cleaning": {
+ "name": "Kemijska čistionica"
+ },
"shop/electronics": {
"name": "Prodavaonica elektronike",
"terms": "trgovina elektroničke opreme,prodavaonica elektroničke robe,trgovina elektroničke robe,prodavaonica elektroničke opreme,dućan s elektroničkom opremom,dućan elektroničke robe"
},
+ "shop/erotic": {
+ "name": "Prodavaonica erotskih pomagala",
+ "terms": "erotika, eros, pornjava,sexy shop"
+ },
"shop/farm": {
"name": "Prodavaonica proizvoda farme"
},
"name": "Željezarija",
"terms": "željezarija,željezar"
},
+ "shop/hearing_aids": {
+ "name": "Prodavaonica slušnih pomagala"
+ },
"shop/hifi": {
"name": "Prodavaonica audio opreme",
"terms": "trgovina audio opreme"
"name": "Zlatarnica",
"terms": "zlatarna,zlatara,zlatar"
},
+ "shop/kiosk": {
+ "name": "Kiosk za novine"
+ },
"shop/laundry": {
"name": "Praonica rublja",
"terms": "praonica rublja"
"name": "Trgovački centar",
"terms": "šoping centar,trgovački centar,outlet centar,prodajni centar"
},
+ "shop/massage": {
+ "name": "Studio za masažu"
+ },
"shop/mobile_phone": {
"name": "Prodavaonica mobilnih telefona",
"terms": "prodavaonica mobitela"
"name": "Optičar",
"terms": "optičar"
},
+ "shop/pawnbroker": {
+ "name": "Zalagaonica"
+ },
"shop/pet": {
"name": "Prodavaonica kućnim ljubimcima",
"terms": "dućan za kućne ljubimce,dućan s kućnim ljubimcima,pet store,pet shop,trgovina kućnim ljubimcima,trgovina za kućne ljubimce,prodavaonica kućnih ljubimaca,prodavaonica ljubimaca,prodavaonica za kućne ljubimce"
"shop/photo": {
"name": "Prodavaonica fotografske opreme"
},
+ "shop/pyrotechnics": {
+ "name": "Prodavaonica za pirotehniku",
+ "terms": "vatromet,pirotehnika,petarda,prskalice"
+ },
+ "shop/religion": {
+ "name": "Prodavaonica religioznih pomagala"
+ },
+ "shop/scuba_diving": {
+ "name": "Prodavaonica opreme za ronjenje"
+ },
+ "shop/seafood": {
+ "name": "Ribarnica"
+ },
"shop/shoes": {
"name": "Prodavaonica obuće",
"terms": "trgovina obuće,dućan s obućom,trgovina obućom,prodavaonica obuće,prodavaonica cipela,trgovina s cipelama,dućan s cipelama,prodavaonica patika,trgovina s patikama,dućan s patikama,prodavaonica tenisicama,trgovina s tenisicama,dućan s tenisicama"
"name": "Veletrgovina",
"terms": "veletrgovina,supermarket,trgovina,samoposluga,"
},
+ "shop/tailor": {
+ "name": "Krojač"
+ },
+ "shop/tattoo": {
+ "name": "Studio za tetoviranje",
+ "terms": "tetovaže,pirsing,tetoviranje,salon za tetoviranje"
+ },
"shop/toys": {
"name": "Prodavaonica igračaka",
"terms": "trgovina igračaka,trgovina s igračkama,trgovina igračkama,dućan s igračkama,prodavaonica igračaka"
"name": "Videoteka",
"terms": "videoteka,video,video-kaseta,video kaseta,video kazeta,video-kazeta,iznajmljivanje video kazeta,iznajmljivanje dvda,iznajmljivanje dvd-a,dvd,blue ray,iznajmljivanje blue raya,blue-ray,iznajmljivanje blue-raya"
},
+ "shop/video_games": {
+ "name": "Prodavaonica video igara",
+ "terms": "računalne igre, igrice"
+ },
+ "shop/wine": {
+ "name": "Vinarija"
+ },
"tourism": {
"name": "Turizam",
"terms": "turizam,seoski turizam"
"name": "Zološki vrt",
"terms": "zoološki vrt,zoopark,park sa životinjama"
},
+ "traffic_calming/bump": {
+ "name": "Uspornik",
+ "terms": "ležeći policajac"
+ },
"type/boundary": {
"name": "Granica",
"terms": "granica,međa,linija,linija razgraničenja"
"name": "Ograničenje",
"terms": "ograničenje,blokiranje,ograničavanje,restrikcija,zadržavanje,zabrana,zabrana za vozila,zabrana pristupa"
},
+ "type/restriction/no_left_turn": {
+ "name": "Zabranjeno lijevo skretanje"
+ },
+ "type/restriction/no_right_turn": {
+ "name": "Zabranjeno desno skretanje"
+ },
+ "type/restriction/no_straight_on": {
+ "name": "Zabranjeno produživanje ravno"
+ },
+ "type/restriction/no_u_turn": {
+ "name": "Zabranjeno polukružno okretanje"
+ },
+ "type/restriction/only_left_turn": {
+ "name": "Obavezno lijevo skretanje"
+ },
+ "type/restriction/only_right_turn": {
+ "name": "Obavezno desno skretanje"
+ },
+ "type/restriction/only_straight_on": {
+ "name": "Zabranjena sva skretanja"
+ },
"type/route": {
"name": "Ruta",
"terms": "ruta,linija,pravac"
},
"straighten": {
"title": "Kiegyenesít",
- "description": "Vonal kiegyenesítése",
+ "description": "Vonal kiegyenesítése.",
"key": "S",
"annotation": "Vonal kiegyenesítve.",
"too_bendy": "Nem lehet kiegyenesíteni, mert túl nagy ívben hajlik.",
"multiple": "{n} objektum törlése."
},
"incomplete_relation": "Az elem nem törölhető, mert nem lett teljesen letöltve.",
+ "part_of_relation": "Ezt az elemet nem lehet törölni, mert egy nagyobb kapcsolat része. Elsőként el kell távolítanod a kapcsolatból.",
"connected_to_hidden": "Nem törölhető, mert egy rejtett elemhez csatlakozik."
},
"add_member": {
"commit": {
"title": "Módosítások Mentése",
"description_placeholder": "A közreműködésed rövid összefoglalója",
- "message_label": "Módosítási üzenet",
"upload_explanation": "Az általad feltöltött változtatások minden OpenStreetMapet használó térképen láthatóak lesznek.",
"upload_explanation_with_user": "Az általad {user} néven feltöltött változtatások minden OpenStreetMapet használó térképen láthatóak lesznek.",
"save": "Mentés",
"title": "Mentés",
"help": "Változtatások mentése OpenStreetMapre, és láthatóvá tétele más szerkesztők számára.",
"no_changes": "Nincs mit elmenteni.",
- "error": "Mentés közben hiba történt",
+ "error": "Mentés közben több hiba történt",
+ "status_code": "A szerver a(z) {code} státuszkóddal válaszolt",
"unknown_error_details": "Győződjön meg arról, hogy csatlakozik-e az internethez.",
"uploading": "Változtatások mentése OpenStreetMapre.",
- "unsaved_changes": "Elmentetlen változtatásaid vannak"
+ "unsaved_changes": "Elmentetlen változtatásaid vannak",
+ "conflict": {
+ "header": "Ütköző módosítások feloldása",
+ "count": "{num}. ütközés (összesen: {total})",
+ "previous": "< Előző",
+ "next": "Következő >",
+ "keep_local": "Enyém megtartása",
+ "keep_remote": "Övé használata",
+ "restore": "Visszaállítás",
+ "delete": "Hagyja törölve",
+ "download_changes": "Vagy töltsd le változtatásaidat.",
+ "done": "Minden ütközés feloldva!",
+ "help": "Valaki más is változtatott azon a térképrészleten, amin te is dolgoztál.\nKattints az alábbi elemekre, hogy megtudj többet az ütközésekről és eldöntsd, hogy a te vagy\naz ő változtatásait szeretnéd-e megtartani.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Ezt az objektumot törölte {user}.",
+ "location": "Ezt az objektumot te és {user} is áthelyezte.",
+ "tags": "Te megváltoztattad a(z) <b>{tag}</b> címkét erre: \"{local}\", {user} pedig erre: \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM szerkesztve!",
"help_html": "Módosításaid néhány perc múlva megjelennek a \"Standard\" rétegen. Más rétegeken ez tovább tarthat\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
},
"confirm": {
- "okay": "Oké"
+ "okay": "Oké",
+ "cancel": "Mégsem"
},
"splash": {
"welcome": "Üdvözöl az iD OpenStreetMap szerkesztőprogram",
},
"help": {
"title": "Súgó",
- "help": "# Súgó\n\nEz egy szerkesztő az [OpenStreetMap](http://www.openstreetmap.org/)-hoz, az ingyenes és szerkeszthető világtérképhez. A környezetedről tölthetsz fel, vagy frissíthetsz adatokat, ezáltal mindenki számára jobbá téve egy ingyenes térképet.\n\nAmit ezen a térképen alkotsz, mindenki számára látható lesz, aki használja az OpenStreetMap-ot. A szerkesztéshez mindösszesen egy [ingyenes OpenStreetMap fiókra](https://www.openstreetmap.org/user/new) lesz szükséged.\n\nAz [iD szerkesztő](http://ideditor.com/) egy együttműködésen alapuló projekt, a [GitHub-on elérhető forráskóddal](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Szerkesztés és Mentés\n\nA szerkesztőt elsődlegesen online munkára tervezték és te jelenleg\negy weblapon éred el.\n\n### Elemek kiválasztása\n\nEgy térképelem, mint út vagy érdekes hely kiválasztásához kattints rá a térképen.\nEttől a kiválasztott elem kiemelődik és megnyílik egy panel az adataival,\nés egy menüvel, ami mutatja, miket tudsz az elemmel csinálni.\n\nTöbb elemet a 'Shift' gomb nyomva tartása közbeni kattintással, vagy\nhúzással tudsz kiválasztani. A húzással kijelölöd a bekeretezett részen lévő\nösszes elemet, lehetővé téve, hogy egyszerre több mindent változtass.\n\n### Szerkesztések mentése\n\nAmikor utakat, épületeket, helyeket szerkesztesz, ezek a változások\nhelyileg lesznek tárolva, amíg nem mented őket a szerverre. Ne aggódj, ha \nelrontasz valamit - vissza tudod vonni a változtatásaidat a visszavonás gombra\nkattintva, a mégis gombra kattintva pedig a korábban visszavont változtatásaidat\nállíthatod vissza.\n\nKattints a 'Mentés' gombra, ha végeztél egy terület szerkesztésével - például,\nha befejezted egy város részletének szerkesztését és egy másik területet szeretnél\nszerkeszteni. Lehetőséged lesz visszanézni, hogy mit csináltál. A szerkesztő hasznos\ntanácsokat biztosít és figyelmeztet ha valami nem tűnik megfelelőnek a változtatásaiddal.\n\nHa minden rendben van, beírhatsz egy rövid ismertetést a szerkesztéseiddel kapcsolatban\nés újból a 'Mentés' gombra kattintva közzéteheted a változtatásaidat és az információkat\nvelük kapcsolatban az [OpenStreetMap.org](http://www.openstreetmap.org/) webhelyen,\nahol az összes felhasználónak láthatóak és elérhetőek lesznek, hogy azokra építhessenek,\nfejleszthessék azokat.\n\nHa nem tudod befejezni a szerkesztéseidet egyszerre, elhagyhatod a szerkesztő ablakot, mert\namikor visszatérsz (ugyanazzal a böngészővel és számítógéppel), a szerkesztő fel fogja ajánlani,\nhogy visszaállítsa-e a korábbi munkádat.\n",
"roads": "# Utak\n\nA szerkesztőprogrammal tudsz utakat létrehozni, javítani és törölni. Az utak \nsokfélék lehetnek: ösvények, közutak, kerékpárutak, stb. – minden gyakran \nkeresztezett szakaszt térképezni kell.\n\n### Kiválasztás\n\nÚt kiválasztásához kattints rá. Meg fog jelenni kiemelve, mellette egy kis eszköztár \nmenüvel és egy oldalsávval, ami további információkat mutat az útról.\n\n### Módosítás\n\nGyakran láthatod, hogy az út nincs a mögötte lévő légifelvételhez, vagy GPS \nnyomvonalhoz igazítva. Ha megbizonyosodtál arról, hogy nem a légifelvétel téved, \nhelyreigazíthatod az utakat.\n\nElőször is kattints a módosítandó útra. Ettől kiemelődik az út és megjelennek a\nkezelőpontjai, amiket mozgatni tudsz a megfelelő helyre. Ha új kezelőpontot \nszeretnél hozzáadni, hogy részletesebb utat kapj, kattints duplán az útnak egy \nolyan részére, ahol még nincs pont.\n\nHa egy út egy másik útba csatlakozik, de a térképen nincsenek összekapcsolva, \nhúzd az egyik út kezelőpontját a másik útra, és össze fognak kapcsolódni. \nAz utak megfelelő összekapcsolása a térképen nagyon fontos, útvonaltervezéshez \nlétfontosságú.\n\nHasználhatod a 'Mozgatás' eszközt is, vagy megnyomhatod az 'M' gyorsbillentyűt, ha az \naz egész utat szeretnéd mozgatni. Mozgatás után kattintással rögzítheted az új helyén.\n\n### Törlés\n\nHa egy út teljesen hibás – ha azt látod, hogy egyáltalán nincs rajta a légifelvételen, \nés biztos vagy benne, hogy nem is létezik –, törölheted, amivel eltávolítod a térképről. \nLegyél óvatos elemek törlésekor, akárcsak bármilyen más szerkesztésnél, a mindenki \náltal látható eredmény és a légifelvétel gyakran elavult, lehet, hogy az utat nemrég építették.\n\nAz út törléséhez előbb válaszd ki, majd kattints a kuka ikonra, vagy nyomd meg a Delete \nbillentyűt.\n\n### Létrehozás\n\nTaláltál egy utat, ami még nincs rajta a térképen? Kattints a bal felső eszköztár 'Vonal' \nikonjára vagy nyomd meg a '2'-es billentyűt és kezdd el rajzolni a vonalat.\n\nA rajzolás megkezdéséhez kattints a térképen az út elejére. Ha az út \negy másik meglévő útból ágazik ki, arra a helyre kattints, ahol csatlakoznak.\n\nEzután kattintással hozz létre pontokat a műholdkép vagy GPS nyomvonal alapján, \nhogy a vonal az út középvonalát kövesse. Ha az utad keresztez egy másik utat, kapcsold \nössze őket a metszéspontjukra kattintva. Ha kész vagy a rajzolással, kattints duplán, \nvagy nyomj a billentyűzeten egy 'Enter'-t.\n",
"gps": "# GPS\n\nA GPS adatok az OpenStreetMap adatainak legmegbízhatóbb forrásai. Ez a\nszerkesztő támogatja a helyi nyomvonalakat - a helyi számítógépen lévő\n„.gpx” fájlokat. Az ilyen fajta GPS nyomvonalakat begyűjtheti számos\nokostelefon alkalmazással, valamint személyes GPS hardverrel.\n\nHa információt szeretne arról, hogy hogyan végezhet GPS felmérést, olvassa\nel [felmérés GPS eszközzel](http://learnosm.org/en/beginner/using-gps/) tájékoztatót.\n\nA GPX nyomvonal térképezéshez való használatához fogja meg és ejtse a GPX\nfájlt a térképszerkesztőre. Ha sikerült felismerni, akkor világos lila\nvonallal lesz hozzáadva a térképhez. Kattintson a jobb oldalon lévő\n„Térképadatok” menüre ennek az új GPX-alapú rétegnek az engedélyezéshez,\nletiltáshoz vagy a nagyításhoz.\n\nA GPX nyomvonal nem kerül közvetlenül feltöltésre az OpenStreetMap\nadatbázisba - a használatának legjobb módja a térképre rajzolás. Használja\nútmutatóként új elemek hozzáadásához, és [töltse fel az OpenStreetMap](http://www.openstreetmap.org/trace/create)\nadatbázisába, hogy más felhasználók is használhassák.\n",
"fields": {
"access": {
"label": "Behajtás",
- "placeholder": "Ismeretlen",
- "types": {
- "access": "Általános",
- "foot": "Gyalog",
- "motor_vehicle": "Gépjárművek",
- "bicycle": "Kerékpár",
- "horse": "Ló"
- },
"options": {
- "yes": {
- "title": "Engedélyezett",
- "description": "Jogilag engedélyezett; szolgalmi jog"
+ "designated": {
+ "description": "Behajtást engedélyező tábla, vagy helyi jogszabály",
+ "title": "Kijelölt"
+ },
+ "destination": {
+ "description": "A behajtás csak a célpont eléréséhez engedélyezett",
+ "title": "Célforgalom"
},
"no": {
- "title": "Tiltott",
- "description": "Behajtás semmilyen forgalomnak nem engedélyezett"
+ "description": "Behajtás semmilyen forgalomnak nem engedélyezett",
+ "title": "Tiltott"
},
"permissive": {
- "title": "Engedélyköteles",
- "description": "Behajtás engedélyezett, amíg a tulajdonos vissza nem vonja az engedélyt"
+ "description": "Behajtás engedélyezett, amíg a tulajdonos vissza nem vonja az engedélyt",
+ "title": "Megengedett."
},
"private": {
- "title": "Privát",
- "description": "Behajtás csak a tulajdonos engedélyével, vagy egyedi elbírálás alapján"
+ "description": "Behajtás csak a tulajdonos engedélyével, vagy egyedi elbírálás alapján",
+ "title": "Privát"
},
- "designated": {
- "title": "Kijelölt",
- "description": "Behajtást engedélyező tábla, vagy helyi jogszabály"
- },
- "destination": {
- "title": "Célforgalom",
- "description": "A behajtás csak a célpont eléréséhez engedélyezett"
+ "yes": {
+ "description": "Jogilag engedélyezett; szolgalmi jog",
+ "title": "Engedélyezett"
}
+ },
+ "placeholder": "Ismeretlen",
+ "types": {
+ "access": "Általános",
+ "bicycle": "Kerékpár",
+ "foot": "Gyalog",
+ "horse": "Ló",
+ "motor_vehicle": "Gépjárművek"
}
},
"access_simple": {
"address": {
"label": "Cím",
"placeholders": {
+ "city": "város",
+ "country": "Ország",
+ "district": "Kerület",
+ "hamlet": "Falucska",
"housename": "Háznév",
"housenumber": "123",
- "street": "utca",
- "city": "város",
- "postcode": "írányítószám",
"place": "Hely",
- "hamlet": "Falucska",
- "suburb": "Külváros",
- "subdistrict": "Városrész",
- "district": "Kerület",
+ "postcode": "írányítószám",
"province": "Tartomány",
"state": "Régió",
- "country": "Ország"
+ "street": "utca",
+ "subdistrict": "Városrész",
+ "suburb": "Külváros"
}
},
"admin_level": {
"aerialway/access": {
"label": "Be- és kiszállás",
"options": {
+ "both": "Mindkettő",
"entry": "Bejárat",
- "exit": "Kijárat",
- "both": "Mindkettő"
+ "exit": "Kijárat"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Be- és kiszállás (nyáron)",
"options": {
+ "both": "Mindkettő",
"entry": "Bejárat",
- "exit": "Kijárat",
- "both": "Mindkettő"
+ "exit": "Kijárat"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Irány",
"options": {
- "N": "Észak",
"E": "Kelet",
- "S": "Dél",
- "W": "Nyugat",
- "NE": "Északkelet",
- "SE": "Délkelet",
- "SW": "Délnyugat",
- "NW": "Északnyugat",
- "NNE": "Észak-északkelet",
"ENE": "Kelet-északkelet",
"ESE": "Kelet-délkelet",
+ "N": "Észak",
+ "NE": "Északkelet",
+ "NNE": "Észak-északkelet",
+ "NNW": "Észak-északnyugat",
+ "NW": "Északnyugat",
+ "S": "Dél",
+ "SE": "Délkelet",
"SSE": "Dél-délkelet",
"SSW": "Dél-délnyugat",
- "WSW": "Nyugat-délnyugat",
+ "SW": "Délnyugat",
+ "W": "Nyugat",
"WNW": "Nyugat-északnyugat",
- "NNW": "Észak-északnyugat"
+ "WSW": "Nyugat-délnyugat"
}
},
"clock_direction": {
"label": "Irány",
"options": {
- "clockwise": "Óramutató szerint",
- "anticlockwise": "Óramutatóval ellentétesen"
+ "anticlockwise": "Óramutatóval ellentétesen",
+ "clockwise": "Óramutató szerint"
}
},
"collection_times": {
"label": "Lefedett"
},
"craft": {
- "label": "Typus"
+ "label": "Típus"
},
"crop": {
"label": "Termés"
},
"electrified": {
"label": "Villamosítottság",
- "placeholder": "Felső-vezetékes, sínes áramfelvétel, ...",
"options": {
"contact_line": "Felsővezeték",
+ "no": "Nem",
"rail": "Sínes áramfelvétel pl. metróban ",
- "yes": "Igen (nem részletezett)",
- "no": "Nem"
- }
+ "yes": "Igen (nem részletezett)"
+ },
+ "placeholder": "Felső-vezetékes, sínes áramfelvétel, ..."
},
"elevation": {
"label": "Tengerszint feletti magasság"
"label": "Típus",
"options": {
"pillar": "Felszini tűzcsap",
+ "pond": "Tó víznyerő csapja",
"underground": "Föld alatti tűzcsap",
- "wall": "Fali tűzcsap",
- "pond": "Tó víznyerő csapja"
+ "wall": "Fali tűzcsap"
}
},
"fixme": {
},
"gender": {
"label": "Nem",
- "placeholder": "Ismeretlen",
"options": {
- "male": "Férfi",
"female": "Nő",
+ "male": "Férfi",
"unisex": "Uniszex"
- }
+ },
+ "placeholder": "Ismeretlen"
},
"generator/method": {
"label": "Módszer"
"label": "Típus"
},
"golf_hole": {
- "label": "Golf lyuk azonosító",
- "placeholder": "Golf lyuk száma (1-18)"
+ "label": "Golflyuk-azonosító",
+ "placeholder": "Golflyuk száma (1-18)"
},
"handicap": {
"label": "Hátrány",
"incline": {
"label": "Lejtés"
},
+ "incline_steps": {
+ "label": "Lejtő",
+ "options": {
+ "down": "Le",
+ "up": "Fel"
+ }
+ },
"information": {
"label": "Típus"
},
"internet_access": {
"label": "Internetelérés",
"options": {
- "yes": "Igen",
"no": "Nem",
- "wlan": "WiFi",
+ "terminal": "Munkaállomás",
"wired": "Vezetékes",
- "terminal": "Munkaállomás"
+ "wlan": "WiFi",
+ "yes": "Igen"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Levélváltási ciklus",
"options": {
- "evergreen": "Örökzöld",
"deciduous": "Lombhullató",
- "semi_evergreen": "Félörökzöld ",
+ "evergreen": "Örökzöld",
+ "mixed": "Kevert, vegyes",
"semi_deciduous": "Félig lombhullató",
- "mixed": "Kevert, vegyes"
+ "semi_evergreen": "Félörökzöld "
}
},
"leaf_type": {
"label": "Levél és lomb típusa ",
"options": {
"broadleaved": "Lombos",
- "needleleaved": "Tűlevelű",
+ "leafless": "Lombtalan",
"mixed": "Kevert, vegyes",
- "leafless": "Lombtalan"
+ "needleleaved": "Tűlevelű"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Mountainbike nehézség",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Szilárd kavicsos / döngölt földes, akadálymentes, széles kanyarok",
"1": "1: Kevésbé szilárd felület, kisebb akadályokkal, széles kanyarok",
"3": "3: Csúszós felület, nagy akadályok, éles hajtűkanyarok",
"4": "4: Nagyon laza vagy sziklás rész, veszélyes hajtűkanyarok",
"5": "5: Maximális nehézség, földcsuszamlások",
- "6": "6: Járhatatlan, kivéve a legjobb mounten bicikliseknek."
- }
+ "6": "6: Járhatatlan, kivéve a legügyesebb mountain bike-osokat."
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBA útvonal nehézség",
- "placeholder": "Egyszerű, közepes, nehéz",
"options": {
"0": "Legyegyszerűbb (fehér kör)",
"1": "Egyszerű (zöld kör)",
"2": "Közepes (kék négyzet)",
"3": "Nehéz (fekete gyémánt)",
"4": "Extrém nehéz (dupla fekete gyémánt)"
- }
+ },
+ "placeholder": "Egyszerű, közepes, nehéz"
},
"mtb/scale/uphill": {
"label": "Mountainbike emelkedős nehézség",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: átlagos emelkedés < 10 % , szilárd, akadálymentes",
"1": "1: átlagos emelkedés < 15%, szilárd, kisebb akadályokkal",
"3": "3: átlagos emelkedés < 25%, változó felszín, öklömnyi kövekkel, gyökerekkel",
"4": "4: átlagos emelkedés < 30%, rossz felszín, nagy sziklás/ágas",
"5": "5: extrém meredek, a biciklit tolni vagy cipelni kell."
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Név",
"oneway": {
"label": "Egyirányú",
"options": {
+ "no": "Nem",
"undefined": "Feltételezzük, hogy nem egyirányú",
- "yes": "Igen",
- "no": "Nem"
+ "yes": "Igen"
}
},
"oneway_yes": {
"label": "Egyirányú",
"options": {
+ "no": "Nem",
"undefined": "Feltételezzük, hogy egyirányú",
- "yes": "Igen",
- "no": "Nem"
+ "yes": "Igen"
}
},
"opening_hours": {
"label": "Üzemeltető"
},
"par": {
- "label": "Golf pálya par száma",
+ "label": "Golfpálya par száma",
"placeholder": "3, 4, 5..."
},
"park_ride": {
"parking": {
"label": "Típus",
"options": {
- "surface": "Kültéri - felszini parkoló",
- "multi-storey": "Többszintű parkoló - parkolóház",
- "underground": "Földalatti parkoló",
- "sheds": "Fedett parkoló",
"carports": "Fedett - de nyitott oldalú parkoló",
"garage_boxes": "Garázs parkoló",
- "lane": "Útmenti sávos parkoló"
+ "lane": "Útmenti sávos parkoló",
+ "multi-storey": "Többszintű parkoló - parkolóház",
+ "sheds": "Fedett parkoló",
+ "surface": "Kültéri - felszini parkoló",
+ "underground": "Földalatti parkoló"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Nehézség",
- "placeholder": "Kezdő, középhaladó, haladó",
"options": {
- "novice": "Kezdő",
- "easy": "Egyszerű (zöld kör)",
- "intermediate": "Közepes (kék négyzet)",
"advanced": "Haladó (fekete gyémánt)",
+ "easy": "Egyszerű (zöld kör)",
"expert": "Profi (dupla fekete gyémánt)",
+ "extreme": "Extrém (hegymászófelszerelés szükséges)",
"freeride": "Pályán kívüli (off-piste)",
- "extreme": "Extrém (hegymászófelszerelés szükséges)"
- }
+ "intermediate": "Közepes (kék négyzet)",
+ "novice": "Kezdő"
+ },
+ "placeholder": "Kezdő, középhaladó, haladó"
},
"piste/grooming": {
"label": "Kezelés",
"options": {
- "classic": "Klasszikus",
- "mogul": "Buckasízés - mogul",
"backcountry": "Sziklás - szakadékos - fás - backcountry",
+ "classic": "Klasszikus",
"classic+skating": "Klasszikus és Skating sífutópálya",
+ "mogul": "Buckasízés - mogul",
"scooter": "Motoros szánozos pálya- Scooter/Snowmobile",
"skating": "Skating sífutó pálya "
}
"label": "Típus",
"options": {
"downhill": "Lesiklás",
+ "hike": "Kirándulós, Nordikus pálya ( Hike )",
+ "ice_skate": "Jégkorcsolya",
"nordic": "Nordic",
+ "playground": "Hó és sí játszótér ",
"skitour": "Sítúra",
"sled": "Szánkó - Sled",
- "hike": "Kirándulós, Nordikus pálya ( Hike )",
"sleigh": "Nem önjáró szánkós ( Sleigh )",
- "ice_skate": "Jégkorcsolya",
- "snow_park": "Hópark",
- "playground": "Hó és sí játszótér "
+ "snow_park": "Hópark"
}
},
"place": {
},
"sac_scale": {
"label": "Túraútvonal nehézsége",
- "placeholder": "Túraút, Magashegyi túraút...",
"options": {
- "hiking": "T1: Jól kiépített túraút",
- "mountain_hiking": "T2: Magashegyi túraút",
- "demanding_mountain_hiking": "T3: Magashegyi túraút kitett vagy biztosított szakaszokkal",
"alpine_hiking": "T4: Kitett magashegyi túraút, csak tapasztaltaknak",
"demanding_alpine_hiking": "T5: Kitett magashegyi túraút hegymászó szakaszokkal, csak tapasztaltaknak",
- "difficult_alpine_hiking": "T6: Hegymászó technikát igénylő kitett magashegyi túraút, csak nagyon tapasztaltaknak"
- }
+ "demanding_mountain_hiking": "T3: Magashegyi túraút kitett vagy biztosított szakaszokkal",
+ "difficult_alpine_hiking": "T6: Hegymászó technikát igénylő kitett magashegyi túraút, csak nagyon tapasztaltaknak",
+ "hiking": "T1: Jól kiépített túraút",
+ "mountain_hiking": "T2: Magashegyi túraút"
+ },
+ "placeholder": "Túraút, Magashegyi túraút..."
},
"seasonal": {
"label": "Időszakos"
"service": {
"label": "Típus"
},
- "service/bicycle/chaintool": {
- "label": "láncbontó, lánc eszközök",
+ "service/bicycle/chain_tool": {
+ "label": "Láncbontó, lánc eszközök",
"options": {
- "undefined": "Feltételezzük, hogy nincs",
- "yes": "Igen",
- "no": "Nem"
+ "no": "Nem",
+ "undefined": "Feltételezhető, hogy nincs",
+ "yes": "Igen"
}
},
"service/bicycle/pump": {
"label": "Levegő pumpa",
"options": {
+ "no": "Nem",
"undefined": "Feltételezzük, hogy nincs",
- "yes": "Igen",
- "no": "Nem"
+ "yes": "Igen"
}
},
"shelter": {
},
"smoking": {
"label": "Dohányzó",
- "placeholder": "Nem, Elkülönített helyen, Igen",
"options": {
- "no": "Mindenhol tilos",
- "separated": "Egy légtérben dohányzó és nemdohányzó részek",
+ "dedicated": "Dohányzóknak ( pl. dohányzóklub, közösségi dohányzóhely) ",
"isolated": "Teljesen elkülönített dohányzórész",
+ "no": "Mindenhol tilos",
"outside": "Az épületen kívül engedélyezett",
- "yes": "Mindenhol engedélyezett",
- "dedicated": "Dohányzóknak ( pl. Dohányzó Klub, Közösségi dohányzóhely) "
- }
+ "separated": "Egy légtérben dohányzó és nemdohányzó részek",
+ "yes": "Mindenhol engedélyezett"
+ },
+ "placeholder": "Nem, elkülönített helyen, igen"
},
"smoothness": {
"label": "Felület egyenletessége",
- "placeholder": "Gördeszkás, Kerekes, Terepjárós",
"options": {
- "excellent": "Kiváló : Görkorcsolyázni és gördeszkázni lehet rajta",
+ "bad": "Rossz: vastagabb kerékkel, terepbiciklivel, autóval, riksával járható",
+ "excellent": "Kiváló: görkorcsolyázni és gördeszkázni lehet rajta",
"good": "Jó: vékony kerékkel, versenymotorral járható",
+ "horrible": "Borzalmas: off-road - nagy teherbírású terepjáróval járható",
+ "impassable": "Lehetetlen kerekes járművel közlekedni",
"intermediate": "Közepes: városi kerékpárral, kerekesszékkel, robogóval járható",
- "bad": "Rossz: vastagabb kerékkel, terepbiciklivel, autóval, riksával járható",
"very_bad": "Nagyon rossz: Könnyű terepjárós út",
- "horrible": "Borzalmas: Off-Road - nagy teherbírású terepjáróval járható",
- "very_horrible": "Extrém borzalmas: Traktor ajánlott."
- }
+ "very_horrible": "Extrém borzalmas: traktor ajánlott."
+ },
+ "placeholder": "Gördeszkás, kerekes, terepjárós"
},
"social_facility_for": {
"label": "Szociálisan rászorultak",
- "placeholder": "Hajléktalanok,Sérültek, Gyermekek, stb."
+ "placeholder": "Hajléktalanok, sérültek, gyermekek, stb."
},
"source": {
"label": "Forrás"
},
"structure": {
"label": "Szerkezet",
- "placeholder": "Ismeretlen",
"options": {
"bridge": "Híd",
- "tunnel": "Alagút",
- "embankment": "Töltés",
"cutting": "Bevágás",
- "ford": "Gázló"
- }
+ "embankment": "Töltés",
+ "ford": "Gázló",
+ "tunnel": "Alagút"
+ },
+ "placeholder": "Ismeretlen"
},
"studio_type": {
"label": "Típus"
"label": "Felület"
},
"tactile_paving": {
- "label": "Taktilis útburkolati jel - Vakok és gyengénlátók számára"
+ "label": "Taktilis útburkolati jel - vakok és gyengénlátók számára"
},
"takeaway": {
"label": "Ételek elvitelre ",
- "placeholder": "Igen, nem, csak elvitel ",
"options": {
- "yes": "Igen",
"no": "Nem",
- "only": "Csak elvitel"
- }
+ "only": "Csak elvitel",
+ "yes": "Igen"
+ },
+ "placeholder": "Igen, nem, csak elvitel "
},
"toilets/disposal": {
- "label": "WC Kezelés",
+ "label": "WC kezelés",
"options": {
- "flush": "Vízöblitéses",
- "pitlatrine": "Emésztőgödrös",
+ "bucket": "Konténeres üritésű",
"chemical": "Vegyi anyagos semlegesítésű",
- "bucket": "Konténeres üritésű"
+ "flush": "Vízöblitéses",
+ "pitlatrine": "Emésztőgödrös"
}
},
"tourism": {
},
"tracktype": {
"label": "Úttípus",
- "placeholder": "Szilárd, Vegyes, Laza, ...",
"options": {
"grade1": "Szilárd: burkolt vagy tömör felületű makadámút",
"grade2": "Főképp szilárd: murvával/kővel tömörített földút",
- "grade3": "Vegyes: Köves földút",
+ "grade3": "Vegyes: köves földút",
"grade4": "Nagyrészt laza: föld-, homok- vagy füves út némi kővel",
"grade5": "Laza: föld-, homok- vagy füves út"
- }
+ },
+ "placeholder": "Szilárd, vegyes, laza, ..."
},
"trail_visibility": {
"label": "Ösvény láthatósága",
- "placeholder": "Kiváló, jó, rossz ...",
"options": {
+ "bad": "Rossz: nincsenek jelzők, az útvonal néha láthatatlan / úttalan",
"excellent": "Kiváló: egyértelmű utak és jelzők mindenhol",
"good": "Jó: jelzők láthatóak, néha keresni kell őket",
- "intermediate": "Közepes: néhány jelző, az útvonal többnyire látható",
- "bad": "Rossz: nincsenek jelzők, az útvonal néha láthatatlan / úttalan",
"horrible": "Borzalmas: gyakran úttalan, tájékozódási képességek szükségesek",
- "no": "Nincs: úttalan, kitünő tájékozódási képességek szükségesek"
- }
+ "intermediate": "Közepes: néhány jelző, az útvonal többnyire látható",
+ "no": "Nincs: úttalan, kitűnő tájékozódási képességek szükségesek"
+ },
+ "placeholder": "Kiváló, jó, rossz ..."
},
"trees": {
"label": "Fák"
},
"amenity/bar": {
"name": "Bár",
- "terms": "bár,kocsma, éjszaki szórakozó"
+ "terms": "bár, kocsma, éjszakai szórakozó"
},
"amenity/bbq": {
"name": "Közösségi grillező - szallonasütő",
"terms": "bicaj - bringa - bicikli - kétkerekű kölcsönző "
},
"amenity/bicycle_repair_station": {
- "name": "Kerékpárjavító állomás",
+ "name": "Kerékpárszerelő pont",
"terms": "Biciklijavító állomás"
},
"amenity/boat_rental": {
},
"amenity/bureau_de_change": {
"name": "Pénzváltó",
- "terms": "Valuta váltás, EURO váltó"
+ "terms": "Valutaváltás, EURO váltó"
},
"amenity/bus_station": {
- "name": "busz állomás",
+ "name": "Buszállomás",
"terms": "busz, autóbusz"
},
"amenity/cafe": {
"terms": "Közösségi központ"
},
"amenity/compressed_air": {
- "name": "Sűrített levegő és kompresszor állomás",
+ "name": "Sűrítettlevegő- és kompresszorállomás",
"terms": "gumi"
},
"amenity/courthouse": {
"terms": "töltőállomás,shell,bp,agip,oil,lukoil,tesco,e85,esso,omv,kagyló,mol,benzin,gázolaj,benzinkút,üzemanyag,petrol,autógáz,motorbenzin,adalékanyag,kenőanyag,dízel,diesel,bioetanol"
},
"amenity/grave_yard": {
- "name": "Templomi Sírkert",
+ "name": "Templomkert",
"terms": "Temető, "
},
"amenity/grit_bin": {
- "name": "Úti sótároló ",
+ "name": "Útmenti sótároló ",
"terms": "grit bin"
},
"amenity/hospital": {
"terms": "piac, üzlet"
},
"amenity/nightclub": {
- "name": "Night Club - Éjszakai bár - diszkó",
+ "name": "Night club - Éjszakai bár - diszkó",
"terms": "Night Club, Éjszakai bár, Diszkó"
},
"amenity/parking": {
"terms": "Idősek szociális gondozója"
},
"amenity/social_facility/homeless_shelter": {
- "name": "Hajléktalan menedék",
+ "name": "Hajléktalanszálló",
"terms": "Hajléktalan menedék"
},
"amenity/studio": {
"terms": "Kápolna, Imaház"
},
"building/church": {
- "name": "Templom épület",
+ "name": "Templomépület",
"terms": "Templom, Plébánia, Imaház"
},
"building/college": {
"terms": "Kórházi épület, Klinika épület, Gyógyintézet épület"
},
"building/hotel": {
- "name": "Szálloda",
+ "name": "Szállodaépület",
"terms": "Hotel, szálloda"
},
"building/house": {
"terms": "Iskolaépület"
},
"building/shed": {
- "name": "Kunyhó",
+ "name": "Fészer",
"terms": "Kunyhó, Fészer, Pajta,csűr,raktár,viskó"
},
"building/stable": {
- "name": "Istálló épület",
+ "name": "Istállóépület",
"terms": "Istálló"
},
"building/static_caravan": {
"terms": "Raktár, Lerakat"
},
"craft": {
- "name": "Valamilyen mester ember műhelye ",
+ "name": "Valamilyen mesterember műhelye ",
"terms": "kézműves, iparos, iparművész"
},
"craft/basket_maker": {
"terms": "szőnyegpadló, padlóburkolat"
},
"craft/caterer": {
- "name": "Catering-Partyszerviz",
+ "name": "Catering-partyszerviz",
"terms": "Catering, Partyszerviz, Rendezvényszervező "
},
"craft/clockmaker": {
"terms": "Bútor felújító,Antik bútor javító"
},
"craft/watchmaker": {
- "name": "Órás műhely",
+ "name": "Órásműhely",
"terms": "Órakészítő és javító műhely"
},
"craft/window_construction": {
"terms": "Borászat"
},
"embankment": {
- "name": "Töltés",
- "terms": "Töltés"
+ "name": "Rakpart",
+ "terms": "rakpart"
},
"emergency/ambulance_station": {
"name": "Mentőállomás",
"terms": "Autópálya"
},
"highway/motorway_junction": {
- "name": "Autópálya csomópont / kijárat",
+ "name": "Autópálya-csomópont / -kijárat",
"terms": "autópálya lehajtó, autópálya felhajtó, elágazás, leágazás"
},
"highway/motorway_link": {
- "name": "Autópálya felhajtó",
+ "name": "Autópálya-felhajtó",
"terms": "autópálya lehajtó, autópálya leágazás"
},
"highway/path": {
"terms": "Elsőrendű főút"
},
"highway/primary_link": {
- "name": "Főút felhajtó",
- "terms": "Elsőrendű főút csatlakozás"
+ "name": "Főútfelhajtó",
+ "terms": "Elsőrendű főútcsatlakozás"
},
"highway/raceway": {
- "name": "Motorsport pálya",
- "terms": "Motorsport pály"
+ "name": "Motorsportpálya",
+ "terms": "Motorsport pálya"
},
"highway/residential": {
"name": "Lakóút",
"terms": "Lakóút"
},
"highway/rest_area": {
- "name": "Pihenő terület",
- "terms": "Pihenő terület"
+ "name": "Pihenőhely",
+ "terms": "Pihenőhely"
},
"highway/road": {
"name": "Ismeretlen út",
"terms": "Másodrendű főút"
},
"highway/secondary_link": {
- "name": "Összekötőút felhajtó",
+ "name": "Összekötőút-felhajtó",
"terms": "Másodrendű főút csatlakozás"
},
"highway/service": {
"terms": "Kocsibejáró"
},
"highway/service/emergency_access": {
- "name": "Vészhelyzeti behajtó",
+ "name": "Tűzoltási felvonulási útvonal",
"terms": "Vészhelyzeti bejárat"
},
"highway/service/parking_aisle": {
"terms": "Autóút"
},
"highway/trunk_link": {
- "name": "Autóút felhajtó",
+ "name": "Autóútfelhajtó",
"terms": "Autóút csatlakozás"
},
"highway/turning_circle": {
"terms": "Tanyaudvar"
},
"landuse/forest": {
- "name": "Telepített Erdő",
+ "name": "Telepített erdő",
"terms": "Erdő,akácos,erdősített terület"
},
"landuse/garages": {
"terms": "Kutyasétáltató"
},
"leisure/firepit": {
- "name": "Tűzrakó hely",
+ "name": "Tűzrakóhely",
"terms": "Tűzrakó hely"
},
"leisure/garden": {
},
"leisure/pitch/tennis": {
"name": "Teniszpálya",
- "terms": "Tenispály"
+ "terms": "Teniszpálya"
},
"leisure/pitch/volleyball": {
"name": "Röplabdapálya",
"terms": "Irtás"
},
"man_made/embankment": {
- "name": "Töltés",
+ "name": "Rakpart",
"terms": "Töltés"
},
"man_made/flagpole": {
"terms": "ügyvéd, bíróság, közjegyző, ügyész"
},
"office/newspaper": {
- "name": "Újságos",
+ "name": "Újságszekesztőség",
"terms": "Újság"
},
"office/ngo": {
"name": "Kapcsolat",
"terms": "Kapcsolat"
},
+ "roundabout": {
+ "name": "Körforgalom",
+ "terms": "körforgalom"
+ },
"route/ferry": {
"name": "Komp",
"terms": "Kompút"
"terms": "babruha - babakocsi - babaágy - babjáték bolt"
},
"shop/bag": {
- "name": "Táska- és böröndbolt",
+ "name": "Táska- és bőröndbolt",
"terms": "bőrdíszmű és táskabolt,koffer,utazótáska "
},
"shop/bakery": {
"terms": "Autó szalon és márkakereskedés, Személygépkocsi- automobil - jármű és verda árúk bemutatóhelye"
},
"shop/car_parts": {
- "name": "Autóalkatrész üzlet",
+ "name": "Autóalkatrész-üzlet",
"terms": "gépkocsi alkatrész bolt, gépjármű alkatrész szaküzlet, személygépkocsi alkatrész szaküzlet, személygépjármű alkatrész szaküzlet, automobil - jármű és verda alkatrészek szaküzlete"
},
"shop/car_repair": {
"address": {
"label": "Հասցե",
"placeholders": {
- "street": "Փողոց",
- "city": "Քաղաք"
+ "city": "Քաղաք",
+ "street": "Փողոց"
}
},
"atm": {
"commit": {
"title": "Simpan Perubahan",
"description_placeholder": "Deskripsi singkat kontribusi Anda",
- "message_label": "Sampaikan pesan",
"upload_explanation": "Perubahan yang anda unggah akan tampil di seluruh peta yang menggunakan data OpenStreetMap.",
"upload_explanation_with_user": "Perubahan yang anda unggah sebagai {user} akan tampil di seluruh peta yang menggunakan data OpenStreetMap.",
"save": "Simpan",
"title": "Simpan",
"help": "Simpan perubahan ke OpenStreetMap, jadikan mereka terlihat oleh pengguna lain.",
"no_changes": "Tak ada perubahan yang bisa disimpan.",
- "error": "Sebuah kesalahan terjadi ketika penyimpanan.",
"uploading": "Mengunggah perubahan ke OpenStreetMap.",
"unsaved_changes": "Anda mememiliki perubahan yang belum tersimpan"
},
"view_on_mapillary": "Lihat gambar ini di Mapillary"
},
"help": {
- "title": "Bantuan",
- "help": "#Bantuan\n\nIni adalah editor untuk [OpenStreetMap] (http://www.openstreetmap.org/), \npeta dunia gratis dan bisa disunting. Anda dapat menggunakannya dengan menambahkan dan memperbarui\n data di area anda, membangun sebuah peta sumber-terbuka dan data-terbuka di seluruh dunia\n yang lebih baik untuk semua orang.\n\nPerubahan yang anda buat akan terlihat ke semua orang yang menggunakan \nOpenStreetMap. Untuk melakukan penyutingan, anda membutuhkan \n[free OpenStreetMap account] (https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) adalah proyek kolaborasi dengan [kode sumber tersedia di GitHub](https://github.com/openstreetmap/iD).\n"
+ "title": "Bantuan"
},
"intro": {
"navigation": {
"fields": {
"access": {
"label": "Akses",
- "placeholder": "Tidak diketahui",
- "types": {
- "access": "Umum",
- "foot": "Kaki",
- "motor_vehicle": "Sepeda Motor",
- "bicycle": "Sepeda",
- "horse": "Kuda"
- },
"options": {
- "yes": {
- "title": "Diizinkan"
+ "designated": {
+ "description": "Akses diperbolehkan sesuai dengan tanda atau peraturan lokal yang spesifik",
+ "title": "Ditunjuk"
+ },
+ "destination": {
+ "description": "Akses diperbolehkan hanya untuk mencapai tujuan",
+ "title": "Tujuan"
},
"no": {
- "title": "Terlarang",
- "description": "Akses terbatas untuk umum"
+ "description": "Akses terbatas untuk umum",
+ "title": "Terlarang"
},
"permissive": {
- "title": "Dibolehkan",
- "description": "Akses diperbolehkan sampai batas pemilik membatalkan izin"
+ "description": "Akses diperbolehkan sampai batas pemilik membatalkan izin",
+ "title": "Dibolehkan"
},
"private": {
- "title": "Pribadi",
- "description": "Akses diperbolehkan hanya dengan perizinan dari pemilik pada tingkatan pribadi"
+ "description": "Akses diperbolehkan hanya dengan perizinan dari pemilik pada tingkatan pribadi",
+ "title": "Pribadi"
},
- "designated": {
- "title": "Ditunjuk",
- "description": "Akses diperbolehkan sesuai dengan tanda atau peraturan lokal yang spesifik"
- },
- "destination": {
- "title": "Tujuan",
- "description": "Akses diperbolehkan hanya untuk mencapai tujuan"
+ "yes": {
+ "title": "Diizinkan"
}
+ },
+ "placeholder": "Tidak diketahui",
+ "types": {
+ "access": "Umum",
+ "bicycle": "Sepeda",
+ "foot": "Kaki",
+ "horse": "Kuda",
+ "motor_vehicle": "Sepeda Motor"
}
},
"access_simple": {
"address": {
"label": "Alamat",
"placeholders": {
+ "city": "Kota",
+ "country": "Negara",
+ "district": "Kabupaten",
+ "hamlet": "Dusun",
"housename": "Nama rumah",
"housenumber": "123",
- "street": "Jalan",
- "city": "Kota",
- "postcode": "Kode pos",
"place": "Tempat",
- "hamlet": "Dusun",
- "suburb": "Kelurahan",
- "subdistrict": "Kecamatan",
- "district": "Kabupaten",
+ "postcode": "Kode pos",
"province": "Provinsi",
"state": "Negara Bagian",
- "country": "Negara"
+ "street": "Jalan",
+ "subdistrict": "Kecamatan",
+ "suburb": "Kelurahan"
}
},
"admin_level": {
"aerialway/access": {
"label": "Akses",
"options": {
+ "both": "Keduanya",
"entry": "Masuk",
- "exit": "Keluar",
- "both": "Keduanya"
+ "exit": "Keluar"
}
},
"aerialway/capacity": {
},
"aerialway/summer/access": {
"options": {
+ "both": "Keduanya",
"entry": "Masuk",
- "exit": "Keluar",
- "both": "Keduanya"
+ "exit": "Keluar"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Arah",
"options": {
- "N": "Utara",
"E": "Timur",
- "S": "Selatan",
- "W": "Barat",
- "NE": "Timur Laut",
- "SE": "Tenggara",
- "SW": "Barat Daya",
- "NW": "Barat Laut",
- "NNE": "Utara-timur laut",
"ENE": "Timur-timur laut",
"ESE": "Timur-tenggara",
+ "N": "Utara",
+ "NE": "Timur Laut",
+ "NNE": "Utara-timur laut",
+ "NNW": "Timur-barat laut",
+ "NW": "Barat Laut",
+ "S": "Selatan",
+ "SE": "Tenggara",
"SSE": "Selatan-tenggara",
"SSW": "Selatan-barat daya",
- "WSW": "Barat-barat daya",
+ "SW": "Barat Daya",
+ "W": "Barat",
"WNW": "Barat-barat laut",
- "NNW": "Timur-barat laut"
+ "WSW": "Barat-barat daya"
}
},
"clock_direction": {
"label": "Arah",
"options": {
- "clockwise": "Searah Jarum Jam",
- "anticlockwise": "Berlawanan Jarum Jam"
+ "anticlockwise": "Berlawanan Jarum Jam",
+ "clockwise": "Searah Jarum Jam"
}
},
"collection_times": {
"fire_hydrant/type": {
"label": "Tipe",
"options": {
+ "pond": "Kolam",
"underground": "Dibawah tanah",
- "wall": "Tembok",
- "pond": "Kolam"
+ "wall": "Tembok"
}
},
"fixme": {
"internet_access": {
"label": "Akses Internet",
"options": {
- "yes": "Iya",
"no": "Tidak",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Kabel",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Iya"
}
},
"lamp_type": {
"placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
- "placeholder": "Mudah, Menengah, Susah...",
"options": {
"0": "Sangat Mudah (lingkaran putih)",
"1": "Mudah (lingkaran hijau)",
"2": "Menengah (kotak biru)",
"3": "Susah (berlian hitam)",
"4": "Sangat Susah (berlian hitam ganda)"
- }
+ },
+ "placeholder": "Mudah, Menengah, Susah..."
},
"mtb/scale/uphill": {
"placeholder": "0, 1, 2, 3..."
"oneway": {
"label": "Satu Arah",
"options": {
- "yes": "Iya",
- "no": "Tidak"
+ "no": "Tidak",
+ "yes": "Iya"
}
},
"oneway_yes": {
"label": "Satu Arah",
"options": {
- "yes": "Iya",
- "no": "Tidak"
+ "no": "Tidak",
+ "yes": "Iya"
}
},
"opening_hours": {
},
"structure": {
"label": "Struktur",
- "placeholder": "Tak Diketahui",
"options": {
"bridge": "Jembatan",
- "tunnel": "Terowongan",
- "ford": "Ford"
- }
+ "ford": "Ford",
+ "tunnel": "Terowongan"
+ },
+ "placeholder": "Tak Diketahui"
},
"studio_type": {
"label": "Tipe"
"commit": {
"title": "Vista breytingar",
"description_placeholder": "Stutt lýsing á breytingum þínum",
- "message_label": "Staðfesta boð",
"upload_explanation": "Breytingarnar sem þú gerir verða sýnilegar á öllum kortum sem nota OpenStreetMap gögn.",
"upload_explanation_with_user": "Breytingarnar sem þú gerir sem {user} verða sýnilegar á öllum kortum sem nota OpenStreetMap gögn.",
"save": "Vista",
"cancel": "Hætta við",
+ "changes": "{count} breytingar",
"warnings": "Aðvaranir",
"modified": "Breytt",
"deleted": "Eytt",
"node": "Hnútur",
"way": "Ferill",
"relation": "Vensl",
- "location": "Staðsetning"
+ "location": "Staðsetning",
+ "add_fields": "Bæta við svæði:"
},
"background": {
"title": "Bakgrunnur",
},
"map_data": {
"description": "Kortagögn",
+ "data_layers": "Gagnalög",
"fill_area": "Fylla svæði"
},
"feature": {
+ "points": {
+ "tooltip": "Áhugaverðir staðir"
+ },
"major_roads": {
- "description": "Aðalvegir"
+ "description": "Aðalvegir",
+ "tooltip": "Þjóðvegir, götur, osfrv."
},
"minor_roads": {
"description": "Minni vegir"
"rail": {
"description": "Lestareigindi"
},
+ "power": {
+ "description": "Flóknari möguleikar"
+ },
"past_future": {
"tooltip": "Tillaga, í byggingu, í eyði, niðurrif oþh"
}
"title": "Vista",
"help": "Vista breytingar á OpenStreetMap, þær verða sýnilegar öðrum notendum.",
"no_changes": "Engar breytingar til að vista.",
- "error": "Villa kom upp þegar reynt var að vista",
"unknown_error_details": "Aðgættu hvort að nettengingin er í lagi.",
"uploading": "Hleð breytingum inn á OpenStreetMap.",
- "unsaved_changes": "Þú átt óvistaðar breytingar"
+ "unsaved_changes": "Þú átt óvistaðar breytingar",
+ "conflict": {
+ "next": "Næst >"
+ }
},
"success": {
"edited_osm": "Þú breyttir OSM!",
"gpx": {
"local_layer": "Staðvær GPX-skrá",
"drag_drop": "Dragðu og slepptu .gpx skrá á síðuna eða smelltu á takkann til hægri til að fletta",
+ "zoom": "Þysja að GPX-slóð",
"browse": "Finna .gpx skrá"
},
"mapillary": {
"category-building": {
"name": "Bygging"
},
+ "category-golf": {
+ "name": "Golf"
+ },
"category-landuse": {
"name": "Landnotkun"
},
"category-rail": {
"name": "Lestarteinar"
},
+ "category-restriction": {
+ "name": "Takmörkun"
+ },
"category-road": {
"name": "Vegur"
},
},
"category-water-area": {
"name": "Vatn"
+ },
+ "category-water-line": {
+ "name": "Vatn"
}
},
"fields": {
"access": {
"label": "Aðgangur",
- "placeholder": "Óþekkt",
- "types": {
- "access": "Almennt",
- "foot": "Fótgangandi",
- "motor_vehicle": "Vélknúin ökutæki",
- "bicycle": "Hjól",
- "horse": "Hestar"
- },
"options": {
- "yes": {
- "title": "Leyft",
- "description": "Aðgangur leyfður með lögum"
+ "designated": {
+ "description": "Aðgangur heimill sökum skilta eða reglna",
+ "title": "Merking"
+ },
+ "destination": {
+ "description": "Aðgangur leyfður aðeins ef í fararleið",
+ "title": "Áfangastaður"
},
"no": {
- "title": "Aðgangur bannaður",
- "description": "Aðgangur óheimill almenningi"
+ "description": "Aðgangur óheimill almenningi",
+ "title": "Aðgangur bannaður"
},
"permissive": {
- "title": "Með leyfi",
- "description": "Aðgangur heimill þar til eigandi dregur leyfi til baka"
+ "description": "Aðgangur heimill þar til eigandi dregur leyfi til baka",
+ "title": "Með leyfi"
},
"private": {
- "title": "Einka",
- "description": "Aðgangur heimill eingöngu með samþykki landeiganda"
- },
- "designated": {
- "title": "Merking",
- "description": "Aðgangur heimill sökum skilta eða reglna"
+ "description": "Aðgangur heimill eingöngu með samþykki landeiganda",
+ "title": "Einka"
},
- "destination": {
- "title": "Áfangastaður",
- "description": "Aðgangur leyfður aðeins ef í fararleið"
+ "yes": {
+ "description": "Aðgangur leyfður með lögum",
+ "title": "Leyft"
}
+ },
+ "placeholder": "Óþekkt",
+ "types": {
+ "access": "Almennt",
+ "bicycle": "Hjól",
+ "foot": "Fótgangandi",
+ "horse": "Hestar",
+ "motor_vehicle": "Vélknúin ökutæki"
}
},
+ "access_simple": {
+ "label": "Aðgangur",
+ "placeholder": "já"
+ },
+ "access_toilets": {
+ "label": "Aðgangur"
+ },
"address": {
"label": "Heimilisfang",
"placeholders": {
- "street": "Gata",
"city": "Sveitarfélag",
+ "country": "Land",
+ "housenumber": "123",
+ "street": "Gata",
"subdistrict": "Undirsvæði"
}
},
},
"aerialway/access": {
"options": {
- "exit": "Útgangur",
- "both": "Bæði"
+ "both": "Bæði",
+ "exit": "Útgangur"
}
},
"aerialway/capacity": {
"clock_direction": {
"label": "Átt",
"options": {
- "clockwise": "Réttsælis",
- "anticlockwise": "Rangsælis"
+ "anticlockwise": "Rangsælis",
+ "clockwise": "Réttsælis"
}
},
"collection_times": {
"label": "Internetaðgangur",
"options": {
"no": "Nei",
- "wlan": "Þráðlaust",
+ "terminal": "Útstöð",
"wired": "Leiðslur",
- "terminal": "Útstöð"
+ "wlan": "Þráðlaust"
}
},
"landuse": {
"label": "Hraðatakmörkun",
"placeholder": "40, 50, 60..."
},
+ "mtb/scale": {
+ "options": {
+ "2": "2: laust undirlag, stórar hindranir, auðveldar beygjur"
+ }
+ },
+ "mtb/scale/imba": {
+ "placeholder": "Auðvelt, miðlungs, erfitt..."
+ },
"name": {
"label": "Nafn",
"placeholder": "Almannanafn (ef eitthvað)"
"placeholder": "+31 42 123 4567"
},
"piste/type": {
+ "label": "Tegund",
"options": {
- "sleigh": "Sleði",
- "ice_skate": "Skautar"
+ "ice_skate": "Skautar",
+ "sleigh": "Sleði"
}
},
"place": {
},
"structure": {
"label": "Mannvirki",
- "placeholder": "Óþekkt",
"options": {
"bridge": "Brú",
- "tunnel": "Göng",
+ "cutting": "Rás",
"embankment": "Stallur",
- "cutting": "Rás"
- }
+ "tunnel": "Göng"
+ },
+ "placeholder": "Óþekkt"
},
"supervised": {
"label": "Undir stjórn"
"amenity/bicycle_rental": {
"name": "Hjólaleiga"
},
+ "amenity/bicycle_repair_station": {
+ "name": "Hjólaviðgerðastöð"
+ },
"amenity/cafe": {
"name": "Kaffihús",
"terms": "tehús"
"office/architect": {
"name": "Arkitekt"
},
+ "office/financial": {
+ "name": "Fjármálafyrirtæki"
+ },
+ "office/government": {
+ "name": "Opinber stofnun"
+ },
"office/newspaper": {
"name": "Fréttablað"
},
"office/political_party": {
"name": "Stjórnmálaflokkur"
},
+ "office/research": {
+ "name": "Rannsóknarstofa"
+ },
"office/travel_agent": {
"name": "Ferðaskrifstofa"
},
"shop/hardware": {
"name": "Byggingavöruverslun"
},
+ "shop/herbalist": {
+ "name": "Grasalæknir"
+ },
"shop/hifi": {
"name": "Hljómverslun"
},
"multiple": "Cancellati {n} oggetti."
},
"incomplete_relation": "Questo elemento non può essere cancellato perché non è stato completamente scaricato.",
+ "part_of_relation": "Questo elemento non può essere eliminato perché fa parte di una relazione. Devi prima rimuoverlo dalla relazione.",
"connected_to_hidden": "Questo elemento non può essere cancellato perché è connesso ad un elemento nascosto."
},
"add_member": {
"commit": {
"title": "Salva le modifiche",
"description_placeholder": "Una breve descrizione delle tue modifiche",
- "message_label": "Commento",
+ "message_label": "Commento al gruppo di modifiche",
"upload_explanation": "Le modifiche che carichi saranno visibili su tutte le mappe che usano i dati di OpenStreetMap.",
"upload_explanation_with_user": "Le modifiche che carichi come {user} saranno visibili su tutte le mappe che usano i dati di OpenStreetMap.",
"save": "Salva",
"list": "Modifiche di {users}",
"truncated_list": "Modifiche di {users} e {count} altri"
},
+ "infobox": {
+ "selected": "{n} selezionati",
+ "geometry": "Geometria",
+ "closed": "chiuso",
+ "center": "Centro",
+ "perimeter": "Perimetro",
+ "length": "Lunghezza",
+ "area": "Area",
+ "centroid": "Baricentro",
+ "location": "Posizione",
+ "metric": "Metrico",
+ "imperial": "Imperiale"
+ },
+ "geometry": {
+ "point": "punto",
+ "vertex": "vertice",
+ "line": "linea",
+ "area": "area",
+ "relation": "relazione"
+ },
"geocoder": {
"search": "Cerca in tutto il mondo...",
"no_results_visible": "Nessun risultato nell'area visibile della mappa",
"title": "Salva",
"help": "Salva i cambiamenti su OpenStreetMap, rendendoli visibili ad altri utenti.",
"no_changes": "Nessuna modifica da salvare.",
- "error": "E' accaduto un errore mentre veniva tentato il salvataggio",
+ "error": "Si sono verificati errori nel tentato di salvataggio",
+ "status_code": "Il server ha risposto con codice {code}",
"unknown_error_details": "Assicurati di essere connesso ad internet.",
"uploading": "Caricamento delle modifiche su OpenStreetMap.",
- "unsaved_changes": "Hai modifiche non salvate"
+ "unsaved_changes": "Hai modifiche non salvate",
+ "conflict": {
+ "header": "Risolvi conflitti di modifica",
+ "count": "Conflitto {num} di {total}",
+ "previous": "< Precedente",
+ "next": "Successivo >",
+ "keep_local": "Mantieni il mio",
+ "keep_remote": "Usa il loro",
+ "restore": "Ripristina",
+ "delete": "Lascia Cancellato",
+ "download_changes": "O scarica le tue modifiche.",
+ "done": "Risolti tutti i conflitti!",
+ "help": "Un altro utente ha modificato qualcuno degli elementi che hai modificato tu.\nClicca su ogni elemento sottostante per avere più dettagli sul conflitto e scegliere se mantenere la tua versione o quella dell'altro utente.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Questo oggetto è stato cancellato da {user}.",
+ "location": "Questo oggetto è stato spostato sia da te che da {user}.",
+ "nodelist": "Nodi modificati sia da te che da {user}.",
+ "memberlist": "Membri di relazioni modificati sia da te che da {user}.",
+ "tags": "Hai modificato il tag <b>{tag}</b> in \"{local}\" e {user} l'ha modificato in \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSMI Modificato",
"help_html": "Le tue modifiche appariranno nel livello \"Standard\" tra qualche minuto. Per gli altri livelli e per certi elementi potrebbe essere necessario più tempo.\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>dettagli</a>).\n"
},
"confirm": {
- "okay": "Okay"
+ "okay": "Okay",
+ "cancel": "Cancella"
},
"splash": {
"welcome": "Benvenuti nell'editor OpenStreetMap iD",
},
"help": {
"title": "Aiuto",
- "help": "# Aiuto\n\nQuesto è un editor per [OpenStreetMap](http://www.openstreetmap.org/), la\nmappa del mondo gratuita e modificabile. Puoi usarlo per aggiungere ed aggiornare\ndati nella tua area, creando una mappa del mondo open-source e open-data\nmigliore per tutti.\n\nLe modifiche che fai a questa mappa saranno visibili a chiunque usa\nOpenStreetMap. Per fare una modifica, avrai bisogno di un\n[account gratuito OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) è un progetto collaborativo il cui [codice\nsorgente è disponibile su GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Aiuto\n\nQuesto è un editor per [OpenStreetMap](http://www.openstreetmap.org/), la\nmappa del mondo gratuita e modificabile. Puoi usarlo per aggiungere ed aggiornare\ndati nella tua area, creando una mappa del mondo open-source e open-data\nmigliore per tutti.\n\nLe modifiche che fai a questa mappa saranno visibili a chiunque usa\nOpenStreetMap. Per fare una modifica, avrai bisogno di [accedere](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) è un progetto collaborativo il cui [codice\nsorgente è disponibile su GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Modifica & salvataggio\n\nQuesto editor è stato pensato per funzionare principalmente online\ned anche in questo momento lo stai utilizzando tramite browser web.\n\n### Selezione degli Elementi\n\nPer selezionare un elemento della mappa, come ad esempio una strada o\nun punto di interesse, clicca su di esso sulla mappa. Questo farà in modo\nche l'elemento selezionato venga evidenziato, che si apra un pannello con\ni dettagli e che si apra un menu di azioni che è possibile fare con l'elemento\nstesso.\n\nPer selezionare più elementi tenendo premuto il tasto 'Maiusc' clicca su ogni\nelemento o trascina il mouse disegnando un riquadro sulla mappa. Questo\nfarà sì che tutti gli elementi all'interno del riquadro vengano selezionati\nconsentendo di compiere azioni su più elementi in una volta sola.\n\n### Salvataggio delle modifiche\n\nQuando si fanno dei cambiamenti, come modifiche alle strade, agli edifici e\nai luoghi, queste vengono memorizzate localmente fino a che non si effettua\nil salvataggio sul server. Non preoccuparti se fai un errore, puoi annullare\nla modifica premento il tasto 'Annulla' e rieffettuare la modifica cliccando\nsul tasto 'Ripeti'.\n\nSe ad esempio hai completato un'area della città e vuoi iniziare un'altra\narea clicca su 'Salva' e porre fine ad un gruppo di modifiche. Avrai comunque\nla possibilità di revisionare ciò che hai modificato inoltre l'editor fornirà\nsuggerimenti e avvertimenti se qualcosa nelle tue modifiche non sembra\nandare bene.\n\nSe tutto è a posto puoi aggiungere un piccolo commento per spiegare la\nmodifica effettuata e cliccare su 'Salva' di nuovo per caricare le modifiche su\n[OpenStreetMap.org](http://www.openstreetmap.org/), dove saranno visibili\na tutti gli utenti e disponibili agli altri per consentire di costruirci sopra o\nmigliorarle ulteriormente.\n\nSe non riesci a finire le modifiche in una seduta, puoi abbandonare la\nfinestra dell'editor e tornarci più tardi (utilizzando lo stesso browser e lo\nstesso computer): l'editor ti offrirà infatti la possibiltà di recuperare il tuo lavoro.\n",
"roads": "# Strade\n\nE' possibile creare, aggiustare ed eliminare le strade con questo editor. Le strade possono essere di tutti i tipi: percorsi, autostrade, cammini, piste ciclabili o altro. E' possibile mappare ogni segmento calpestabile.\n\n### Selezione\n\nCliccare su una strada per selezionarla. Verranno visualizzati un contorno e un piccolo menu strumenti sulla mappa oltre ad una barra laterale che mostra informazioni dettagliate sulla strada.\n\n### Modifica\n\nVi capiterà spesso di vedere strade non combacianti con le immagini sullo sfondo o con il tracciato GPS. E' possibile allineare queste strada in modo che si trovino nella giusta posizione.\n\nPer prima cosa cliccare sulla strada che si vuole modificare. Questo farà in modo che la strada venga evidenziata e che vengano visualizzati i punti di controllo lungo di essa che possono essere spostati in luoghi più consoni. Se si vuole aggiungere nuovi punti di controllo per aggiungere maggiori dettagli, basta fare doppio clic su parte della strada senza nodi.\n\nSe la strada è connessa ad un'altra strada ma non è ben connessa sulla mappa, è possibile spostare uno di questi punti di controllo sull'altra strada in modo da unirli. E' importante per la mappa che le strade siano correttamente connesse anche per garantire giuste indicazioni di guida.\n\nE' possibile cliccare sullo strumento 'Sposta' o premere il tasto rapido `M` per muovere l'intera strada in una volta sola. Cliccare nuovamente per memorizzare lo spostamento.\n\n### Eliminizione\n\nSe la strada è completamente sbagliata, ovvero non compare sulle immagini satellitari e non viene rilevata nella realtà, è possibile eliminarla eliminandola dalla mappa. Attenzione ad effettuare questa operazione di eliminazione poiché, come per ogni altra modifica, i risultati vengono visti da tutti. Considera che le immagini satellitari sono spesso vecchie quindi è possibile che la strada sia stata costruita solo di recente.\n\nE' possibile eliminare una strada cliccando prima su di essa per selezionarla e poi sull'icona cestino o premendo il tasto 'Canc' della tastiera.\n\n### Creazione\n\nHai notato che in un punto della mappa dovrebbe esserci una strada ma non c'è ? Clicca sull'incona 'Linea' in alto a sinistra nell'editor o premi il tasto `2` per iniziare a disegnare una linea.\n\nCliccare sull'inizio della strada sulla mappa per iniziare a disegnarla. Se la strada è unita ad una strada già esistente, iniziare cliccando nel punto dove sono connesse.\n\nQuindi cliccare i nuovi punti lungo la strada in modo che segua il percorso giusto dettato dall'immagine satellitare o dai dati del GPS. Se la strada che stai disegnando attraversa un'altra strada, collegala cliccando sul punto di intersezione. Quando hai finito di disegnare fai doppio clic o premi 'Invio' o 'Enter' sulla tua tastiera.\n",
"gps": "# GPS\n\nI dati provenienti dal GPS sono la sorgente dati più fidata per OpenStreetMap.\nQuesto editor supporta i tracciati locali - i file `.gpx` che si trovano sul tuo\ncomputer. È possibile raccogliere questo tipo di tracciati GPS con un gran\nnumero di applicazioni per smartphone o tramite dispositivi GPS personali.\n\nPer informazioni su come effettuare un rilevamento GPS è possibile leggere\n[Rilevamenti con un GPS](http://learnosm.org/en/beginner/using-gps/).\n\nPer utilizzare un tracciato GPX al fine di effettuare una mappatura, trascina il\nfile GPX sull'editor di mappe. Se viene riconosciuto verrà aggiunto alla mappa\ned evidenziato tramite una linea violetta. Cliccare sul menu 'Dati mappa' che si trova sulla sinitra per abilitare, disabilitare o zoomare il livello creato dal file GPX.\n\nIl tracciato GPX non viene caricato direttamente su OpenStreetMap - il modo\nmigliore di utilizzarlo è quello di disegnare sulla mappa usando il tracciato\ncome guida per i nuovi elementi che vuoi aggiungere e [caricarlo comunque\nsu OpenStreetMap](http://www.openstreetmap.org/trace/create) per renderlo\npoi disponibile agli altri utenti.\n",
"fields": {
"access": {
"label": "Accesso",
- "placeholder": "Sconosciuto",
- "types": {
- "access": "Generale",
- "foot": "A piedi",
- "motor_vehicle": "Veicoli a Motore",
- "bicycle": "Biciclette",
- "horse": "Cavalli"
- },
"options": {
- "yes": {
- "title": "Permesso",
- "description": "Accesso consentito a norma di legge; diritto di passaggio"
+ "designated": {
+ "description": "Accesso consentito stando ai cartelli stradali od alle norme locali",
+ "title": "Preferenziale"
+ },
+ "destination": {
+ "description": "Accesso consentito solo se la destinazione coincide con l'elemento stesso",
+ "title": "Destinazione"
},
"no": {
- "title": "Vietato",
- "description": "Accesso consentito ai soli autorizzati"
+ "description": "Accesso consentito ai soli autorizzati",
+ "title": "Vietato"
},
"permissive": {
- "title": "Permissivo",
- "description": "Accesso consentito fino a quando il proprietario lo consente"
+ "description": "Accesso consentito fino a quando il proprietario lo consente",
+ "title": "Permissivo"
},
"private": {
- "title": "Privato",
- "description": "Accesso consentito solo con il permesso individuale del proprietario"
+ "description": "Accesso consentito solo con il permesso individuale del proprietario",
+ "title": "Privato"
},
- "designated": {
- "title": "Preferenziale",
- "description": "Accesso consentito stando ai cartelli stradali od alle norme locali"
- },
- "destination": {
- "title": "Destinazione",
- "description": "Accesso consentito solo se la destinazione coincide con l'elemento stesso"
+ "yes": {
+ "description": "Accesso consentito a norma di legge; diritto di passaggio",
+ "title": "Permesso"
}
+ },
+ "placeholder": "Sconosciuto",
+ "types": {
+ "access": "Generale",
+ "bicycle": "Biciclette",
+ "foot": "A piedi",
+ "horse": "Cavalli",
+ "motor_vehicle": "Veicoli a Motore"
}
},
"access_simple": {
"address": {
"label": "Indirizzo",
"placeholders": {
+ "city": "Città",
+ "country": "Nazione",
+ "district": "Distretto",
+ "hamlet": "Località",
"housename": "Numero civico",
"housenumber": "123",
- "street": "Strada",
- "city": "Città",
- "postcode": "Codice postale",
"place": "Luogo",
- "hamlet": "Località",
- "suburb": "Circoscrizione",
- "subdistrict": "Sottodistretto",
- "district": "Distretto",
+ "postcode": "Codice postale",
"province": "Provincia",
"state": "Stato/Regione",
- "country": "Nazione"
+ "street": "Strada",
+ "subdistrict": "Sottodistretto",
+ "suburb": "Circoscrizione"
}
},
"admin_level": {
"aerialway/access": {
"label": "Accesso",
"options": {
+ "both": "Entrambe",
"entry": "Ingresso",
- "exit": "Uscita",
- "both": "Entrambe"
+ "exit": "Uscita"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Accesso (estate)",
"options": {
+ "both": "Entrambe",
"entry": "Ingresso",
- "exit": "Uscita",
- "both": "Entrambe"
+ "exit": "Uscita"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Direzione",
"options": {
- "N": "Nord",
"E": "Est",
- "S": "Sud",
- "W": "Ovest",
- "NE": "Nordest",
- "SE": "Sudest",
- "SW": "Sudovest",
- "NW": "Nordovest",
- "NNE": "Nord-nordest",
"ENE": "Est-nordest",
"ESE": "Est-sudest",
+ "N": "Nord",
+ "NE": "Nordest",
+ "NNE": "Nord-nordest",
+ "NNW": "Nord-nordovest",
+ "NW": "Nordovest",
+ "S": "Sud",
+ "SE": "Sudest",
"SSE": "Sud-sudest",
"SSW": "Sud-sudovest",
- "WSW": "Ovest-sudovest",
+ "SW": "Sudovest",
+ "W": "Ovest",
"WNW": "Ovest-nordovest",
- "NNW": "Nord-nordovest"
+ "WSW": "Ovest-sudovest"
}
},
"clock_direction": {
"label": "Direzione",
"options": {
- "clockwise": "Senso orario",
- "anticlockwise": "Senso antiorario"
+ "anticlockwise": "Senso antiorario",
+ "clockwise": "Senso orario"
}
},
"collection_times": {
"construction": {
"label": "Tipo"
},
+ "content": {
+ "label": "Contenuto"
+ },
"country": {
"label": "Stato"
},
"description": {
"label": "Descrizione"
},
+ "drive_through": {
+ "label": "Drive-through"
+ },
"electrified": {
"label": "Elettrificata",
- "placeholder": "Linea Aerea, Rotaia Elettrificata...",
"options": {
"contact_line": "Linea Aerea di Contatto",
+ "no": "No",
"rail": "Rotaia Elettrificata",
- "yes": "Sì (non specificato)",
- "no": "No"
- }
+ "yes": "Sì (non specificato)"
+ },
+ "placeholder": "Linea Aerea, Rotaia Elettrificata..."
},
"elevation": {
"label": "Altitudine"
"label": "Tipo",
"options": {
"pillar": "Colonnina/Fuoriterra",
+ "pond": "Stagno",
"underground": "Sotterraneo",
- "wall": "A muro",
- "pond": "Stagno"
+ "wall": "A muro"
}
},
"fixme": {
},
"gender": {
"label": "Genere",
- "placeholder": "Sconosciuto",
"options": {
- "male": "Maschile",
"female": "Femminile",
+ "male": "Maschile",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Sconosciuto"
},
"generator/method": {
"label": "Metodo"
"incline": {
"label": "Pendenza"
},
+ "incline_steps": {
+ "label": "Pendenza",
+ "options": {
+ "down": "Giù",
+ "up": "Su"
+ }
+ },
"information": {
"label": "Tipo"
},
"internet_access": {
"label": "Accesso ad Internet",
"options": {
- "yes": "Sì",
"no": "No",
- "wlan": "Wifi",
+ "terminal": "Terminale",
"wired": "Via cavo",
- "terminal": "Terminale"
+ "wlan": "Wifi",
+ "yes": "Sì"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Fogliame",
"options": {
- "evergreen": "Sempreverde",
"deciduous": "Deciduo",
- "semi_evergreen": "Semi-sempreverde",
+ "evergreen": "Sempreverde",
+ "mixed": "Misto",
"semi_deciduous": "Semi-deciduo",
- "mixed": "Misto"
+ "semi_evergreen": "Semi-sempreverde"
}
},
"leaf_type": {
"label": "Tipo di foglia",
"options": {
"broadleaved": "Latifoglia",
- "needleleaved": "Aghifoglia",
+ "leafless": "Senza foglie",
"mixed": "Misto",
- "leafless": "Senza foglie"
+ "needleleaved": "Aghifoglia"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Difficoltà Mountain Bike",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Ghiaia solida/terra battuta, nessun ostacolo, curve ampie",
"1": "1: Un po' di terriccio, piccoli ostacoli, curve ampie",
"4": "4: Terriccio o macigni, tornanti pericolosi",
"5": "5: Difficoltà massima, massi sparsi, frane",
"6": "6: Impraticabile tranne dai ciclisti più esperti"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Difficoltà IMBA del tracciato",
- "placeholder": "Facile, Medio, Difficile...",
"options": {
"0": "Più semplice (cerchio bianco)",
"1": "Semplice (cerchio verde)",
"2": "Medio (quadrato blu)",
"3": "Difficile (rombo nero)",
"4": "Estremamente difficile (rombo nero doppio)"
- }
+ },
+ "placeholder": "Facile, Medio, Difficile..."
},
"mtb/scale/uphill": {
"label": "Difficoltà in salita per mountain bike",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Pendenza media <10%, ghiaia/terra battuta, nessun ostacolo",
"1": "1: Pendenza media <15%, ghiaia/terra battuta, ostacoli rari e piccoli",
"3": "3: Pendenza media <25%, superficie varia, rami/roccie grandi come un pugno",
"4": "4: Pendenza media <30%, in cattive condizioni, rami/roccie grandi",
"5": "5: Pendenza estrema, in genere è necessario spigere o sollevare la bici"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nome",
"oneway": {
"label": "Senso unico",
"options": {
+ "no": "No",
"undefined": "No (ipotesi)",
- "yes": "Sì",
- "no": "No"
+ "yes": "Sì"
}
},
"oneway_yes": {
"label": "Senso unico",
"options": {
+ "no": "No",
"undefined": "Si (ipotesi)",
- "yes": "Sì",
- "no": "No"
+ "yes": "Sì"
}
},
"opening_hours": {
"parking": {
"label": "Tipo",
"options": {
- "surface": "Superficie",
- "multi-storey": "Più piani",
- "underground": "Sotterraneo",
- "sheds": "Capanno",
"carports": "Tettoia",
"garage_boxes": "Box garage",
- "lane": "Corsia"
+ "lane": "Corsia",
+ "multi-storey": "Più piani",
+ "sheds": "Capanno",
+ "surface": "Superficie",
+ "underground": "Sotterraneo"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Difficoltà",
- "placeholder": "Facile, Intermedia, Avanzata...",
"options": {
- "novice": "Neofita (verde)",
- "easy": "Facile (blu)",
- "intermediate": "Media (rossa)",
"advanced": "Avanzata (nera)",
+ "easy": "Facile (blu)",
"expert": "Esperto (arancione)",
+ "extreme": "Estrema (equipaggiamento da scalata richiesto)",
"freeride": "Fuoripista (gialla)",
- "extreme": "Estrema (equipaggiamento da scalata richiesto)"
- }
+ "intermediate": "Media (rossa)",
+ "novice": "Neofita (verde)"
+ },
+ "placeholder": "Facile, Intermedia, Avanzata..."
},
"piste/grooming": {
"label": "Terreno",
"options": {
- "classic": "Classico",
- "mogul": "Gobbe",
"backcountry": "Fuoripista",
+ "classic": "Classico",
"classic+skating": "Classico e sci di fondo",
+ "mogul": "Gobbe",
"scooter": "Scooter/Motoslitta",
"skating": "Sci di fondo"
}
"label": "Tipo",
"options": {
"downhill": "Discesa libera",
+ "hike": "Escursionismo",
+ "ice_skate": "Pattinaggio sul ghiaccio",
"nordic": "Combinata nordica",
+ "playground": "Parco giochi",
"skitour": "Sci alpinismo",
"sled": "Slittino",
- "hike": "Escursionismo",
"sleigh": "Slitta",
- "ice_skate": "Pattinaggio sul ghiaccio",
- "snow_park": "Snow Park",
- "playground": "Parco giochi"
+ "snow_park": "Snow Park"
}
},
"place": {
"power": {
"label": "Tipo"
},
+ "power_supply": {
+ "label": "Alimentazione"
+ },
"railway": {
"label": "Tipo"
},
},
"sac_scale": {
"label": "Difficoltà escurione",
- "placeholder": " Escursionismo in Montagna , Sentiero Alpino...",
"options": {
- "hiking": "T1: Escursionismo",
- "mountain_hiking": "T2: Escursionismo in montagna ",
- "demanding_mountain_hiking": "T3: Escursionismo impegnativo in montagna",
"alpine_hiking": "T4: Sentiero alpino",
"demanding_alpine_hiking": "T5: Sentiero alpino impegnativo",
- "difficult_alpine_hiking": "T6: Sentiero alpino difficile"
- }
+ "demanding_mountain_hiking": "T3: Escursionismo impegnativo in montagna",
+ "difficult_alpine_hiking": "T6: Sentiero alpino difficile",
+ "hiking": "T1: Escursionismo",
+ "mountain_hiking": "T2: Escursionismo in montagna "
+ },
+ "placeholder": " Escursionismo in Montagna , Sentiero Alpino..."
+ },
+ "sanitary_dump_station": {
+ "label": "Smaltimento reflui"
},
"seasonal": {
"label": "Stagionale"
"service": {
"label": "Tipo"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Smagliacatene",
"options": {
+ "no": "No",
"undefined": "No (ipotesi)",
- "yes": "Sì",
- "no": "No"
+ "yes": "Sì"
}
},
"service/bicycle/pump": {
"label": "Pompa",
"options": {
+ "no": "No",
"undefined": "No (ipotesi)",
- "yes": "Sì",
- "no": "No"
+ "yes": "Sì"
+ }
+ },
+ "service_rail": {
+ "label": "Tipo di servizio",
+ "options": {
+ "spur": "Accesso",
+ "yard": "Smistamento"
}
},
"shelter": {
},
"smoking": {
"label": "Zona fumatori",
- "placeholder": "No, Separato, Sì...",
"options": {
- "no": "Vietato fumare",
- "separated": "In zone fumatori, non fisicamente isolate",
+ "dedicated": "Dedicato ai soli fumatori (es. circolo fumatori)",
"isolated": "In zone fumatori, fisicamente isolate",
+ "no": "Vietato fumare",
"outside": "Permesso all'esterno",
- "yes": "Permesso ovunque",
- "dedicated": "Dedicato ai soli fumatori (es. circolo fumatori)"
- }
+ "separated": "In zone fumatori, non fisicamente isolate",
+ "yes": "Permesso ovunque"
+ },
+ "placeholder": "No, Separato, Sì..."
},
"smoothness": {
"label": "Percorribilità",
- "placeholder": "Rotelle, Ruote, Fuoristrada...",
"options": {
+ "bad": " Ruote robuste: biciclette per cicloturismo, auto, risciò e simili",
"excellent": "Rotelle: pattini in linea, skateboard e simili",
"good": "Ruote sottili: biciclette da corsa e simili",
+ "horrible": "Fuoristrada: veicoli fuoristrada pesanti e simili. ",
+ "impassable": "Nessun veicolo ruotato",
"intermediate": "Ruote: biciclette da città, sedie a rotelle, scooter e simili",
- "bad": " Ruote robuste: biciclette per cicloturismo, auto, risciò e simili",
"very_bad": "Altezza da terra elevata: veicoli fuoristrada leggeri e simili",
- "horrible": "Fuoristrada: veicoli fuoristrada pesanti e simili. ",
- "very_horrible": "Fuoristrada speciali: trattori agricoli, quad-bike, autoblindo e simili",
- "impassable": "Nessun veicolo ruotato"
- }
+ "very_horrible": "Fuoristrada speciali: trattori agricoli, quad-bike, autoblindo e simili"
+ },
+ "placeholder": "Rotelle, Ruote, Fuoristrada..."
},
"social_facility_for": {
"label": "Tipo di utenza",
},
"structure": {
"label": "Struttura",
- "placeholder": "Sconosciuto",
"options": {
"bridge": "Ponte",
- "tunnel": "Tunnel",
- "embankment": "Argine",
"cutting": "Infossato",
- "ford": "Guado"
- }
+ "embankment": "Argine",
+ "ford": "Guado",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Sconosciuto"
},
"studio_type": {
"label": "Tipo"
},
"takeaway": {
"label": "Asporto",
- "placeholder": "Sì, no, solo da asporto...",
"options": {
- "yes": "Sì",
"no": "No",
- "only": "Solo da asporto"
- }
+ "only": "Solo da asporto",
+ "yes": "Sì"
+ },
+ "placeholder": "Sì, no, solo da asporto..."
},
"toilets/disposal": {
"label": "Smaltimento",
"options": {
- "flush": "Sciaquone",
- "pitlatrine": "Fossa/Latrina",
+ "bucket": "Contenitore",
"chemical": "Chimico",
- "bucket": "Contenitore"
+ "flush": "Sciaquone",
+ "pitlatrine": "Fossa/Latrina"
}
},
"tourism": {
},
"tracktype": {
"label": "Tipo di strada",
- "placeholder": "Solido, Soprattutto Solido, Morbido...",
"options": {
"grade1": "Solido: strada asfaltata o con superficie dura e ben compattata",
"grade2": "Soprattutto solido: superficie in ghiaia o di terra/sabbia ben compattata",
"grade3": "Superficie mista di materiali duri e cedevoli",
"grade4": "Soprattutto Morbido: terra, sabbia, erba mista ad una componente dura",
"grade5": "Morbido: erba, sabbia o terreno"
- }
+ },
+ "placeholder": "Solido, Soprattutto Solido, Morbido..."
},
"trail_visibility": {
"label": "Visibilità del Tracciato",
- "placeholder": "Eccellente, Buona, Cattiva...",
"options": {
+ "bad": "Cattiva: tracciato visibile a stento",
"excellent": "Eccellente: tracciato evidente o segnavia sempre presenti",
"good": "Buona: segnavia visibili, ma talvolta difficile da individuare",
- "intermediate": "Media: tracciato non sempre visibile",
- "bad": "Cattiva: tracciato visibile a stento",
"horrible": "Orribile: spesso non tracciato",
+ "intermediate": "Media: tracciato non sempre visibile",
"no": "Nessuna: perlopiù non tracciato"
- }
+ },
+ "placeholder": "Eccellente, Buona, Cattiva..."
},
"trees": {
"label": "Alberi"
"water": {
"label": "Tipo"
},
+ "water_point": {
+ "label": "Approvvigionamento Idrico"
+ },
"waterway": {
"label": "Tipo"
},
"name": "Stazione di riparazione biciclette",
"terms": "riparazione,bibiclette,meccanico,bici,cicli"
},
+ "amenity/biergarten": {
+ "name": "Birreria all'aperto",
+ "terms": "birreria,distesa"
+ },
"amenity/boat_rental": {
"name": "Noleggio barche",
"terms": "noleggio barche,noleggio,barche,porto,negozio"
"name": "Orologio",
"terms": "ora,orario,orologio"
},
+ "amenity/college": {
+ "name": "Area di un College"
+ },
"amenity/community_centre": {
"name": "Centro sociale"
},
"name": "Cimitero",
"terms": "Cimitero"
},
+ "amenity/grit_bin": {
+ "name": "Cestino del sale",
+ "terms": "spandisale,sale,ghiaccio,inverno,salare"
+ },
"amenity/hospital": {
"name": "Area Ospedaliera",
"terms": "ospedale,clinica,pronto soccorso,servizio sanitario,salute,hospice,ospizio,infermeria,istituzione,casa di cura,casa di riposo,sanatorio,ambulatorio,chirurgia,reparto"
"name": "Ristorante",
"terms": "bar,caffetteria,caffè,ristorante self-service,braceria,trattoria,negozio di ciambelle,bettola,griglieria,venditore di hamburger,venditore di hotdog,pizzeria"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Smaltimento reflui camper",
+ "terms": "smaltimento,rifiuti,toilet,wc,camper,escrementi"
+ },
"amenity/school": {
"name": "Area Scolastica",
"terms": "scuola,accademia,alma mater,lavagna,collegio,dipartimento,disciplina,classe,facoltà,aula,istituto,istituzione,riformatorio,scuola,edificio scolastico,seminario,università"
"name": "Banco alimentare",
"terms": "mensa del povero,mensa caritas"
},
+ "amenity/social_facility/group_home": {
+ "name": "Casa di riposo per anziani"
+ },
"amenity/social_facility/homeless_shelter": {
"name": "Dormitorio",
"terms": "ricovero,senzadimora,barboni,senza fissa dimora,senza dimora,senza casa"
"name": "Chiesa",
"terms": "cristiano,abbazia,basilica,cattedrale,presbiterio,cappella,chiesa,casa di Dio,luogo di preghiera,luogo di culto,missione,oratorio,parrocchia,sacello,edicola votiva,tabernacolo,tempio"
},
+ "building/college": {
+ "name": "Edificio di un College"
+ },
"building/commercial": {
"name": "Edificio commerciale",
"terms": "Edificio commerciale"
"name": "Edificio industriale",
"terms": "Edifico industriale"
},
+ "building/kindergarten": {
+ "name": "Edificio di una Scuola d'Infanzia"
+ },
"building/public": {
"name": "Edificio pubblico",
"terms": "comunita,edificio comunitario,comunità"
"name": "Carpentiere",
"terms": "carpenteria,legno"
},
+ "craft/carpet_layer": {
+ "name": "Posatori di Moquette"
+ },
"craft/caterer": {
"name": "Fornitore di catering"
},
"name": "Costruttore di orologi",
"terms": "orologi"
},
+ "craft/confectionery": {
+ "name": "Negozio per dolciumi"
+ },
"craft/dressmaker": {
"name": "Sartoria",
"terms": "sarto,merceria,vestiti su misura"
"craft/handicraft": {
"name": "Artigiano"
},
+ "craft/insulator": {
+ "name": "Isolanti"
+ },
"craft/jeweler": {
"name": "Gioielliere",
"terms": "gioielli,bigiotteria,orafo,gioielleria"
"craft/plumber": {
"name": "Idraulico"
},
+ "craft/saddler": {
+ "name": "Sellaio"
+ },
"craft/sailmaker": {
"name": "Velaio"
},
"craft/stonemason": {
"name": "Tagliapietre"
},
+ "craft/sweep": {
+ "name": "Spazzacamino"
+ },
"craft/tailor": {
"name": "Sarto"
},
"name": "Orologiaio",
"terms": "orologi,riparazione"
},
+ "craft/window_construction": {
+ "name": "Infissi"
+ },
"craft/winery": {
"name": "Cantina vinicola",
"terms": "azienda vinicola, azienda vitivinicola"
"golf/rough": {
"name": "Irregolare, grezzo"
},
+ "golf/tee": {
+ "name": "Tee di Partenza"
+ },
"golf/water_hazard": {
"name": "Ostacolo d'acqua",
"terms": "buca,acqua,golf,ostacolo"
"name": "Faro",
"terms": "Faro"
},
+ "man_made/mast": {
+ "name": "Antenna radio",
+ "terms": "antenna,torre,wireless,radio,telefonia,antenne"
+ },
"man_made/observation": {
"name": "Torre di osservazione",
"terms": "torre,osservazione,osservatorio,piattaforma,osservativa,antincendio,panorama"
},
+ "man_made/petroleum_well": {
+ "name": "Pozzo petrolifero",
+ "terms": "petrolio,bitume,pozzo"
+ },
"man_made/pier": {
"name": "Molo",
"terms": " Passerella "
"name": "Conduttura",
"terms": "Conduttura"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "silos,cisterna,botte"
+ },
+ "man_made/storage_tank": {
+ "name": "Cisterna",
+ "terms": "silos,cisterna,botte,contenitore"
+ },
"man_made/survey_point": {
"name": "Punto geodetico",
"terms": "Punto geodetico o altra stazione fissa"
"name": "Città",
"terms": "Città"
},
+ "place/farm": {
+ "name": "Azienda agricola",
+ "terms": "fattoria,campi,campo,agricoltura,agricolo,contadino"
+ },
"place/hamlet": {
"name": "Paese",
"terms": "Borgo"
"name": "Sottostazione elettrica",
"terms": "Sottostazione elettrica,centralina,trasformatore"
},
+ "power/substation": {
+ "name": "Sottostazione"
+ },
"power/tower": {
"name": "Traliccio ad alta tensione",
"terms": "Torre ad alta tensione"
"name": "Relazione",
"terms": "Relazione"
},
+ "roundabout": {
+ "name": "Rotatoria",
+ "terms": "rotonda,rotatoria"
+ },
"route/ferry": {
"name": "Rotta",
"terms": "Itinerario traghetto"
"name": "Negozio di articoli di bellezza",
"terms": "Salone di bellezza"
},
+ "shop/bed": {
+ "name": "Negozio di Materassi"
+ },
"shop/beverages": {
"name": "Negozio di bevande",
"terms": "Negozio di bevande"
"name": "Macellaio",
"terms": "Macellaio"
},
+ "shop/candles": {
+ "name": "Negozio di Candele"
+ },
"shop/car": {
"name": "Concessionario",
"terms": "Concessionaria auto"
"name": "Drogheria",
"terms": "Articoli di pulizia e bellezza"
},
+ "shop/chocolate": {
+ "name": "Cioccolateria"
+ },
"shop/clothes": {
"name": "Negozio di abbigliamento",
"terms": "Negozio vestiti"
"name": "Minimarket",
"terms": "Drogheria"
},
+ "shop/copyshop": {
+ "name": "Copisteria"
+ },
+ "shop/cosmetics": {
+ "name": "Negozio di cosmetici"
+ },
"shop/curtain": {
"name": "Negozio di tende"
},
"name": "Ottico",
"terms": "Ottico"
},
+ "shop/pawnbroker": {
+ "name": "Banco dei pegni"
+ },
"shop/pet": {
"name": "Negozio di animali",
"terms": "Negozio di animali"
"name": "Sartoria",
"terms": "sarto,vestiti,abiti"
},
+ "shop/tobacco": {
+ "name": "Tabacchino",
+ "terms": "Tabaccheria"
+ },
"shop/toys": {
"name": "Negozio di giocattoli",
"terms": "Negozio giocattoli"
"name": "Videoteca",
"terms": "Videoteca"
},
+ "shop/weapons": {
+ "name": "Armeria"
+ },
"shop/wine": {
"name": "Enoteca",
"terms": "vino,negozio di vini"
"name": "Canale di scolo",
"terms": " Canale di scolo "
},
+ "waterway/fuel": {
+ "name": "Stazione di rifornimento marittima",
+ "terms": "distributore,gas, benzina,diesel,gpl,carburante,benzinaio,gasolio,nafta,barca,barche"
+ },
"waterway/river": {
"name": "Fiume",
"terms": "ruscello,affluente,corso d'acqua,torrente,estuario,rivolo,rigagnolo,immissario"
"name": "Argine",
"terms": "Argine"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Smaltimento reflui marittimi",
+ "terms": "smaltimento,rifiuti,toilet,wc,camper,escrementi"
+ },
"waterway/stream": {
"name": "Torrente",
"terms": "fiumiciattolo,ramo,ruscello,corso,torrente,corrente,deriva,flusso,rivolo,rigagnolo"
"multiple": "{n} 個のオブジェクトを削除"
},
"incomplete_relation": "関連する地物データをすべてダウンロードしていないため、この地物を削除できません。",
+ "part_of_relation": "この地物は範囲外のリレーションの一部となっているため、削除できません。この地物を削除するには、まずリレーションを先に削除してください。",
"connected_to_hidden": "非表示の地物に接続しているため、削除できません。"
},
"add_member": {
"commit": {
"title": "編集結果を保存",
"description_placeholder": "貢献のための簡単な解説",
- "message_label": "コミットメッセージ",
"upload_explanation": "あなたがアップロードした編集内容は、OpenStreetMapを利用しているすべてのユーザが閲覧できるようになります。",
"upload_explanation_with_user": "編集した内容を {user} アカウントでアップロードし、OpenStreetMapを利用しているすべてのユーザが閲覧できるようにします。",
"save": "Save",
"node": "ノード",
"way": "ウェイ",
"relation": "リレーション",
- "location": "位置"
+ "location": "位置",
+ "add_fields": "項目追加: "
},
"background": {
"title": "背景画像",
"fix_misalignment": "背景画像をずらす",
"reset": "設定リセット"
},
+ "map_data": {
+ "title": "地図データ",
+ "description": "地図データ",
+ "data_layers": "データレイヤ",
+ "fill_area": "エリアを塗りつぶし",
+ "map_features": "タグ定義一覧",
+ "autohidden": "表示対象となっている地物の数が多すぎます。ズームインしてから編集を行ってください。"
+ },
+ "feature": {
+ "points": {
+ "description": "ポイント",
+ "tooltip": "地点情報"
+ },
+ "major_roads": {
+ "description": "主要道路",
+ "tooltip": "道路、街路など"
+ },
+ "minor_roads": {
+ "description": "市町村道など",
+ "tooltip": "私道、駐車場内経路、農道など"
+ },
+ "paths": {
+ "description": "山道",
+ "tooltip": "歩道、自転車道など"
+ },
+ "buildings": {
+ "description": "建築物",
+ "tooltip": "建築物、避難所、ガレージなど"
+ },
+ "landuse": {
+ "description": "土地利用関連",
+ "tooltip": "森林、農地、公園、住宅地、商業区画など"
+ },
+ "boundaries": {
+ "description": "区域境界",
+ "tooltip": "行政区境"
+ },
+ "water": {
+ "description": "水域関連",
+ "tooltip": "河川、湖沼、沼地など"
+ },
+ "rail": {
+ "description": "鉄道関連",
+ "tooltip": "鉄道"
+ },
+ "power": {
+ "description": "電力関連",
+ "tooltip": "電線、高圧線、発電所、変電所など"
+ },
+ "past_future": {
+ "description": "廃棄消失/建設予定地",
+ "tooltip": "予定地、建設中、廃業、撤去済など"
+ },
+ "others": {
+ "description": "その他",
+ "tooltip": "すべて"
+ }
+ },
+ "area_fill": {
+ "wireframe": {
+ "description": "塗りつぶしなし (ワイヤフレーム)",
+ "tooltip": "ワイヤフレームモードを有効化することで、背景画像の視認性が高まります"
+ },
+ "partial": {
+ "description": "部分的に塗りつぶし",
+ "tooltip": "エリアの内側だけが塗りつぶされます。(初心者オススメ)"
+ },
+ "full": {
+ "description": "完全塗りつぶし",
+ "tooltip": "エリアがすべて塗りつぶされます。"
+ }
+ },
"restore": {
"heading": "OSMにアップロードされていない編集内容があります",
"description": "前回作業した編集内容がアップロードされていません。編集内容を復元しますか?",
"title": "保存",
"help": "編集内容をOpenStreetMapへ保存し、他ユーザへ公開",
"no_changes": "保存する変更はありません。",
- "error": "データ保存中にエラーが発生しました",
+ "error": "保存中にエラーが発生しました",
+ "status_code": "サーバが状態コード{code}を返しました",
"unknown_error_details": "インターネットに接続されているか、確認してください。",
"uploading": "編集内容をOpenStreetMapへアップロードしています",
- "unsaved_changes": "編集内容が保存されていません"
+ "unsaved_changes": "編集内容が保存されていません",
+ "conflict": {
+ "header": "競合している編集を解決",
+ "count": "{total}件中{num}件の競合",
+ "previous": "< 前へ",
+ "next": "次へ >",
+ "keep_local": "自分の変更を維持",
+ "keep_remote": "他の変更を採用",
+ "restore": "復元",
+ "delete": "削除したままにする",
+ "download_changes": "または変更をダウンロードしてください。",
+ "done": "すべての競合が解決されました。",
+ "help": "あなたが変更したいくつかの地物を他のユーザーも変更しました。\n以下の各項目をクリックして、競合についての詳細を確認し、自分の変更を維持するか、他のユーザーの変更を採用するかを選択してください。\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "このオブジェクトは{user}さんが削除しました。",
+ "location": "このオブジェクトはあなたと{user}さんがそれぞれ移動しました。",
+ "nodelist": "あなたと{user}さんがそれぞれノードを変更しました。",
+ "memberlist": "あなたと{user}さんがそれぞれリレーションのメンバーを変更しました。",
+ "tags": "あなたが<b>{tag}</b>タグを「{local}」で変更し、{user}さんが「{remote}」で変更しました。"
+ }
},
"success": {
"edited_osm": "OSM編集完了!",
"help_html": "あなたが投稿した内容は数分で\"標準\"レイヤーに反映されます。その他のレイヤーへの適用や、記述した地物によっては反映にさらに時間がかかる場合があります。\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map'>詳細</a>)\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "キャンセル"
},
"splash": {
"welcome": "iD 起動中",
},
"help": {
"title": "ヘルプ",
- "help": "# ヘルプ\n\nこのアプリケーションは、自由に編集できる世界地図 [OpenStreetMap](http://www.openstreetmap.org/)のエディターです。このエディターを利用して、あなたの地域のデータを追加したり更新したりして、誰にとってもより便利なオープンソースかつオープンデータの世界地図を作成できます。\n\nあなたが編集した結果は、OpenStreetMapを利用するすべての人が閲覧することができます。編集するためには [無料のOpenStreetMapアカウント](https://www.openstreetmap.org/user/new) が必要です。\n\nこの [iDエディター](http://ideditor.com/) は[GitHub上のソースコード](https://github.com/openstreetmap/iD)による協力型プロジェクトです。\n",
+ "help": "# ヘルプ\n\nこのアプリケーションは、自由に編集できる世界地図 [OpenStreetMap](http://www.openstreetmap.org/)編集用のエディタです。あなたが知っている地域についての情報を追加したり、編集したりして、誰もが使いやすい情報としてデータをオープンに広めましょう。\n\nあなたが編集した結果は、OpenStreetMapを利用するすべての人が閲覧することができます。編集するためには[ログイン](https://www.openstreetmap.org/login) する必要があります。\n\nこの [iD エディタ](http://ideditor.com/) の[ソースコードはGitHubで管理](https://github.com/openstreetmap/iD)されており、誰もが参加できるプロジェクトとして公開されています。\n",
"editing_saving": "# データの編集と保存\n\nこのエディタはオンライン環境で使用されることを前提としています、現在あなたはブラウザを通じてアクセスしているはずです。\n\n### 地物の選択\n\nポイント情報や道路といった地物情報は、地図上に表示されている対象をクリックすることで選択ができます。選択された地物はハイライトされ、詳細情報が記載されたパネルが表示されます。このパネル内の情報を編集することで、対象の地物の情報を編集できます。\n\n複数の地物を範囲選択するには、キーボードのShiftキーを押しながら地図上をクリックし、ドラッグしてください。ドラッグした範囲が四角形で表示され、その四角形の内の地物がすべて選択されます。\n\n### 編集内容の保存\n\n道路や建物、特定の場所などの追加/編集結果は、OSMサーバに保存されるまではあなたのローカルPC上に格納されます。間違った編集をしてしまっても慌てないでください。巻き戻しボタン(Undo)をクリックすることで、編集作業を巻き戻すことができます。同じ編集をもう一度実施したい場合は、巻き戻しのキャンセルボタン(redo)をクリックしてください。\n\n編集に区切りがついたら、'保存'をクリックして作業を終了してください。例えば街の一区画の編集が終わり、そこから別の場所の編集に移動する場合などです。データを保存する前に、編集した内容をもう一度見直しましょう。データが間違っている可能性がある場所がエディタ上に表示されますので、必要に応じて修正を行なってください。\n\n編集内容に問題がなければ、そのまま保存を行いましょう。あなたの編集内容を簡潔に表すコメントを記入した後、もう一度'保存'をクリックすると、あなたの編集内容が[OpenStreetMap.org](http://www.openstreetmap.org/)に投稿されます。投稿されたデータはあなた以外のすべての利用者に対しても表示されるようになり、そこに情報を追加したり、編集したりすることができるようになります。\n\n編集を一度に完了させることができない場合は、ブラウザのエディタ表示をそのままにして、いったんブラウザを閉じてしまいましょう。同じブラウザとエディタを使えば、後々、作業の続きを実施することができます。\n",
"roads": "# 道路\n\nこのエディタは道路を作成、修正、削除する機能を備えています。小路、自動車道、山道、自転車道等々、編集対象となる道路の種別に制限はありません。交差する道路を細かく地図に描くことも可能です。\n\n### 選択\n\n対象の道路をクリックすることで、選択することができます。選択された道路は強調表示され、ラインに対する操作を行う小さなツール項目がその近くに表示されます。道路の詳細情報は、サイドバーに一覧表示されます。\n\n### 修正\n\n既に描かれている道路の中には、背景画像の衛星写真やGPSトラックと明らかに位置が異なるものがあります。そうした道路を見つけたら、道路を正しい位置に修正しましょう。\n\nまずは変更対象となる道路をクリックして選択します。対象の道路が強調表示され、操作可能なポイントがラインの上に表示されて、位置の変更が可能となります。ラインとポイントを、より正しいと思われる位置に移動させてください。ライン上のポイントを増やすには、ラインの上でダブルクリックすることで、その位置にポイントを作成することが可能です。\n\n道路の接続状態が誤っている場合は、どちらかの道路の上に表示されているポイントをもう一つのラインの上に移動させ、2つのラインを接続してください。道路の接続は地図にとって非常に重要であり、車輌のナビゲーションを行うためには道路が正しく接続されていることが必須となります。\n\n'移動'ツールをクリックするか、キーボードでショートカットキー 'M' を押すことで、道路全体を一度に移動させることができます。もう一度クリックすることで、その位置へ対象が移動します。\n\n### 削除\n\n描かれている道路が完全に間違っている場合 - 衛星写真に映っておらず、より理想としては実際に現地で道路が無いことを確認できた場合 - その道路のデータそのものを削除し、地図から消すことが可能です。地物を削除する際の注意として、編集結果は他の編集と同様すべての利用者の目に触れること、また、衛星写真は撮影日時が古い可能性があり、道路が新しく敷設されているかもしれないことを意識してください。\n\n道路を削除するには、対象のラインをクリックして選択し、ツール項目からゴミ箱アイコンをクリックするか、'Delete'キーを押してください。\n\n### 新規作成\n\n道路があるはずなのにまだ描かれていない? エディタ左上に表示されている'ライン'アイコンをクリックするか、ショートカットキー'2'を押すと、ラインの新規描画を行うことができます。\n\n地図をクリックすることで、その地点からラインの描画が開始されます。もし既に描かれている道路から枝分かれした道路の場合は、既存道路で分岐が行われている部分をクリックして、その位置から描画を始めるようにしてください。\n\n衛星画像やGPSログなどで表示されている道路の形に添ってクリックし、ポイントを作成してください。描画している道路が他の道路と交差している場合は、交差している位置でクリックし、ラインを接続してください。描画を終了するには、終了する位置でダブルクリックするか、キーボードの'Return'、あるいは'Enter'キーを押してください。\n",
"gps": "# GPS\n\nOpenStreetMapにおいて、GPSデータは最も信用できる情報源です。iDエディタはあなたのPC上にある`.gpx`ファイルのトレース機能をサポートしています。GPSログは、スマートフォンのアプリケーションやGPSロガーを使用することで収集することができます。\n\nGPSを使用した現地調査の詳細な進め方については、[GPSによる調査](http://learnosm.org/jp/beginner/using-gps/)を参照してください。\n\nGPXログファイルをエディタの上にドラッグ&ドロップすることで、ファイルの内容をエディタ上に表示させることができます。ファイル形式の読み込みが正常に完了すると、ログは明るい紫色の線としてエディタ上に表示されます。エディタの左側に配置されている「地図データ」メニューをクリックすると、ログの表示/非表示、GPXが配置されたレイヤーへのズームを設定することができます。\n\nこのGPXログファイルはOpenStreetMapへ直接アップロードされたものではありません。このログを参考情報として地図を描いたり、あなたが追加する地物の配置場所の参考情報とするのがよいでしょう。また、あなた以外のユーザにもGPSログを使ってもらうためには[OpenStreetMapへのアップロード機能](http://www.openstreetmap.org/trace/create)を利用してください。\n",
"fields": {
"access": {
"label": "通行制限",
- "placeholder": "その他",
- "types": {
- "access": "一般",
- "foot": "歩行者",
- "motor_vehicle": "オートバイ",
- "bicycle": "自転車",
- "horse": "乗馬"
- },
"options": {
- "yes": {
- "title": "通行可",
- "description": "法律上の許可あり; 正当利用"
+ "designated": {
+ "description": "特定の地方条例や標識等で通行制限が行われている",
+ "title": "特定種の通行禁止"
+ },
+ "destination": {
+ "description": "特定の目的地へ移動する用途でのみ通行が許可されている",
+ "title": "目的外通行の禁止"
},
"no": {
- "title": "制限あり",
- "description": "一般の通行が許可されていない"
+ "description": "一般の通行が許可されていない",
+ "title": "制限あり"
},
"permissive": {
- "title": "所有者許諾あり",
- "description": "所有者が通行制限しない限り通行可"
+ "description": "所有者が通行制限しない限り通行可",
+ "title": "所有者許諾あり"
},
"private": {
- "title": "私有",
- "description": "通行時には所有者の許可を得る必要がある"
- },
- "designated": {
- "title": "特定種の通行禁止",
- "description": "特定の地方条例や標識等で通行制限が行われている"
+ "description": "通行時には所有者の許可を得る必要がある",
+ "title": "私有"
},
- "destination": {
- "title": "目的外通行の禁止",
- "description": "特定の目的地へ移動する用途でのみ通行が許可されている"
+ "yes": {
+ "description": "法律上の許可あり; 正当利用",
+ "title": "通行可"
}
+ },
+ "placeholder": "その他",
+ "types": {
+ "access": "一般",
+ "bicycle": "自転車",
+ "foot": "歩行者",
+ "horse": "乗馬",
+ "motor_vehicle": "オートバイ"
}
},
"access_simple": {
"address": {
"label": "住所",
"placeholders": {
+ "city": "市町村名",
+ "country": "郡",
+ "district": "District",
+ "hamlet": "Hamlet",
"housename": "地番",
"housenumber": "123",
- "street": "所属する街路名",
- "city": "市町村名",
- "postcode": "郵便番号",
"place": "地名",
- "hamlet": "Hamlet",
- "suburb": "区",
- "subdistrict": "Subdistrict",
- "district": "District",
+ "postcode": "郵便番号",
"province": "県",
"state": "州",
- "country": "郡"
+ "street": "所属する街路名",
+ "subdistrict": "Subdistrict",
+ "suburb": "区"
}
},
"admin_level": {
"aerialway/access": {
"label": "乗降場所",
"options": {
+ "both": "両方",
"entry": "入口",
- "exit": "出口",
- "both": "両方"
+ "exit": "出口"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "乗降場所(夏季)",
"options": {
+ "both": "両方",
"entry": "入口",
- "exit": "出口",
- "both": "両方"
+ "exit": "出口"
}
},
"aeroway": {
"cardinal_direction": {
"label": "方向",
"options": {
- "N": "北",
"E": "東",
- "S": "南",
- "W": "西",
- "NE": "北東",
- "SE": "南東",
- "SW": "南西",
- "NW": "北西",
- "NNE": "北北東",
"ENE": "東北東",
"ESE": "東南東",
+ "N": "北",
+ "NE": "北東",
+ "NNE": "北北東",
+ "NNW": "北北西",
+ "NW": "北西",
+ "S": "南",
+ "SE": "南東",
"SSE": "南南東",
"SSW": "南南西",
- "WSW": "西南西",
+ "SW": "南西",
+ "W": "西",
"WNW": "西北西",
- "NNW": "å\8c\97å\8c\97西"
+ "WSW": "西å\8d\97西"
}
},
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "右回り",
- "anticlockwise": "左回り"
+ "anticlockwise": "左回り",
+ "clockwise": "右回り"
}
},
"collection_times": {
"description": {
"label": "説明"
},
+ "drive_through": {
+ "label": "ドライブスルー"
+ },
"electrified": {
"label": "電化状態",
- "placeholder": "架線、集電レール...",
"options": {
"contact_line": "架線",
+ "no": "非電化",
"rail": "集電レール",
- "yes": "電化(未定義)",
- "no": "非電化"
- }
+ "yes": "電化(未定義)"
+ },
+ "placeholder": "架線、集電レール..."
},
"elevation": {
"label": "標高"
"label": "タイプ",
"options": {
"pillar": "柱/地上",
+ "pond": "池",
"underground": "地下",
- "wall": "壁",
- "pond": "池"
+ "wall": "壁"
}
},
"fixme": {
"gauge": {
"label": "軌間"
},
+ "gender": {
+ "label": "性別",
+ "options": {
+ "female": "女性",
+ "male": "男性",
+ "unisex": "性別区分なし"
+ },
+ "placeholder": "不明"
+ },
"generator/method": {
"label": "方式"
},
"incline": {
"label": "傾斜"
},
+ "incline_steps": {
+ "label": "傾斜",
+ "options": {
+ "down": "下",
+ "up": "上"
+ }
+ },
"information": {
"label": "タイプ"
},
"internet_access": {
"label": "インターネット環境",
"options": {
- "yes": "有り",
"no": "無し",
- "wlan": "Wi-Fi",
+ "terminal": "情報端末",
"wired": "有線LAN",
- "terminal": "情報端末"
+ "wlan": "Wi-Fi",
+ "yes": "有り"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "葉の季節変化",
"options": {
- "evergreen": "常緑樹",
"deciduous": "落葉樹",
- "semi_evergreen": "ほぼ常緑樹",
+ "evergreen": "常緑樹",
+ "mixed": "混合",
"semi_deciduous": "ほぼ落葉樹",
- "mixed": "混合"
+ "semi_evergreen": "ほぼ常緑樹"
}
},
"leaf_type": {
"label": "葉の種類",
"options": {
"broadleaved": "広葉樹",
- "needleleaved": "針葉樹",
+ "leafless": "葉なし",
"mixed": "混合",
- "leafless": "葉なし"
+ "needleleaved": "針葉樹"
}
},
"leisure": {
},
"mtb/scale": {
"label": "マウンテンバイク難易度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: 硬い砂利/圧縮土、障害物なし、緩いカーブ",
"1": "1: いくらか緩んだ表面、小さな障害物、緩いカーブ",
"4": "4: 緩んだ地面や杭、危険なヘアピンカーブ",
"5": "5: 最大の難しさ、漂礫地や地滑り",
"6": "6: 最上級のマウンテンバイクでなければ乗れない"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBAトレイル難易度",
- "placeholder": "初級者、中級者、上級者...",
"options": {
"0": "非常に容易 (白い円)",
"1": "容易 (緑色の円)",
"2": "中程度 (青い四角形)",
"3": "困難 (黒いひし形)",
"4": "非常に困難 (黒いひし形2つ)"
- }
+ },
+ "placeholder": "初級者、中級者、上級者..."
},
"mtb/scale/uphill": {
"label": "マウンテンバイク登山難易度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: 平均10%未満の傾斜、地面は舗装/圧縮、障害物なし",
"1": "1: 平均15%未満の傾斜、地面は舗装/圧縮、小さな障害物あり",
"3": "3: 平均25%未満の傾斜、変化のある地面、それなりの石や枝がある",
"4": "4: 平均30%未満の傾斜、地面状態は良くない、大きい岩や木の枝がある",
"5": "5: 非常に険しく、通常マウンテンバイクを押すか運ぶかする必要がある"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "名称",
"oneway": {
"label": "一方通行",
"options": {
+ "no": "いいえ",
"undefined": "おそらくいいえ",
- "yes": "はい",
- "no": "いいえ"
+ "yes": "はい"
}
},
"oneway_yes": {
"label": "一方通行",
"options": {
+ "no": "いいえ",
"undefined": "おそらくはい",
- "yes": "はい",
- "no": "いいえ"
+ "yes": "はい"
}
},
"opening_hours": {
"parking": {
"label": "タイプ",
"options": {
- "surface": "地面",
- "multi-storey": "マルチレベル",
- "underground": "地下",
- "sheds": "納屋",
"carports": "カーポート",
"garage_boxes": "箱型ガレージ",
- "lane": "路側帯"
+ "lane": "路側帯",
+ "multi-storey": "マルチレベル",
+ "sheds": "納屋",
+ "surface": "地面",
+ "underground": "地下"
}
},
"phone": {
},
"piste/difficulty": {
"label": "難易度",
- "placeholder": "初心者向け、普通、上級者向け",
"options": {
- "novice": "初心者向け (教習用)",
- "easy": "簡単 (緑色の円)",
- "intermediate": "普通 (青色の四角)",
"advanced": "上級 (黒色のひし形)",
+ "easy": "簡単 (緑色の円)",
"expert": "エキスパート (黒色のひし形2つ)",
+ "extreme": "エクストリーム (登山装備要)",
"freeride": "フリーライド (コース外)",
- "extreme": "エクストリーム (登山装備要)"
- }
+ "intermediate": "普通 (青色の四角)",
+ "novice": "初心者向け (教習用)"
+ },
+ "placeholder": "初心者向け、普通、上級者向け"
},
"piste/grooming": {
"label": "整備状況",
"options": {
- "classic": "クラシック",
- "mogul": "モーグル",
"backcountry": "バックカントリー",
+ "classic": "クラシック",
"classic+skating": "クラシックアンドスケーティング",
+ "mogul": "モーグル",
"scooter": "スクーター/スノーモービル",
"skating": "スケーティング"
}
"label": "種別",
"options": {
"downhill": "ダウンヒル",
+ "hike": "ハイキング",
+ "ice_skate": "アイススケート",
"nordic": "ノルディック",
+ "playground": "児童公園",
"skitour": "スキーツアー",
"sled": "小型そり",
- "hike": "ハイキング",
"sleigh": "そり",
- "ice_skate": "アイススケート",
- "snow_park": "スキー場",
- "playground": "児童公園"
+ "snow_park": "スキー場"
}
},
"place": {
"label": "古布回収"
},
"recycling/glass": {
- "label": "落ち葉・草回収"
+ "label": "ガラス回収"
},
"recycling/paper": {
"label": "古紙回収"
},
"sac_scale": {
"label": "ハイキングの難易度",
- "placeholder": "山岳ハイキング, 高地登山…",
"options": {
- "hiking": "T1: ハイキング",
- "mountain_hiking": "T2: 山岳ハイキング",
- "demanding_mountain_hiking": "T3: 中難度の山岳ハイキング",
"alpine_hiking": "T4: 高地登山",
"demanding_alpine_hiking": "T5: 中難度の高地登山",
- "difficult_alpine_hiking": "T6: 高難度の高地登山"
- }
+ "demanding_mountain_hiking": "T3: 中難度の山岳ハイキング",
+ "difficult_alpine_hiking": "T6: 高難度の高地登山",
+ "hiking": "T1: ハイキング",
+ "mountain_hiking": "T2: 山岳ハイキング"
+ },
+ "placeholder": "山岳ハイキング, 高地登山…"
},
"seasonal": {
"label": "季節限定"
"service": {
"label": "種類"
},
+ "service/bicycle/chain_tool": {
+ "label": "チェーンツール",
+ "options": {
+ "no": "いいえ",
+ "undefined": "おそらくいいえ",
+ "yes": "はい"
+ }
+ },
+ "service/bicycle/pump": {
+ "label": "エアパルプ",
+ "options": {
+ "no": "無し",
+ "undefined": "たぶん無し",
+ "yes": "有り"
+ }
+ },
+ "service_rail": {
+ "label": "サービスの種類",
+ "options": {
+ "crossover": "クロスオーバー",
+ "siding": "側線",
+ "spur": "引き込み線",
+ "yard": "車両基地"
+ }
+ },
"shelter": {
"label": "避難所"
},
},
"smoking": {
"label": "喫煙の可否",
- "placeholder": "いいえ、分けた、はい...",
"options": {
- "no": "禁煙",
- "separated": "室内喫煙(未分煙)",
+ "dedicated": "喫煙者向け(例: スモーカーズクラブ)",
"isolated": "室内喫煙(分煙)",
+ "no": "禁煙",
"outside": "屋外のみ喫煙可",
- "yes": "喫煙可",
- "dedicated": "喫煙者向け(例: スモーカーズクラブ)"
- }
+ "separated": "室内喫煙(未分煙)",
+ "yes": "喫煙可"
+ },
+ "placeholder": "いいえ、分けた、はい..."
},
"smoothness": {
"label": "スムーズさ",
- "placeholder": "ローラースケートなど, 二輪車・四輪車, オフロード車…",
"options": {
+ "bad": "二輪車・四輪車:マウンテンバイク・自動車・リキシャ",
"excellent": "ローラースケート・スケートボード",
"good": "レース用自転車",
+ "horrible": "オフロード:重オフロード車",
+ "impassable": "通りぬけ不可 / 車輌・自転車不可",
"intermediate": "二輪車など:シティバイク・車いす・スクーター",
- "bad": "二輪車・四輪車:マウンテンバイク・自動車・リキシャ",
"very_bad": "最低地上高が高い:軽クロカン車",
- "horrible": "オフロード:重オフロード車",
"very_horrible": "特殊オフロード車:トラクター・ATV(全地形対応車)"
- }
+ },
+ "placeholder": "ローラースケートなど, 二輪車・四輪車, オフロード車…"
},
"social_facility_for": {
"label": "施設の対象者",
},
"structure": {
"label": "構造",
- "placeholder": "不明",
"options": {
"bridge": "橋",
- "tunnel": "トンネル",
- "embankment": "土手",
"cutting": "切り通し",
- "ford": "洗い越し"
- }
+ "embankment": "土手",
+ "ford": "洗い越し",
+ "tunnel": "トンネル"
+ },
+ "placeholder": "不明"
},
"studio_type": {
"label": "タイプ"
},
+ "substation": {
+ "label": "タイプ"
+ },
"supervised": {
"label": "管理"
},
"tactile_paving": {
"label": "点字ブロック"
},
+ "takeaway": {
+ "label": "持ち帰り",
+ "options": {
+ "no": "不可能",
+ "only": "持ち帰りのみ",
+ "yes": "可能"
+ },
+ "placeholder": "可、不可、持ち帰りのみ"
+ },
"toilets/disposal": {
"label": "汚物処理",
"options": {
- "flush": "水洗式",
- "pitlatrine": "汲み取り式",
+ "bucket": "バケツ汲み出し",
"chemical": "化学処理",
- "bucket": "バスケットゴール"
+ "flush": "水洗式",
+ "pitlatrine": "汲み取り式"
}
},
"tourism": {
},
"tracktype": {
"label": "トラック種別",
- "placeholder": "硬質, 大部分が硬質, 軟質…",
"options": {
"grade1": "硬質: 舗装もしくは煉瓦・砕石の締固め路盤",
"grade2": "大部分が硬質: 砂利・岩と柔らかい物質の混合",
"grade3": "硬軟の物質の混合",
"grade4": "大部分が軟質: 土/砂/草と硬い物質の混合",
"grade5": "軟質: 土/砂/草"
- }
+ },
+ "placeholder": "硬質, 大部分が硬質, 軟質…"
},
"trail_visibility": {
"label": "道の可視度",
- "placeholder": "優・良・悪…",
"options": {
+ "bad": "悪: 道はなかったりわからなかったりで,かつ目印なし",
"excellent": "優: すべて明確な道・目印あり",
"good": "良: 判別可能な目印あり(場合によっては目印の探索が必要)",
- "intermediate": "中間: 道の大部分は分かるが目印は少ない",
- "bad": "悪: 道はなかったりわからなかったりで,かつ目印なし",
"horrible": "劣悪: ほとんど道がなく定位技量が必要",
+ "intermediate": "中間: 道の大部分は分かるが目印は少ない",
"no": "不可: 道はなく,高度な定位技量が必要"
- }
+ },
+ "placeholder": "優・良・悪…"
},
"trees": {
"label": "木の数"
"name": "レンタサイクル",
"terms": "レンタサイクル"
},
+ "amenity/bicycle_repair_station": {
+ "name": "自転車修理ステーション",
+ "terms": "自転車修理ステーション"
+ },
"amenity/boat_rental": {
"name": "貸しボート",
"terms": "貸しボート"
"name": "(教会・寺院にある)墓所",
"terms": "墓地,霊園,墓場,お墓,墓苑"
},
+ "amenity/grit_bin": {
+ "name": "砂箱",
+ "terms": "砂箱, 氷結防止"
+ },
"amenity/hospital": {
"name": "病院の敷地",
"terms": "病院の敷地"
"name": "居酒屋",
"terms": "パブ,居酒屋"
},
+ "amenity/public_bookcase": {
+ "name": "公共の本棚",
+ "terms": "公共の本棚"
+ },
"amenity/ranger_station": {
"name": "レンジャーの詰所",
"terms": "レンジャーの詰所, レンジャーステーション"
"name": "リサイクルボックス",
"terms": "リサイクルボックス"
},
+ "amenity/register_office": {
+ "name": "登記所",
+ "terms": "登記所, 法人登記, 登録所"
+ },
"amenity/restaurant": {
"name": "レストラン",
"terms": "レストラン,食堂"
"name": "時計製造所",
"terms": "時計製造所"
},
+ "craft/confectionery": {
+ "name": "菓子屋",
+ "terms": "駄菓子屋,パシティエ"
+ },
"craft/dressmaker": {
"name": "衣服製造所",
"terms": "衣服製造所"
"terms": "生活道路, 路地"
},
"highway/mini_roundabout": {
- "name": "小さなロータリー",
- "terms": "小さなロータリー, ラウンドアバウト"
+ "name": "小さな環状交差点",
+ "terms": "小さな環状交差点"
},
"highway/motorway": {
"name": "自動車専用道路",
"name": "道祖神",
"terms": "道祖神"
},
+ "junction": {
+ "name": "交差点",
+ "terms": "交差点"
+ },
"landuse": {
"name": "土地利用",
"terms": "土地利用"
"name": "教会の敷地",
"terms": "教会, 教会の敷地"
},
+ "landuse/commercial": {
+ "name": "オフィス街",
+ "terms": "オフィス街"
+ },
"landuse/construction": {
"name": "建設用地",
"terms": "工事中用地, 建設用地"
},
+ "landuse/farm": {
+ "name": "農地",
+ "terms": "農地"
+ },
+ "landuse/farmland": {
+ "name": "農地",
+ "terms": "農地"
+ },
"landuse/farmyard": {
"name": "農業施設用地",
"terms": "農業施設用地"
"name": "人工林",
"terms": "人工林, 二次林, 営林, 保安林, 鉄道林"
},
+ "landuse/garages": {
+ "name": "車庫",
+ "terms": "ガレージ"
+ },
"landuse/grass": {
"name": "草地",
"terms": "草地, 芝生"
},
+ "landuse/industrial": {
+ "name": "工業用地",
+ "terms": "工業用地, 工業団地"
+ },
"landuse/landfill": {
"name": "最終処分場",
"terms": "最終処分場"
"name": "牧草地",
"terms": "牧草地"
},
+ "landuse/military": {
+ "name": "軍用地",
+ "terms": "軍用地"
+ },
"landuse/orchard": {
"name": "果樹園",
"terms": "果樹園, 果物畑, リンゴ畑, ミカン畑"
"name": "露天掘り鉱山",
"terms": "採石場, 石切り場, 露天掘り鉱山"
},
+ "landuse/residential": {
+ "name": "住宅地",
+ "terms": "住宅地, 住宅街"
+ },
+ "landuse/retail": {
+ "name": "商業地",
+ "terms": "商業地,ショッピング地区,ショッピング街"
+ },
"landuse/vineyard": {
"name": "ぶどう畑",
"terms": "ぶどう畑"
"name": "マリーナ",
"terms": "マリーナ, ヨットハーバー"
},
+ "leisure/nature_reserve": {
+ "name": "自然保護区"
+ },
"leisure/park": {
"name": "公園",
"terms": "公園"
"terms": "線, ライン"
},
"man_made": {
- "name": "人工物",
- "terms": "人工物"
+ "name": "建造物",
+ "terms": "人工物, 建造物"
},
"man_made/breakwater": {
"name": "防波堤",
"name": "砂浜",
"terms": "砂浜, ビーチ"
},
+ "natural/cave_entrance": {
+ "name": "洞穴入口"
+ },
"natural/cliff": {
"name": "崖",
"terms": "崖, 断崖"
"name": "リレーション",
"terms": "リレーション, 関連"
},
+ "roundabout": {
+ "name": "環状交差点",
+ "terms": "環状交差点,ラウンドアバウト"
+ },
"route/ferry": {
"name": "フェリールート",
"terms": "フェリールート, 航路"
"name": "コンピューター店",
"terms": "コンピューター店, パソコン店"
},
+ "shop/confectionery": {
+ "name": "菓子屋"
+ },
"shop/convenience": {
"name": "コンビニエンスストア",
"terms": "コンビニエンスストア, コンビニ"
},
+ "shop/copyshop": {
+ "name": "コピー店"
+ },
+ "shop/cosmetics": {
+ "name": "化粧品店"
+ },
+ "shop/curtain": {
+ "name": "カーテン店"
+ },
"shop/deli": {
"name": "惣菜屋",
"terms": "惣菜屋, 弁当屋"
"name": "日曜大工用品店",
"terms": "日曜大工用品店, 工具店, DIYショップ, ホームセンター"
},
+ "shop/dry_cleaning": {
+ "name": "クリーニング店"
+ },
"shop/electronics": {
"name": "家電販売店",
"terms": "家電販売店"
},
+ "shop/fabric": {
+ "name": "ファブリック店"
+ },
"shop/farm": {
"name": "農産物直売所",
"terms": "農産物直売所"
"name": "CD/レコード店",
"terms": "CD店, レコード店"
},
+ "shop/musical_instrument": {
+ "name": "楽器店"
+ },
"shop/optician": {
"name": "メガネ",
"terms": "メガネ,眼鏡,メガネ屋,眼鏡屋"
},
+ "shop/pawnbroker": {
+ "name": "質店"
+ },
"shop/pet": {
"name": "ペットショップ",
"terms": "ペット売り場,ペット,家禽,ペットショップ"
"name": "写真屋",
"terms": "写真屋"
},
+ "shop/pyrotechnics": {
+ "name": "花火店"
+ },
"shop/seafood": {
"name": "魚屋",
"terms": "海鮮食品店,魚屋,魚市場"
},
+ "shop/second_hand": {
+ "name": "リサイクルショップ"
+ },
"shop/shoes": {
"name": "靴店",
"terms": "靴店"
"name": "仕立て屋",
"terms": "仕立て屋,テイラー,洋裁店"
},
+ "shop/tattoo": {
+ "name": "タトゥースタジオ"
+ },
+ "shop/tea": {
+ "name": "茶店",
+ "terms": "茶舗"
+ },
+ "shop/tobacco": {
+ "name": "煙草屋"
+ },
"shop/toys": {
"name": "玩具店",
"terms": "玩具店, おもちゃ屋"
"name": "動物園",
"terms": "動物園"
},
+ "traffic_calming/bump": {
+ "name": "減速帯"
+ },
+ "traffic_calming/hump": {
+ "name": "ハンプ"
+ },
+ "traffic_calming/rumble_strip": {
+ "name": "ランブルストリップ"
+ },
+ "traffic_calming/table": {
+ "name": "横断歩道橋"
+ },
"type/boundary": {
"name": "境界",
"terms": "境界, 境界線"
+++ /dev/null
-{}
\ No newline at end of file
+++ /dev/null
-{}
\ No newline at end of file
"commit": {
"title": "ಬದಲಾವಣೆಯನ್ನು ಉಳಿಸು",
"description_placeholder": "ನಿಮ್ಮ ಕೊಡುಗೆಗಳ ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆ",
- "message_label": "ಕಮಿಟ್ ಸಂದೇಶ",
"save": "ಉಳಿಸು",
"cancel": "ರದ್ದು ಮಾಡು",
"changes": "{count} ಬದಲಾವಣೆಗಳು",
"deleted": "ಅಳಿಸಲಾಯಿತು",
"created": "ರಚಿಸಲಾಯಿತು"
},
+ "contributors": {
+ "list": "ಸಂಪಾದನೆಗಳು {ಬಳಕೆದಾರ ಮೂಲಕ}"
+ },
"geocoder": {
- "search": "ಪ್ರಪಂಚದಾದ್ಯಂತ ಹುಡುಕು......"
+ "search": "ಪ್ರಪಂಚದಾದ್ಯಂತ ಹುಡುಕು......",
+ "no_results_worldwide": "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬರಲಿಲ್ಲ"
+ },
+ "geolocate": {
+ "title": "ನನ್ನ ಸ್ಥಳವನ್ನು ತೋರಿಸಿ"
},
"inspector": {
+ "role": "ಪಾತ್ರ",
"back_tooltip": "ಲಕ್ಷಣವನ್ನು ಬದಲಿಸು",
"remove": "ತೆಗೆದುಹಾಕು",
"search": "ಹುಡುಕು",
- "multiselect": "ಆಯ್ಕೆಮಾಡಿದ ವಸ್ತುಗಳು"
+ "multiselect": "ಆಯ್ಕೆಮಾಡಿದ ವಸ್ತುಗಳು",
+ "unknown": "ತಿಳಿಯದ",
+ "incomplete": "<not downloaded>",
+ "check": {
+ "yes": "ಹೌದು",
+ "no": "ಇಲ್ಲ"
+ },
+ "none": "ಯಾವುದೂ ಇಲ್ಲದ",
+ "node": "ಯಾವುದೂ ಇಲ್ಲದ",
+ "way": "ದಾರಿ",
+ "location": "ಸ್ಥಳ"
+ },
+ "background": {
+ "title": "ಹಿನ್ನೆಲೆ",
+ "none": "ಯಾವುದೂ ಇಲ್ಲದ"
+ },
+ "feature": {
+ "points": {
+ "description": "ಬಿಂದುಗಳು"
+ },
+ "major_roads": {
+ "description": "ಪ್ರಮುಖ ರಸ್ತೆಗಳು",
+ "tooltip": "ಹೆದ್ದಾರಿಗಳು, ಬೀದಿಗಳು ಇತ್ಯಾದಿಗಳು"
+ },
+ "minor_roads": {
+ "description": "ಸಣ್ಣ ರಸ್ತೆಗಳು",
+ "tooltip": "ಸೇವೆ ರಸ್ತೆಗಳು, ನಿಲುಗಡೆ ನಡುದಾರಿಗಳು, ಟ್ರ್ಯಾಕ್ಸ್, ಇತ್ಯಾದಿ"
+ },
+ "paths": {
+ "description": "ಪಥ",
+ "tooltip": "ಪಾದಚಾರಿ ಮಾರ್ಗಗಳು, ಕಾಲುದಾರಿಗಳು, ಸೈಕಲ್ ಮಾರ್ಗಗಳು, ಇತ್ಯಾದಿ"
+ },
+ "buildings": {
+ "description": "ಕಟ್ಟಡಗಳು",
+ "tooltip": "ಕಟ್ಟಡಗಳು, ತಂಗುದಾಣಗಳು, ಗ್ಯಾರೇಜುಗಳು, ಇತ್ಯಾದಿ"
+ },
+ "landuse": {
+ "tooltip": "ಕಾಡುಗಳು, ಕೃಷಿಭೂಮಿ, ಉದ್ಯಾನಗಳು, ಗೃಹ, ವಾಣಿಜ್ಯ, ಇತ್ಯಾದಿ"
+ },
+ "boundaries": {
+ "description": "ಗಡಿಗಳು",
+ "tooltip": "ಆಡಳಿತಾತ್ಮಕ ಗಡಿರೇಖೆಗಳು"
+ },
+ "water": {
+ "description": "ನೀರಿನ ಲಕ್ಷಣಗಳು",
+ "tooltip": "ನದಿಗಳು, ಸರೋವರಗಳು, ಕೊಳಗಳು, ಹೊಂಡಗಳು, ಇತ್ಯಾದಿ"
+ },
+ "rail": {
+ "description": "ರೈಲಿನ ಲಕ್ಷಣಗಳು",
+ "tooltip": "ರೈಲ್ವೆ"
+ },
+ "power": {
+ "description": "ವಿದ್ಯುತ್ ಲಕ್ಷಣಗಳು",
+ "tooltip": "ವಿದ್ಯುತ್ ಸಂಪರ್ಕಗಳು, ವಿದ್ಯುತ್ ಉತ್ಪಾದನಾ ಘಟಕಗಳು, ಉಪಕೇಂದ್ರಗಳು ಇತ್ಯಾದಿ"
+ },
+ "past_future": {
+ "tooltip": "ಪ್ರಸ್ತಾವಿಸಿದ, ನಿರ್ಮಾಣ ಹಂತದ, ಕೈಬಿಟ್ಟ, ಕೆಡವಲಾದ ಇತ್ಯಾದಿ"
+ },
+ "others": {
+ "description": "ಇತರೆ",
+ "tooltip": "ಇನ್ನಿತರೆ"
+ }
+ },
+ "area_fill": {
+ "partial": {
+ "description": ""
+ }
+ },
+ "restore": {
+ "restore": "ಪುನಃಸ್ಥಾಪನೆ",
+ "reset": "ಮರುಹೊಂದಿಸು"
+ },
+ "save": {
+ "title": "ಉಳಿಸು",
+ "conflict": {
+ "previous": "<ಹಿಂದಿನ",
+ "next": "ಮುಂದಿನ>",
+ "restore": "ಪುನಃಸ್ಥಾಪನೆ"
+ }
+ },
+ "success": {
+ "just_edited": "ನೀವು ಈಗ ಓಪನ್ ಸ್ಟ್ರೀಟ್ ಮ್ಯಾಪ್ ಸಂಪಾದಿಸಿದಿರಿ.",
+ "facebook": "ಫೇಸ್ ಬುಕ್ ನಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಿರಿ",
+ "twitter": "ಟ್ವಿಟರ ನಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಿರಿ",
+ "google": "ಗೂಗಲ್+ ನಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಿರಿ"
+ },
+ "confirm": {
+ "okay": "ಸರಿ",
+ "cancel": "ರದ್ದು ಮಾಡು"
+ },
+ "splash": {
+ "start": "ಸಂಪಾದಿಸಿ"
+ },
+ "tag_reference": {
+ "description": "ವಿವರಣೆ"
+ },
+ "zoom": {
+ "in": "ಹಿಗ್ಗಿಸು",
+ "out": "ಕುಗ್ಗಿಸು"
},
"help": {
"title": "ಸಹಾಯ"
},
+ "intro": {
+ "navigation": {
+ "title": "ಸಂಚರಣೆ"
+ },
+ "areas": {
+ "title": "ಪ್ರದೇಶ"
+ },
+ "lines": {
+ "title": "ರೇಖೆಗಳು"
+ },
+ "startediting": {
+ "title": "ಸಂಪಾದನೆ ಪ್ರಾರಂಭಿಸು",
+ "start": "ನಕ್ಷೆ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ!"
+ }
+ },
"presets": {
"categories": {
"category-building": {
"fields": {
"access": {
"label": "ಪ್ರವೇಶ",
- "placeholder": "ತಿಳಿಯದ",
- "types": {
- "access": "ಸಾಧಾರಣ",
- "foot": "ಕಾಲು",
- "motor_vehicle": "ಮೋಟಾರ್ ವಾಹನ",
- "bicycle": "ಸೈಕಲ್",
- "horse": "ಕುದುರೆ"
- },
"options": {
- "yes": {
- "title": "ಅನುಮತಿಸು"
+ "designated": {
+ "title": "ನಿಯೋಜಿತ"
+ },
+ "destination": {
+ "title": "ತಲಪುದಾಣ"
},
"no": {
- "title": "ನಿಷೇಧಿಸಲಾಗಿದೆ",
- "description": "ಸಾರ್ವಜನಿಕ ಪ್ರವೇಶಕ್ಕೆ ಅನುಮತಿ ಇಲ್ಲ"
+ "description": "ಸಾರ್ವಜನಿಕ ಪ್ರವೇಶಕ್ಕೆ ಅನುಮತಿ ಇಲ್ಲ",
+ "title": "ನಿಷೇಧಿಸಲಾಗಿದೆ"
},
"permissive": {
"title": "ಅನುಮತಿದಾಯಕ"
"private": {
"title": "ಖಾಸಗಿ"
},
- "designated": {
- "title": "ನಿಯೋಜಿತ"
- },
- "destination": {
- "title": "ತಲಪುದಾಣ"
+ "yes": {
+ "title": "ಅನುಮತಿಸು"
}
+ },
+ "placeholder": "ತಿಳಿಯದ",
+ "types": {
+ "access": "ಸಾಧಾರಣ",
+ "bicycle": "ಸೈಕಲ್",
+ "foot": "ಕಾಲು",
+ "horse": "ಕುದುರೆ",
+ "motor_vehicle": "ಮೋಟಾರ್ ವಾಹನ"
}
},
"access_simple": {
"address": {
"label": "ವಿಳಾಸ",
"placeholders": {
+ "city": "ನಗರ",
+ "country": "ದೇಶ",
+ "district": "ಜಿಲ್ಲೆ",
+ "hamlet": "ಕೊಪ್ಪಲು",
"housename": "ಮನೆ ಹೆಸರು",
"housenumber": "123",
- "street": "ಬೀದಿ",
- "city": "ನಗರ",
- "postcode": "ಅಂಚೆ ಸಂಖ್ಯೆ",
"place": "ಸ್ಥಳ",
- "hamlet": "ಕೊಪ್ಪಲು",
- "suburb": "ಉಪನಗರ",
- "subdistrict": "ಉಪಜಿಲ್ಲೆ",
- "district": "ಜಿಲ್ಲೆ",
+ "postcode": "ಅಂಚೆ ಸಂಖ್ಯೆ",
"province": "ಪ್ರಾಂತ್ಯ",
"state": "ರಾಜ್ಯ",
- "country": "ದೇಶ"
+ "street": "ಬೀದಿ",
+ "subdistrict": "ಉಪಜಿಲ್ಲೆ",
+ "suburb": "ಉಪನಗರ"
}
},
"admin_level": {
"aerialway/access": {
"label": "ಪ್ರವೇಶ",
"options": {
+ "both": "ಎರಡೂ",
"entry": "ಒಳಗೆ",
- "exit": "ಹೊರಗೆ",
- "both": "ಎರಡೂ"
+ "exit": "ಹೊರಗೆ"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "ಪ್ರವೇಶ(ಬೇಸಿಗೆ)",
"options": {
+ "both": "ಎರಡೂ",
"entry": "ಒಳಗೆ",
- "exit": "ಹೊರಗೆ",
- "both": "ಎರಡೂ"
+ "exit": "ಹೊರಗೆ"
}
},
"aeroway": {
"boundary": {
"label": "ವಿಧ"
},
+ "brand": {
+ "label": "ಬ್ರ್ಯಾಂಡ್"
+ },
"building": {
"label": "ಕಟ್ಟಡ"
},
"cardinal_direction": {
"label": "ದಿಕ್ಕು",
"options": {
- "N": "ಉತ್ತರ",
"E": "ಪೂರ್ವ",
- "S": "ದಕ್ಷಿಣ",
- "W": "ಪಶ್ಚಿಮ",
- "NE": "ಈಶಾನ್ಯ",
- "SE": "ಆಗ್ನೇಯ",
- "SW": "ನೈಋತ್ಯ",
- "NW": "ವಾಯವ್ಯ",
- "NNE": "ಉತ್ತರ - ಈಶಾನ್ಯ",
"ENE": "ಪೂರ್ವ - ಈಶಾನ್ಯ",
"ESE": "ಪೂರ್ವ - ಆಗ್ನೇಯ",
+ "N": "ಉತ್ತರ",
+ "NE": "ಈಶಾನ್ಯ",
+ "NNE": "ಉತ್ತರ - ಈಶಾನ್ಯ",
+ "NNW": "ಉತ್ತರ - ವಾಯುವ್ಯ",
+ "NW": "ವಾಯವ್ಯ",
+ "S": "ದಕ್ಷಿಣ",
+ "SE": "ಆಗ್ನೇಯ",
"SSE": "ದಕ್ಷಿಣ - ಆಗ್ನೇಯ",
"SSW": "ದಕ್ಷಿಣ - ನೈಋತ್ಯ",
- "WSW": "ಪಶ್ಚಿಮ - ನೈಋತ್ಯ",
+ "SW": "ನೈಋತ್ಯ",
+ "W": "ಪಶ್ಚಿಮ",
"WNW": "ಪಶ್ಚಿಮ - ವಾಯುವ್ಯ",
- "NNW": "ಉತ್ತರ - ವಾಯುವ್ಯ"
+ "WSW": "ಪಶ್ಚಿಮ - ನೈಋತ್ಯ"
}
},
"clock_direction": {
"label": "ದಿಕ್ಕು",
"options": {
- "clockwise": "ಪ್ರದಕ್ಷಿಣವಾಗಿ",
- "anticlockwise": "ಅಪ್ರದಕ್ಷಿಣವಾಗಿ"
+ "anticlockwise": "ಅಪ್ರದಕ್ಷಿಣವಾಗಿ",
+ "clockwise": "ಪ್ರದಕ್ಷಿಣವಾಗಿ"
}
},
"construction": {
"craft": {
"label": "ವಿಧ"
},
+ "crop": {
+ "label": "ಬೆಳೆ"
+ },
"crossing": {
"label": "ವಿಧ"
},
"denomination": {
"label": "ವರ್ಗನಾಮ"
},
+ "denotation": {
+ "label": "ಉಪಲಕ್ಷಣ"
+ },
"description": {
"label": "ವಿವರಣೆ"
},
"electrified": {
"label": "ವಿದ್ಯುದೀಕರಣ",
- "placeholder": "ಸಂಪರ್ಕ ರೇಖೆ, ವಿದ್ಯುದೀಕರಿಸಿದ ರೈಲು ",
"options": {
"contact_line": "ಸಂಪರ್ಕ ರೇಖೆ",
+ "no": "ಇಲ್ಲ",
"rail": "ವಿದ್ಯುದೀಕರಿಸಿದ ರೈಲು",
- "yes": "ಹೌದು (ಅನಿರ್ದಿಷ್ಟ)",
- "no": "ಇಲ್ಲ"
- }
+ "yes": "ಹೌದು (ಅನಿರ್ದಿಷ್ಟ)"
+ },
+ "placeholder": "ಸಂಪರ್ಕ ರೇಖೆ, ವಿದ್ಯುದೀಕರಿಸಿದ ರೈಲು "
},
"elevation": {
"label": "ಎತ್ತರ"
"fire_hydrant/type": {
"label": "ವಿಧ",
"options": {
- "wall": "ಗೋಡೆ",
- "pond": "ಕೊಳ"
+ "pond": "ಕೊಳ",
+ "underground": "ನೆಲದಡಿಯಲ್ಲಿ",
+ "wall": "ಗೋಡೆ"
}
},
"fixme": {
"fuel": {
"label": "ಇಂಧನ"
},
+ "fuel/biodiesel": {
+ "label": "ಜೈವಿಕ ಡೀಸಲ್ ಮಾರುತ್ತಾರೆ "
+ },
+ "fuel/diesel": {
+ "label": "ಡೀಸಲ್ ಮಾರುತ್ತಾರೆ "
+ },
+ "fuel/e10": {
+ "label": "E10 ಮಾರುತ್ತಾರೆ "
+ },
+ "fuel/e85": {
+ "label": "E85 ಮಾರುತ್ತಾರೆ "
+ },
+ "fuel/lpg": {
+ "label": "ಪ್ರೋಪೇನ್ ಮಾರುತ್ತಾರೆ "
+ },
"gauge": {
"label": "ಗೇಜ್"
},
+ "gender": {
+ "label": "ಲಿಂಗ",
+ "options": {
+ "female": "ಹೆಣ್ಣು",
+ "male": "ಗಂಡು",
+ "unisex": "ಒಂದೇಲಿಂಗ"
+ },
+ "placeholder": "ಅಪರಿಚಿತ"
+ },
"generator/method": {
"label": "ವಿಧಾನ"
},
"label": "ವಿಧ"
},
"golf_hole": {
- "label": "ಉಲ್ಲೇಖ"
+ "label": "ಉಲ್ಲೇಖ",
+ "placeholder": "ರಂಧ್ರಗಳ ಸಂಖ್ಯೆ (1-18)"
},
"handicap": {
"label": "ಅಂಗವಿಕಲ",
"incline": {
"label": "ಬಾಗಿಸು"
},
+ "incline_steps": {
+ "label": "ವಾಲಿಕೆ",
+ "options": {
+ "down": "ಕೆಳಗೆ",
+ "up": "ಮೇಲೆ"
+ }
+ },
"information": {
"label": "ವಿಧ"
},
"internet_access": {
"label": "ಅಂತರ್ಜಾಲ ಸಂಪರ್ಕ",
"options": {
- "yes": "ಹೌದು",
"no": "ಇಲ್ಲ",
+ "wired": "ತಂತಿಯುಕ್ತ",
"wlan": "ವೈಫೈ",
- "wired": "ತಂತಿಯುಕ್ತ"
+ "yes": "ಹೌದು"
}
},
"lamp_type": {
"layer": {
"label": "ಪದರ"
},
+ "leaf_cycle": {
+ "options": {
+ "mixed": "ಮಿಶ್ರಿತ",
+ "semi_deciduous": "ಅರೆ-ಪತನಶೀಲ",
+ "semi_evergreen": "ಅರೆ ಹರಿದ್ವರ್ಣ"
+ }
+ },
+ "leaf_type": {
+ "label": "ಎಲೆಯ ವಿಧ",
+ "options": {
+ "broadleaved": "ಅಗಲವಾದ ಎಲೆ",
+ "leafless": "ಎಲೆಯಿಲ್ಲದ",
+ "mixed": "ಮಿಶ್ರಿತ",
+ "needleleaved": "ಚುಪಾದ ಎಲೆ"
+ }
+ },
"leisure": {
"label": "ವಿಧ"
},
"placeholder": "40, 50, 60..."
},
"mtb/scale": {
+ "options": {
+ "4": ""
+ },
"placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
- "placeholder": "ಸುಲಭ, ಸಾಧಾರಣ, ಕಷ್ಟ ... ",
"options": {
"0": "ಅತಿ ಸುಲಭ (ಬಿಳಿಯ ವರ್ತುಲ)",
"1": "ಸುಲ್ಕಭ(ಹಸಿರು ವರ್ತುಲ)",
"2": "ಸಾಧಾರಣ (ನೀಲಿ ವರ್ತುಲ)",
"3": "ಕಷ್ಟ (ಕರಿಯ ವರ್ತುಲ)",
"4": "ಅತೀ ಕಷ್ಟ (ಎರಡು ಕಪ್ಪು ವಜ್ರಾಕಾರ)"
- }
+ },
+ "placeholder": "ಸುಲಭ, ಸಾಧಾರಣ, ಕಷ್ಟ ... "
},
"mtb/scale/uphill": {
"placeholder": "0, 1, 2, 3..."
"oneway": {
"label": "ಒಮ್ಮುಖ ಸಂಚಾರ",
"options": {
+ "no": "ಇಲ್ಲ",
"undefined": "ಇಲ್ಲವೆಂದು ಭಾವಿಸಲಾಗಿದೆ",
- "yes": "ಹೌದು",
- "no": "ಇಲ್ಲ"
+ "yes": "ಹೌದು"
}
},
"oneway_yes": {
"label": "ಒಮ್ಮುಖ ಸಂಚಾರ",
"options": {
+ "no": "ಇಲ್ಲ",
"undefined": "ಇದೆ ಎಂದು ಭಾವಿದಲಾಗಿದೆ",
- "yes": "ಹೌದು",
- "no": "ಇಲ್ಲ"
+ "yes": "ಹೌದು"
}
},
"opening_hours": {
"parking": {
"label": "ವಿಧ",
"options": {
- "surface": "ಮೇಲ್ಮೈ",
"multi-storey": "ಬಹುಮಟ್ಟದ",
- "sheds": "ತಂಗುದಾಣ"
+ "sheds": "ತಂಗುದಾಣ",
+ "surface": "ಮೇಲ್ಮೈ"
}
},
"phone": {
},
"piste/difficulty": {
"label": "ಕಷ್ಟ",
- "placeholder": "ಸುಲಭ, ಮಧ್ಯಂತರ, ಮುಂದುವರೆದ .....",
"options": {
- "novice": "ಅನನುಭವಿ (ಸೂಚನಾ)",
+ "advanced": "ಮುಂದುವರೆದ (ಕಪ್ಪು ವಜ್ರ)",
"easy": "ಸುಲಭ (ಹಸಿರು ವರ್ತುಲ)",
"intermediate": "ಮಧ್ಯಂತರ (ನೀಲಿ ವರ್ತುಲ)",
- "advanced": "ಮುಂದುವರೆದ (ಕಪ್ಪು ವಜ್ರ)"
- }
+ "novice": "ಅನನುಭವಿ (ಸೂಚನಾ)"
+ },
+ "placeholder": "ಸುಲಭ, ಮಧ್ಯಂತರ, ಮುಂದುವರೆದ ....."
},
"piste/grooming": {
"options": {
- "classic": "ಶ್ರೇಷ್ಠ"
+ "classic": "ಶ್ರೇಷ್ಠ",
+ "mogul": "ಮೊಗುಲ್",
+ "skating": "ಸ್ಕೇಟಿಂಗ್"
}
},
"piste/type": {
"label": "ವಿಧ",
"options": {
- "snow_park": "ಮಂಜಿನ ಉದ್ಯಾನವನ",
- "playground": "ಆಟದ ಮೈದಾನ"
+ "playground": "ಆಟದ ಮೈದಾನ",
+ "sled": "ಸ್ಲೆಡ್",
+ "snow_park": "ಮಂಜಿನ ಉದ್ಯಾನವನ"
}
},
"place": {
"service": {
"label": "ವಿಧ"
},
+ "service/bicycle/chain_tool": {
+ "options": {
+ "no": "ಇಲ್ಲ",
+ "yes": "ಹೌದು"
+ }
+ },
+ "service/bicycle/pump": {
+ "options": {
+ "no": "ಇಲ್ಲ",
+ "yes": "ಹೌದು"
+ }
+ },
"shelter": {
"label": "ಆಶ್ರಯ"
},
"structure": {
"options": {
"bridge": "ಸೇತುವೆ",
- "tunnel": "ಸುರಂಗ",
- "embankment": "ಏರಿ"
- }
+ "embankment": "ಏರಿ",
+ "tunnel": "ಸುರಂಗ"
+ },
+ "placeholder": "ತಿಳಿಯದ"
},
"studio_type": {
"label": "ವಿಧ"
},
"takeaway": {
"options": {
- "yes": "ಹೌದು",
- "no": "ಇಲ್ಲ"
+ "no": "ಇಲ್ಲ",
+ "yes": "ಹೌದು"
}
+ },
+ "tourism": {
+ "label": "ವಿಧ"
+ },
+ "trail_visibility": {
+ "placeholder": "ಅತ್ಯುತ್ತಮ, ಉತ್ತಮ, ಕಳಪೆ"
+ },
+ "trees": {
+ "label": "ಮರಗಳು"
+ },
+ "tunnel": {
+ "label": "ಸುರಂಗ"
+ },
+ "water": {
+ "label": "ವಿಧ"
+ },
+ "waterway": {
+ "label": "ವಿಧ"
+ },
+ "website": {
+ "label": "ಜಾಲತಾಣ",
+ "placeholder": "http://example.com/"
+ },
+ "wetland": {
+ "label": "ವಿಧ"
+ },
+ "wikipedia": {
+ "label": "ವಿಕಿಪೀಡಿಯಾ"
}
},
"presets": {
+ "address": {
+ "name": "ವಿಳಾಸ"
+ },
+ "aeroway/aerodrome": {
+ "name": "ವಿಮಾನ ನಿಲ್ದಾಣ"
+ },
+ "aeroway/gate": {
+ "name": "ವಿಮಾನ ನಿಲ್ದಾಣ ಗೇಟ್",
+ "terms": "<translate with synonyms or related terms for 'Airport gate', separated by commas>"
+ },
+ "aeroway/hangar": {
+ "terms": "<translate with synonyms or related terms for 'Hangar', separated by commas>"
+ },
+ "aeroway/helipad": {
+ "terms": "<translate with synonyms or related terms for 'Helipad', separated by commas>"
+ },
+ "aeroway/runway": {
+ "name": "ಓಡುದಾರಿ",
+ "terms": "<translate with synonyms or related terms for 'Runway', separated by commas>"
+ },
+ "aeroway/taxiway": {
+ "terms": "<translate with synonyms or related terms for 'Taxiway', separated by commas>"
+ },
+ "aeroway/terminal": {
+ "terms": "<translate with synonyms or related terms for 'Airport terminal', separated by commas>"
+ },
+ "amenity": {
+ "name": "ಸೌಕರ್ಯ",
+ "terms": "<translate with synonyms or related terms for 'Amenity', separated by commas>"
+ },
+ "amenity/arts_centre": {
+ "terms": "<translate with synonyms or related terms for 'Arts Center', separated by commas>"
+ },
+ "amenity/atm": {
+ "name": "ATM"
+ },
"amenity/bank": {
"name": "ಬ್ಯಾಂಕ್"
},
+ "amenity/bar": {
+ "terms": "<translate with synonyms or related terms for 'Bar', separated by commas>"
+ },
+ "amenity/bbq": {
+ "terms": "<translate with synonyms or related terms for 'Barbecue/Grill', separated by commas>"
+ },
+ "amenity/bench": {
+ "terms": "<translate with synonyms or related terms for 'Bench', separated by commas>"
+ },
+ "amenity/bicycle_parking": {
+ "terms": "<translate with synonyms or related terms for 'Bicycle Parking', separated by commas>"
+ },
"amenity/cinema": {
"name": "ಸಿನಿಮಾ"
},
"address": {
"label": "주소",
"placeholders": {
- "street": "길",
- "city": "도시"
+ "city": "도시",
+ "street": "길"
}
},
"aeroway": {
"internet_access": {
"label": "인터넷 이용 가능 여부",
"options": {
- "wlan": "Wifi",
- "terminal": "터미널"
+ "terminal": "터미널",
+ "wlan": "Wifi"
}
},
"landuse": {
{
"modes": {
"add_area": {
- "title": "지역",
- "description": "지도에 공원, 건물, 호수나 다른 지역을 추가합니다.",
+ "title": "공간",
+ "description": "지도에 공원, 건물, 호수나 다른 공간을 추가합니다.",
"tail": "공원, 호수나 건물과 같은, 지역 그리기를 시작하려면 지도를 클릭하세요."
},
"add_line": {
"tail": "도로, 경로나 노선 그리기를 시작하려면 지도를 클릭하세요."
},
"add_point": {
- "title": "ì§\80ì \90",
+ "title": "점",
"description": "지도에 음식점, 산, 우편 상자나 다른 지점을 추가합니다.",
"tail": "지점을 추가하려면 지도를 클릭하세요."
},
"multiple": "개체 {n}개를 삭제했습니다."
},
"incomplete_relation": "이 지물은 완전히 다운로드되어 있지 않기 때문에 삭제할 수 없습니다.",
+ "part_of_relation": "이 지물은 보다 큰 관계의 부분이기 때문에 삭제할 수 없습니다. 먼저 관계에서 그것을 제거해야 합니다.",
"connected_to_hidden": "이것은 숨겨진 지물에 연결되어 있기 때문에 삭제할 수 없습니다."
},
"add_member": {
"key": "D",
"annotation": "선/지역을 연결 해제했습니다.",
"not_connected": "여기에 연결 해제할 충분한 선/지역이 없습니다.",
- "connected_to_hidden": "이것은 숨겨진 기능에 연결되어 있기 때문에 연결을 해제할 수 없습니다."
+ "connected_to_hidden": "이것은 숨겨진 지물에 연결되어 있기 때문에 연결을 해제할 수 없습니다."
},
"merge": {
"title": "병합",
"description": "이 선을 병합합니다.",
"key": "C",
"annotation": "선 {n}개를 병합했습니다.",
- "not_eligible": "이 기능은 병합할 수 없습니다.",
+ "not_eligible": "이 지물은 병합할 수 없습니다.",
"not_adjacent": "이 선은 연결되어 있지 않기 때문에 병합할 수 없습니다.",
"restriction": "이 선은 적어도 하나가 \"{relation}\" 관계의 구성원이기 때문에 병합할 수 없습니다.",
- "incomplete_relation": "이 기능은 완전히 다운로드되어 있지 않기 때문에 병합할 수 없습니다."
+ "incomplete_relation": "이 지물은 완전히 다운로드되어 있지 않기 때문에 병합할 수 없습니다."
},
"move": {
"title": "이동",
"area": "지역을 이동했습니다.",
"multiple": "여러 개체를 이동했습니다."
},
- "incomplete_relation": "이 기능은 완전히 다운로드되어 있지 않기 때문에 이동할 수 없습니다.",
+ "incomplete_relation": "이 지물은 완전히 다운로드되어 있지 않기 때문에 이동할 수 없습니다.",
"too_large": "지역이 현재 충분히 보이지 않기 때문에 이동할 수 없습니다.",
- "connected_to_hidden": "이것은 숨겨진 기능에 연결되어 있기 때문에 이동할 수 없습니다."
+ "connected_to_hidden": "이것은 숨겨진 지물에 연결되어 있기 때문에 이동할 수 없습니다."
},
"rotate": {
"title": "회전",
"area": "지역을 회전했습니다."
},
"too_large": "지역이 현재 충분히 보이지 않기 때문에 회전할 수 없습니다.",
- "connected_to_hidden": "이것은 숨겨진 기능에 연결되어 있기 때문에 회전할 수 없습니다."
+ "connected_to_hidden": "이것은 숨겨진 지물에 연결되어 있기 때문에 회전할 수 없습니다."
},
"reverse": {
"title": "반대로",
},
"not_eligible": "선은 시작이나 끝에서 분할할 수 없습니다.",
"multiple_ways": "분할하는 데 너무 많은 선이 있습니다.",
- "connected_to_hidden": "이것은 숨겨진 기능에 연결되어 있기 때문에 분할할 수 없습니다."
+ "connected_to_hidden": "이것은 숨겨진 지물에 연결되어 있기 때문에 분할할 수 없습니다."
},
"restriction": {
"help": {
"loading_auth": "OpenStreetMap에 연결 중...",
"report_a_bug": "버그 보고",
"feature_info": {
- "hidden_warning": "숨겨진 기능 {count}개",
- "hidden_details": "이 기능은 현재 숨겨져 있습니다: {details}"
+ "hidden_warning": "숨겨진 지물 {count}개",
+ "hidden_details": "이 지물은 현재 숨겨져 있습니다: {details}"
},
"status": {
"error": "API에 연결할 수 없습니다.",
"commit": {
"title": "바뀜 저장",
"description_placeholder": "기여에 대한 간단한 설명",
- "message_label": "커밋 메시지",
"upload_explanation": "올린 바뀜은 OpenStreetMap 데이터를 사용하는 모든 지도에 보여집니다.",
"upload_explanation_with_user": "{user} 사용자로 올린 바뀜은 OpenStreetMap 데이터를 사용하는 모든 지도에 보여집니다.",
"save": "저장",
"all_relations": "모든 관계",
"new_relation": "새 관계...",
"role": "역할",
- "choose": "기능 유형 선택",
+ "choose": "지물 유형 선택",
"results": "{search}에 대한 결과 {n}개",
"reference": "OpenStreetMap 위키에서 보기",
- "back_tooltip": "기능 바꾸기",
+ "back_tooltip": "지물 바꾸기",
"remove": "제거",
"search": "검색",
"multiselect": "선택된 항목",
"unknown": "알 수 없음",
"incomplete": "<다운로드되지 않음>",
- "feature_list": "기능 검색",
- "edit": "기능 편집",
+ "feature_list": "지물 검색",
+ "edit": "지물 편집",
"check": {
"yes": "예",
"no": "아니오"
"description": "지도 데이터",
"data_layers": "데이터 레이어",
"fill_area": "지역 채우기",
- "map_features": "지도 기능",
- "autohidden": "이 기능은 화면에 너무 많이 보여질 수 있기 때문에 자동으로 숨겨집니다. 편집하려면 확대할 수 있습니다."
+ "map_features": "지도 지물",
+ "autohidden": "이 지물은 화면에 너무 많이 보여질 수 있기 때문에 자동으로 숨겨집니다. 편집하려면 확대할 수 있습니다."
},
"feature": {
"points": {
"tooltip": "건물, 대피소, 차고 등"
},
"landuse": {
- "description": "토지 이용 기능",
+ "description": "토지 이용 지물",
"tooltip": "숲, 농토, 공원, 주거, 상업 등"
},
"boundaries": {
"tooltip": "행정 경계"
},
"water": {
- "description": "물 기능",
+ "description": "물 지물",
"tooltip": "강, 호수, 연못, 웅덩이 등"
},
"rail": {
- "description": "철로 기능",
+ "description": "철로 지물",
"tooltip": "철도"
},
"power": {
- "description": "전력 기능",
+ "description": "전력 지물",
"tooltip": "송전선, 발전소, 변전소 등"
},
"past_future": {
"description": "과거/미래",
- "tooltip": "제안, 건설, 폐지, 철거 등"
+ "tooltip": "제안, 건설, 버림, 철거 등"
},
"others": {
"description": "기타",
"title": "저장",
"help": "OpenStreetMap에 바뀜을 저장하며, 다른 사용자에게 보이도록 합니다.",
"no_changes": "저장할 바뀜이 없습니다.",
- "error": "저장하는 동안 오류가 발생했습니다",
"unknown_error_details": "인터넷에 연결되어 있는지 확인해주세요.",
"uploading": "OpenStreetMap에 바뀜을 올리고 있습니다.",
"unsaved_changes": "저장하지 않은 바뀜이 있습니다"
"facebook": "페이스북에 공유",
"twitter": "트위터에 공유",
"google": "Google+에 공유",
- "help_html": "바뀐 내용은 몇 분이 되면 \"표준\" 레이어에 나타나야 합니다. 다른 레이어와 특정 기능은, 더 오래 걸릴 수 있습니다.\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>자세한 정보</a>)\n"
+ "help_html": "바뀐 내용은 몇 분이 되면 \"표준\" 레이어에 나타나야 합니다. 다른 레이어와 특정 지물은, 더 오래 걸릴 수 있습니다.\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>자세한 정보</a>)\n"
},
"confirm": {
"okay": "확인"
"untagged_area": "태그되지 않은 지역",
"many_deletions": "개체 {n}개를 삭제하고 있습니다. 이를 수행하겠습니까? 다른 사람이 openstreetmap.org에서 보는 지도에서 삭제됩니다.",
"tag_suggests_area": "{tag} 태그 제안 선은 지역이여야 하지만 태그는 지역이 아닙니다",
- "untagged_point_tooltip": "이 지점이 무엇인지 설명하는 기능 유형을 선택하세요.",
- "untagged_line_tooltip": "이 선이 무엇인지 설명하는 기능 유형을 선택하세요.",
- "untagged_area_tooltip": "이 지역이 무엇인지 설명하는 기능 유형을 선택하세요.",
+ "untagged_point_tooltip": "이 지점이 무엇인지 설명하는 지물 유형을 선택하세요.",
+ "untagged_line_tooltip": "이 선이 무엇인지 설명하는 지물 유형을 선택하세요.",
+ "untagged_area_tooltip": "이 지역이 무엇인지 설명하는 지물 유형을 선택하세요.",
"deprecated_tags": "사용되지 않는 태그: {tags}"
},
"zoom": {
},
"help": {
"title": "도움말",
- "help": "# 도움말\n\n이 편집기는 세계의 자유롭고 편집할 수 있는 지도인,\n[OpenStreetMap](http://www.openstreetmap.org/)을 위한 편집기입니다.\n모두를 위한 더 나은 세계의 오픈 소스 및 오픈 데이터 지도를 만들고, 당신의\n지역에서 데이터를 추가하거나 업데이드하려면 이를 사용할 수 있습니다.\n\n이 지도에서 만든 편집은 OpenStreetMap을 사용하는 모두에게\n보여질 수 있습니다. 편집을 하기 위해, [무료 OpenStreetMap\n계정](https://www.openstreetmap.org/user/new)이 필요합니다.\n\n[iD 편집기](http://ideditor.com/)는 [GitHub에 사용할 수 있는 소스\n코드](https://github.com/openstreetmap/iD)로 된 협업 프로젝트입니다.\n",
- "editing_saving": "# 편집 및 저장\n\n이 편집기는 주로 온라인으로 작동하도록 설계되었고, 지금 웹사이트를 통해\n접근할 수 있습니다.\n\n### 기능 선택하기\n\n도로나 관심 있는 지점과 같은 지도 기능을 선택하려면, 지도에\n그것을 클릭하세요. 선택된 기능이 강조되고, 그것에 대한 세부 정보로\n된 패널을 열고, 기능을 수행할 수 있는 메뉴를 보여줍니다.\n\n여러 기능을 선택하려면 'Shift' 키를 누르고 있으세요. 다음 선택하려는\n기능을 클릭하거나, 사각형으로 그리기 위해 지도에 드래그하세요.\n상자가 그려지고 그 안에 있는 모든 지점이 선택됩니다.\n\n### 편집 저장하기\n\n도로, 건물과 장소 등을 편집하여 바꿀 때, 서버에 저장할 때까지는\n로컬에 저장됩니다. 실수를 걱정하지 마십시오 - 실행 취소\n버튼을 클릭해 바뀜을 실행 취소할 수 있고, 다시 실행 버튼을 클릭해\n바뀜을 다시 실행할 수 있습니다.\n\n편집의 그룹을 마치려면 '저장'을 클릭하세요 - 예를 들어, 마을의\n지역을 완료했고 새 지역에서 시작하고 싶으면 말입니다. 무엇을\n했는지 검토할 기회가 있을 것이며, 무언가 바꾸는 것에 대한 권한이\n없어 보이면 편집기가 유용한 제안과 경고를 제공합니다.\n\n모든 것이 좋아 보이면, 모든 다른 사용자에게 보여지고 구축하고 개선하기 위해 다른\n사용자가 사용할 수 있는 곳인, [OpenStreetMap.org](http://www.openstreetmap.org/)에\n바뀜을 게시하기 위해 바꾼 것을 설명할 짧은 요약을 입력하고 '저장'을\n다시 클릭할 수 있습니다.\n\n한 번에 앉아서 편집을 마칠 수 없으면, (같은 브라우저와 컴퓨터에서)\n편집기 창을 떠나고 나서 돌아올 수 있으며, 편집기 애플리케이션은\n작업을 되돌리도록 제공합니다.\n",
- "roads": "# 도로\n\n이 편집기로 도로를 만들고, 고치고, 삭제할 수 있습니다. 도로는 모든 종류가\n될 수 있습니다: 경로, 고속도로, 산책로, 자전거 도로와 더 많이 - 어떠한 자주 교차되는 분절도 매핑할 수 있어야 합니다.\n\n### 선택하기\n\n도로를 선택하려면 도로를 클릭하세요. 지도와 도로에 대한 자세한\n정보를 보여주는 사이드바가 있는 작은 도구 메뉴와 함께, 외곽선이\n보여져야 합니다.\n\n### 수정하기\n\n때때로 도로 뒤나 GPS 트랙에 있는 영상이 정렬되지 않은 도로를\n볼 수 있습니다. 이러한 도로를 조정할 수 있으며 조정하면 올바른\n위치에 있게 됩니다.\n\n먼저 바꾸고 싶은 도로를 클릭하세요. 도로가 강조되고 더 나은 위치로\n드래그할 수 있는 조절 점이 보여집니다. 더 자세하게 하기 위해 새\n조절 점을 추가하고 싶으면, 노드 없이 도로의 부분을 더블 클릭하면\n추가됩니다.\n\n길을 다른 길로 연결하지만, 제대로 지도에 연결되어 있지 않으면,\n그들과 합치기 위해 다른 도로 위에 그 도로의 조절 점 중 하나를\n드래그할 수 있습니다. 도로 연결이 있는 것은 지도에 있어서 중요하고\n운전 경로를 제공하는 데 있어서 필수입니다.\n\n또한 한 번에 전체 도로를 옮기려면 '이동' 도구를 클릭하거나 `M` 바로가기 키를 누를 수\n있으며, 해당 움직임을 저장하려면 다시 클릭할 수 있습니다.\n\n### 삭제하기\n\n도로가 전체적으로 잘못되었다면 - 위성 영상에서 존재하지 않는 것을 볼 수\n있으며 이상적으로는 나타나지 않는 것으로 현지로 확인되었습니다 - 지도에서\n도로를 제거할 수 있습니다. 기능을 삭제할 때 주의하십시오 -\n어떠한 다른 편집, 모두에게 보여지는 결과와 위성 영상 같은 것은 때때로\n오래되었으며, 그래서 도로는 단순히 새로 지어졌을 수 있습니다.\n\n도로를 클릭하여 선택한 다음, 휴지통 아이콘을 클릭하거나 '삭제' 키를\n눌러 도로를 삭제할 수 있습니다.\n\n### 만들기\n\n어딘가에 찾은 도로가 있어야 하지만 없습니까? 선 그리기를 시작하려면\n편집기의 위 왼쪽에 '선' 아이콘을 클릭하거나 `2` 바로가기 키를 누르세요.\n\n그리기를 시작하려면 지도에 도로의 시작 부분을 클릭하세요. 도로가\n기존 도로에서 분기되어 있다면, 연결할 장소를 클릭하여 시작하세요.\n\n다음 위성 영상이나 GPS에 따라, 올바른 경로를 따를 수 있도록 도로를 따라\n점을 클릭하세요. 그리는 도로가 다른 도로와 교차하면, 교차점을 클릭하여\n도로를 연결하세요. 그리기가 완료되면, 더블 클릭하거나\n키보드에 있는 'Return' 또는 'Enter'를 누르세요.\n",
- "gps": "# GPS\n\nGPS 데이터는 OpenStreetMap에 대한 데이터의 가장 신뢰할 수 있는 자료입니다.\n이 편집기는 로컬 컴퓨터에 있는 `.gpx` 파일로 로컬 추적을 지원합니다. 스마트폰\n애플리케이션의 수와 같은 개인 GPS 하드웨어로 GPS 추적의 종류를 모을 수 있습니다.\n\nGPS 측량을 수행하는 방법에 대한 자세한 정보는\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/)를 읽으세요.\n\n매핑에 GPX 트랙을 사용하려면, 지도 편집기 위에 GPX 파일을 끌어 놓으세요.\n인식되면, 밝은 보라 선으로 지도에 추가됩니다. 새 GPX 레이어로 활성화, 비활성화,\n또는 확대하려면 오른쪽에 있는 '지도 데이터' 메뉴를 클릭하세요.\n\nGPX 트랙은 OpenStreetMap에 직접 올려지지 않습니다 - 그것을 사용하는 최상의\n방법은 추가하는 새로운 기능을 위한 가이드로 사용하여, 지도를 그리는 것이며,\n다른 사용자가 사용하기 위해 [OpenStreetMap에 그것을 올리는](http://www.openstreetmap.org/trace/create)\n것입니다.\n",
+ "editing_saving": "# 편집 및 저장\n\n이 편집기는 주로 온라인으로 작동하도록 설계되었고, 지금 웹사이트를 통해\n접근할 수 있습니다.\n\n### 지물 선택하기\n\n도로나 관심 있는 지점과 같은 지도 지물을 선택하려면, 지도에\n그것을 클릭하세요. 선택된 지물이 강조되고, 그것에 대한 세부 정보로\n된 패널을 열고, 지물을 수행할 수 있는 메뉴를 보여줍니다.\n\n여러 지물을 선택하려면 'Shift' 키를 누르고 있으세요. 다음 선택하려는\n지물을 클릭하거나, 사각형으로 그리기 위해 지도에 드래그하세요.\n상자가 그려지고 그 안에 있는 모든 지점이 선택됩니다.\n\n### 편집 저장하기\n\n도로, 건물과 장소 등을 편집하여 바꿀 때, 서버에 저장할 때까지는\n로컬에 저장됩니다. 실수를 걱정하지 마십시오 - 실행 취소\n버튼을 클릭해 바뀜을 실행 취소할 수 있고, 다시 실행 버튼을 클릭해\n바뀜을 다시 실행할 수 있습니다.\n\n편집의 그룹을 마치려면 '저장'을 클릭하세요 - 예를 들어, 마을의\n지역을 완료했고 새 지역에서 시작하고 싶으면 말입니다. 무엇을\n했는지 검토할 기회가 있을 것이며, 무언가 바꾸는 것에 대한 권한이\n없어 보이면 편집기가 유용한 제안과 경고를 제공합니다.\n\n모든 것이 좋아 보이면, 모든 다른 사용자에게 보여지고 구축하고 개선하기 위해 다른\n사용자가 사용할 수 있는 곳인, [OpenStreetMap.org](http://www.openstreetmap.org/)에\n바뀜을 게시하기 위해 바꾼 것을 설명할 짧은 요약을 입력하고 '저장'을\n다시 클릭할 수 있습니다.\n\n한 번에 앉아서 편집을 마칠 수 없으면, (같은 브라우저와 컴퓨터에서)\n편집기 창을 떠나고 나서 돌아올 수 있으며, 편집기 애플리케이션은\n작업을 되돌리도록 제공합니다.\n",
+ "roads": "# 도로\n\n이 편집기로 도로를 만들고, 고치고, 삭제할 수 있습니다. 도로는 모든 종류가\n될 수 있습니다: 경로, 고속도로, 산책로, 자전거 도로와 더 많이 - 어떠한 자주 교차되는 분절도 매핑할 수 있어야 합니다.\n\n### 선택하기\n\n도로를 선택하려면 도로를 클릭하세요. 지도와 도로에 대한 자세한\n정보를 보여주는 사이드바가 있는 작은 도구 메뉴와 함께, 외곽선이\n보여져야 합니다.\n\n### 수정하기\n\n때때로 도로 뒤나 GPS 트랙에 있는 영상이 정렬되지 않은 도로를\n볼 수 있습니다. 이러한 도로를 조정할 수 있으며 조정하면 올바른\n위치에 있게 됩니다.\n\n먼저 바꾸고 싶은 도로를 클릭하세요. 도로가 강조되고 더 나은 위치로\n드래그할 수 있는 조절 점이 보여집니다. 더 자세하게 하기 위해 새\n조절 점을 추가하고 싶으면, 노드 없이 도로의 부분을 더블 클릭하면\n추가됩니다.\n\n길을 다른 길로 연결하지만, 제대로 지도에 연결되어 있지 않으면,\n그들과 합치기 위해 다른 도로 위에 그 도로의 조절 점 중 하나를\n드래그할 수 있습니다. 도로 연결이 있는 것은 지도에 있어서 중요하고\n운전 경로를 제공하는 데 있어서 필수입니다.\n\n또한 한 번에 전체 도로를 옮기려면 '이동' 도구를 클릭하거나 `M` 바로가기 키를 누를 수\n있으며, 해당 움직임을 저장하려면 다시 클릭할 수 있습니다.\n\n### 삭제하기\n\n도로가 전체적으로 잘못되었다면 - 위성 영상에서 존재하지 않는 것을 볼 수\n있으며 이상적으로는 나타나지 않는 것으로 현지로 확인되었습니다 - 지도에서\n도로를 제거할 수 있습니다. 지물을 삭제할 때 주의하십시오 -\n어떠한 다른 편집, 모두에게 보여지는 결과와 위성 영상 같은 것은 때때로\n오래되었으며, 그래서 도로는 단순히 새로 지어졌을 수 있습니다.\n\n도로를 클릭하여 선택한 다음, 휴지통 아이콘을 클릭하거나 '삭제' 키를\n눌러 도로를 삭제할 수 있습니다.\n\n### 만들기\n\n어딘가에 찾은 도로가 있어야 하지만 없습니까? 선 그리기를 시작하려면\n편집기의 위 왼쪽에 '선' 아이콘을 클릭하거나 `2` 바로가기 키를 누르세요.\n\n그리기를 시작하려면 지도에 도로의 시작 부분을 클릭하세요. 도로가\n기존 도로에서 분기되어 있다면, 연결할 장소를 클릭하여 시작하세요.\n\n다음 위성 영상이나 GPS에 따라, 올바른 경로를 따를 수 있도록 도로를 따라\n점을 클릭하세요. 그리는 도로가 다른 도로와 교차하면, 교차점을 클릭하여\n도로를 연결하세요. 그리기가 완료되면, 더블 클릭하거나\n키보드에 있는 'Return' 또는 'Enter'를 누르세요.\n",
+ "gps": "# GPS\n\nGPS 데이터는 OpenStreetMap에 대한 데이터의 가장 신뢰할 수 있는 자료입니다.\n이 편집기는 로컬 컴퓨터에 있는 `.gpx` 파일로 로컬 추적을 지원합니다. 스마트폰\n애플리케이션의 수와 같은 개인 GPS 하드웨어로 GPS 추적의 종류를 모을 수 있습니다.\n\nGPS 측량을 수행하는 방법에 대한 자세한 정보는\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/)를 읽으세요.\n\n매핑에 GPX 트랙을 사용하려면, 지도 편집기 위에 GPX 파일을 끌어 놓으세요.\n인식되면, 밝은 보라 선으로 지도에 추가됩니다. 새 GPX 레이어로 활성화, 비활성화,\n또는 확대하려면 오른쪽에 있는 '지도 데이터' 메뉴를 클릭하세요.\n\nGPX 트랙은 OpenStreetMap에 직접 올려지지 않습니다 - 그것을 사용하는 최상의\n방법은 추가하는 새로운 지물을 위한 가이드로 사용하여, 지도를 그리는 것이며,\n다른 사용자가 사용하기 위해 [OpenStreetMap에 그것을 올리는](http://www.openstreetmap.org/trace/create)\n것입니다.\n",
"imagery": "# 영상\n\n항공 영상은 매핑에 있어서 중요한 자료입니다. 비행기 플라이오버, 위성 뷰와\n자유롭게 컴파일된 자료의 조합은 편집기에서 오른쪽에 있는 '배경 설정' 메뉴에서\n사용할 수 있습니다.\n\n기본적으로 [Bing 지도](http://www.bing.com/maps/) 위성 레이어가 편집기에\n표현되지만, 기존대로 새 지리적 지역으로 지도를 이동하고 확대할 수 있고, 새 자료는\n사용할 수 있게 될 것입니다. 미합중국, 프랑스와 덴마크와 같은 일부 국가는 일부 지역에서\n매우 높은 품질의 영상을 사용할 수 있습니다.\n\n영상은 때때로 영상 제공자 측이 실수하기 때문에 지도 데이터에 오프셋이 있습니다.\n만약 배경에서 도로가 옮겨진 것이 많이 보인다면, 즉시 배경에 맞게 그들 모두를 이동하지\n마십시오. 대신 영상을 조정할 수 있으며 배경 설정 UI의 아래에 있는 '정렬 고치기'를\n클릭하여 기존 데이터에 맞추면 됩니다.\n",
- "addresses": "# 주소\n\n주소는 지도를 위한 가장 유용한 정보의 일부입니다.\n\n주소가 주로 거리의 부분으로 표현되어 있더라도, OpenStreetMap에서 주소는\n거리를 따라 건물과 장소의 특성으로 기록하고 있습니다.\n\n건물 외곽선으로 매핑된 장소뿐만 아니라 단일 지점으로 매핑된 장소에 주소\n정보를 추가할 수 있습니다. 최적의 주소 데이터 자료는 지상에서의 측량이나\n개인 지식에서 있습니다 - 다른 기능과 마찬가지로, Google 지도와 같은 상용\n자료에서 복사하는 행위는 엄격히 금지됩니다.\n",
- "inspector": "# 특성 편집기 사용하기\n\n특성 편집기는 선택한 기능의 자세한 내용을 편집할 수 있도록 하는 문서의 왼쪽에\n있는 부분입니다.\n\n### 기능 유형 선택하기\n\n지점, 선이나 지역을 추가하고 나서, 고속도로나 주거 도로, 수퍼마켓이나 카페와\n같은\t어떤 유형인지 선택할 수 있습니다. 특성 편집기는 일반 기능 유형에 대한\n버튼를 보여주며, 검색 상자에 무엇을 찾고 있는지 입력하여 다른 기능을 찾을\n수 있습니다.\n\n기능에 대해 자세히 알아보려면 기능 유형 버튼의 아래 오른쪽 모서리에 있는\n'i'를 클릭하세요. 해당 유형을 선택하려면 버튼을 클릭하세요.\n\n### 양식을 사용하여 태그 편집하기\n\n기능 유형을 선택하고 나서, 또는 이미 유형이 할당된 기능을 선택할 때,\n특성 편집기는 그것의 이름과 주소와 같은 기능에 대한 자세한 내용으로 된\n필드를 보여줍니다.\n\n볼 수 있는 필드 아래에, [위키백과](http://www.wikipedia.org/) 정보,\n휠체어 접근과 그 외와 같은, 다른 자세한 내용을 추가하려면 아이콘을\n클릭할 수 있습니다.\n\n특성 편집기 아래에, 요소에 임의의 다른 태그를 추가하려면 '추가적인 태그'를\n클릭하세요. [Taginfo](http://taginfo.openstreetmap.org/)는 인기 있는 태그\n조합에 대한 자세히 알아보기 위한 훌륭한 자료입니다.\n\n특성 편집기에서 바꾼 내용은 자동으로 지도에 적용됩니다. '실행 취소' 버튼을\n클릭하여 언제든지 되돌릴 수 있습니다.\n",
- "buildings": "# 건물\n\nOpenStreetMap은 건물의 세계 최대 규모의 데이터베이스입니다. 이 데이터베이스에\n만들고 개선할 수 있습니다.\n\n### 선택하기\n\n건물 경계를 클릭하여 건물을 선택할 수 있습니다. 이것은 건물이 강조되고 작은 도구\n메뉴와 건물에 대한 자세한 정보를 보여주는 사이드바가 열립니다.\n\n### 수정하기\n\n가끔식 건물은 잘못 배치되어 있거나 잘못된 태그가 있습니다.\n\n전체 건물을 이동하려면, 선택하고 나서 '이동' 도구를 클릭하세요. 마우스로\n건물을 옮기고, 올바르게 자리했을 때 클릭하세요.\n\n건물의 특정 모양을 고치려면, 더 나은 장소로의 테두리를 형성하는 노드를\n클릭하고 드래그하세요.\n\n### 만들기\n\n지도에 건물을 추가하는 주변의 주요 질문 중 하나는 OpenStreetMap이 모양과 지점\n둘 다 건물에 기록하는 것입니다. 최선의 규칙은 _가능하면 모양으로 건물을 매핑_하는\n것으로, 회사와 집, 편의 시설을 매핑하고, 건물에서 독립적인 다른 것들은 별도 지점으로,\n건물 모양 안에 배치합니다.\n\n인터페이스의 위 왼쪽에 있는 '지역' 버튼을 클릭하여 모양으로 건물 그리기를 시작하고,\n모양을 닫으려면 키보드에 있는 'Return'을 누르거나 첫 노드를 클릭하여 끝내세요.\n\n### 삭제하기\n\n건물이 전체적으로 잘못되었다면 - 위성 영상에서 존재하지 않는 것을 볼 수\n있으며 이상적으로는 나타나지 않는 것으로 현지로 확인되었습니다 - 지도에서\n도로를 제거할 수 있습니다. 기능을 삭제할 때 주의하십시오 -\n어떠한 다른 편집, 모두에게 보여지는 결과와 위성 영상 같은 것은 때때로\n오래되었으며, 그래서 건물은 단순히 새로 지어졌을 수 있습니다.\n\n건물을 클릭하여 선택한 다음, 휴지통 아이콘을 클릭하거나 'Delete' 키를\n눌러 건물을 삭제할 수 있습니다.\n",
- "relations": "# 관계\n\n관계는 다른 기능을 그룹화하는 OpenStreetMap에 있는 기능의 특수 유형입니다.\n예를 들어, 관계의 일반적인 두 유형은, 특정 프리웨이나 고속도로에 속하는 도로의\n부분을 그룹화하는 *경로 관계*와, 복잡한 지역(도넛처럼 여러 조각이나 구멍이 있는 것)을\n정의하는 여러 선을 그룹화하는 *다중 다각형*입니다.\n\n관계에 있는 기능의 그룹은 *구성원*이라고 부릅니다. 사이드바에서, 기능이\n구성원인 관계를 볼 수 있으며, 그것을 선택하려면 해당 관계를 클릭하세요.\n관계가 선택되면, 사이드바에 나열된 모든 구성원을 볼 수 있고 지도에\n강조됩니다.\n\n대부분의 경우, iD는 편집하는 동안 자동으로 관계를 유지하도록 다룰 것입니다.\n여러분이 알고 있어야 하는 중요한 것은 더 정확하게 다시 그리기 위해 도로의\n부분을 삭제한다면, 새 부분은 원래와 같은 관계의 구성원인지 확인해야 합니다.\n\n## 관계 편집하기\n\n관계를 편집하고 싶으면, 여기에 기초가 있습니다.\n\n관계에 기능을 추가하려면, 기능을 선택하고, 사이드바의 \"모든 관계\" 부분에\n있는 \"+\" 버튼을 클릭하고, 관계를 선택하거나 관계의 이름을 입력하세요.\n\n새 관계를 만드려면, 구성원이어야 할 첫 기능을 선택하고, 사이드바의\n\"모든 관계\" 부분에 있는 \"+\" 버튼을 클릭하고, \"새 관계...\"를 선택하세요.\n\n관계에서 기능을 제거하려면, 기능을 선택하고 제거하려는 관계 옆에 있는\n휴지통 버튼을 클릭하세요.\n\n\"병합\" 도구를 사용하여 구명으로 된 다중 다각형을 만들 수 있습니다. 두 지역(안쪽과\n바깥쪽)을 그리고, 그들 둘 다 선택하기 위해 Shift 키를 누른 채로 각각 클릭한 다음,\n\"병합\" (+) 버튼을 클릭하세요.\n"
+ "addresses": "# 주소\n\n주소는 지도를 위한 가장 유용한 정보의 일부입니다.\n\n주소가 주로 거리의 부분으로 표현되어 있더라도, OpenStreetMap에서 주소는\n거리를 따라 건물과 장소의 특성으로 기록하고 있습니다.\n\n건물 외곽선으로 매핑된 장소뿐만 아니라 단일 지점으로 매핑된 장소에 주소\n정보를 추가할 수 있습니다. 최적의 주소 데이터 자료는 지상에서의 측량이나\n개인 지식에서 있습니다 - 다른 지물과 마찬가지로, Google 지도와 같은 상용\n자료에서 복사하는 행위는 엄격히 금지됩니다.\n",
+ "inspector": "# 특성 편집기 사용하기\n\n특성 편집기는 선택한 지물의 자세한 내용을 편집할 수 있도록 하는 문서의 왼쪽에\n있는 부분입니다.\n\n### 지물 유형 선택하기\n\n지점, 선이나 지역을 추가하고 나서, 고속도로나 주거 도로, 수퍼마켓이나 카페와\n같은\t어떤 유형인지 선택할 수 있습니다. 특성 편집기는 일반 지물 유형에 대한\n버튼를 보여주며, 검색 상자에 무엇을 찾고 있는지 입력하여 다른 지물을 찾을\n수 있습니다.\n\n지물에 대해 자세히 알아보려면 지물 유형 버튼의 아래 오른쪽 모서리에 있는\n'i'를 클릭하세요. 해당 유형을 선택하려면 버튼을 클릭하세요.\n\n### 양식을 사용하여 태그 편집하기\n\n지물 유형을 선택하고 나서, 또는 이미 유형이 할당된 지물을 선택할 때,\n특성 편집기는 그것의 이름과 주소와 같은 지물에 대한 자세한 내용으로 된\n필드를 보여줍니다.\n\n볼 수 있는 필드 아래에, [위키백과](http://www.wikipedia.org/) 정보,\n휠체어 접근과 그 외와 같은, 다른 자세한 내용을 추가하려면 아이콘을\n클릭할 수 있습니다.\n\n특성 편집기 아래에, 요소에 임의의 다른 태그를 추가하려면 '추가적인 태그'를\n클릭하세요. [Taginfo](http://taginfo.openstreetmap.org/)는 인기 있는 태그\n조합에 대한 자세히 알아보기 위한 훌륭한 자료입니다.\n\n특성 편집기에서 바꾼 내용은 자동으로 지도에 적용됩니다. '실행 취소' 버튼을\n클릭하여 언제든지 되돌릴 수 있습니다.\n",
+ "buildings": "# 건물\n\nOpenStreetMap은 건물의 세계 최대 규모의 데이터베이스입니다. 이 데이터베이스에\n만들고 개선할 수 있습니다.\n\n### 선택하기\n\n건물 경계를 클릭하여 건물을 선택할 수 있습니다. 이것은 건물이 강조되고 작은 도구\n메뉴와 건물에 대한 자세한 정보를 보여주는 사이드바가 열립니다.\n\n### 수정하기\n\n가끔식 건물은 잘못 배치되어 있거나 잘못된 태그가 있습니다.\n\n전체 건물을 이동하려면, 선택하고 나서 '이동' 도구를 클릭하세요. 마우스로\n건물을 옮기고, 올바르게 자리했을 때 클릭하세요.\n\n건물의 특정 모양을 고치려면, 더 나은 장소로의 테두리를 형성하는 노드를\n클릭하고 드래그하세요.\n\n### 만들기\n\n지도에 건물을 추가하는 주변의 주요 질문 중 하나는 OpenStreetMap이 모양과 지점\n둘 다 건물에 기록하는 것입니다. 최선의 규칙은 _가능하면 모양으로 건물을 매핑_하는\n것으로, 회사와 집, 편의 시설을 매핑하고, 건물에서 독립적인 다른 것들은 별도 지점으로,\n건물 모양 안에 배치합니다.\n\n인터페이스의 위 왼쪽에 있는 '지역' 버튼을 클릭하여 모양으로 건물 그리기를 시작하고,\n모양을 닫으려면 키보드에 있는 'Return'을 누르거나 첫 노드를 클릭하여 끝내세요.\n\n### 삭제하기\n\n건물이 전체적으로 잘못되었다면 - 위성 영상에서 존재하지 않는 것을 볼 수\n있으며 이상적으로는 나타나지 않는 것으로 현지로 확인되었습니다 - 지도에서\n도로를 제거할 수 있습니다. 지물을 삭제할 때 주의하십시오 -\n어떠한 다른 편집, 모두에게 보여지는 결과와 위성 영상 같은 것은 때때로\n오래되었으며, 그래서 건물은 단순히 새로 지어졌을 수 있습니다.\n\n건물을 클릭하여 선택한 다음, 휴지통 아이콘을 클릭하거나 'Delete' 키를\n눌러 건물을 삭제할 수 있습니다.\n",
+ "relations": "# 관계\n\n관계는 다른 지물을 그룹화하는 OpenStreetMap에 있는 지물의 특수 유형입니다.\n예를 들어, 관계의 일반적인 두 유형은, 특정 프리웨이나 고속도로에 속하는 도로의\n부분을 그룹화하는 *경로 관계*와, 복잡한 지역(도넛처럼 여러 조각이나 구멍이 있는 것)을\n정의하는 여러 선을 그룹화하는 *다중 다각형*입니다.\n\n관계에 있는 지물의 그룹은 *구성원*이라고 부릅니다. 사이드바에서, 지물이\n구성원인 관계를 볼 수 있으며, 그것을 선택하려면 해당 관계를 클릭하세요.\n관계가 선택되면, 사이드바에 나열된 모든 구성원을 볼 수 있고 지도에\n강조됩니다.\n\n대부분의 경우, iD는 편집하는 동안 자동으로 관계를 유지하도록 다룰 것입니다.\n여러분이 알고 있어야 하는 중요한 것은 더 정확하게 다시 그리기 위해 도로의\n부분을 삭제한다면, 새 부분은 원래와 같은 관계의 구성원인지 확인해야 합니다.\n\n## 관계 편집하기\n\n관계를 편집하고 싶으면, 여기에 기초가 있습니다.\n\n관계에 지물을 추가하려면, 지물을 선택하고, 사이드바의 \"모든 관계\" 부분에\n있는 \"+\" 버튼을 클릭하고, 관계를 선택하거나 관계의 이름을 입력하세요.\n\n새 관계를 만드려면, 구성원이어야 할 첫 지물을 선택하고, 사이드바의\n\"모든 관계\" 부분에 있는 \"+\" 버튼을 클릭하고, \"새 관계...\"를 선택하세요.\n\n관계에서 지물을 제거하려면, 지물을 선택하고 제거하려는 관계 옆에 있는\n휴지통 버튼을 클릭하세요.\n\n\"병합\" 도구를 사용하여 구명으로 된 다중 다각형을 만들 수 있습니다. 두 지역(안쪽과\n바깥쪽)을 그리고, 그들 둘 다 선택하기 위해 Shift 키를 누른 채로 각각 클릭한 다음,\n\"병합\" (+) 버튼을 클릭하세요.\n"
},
"intro": {
"navigation": {
"title": "둘러보기",
"drag": "주 지도 지역은 배경의 위에 OpenStreetMap 데이터를 보여줍니다. 어떤 웹 지도와 같이 드래그하고 스크롤해서 둘러볼 수 있습니다. **지도를 드래그하세요!**",
- "select": "지도 기능은 세 길로 표현됩니다: 사용 중인 지점, 선이나 지역. 모든 기능은 이를 클릭해서 선택할 수 있습니다. **선택하려면 지점을 클릭하세요.**",
- "header": "머리 부분은 기능 유형을 보여줍니다.",
- "pane": "기능이 선택되면, 기능 편집기가 보여집니다. 머리 부분은 기능 유형을 보여주고 주 패널은 이름과 주소와 같은 기능의 특성을 보여줍니다. **위 오른쪽의 닫기 버튼으로 기능 편집기를 닫으세요.**"
+ "select": "지도 지물은 세 길로 표현됩니다: 사용 중인 지점, 선이나 지역. 모든 지물은 이를 클릭해서 선택할 수 있습니다. **선택하려면 지점을 클릭하세요.**",
+ "header": "머리 부분은 지물 유형을 보여줍니다.",
+ "pane": "지물이 선택되면, 지물 편집기가 보여집니다. 머리 부분은 지물 유형을 보여주고 주 패널은 이름과 주소와 같은 지물의 특성을 보여줍니다. **위 오른쪽의 닫기 버튼으로 지물 편집기를 닫으세요.**"
},
"points": {
"title": "지점",
- "add": "지점은 상점, 음식점과 산과 같은 기ë\8a¥ì\9c¼ë¡\9c í\91\9cí\98\84í\95\98ë\8a\94 ë\8d° ì\82¬ì\9a©ë\90 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. ì§\80ì \90ì\9d\80 í\8a¹ì \95 ì\9c\84ì¹\98ì\99\80 거기ì\97\90 무ì\97\87ì\9d´ ì\9e\88ë\8a\94ì§\80 ì\84¤ëª\85ì\9d\84 í\91\9cì\8b\9cí\95©ë\8b\88ë\8b¤. **ì\83\88 ì§\80ì \90ì\9d\84 ì¶\94ê°\80í\95\98ë ¤ë©´ ì§\80ì \90 ë²\84í\8a¼ì\9d\84 í\81´ë¦í\95\98ì\84¸ì\9a\94.**",
+ "add": "지점은 상점, 음식점과 산과 같은 ì§\80물ë¡\9c í\91\9cí\98\84í\95\98ë\8a\94 ë\8d° ì\82¬ì\9a©ë\90 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. ì§\80ì \90ì\9d\80 í\8a¹ì \95 ì\9c\84ì¹\98ì\99\80 거기ì\97\90 무ì\97\87ì\9d´ ì\9e\88ë\8a\94ì§\80 ì\84¤ëª\85ì\9d\84 í\91\9cì\8b\9cí\95©ë\8b\88ë\8b¤. **ì\83\88 ì§\80ì \90ì\9d\84 ì¶\94ê°\80í\95\98ë ¤ë©´ ì§\80ì \90 ë²\84í\8a¼ì\9d\84 í\81´ë¦í\95\98ì\84¸ì\9a\94.**",
"place": "지점은 지도에 클릭하여 배치할 수 있습니다. **건물의 위에 지점을 배치하세요.**",
- "search": "여기에 지점이 표현할 수 있는 많은 다른 기능이 있습니다. 추가하는 지점은 카페입니다. **'{name}'에 대해 검색하세요**",
+ "search": "여기에 지점이 표현할 수 있는 많은 다른 지물이 있습니다. 추가하는 지점은 카페입니다. **'{name}'에 대해 검색하세요**",
"choose": "**목록에서 카페를 선택하세요.**",
- "describe": "지점은 이제 카페로 표시됩니다. 기능 편집기를 사용하여, 기능에 대한 더 많은 정보를 추가할 수 있습니다. **이름을 추가하세요**",
- "close": "기능 편집기는 닫기 버튼을 클릭하여 닫을 수 있습니다. **기능 편집기를 닫으세요**",
+ "describe": "지점은 이제 카페로 표시됩니다. 지물 편집기를 사용하여, 지물에 대한 더 많은 정보를 추가할 수 있습니다. **이름을 추가하세요**",
+ "close": "지물 편집기는 닫기 버튼을 클릭하여 닫을 수 있습니다. **지물 편집기를 닫으세요**",
"reselect": "흔히 지점은 이미 존재하지만, 실수가 있거나 완전하지 않을 수 있습니다. 기존 지점을 편집할 수 있습니다. **만든 지점을 선택하세요.**",
- "fixname": "**이름을 바꾸고 기능 편집기를 닫으세요.**",
- "reselect_delete": "지도에 있는 모든 기능이 삭제됩니다. **만든 지점을 클릭하세요.**",
+ "fixname": "**이름을 바꾸고 지물 편집기를 닫으세요.**",
+ "reselect_delete": "지도에 있는 모든 지물이 삭제됩니다. **만든 지점을 클릭하세요.**",
"delete": "지점 주변의 메뉴는 삭제를 포함해서, 수행할 수 있는 작업을 포함합니다. **지점을 삭제하세요.**"
},
"areas": {
"title": "지역",
- "add": "지역은 호수, 건물 그리고 주거 지역과 같은 기ë\8a¥ì\9d\98 ê²½ê³\84를 ë³´ì\97¬ì£¼ë\8a\94 ë\8d° ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤. ë\98\90í\95\9c ë\8b¹ì\8b ì\9d´ ì\9d¼ë°\98ì \81ì\9c¼ë¡\9c ì§\80ì \90ì\9c¼ë¡\9c 매í\95\91í\95 ì\88\98ë\8f\84 ì\9e\88ë\8a\94 ë§\8eì\9d\80 기ë\8a¥ì\9c¼ë¡\9c ë\8d\94 ì\9e\90ì\84¸í\95\9c 매í\95\91ì\97\90 ì\82¬ì\9a©í\95 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. **ì\83\88 ì§\80ì\97ì\9d\84 ì¶\94ê°\80í\95\98ë ¤ë©´ ì§\80ì\97 ë²\84í\8a¼ì\9d\84 í\81´ë¦í\95\98ì\84¸ì\9a\94.**",
+ "add": "지역은 호수, 건물 그리고 주거 지역과 같은 ì§\80물ì\9d\98 ê²½ê³\84를 ë³´ì\97¬ì£¼ë\8a\94 ë\8d° ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤. ë\98\90í\95\9c ë\8b¹ì\8b ì\9d´ ì\9d¼ë°\98ì \81ì\9c¼ë¡\9c ì§\80ì \90ì\9c¼ë¡\9c 매í\95\91í\95 ì\88\98ë\8f\84 ì\9e\88ë\8a\94 ë§\8eì\9d\80 ì§\80물ë¡\9c ë\8d\94 ì\9e\90ì\84¸í\95\9c 매í\95\91ì\97\90 ì\82¬ì\9a©í\95 ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤. **ì\83\88 ì§\80ì\97ì\9d\84 ì¶\94ê°\80í\95\98ë ¤ë©´ ì§\80ì\97 ë²\84í\8a¼ì\9d\84 í\81´ë¦í\95\98ì\84¸ì\9a\94.**",
"corner": "지역은 지역의 경계를 표시하는 노드를 배치하여 그려집니다. **놀이터의 구석 중 하나에 시작 노드를 배치하세요.**",
"place": "더 많은 노드를 배치하여 지역을 그리세요. 시작 노드를 클릭하여 지역을 마치세요. **놀이터에 대한 지역을 그리세요.**",
"search": "**'{name}'에 대해 검색하세요.**",
"choose": "**목록에서 놀이터를 선택하세요.**",
- "describe": "**이름을 추가하고, 기능 편집기를 닫으세요**"
+ "describe": "**이름을 추가하고, 지물 편집기를 닫으세요**"
},
"lines": {
"title": "선",
- "add": "선은 도로, 철도와 강과 같은 기능을 표현하는 데 사용됩니다. **새 선을 추가하려면 선 버튼을 클릭하세요.**",
+ "add": "선은 도로, 철도와 강과 같은 지물을 표현하는 데 사용됩니다. **새 선을 추가하려면 선 버튼을 클릭하세요.**",
"start": "**도로의 끝에 클릭하여 선을 시작하세요.**",
"intersect": "선에 더 많은 노드를 추가하려면 클릭하세요. 필요하다면 그리는 동안 지도를 드래그할 수 있습니다. 도로와 선의 다른 많은 유형은 큰 네트워크의 부분입니다. 이 선이 작동하는 애플리케이션의 경로 지정을 위해서는 제대로 연결하는 것이 중요합니다. **두 선을 연결하는 교차로를 만드려면, Flower Street를 클릭하세요.**",
"finish": "선은 마지막 노드를 다시 클릭하여 마칠 수 있습니다. **도로 그리기를 마치세요.**",
"road": "**목록에서 도로를 선택하세요**",
"residential": "여기에 도로의 여러 종류가 있지만, 가장 자주 그리게 되는 것은 주거 도로입니다. **주거 도로 유형을 선택하세요**",
- "describe": "**도로의 이름을 정하고 기능 편집기를 닫으세요.**",
+ "describe": "**도로의 이름을 정하고 지물 편집기를 닫으세요.**",
"restart": "도로는 Flower Street과 교차해야 합니다.",
"wrong_preset": "주거 도로 유형을 선택하지 않았습니다. **다시 선택하려면 여기를 클릭하세요**"
},
"startediting": {
"title": "편집 시작",
- "help": "더 많은 설명서와 이 연습은 여기에서 사용할 수 있습니다.",
+ "help": "더 많은 설명문서와 이 연습은 여기에서 사용할 수 있습니다.",
"save": "정기적으로 바뀜을 저장하는 것을 잊지 마세요!",
"start": "매핑 시작!"
}
"fields": {
"access": {
"label": "통행",
- "placeholder": "알 수 없음",
- "types": {
- "access": "일반",
- "foot": "보행자",
- "motor_vehicle": "이륜차",
- "bicycle": "자전거",
- "horse": "주택"
- },
"options": {
- "yes": {
- "title": "허가됨",
- "description": "통행이 법적으로 허가됨; 정당한 이용"
+ "designated": {
+ "description": "표지판이나 특정 지역 법률에 따라 통행이 허가됨",
+ "title": "지정 차종만 통행 허가"
+ },
+ "destination": {
+ "description": "목적지에 갈 때에만 통행이 허가됨",
+ "title": "목적 외 통행 금지"
},
"no": {
- "title": "제한됨",
- "description": "통행이 일반 대중에게 허가되지 않음"
+ "description": "통행이 일반 대중에게 허가되지 않음",
+ "title": "제한됨"
},
"permissive": {
- "title": "소유자 허가 필요",
- "description": "소유자가 권한을 해제할 때까지 통행이 허가됨"
+ "description": "소유자가 권한을 해제할 때까지 통행이 허가됨",
+ "title": "소유자 허가 필요"
},
"private": {
- "title": "사유",
- "description": "개별적으로 소유자의 허가로만 통행이 허가됨"
- },
- "designated": {
- "title": "지정 차종만 통행 허가",
- "description": "표지판이나 특정 지역 법률에 따라 통행이 허가됨"
+ "description": "개별적으로 소유자의 허가로만 통행이 허가됨",
+ "title": "사유"
},
- "destination": {
- "title": "목적 외 통행 금지",
- "description": "목적지에 갈 때에만 통행이 허가됨"
+ "yes": {
+ "description": "통행이 법적으로 허가됨; 정당한 이용",
+ "title": "허가됨"
}
+ },
+ "placeholder": "알 수 없음",
+ "types": {
+ "access": "일반",
+ "bicycle": "자전거",
+ "foot": "도보",
+ "horse": "말",
+ "motor_vehicle": "이륜차"
}
},
"access_simple": {
"address": {
"label": "주소",
"placeholders": {
+ "city": "도시",
+ "country": "국가",
+ "district": "구",
+ "hamlet": "작은 마을",
"housename": "집이름",
"housenumber": "123",
- "street": "거리",
- "city": "도시",
- "postcode": "우편 번호",
"place": "장소",
- "hamlet": "작은 마을",
- "suburb": "교외",
- "subdistrict": "가도",
- "district": "구",
+ "postcode": "우편 번호",
"province": "성",
"state": "주",
- "country": "국가"
+ "street": "거리",
+ "subdistrict": "가도",
+ "suburb": "교외"
}
},
"admin_level": {
"aerialway/access": {
"label": "접근",
"options": {
+ "both": "둘 다",
"entry": "입구",
- "exit": "출구",
- "both": "둘 다"
+ "exit": "출구"
}
},
"aerialway/capacity": {
"aerialway/summer/access": {
"label": "접근 (여름)",
"options": {
+ "both": "둘 다",
"entry": "입구",
- "exit": "출구",
- "both": "둘 다"
+ "exit": "출구"
}
},
"aeroway": {
"cardinal_direction": {
"label": "방향",
"options": {
- "N": "북",
"E": "동",
- "S": "남",
- "W": "서",
- "NE": "북동",
- "SE": "남동",
- "SW": "남서",
- "NW": "북서",
- "NNE": "북북동",
"ENE": "동북동",
"ESE": "동남동",
+ "N": "북",
+ "NE": "북동",
+ "NNE": "북북동",
+ "NNW": "북북서",
+ "NW": "북서",
+ "S": "남",
+ "SE": "남동",
"SSE": "남남동",
"SSW": "남남서",
- "WSW": "서남서",
+ "SW": "남서",
+ "W": "서",
"WNW": "서북서",
- "NNW": "북북서"
+ "WSW": "서남서"
}
},
"clock_direction": {
"label": "방향",
"options": {
- "clockwise": "시계 방향",
- "anticlockwise": "시계 반대 방향"
+ "anticlockwise": "시계 반대 방향",
+ "clockwise": "시계 방향"
}
},
"collection_times": {
},
"electrified": {
"label": "전력화",
- "placeholder": "연결로, 전철...",
"options": {
"contact_line": "연결로",
+ "no": "아니오",
"rail": "전철",
- "yes": "예 (지정되지 않음)",
- "no": "아니오"
- }
+ "yes": "예 (지정되지 않음)"
+ },
+ "placeholder": "연결로, 전철..."
},
"elevation": {
"label": "고도"
"label": "유형",
"options": {
"pillar": "기둥/지상",
+ "pond": "연못",
"underground": "지하",
- "wall": "벽",
- "pond": "연못"
+ "wall": "벽"
}
},
"fixme": {
},
"gender": {
"label": "성별",
- "placeholder": "알 수 없음",
"options": {
- "male": "남자",
"female": "여자",
+ "male": "남자",
"unisex": "남녀 공용"
- }
+ },
+ "placeholder": "알 수 없음"
},
"generator/method": {
"label": "방식"
"incline": {
"label": "경사"
},
+ "incline_steps": {
+ "label": "경사",
+ "options": {
+ "down": "내려감",
+ "up": "올라감"
+ }
+ },
"information": {
"label": "유형"
},
"internet_access": {
"label": "인터넷 액세스",
"options": {
- "yes": "예",
"no": "아니오",
- "wlan": "와이파이",
+ "terminal": "단말기",
"wired": "유선",
- "terminal": "단말기"
+ "wlan": "와이파이",
+ "yes": "예"
}
},
"lamp_type": {
"layer": {
"label": "레이어"
},
+ "leaf_cycle": {
+ "label": "잎이 떨어지는 주기",
+ "options": {
+ "deciduous": "낙엽성",
+ "evergreen": "상록수",
+ "mixed": "섞인",
+ "semi_deciduous": "준낙엽성",
+ "semi_evergreen": "반상록"
+ }
+ },
+ "leaf_type": {
+ "label": "잎의 종류",
+ "options": {
+ "broadleaved": "활엽수",
+ "leafless": "잎이 없는",
+ "mixed": "섞인",
+ "needleleaved": "침엽수"
+ }
+ },
"leisure": {
"label": "유형"
},
"placeholder": "40, 50, 60..."
},
"mtb/scale": {
- "label": "산악 자전거 어려움",
+ "label": "산악 자전거 난이도",
+ "options": {
+ "0": "0: 자갈/단단한 흙, 장애물이 없고 커브가 넓음",
+ "1": "1: 약간의 부드러운 표면, 장애물이 약간 있고 커브가 넒음."
+ },
"placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBA 트레일 어려움",
- "placeholder": "쉬움, 중간, 어려움...",
"options": {
"0": "매우 쉬움 (하얀 동그라미)",
"1": "쉬움 (초록 동그라미)",
"2": "중간 (파란 네모)",
"3": "어려움 (검은 마름모)",
"4": "매우 어려움 (두 검은 마름모)"
- }
+ },
+ "placeholder": "쉬움, 중간, 어려움..."
},
"mtb/scale/uphill": {
"label": "산악 자전거 오르막 난이도",
"oneway": {
"label": "일방통행",
"options": {
+ "no": "아니오",
"undefined": "아니오로 간주",
- "yes": "예",
- "no": "아니오"
+ "yes": "예"
}
},
"oneway_yes": {
"label": "일방통행",
"options": {
+ "no": "아니오",
"undefined": "예로 간주",
- "yes": "예",
- "no": "아니오"
+ "yes": "예"
}
},
"opening_hours": {
"parking": {
"label": "유형",
"options": {
- "surface": "노면",
- "garage_boxes": "차고 상자"
+ "garage_boxes": "차고 상자",
+ "lane": "도로변 차선",
+ "surface": "노면"
}
},
"phone": {
},
"piste/difficulty": {
"label": "어려움",
- "placeholder": "초급, 중급, 고급...",
"options": {
- "novice": "새내기 (교육용)",
- "easy": "초급 (초록 동그라미)",
- "intermediate": "중급 (파란 네모)",
"advanced": "고급 (검은 마름모)",
+ "easy": "초급 (초록 동그라미)",
"expert": "숙련자 (두 검은 마름모)",
- "freeride": "프리라이드 (off-piste)"
- }
+ "freeride": "프리라이드 (off-piste)",
+ "intermediate": "중급 (파란 네모)",
+ "novice": "새내기 (교육용)"
+ },
+ "placeholder": "초급, 중급, 고급..."
},
"piste/grooming": {
"options": {
"label": "유형",
"options": {
"ice_skate": "아이스 스케이트",
- "snow_park": "스노우 파크",
- "playground": "놀이터"
+ "playground": "놀이터",
+ "snow_park": "스노우 파크"
}
},
"place": {
"railway": {
"label": "유형"
},
+ "recycling/cans": {
+ "label": "캔류"
+ },
+ "recycling/clothes": {
+ "label": "옷류"
+ },
+ "recycling/glass": {
+ "label": "병류"
+ },
+ "recycling/paper": {
+ "label": "종이류"
+ },
"ref": {
"label": "참고"
},
},
"sac_scale": {
"label": "하이킹 어려움",
- "placeholder": "등산, 알파인 하이킹...",
"options": {
- "hiking": "T1: 하이킹",
- "mountain_hiking": "T2: 등산",
- "demanding_mountain_hiking": "T3: 까다로운 등산",
"alpine_hiking": "T4: 알파인 하이킹",
"demanding_alpine_hiking": "T5: 까다로운 알파인 하이킹",
- "difficult_alpine_hiking": "T6: 어려운 알파인 하이킹"
- }
+ "demanding_mountain_hiking": "T3: 까다로운 등산",
+ "difficult_alpine_hiking": "T6: 어려운 알파인 하이킹",
+ "hiking": "T1: 하이킹",
+ "mountain_hiking": "T2: 등산"
+ },
+ "placeholder": "등산, 알파인 하이킹..."
+ },
+ "seasonal": {
+ "label": "계절 한정"
},
"service": {
"label": "유형"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
+ "label": "체인 공구",
"options": {
+ "no": "아니오",
"undefined": "아니오로 간주",
- "yes": "예",
- "no": "아니오"
+ "yes": "예"
}
},
"service/bicycle/pump": {
+ "label": "공기 펌프",
"options": {
+ "no": "아니오",
"undefined": "아니오로 간주",
- "yes": "예",
- "no": "아니오"
+ "yes": "예"
}
},
"shelter": {
"shop": {
"label": "유형"
},
+ "sloped_curb": {
+ "label": "경사진 커브"
+ },
"smoking": {
"label": "흡연",
- "placeholder": "아니오, 분리됨, 예...",
"options": {
- "no": "이디서든 금연",
- "separated": "흡연 구역이나, 격리되지 않음",
+ "dedicated": "흡연자 전용 (예 흡연자 클럽)",
"isolated": "흡연 구역이고, 격리됨",
+ "no": "이디서든 금연",
"outside": "밖에서 허용",
- "yes": "어디서나 허용",
- "dedicated": "흡연자 전용 (예 흡연자 클럽)"
- }
+ "separated": "흡연 구역이나, 격리되지 않음",
+ "yes": "어디서나 허용"
+ },
+ "placeholder": "아니오, 분리됨, 예..."
+ },
+ "smoothness": {
+ "label": "평활도",
+ "options": {
+ "bad": "견고한 바퀴: 트래킹 자전거, 자동차, 인력거",
+ "excellent": "얇은 롤러: 롤러브레이드, 스케이트보드",
+ "good": "얇은 바퀴: 경주용 자전거",
+ "horrible": "오프로드: heavy duty 오프로드 차종",
+ "impassable": "지나갈 수 없거나 / 안되는 바퀴가 있는 차종",
+ "intermediate": "바퀴: 도시 자전거, 휠체어, 스쿠터",
+ "very_bad": "High Clearance: light duty 오프로드 차종"
+ },
+ "placeholder": "얇은 롤러, 바퀴, 오프로드..."
},
"source": {
"label": "참조 정보"
},
"structure": {
"label": "구조물",
- "placeholder": "알 수 없음",
"options": {
"bridge": "다리",
- "tunnel": "터널",
- "embankment": "둑",
"cutting": "절토",
- "ford": "여울"
- }
+ "embankment": "둑",
+ "ford": "여울",
+ "tunnel": "터널"
+ },
+ "placeholder": "알 수 없음"
},
"studio_type": {
"label": "유형"
},
"takeaway": {
"options": {
- "yes": "예",
- "no": "아니오"
+ "no": "아니오",
+ "yes": "예"
}
},
"toilets/disposal": {
- "label": "처분"
+ "label": "처리장",
+ "options": {
+ "bucket": "양동이",
+ "chemical": "화학식",
+ "flush": "수세식",
+ "pitlatrine": "재래식"
+ }
},
"tourism": {
"label": "유형"
"aerialway/chair_lift": {
"name": "체어 리프트"
},
+ "aerialway/gondola": {
+ "name": "곤돌라"
+ },
"aerialway/magic_carpet": {
"name": "매직 카펫 리프트"
},
"amenity/charging_station": {
"name": "충전소"
},
+ "amenity/childcare": {
+ "name": "보육/육아"
+ },
"amenity/cinema": {
"name": "영화관"
},
"name": "방벽"
},
"barrier/block": {
- "name": "기둥"
+ "name": "벽돌"
},
"barrier/bollard": {
"name": "볼라드"
"building/apartments": {
"name": "아파트먼트"
},
+ "building/bunker": {
+ "name": "벙커"
+ },
"building/college": {
"name": "대학 건물"
},
"building/university": {
"name": "대학교 건물"
},
+ "craft": {
+ "name": "공예"
+ },
+ "craft/brewery": {
+ "name": "주조공",
+ "terms": "양조공"
+ },
+ "craft/carpenter": {
+ "name": "목수"
+ },
+ "craft/electrician": {
+ "name": "전기공"
+ },
+ "craft/gardener": {
+ "name": "정원사"
+ },
+ "craft/handicraft": {
+ "name": "수공예"
+ },
+ "craft/painter": {
+ "name": "화가"
+ },
+ "craft/photographer": {
+ "name": "사진 작가"
+ },
+ "craft/plumber": {
+ "name": "배관공"
+ },
+ "craft/saddler": {
+ "name": "안부"
+ },
+ "craft/shoemaker": {
+ "name": "구두공",
+ "terms": "화공"
+ },
+ "craft/stonemason": {
+ "name": "석공"
+ },
"craft/tailor": {
- "name": "ì\96\91ë³µì \90"
+ "name": "ì\9e¬ë\8b¨ì\82¬"
},
"embankment": {
"name": "둑",
"name": "소화전"
},
"emergency/phone": {
- "name": "긴급 전화"
+ "name": "긴급 전화",
+ "terms": "비상 전화"
},
"entrance": {
"name": "입구/출구"
"name": "여울"
},
"golf/bunker": {
- "name": "샌드 트랩",
- "terms": "모래 함정"
+ "name": "모래 함정",
+ "terms": "샌드 트랩"
},
"golf/fairway": {
"name": "페어웨이"
"name": "사설 차도"
},
"highway/service/emergency_access": {
- "name": "긴급 접근"
+ "name": "긴급 접근",
+ "terms": "비상 접근"
},
"highway/service/parking_aisle": {
"name": "주차장 통로"
"name": "트랙"
},
"highway/traffic_signals": {
- "name": "신호등",
- "terms": "교통 신호"
+ "name": "교통 신호"
},
"highway/trunk": {
"name": "간선 도로"
"historic/wayside_shrine": {
"name": "길가의 신사"
},
+ "junction": {
+ "name": "분기점"
+ },
"landuse": {
"name": "토지 이용"
},
"name": "포도밭"
},
"leisure": {
- "name": "여가"
+ "name": "여가",
+ "terms": "레저,레져"
},
"leisure/common": {
"name": "일반",
"name": "부두"
},
"man_made/pipeline": {
- "name": "파이프 라인",
+ "name": "파이프라인",
"terms": "관로,도관"
},
"man_made/survey_point": {
"name": "회계 사무소"
},
"office/administrative": {
- "name": "행정 사무소",
- "terms": "행정 사무실"
+ "name": "관리 사무소"
},
"office/architect": {
"name": "건축사"
"name": "철도"
},
"railway/abandoned": {
- "name": "폐지된 철도"
+ "name": "버려진 철도"
},
"railway/disused": {
"name": "폐선된 철도"
"shop/alcohol": {
"name": "주류 상점"
},
+ "shop/art": {
+ "name": "미술관",
+ "terms": "아트 갤러리"
+ },
"shop/baby_goods": {
"name": "유아 용품 가게"
},
"shop/convenience": {
"name": "편의점"
},
+ "shop/craft": {
+ "name": "미술 공예 가게"
+ },
"shop/deli": {
"name": "델리"
},
"name": "휴대폰 가게"
},
"shop/motorcycle": {
- "name": "모터사이클 대리점"
+ "name": "모터사이클 대리점",
+ "terms": "오토바이 대리점"
},
"shop/music": {
"name": "음반 가게"
"shop/video": {
"name": "비디오 가게"
},
+ "shop/video_games": {
+ "name": "비디오 게임 가게"
+ },
"shop/water_sports": {
"name": "수상 스포츠/수영 가게"
},
"name": "페리 노선"
},
"type/route/foot": {
- "name": "ë³´ë\8f\84 노선"
+ "name": "ë\8f\84ë³´ 노선"
},
"type/route/hiking": {
"name": "하이킹 노선"
},
"type/route/pipeline": {
- "name": "파이프 라인 노선",
+ "name": "파이프라인 노선",
"terms": "관로 노선;도관 노선"
},
"type/route/power": {
"multiple": "Pašalinta {n} objektų."
},
"incomplete_relation": "Šio objekto negalima panaikinti, nes jis nebuvo pilnai atsiųstas.",
+ "part_of_relation": "Šis objektas negali būti ištrintas, nes jis yra didesnio ryšio dalis. Visų pirma turite jį pašalinti iš ryšio.",
"connected_to_hidden": "Tai negali būti panaikinta, nes yra prijungta prie paslėpto objekto."
},
"add_member": {
"commit": {
"title": "Išsaugoti pakeitimus",
"description_placeholder": "Trumpas jūsų indėlio aprašymas",
- "message_label": "Pakeitimo aprašymas",
"upload_explanation": "Jūsų įkeliami pakeitimai bus matomi visuose žemėlapiuose, naudojančiuose OpenStreetMap duomenis.",
"upload_explanation_with_user": "Pakeitimai, kuriuos jūs įkeliate kaip naudotojas {user} bus matomi visuose žemėlapiuose, naudojančiuose OpenStreetMap duomenis.",
"save": "Išsaugoti",
"title": "Išsaugoti",
"help": "Įrašyti pakeitimus į OpenStreetMap, kad jie būtų matomi kitiems naudotojams.",
"no_changes": "Nėra pakeitimų.",
- "error": "Bandant įrašyti įvyko klaida.",
+ "error": "Bandant įrašyti įvyko klaidos.",
+ "status_code": "Serveris grąžino būsenos kodą {code}",
"unknown_error_details": "Prašome įsitikinti, kad esate prisijungęs prie interneto.",
"uploading": "Pakeitimai įkeliami į OpenStreetMap.",
- "unsaved_changes": "Turite neįrašytų pakeitimų"
+ "unsaved_changes": "Turite neįrašytų pakeitimų",
+ "conflict": {
+ "header": "Sutvarkykite konfliktuojančius pakeitimus",
+ "count": "Konfliktas {num} iš {total}",
+ "previous": "< Ankstesnis",
+ "next": "Kitas >",
+ "keep_local": "Palikti mano",
+ "keep_remote": "Naudoti jų",
+ "restore": "Atstatyti",
+ "delete": "Palikti ištrintus",
+ "download_changes": "Arba atsisiųskite jūsų pakeitimus.",
+ "done": "Visi konfliktai išspręsti!",
+ "help": "Kitas naudotojas pakeitė kai kuriuos žemėlapio objektus, kuriuos ir jūs keitėte. Spauskite kiekvieną žemiau esantį elementą, kad gautumėte daugiau informacijos apie konfliktą ir parinkite ar palikti\njūsų pakeitimus, ar naudoti kito naudotojo pakeitimus.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Šį objektą ištrynė {user}.",
+ "location": "Objektą perkėlėte ir jūs, ir {user}.",
+ "nodelist": "Taškus pakeitėte ir jūs, ir {user}.",
+ "memberlist": "Ryšio narius pakeitėte ir jūs, ir {user}.",
+ "tags": "Jūs pakeitėte <b>{tag}</b> žymą į „{local}“, o {user} pakeitė ją į „{remote}“."
+ }
},
"success": {
"edited_osm": "Pakeitėte OSM!",
"help_html": "Jūsų pakeitimai turėtų pasirodyti „Standartiniame“ sluoksnyje po kelių minučių. Kiti sluoksniai ar konkretūs objektai gali pasirodyti vėliau\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>daugiau informacijos</a>).\n"
},
"confirm": {
- "okay": "Gerai"
+ "okay": "Gerai",
+ "cancel": "Nutraukti"
},
"splash": {
"welcome": "Jus sveikina iD OpenStreetMap redaktorius",
},
"help": {
"title": "Pagalba",
- "help": "# Pagalba\n\nTai yra [OpenStreetMap](http://www.openstreetmap.org/) redaktorius.\nOpenStreetMap - atviras, redaguojamas pasaulio žemėlapis. Galite jį naudoti\nbei keisti duomenis, taip tobulindami atviro kodo ir atvirų duomenų pasaulio\nžemėlapį ir padėdami visiems.\n\nJūsų pakeitimai bus matomi visiems, kas naudoja OpenStreetMap. Norėdami\ndaryti pakeitimus, turėsite susikurti [nemokamą OpenStreetMap paskyrą](https://www.openstreetmap.org/user/new).\n\n[iD redaktorius](http://ideditor.com/) - tai bendruomenės projektas. Programos\nkodas yra atviras, jį galite rasti [GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Help\n\nTai [OpenStreetMap](http://www.openstreetmap.org/), laisvo ir keičiamo pasaulio žemėlapio redaktorius. Šiuo redaktoriumi galite pridėti ir keisti duomenis savo vietovėje, taip visiems pagerindami atviro kodo ir atvirų duomenų pasaulio žemėlapį.\n\nPakeitimai, kuriuos darote šiame žemėlapyje bus matomi visiems, kas naudoja OpenStreetMap. Kad padarytumėte pakeitimą, jums reikia [prisijungti](https://www.openstreetmap.org/login).\n\n[iD redaktorius](http://ideditor.com/) - tai bendruomenės projektas, kurio [kodas atvirai prieinamas GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Keitimas ir įrašymas\n\nŠis redaktorius sukurtas visų pirma darbui prisijungus, todėl jūs jį paleidžiate per svetainę.\n\n### Objektų žymėjimas\n\nNorėdami pažymėti objektą, tokį kaip kelią ar lankytiną vietą, pažymėkite jį žemėlapyje. Taip pažymėtas objektus bus paryškintas ir bus atidaryta panelė su objekto informacija bei meniu veiksmų, kuriuos galite atlikti su pažymėtu objektu.\n\nNorėdami pažymėti kelis objektus, laikykite paspaudę klavišą „Shift“. Tada arba spauskite ant kitų objektų, kuriuos norite pažymėti, arba tempkite pele per žemėlapį, kad nupaišytumėte stačiakampį.\nTaip bus pažymėti visi taškai, esantys stačiakampio viduje.\n\n### Pakeitimų įrašymas\n\nKai padarote tarkim kelių, pastatų ar vietovių pakeitimų, jie saugomi vietoje tol, kol jūs neįrašote jų į serverį. Nesijaudinkite jei padarote klaidą, visada galite atstatyti pakeitimus su atstatymo mygtuku ir pakartotinai juos padaryti paspaudę pakartojimo mygtuką.\n\nSpauskite mygtuką „Įrašyti“, jei norite įrašyti grupę pakeitimų, pavyzdžiui jei baigėte vienos vietos pakeitimus ir dabar norėtumėte pradėti keisti kitoje vietoje. Galėsite peržiūrėti, ką padarėte, o redaktorius pateiks naudingus patarimus ar įspėjimus, jei kažkas atrodo ne visai teisingai.\n\nJei viskas gerai, galite įvesti trumpą komentarą, paaiškinantį jūsų pakeitimus ir tada vėl spausti „Įrašyti“, kad įkeltumėte pakeitimus į\n[OpenStreetMap.org](http://www.openstreetmap.org/), kur visi kiti naudotojai juos matys ir galės toliau tobulinti.\n\nJei negalite baigti savo pakeitimų vienu prisėdimu, galite palikti redaktoriaus langą ir grįžti vėliau (toje pačioje naršyklėje ir tame pačiame kompiuteryje), redaktorius jums pasiūlys tęsti jūsų darbą.\n",
"roads": "# Keliai\n\nJūs galite kurti, taisyti ir naikinti kelius redaktoriaus pagalba. Keliai gali būti įvairių\ntipų: takai, vieškeliai, maršrutai, dviračių takai ir daug kitų, dažnai susikertančių,\njuos visus galima pažymėti.\n\n### Parinkimas\n\nNorėdami parinkti kelią - spauskite ant jo. Kelio kontūras bus paryškintas, taipogi\nbus rodomas mažas įrankių meniu ir šonine skiltimi, rodančia daugiau informacijos\napie kelią.\n\n### Keitimas\n\nDažnai pastebėsite kelius, kurių pozicija neatitinka fone esančios ortofotonuotraukos arba\njūsų GPS pėdsako. Galie pataisyti kelio poziciją, kad kelias būtų teisingoje vietoje.\n\nVisų pirma spauskite ant kelio, kurį norite keisti. Kelias bus paryškintas ir bus matomi\nkontroliniai taškai, kuriuos jūs galite pertempti į teisingesnes pozicijas. Jei norite pridėti\npapildomų kontrolinių taškų - du kartus spauskite ant kelio segmento, kuriame\ndar nėra taško - bus pridėtas naujas taškas.\n\nJei kelias jungiasi su kitu keliu, bet nėra teisingai sujungtas žemėlapyje, jūs galite\ntempti vieną iš kelio kontrolinių taškų ant kito kelio, kad juos sujungtumėte. Labai\nsvarbu teisingai sujungti kelius, nes tai naudojama maršrutizavimui.\n\nTaipogi galite naudoti įrankį „Perkelti“ arba spausti mygtuką „M“, jei norite perkelti\nvisą kelią iš karto, tada vėl spauskite „M“, kad patvirtintumėte perkėlimą.\n\n### Naikinimas\n\nJei kelias yra visiškai neteisingas - jūs matote, kad tokio kelio apskritai nėra ortofoto\nir jūs žinote, kad jo ir realybėje nėra - galite kelią ištrinti, kad jo nebeliktų žemėlapyje.\nNaikindami objektus būkite atidūs, kaip ir bet kuris kitas keitimas, naikinimas matomas\nvisiems naudotojams, o ortofotografijos dažnai būna pasenusios, tagi naujai\nnutiestas kelias gali būti tiesiog nematomas.\n\nKelią galite panaikinti pažymėję jį ir paspaudę šiukšlių dėžės piktogramą arba\npaspaudę mygtuką „Trinti“.\n\n### Kūrimas\n\nRadote vietą, kur turėtų būti kelias, bet jo nėra? Spauskite mygtuką „Linija“\narba klavišą „2“, kad pradėtumėte linijos piešimą.\n\nSpauskite žemėlapyje ant vietos, kur turi prasidėti jūsų kelias. Jeigu kelias atsišakoja\nnuo jau esamo kelio - pradėkite naujo kelio piešimą paspaudę ant atsišakojimo vietos.\n\nTada dėliokite kelio taškus taip, kad jo kontūras maksimaliai atitiktų realų kelią pagal\npalydovinę nuotrauką ar GPS pėdsakus. Jei jūsų piešiamas kelias kerta kitą kelią,\nsujunkite juos spaudžiant ties susikirtimo tašku. Kai baigsite braižyti, du kartus\nspauskite pele arba spauskite klaviatūros mygtuką „Enter“.\n",
"gps": "# GPS\n\nGPS duomenys - patikimiausias duomenų šaltinis atvirame žemėlapyje. Šis redaktorius palaiko vietinius pėdsakus - „.gpx“ failus jūsų kompiuteryje. Jūs galite surinkti tokius GPS pėdsakus eile išmaniųjų telefonų aplikacijų arba asmenine GPS įranga.\n\nDaugiau informacijos apie tai, kaip daryti GPS apžiūrą rasite [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nNorint panaudoti GPX pėdsaką žymėjimui, atitempkite GPX failą ant žemėlapio. Jei jis bus atpažintas - pamatysite jį žemėlapyje kaip ryškią purpurinę liniją. Spauskite dešinėje esantį meniu „Žemėlapio duomenys“, norėdami įjungti, išjungti ar priartinti šį naują GPX valdomą sluoksnį.\n\nGPX pėdsakas nekeliamas tiesiogiai į OpenStreetMap - geriausias naudojimo būdas - naudoti pėdsaką kaip orientyrą braižant naujus žemėlapio objektus. Vėliau pėdsaką patartina įkelti, kad jį galėtų naudoti kiti braižytojai [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create).\n",
"fields": {
"access": {
"label": "Prieiga",
- "placeholder": "Nežinoma",
- "types": {
- "access": "Bendra",
- "foot": "Pėstieji",
- "motor_vehicle": "Motorinis transportas",
- "bicycle": "Dviračiai",
- "horse": "Arkliai"
- },
"options": {
- "yes": {
- "title": "Leidžiamas",
- "description": "Priėjimas leidžiamas įstatymų; pirmumo teisė"
+ "designated": {
+ "description": "Priėjimas galimas remiantis ženklais ir savitais vietos įstatymais",
+ "title": "Skirtas"
+ },
+ "destination": {
+ "description": "Priėjimas leistinas tik atvykti į tikslą",
+ "title": "Tikslinis"
},
"no": {
- "title": "Draudžiamas",
- "description": "Priėjimas draudžiamas plačiajai visuomenei"
+ "description": "Priėjimas draudžiamas plačiajai visuomenei",
+ "title": "Draudžiamas"
},
"permissive": {
- "title": "Leistinas",
- "description": "Priėjimas leistinas, kai savininkas konkrečiu laiku panaikina draudimą"
+ "description": "Priėjimas leistinas, kai savininkas konkrečiu laiku panaikina draudimą",
+ "title": "Leistinas"
},
"private": {
- "title": "Privatus",
- "description": "Priėjimas leistinas tik su savininko leidimu"
- },
- "designated": {
- "title": "Skirtas",
- "description": "Priėjimas galimas remiantis ženklais ir savitais vietos įstatymais"
+ "description": "Priėjimas leistinas tik su savininko leidimu",
+ "title": "Privatus"
},
- "destination": {
- "title": "Tikslinis",
- "description": "Priėjimas leistinas tik atvykti į tikslą"
+ "yes": {
+ "description": "Priėjimas leidžiamas įstatymų; pirmumo teisė",
+ "title": "Leidžiamas"
}
+ },
+ "placeholder": "Nežinoma",
+ "types": {
+ "access": "Bendra",
+ "bicycle": "Dviračiai",
+ "foot": "Pėstieji",
+ "horse": "Arkliai",
+ "motor_vehicle": "Motorinis transportas"
}
},
"access_simple": {
"address": {
"label": "Adresas",
"placeholders": {
+ "city": "Miestas",
+ "country": "Valstybė",
+ "district": "Rajonas",
+ "hamlet": "Viensėdis",
"housename": "Namo pavadinimas",
"housenumber": "123",
- "street": "Gatvė",
- "city": "Miestas",
+ "place": "Vietovė",
"postcode": "Pašto kodas",
- "place": "Vieta",
- "hamlet": "Kaimelis",
- "suburb": "Priemiestis",
- "subdistrict": "Seniūnija",
- "district": "Rajonas",
"province": "Provincija",
"state": "Valstija",
- "country": "Valstybė"
+ "street": "Gatvė",
+ "subdistrict": "Seniūnija",
+ "suburb": "Priemiestis"
}
},
"admin_level": {
"aerialway/access": {
"label": "Prieiga",
"options": {
+ "both": "Abu",
"entry": "Įėjimas",
- "exit": "Išėjimas",
- "both": "Abu"
+ "exit": "Išėjimas"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Prieiga (vasarai)",
"options": {
+ "both": "Abu",
"entry": "Įėjimas",
- "exit": "Išėjimas",
- "both": "Abu"
+ "exit": "Išėjimas"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Kryptis",
"options": {
- "N": "Šiaurė",
"E": "Rytai",
- "S": "Pietūs",
- "W": "Vakarai",
- "NE": "Šiaurės rytai",
- "SE": "Pietryčiai",
- "SW": "Pietvakariai",
- "NW": "Šiaurės vakarai",
- "NNE": "Šiaurės-šiaurės rytų",
"ENE": "Rytų-šiaurės rytų",
"ESE": "Rytų-pietryčių",
+ "N": "Šiaurė",
+ "NE": "Šiaurės rytai",
+ "NNE": "Šiaurės-šiaurės rytų",
+ "NNW": "Šiaurės-šiaurės vakarų",
+ "NW": "Šiaurės vakarai",
+ "S": "Pietūs",
+ "SE": "Pietryčiai",
"SSE": "Pietų-pietryčių",
"SSW": "Pietų-pietvakarių",
- "WSW": "Vakarų-pietvakarių",
+ "SW": "Pietvakariai",
+ "W": "Vakarai",
"WNW": "Vakarų-šiaurės vakarų",
- "NNW": "Šiaurės-šiaurės vakarų"
+ "WSW": "Vakarų-pietvakarių"
}
},
"clock_direction": {
"label": "Kryptis",
"options": {
- "clockwise": "Pagal laikrodžio rodyklę",
- "anticlockwise": "Prieš laikrodžio rodyklę"
+ "anticlockwise": "Prieš laikrodžio rodyklę",
+ "clockwise": "Pagal laikrodžio rodyklę"
}
},
"collection_times": {
"description": {
"label": "Aprašymas"
},
+ "drive_through": {
+ "label": "Pravažiavimas"
+ },
"electrified": {
"label": "Elektrifikacija",
- "placeholder": "Kontaktinė linija, elektrifikuoti bėgiai...",
"options": {
"contact_line": "Kontaktinė linija",
+ "no": "Ne",
"rail": "Elektrifikuoti bėgiai",
- "yes": "Taip (nepatikslinta)",
- "no": "Ne"
- }
+ "yes": "Taip (nepatikslinta)"
+ },
+ "placeholder": "Kontaktinė linija, elektrifikuoti bėgiai..."
},
"elevation": {
"label": "Aukštis"
"fire_hydrant/type": {
"label": "Tipas",
"options": {
+ "pillar": "Kolona/antžeminė",
+ "pond": "Kūdra",
"underground": "Požeminis",
- "wall": "Siena",
- "pond": "Kūdra"
+ "wall": "Siena"
}
},
"fixme": {
},
"gender": {
"label": "Lytis",
- "placeholder": "Nežinoma",
"options": {
+ "female": "Moteris",
"male": "Vyras",
- "female": "Moteris"
- }
+ "unisex": "Abiejų lyčių"
+ },
+ "placeholder": "Nežinoma"
},
"generator/method": {
"label": "Metodas"
"placeholder": "Duobutės numeris (1-18)"
},
"handicap": {
+ "label": "Neįgaliesiems",
"placeholder": "1-18"
},
"highway": {
"label": "Ratlankiai",
"placeholder": "1, 2, 4..."
},
+ "iata": {
+ "label": "IATA"
+ },
+ "icao": {
+ "label": "ICAO"
+ },
"incline": {
"label": "Nuolydis"
},
+ "incline_steps": {
+ "label": "Įkalnė",
+ "options": {
+ "down": "Žemyn",
+ "up": "Aukštyn"
+ }
+ },
"information": {
"label": "Tipas"
},
"internet_access": {
"label": "Interneto prieiga",
"options": {
- "yes": "Taip",
"no": "Ne",
- "wlan": "Belaidis internetas",
+ "terminal": "Terminalas",
"wired": "Laidinis internetas",
- "terminal": "Terminalas"
+ "wlan": "Belaidis internetas",
+ "yes": "Taip"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Lapų ciklas",
"options": {
- "evergreen": "Amžinai žaliuojantis",
"deciduous": "Nukrintantis",
- "semi_evergreen": "Pusiau-amžinai žaliuojantis",
+ "evergreen": "Amžinai žaliuojantis",
+ "mixed": "Mišrus",
"semi_deciduous": "Pusiau-nukrentantis",
- "mixed": "Mišrus"
+ "semi_evergreen": "Pusiau-amžinai žaliuojantis"
}
},
"leaf_type": {
"label": "Lapų tipas",
"options": {
"broadleaved": "Plačialapiai",
- "needleleaved": "Spygliuočiai",
+ "leafless": "Belapiai",
"mixed": "Mišrūs",
- "leafless": "Belapiai"
+ "needleleaved": "Spygliuočiai"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Sudėtingumas kalnų dviračiais",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Kietas žvyrius/suspaustos žemės, jokių kliūčių, platūs vingiai",
- "1": "1: Šiek tiek pairusi danga , mažos kliūtys, platūs vingiai"
- }
+ "1": "1: Šiek tiek pairusi danga , mažos kliūtys, platūs vingiai",
+ "2": "2: Daug netvirto paviršiaus, didelės kliūtys, lengvi posūkiai",
+ "3": "3: Slidus paviršius, didelės kliūtys, siauri posūkiai",
+ "4": "4: Netvirtas paviršius ar rieduliai, pavojingi posūkiai",
+ "5": "5: Didžiausias sudėtingumas, riedulių laukai, nuošliaužos",
+ "6": "6: Pravažiuojama tik patiems geriausiems kalnų dviratininkams"
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "IMBA maršruto sudėtingumas",
- "placeholder": "Lengvas, vidutinis, sunkus...",
"options": {
"0": "Lengviausias (baltas apskritimas)",
"1": "Lengvas (žalias apskritimas)",
"2": "Vidutinis (mėlynas apskritimas)",
"3": "Sunkus (juodas rombas)",
"4": "Ypač sunkus (dvigubas juodas rombas)"
- }
+ },
+ "placeholder": "Lengvas, vidutinis, sunkus..."
},
"mtb/scale/uphill": {
"label": "Kalnų dviračių sudėtingumas",
+ "options": {
+ "0": "0: Vid. kilimas <10%, gruntas, suspausta žemė, be kliūčių",
+ "1": "1. Vid. kilimas <15%, gruntas, suspausta žemė, keli smulkūs objektai",
+ "2": "2. Vid. kilimas <20%, stabilus paviršius, kumščio dydžio akmenys/šaknys",
+ "3": "3: Vid. kilimas <25%, kintantis paviršius, kumščio dydžio akmenys/šaknys",
+ "4": "4: Vid. įkalnė <30%, prastos būklės, dideli akmenys/šaknys",
+ "5": "5: Labai status, dviratį pagrinde reikia stumti arba nešti"
+ },
"placeholder": "0, 1, 2, 3..."
},
"name": {
"oneway": {
"label": "Vienpusis eismas",
"options": {
+ "no": "Ne",
"undefined": "Numatytai, kad Ne",
- "yes": "Taip",
- "no": "Ne"
+ "yes": "Taip"
}
},
"oneway_yes": {
"label": "Vienpusis eismas",
"options": {
+ "no": "Ne",
"undefined": "Numatytai, kad Taip",
- "yes": "Taip",
- "no": "Ne"
+ "yes": "Taip"
}
},
"opening_hours": {
"label": "Operatorius"
},
"par": {
+ "label": "Par",
"placeholder": "3, 4, 5..."
},
"park_ride": {
"parking": {
"label": "Tipas",
"options": {
+ "carports": "Stoginės",
+ "garage_boxes": "Garažai",
+ "lane": "Kelkraštis",
+ "multi-storey": "Daugiaaukštis",
+ "sheds": "Pašiūrės",
"surface": "Danga",
- "underground": "Požeminis",
- "sheds": "Pašiūrės"
+ "underground": "Požeminis"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Sudėtingumas",
- "placeholder": "Lengvas, vidutinis, sudėtingas...",
"options": {
- "novice": "Naujokams (instrukcijos)",
- "easy": "Lengvas (žalias žiedas)",
- "intermediate": "Vidutinis (mėlynas kvadratas)",
"advanced": "Sudėtingas (juodas deimantas)",
+ "easy": "Lengvas (žalias žiedas)",
"expert": "Eksperto (dvigubas juodas deimantas)",
- "extreme": "Ekstremalus (būtina kopimo įranga)"
- }
+ "extreme": "Ekstremalus (būtina kopimo įranga)",
+ "freeride": "Laisvas (ne maršrutu)",
+ "intermediate": "Vidutinis (mėlynas kvadratas)",
+ "novice": "Naujokams (instrukcijos)"
+ },
+ "placeholder": "Lengvas, vidutinis, sudėtingas..."
},
"piste/grooming": {
+ "label": "Priežiūra",
"options": {
"classic": "Klasikinis",
"skating": "Čiuožimas"
"piste/type": {
"label": "Tipas",
"options": {
- "snow_park": "Sniego parkas",
- "playground": "Vaikų žaidimų aikštelė"
+ "hike": "Žygis",
+ "ice_skate": "Ledo čiuožimas",
+ "playground": "Vaikų žaidimų aikštelė",
+ "sled": "Rogės",
+ "snow_park": "Sniego parkas"
}
},
"place": {
"route_master": {
"label": "Tipas"
},
+ "sac_scale": {
+ "label": "Žygio sudėtingumas",
+ "options": {
+ "alpine_hiking": "T4: Alpių žygiai",
+ "demanding_alpine_hiking": "T5: Varginantys alpių žygiai",
+ "demanding_mountain_hiking": "T3: Varginantys kalnų žygiai",
+ "difficult_alpine_hiking": "T6: Sudėtingi alpių žygiai",
+ "hiking": "T1: Žygiai",
+ "mountain_hiking": "T2: Kalnų žygiai"
+ },
+ "placeholder": "Kalnų žygiai, Alpių žygiai..."
+ },
"seasonal": {
"label": "Sezoninis"
},
"service": {
"label": "Tipas"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"options": {
- "undefined": "Manoma, kad Ne",
- "yes": "Taip",
- "no": "Ne"
+ "no": "Ne",
+ "undefined": "Numatytai, kad Ne",
+ "yes": "Taip"
}
},
"service/bicycle/pump": {
"label": "Oro pompa",
"options": {
+ "no": "Ne",
"undefined": "Manoma, kad Ne",
- "yes": "Taip",
- "no": "Ne"
+ "yes": "Taip"
+ }
+ },
+ "service_rail": {
+ "label": "Tarnybos tipas",
+ "options": {
+ "siding": "Atsarginis kelias",
+ "spur": "Atšaka",
+ "yard": "Kiemas"
}
},
"shelter": {
},
"smoking": {
"label": "Rūkymas",
- "placeholder": "Ne, Atskirta, Taip...",
"options": {
- "no": "Draudžiama rūkyti",
- "separated": "Rūkymo vietose, neizoliuota fiziškai",
+ "dedicated": "Skirta rūkantiems (pvz.: rūkančiųjų klubas)",
"isolated": "Rūkymo vietose, fiziškai izoliuota",
+ "no": "Draudžiama rūkyti",
"outside": "Leidžiama lauke",
- "yes": "Leidžiama visur",
- "dedicated": "Skirta rūkantiems (pvz.: rūkančiųjų klubas)"
- }
+ "separated": "Rūkymo vietose, neizoliuota fiziškai",
+ "yes": "Leidžiama visur"
+ },
+ "placeholder": "Ne, Atskirta, Taip..."
},
"smoothness": {
- "label": "Tikslumas"
+ "label": "Tikslumas",
+ "options": {
+ "impassable": "Nepravažiuojama / jokiam ratuotam transportui"
+ }
},
"social_facility_for": {
"label": "Aptarnaujama žmonių",
},
"structure": {
"label": "Struktūra",
- "placeholder": "Nežinoma",
"options": {
"bridge": "Tiltas",
- "tunnel": "Tunelis",
- "ford": "Brasta"
- }
+ "embankment": "Pylimas",
+ "ford": "Brasta",
+ "tunnel": "Tunelis"
+ },
+ "placeholder": "Nežinoma"
},
"studio_type": {
"label": "Tipas"
},
"takeaway": {
"label": "Išsinešimui",
- "placeholder": "Taip, ne, tik išsinešimui...",
"options": {
- "yes": "Taip",
"no": "Ne",
- "only": "Tik išsinešimui"
- }
+ "only": "Tik išsinešimui",
+ "yes": "Taip"
+ },
+ "placeholder": "Taip, ne, tik išsinešimui..."
},
"tourism": {
"label": "Tipas"
},
"trail_visibility": {
"label": "Maršruto matomumas",
- "placeholder": "Puikus, Geras, Prastas...",
"options": {
+ "bad": "Blogai: nėra žymų, kelio kartais nėra ar jis nesimato",
"excellent": "Puiku: nedviprasmiškas kelias arba žymės visur",
"good": "Gerai: žymės matomos, kartais reikia paieškoti",
- "intermediate": "Vidutiniškai: šiek tiek žymų, kelias daugiausia matomas",
- "bad": "Blogai: nėra žymų, kelio kartais nėra ar jis nesimato",
"horrible": "Tragiškai: dažnų atkarpų nėra, reikia orientavimosi sugebėjimų",
+ "intermediate": "Vidutiniškai: šiek tiek žymų, kelias daugiausia matomas",
"no": "Nėra: nėra kelio, reikia puikių orientavimosi sugebėjimų"
- }
+ },
+ "placeholder": "Puikus, Geras, Prastas..."
},
"trees": {
"label": "Medžiai"
"label": "Tipas"
},
"wheelchair": {
- "label": "Važimėlio prieiga"
+ "label": "Prieiga vežimėliu"
},
"width": {
"label": "Plotis (Metrais)"
"name": "Oro transporto kelias",
"terms": "pakilimo takas,lėktuvų privažiavimas"
},
+ "aerialway/cable_car": {
+ "name": "Funikulierius",
+ "terms": "funikulierius,keltuvas"
+ },
"aerialway/gondola": {
"name": "Gondola",
"terms": "Gondola"
"terms": "dujų stotis"
},
"amenity/grave_yard": {
- "name": "Kapinės",
+ "name": "Kapinės prie bažnyčios",
"terms": "Kapinės,Kapai"
},
"amenity/grit_bin": {
"terms": "kelionių agentūra"
},
"place": {
- "name": "Vieta",
+ "name": "Vietovė",
"terms": "gyvenvietė,vietovė"
},
"place/city": {
"terms": "didmiestis"
},
"place/hamlet": {
- "name": "Kaimelis",
- "terms": "viensėdis"
+ "name": "Viensėdis",
+ "terms": "viensėdis,kaimelis"
},
"place/island": {
"name": "Sala",
"commit": {
"title": "Saglabāt izmaiņas",
"description_placeholder": "Īss apraksts par jūsu ieguldījumu",
- "message_label": "Izmaiņu apraksts",
"save": "Saglabāt",
"cancel": "Atcelt",
"warnings": "Brīdinājumi",
"title": "Saglabāt",
"help": "Saglabā izmaiņas, padarot tās redzamas citiem.",
"no_changes": "Nav izmaiņu, ko saglabāt.",
- "error": "Kļūda. Nevarēja saglabāt izmaiņas",
"uploading": "Augšupielādē izmaiņas",
"unsaved_changes": "Jums ir nesaglabātas izmaiņas"
},
"fields": {
"access": {
"label": "Piekļuve",
- "types": {
- "access": "Vispārīgs",
- "foot": "Kājām",
- "motor_vehicle": "Automašīnas",
- "bicycle": "Velosipēdi",
- "horse": "Zirgi"
- },
"options": {
- "yes": {
- "title": "Atļauts",
- "description": "Piekļuve atļauta ar likumu"
+ "designated": {
+ "description": "Piekļuve atļauta atbilstoši zīmēm vai speciāliem vietējiem likumiem",
+ "title": "Nozīmēts"
+ },
+ "destination": {
+ "title": "Galamērķis"
},
"no": {
- "title": "Aizliegts",
- "description": "Piekļuve nav atļauta bez speciālā atļaujām "
+ "description": "Piekļuve nav atļauta bez speciālā atļaujām ",
+ "title": "Aizliegts"
},
"permissive": {
"description": "Piekļuve atļauta līdz īpašnieks atsauc atļauju"
},
"private": {
- "title": "Privāts",
- "description": "Piekļuve atļauta tikai ar īpašnieka atļauju"
+ "description": "Piekļuve atļauta tikai ar īpašnieka atļauju",
+ "title": "Privāts"
},
- "designated": {
- "title": "Nozīmēts",
- "description": "Piekļuve atļauta atbilstoši zīmēm vai speciāliem vietējiem likumiem"
- },
- "destination": {
- "title": "Galamērķis"
+ "yes": {
+ "description": "Piekļuve atļauta ar likumu",
+ "title": "Atļauts"
}
+ },
+ "types": {
+ "access": "Vispārīgs",
+ "bicycle": "Velosipēdi",
+ "foot": "Kājām",
+ "horse": "Zirgi",
+ "motor_vehicle": "Automašīnas"
}
},
"address": {
"label": "Adrese",
"placeholders": {
- "street": "Iela",
- "city": "Pilsēta"
+ "city": "Pilsēta",
+ "street": "Iela"
}
},
"aeroway": {
"internet_access": {
"label": "Interneta piekļuve",
"options": {
- "wlan": "Bezvadu internets",
+ "terminal": "Termināls",
"wired": "Kabeļinternets",
- "terminal": "Termināls"
+ "wlan": "Bezvadu internets"
}
},
"landuse": {
"label": "Objekts",
"options": {
"bridge": "Tilts",
- "tunnel": "Tunelis",
+ "cutting": "Izgriezums",
"embankment": "Krastmala",
- "cutting": "Izgriezums"
+ "tunnel": "Tunelis"
}
},
"surface": {
"modes": {
"add_area": {
"title": "Vlak",
- "description": "Voeg parken, gebouwen, meren of andere vlakken aan de kaart toe.",
+ "description": "Voeg parken, gebouwen, meren of andere vlakken toe aan de kaart.",
"tail": "Klik in de kaart om een vlak te beginnen tekenen, zoals een meer, park of gebouw."
},
"add_line": {
"description": "Verschuif de kaart en zoom in of uit."
},
"draw_area": {
- "tail": "Klik om knooppunten aan het vlak toe te voegen. Klik op het eerste knooppunt om het vlak te sluiten."
+ "tail": "Klik om knooppunten aan het vlak toe te voegen. Klik wanneer je klaar bent op het eerste knooppunt om het vlak te sluiten."
},
"draw_line": {
"tail": "Klik om meer knooppunten aan de lijn toe te voegen. Klik op een andere lijn om er een verbinding te maken en dubbelklik om de lijn af te sluiten."
"annotation": "Tekenen afgebroken."
},
"change_role": {
- "annotation": "De rol van een lid van de relatie is gewijzigd."
+ "annotation": "Rol van relatielid gewijzigd."
},
"change_tags": {
"annotation": "Tags aangepast."
},
"circularize": {
- "title": "Rond maken",
+ "title": "Maak rond",
"description": {
"line": "Maak deze lijn rond.",
"area": "Maak dit vlak rond."
},
"key": "O",
"annotation": {
- "line": "Lijn rond gemaakt.",
- "area": "Vlak rond gemaakt."
+ "line": "Lijn rondgemaakt.",
+ "area": "Vlak rondgemaakt."
},
- "not_closed": "Dit kan niet rond gemaakt worden omdat het geen lus is.",
- "too_large": "Dit kan niet rond gemaakt worden omdat slechts een te klein deel ervan momenteel zichtbaar is.",
- "connected_to_hidden": "Dit kan niet rond gemaakt worden omdat het verbonden is met een verborgen object."
+ "not_closed": "Dit kan niet rondgemaakt worden omdat het geen lus is.",
+ "too_large": "Dit kan niet rondgemaakt worden omdat slechts een te klein deel ervan momenteel zichtbaar is.",
+ "connected_to_hidden": "Dit kan niet rondgemaakt worden omdat het verbonden is met een verborgen object."
},
"orthogonalize": {
- "title": "Vierkant maken",
+ "title": "Maak vierkant",
"description": {
"line": "Maak de hoeken van deze lijn haaks.",
"area": "Maak de hoeken van dit vlak haaks."
},
"key": "S",
"annotation": {
- "line": "Hoeken van een lijn haaks gemaakt.",
- "area": "Hoeken van een vlak haaks gemaakt."
+ "line": "Hoeken van lijn haaks gemaakt.",
+ "area": "Hoeken van vlak haaks gemaakt."
},
"not_squarish": "Dit kan niet vierkant gemaakt worden omdat het niet vierkantig is.",
"too_large": "Dit kan niet vierkant gemaakt worden omdat slechts een te klein deel ervan momenteel zichtbaar is.",
"connected_to_hidden": "Dit kan niet vierkant gemaakt worden omdat het verbonden is met een verborgen object."
},
"straighten": {
- "title": "Rechttrekken",
+ "title": "Maak recht",
"description": "Trek deze lijn recht.",
"key": "S",
- "annotation": "Een lijn is rechtgetrokken.",
+ "annotation": "Lijn rechtgetrokken.",
"too_bendy": "Dit kan niet rechtgetrokken worden omdat het te veel kromt.",
- "connected_to_hidden": "Deze lijn kan niet recht worden gemaakt omdat ze is verbonden met een verborgen object."
+ "connected_to_hidden": "Deze lijn kan niet recht worden gemaakt omdat ze verbonden is met een verborgen object."
},
"delete": {
- "title": "Verwijderen",
- "description": "Verwijder object permanent.",
+ "title": "Verwijder",
+ "description": "Verwijder object voorgoed.",
"annotation": {
"point": "Punt verwijderd.",
- "vertex": "Knoop uit een weg verwijderd.",
+ "vertex": "Knoop weggehaald uit weg.",
"line": "Lijn verwijderd.",
"area": "Vlak verwijderd.",
"relation": "Relatie verwijderd.",
"multiple": "{n} objecten verwijderd."
},
- "incomplete_relation": "Dit object kan niet verwijderd worden omdat het niet volledig is gedownload.",
+ "incomplete_relation": "Dit object kan niet verwijderd worden omdat het niet volledig gedownload is.",
+ "part_of_relation": "Dit object kan niet verwijderd worden omdat het deel uitmaakt van een grotere relatie. Je moet het eerst uit de relatie verwijderen.",
"connected_to_hidden": "Dit kan niet verwijderd worden omdat het verbonden is met een verborgen object."
},
"add_member": {
},
"connect": {
"annotation": {
- "point": "Weg aan een punt verbonden.",
- "vertex": "Weg aan een andere weg verbonden.",
- "line": "Weg aan een lijn verbonden.",
- "area": "Weg aan een vlak verbonden."
+ "point": "Weg aan punt verbonden.",
+ "vertex": "Weg aan andere weg verbonden.",
+ "line": "Weg aan lijn verbonden.",
+ "area": "Weg aan vlak verbonden."
}
},
"disconnect": {
- "title": "Losmaken",
+ "title": "Maak los",
"description": "Maak deze lijnen/vlakken van elkaar los.",
"key": "D",
"annotation": "Lijnen/vlakken losgemaakt.",
"connected_to_hidden": "Dit kan niet losgemaakt worden omdat het verbonden is met een verborgen object."
},
"merge": {
- "title": "Samenvoegen",
+ "title": "Voeg samen",
"description": "Voeg deze lijnen samen.",
"key": "C",
"annotation": "{n} lijnen samengevoegd.",
"not_eligible": "Deze objecten kunnen niet worden samengevoegd.",
- "not_adjacent": "Deze lijnen kunnen niet samengevoegd worden omdat ze niet zijn verbonden.",
+ "not_adjacent": "Deze lijnen kunnen niet samengevoegd worden omdat ze niet verbonden zijn.",
"restriction": "De lijnen kunnen niet samengevoegd worden, omdat minstens één ervan onderdeel uitmaakt van een \"{relation}\"-relatie.",
- "incomplete_relation": "Deze objecten kunnen niet worden samengevoegd omdat minstens één ervan niet volledig is gedownload."
+ "incomplete_relation": "Deze objecten kunnen niet samengevoegd worden omdat minstens één ervan niet volledig gedownload is."
},
"move": {
- "title": "Verschuiven",
+ "title": "Verschuif",
"description": "Verschuif dit object naar een andere plek.",
"key": "M",
"annotation": {
"point": "Punt verschoven.",
- "vertex": "Knoop van een weg verschoven.",
+ "vertex": "Knooppunt van een weg verschoven.",
"line": "Lijn verschoven.",
"area": "Vlak verschoven.",
"multiple": "Meerdere objecten verschoven."
},
- "incomplete_relation": "Dit object kan niet worden verplaatst omdat het niet volledig is gedownload.",
- "too_large": "Dit kan niet worden verplaatst omdat slechts een te klein deel ervan momenteel zichtbaar is.",
+ "incomplete_relation": "Dit object kan niet verplaatst worden omdat het niet volledig gedownload is.",
+ "too_large": "Dit kan niet verplaatst worden omdat slechts een te klein deel ervan momenteel zichtbaar is.",
"connected_to_hidden": "Dit kan niet verplaatst worden omdat het verbonden is met een verborgen object."
},
"rotate": {
- "title": "Draaien",
+ "title": "Draai",
"description": "Draai dit object rond zijn middelpunt.",
"key": "R",
"annotation": {
"line": "Lijn gedraaid.",
"area": "Vlak gedraaid."
},
- "too_large": "Dit kan niet gedraaid worden omdat slechts een klein deel ervan momenteel zichtbaar is.",
+ "too_large": "Dit kan niet gedraaid worden omdat slechts een te klein deel ervan momenteel zichtbaar is.",
"connected_to_hidden": "Dit kan niet gedraaid worden omdat het verbonden is met een verborgen object."
},
"reverse": {
- "title": "Omdraaien",
+ "title": "Keer om",
"description": "Draai de richting van deze lijn om.",
"key": "V",
"annotation": "Lijnrichting omgedraaid."
},
"split": {
- "title": "Splitsen",
+ "title": "Splits",
"description": {
"line": "Splits deze lijn op dit knooppunt.",
- "area": "Splits de grens van dit gebied in tweeën.",
+ "area": "Splits de grens van dit gebied in tweeën. (Maakt multipolygon aan.)",
"multiple": "Splits de lijnen/grenzen van het vlak op dit knooppunt in tweeën."
},
"key": "X",
"area": "Grens van een vlak gesplitst.",
"multiple": "{n} lijnen/grenzen van vlakken gesplitst."
},
- "not_eligible": "Lijnen kunnen niet op hun begin- of eindpunt worden gesplitst.",
+ "not_eligible": "Lijnen kunnen niet op hun begin- of eindknooppunt worden gesplitst.",
"multiple_ways": "Er zijn hier teveel lijnen om op te splitsen.",
"connected_to_hidden": "Dit kan niet gesplitst worden omdat het verbonden is met een verborgen object."
},
"browser_notice": "Deze editor werkt in Firefox, Chrome, Safari, Opera en Internet Explorer 9 en hoger. Download een nieuwere versie van je browser of gebruik Potlatch 2 om de kaart aan te passen.",
"translate": {
"translate": "Vertaal",
- "localized_translation_label": "Meertalige naam",
+ "localized_translation_label": "Naam in meerdere talen",
"localized_translation_language": "Selecteer taal",
"localized_translation_name": "Naam"
},
"zoom_in_edit": "Zoom in om aan te passen",
- "logout": "afmelden",
- "loading_auth": "Verbinden met OpenStreetMap ...",
- "report_a_bug": "softwareprobleem melden",
+ "logout": "Afmelden",
+ "loading_auth": "Aan het verbinden met OpenStreetMap …",
+ "report_a_bug": "Softwareprobleem melden",
"feature_info": {
"hidden_warning": "{count} verborgen objecten",
"hidden_details": "Deze objecten zijn momenteel verborgen: {details}"
"commit": {
"title": "Aanpassingen Opslaan",
"description_placeholder": "Een korte omschrijving van je bijdragen",
- "message_label": "Beschrijf wat je gedaan hebt",
+ "message_label": "Opmerking bij wijzigingen",
"upload_explanation": "De aanpassingen die je uploadt worden zichtbaar op alle kaarten die de gegevens van OpenStreetMap gebruiken.",
"upload_explanation_with_user": "De aanpassingen die je als {user} uploadt worden zichtbaar op alle kaarten die de gegevens van OpenStreetMap gebruiken.",
"save": "Opslaan",
- "cancel": "Afbreken",
- "changes": "{count} Veranderingen",
+ "cancel": "Annuleren",
+ "changes": "{count} veranderingen",
"warnings": "Waarschuwingen",
"modified": "Aangepast",
"deleted": "Verwijderd",
"list": "Aanpassingen door {users}",
"truncated_list": "Aanpassingen door {users} en {count} anderen"
},
+ "infobox": {
+ "selected": "{n} geselecteerd",
+ "geometry": "Meetkundige eigenschappen",
+ "closed": "gesloten",
+ "center": "Midden",
+ "perimeter": "Omtrek",
+ "length": "Lengte",
+ "area": "Oppervlakte",
+ "centroid": "Zwaartepunt",
+ "location": "Locatie",
+ "metric": "Metrisch",
+ "imperial": "Brits"
+ },
+ "geometry": {
+ "point": "punt",
+ "vertex": "vertex",
+ "line": "lijn",
+ "area": "vlak",
+ "relation": "relatie"
+ },
"geocoder": {
"search": "Zoek wereldwijd ...",
"no_results_visible": "Geen resultaten in dit gebied",
},
"inspector": {
"no_documentation_combination": "Voor deze tag is geen documentatie beschikbaar.",
- "no_documentation_key": "Voor deze sleutel is geen documentatie beschikbaar",
+ "no_documentation_key": "Er is geen documentatie beschikbaar voor deze categorie",
"show_more": "Toon Meer",
"view_on_osm": "Toon op openstreetmap.org",
"all_tags": "Alle tags",
"results": "{n} resultaten voor {search}",
"reference": "Bekijk op de OpenStreetMap Wiki",
"back_tooltip": "Wijzig object",
- "remove": "Verwijderen",
+ "remove": "Verwijder",
"search": "Zoeken",
"multiselect": "Geselecteerde items",
"unknown": "Onbekend",
"incomplete": "<niet gedownload>",
"feature_list": "Zoek objecttype",
- "edit": "Object bewerken",
+ "edit": "Bewerk object",
"check": {
"yes": "Ja",
"no": "Nee"
"way": "Weg",
"relation": "Relatie",
"location": "Locatie",
- "add_fields": "Veld toevoegen:"
+ "add_fields": "Voeg eigenschap toe:"
},
"background": {
"title": "Achtergrond",
"description": "Achtergrondinstellingen",
- "percent_brightness": "{opacity}% ondoorzichtigheid",
+ "percent_brightness": "Helderheid: {opacity}%",
"none": "Geen",
"custom": "Aangepast",
"custom_button": "Aangepaste achtergrond aanpassen",
"description": "Kaartgegevens",
"data_layers": "Gegevenslagen",
"fill_area": "Vlakken Inkleuren",
- "map_features": "Dingen om op de Kaart te Zetten",
+ "map_features": "Objecttypes Tonen/Verbergen",
"autohidden": "Deze objecten zijn automatisch verborgen omdat er anders te veel op het scherm zouden staan. Je kan inzoomen om ze te bewerken."
},
"feature": {
},
"major_roads": {
"description": "Hoofdwegen",
- "tooltip": "Autowegen, Straten ..."
+ "tooltip": "Autowegen, Straten …"
},
"minor_roads": {
"description": "Kleine wegen",
- "tooltip": "Toegangswegen, Rijbanen in Parkings, Veldwegen ..."
+ "tooltip": "Toegangswegen, Rijbanen in Parkings, Veldwegen …"
},
"paths": {
"description": "Paden",
- "tooltip": "Trottoirs, Paden voor Voetgangers of Fietsers ..."
+ "tooltip": "Trottoirs, Paden voor Voetgangers of Fietsers …"
},
"buildings": {
"description": "Gebouwen",
- "tooltip": "Gebouwen, Afdaken, Garages ..."
+ "tooltip": "Gebouwen, Afdaken, Garages …"
},
"landuse": {
"description": "Landindeling",
- "tooltip": "Wouden, Landbouwgronden, Parken, Woongebieden, Winkelzones ..."
+ "tooltip": "Wouden, Landbouwgronden, Parken, Woongebieden, Winkelzones …"
},
"boundaries": {
"description": "Grenzen",
},
"water": {
"description": "Water",
- "tooltip": "Rivieren, Meren, Vijvers, Reservoirs ..."
+ "tooltip": "Rivieren, Meren, Vijvers, Reservoirs …"
},
"rail": {
"description": "Sporen",
},
"power": {
"description": "Energie",
- "tooltip": "Elektriciteitskabels, Energiecentrales, Transformatorstations ..."
+ "tooltip": "Elektriciteitskabels, Energiecentrales, Transformatorstations …"
},
"past_future": {
"description": "Verleden/Toekomst",
- "tooltip": "Voorgesteld, Onder Constructie, Verwaarloosd, Afgebroken ..."
+ "tooltip": "Voorgesteld, Onder Constructie, Verwaarloosd, Afgebroken …"
},
"others": {
"description": "Andere",
},
"restore": {
"heading": "Je hebt niet-opgeslagen aanpassingen",
- "description": "Er zijn niet-opgeslagen aanpassingen uit een vorige sessie. Wil je deze aanpassingen behouden?",
- "restore": "Behouden",
- "reset": "Ongedaan maken"
+ "description": "Er zijn niet-opgeslagen aanpassingen uit een vorige sessie. Wil je deze aanpassingen herstellen?",
+ "restore": "Herstellen",
+ "reset": "Weggooien"
},
"save": {
"title": "Opslaan",
"help": "Sla de aanpassingen bij OpenStreetMap op om deze voor andere gebruikers zichtbaar te maken.",
"no_changes": "Geen aanpassingen om op te slaan.",
- "error": "Er is een fout opgetreden bij het opslaan",
+ "error": "Er zijn fouten opgetreden bij het opslaan",
+ "status_code": "Server gaf volgende statuscode terug: {code}",
"unknown_error_details": "Controleer of je bent verbonden met het internet.",
"uploading": "De aanpassingen worden naar OpenStreetMap geüpload.",
- "unsaved_changes": "Je hebt niet-opgeslagen aanpassingen"
+ "unsaved_changes": "Je hebt niet-opgeslagen aanpassingen",
+ "conflict": {
+ "header": "Los conflicterende bewerkingen op",
+ "count": "Conflict {num} van {total}",
+ "previous": "< Vorige",
+ "next": "Volgende >",
+ "keep_local": "Mijn versie behouden",
+ "keep_remote": "Hun versie gebruiken",
+ "restore": "Herstellen",
+ "delete": "Verwijderd Laten",
+ "download_changes": "Of download je veranderingen.",
+ "done": "Alle conflicten opgelost!",
+ "help": "Een andere gebruiker heeft sommige dingen bewerkt die jij ook hebt\nbewerkt. Klik op\nelk item hieronder voor meer details over het conflict, en kies welke\nversie je wil behouden: die van jou of die van hun.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Dit object is verwijderd door {user}.",
+ "location": "Dit object werd zowel door jou als door {user} verplaatst.",
+ "nodelist": "Er werden knooppunten zowel door jou als door {user} bewerkt.",
+ "memberlist": "Leden van de relatie werden zowel door jou als door {user} bewerkt.",
+ "tags": "Jij hebt de tag <b>{tag}</b> veranderd naar \"{local}\" en {user} veranderde het naar \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM aangepast!",
"facebook": "Deel op Facebook",
"twitter": "Deel op Twitter",
"google": "Deel op Google+",
- "help_html": "Uw wijzigingen zouden binnen enkele minuten zichtbaar moeten zijn in de \n\"Standaard\"-laag. Andere lagen, en sommige kenmerken, kunnen langer duren\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
+ "help_html": "Je wijzigingen zouden binnen enkele minuten zichtbaar moeten zijn in de \n\"Standaard\"-laag. Andere lagen, en sommige kenmerken, kunnen langer duren\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>meer informatie hierover, in het Engels</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Annuleren"
},
"splash": {
- "welcome": "Welkom bij de iD OpenStreetMap-editor",
+ "welcome": "Welkom bij iD, een bewerkingsprogramma voor OpenStreetMap",
"text": "iD biedt een gebruiksvriendelijke en krachtige manier om bij te dragen aan de beste, open wereldkaart ter wereld. Dit is versie {version}. Voor meer informatie, zie {website} en meld softwarefouten op {github}.",
"walkthrough": "Start de rondleiding",
"start": "Pas nu aan"
},
"source_switch": {
"live": "live",
- "lose_changes": "Je hebt niet-opgeslagen aanpassingen. Door te wisselen van kaartserver worden deze ongedaan gemaakt. Weet je zeker dat je van kaartserver wilt wisselen?",
+ "lose_changes": "Je hebt niet-opgeslagen aanpassingen. Door te wisselen van kaartserver gaan deze verloren. Weet je zeker dat je van kaartserver wilt wisselen?",
"dev": "dev"
},
"tag_reference": {
},
"help": {
"title": "Help",
- "help": "# Hulp\n\nDit is een bewerkingsprogramma voor\n[OpenStreetMap](http://www.openstreetmap.org/), de vrije en bewerkbare kaart van de wereld. Je kan\nhet gebruiken om data in je regio toe te voegen en bij te werken.\nZo maak je de open-source- en open-data-kaart van de wereld\nbeter voor iedereen.\n\nWijzingen die je maakt aan deze kaart worden zichtbaar voor iedereen\ndie OpenStreetMap gebruikt. Om te kunnen bewerken, zal je een\n[gratis OpenStreetMap-account](https://www.openstreetmap.org/user/new) nodig hebben.\n\nDe [iD-bewerker](http://ideditor.com/) is een samenwerkingsproject\nwaarvan de [broncode beschikbaar is op GitHub](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Bewerken & Opslaan\n\nDeze editor is ontworpen om voornamelijk online te gebruiken, en je gebruikt het via een website op dit moment.\n\n### Objecten Selecteren\n\nOm objecten in een kaart te selecteren, zoals een weg of interessant punt, moet je op de kaart erop kikken. Het geselecteerde object zal dan oplichten, er zal een paneel met details geopend worden en een menu zal getoond worden met dingen die je met dit object kan doen.\n\nOm meerdere objecten te kunnen selecteren, hou je de 'Shift'-toets ingedrukt terwijl je de objecten aanklikt, of terwijl je een rechthoek tekent op de kaart. Dat zal een kader tonen waarbinnen alle objecten geselecteerd worden.\n\n### Bewerkingen Opslaan\n\nAls je wijzigingen maakt, zoals het bewerken van wegen, gebouwen en andere plaatsen, worden deze eerst lokaal bijgehouden totdat je ze op de server opslaat. Maak je geen zorgen als je een fout maakt - je kan wijzigingen altijd ongedaan maken door op de 'Ongedaan maken'-knop te klikken en ze weer herstellen door op de 'Opnieuw doen'-knop te klikken.\n\nKlik op 'Opslaan' om een groep van bewerkingen op te slaan - bijvoorbeeld als je een gebied of dorp hebt afgerond en je aan een ander gebied wil beginnen. Je krijgt de mogelijkheid om te herzien wat je hebt aangepast en de editor geeft je suggesties voor verbeteringen en waarschuwingen als er iets mis lijkt te zijn.\n\nAls alles er goed uit ziet kun je kort commentaar toevoegen, dat de wijziging die je hebt gemaakt beschrijft. Klik daarna nogmaals op 'Opslaan' om de wijzigingen op te sturen naar [OpenStreetMap.org](http://www.openstreetmap.org/), waar ze zichtbaar zijn voor alle gebruikers en voor anderen om op voort te bouwen of te verbeteren.\n\nAls je in een sessie niet al je bewerkingen door kan voeren kun je het venster van de editor sluiten en later terugkomen (in dezelfde browser op dezelfde computer) en de bewerkapplicatie zal je aanbieden je werk te herstellen.\n",
- "roads": "# Wegen\n\nJe kan met deze editor wegen maken, verbeteren en verwijderen. Wegen zijn er in allerlei soorten en maten: landweggetjes, snelwegen, paadjes, fietspaden en veel meer - ieder stukje dat vaak wordt gebruikt kan in kaart worden gebracht.\n\n### Selecteren\n\nKlik op een weg om deze te selecteren. De omtrek verschijnt samen met een klein menu op de kaart en een schermpje met informatie over de weg.\n\n### Aanpassen\n\nVaak kom je wegen tegen, die niet precies over het beeldmateriaal of de GPS-route erachter lopen. Je kan deze wegen aanpassen, zodat ze op de juiste plek komen te liggen.\n\nKlik eerst op de weg die je wil aanpassen. Deze zal dan oplichten en er verschijnen puntjes langs de lijn die je kan verslepen naar een betere plek. Als je nieuwe puntjes wil toevoegen voor meer detaillering, dubbelklik op een weggedeelte zonder een knooppunt en er wordt een nieuwe ingevoegd.\n\nAls een weg in het echt is verbonden met een andere weg, maar op de kaart niet, dan versleep je een van de puntjes op de andere weg om ze te verbinden. Dat wegen met elkaar zijn verbonden is belangrijk voor de kaart en essentieel om een routebeschrijving te kunnen maken.\n\nJe kan bovendien het 'Verplaats'-gereedschap aanklikken of de 'V'-snelkoppeling om de gehele weg in een keer te verplaatsen en opnieuw aanklikken om deze verplaatsing op te slaan.\n\n### Verwijderen\n\nAls een weg helemaal verkeerd is – je ziet dat het niet op het satellietbeeld te zien is en je hebt idealiter ter plaatse gecontroleerd dat de weg er niet is – dan kan je hem verwijderen, zodat hij van de kaart verdwijnt. Wees voorzichtig met het verwijderen van objecten – zoals bij iedere aanpassing is het resultaat voor iedereen zichtbaar en satellietbeelden zijn vaak verouderd, dus de weg zou gewoon nieuw aangelegd kunnen zijn.\n\nJe kan een weg verwijderen door er op te klikken om het te selecteren, waarna je op het prullenbakicoon drukt of de 'Verwijderen'-toets.\n\n### Aanmaken\n\nHeb je ergens een weg gevonden die nog niet op de kaart staat? Klik op het 'Lijn'-gereedschap in de linkerbovenhoek van de editor of druk op de sneltoets '2' om een lijn te tekenen.\n\nKlik op het begin van de weg op de kaart en begin te tekenen. Als de weg zich vertakt van de bestaande weg, begin dan op de plek waar ze elkaar kruisen.\n\nKlik dan de punten langs de weg, zodat deze het juiste tracé volgt, volgens het satellietbeeld of de GPS-route. Als de weg die je aan het tekenen bent een andere weg kruist, verbind deze dan door op het kruispunt te klikken. Als je klaar met tekenen bent, dubbelklik of druk op 'Return' of 'Enter' op je toetsenbord.\n",
+ "help": "# Hulp\n\nDit is een bewerkingsprogramma voor\n[OpenStreetMap](http://www.openstreetmap.org/), de vrije en bewerkbare kaart van de wereld. Je kan\nhet gebruiken om data in je regio toe te voegen en bij te werken.\nZo maak je de open-source- en open-data-kaart van de wereld\nbeter voor iedereen.\n\nWijzingen die je maakt aan deze kaart worden zichtbaar voor iedereen\ndie OpenStreetMap gebruikt. Om te kunnen bewerken, zal je moeten\n[inloggen](https://www.openstreetmap.org/login).\n\nDe [iD-bewerker](http://ideditor.com/) is een samenwerkingsproject\nwaarvan de [broncode beschikbaar is op GitHub](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Bewerken & Opslaan\n\nDit kaartbewerkingsprogramma is ontworpen om voornamelijk online te gebruikt te worden. Je gebruikt hem op dit moment via een website.\n\n### Objecten Selecteren\n\nOm objecten in een kaart te selecteren, zoals een weg of interessant punt, moet je op de kaart erop klikken. Het geselecteerde object zal dan oplichten, er zal een paneel met details geopend worden en een menu zal getoond worden met dingen die je met dit object kan doen.\n\nOm meerdere objecten te kunnen selecteren, hou je de 'Shift'-toets ingedrukt terwijl je de objecten aanklikt, of terwijl je een rechthoek tekent op de kaart. Dat zal een kader tonen waarbinnen alle objecten geselecteerd worden.\n\n### Bewerkingen Opslaan\n\nAls je wijzigingen maakt, zoals het bewerken van wegen, gebouwen en andere plaatsen, worden deze eerst lokaal bijgehouden totdat je ze op de server opslaat. Maak je geen zorgen als je een fout maakt – je kan wijzigingen altijd ongedaan maken door op de 'Ongedaan maken'-knop te klikken en ze weer herstellen door op de 'Opnieuw doen'-knop te klikken.\n\nKlik op 'Opslaan' om een groep van bewerkingen op te slaan – bijvoorbeeld als je een gebied of dorp hebt afgerond en je aan een ander gebied wil beginnen. Je krijgt de mogelijkheid om te herzien wat je hebt aangepast en de editor geeft je suggesties voor verbeteringen en waarschuwingen als er iets mis lijkt te zijn.\n\nAls alles er goed uit ziet kun je kort commentaar toevoegen, dat de wijziging die je hebt gemaakt beschrijft. Klik daarna nogmaals op 'Opslaan' om de wijzigingen op te sturen naar [OpenStreetMap.org](http://www.openstreetmap.org/), waar ze zichtbaar zijn voor alle gebruikers en voor anderen om op voort te bouwen of te verbeteren.\n\nAls je in een sessie niet al je bewerkingen door kan voeren kun je het venster van de editor sluiten en later terugkomen (in dezelfde browser op dezelfde computer) en de bewerkapplicatie zal je aanbieden je werk te herstellen.\n",
+ "roads": "# Wegen\n\nJe kan met deze editor wegen maken, verbeteren en verwijderen. Wegen zijn er in allerlei soorten en maten: landweggetjes, snelwegen, paadjes, fietspaden en veel meer – ieder stukje dat vaak wordt gebruikt kan in kaart worden gebracht.\n\n### Selecteren\n\nKlik op een weg om deze te selecteren. De omtrek verschijnt samen met een klein menu op de kaart en een schermpje met informatie over de weg.\n\n### Aanpassen\n\nVaak kom je wegen tegen, die niet precies over het beeldmateriaal of de GPS-route erachter lopen. Je kan deze wegen aanpassen, zodat ze op de juiste plek komen te liggen.\n\nKlik eerst op de weg die je wil aanpassen. Deze zal dan oplichten en er verschijnen puntjes langs de lijn die je kan verslepen naar een betere plek. Als je nieuwe puntjes wil toevoegen voor meer detaillering, dubbelklik op een weggedeelte zonder een knooppunt en er wordt een nieuwe ingevoegd.\n\nAls een weg in het echt is verbonden met een andere weg, maar op de kaart niet, dan versleep je een van de puntjes op de andere weg om ze te verbinden. Dat wegen met elkaar zijn verbonden is belangrijk voor de kaart en essentieel om een routebeschrijving te kunnen maken.\n\nJe kan bovendien het 'Verplaats'-gereedschap aanklikken of de 'V'-snelkoppeling om de gehele weg in een keer te verplaatsen en opnieuw aanklikken om deze verplaatsing op te slaan.\n\n### Verwijderen\n\nAls een weg helemaal verkeerd is – je ziet dat het niet op het satellietbeeld te zien is en je hebt idealiter ter plaatse gecontroleerd dat de weg er niet is – dan kan je hem verwijderen, zodat hij van de kaart verdwijnt. Wees voorzichtig met het verwijderen van objecten – zoals bij iedere aanpassing is het resultaat voor iedereen zichtbaar en satellietbeelden zijn vaak verouderd, dus de weg zou gewoon nieuw aangelegd kunnen zijn.\n\nJe kan een weg verwijderen door er op te klikken om het te selecteren, waarna je op het prullenbakicoon drukt of de 'Verwijderen'-toets.\n\n### Aanmaken\n\nHeb je ergens een weg gevonden die nog niet op de kaart staat? Klik op het 'Lijn'-gereedschap in de linkerbovenhoek van de editor of druk op de sneltoets '2' om een lijn te tekenen.\n\nKlik op het begin van de weg op de kaart en begin te tekenen. Als de weg zich vertakt van de bestaande weg, begin dan op de plek waar ze elkaar kruisen.\n\nKlik dan de punten langs de weg, zodat deze het juiste tracé volgt, volgens het satellietbeeld of de GPS-route. Als de weg die je aan het tekenen bent een andere weg kruist, verbind deze dan door op het kruispunt te klikken. Als je klaar met tekenen bent, dubbelklik of druk op 'Return' of 'Enter' op je toetsenbord.\n",
"gps": "# GPS\n\nGPS-data is de databron die het meest wordt vertrouwd voor OpenStreetMap. Dit bewerkingsprogramma ondersteunt lokale GPS-paden – '.gpx'-bestanden op je eigen computer. Je kan dit soort paden opnemen met een aantal smartphone-apps of met aparte GPS-toestellen.\n\nVoor meer informatie over hoe je onderzoek kan doen met GPS, kan je terecht op [Surveying with a GPS (Engels)](http://learnosm.org/en/beginner/using-gps/) of [Sur le terrain avec un GPS (Frans)](http://learnosm.org/fr/beginner/using-gps/). \n\nOm een GPX-pad te gebruiken bij het karteren, sleep je het GPX-bestand op het kaartbewerkingsprogramma. Als het wordt herkend, zal het op de kaart worden getoond als een helderpaarse lijn. Open het menu 'Kaartgegevens' aan de rechterkant om deze nieuwe GPX-laag aan of uit te zetten of te zoomen.\n\nHet GPX-pad wordt niet rechtstreeks als een weg geüpload naar OpenStreetMap. De beste manier om het te gebruiken is als een hulpmiddel om op de kaart tekenen. Je wordt aangemoedigd het ook te [uploaden naar OpenStreetMap](http://www.openstreetmap.org/trace/create) zodat anderen het op dezelfde manier kunnen gebruiken.\n",
"imagery": "# Beeldmateriaal\n\nLuchtfoto's vormen een belangrijke bron bij het maken van de kaart. Een combinatie van luchtfoto's, satellietbeelden en vrij-beschikbare bronnen is beschikbaar in de editor onder het menu 'Achtergrondinstellingen' aan de linkerzijde.\n\nStandaard wordt een [Bing Maps](http://www.bing.com/maps/)-satellietbeeld in de editor getoond, maar als je de kaart verschaalt of verplaatst naar andere gebieden, worden nieuwe bronnen getoond. Sommige landen, zoals de Verenigde Staten, Frankrijk en Denemarken hebben beeldmateriaal van zeer hoge kwaliteit in sommige gebieden.\n\nSoms is het beeldmateriaal ten opzichte van de kaart verschoven door een fout van de leverancier van het beeldmateriaal. Als je ziet dat een heleboel wegen zijn verschoven ten opzichte van de achtergrond, ga deze dan niet meteen allemaal verplaatsen zodat de ligging overeenkomt met de achtergrond. In plaats daarvan kan je het beeldmateriaal aanpassen, zodat de ligging overeenkomt met de bestaande gegevens door op de knop 'Verbeter de ligging' te klikken onderaan de 'Achtergrondinstellingen'.\n",
- "addresses": "# Adressen\n\nAdressen zijn één van de meest nuttige informatie-elementen voor de kaart.\n\nHoewel adressen vaak als deel van een straat worden weergegeven, worden zij\nin OpenStreetMap vastgelegd als eigenschap van gebouwen en plaatsen langs\nde straten.\n\nJe kan adresgegevens toevoegen aan plaatsen die als gebouwcontouren\nzijn gekarteerd, maar ook aan plaatsen die als een enkel punt zijn gekarteerd.\nDe meest betrouwbare bron voor adresgegevens is een veldonderzoek ter\nplaatse of eigen bekendheid - zoals met ieder ander object is kopiëren uit\ncommerciële bronnen zoals Google Maps strict verboden.\n",
- "inspector": "# Het inspectiegereedschap\n\nHet inspectiegereedschap is het schermelement links op de pagina dat verschijnt als een object wordt geselecteerd en maakt het je mogelijk om eigenschappen aan te passen.\n\n### Een objecttype selecteren\n\nNadat je een punt, lijn of vlak hebt toegevoegd, kan je kiezen wat voor type object het is, bijvoorbeeld of het een snelweg of woonerf is, een supermarkt of een café. Het inspectiegereedschap toont knoppen voor veelvoorkomende objecttypen en je kan andere vinden door een term in het zoekscherm in te vullen.\n\nKlik op de 'i' in de rechterbenedenhoek van een objecttypeknop om meer te weten te komen. Klik op een knop om het type te selecteren.\n\n### Formulieren gebruiken en tags bewerken\n\nNadat je een objecttype hebt gekozen, of wanneer je een object selecteert dat al een type toegekend heeft gekregen, dan toont het inspectiegereedschap allerlei eigenschappen van het object, zoals naam en adres.\n\nOnder de getoonde eigenschappen kan je op icoontjes klikken om meer eigenschappen toe te voegen, zoals informatie uit [Wikipedia](http://www.wikipedia.org/), toegankelijkheid voor rolstoelgebruikers, etc.\n\nOnderaan het inspectiegereedschap klik je op 'Extra tags' om andere tags toe te voegen. [Taginfo](http://taginfo.openstreetmap.org/) biedt een prachtig overzicht om meer te weten te komen over veelgebruikte combinaties van tags.\n\nAanpassingen die je in het inspectiegereedschap maakt zijn meteen zichtbaar in de kaart. Je kan ze op ieder moment ongedaan maken, door op de knop 'Ongedaan maken' te klikken.\n",
+ "addresses": "# Adressen\n\nAdressen zijn één van de meest nuttige informatie-elementen voor de kaart.\n\nHoewel adressen vaak als deel van een straat worden weergegeven, worden zij\nin OpenStreetMap vastgelegd als eigenschap van gebouwen en plaatsen langs\nde straten.\n\nJe kan adresgegevens toevoegen aan plaatsen die als gebouwcontouren\nzijn gekarteerd, maar ook aan plaatsen die als een enkel punt zijn gekarteerd.\nDe meest betrouwbare bron voor adresgegevens is een veldonderzoek ter\nplaatse of eigen bekendheid zoals met ieder ander object is kopiëren uit\ncommerciële bronnen zoals Google Maps strikt verboden.\n",
+ "inspector": "# Het inspectiegereedschap\n\nHet inspectiegereedschap is het schermelement links op de pagina dat verschijnt als een object wordt geselecteerd en maakt het je mogelijk om eigenschappen aan te passen.\n\n### Een objecttype selecteren\n\nNadat je een punt, lijn of vlak hebt toegevoegd, kan je kiezen wat voor type object het is, bijvoorbeeld of het een snelweg of woonerf is, een supermarkt of een café. Het inspectiegereedschap toont knoppen voor veelvoorkomende objecttypen en je kan andere vinden door een term in het zoekscherm in te vullen.\n\nKlik op de 'i' in de rechterbenedenhoek van een objecttypeknop om meer te weten te komen. Klik op een knop om het type te selecteren.\n\n### Formulieren gebruiken en tags bewerken\n\nNadat je een objecttype hebt gekozen, of wanneer je een object selecteert dat al een type toegekend heeft gekregen, dan toont het inspectiegereedschap allerlei eigenschappen van het object, zoals naam en adres.\n\nOnder de getoonde eigenschappen kan je op icoontjes klikken om meer eigenschappen toe te voegen, zoals informatie uit [Wikipedia](http://www.wikipedia.org/), toegankelijkheid voor rolstoelgebruikers, etc.\n\nOnderaan het inspectiegereedschap klik je op 'Extra tags' om andere tags toe te voegen. [Taginfo](http://taginfo.openstreetmap.org/) biedt een prachtig overzicht om meer te weten te komen over veelgebruikte combinaties van tags.\n\nAanpassingen die je in het inspectiegereedschap maakt zijn meteen zichtbaar in de kaart. Je kan ze op ieder moment ongedaan maken, door op de knop 'Ongedaan maken' te klikken.\n",
"buildings": "# Gebouwen\n\nOpenStreetMap is 's werelds grootste gebouwendatabase. Jij kan deze\ndatabase maken en verbeteren.\n\n### Selecteren\n\nJe kan een gebouw selecteren door op de omtrek te klikken. Dit doet het\ngebouw oplichten en opent een klein menu en een scherm met meer informatie over het gebouw.\n\n### Aanpassen\n\nSoms staan gebouwen niet op de juiste plaats of hebben ze onjuiste tags.\n\nOm een heel gebouw te verplaatsen, selecteer het en klik dan op de knop 'Verplaatsen'. Beweeg je muis om het gebouw te verplaatsen en klik als het op de goede plek staat.\n\nOm de vorm van een gebouw te verbeteren klik en versleep je de punten die samen de omtrek vormen naar de juiste plek.\n\n### Toevoegen\n\nEen van de onduidelijkheden over het toevoegen van gebouwen is dat in\nOpenStreetMap de gebouwen als vlakken en als punten kunnen worden vastgelegd. De vuistregel is dat _gebouwen zoveel mogelijk als een vlak_ worden ingetekend en dat bedrijven, woningen en voorzieningen die in die gebouwen zijn gevestigd ofwel ook op het vlak worden getagd of als punt worden ingetekend binnen de omtrek.\n\nBegin om een gebouw als een vlak in te tekenen door op de knop 'Vlak' te klikken in de linkerbovenhoek van het scherm en beëindig het tekenen door de 'Return'-toets in te drukken of door op het eerst getekende punt te klikken om de omtrek te sluiten.\n\n### Verwijderen\n\nAls een gebouw helemaal verkeerd is – je kan zien dat het niet in het satellietbeeld zichtbaar is en idealiter heb je ter plekke geconstateerd dat het niet bestaat – dan kan je het verwijderen. Wees voorzichtig bij het verwijderen van objecten – zoals alle andere aanpassingen, is het resultaat voor iedereen zichtbaar en satellietbeelden zijn vaak verouderd, dus het gebouw kan simpelweg onlangs zijn gebouwd.\n\nJe kan een gebouw verwijderen door erop te klikken om het te selecteren en dan op de prullenbakicoon te klikken of op de 'Verwijderen'-toets te drukken.\n",
- "relations": "# Relaties\n\nEen relatie is een speciaal type object in OpenStreetMap dat andere objecten groepeert. Twee vaakvoorkomende types relaties zijn bijvoorbeeld de *routerelatie*, die delen van een weg die tot eenzelfde snelweg behoren groepeert, en *multipolygonen*, die verschillende lijnen groeperen die samen een complex vlak definiëren (een van verschillende delen met gaten erin, zoals bij een donut).\n\nDe groep van elementen in een relatie heten *leden*. In de zijbalk kan je zien van welke relaties een element lid is, en daar op een relatie klikken om die te selecteren. Wanneer de relatie is geselecteerd, kan je al haar leden in een lijst in de zijbalk zien, en worden ze gehighlight op de kaart.\n\niD zal meestal relaties automatisch voor je in orde houden terwijl je bewerkt. Het belangrijkste waar je moet aan denken is dat als je een deel van een weg verwijdert om het nauwkeuriger opnieuw te tekenen, het nieuwe stuk weg lid moet zijn van dezelfde relaties als het oude.\n\n## Relaties Bewerken\n\nAls je relaties wilt bewerken, zijn hier de basisvaardigheden.\n\nOm een object aan een relatie toe te voegen, selecteer het object, klik op de \"+\"-knop in het \"Alle relaties\"-gedeelte van de zijbalk en selecteer of typ de naam van de relatie.\n\nOm een nieuwe relatie te maken, selecteer je het eerste object dat er deel van uit moet maken, klik je op de \"+\"-knop in het \"Alle relaties\"-gedeelte en kies je \"Nieuwe relatie ...\"\n\nOm een object van een relatie te verwijderen, selecteer je dat object en klik je op de vuilnisbakknop naast de relatie waaruit je het object wil verwijderen.\n\nJe kan multipolygonen met gaten maken door het \"Samenvoegen\"-gereedschap te gebruken. Teken twee vlakken (de binnenkant en de buitenkant), hou de Shift-toets ingedrukt en klik achtereenvolgens op hen allemaal om ze te selecteren. Klik dan op de \"Samenvoegen\"-knop (+).\n"
+ "relations": "# Relaties\n\nEen relatie is een speciaal type object in OpenStreetMap dat andere objecten groepeert. Twee vaakvoorkomende types relaties zijn bijvoorbeeld de *routerelatie*, die delen van een weg die tot eenzelfde snelweg behoren groepeert, en *multipolygonen*, die verschillende lijnen groeperen die samen een complex vlak definiëren (een van verschillende delen met gaten erin, zoals bij een donut).\n\nDe groep van elementen in een relatie heten *leden*. In de zijbalk kan je zien van welke relaties een element lid is, en daar op een relatie klikken om die te selecteren. Wanneer de relatie is geselecteerd, kan je al haar leden in een lijst in de zijbalk zien, en worden ze gehighlight op de kaart.\n\niD zal meestal relaties automatisch voor je in orde houden terwijl je bewerkt. Het belangrijkste waar je moet aan denken is dat als je een deel van een weg verwijdert om het nauwkeuriger opnieuw te tekenen, het nieuwe stuk weg lid moet zijn van dezelfde relaties als het oude.\n\n## Relaties Bewerken\n\nAls je relaties wilt bewerken, zijn hier de basisvaardigheden.\n\nOm een object aan een relatie toe te voegen, selecteer het object, klik op de \"+\"-knop in het \"Alle relaties\"-gedeelte van de zijbalk en selecteer of typ de naam van de relatie.\n\nOm een nieuwe relatie te maken, selecteer je het eerste object dat er deel van uit moet maken, klik je op de \"+\"-knop in het \"Alle relaties\"-gedeelte en kies je \"Nieuwe relatie …\"\n\nOm een object van een relatie te verwijderen, selecteer je dat object en klik je op de vuilnisbakknop naast de relatie waaruit je het object wil verwijderen.\n\nJe kan multipolygonen met gaten maken door het \"Samenvoegen\"-gereedschap te gebruken. Teken twee vlakken (de binnenkant en de buitenkant), hou de Shift-toets ingedrukt en klik achtereenvolgens op hen allemaal om ze te selecteren. Klik dan op de \"Samenvoegen\"-knop (+).\n"
},
"intro": {
"navigation": {
"title": "Lijnen",
"add": "Lijnen worden gebruikt om objecten zoals wegen, spoorlijnen en rivieren weer te geven. **Klik op de Lijn-knop om een nieuwe lijn toe te voegen.**",
"start": "**Begin de lijn door te klikken op een uiteinde van de weg.**",
- "intersect": "Klik om meer knooppunten aan de lijn toe te voegen. Je kan de kaart verslepen tijdens het tekenen als dat nodig zou zijn. Wegen en veel andere lijnen zijn onderdeel van een groter netwerk. Het is belangrijk dat deze lijnen correct aan elkaar zijn verbonden, zodat je een route kan laten berekenen. **Klik op 'Flower Street' om een kruising te maken waar de twee lijnen worden verbonden.**",
+ "intersect": "Klik om meer knooppunten aan de lijn toe te voegen. Je kan de kaart verslepen tijdens het tekenen als dat nodig is. Wegen en veel andere lijnen zijn onderdeel van een groter netwerk. Het is belangrijk dat deze lijnen correct aan elkaar zijn verbonden, zodat je een route kan laten berekenen. **Klik op 'Flower Street' om een kruising te maken waar de twee lijnen worden verbonden.**",
"finish": "Lijnen kunnen worden beëindigd door nogmaals op het laatste knooppunt te klikken. **Beëindig het tekenen van de weg.**",
"road": "**Selecteer 'Weg' uit de lijst**",
"residential": "Er zijn verschillende soorten wegen, het meest voorkomende type is 'Straat'. **Kies het wegtype 'Straat'**",
"title": "Begin met aanpassen",
"help": "Meer documentatie en deze rondleiding zijn hier beschikbaar.",
"save": "Vergeet niet om je aanpassingen regelmatig op te slaan!",
- "start": "Begin met karteren!"
+ "start": "Karteer de wereld!"
}
},
"presets": {
"name": "Route"
},
"category-water-area": {
- "name": "Water"
+ "name": "Waterbekkens"
},
"category-water-line": {
- "name": "Water"
+ "name": "Waterlopen"
}
},
"fields": {
"access": {
"label": "Toegang",
- "placeholder": "Onbekend",
- "types": {
- "access": "Algemeen",
- "foot": "Voet",
- "motor_vehicle": "Motorvoertuigen",
- "bicycle": "Fietsen",
- "horse": "Paarden"
- },
"options": {
- "yes": {
- "title": "Toegestaan",
- "description": "Toegang bij wet toegestaan, recht van overpad"
+ "designated": {
+ "description": "Toegang toegestaan volgens bebording of specifieke, plaatselijke verordeningen",
+ "title": "Geadviseerd"
+ },
+ "destination": {
+ "description": "Toegang uitsluitend voor bestemmingsverkeer",
+ "title": "Bestemming"
},
"no": {
- "title": "Verboden",
- "description": "Toegang niet toegestaan voor het algemeen publiek"
+ "description": "Toegang niet toegestaan voor het algemeen publiek",
+ "title": "Verboden"
},
"permissive": {
- "title": "Niet-wettelijke bepaling",
- "description": "Toegang toegestaan totdat de eigenaar de toestemming intrekt"
+ "description": "Toegang toegestaan totdat de eigenaar de toestemming intrekt",
+ "title": "Niet-wettelijke bepaling"
},
"private": {
- "title": "Privé",
- "description": "Toegang slechts toegestaan met toestemming van de eigenaar op individuele basis"
+ "description": "Toegang slechts toegestaan met toestemming van de eigenaar op individuele basis",
+ "title": "Privé"
},
- "designated": {
- "title": "Geadviseerd",
- "description": "Toegang toegestaan volgens bebording of specifieke, plaatselijke verordeningen"
- },
- "destination": {
- "title": "Bestemming",
- "description": "Toegang uitsluitend voor bestemmingsverkeer"
+ "yes": {
+ "description": "Toegang bij wet toegestaan, recht van overpad",
+ "title": "Toegestaan"
}
+ },
+ "placeholder": "Onbekend",
+ "types": {
+ "access": "Algemeen",
+ "bicycle": "Fietsen",
+ "foot": "Voet",
+ "horse": "Paarden",
+ "motor_vehicle": "Motorvoertuigen"
}
},
"access_simple": {
"address": {
"label": "Adres",
"placeholders": {
+ "city": "Stad",
+ "country": "Land",
+ "district": "Arrondissement",
+ "hamlet": "Gehucht",
"housename": "Huisnaam",
"housenumber": "123",
- "street": "Straat",
- "city": "Stad",
- "postcode": "Postcode",
"place": "Plaats",
- "hamlet": "Gehucht",
- "suburb": "Buitenwijk",
- "subdistrict": "Sub-arrondissement",
- "district": "Arrondissement",
+ "postcode": "Postcode",
"province": "Provincie",
"state": "Staat",
- "country": "Land"
+ "street": "Straat",
+ "subdistrict": "Sub-arrondissement",
+ "suburb": "Buitenwijk"
}
},
"admin_level": {
- "label": "Bestuurlijk niveau"
+ "label": "Bestuurlijk Niveau"
},
"aerialway": {
"label": "Type"
"aerialway/access": {
"label": "Toegang",
"options": {
+ "both": "Beide",
"entry": "Ingang",
- "exit": "Uitgang",
- "both": "Beide"
+ "exit": "Uitgang"
}
},
"aerialway/bubble": {
},
"aerialway/capacity": {
"label": "Capaciteit (per uur)",
- "placeholder": "500, 2500, 5000, ..."
+ "placeholder": "500, 2500, 5000 …"
},
"aerialway/duration": {
"label": "Duur (minuten)",
- "placeholder": "1, 2, 3, ..."
+ "placeholder": "1, 2, 3 …"
},
"aerialway/heating": {
"label": "Verwarmd"
},
"aerialway/occupancy": {
"label": "Bezetting",
- "placeholder": "2, 4, 8, ..."
+ "placeholder": "2, 4, 8 …"
},
"aerialway/summer/access": {
"label": "Toegang (zomer)",
"options": {
+ "both": "Beide",
"entry": "Ingang",
- "exit": "Uitgang",
- "both": "Beide"
+ "exit": "Uitgang"
}
},
"aeroway": {
"label": "Type"
},
"atm": {
- "label": "Pinautomaat"
+ "label": "Bankautomaat"
},
"backrest": {
"label": "Rugleuning"
},
"capacity": {
"label": "Inhoud",
- "placeholder": "50, 100, 200, ..."
+ "placeholder": "50, 100, 200 …"
},
"cardinal_direction": {
"label": "Richting",
"options": {
- "N": "Noord",
"E": "Oost",
- "S": "Zuid",
- "W": "West",
- "NE": "Noordoost",
- "SE": "Zuidoost",
- "SW": "Zuidwest",
- "NW": "Noordwest",
- "NNE": "Noordnoordoost",
"ENE": "Oostnoordoost",
"ESE": "Oostzuidoost",
+ "N": "Noord",
+ "NE": "Noordoost",
+ "NNE": "Noordnoordoost",
+ "NNW": "Noordnoordwest",
+ "NW": "Noordwest",
+ "S": "Zuid",
+ "SE": "Zuidoost",
"SSE": "Zuidzuidoost",
"SSW": "Zuidzuidwest",
- "WSW": "Westzuidwest",
+ "SW": "Zuidwest",
+ "W": "West",
"WNW": "Westnoordwest",
- "NNW": "Noordnoordwest"
+ "WSW": "Westzuidwest"
}
},
"clock_direction": {
"label": "Richting",
"options": {
- "clockwise": "Met de klok mee",
- "anticlockwise": "Tegen de klok in"
+ "anticlockwise": "Tegen de klok in",
+ "clockwise": "Met de klok mee"
}
},
"collection_times": {
"construction": {
"label": "Type"
},
+ "content": {
+ "label": "Inhoud"
+ },
"country": {
"label": "Land"
},
"description": {
"label": "Omschrijving"
},
+ "drive_through": {
+ "label": "Drive-Through"
+ },
"electrified": {
"label": "Bovenleiding",
- "placeholder": "Contactleiding, Elektrisch Spoor...",
"options": {
"contact_line": "Contactleiding",
+ "no": "Nee",
"rail": "Elektrisch Spoor",
- "yes": "Ja (ongespecificeerd)",
- "no": "Nee"
- }
+ "yes": "Ja (onbepaald)"
+ },
+ "placeholder": "Contactleiding, Elektrisch Spoor …"
},
"elevation": {
"label": "Hoogte"
"label": "TYpe",
"options": {
"pillar": "Pilaar/Bovengronds",
+ "pond": "Vijver",
"underground": "Metro",
- "wall": "Muur",
- "pond": "Vijver"
+ "wall": "Muur"
}
},
"fixme": {
},
"gender": {
"label": "Geslacht",
- "placeholder": "Onbekend",
"options": {
- "male": "Mannelijk",
"female": "Vrouwelijk",
+ "male": "Mannelijk",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Onbekend"
},
"generator/method": {
"label": "Methode"
},
"hoops": {
"label": "Lussen",
- "placeholder": "1, 2, 4, ..."
+ "placeholder": "1, 2, 4 …"
},
"iata": {
"label": "IATA"
"incline": {
"label": "Helling"
},
+ "incline_steps": {
+ "label": "Helling",
+ "options": {
+ "down": "Naar beneden",
+ "up": "Naar boven"
+ }
+ },
"information": {
"label": "Type"
},
"internet_access": {
"label": "Internettoegang",
"options": {
- "yes": "Ja",
"no": "Nee",
- "wlan": "Wifi",
+ "terminal": "Computer",
"wired": "Vast netwerk",
- "terminal": "Computer"
+ "wlan": "Wifi",
+ "yes": "Ja"
}
},
"lamp_type": {
},
"lanes": {
"label": "Rijbanen",
- "placeholder": "1, 2, 3, ..."
+ "placeholder": "1, 2, 3 …"
},
"layer": {
"label": "Relatieve hoogteligging"
"leaf_cycle": {
"label": "Bladercyclus",
"options": {
- "evergreen": "Groenblijvend",
"deciduous": "Bladverliezend",
- "semi_evergreen": "Half-Groenblijvend",
+ "evergreen": "Groenblijvend",
+ "mixed": "Gemengd",
"semi_deciduous": "Half-Bladverliezend",
- "mixed": "Gemengd"
+ "semi_evergreen": "Half-Groenblijvend"
}
},
"leaf_type": {
"label": "Bladsoort",
"options": {
"broadleaved": "Brede bladeren",
- "needleleaved": "Naalden",
+ "leafless": "Bladloos",
"mixed": "Gemengd",
- "leafless": "Bladloos"
+ "needleleaved": "Naalden"
}
},
"leisure": {
},
"levels": {
"label": "Niveaus",
- "placeholder": "2, 4, 6, ..."
+ "placeholder": "2, 4, 6 …"
},
"lit": {
"label": "Verlicht"
"label": "Type"
},
"maxspeed": {
- "label": "Maximum snelheid",
- "placeholder": "40, 50, 60, ..."
+ "label": "Snelheidsbeperking",
+ "placeholder": "40, 50, 60 …"
},
"mtb/scale": {
"label": "Mountain Bike Moeilijkheidsgraad",
- "placeholder": "0, 1, 2, ...",
"options": {
"0": "0: Vaste grind/aarde, geen obstakels, wijde bochten",
"1": "1: Weinig losse ondergrond, kleine obstakels, wijde bochten",
"2": "2: Veel losse ondergrond, grote obstakels, makkelijke haarspeldbochten",
"3": "3: Gladde ondergrond, grote obstakels, krappe haarspeldbochten",
"4": "4: Losse ondergrond of keien, gevaarlijke haarspeldbochten",
- "5": "5: Moeilijkst/gevaarlijkst, rotsblok gebieden, aardsverschuivingen",
- "6": "6: Niet berijdbaar, enkel voor hoogst ervaren mountain bikers"
- }
+ "5": "5: Moeilijkst/gevaarlijkst, gebieden met rotsblokken, aardverschuivingen",
+ "6": "6: Niet berijdbaar, enkel voor de allerbeste mountainbikers"
+ },
+ "placeholder": "0, 1, 2, 3 …"
},
"mtb/scale/imba": {
- "label": "IMBA Route Moeilijkheidsgraad",
- "placeholder": "Makkelijk, Gemiddeld, Moeilijk...",
+ "label": "IMBA Route-Moeilijkheidsgraad",
"options": {
"0": "Gemakkelijkst (witte cirkel)",
"1": "Makkelijk (groene cirkel)",
"2": "Gemiddeld (blauw vierkant)",
"3": "Moeilijk (Zwarte diamand)",
"4": "Extreem moeilijk (dubbele zwarte diamand)"
- }
+ },
+ "placeholder": "Makkelijk, Gemiddeld, Moeilijk …"
},
"mtb/scale/uphill": {
"label": "Mountain biking Moeilijkheidsgraad Berg-op",
- "placeholder": "0, 1, 2, ...",
"options": {
"0": "0: Gem. stijging <10%, grind/vaste aarde, geen obstakels",
"1": "1: Gem. stijging <15%, grind/vaste aarde, paar kleine objecten",
- "2": "2: Gem. stijging <20%, vaste ondergrond, vuistgrote stenen/rotsen/wortels",
- "3": "3: Gem. stijging <25%, variabele ondergrond, vuistgrote rotsen/takken",
- "4": "4: Gem. stijging <30%, slechte conditie, grote rotsen/takken",
- "5": "5: Erg stijl, fiets wordt meestal geduwd of gedragen"
- }
+ "2": "2: Gem. stijging <20%, stabiele ondergrond, vuistgrote stenen/wortels",
+ "3": "3: Gem. stijging <25%, variabele ondergrond, vuistgrote stenen/takken",
+ "4": "4: Gem. stijging <30%, slechte staat, grote rotsen/takken",
+ "5": "5: Erg steil, fiets wordt meestal geduwd of gedragen"
+ },
+ "placeholder": "0, 1, 2, 3 …"
},
"name": {
"label": "Naam",
"oneway": {
"label": "Eenrichtingsverkeer",
"options": {
+ "no": "Nee",
"undefined": "Aangenomen dat het Nee is",
- "yes": "Ja",
- "no": "Nee"
+ "yes": "Ja"
}
},
"oneway_yes": {
"label": "Eenrichtingsverkeer",
"options": {
+ "no": "Nee",
"undefined": "Aangenomen dat het Ja is",
- "yes": "Ja",
- "no": "Nee"
+ "yes": "Ja"
}
},
"opening_hours": {
"label": "Openingstijden"
},
"operator": {
- "label": "Keten"
+ "label": "Uitgebaat door"
},
"par": {
"label": "Par",
- "placeholder": "3, 4, 5..."
+ "placeholder": "3, 4, 5 …"
},
"park_ride": {
"label": "Parkeren en Reizen"
"parking": {
"label": "Type",
"options": {
- "surface": "Oppervlak",
- "multi-storey": "Parkeergebouw met meerdere verdiepingen",
- "underground": "ondergrond",
- "sheds": "Stallen",
"carports": "Carports",
"garage_boxes": "Garageboxen",
- "lane": "Parkeerstrook"
+ "lane": "Parkeerstrook",
+ "multi-storey": "Parkeergebouw met meerdere verdiepingen",
+ "sheds": "Stallen",
+ "surface": "Oppervlak",
+ "underground": "ondergrond"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Moeilijkheidsgraad",
- "placeholder": "Gemakkelijk, gemiddeld, moeilijk...",
"options": {
- "novice": "Beginner (educatief)",
- "easy": "Makkelijk (groen rondje)",
- "intermediate": "Gemiddeld (blauw vierkant)",
"advanced": "Gevorderd (zwarte ruit)",
+ "easy": "Makkelijk (groen rondje)",
"expert": "Expert (dubbele zwarte ruit)",
+ "extreme": "Extreem (klimuitrusting vereist)",
"freeride": "Freeride (niet op piste)",
- "extreme": "Extreem (klimuitrusting vereist)"
- }
+ "intermediate": "Gemiddeld (blauw vierkant)",
+ "novice": "Beginner (educatief)"
+ },
+ "placeholder": "Gemakkelijk, gemiddeld, moeilijk..."
},
"piste/grooming": {
"label": "Manier van sneeuw-grooming",
"options": {
- "classic": "Klassiek",
- "mogul": "Buckel",
"backcountry": "Freeride",
+ "classic": "Klassiek",
"classic+skating": "Klassiek en Schaatsen",
+ "mogul": "Buckel",
"scooter": "Scooter/Sneeuwscooter",
"skating": "Schaatsen"
}
"label": "Type",
"options": {
"downhill": "Berg-af",
+ "hike": "Wandelen",
+ "ice_skate": "IJsschaatsen",
"nordic": "Nordic",
+ "playground": "Speelplaats",
"skitour": "Skitour",
"sled": "Kleine slee",
- "hike": "Wandelen",
"sleigh": "Slee getrokken door dieren",
- "ice_skate": "IJsschaatsen",
- "snow_park": "Sneeuwpark",
- "playground": "Speelplaats"
+ "snow_park": "Sneeuwpark"
}
},
"place": {
"power": {
"label": "Type"
},
+ "power_supply": {
+ "label": "Stroomvoorziening"
+ },
"railway": {
"label": "Type"
},
},
"sac_scale": {
"label": "Wandelen Moeilijkheidsgraad",
- "placeholder": "Bergwandelen, Alpinewandelen...",
"options": {
- "hiking": "T1: Wandelen",
- "mountain_hiking": "T2: Bergwandelen",
- "demanding_mountain_hiking": "T3: Zwaar Bergwandelen",
"alpine_hiking": "T4: Alpinewandelen",
"demanding_alpine_hiking": "T5: Zwaar Alpinewandelen",
- "difficult_alpine_hiking": "T6: Moeilijk Alpinewandelen"
- }
+ "demanding_mountain_hiking": "T3: Zwaar Bergwandelen",
+ "difficult_alpine_hiking": "T6: Moeilijk Alpinewandelen",
+ "hiking": "T1: Wandelen",
+ "mountain_hiking": "T2: Bergwandelen"
+ },
+ "placeholder": "Bergwandelen, Alpinewandelen …"
+ },
+ "sanitary_dump_station": {
+ "label": "Toilet-afvoer"
},
"seasonal": {
"label": "Seizoensgebonden"
"service": {
"label": "Type"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Kettinggereedschap",
"options": {
+ "no": "Nee",
"undefined": "Aangenomen dat het Nee is",
- "yes": "Ja",
- "no": "Nee"
+ "yes": "Ja"
}
},
"service/bicycle/pump": {
"label": "Fietspomp",
"options": {
+ "no": "Nee",
"undefined": "Aangenomen dat het Nee is",
- "yes": "Ja",
- "no": "Nee"
+ "yes": "Ja"
+ }
+ },
+ "service_rail": {
+ "label": "Type Dienstspoor",
+ "options": {
+ "crossover": "Wisselspoor",
+ "siding": "Zijspoor",
+ "spur": "Aansluiting voor bedrijven",
+ "yard": "Bundel"
}
},
"shelter": {
},
"smoking": {
"label": "Roken",
- "placeholder": "Nee, Gescheiden, Ja, ...",
"options": {
- "no": "Roken nergens toegestaan",
- "separated": "Roken toegestaan op aangegeven plaatsen, fysiek niet gescheiden",
+ "dedicated": "Toegespitst op rokers (bv. rookclub)",
"isolated": "Roken toegestaan op aangegeven plaatsen, fysiek gescheiden",
+ "no": "Roken nergens toegestaan",
"outside": "Toegestaan buiten",
- "yes": "Overal toegestaan",
- "dedicated": "Toegespitst op rokers (bv. rookclub)"
- }
+ "separated": "Roken toegestaan op aangegeven plaatsen, fysiek niet gescheiden",
+ "yes": "Overal toegestaan"
+ },
+ "placeholder": "Nee, Gescheiden, Ja …"
},
"smoothness": {
"label": "Gladheid",
- "placeholder": "Dunne Wieltjes, Wielen, Offroad ...",
"options": {
+ "bad": "Stevige wielen: trekkingfiets, auto, riksja",
"excellent": "Dunne wieltjes: rolschaatsen, skateboard",
"good": "Dunne wielen: racefiets",
+ "horrible": "Offroad: zware offroadvoertuigen",
+ "impassable": "Ontoegankelijk / Geen voertuig op wielen",
"intermediate": "Wielen: stadsfiets, rolstoel, scooter",
- "bad": "Stevige wielen: trekkingfiets, auto, riksja",
"very_bad": "Grote Bodemvrijheid: lichte offroadvoertuigen",
- "horrible": "Offroad: zware offroadvoertuigen",
- "very_horrible": "Gespecialiseerde offroad: tractor, quad",
- "impassable": "Ontoegankelijk / Geen voertuig op wielen"
- }
+ "very_horrible": "Gespecialiseerde offroad: tractor, quad"
+ },
+ "placeholder": "Dunne Wieltjes, Wielen, Offroad …"
},
"social_facility_for": {
"label": "Bedoeld voor",
- "placeholder": "Daklozen, Andersvaliden, Kinderen enz ..."
+ "placeholder": "Daklozen, Andersvaliden, Kinderen …"
},
"source": {
"label": "Bron"
"label": "Sport"
},
"structure": {
- "label": "Bouwwerk",
- "placeholder": "Onbekend",
+ "label": "Constructie",
"options": {
"bridge": "Brug",
- "tunnel": "Tunnel",
- "embankment": "Dijk, talud",
"cutting": "Landuitsnijding",
- "ford": "fort"
- }
+ "embankment": "Dijk, talud",
+ "ford": "fort",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Onbekend"
},
"studio_type": {
"label": "Type"
},
"takeaway": {
"label": "Afhaal",
- "placeholder": "Ja, Nee, Alleen Afhaal...",
"options": {
- "yes": "Ja",
"no": "Nee",
- "only": "Alleen afhaal"
- }
+ "only": "Alleen Afhaal",
+ "yes": "Ja"
+ },
+ "placeholder": "Ja, Nee, Alleen Afhaal …"
},
"toilets/disposal": {
"label": "Afvoer",
"options": {
- "flush": "Doorspoelen",
- "pitlatrine": "Kuil/Latrine",
+ "bucket": "Emmer",
"chemical": "Chemisch",
- "bucket": "Emmer"
+ "flush": "Doorspoelen",
+ "pitlatrine": "Kuil/Latrine"
}
},
"tourism": {
},
"tracktype": {
"label": "Type Veldweg",
- "placeholder": "Vast, Voornamelijk Vast, Los...",
"options": {
"grade1": "Vast: verharde of zwaar compacte ondergrond",
"grade2": "Voornamelijk Vast: grind/rotsen met wat los materiaal",
"grade3": "Gelijke mengeling van vast en los materiaal",
"grade4": "Voornamelijk Los: aarde/zand/gras met wat vast materiaal",
"grade5": "Los: aarde/zand/gras"
- }
+ },
+ "placeholder": "Vast, Voornamelijk Vast, Los …"
},
"trail_visibility": {
"label": "Zichtbaarheid van de weg",
- "placeholder": "Uitmuntend, Goed, Slecht, ...",
"options": {
+ "bad": "Slecht: geen wegwijzers, paden soms zichtbaar/geen paden",
"excellent": "Uitstekend: duidelijke paden en overal wegwijzers",
"good": "Goed: zichtbare wegwijzers, soms wat zoeken",
- "intermediate": "Gemiddeld: weinig wegwijzers, paden meestal zichtbaar",
- "bad": "Slecht: geen wegwijzers, paden soms zichtbaar/geen paden",
"horrible": "Verschikkelijk: meestal geen paden, wat oriëntatie vaardigheden vereist",
+ "intermediate": "Gemiddeld: weinig wegwijzers, paden meestal zichtbaar",
"no": "Geen: geen paden, perfecte oriëntatie vaardigheden vereist"
- }
+ },
+ "placeholder": "Uitmuntend, Goed, Slecht …"
},
"trees": {
"label": "Bomen"
"water": {
"label": "Type"
},
+ "water_point": {
+ "label": "Watervoorziening"
+ },
"waterway": {
"label": "Type"
},
"website": {
"label": "Website",
- "placeholder": "http://voorbeeld.com/"
+ "placeholder": "http://example.com/"
},
"wetland": {
"label": "Type"
"presets": {
"address": {
"name": "Adres",
- "terms": "Adres"
+ "terms": "contact, plaats, adresgegevens, straat, huisnummer"
},
"aerialway": {
- "name": "Vliegroute",
- "terms": "Vliegroute, Vluchtroute, Luchtbaan"
+ "name": "Kabelbaan",
+ "terms": "skiën, skilift, stoeltjeslift, kabelbaan, gondellift, cabinebaan, staalkabel, teleferiek, teleferique"
},
"aerialway/cable_car": {
- "name": "Kabelbaan"
+ "name": "Kabelbaan met één of twee cabines"
},
"aerialway/chair_lift": {
- "name": "Stoeltjeslift",
- "terms": "stoeltjeslift"
+ "name": "Stoeltjeslift"
},
"aerialway/gondola": {
- "name": "Gondel",
- "terms": "Gondel, Gondola"
+ "name": "Kabelbaan met gondeltjes",
+ "terms": "gondellift, gondola"
},
"aerialway/magic_carpet": {
"name": "Tapijtlift"
},
+ "aerialway/platter": {
+ "name": "Stoeltjeslift met zitschijven in plaats van stoeltjes"
+ },
+ "aerialway/pylon": {
+ "name": "Kabelbaanpilaar"
+ },
+ "aerialway/rope_tow": {
+ "name": "Sleeplift"
+ },
+ "aerialway/station": {
+ "name": "Kabelbaanstation"
+ },
+ "aerialway/t-bar": {
+ "name": "Skilift met handvaten"
+ },
"aeroway": {
"name": "Vliegveld",
- "terms": "Startbaan, landingsbaan"
+ "terms": "startbaan, landingsbaan"
},
"aeroway/aerodrome": {
"name": "Luchthaven",
- "terms": "Luchthaven, vliegveld"
+ "terms": "vliegveld"
},
"aeroway/apron": {
"name": "Platform",
- "terms": "Taxibaan"
+ "terms": "taxibaan, apron, vliegveld"
},
"aeroway/gate": {
"name": "Gate",
- "terms": "Gate"
+ "terms": "terminal, boarden, passagiers, instappen, uitstappen"
},
"aeroway/hangar": {
"name": "Hangar",
- "terms": "Hangar"
+ "terms": "loods, hangaar, opslagplaats, shelter"
},
"aeroway/helipad": {
- "name": "Helikopterhaven",
- "terms": "Helihaven, helikopterdek"
+ "name": "Helipad",
+ "terms": "helihaven, helikopterhaven, helikopterdek, landingsplaats"
},
"aeroway/runway": {
"name": "Startbaan",
- "terms": "Startbaan, landingsbaan"
+ "terms": "landingsbaan"
},
"aeroway/taxiway": {
"name": "Taxibaan",
- "terms": "Taxibaan"
+ "terms": "taxiën"
},
"aeroway/terminal": {
"name": "Vliegveldterminal",
- "terms": "Luchthaventerminal, vertrekhal, aankomsthal"
+ "terms": "luchthaventerminal, vertrekhal, aankomsthal"
},
"amenity": {
"name": "Voorziening",
"name": "Kunstencentrum"
},
"amenity/atm": {
- "name": "Pinautomaat",
- "terms": "Pinautomaat"
+ "name": "Bankautomaat",
+ "terms": "pinnen,pinautomaat,bancontact,ATM,geld afhalen,geldautomaat"
},
"amenity/bank": {
"name": "Bank",
- "terms": "Bank"
+ "terms": "geld,rekening"
},
"amenity/bar": {
- "name": "Café",
- "terms": "Bar, café"
+ "name": "Bar",
+ "terms": "cocktailbar, dancing, disco, café"
},
"amenity/bbq": {
"name": "Barbecue/Grill",
- "terms": "Barbecue, Grill, Steengrill, BBQ, spit"
+ "terms": "barbecue, grill, steengrill, BBQ, spit"
},
"amenity/bench": {
- "name": "Bank",
- "terms": "Bankje"
+ "name": "Zitbank",
+ "terms": "bank, bankje"
},
"amenity/bicycle_parking": {
"name": "Fietsenstalling",
- "terms": "Fietsenrek, fietsenstalling"
+ "terms": "fietsenrek, fietsenparking"
},
"amenity/bicycle_rental": {
"name": "Fietsverhuur",
- "terms": "Fietsverhuur"
+ "terms": "huren, fietsen"
},
"amenity/bicycle_repair_station": {
"name": "Fietsherstelpunt",
"terms": "fietsonderhoud, onderhoud, banden, fietsbanden, fietspomp, fietsherstelstation, fietsenmaker"
},
+ "amenity/biergarten": {
+ "name": "Biergarten",
+ "terms": "bier,terras,café,cafe"
+ },
"amenity/boat_rental": {
- "name": "Bootverhuur"
+ "name": "Bootverhuur",
+ "terms": "boten, huren"
},
"amenity/bureau_de_change": {
- "name": "Wisselkantoor"
+ "name": "Wisselkantoor",
+ "terms": "wisselen, geld, bank, munteenheid"
},
"amenity/bus_station": {
"name": "Busstation",
},
"amenity/car_rental": {
"name": "Autoverhuur",
- "terms": "Autoverhuur"
+ "terms": "huurauto, huren"
},
"amenity/car_sharing": {
"name": "Autodelen",
- "terms": "Autodelen"
+ "terms": "gedeelde auto"
},
"amenity/car_wash": {
"name": "Autowasstraat",
- "terms": "Autowasstraat"
+ "terms": "carwash, wasstraat"
},
"amenity/charging_station": {
- "name": "Oplaadstation"
+ "name": "Oplaadstation",
+ "terms": "elektrisch, elektriciteit, oplaadpaal, tankstation"
},
"amenity/childcare": {
"name": "Kinderdagverblijf",
},
"amenity/cinema": {
"name": "Bioscoop",
- "terms": "Bioscoop"
+ "terms": "cinema, film, theater"
},
"amenity/clinic": {
- "name": "Kliniek"
+ "name": "Kliniek",
+ "terms": "dagkliniek"
},
"amenity/clock": {
"name": "Klok",
"terms": "feestzaal, parochiezaal, gemeenschapshuis"
},
"amenity/compressed_air": {
- "name": "Perslucht"
+ "name": "Perslucht",
+ "terms": "fietspomp, autobanden, pomp, opblazen, oppompen"
},
"amenity/courthouse": {
- "name": "Rechtbank",
- "terms": "Rechtzaal"
+ "name": "Gerechtsgebouw",
+ "terms": "rechtszaal,rechtbank,gerechtshof,paleis van justitie,justitiepaleis"
},
"amenity/dentist": {
"name": "Tandarts",
- "terms": "tandarts, tandheelkundige"
+ "terms": "tandheelkundige, mond, tanden"
},
"amenity/doctor": {
"name": "Dokter",
- "terms": "dokter, arts, geneesheer"
+ "terms": "arts, geneesheer, huisarts"
},
"amenity/dojo": {
"name": "Dojo / School voor Krijgskunsten"
},
"amenity/drinking_water": {
- "name": "Drinkwater",
- "terms": "Drinkwater"
+ "name": "Drinkwaterkraantje",
+ "terms": "water, kraan, verfrissing"
},
"amenity/embassy": {
- "name": "Ambassade",
- "terms": "Ambassade"
+ "name": "Ambassade"
},
"amenity/fast_food": {
"name": "Fastfoodrestaurant",
- "terms": "Fastfood"
+ "terms": "hamburgers, frieten, pizza"
},
"amenity/fire_station": {
- "name": "Brandweerkazerne",
- "terms": "Brandweerkazerne"
+ "name": "Brandweerkazerne"
},
"amenity/fountain": {
"name": "Fontein",
- "terms": "Fontein"
+ "terms": "water, sproeier"
},
"amenity/fuel": {
"name": "Tankstation",
- "terms": "Tankstation, benzinestation"
+ "terms": "benzinestation, auto, diesel, nafte"
},
"amenity/grave_yard": {
"name": "Begraafplaats",
- "terms": "Begraafplaats, kerkhof"
+ "terms": "kerkhof"
+ },
+ "amenity/grit_bin": {
+ "name": "Bak met Mengeling van Strooizout en Grind",
+ "terms": "winter, ijs, ijsvrij, ijsruimen, ontdooien, grip, antislip"
},
"amenity/hospital": {
"name": "Ziekenhuisgebied",
},
"amenity/library": {
"name": "Bibliotheek",
- "terms": "Bibliotheek"
+ "terms": "boeken, lenen, lezen, literatuuur"
},
"amenity/marketplace": {
- "name": "Markt",
- "terms": "Markt"
+ "name": "Marktplaats",
+ "terms": "groenten, vis, groentemarkt"
},
"amenity/nightclub": {
- "name": "Nachtclub"
+ "name": "Nachtclub",
+ "terms": "dancing, bar, uitgaan, disco"
},
"amenity/parking": {
- "name": "Parkeerplaats",
- "terms": "parking, parkeerplaats"
+ "name": "Parking",
+ "terms": "parkeerplaats"
},
"amenity/parking_entrance": {
- "name": "Ingang/Uitgang van Parkingcomplex"
+ "name": "Ingang/Uitgang van Parkingcomplex",
+ "terms": "inrit, uitrit"
},
"amenity/pharmacy": {
"name": "Apotheek",
- "terms": "Apotheek"
+ "terms": "geneesmiddelen, apoteek"
},
"amenity/place_of_worship": {
"name": "Gebedshuis",
- "terms": "Godshuis"
+ "terms": "godshuis, kerk, moskee"
},
"amenity/place_of_worship/buddhist": {
- "name": "Boedistische tempel",
- "terms": "Boedistische tempel"
+ "name": "Boeddhistische tempel",
+ "terms": "boedistische tempel, boeddha, boeddhisme"
},
"amenity/place_of_worship/christian": {
"name": "Kerk",
- "terms": "Kerk"
+ "terms": "christendom, Jezus, Christus, godshuis"
},
"amenity/place_of_worship/jewish": {
"name": "Synagoge",
- "terms": "Synagoge, sjoel"
+ "terms": "jodendom, sjoel"
},
"amenity/place_of_worship/muslim": {
"name": "Moskee",
- "terms": "Moskee"
+ "terms": "islam"
},
"amenity/police": {
- "name": "Politie",
- "terms": "Politie"
+ "name": "Politiekantoor",
+ "terms": "politie, rijkswacht, gendarmerie"
},
"amenity/post_box": {
"name": "Brievenbus",
- "terms": "postbus"
+ "terms": "postbus, bpost"
},
"amenity/post_office": {
"name": "Postkantoor",
- "terms": "Postkantoor"
+ "terms": "brievenbus, bpost"
},
"amenity/pub": {
"name": "Café",
- "terms": "Café, bar, kroeg, bierhuis, bier"
+ "terms": "bar, kroeg, bierhuis, bier"
},
"amenity/public_bookcase": {
- "name": "Openbare Boekenkast"
+ "name": "Openbare Boekenkast",
+ "terms": "boeken, literatuur, bibliotheek"
},
"amenity/ranger_station": {
"name": "Boswachtershut"
},
"amenity/restaurant": {
"name": "Restaurant",
- "terms": "Restaurant"
+ "terms": "kantine, snackbar, lunchroom, pizzeria"
+ },
+ "amenity/sanitary_dump_station": {
+ "name": "Kampeerauto-toilet-afvoer",
+ "terms": "kampeerauto,beerput,camper,kampeerwagen,mobilhome,zwerfwagen,motorhome,uitwerpselen,urine,toilet"
},
"amenity/school": {
"name": "Schoolgebied",
"terms": "afdak, schuilplaats, bescherming, beschutting, wachthuisje, wachthokje, bushokje, buskotje"
},
"amenity/social_facility": {
- "name": "Sociale Faciliteit"
+ "name": "Sociale Faciliteit",
+ "terms": "OCMW, kansarmen, hulp, hulpcentrum"
},
"amenity/social_facility/food_bank": {
"name": "Voedselbank",
"terms": "voedselbank"
},
+ "amenity/social_facility/group_home": {
+ "name": "Verzorgingstehuis (bv. bejaardentehuis)",
+ "terms": "rusthuis, bejaardentehuis"
+ },
"amenity/social_facility/homeless_shelter": {
- "name": "Opvangcentrum voor Daklozen"
+ "name": "Opvangcentrum voor Daklozen",
+ "terms": "dakloos"
},
"amenity/studio": {
- "name": "Studio"
+ "name": "Studio",
+ "terms": "Studio (Opnamestudio/Radio)"
},
"amenity/swimming_pool": {
"name": "Zwembad",
- "terms": "Zwembad"
+ "terms": "zwemmen, bad, water"
},
"amenity/taxi": {
- "name": "Taxistandplaats",
- "terms": "Taxistandplaats"
+ "name": "Taxistandplaats"
},
"amenity/telephone": {
"name": "Telefoon",
- "terms": "Telefoon"
+ "terms": "telefoonhokje"
},
"amenity/theatre": {
"name": "Theater",
- "terms": "Theater"
+ "terms": "opera, concertgebouw"
},
"amenity/toilets": {
"name": "Toiletten",
- "terms": "Toiletten"
+ "terms": "WC"
},
"amenity/townhall": {
"name": "Gemeentehuis",
- "terms": "Gemeentehuis, stadhuis"
+ "terms": "stadhuis, gemeentekantoor, stadsbestuur, burgemeester"
},
"amenity/university": {
- "name": "Campus van universiteit of hogeschool",
+ "name": "Campus van Universiteit of Hogeschool",
"terms": "universiteit, hogeschool, onderwijs, hoger onderwijs"
},
"amenity/vending_machine": {
"name": "Automaat",
- "terms": "automaat"
+ "terms": "verkoopautomaat"
},
"amenity/veterinary": {
"name": "Dierenarts",
- "terms": "veearts, dierenarts"
+ "terms": "veearts, dierendokter"
},
"amenity/waste_basket": {
"name": "Prullenbak",
- "terms": "Prullenbak, afvalbak"
+ "terms": "afvalbak, vuilnisbak"
},
"area": {
"name": "Gebied",
- "terms": "Gebied"
+ "terms": "vlak"
},
"barrier": {
- "name": "Barrière"
+ "name": "Barrière",
+ "terms": "grens, afscheiding, afsluiting, scheiding"
},
"barrier/block": {
- "name": "Blokkade"
+ "name": "Blok"
},
"barrier/bollard": {
- "name": "Poller"
+ "name": "Paaltjes",
+ "terms": "poller"
},
"barrier/cattle_grid": {
- "name": "Wildrooster"
+ "name": "Wildrooster",
+ "terms": "koeienrooster"
},
"barrier/city_wall": {
- "name": "Stadsmuur"
+ "name": "Stadsmuur",
+ "terms": "omwalling, wallen, verdediging"
},
"barrier/cycle_barrier": {
"name": "Slingerhek",
"terms": "gracht, sloot, water"
},
"barrier/entrance": {
- "name": "Ingang"
+ "name": "Doorgang",
+ "terms": "ingang, toegang"
},
"barrier/fence": {
"name": "Afrastering",
"terms": "afscheiding, omheining, hek, hekwerk, omrastering, raster, afrastering, heining"
},
"barrier/gate": {
- "name": "Hek"
+ "name": "Hek",
+ "terms": "hekken, poort"
},
"barrier/hedge": {
- "name": "Haag of heg",
+ "name": "Haag",
"terms": "heg, haag"
},
"barrier/kissing_gate": {
"name": "Voetgangershek"
},
"barrier/lift_gate": {
- "name": "Slagboom"
+ "name": "Slagboom",
+ "terms": "bareel"
},
"barrier/retaining_wall": {
"name": "Keermuur"
},
"barrier/toll_booth": {
"name": "Tolhuisje",
- "terms": "Tol, Tolhuisje"
+ "terms": "tol, betalen, heffing, tolkantoor"
},
"barrier/wall": {
"name": "Muur",
- "terms": "Muur, Wand"
+ "terms": "wand"
},
"boundary/administrative": {
"name": "Bestuurlijke grens"
},
"building": {
"name": "Gebouw",
- "terms": "Gebouw, Pand, Bouwwerk"
+ "terms": "pand,bouwwerk,bouwsel,constructie"
},
"building/apartments": {
"name": "Appartementen",
- "terms": "Appartement, Flat"
+ "terms": "flatgebouw, flats, appartementsgebouw, wolkenkrabber, woongebouw, residentie"
},
"building/barn": {
"name": "Schuur",
- "terms": "Schuur, Stal, Loods"
+ "terms": "stal, loods"
},
"building/bunker": {
"name": "Bunker",
"terms": "hut, blokhut, cabine, hout, balken, boomstammen"
},
"building/cathedral": {
- "name": "Kathedraal"
+ "name": "Kathedraal",
+ "terms": "kerk, christendom, bisschop"
},
"building/chapel": {
"name": "Kapel",
- "terms": "Kapel"
+ "terms": "kapelletje"
},
"building/church": {
- "name": "Kerk"
+ "name": "Kerk",
+ "terms": "christendom, godshuis"
},
"building/college": {
"name": "Gebouw van Beroepsschool",
"name": "Kantoorgebouw"
},
"building/construction": {
- "name": "Gebouw In Opbouw"
+ "name": "Gebouw In Opbouw",
+ "terms": "constructie, werken, onaf"
},
"building/detached": {
- "name": "Alleenstaand Huis"
+ "name": "Alleenstaand Huis",
+ "terms": "villa, woning"
},
"building/dormitory": {
- "name": "Slaapzaal"
+ "name": "Studentenflats",
+ "terms": "peda, kot, home, studentenkot"
},
"building/entrance": {
- "name": "Ingang/Uitgang"
+ "name": "Ingang/Uitgang",
+ "terms": "toegang"
},
"building/garage": {
"name": "Garage",
- "terms": "garage"
+ "terms": "garages"
},
"building/garages": {
- "name": "Garages"
+ "name": "Garages",
+ "terms": "garage"
},
"building/greenhouse": {
- "name": "Serre"
+ "name": "Broeikas",
+ "terms": "serre,kas"
},
"building/hospital": {
"name": "Ziekenhuisgebouw",
"terms": "ziekenhuis, hospitaal, kliniek"
},
"building/hotel": {
- "name": "Hotelgebouw"
+ "name": "Hotelgebouw",
+ "terms": "hotel"
},
"building/house": {
"name": "Huis",
- "terms": "huis, woning"
+ "terms": "woning,woonst,woongebied,huizen,residentieel,wonen,woonwijk,gebouw"
},
"building/hut": {
- "name": "Hut"
+ "name": "Hut",
+ "terms": "hutje"
},
"building/industrial": {
"name": "Industrieel gebouw"
"name": "Gebouw van Crèche/Kleuterschool"
},
"building/public": {
- "name": "Openbaar Gebouw"
+ "name": "Openbaar Gebouw",
+ "terms": "publiek"
},
"building/residential": {
- "name": "Woongebouw"
+ "name": "Woongebouw",
+ "terms": "residentieel,huis,appartementsgebouw,flats"
},
"building/retail": {
"name": "Handelspand",
"terms": "verkoop, winkel, handel, winkelgebouw"
},
"building/roof": {
- "name": "Dak"
+ "name": "Dak",
+ "terms": "afdak"
},
"building/school": {
"name": "Schoolgebouw",
"terms": "school, onderwijs, secundair onderwijs, lager onderwijs, basisschool, middelbaar, voortgezet onderwijs"
},
"building/shed": {
- "name": "Schuurtje"
+ "name": "Schuurtje",
+ "terms": "hutje, tuinhuis"
},
"building/stable": {
- "name": "Stal"
+ "name": "Stal",
+ "terms": "dieren, paarden, vee, stalling"
},
"building/static_caravan": {
"name": "Stacaravan"
},
"building/terrace": {
- "name": "Rijhuizen"
+ "name": "Rijhuizen",
+ "terms": "rijtjeshuizen,huis,woningen,woonsten,woongebied,gebouw"
},
"building/train_station": {
"name": "Treinstation",
},
"building/warehouse": {
"name": "Opslagplaats",
- "terms": "magazijn, opslagplaats"
+ "terms": "magazijn,warenhuis"
},
"craft": {
"name": "Vakmanschap",
},
"craft/beekeeper": {
"name": "Imker",
- "terms": "imker, bijenhouder"
+ "terms": "bijenhouder"
},
"craft/blacksmith": {
"name": "Smid",
- "terms": "smid, hoefsmid"
+ "terms": "hoefsmid"
},
"craft/boatbuilder": {
"name": "Scheepsbouwer"
},
"craft/brewery": {
"name": "Brouwerij",
- "terms": "brouwerij"
+ "terms": "bier, wijn"
},
"craft/carpenter": {
"name": "Timmerman",
- "terms": "timmerman"
+ "terms": "houtwerk, planken"
},
"craft/carpet_layer": {
"name": "Tapijtlegger"
},
"footway/crossing": {
"name": "Zebrapad",
- "terms": "oversteekplaats, voetganger"
+ "terms": "oversteekplaats,voetganger"
},
"footway/crosswalk": {
"name": "Zebrapad",
"terms": "golf"
},
"highway": {
- "name": "Autosnelweg"
+ "name": "Wegennet"
},
"highway/bridleway": {
"name": "Ruiterpad",
"name": "Woonerf"
},
"highway/mini_roundabout": {
- "name": "Minirotonde"
+ "name": "Rotonde waarvan door het midden kan worden gereden",
+ "terms": "rond-punt, rondpunt"
},
"highway/motorway": {
- "name": "Snelweg"
+ "name": "Autosnelweg",
+ "terms": "autostrade,snelweg"
},
"highway/motorway_junction": {
- "name": "Afslag / Afrit op Autosnelweg"
+ "name": "Afslag / Afrit op Autosnelweg",
+ "terms": "autostrade,snelweg,autosnelweg"
},
"highway/motorway_link": {
- "name": "Invoegstrook"
+ "name": "Verbinding van autosnelweg",
+ "terms": "autostrade,snelweg,autosnelweg,link,invoegstrook,afslag"
},
"highway/path": {
"name": "Pad"
"name": "Provinciale weg"
},
"highway/primary_link": {
- "name": "Afrit provinciale weg"
+ "name": "Verbinding van provinciale weg"
},
"highway/raceway": {
"name": "Raceparcours voor Gemotoriseerde Voertuigen"
"name": "Secundaire weg"
},
"highway/secondary_link": {
- "name": "Afslag secundaire weg"
+ "name": "Verbinding van secundaire weg"
},
"highway/service": {
"name": "Toegangsweg"
"terms": "straatverlichting, straatlamp, lantaarnpaal"
},
"highway/tertiary": {
- "name": "Tertiare weg",
- "terms": "aire, wegrestaurant, autostrade, autosnelweg, rustplaats, parkeerplaats, parking"
+ "name": "Tertiare weg"
},
"highway/tertiary_link": {
- "name": "Afrit tertiaire weg"
+ "name": "Verbinding van tertiaire weg"
},
"highway/track": {
"name": "Veldweg"
"terms": "verkeerslichten, rode lichten"
},
"highway/trunk": {
- "name": "Autoweg"
+ "name": "Autoweg",
+ "terms": "expressweg, autostrade, autosnelweg"
},
"highway/trunk_link": {
- "name": "Afrit autoweg"
+ "name": "Verbinding van autoweg",
+ "terms": "expressweg, autostrade, autosnelweg"
},
"highway/turning_circle": {
"name": "Keerplein"
"name": "Kerkhof",
"terms": "begraafplaats, zerk, kerk, dood, graf"
},
+ "landuse/commercial": {
+ "name": "Commercieel Gebied",
+ "terms": "kantoren, bedrijven"
+ },
"landuse/construction": {
"name": "Bouwterrein"
},
"name": "Grasland",
"terms": "gras, gazon"
},
+ "landuse/industrial": {
+ "name": "Industrieel Gebied",
+ "terms": "industriepark"
+ },
"landuse/landfill": {
"name": "Stort",
"terms": "stortplaats, vuilnisbelt"
"name": "Hooiland",
"terms": "wei, weide"
},
+ "landuse/military": {
+ "name": "Militair gebied"
+ },
"landuse/orchard": {
"name": "Boomgaard",
"terms": "boomgaard"
"landuse/quarry": {
"name": "Mijnbouw"
},
+ "landuse/residential": {
+ "name": "Woongebied",
+ "terms": "huizen,residentieel,wonen,woonwijk"
+ },
+ "landuse/retail": {
+ "name": "Handelsgebied",
+ "terms": "commercieel, handel, shoppingstraat, winkelstraat"
+ },
"landuse/vineyard": {
"name": "Wijngaard",
"terms": "wijngaard"
"terms": "vlaggemast"
},
"man_made/lighthouse": {
- "name": "Vuurtoren"
+ "name": "Vuurtoren",
+ "terms": "lichtbaken"
+ },
+ "man_made/mast": {
+ "name": "Zendmast",
+ "terms": "radiomast,antenne"
},
"man_made/observation": {
"name": "Uitkijktoren",
"terms": "uitkijktoren"
},
+ "man_made/petroleum_well": {
+ "name": "Oliebron",
+ "terms": "olieput,gasbron"
+ },
"man_made/pier": {
"name": "Pier"
},
"name": "Pijpleiding",
"terms": "pijplijn, pijpleiding"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "veevoeder,graansilo"
+ },
+ "man_made/storage_tank": {
+ "name": "Opslagtank",
+ "terms": "olietank,silo"
+ },
"man_made/survey_point": {
"name": "Landmeetkundig referentiepunt"
},
"terms": "vliegveld"
},
"military/barracks": {
- "name": "Kazerne",
- "terms": "kazerne"
+ "name": "Kazerne"
},
"military/bunker": {
"name": "Bunker",
"place/city": {
"name": "Stad"
},
+ "place/farm": {
+ "name": "Boerderij",
+ "terms": "hoeve,hof"
+ },
"place/hamlet": {
"name": "Dorp/gehucht/buurtschap"
},
"terms": "stroom, laagspanning, laagspanningsleiding, elektriciteitsnet, elektriciteitskabel"
},
"power/sub_station": {
- "name": "[verouderd] Klein onderstation"
+ "name": "Klein onderstation"
},
"power/substation": {
"name": "Transformatiestation",
- "terms": "stroom, elektriciteit, energievoorzieningen, transformator, distributie, transformatiecabine, laagspanning, hoogspanning, voltage, spanning"
+ "terms": "stroom, elektriciteit, energievoorzieningen, transformator, distributie, transformatiecabine, laagspanning, hoogspanning, voltage, spanning, onderstation, klein onderstation, distributiecabine, ondercentrale"
},
"power/tower": {
"name": "Hoogspanningsmast"
"name": "Treinhalte"
},
"railway/level_crossing": {
- "name": "Gelijkvloerse spoorwegovergang"
+ "name": "Spoorwegovergang",
+ "terms": "overweg,treinspoor"
},
"railway/monorail": {
"name": "Monorail, magneetzweefbaan",
"relation": {
"name": "Relatie"
},
+ "roundabout": {
+ "name": "Rotonde",
+ "terms": "rond-punt, rondpunt"
+ },
"route/ferry": {
"name": "Veerboottraject"
},
"name": "Hifi-/Bruingoedwinkel",
"terms": "audio, bruingoed, hifi, stereoinstallatie"
},
+ "shop/houseware": {
+ "name": "Huisraadwinkel",
+ "terms": "huiswaar,elektronica,meubilair,meubels,huishoudelijke elektronica,gebruiksvoorwerpen"
+ },
+ "shop/interior_decoration": {
+ "name": "Binnenhuisdecoratiewinkel",
+ "terms": "versiering, decoratie, huis, interieur, stijl"
+ },
"shop/jewelry": {
"name": "Juwelier",
"terms": "juwelier"
"name": "Massagewinkel",
"terms": "olie"
},
+ "shop/medical_supply": {
+ "name": "Winkel voor Medische Hulpmiddelen"
+ },
"shop/mobile_phone": {
"name": "Telefoonwinkel"
},
"terms": "brillenwinkel, brillenwinkel, lenzen, bril, zonnebril, oogarts"
},
"shop/organic": {
- "name": "Winkel met Organische Goederen [verouderde tag, gebruik in de plaats het echte type winkel en de tag organic=yes]"
+ "name": "Winkel met Organische Koopwaar"
},
"shop/outdoor": {
"name": "Winkel voor Benodigdheden voor Buitenactiviteiten",
- "terms": "trekking, fietsen, hike, gps, kamperen, tent"
+ "terms": "trekking,fietsen,hike,gps,kamperen,tent"
},
"shop/paint": {
"name": "Verfwinkel"
},
"shop/pawnbroker": {
"name": "Bank van lening",
- "terms": "pandhuis, lommerd, lombard, kredietinstelling, lenen, geld"
+ "terms": "pandhuis,lommerd,lombard,kredietinstelling,lenen,geld"
},
"shop/pet": {
"name": "Dierenwinkel"
},
"shop/pyrotechnics": {
"name": "Vuurwerkwinkel",
- "terms": "vuurpijlen, buskruit, nieuwjaar"
+ "terms": "vuurpijlen,buskruit,nieuwjaar"
},
"shop/radiotechnics": {
"name": "Winkel voor Radio- en Elektronische Componenten",
- "terms": "radiotechniek, satelliet-TV"
+ "terms": "radiotechniek,satelliet-TV"
},
"shop/religion": {
"name": "Religieuze Winkel",
- "terms": "liturgisch centrum, kerk, godsdienstwinkel, kruisbeelden, souvenirwinkel"
+ "terms": "liturgisch centrum,kerk,godsdienstwinkel,kruisbeelden,souvenirwinkel"
},
"shop/scuba_diving": {
"name": "Duikwinkel",
- "terms": "diepzeeduiken, duiken, duiksport, scuba"
+ "terms": "diepzeeduiken,duiken,duiksport,scuba"
},
"shop/seafood": {
"name": "Viswinkel"
},
"shop/second_hand": {
"name": "Tweedehandswinkel",
- "terms": "hergebruik, doorverkoop"
+ "terms": "hergebruik,doorverkoop"
},
"shop/shoes": {
"name": "Schoenenwinkel"
},
"shop/tailor": {
"name": "Kleermaker",
- "terms": "maatwerk, kleren, kledij, kostuum"
+ "terms": "maatwerk,kleren,kledij,kostuum"
},
"shop/tattoo": {
"name": "Tattoozetter"
},
"shop/ticket": {
"name": "Ticketverkoop",
- "terms": "toegangskaartjes, ticketjes"
+ "terms": "toegangskaartjes,ticketjes"
},
"shop/tobacco": {
"name": "tabak winkel",
},
"shop/vacuum_cleaner": {
"name": "Stofzuigerwinkel",
- "terms": "huishouden, schoonmaken, poetsen, stofzuigen, electro, elektro"
+ "terms": "huishouden,schoonmaken,poetsen,stofzuigen,electro,elektro"
},
"shop/variety_store": {
"name": "Euroshop"
},
"shop/window_blind": {
"name": "Jaloeziewinkel",
- "terms": "zonwering, luiken, jaloezieën"
+ "terms": "zonwering,luiken,jaloezieën"
},
"shop/wine": {
"name": "Wijnwinkel"
},
"tourism/guest_house": {
"name": "Pension",
- "terms": "bed and breakfast, bed & breakfast, hotel"
+ "terms": "bed and breakfast,bed & breakfast,hotel,B&B"
},
"tourism/hostel": {
"name": "Jeugdherberg"
},
"traffic_calming/bump": {
"name": "Kleine verkeersdrempel",
- "terms": "snelheidsdrempel, plateau, verkeersplateau"
+ "terms": "snelheidsdrempel,plateau,verkeersplateau"
},
"traffic_calming/hump": {
"name": "Verkeersdrempel, 2 meter of langer",
- "terms": "snelheidsdrempel, plateau, verkeersplateau"
+ "terms": "snelheidsdrempel,plateau,verkeersplateau"
},
"traffic_calming/rumble_strip": {
"name": "Verkeerswasbord",
- "terms": "rammelstrook, ribbeltjesstrook, ribbelstrook, ribbelstrook over volledig wegdek"
+ "terms": "rammelstrook,ribbeltjesstrook,ribbelstrook,ribbelstrook over volledig wegdek"
},
"traffic_calming/table": {
"name": "Verkeersplateau",
- "terms": "verhoogd zebrapad, verkeersdrempel, drempel, plateau"
+ "terms": "verhoogd zebrapad,verkeersdrempel,drempel,plateau"
},
"type/boundary": {
"name": "Grens"
},
"type/restriction/only_straight_on": {
"name": "Niet Afslaan",
- "terms": "rechtdoor, niet, draaien, afslaan"
+ "terms": "rechtdoor,niet,draaien,afslaan"
},
"type/route": {
"name": "Route"
},
"type/route/train": {
"name": "Treinroute",
- "terms": "spoor, NMBS, NS"
+ "terms": "spoor,NMBS,NS"
},
"type/route/tram": {
"name": "Tramtraject"
"terms": "dam"
},
"waterway/ditch": {
- "name": "Sloot, greppel of gracht"
+ "name": "Greppel",
+ "terms": "sloot,gracht"
},
"waterway/drain": {
- "name": "Sloot, greppel of gracht"
+ "name": "Sloot",
+ "terms": "greppel,gracht"
+ },
+ "waterway/fuel": {
+ "name": "Tankstation voor Boten",
+ "terms": "schip,brandstof"
},
"waterway/river": {
"name": "Rivier",
- "terms": "rivier, stroom"
+ "terms": "stroom,beek"
},
"waterway/riverbank": {
- "name": "Rivieroever"
+ "name": "Rivieroever",
+ "terms": "oever"
+ },
+ "waterway/sanitary_dump_station": {
+ "name": "Boot-toilet-afvoer",
+ "terms": "schip,uitwerpselen,urine,toilet"
},
"waterway/stream": {
"name": "Beek",
- "terms": "stroom, rivier"
+ "terms": "stroom,rivier"
},
"waterway/weir": {
- "name": "Stuw"
+ "name": "Stuw",
+ "terms": "waterkering,stuwdam,keerdam"
}
}
}
+++ /dev/null
-{}
\ No newline at end of file
"commit": {
"title": "Lagre endringer",
"description_placeholder": "Kort beskrivelse av dine bidrag",
- "message_label": "Lagre beskjed",
"save": "Lagre",
"cancel": "Avbryt",
"warnings": "Advarsler",
"title": "Lagre",
"help": "Lagre endringene i OpenStreetMap, slik at de blir synlige for andre brukere.",
"no_changes": "Ingen endringer å lagre.",
- "error": "Det oppstod en feil ved forsøk på å lagre",
"uploading": "Laster opp endringer til OpenStreetMap.",
"unsaved_changes": "Du har ulagrede endringer"
},
"fields": {
"access": {
"label": "Tilgang",
- "placeholder": "Ukjent",
- "types": {
- "foot": "Fot",
- "motor_vehicle": "Motorkjøretøy",
- "bicycle": "Sykler",
- "horse": "Hester"
- },
"options": {
- "yes": {
- "title": "Tillatt",
- "description": "Tilgang gitt av lov; fri tilgang"
+ "designated": {
+ "description": "Tilgang tillatt i henhold til skilt eller spesifike lokale lover"
+ },
+ "destination": {
+ "description": "Tilgang kun tillatt for å nå et mål",
+ "title": "Mål"
},
"no": {
- "title": "Forbudt",
- "description": "Tilgang ikke tillatt for allmennheten"
+ "description": "Tilgang ikke tillatt for allmennheten",
+ "title": "Forbudt"
},
"permissive": {
- "title": "Begrenset",
- "description": "Tilgang tillatt frem til eieren trekker tillatelsen tilbake"
+ "description": "Tilgang tillatt frem til eieren trekker tillatelsen tilbake",
+ "title": "Begrenset"
},
"private": {
- "title": "Privat",
- "description": "Tilgang tillatt kun ved tillatelse fra eieren på individuell basis"
+ "description": "Tilgang tillatt kun ved tillatelse fra eieren på individuell basis",
+ "title": "Privat"
},
- "designated": {
- "description": "Tilgang tillatt i henhold til skilt eller spesifike lokale lover"
- },
- "destination": {
- "title": "Mål",
- "description": "Tilgang kun tillatt for å nå et mål"
+ "yes": {
+ "description": "Tilgang gitt av lov; fri tilgang",
+ "title": "Tillatt"
}
+ },
+ "placeholder": "Ukjent",
+ "types": {
+ "bicycle": "Sykler",
+ "foot": "Fot",
+ "horse": "Hester",
+ "motor_vehicle": "Motorkjøretøy"
}
},
"address": {
"label": "Adresse",
"placeholders": {
- "street": "Gate",
- "city": "By"
+ "city": "By",
+ "street": "Gate"
}
},
"admin_level": {
"clock_direction": {
"label": "Retning",
"options": {
- "clockwise": "Med klokken",
- "anticlockwise": "Mot klokken"
+ "anticlockwise": "Mot klokken",
+ "clockwise": "Med klokken"
}
},
"collection_times": {
"internet_access": {
"label": "Internettilgang",
"options": {
- "wlan": "Trådløs",
+ "terminal": "Terminal",
"wired": "Kablet",
- "terminal": "Terminal"
+ "wlan": "Trådløs"
}
},
"landuse": {
},
"structure": {
"label": "Struktur",
- "placeholder": "Ukjent",
"options": {
"bridge": "Bru",
"tunnel": "Tunnel"
- }
+ },
+ "placeholder": "Ukjent"
},
"studio_type": {
"label": "Type"
"area": "Stworzono koło z obszaru."
},
"not_closed": "Z tego obiektu nie można zrobić okręgu, ponieważ nie jest pętlą.",
- "too_large": "Nie można tego zaokrąglić, ponieważ nie jest widoczne wystarczająco dużo tego obiektu."
+ "too_large": "Nie można tego zaokrąglić, ponieważ nie jest widoczne wystarczająco dużo tego obiektu.",
+ "connected_to_hidden": "Z tego obiektu nie można utworzyć okręgu, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"orthogonalize": {
"title": "Koryguj prostopadłość",
"area": "Stworzono kąty proste obszaru."
},
"not_squarish": "Nie można stworzyć kątów prostych, gdyż obiekt nie posiada czterech boków.",
- "too_large": "Nie można skorygować równoległości, ponieważ nie jest widoczne wystarczająco dużo tego obiektu."
+ "too_large": "Nie można skorygować równoległości, ponieważ nie jest widoczne wystarczająco dużo tego obiektu.",
+ "connected_to_hidden": "Z tego obiektu nie można utworzyć kwadratu, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"straighten": {
"title": "Prostowanie",
"description": "Wyprostuj tę linię.",
"key": "S",
"annotation": "Wyprostowano linię.",
- "too_bendy": "Nie można wyprostować tej linii gdyż zakręca ona zbyt mocno."
+ "too_bendy": "Nie można wyprostować tej linii gdyż zakręca ona zbyt mocno.",
+ "connected_to_hidden": "Ta linia nie może być wyprostowana, ponieważ jest połączona z innym niewidocznym obiektem lub jego cechą. "
},
"delete": {
"title": "Usuń",
"relation": "Usunięto relację.",
"multiple": "Usunięto {n} obiekt(ów)."
},
- "incomplete_relation": "Tego obiektu nie można usunąć, ponieważ nie został w pełni pobrany."
+ "incomplete_relation": "Tego obiektu nie można usunąć, ponieważ nie został w pełni pobrany.",
+ "part_of_relation": "Ten obiekt nie może zostać usunięty, ponieważ jest częścią większej relacji. Usuń obiekt z tej relacji.",
+ "connected_to_hidden": "Tego obiektu nie można usunąć, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"add_member": {
"annotation": "Dodano członka relacji."
"description": "Rozłącz te dwie drogi.",
"key": "D",
"annotation": "Rozłączono drogi/obszary.",
- "not_connected": "Nie ma tu wystarczająco wielu linii/obszarów do rozłączenia."
+ "not_connected": "Nie ma tu wystarczająco wielu linii/obszarów do rozłączenia.",
+ "connected_to_hidden": "Tego obiektu nie można odłączyć, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"merge": {
"title": "Scal",
"multiple": "Przesunięto wiele obiektów."
},
"incomplete_relation": "Tego obiektu nie można przesunąć, gdyż nie został całkiem pobrany.",
- "too_large": "Tego obiektu nie można przesunąć, gdyż nie jest ono wystarczająco widoczne."
+ "too_large": "Tego obiektu nie można przesunąć, gdyż nie jest ono wystarczająco widoczne.",
+ "connected_to_hidden": "Tego obiektu nie można przesunąć, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"rotate": {
"title": "Obróć",
"line": "Obrócono linię.",
"area": "Obrócono obszar."
},
- "too_large": "Tego obiektu nie można obrócić, gdyż nie jest ono wystarczająco widoczne."
+ "too_large": "Tego obiektu nie można obrócić, gdyż nie jest ono wystarczająco widoczne.",
+ "connected_to_hidden": "Tego obiektu nie można obrócić, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"reverse": {
"title": "Odwróć",
"multiple": "Rozdziel {n} linii/granic obszarów"
},
"not_eligible": "Linie nie mogą zostać rozdzielone na ich początku lub końcu.",
- "multiple_ways": "Jest tu zbyt wiele linii do rozdzielenia."
+ "multiple_ways": "Jest tu zbyt wiele linii do rozdzielenia.",
+ "connected_to_hidden": "Tego obiektu nie można podzielić, ponieważ jest połączony z innym niewidocznym obiektem lub jego cechą. "
},
"restriction": {
"help": {
"logout": "wyloguj",
"loading_auth": "Łączenie z OpenStreetMap...",
"report_a_bug": "zgłoś błąd",
+ "feature_info": {
+ "hidden_warning": "{count} ukrytych obiektów",
+ "hidden_details": "Te obiekty są obecnie ukryte: {details}"
+ },
"status": {
"error": "Nie można połączyć się z API.",
"offline": "API jest offline. Spróbuj edytować później.",
"commit": {
"title": "Zapisz zmiany",
"description_placeholder": "Zwięzły opis twoich zmian",
- "message_label": "Opis zmian",
"upload_explanation": "Zmiany, które wyślesz będą widoczne na wszystkich mapach używających danych OpenStreetMap.",
"upload_explanation_with_user": "Zmiany, które wyślesz jako {user} będą widoczne na wszystkich mapach używających danych OpenStreetMap.",
"save": "Zapisz",
"description": "Dane mapy",
"data_layers": "Warstwy danych",
"fill_area": "Wypełnianie obszarów",
- "map_features": "Obiekty na mapie"
+ "map_features": "Obiekty na mapie",
+ "autohidden": "Te obiekty zostały automatycznie ukryte ze względu na ich zbyt dużą ilość. Jeśli chcesz je edytować, przybliż mapę."
},
"feature": {
"points": {
"tooltip": "Użyteczne miejsce (POI)"
},
"major_roads": {
- "description": "Główne drogi"
+ "description": "Główne drogi",
+ "tooltip": "Autostrady, ulice, itp."
},
"minor_roads": {
- "description": "Drogi drugorzędne"
+ "description": "Drogi drugorzędne",
+ "tooltip": "Drogi wewnętrzne, alejki parkingowe, ścieżki, etc."
},
"paths": {
- "description": "Ścieżki"
+ "description": "Ścieżki",
+ "tooltip": "Chodniki, ścieżki dla pieszych, ścieżki rowerowe, etc."
},
"buildings": {
- "description": "Budynki"
+ "description": "Budynki",
+ "tooltip": "Budynki, wiaty, garaże, etc."
+ },
+ "landuse": {
+ "description": "Obiekty użytkowania terenów",
+ "tooltip": "Lasy, pola, parki, osiedla mieszkaniowe, obszary komercyjne, etc."
},
"boundaries": {
- "description": "Granice"
+ "description": "Granice",
+ "tooltip": "Granice administracyjne"
+ },
+ "water": {
+ "description": "Obiekty wodne",
+ "tooltip": "Rzeki, jeziora, stawy, dorzecza, etc."
+ },
+ "rail": {
+ "description": "Obiekty kolejowe",
+ "tooltip": "Tory kolejowe"
+ },
+ "power": {
+ "description": "Obiekty związane z dystrybucją prądu elektrycznego.",
+ "tooltip": "Linie energetyczne, elektrownie, podstacje, etc."
+ },
+ "past_future": {
+ "description": "Przeszłość/przyszłość",
+ "tooltip": "Projektowane, w czasie budowy, opuszczone, wyburzone, etc."
},
"others": {
- "description": "Inne"
+ "description": "Inne",
+ "tooltip": "Wszystko pozostałe"
}
},
"area_fill": {
"wireframe": {
- "description": "Bez wypełnienia (szkielet)"
+ "description": "Bez wypełnienia (szkielet)",
+ "tooltip": "Włączenie trybu szkieletowego ułatwia przeglądanie zdjęć w tle."
},
"partial": {
- "description": "Częściowe wypełnienie"
+ "description": "Częściowe wypełnienie",
+ "tooltip": "Obszary wypełnione są tylko wzdłuż ich wewnętrznych krawędzi. (Polecane dla początkujących mapowiczów)"
},
"full": {
- "description": "Pełne wypełnienie"
+ "description": "Pełne wypełnienie",
+ "tooltip": "Obszary są rysowane z pełnym wypełnieniem."
}
},
"restore": {
"title": "Zapisz",
"help": "Zapisz zmiany na OpenStreetMap, aby były one widoczne dla innych.",
"no_changes": "Brak zmian do zapisania.",
- "error": "Wystąpił błąd podczas próby zapisu",
+ "error": "Wystąpiły błędy podczas próby zapisu. ",
+ "status_code": "Serwer zwrócił kod {code}",
+ "unknown_error_details": "Upewnij się że jesteś połączony z internetem.",
"uploading": "Wysyłanie zmian do OpenStreetMap.",
- "unsaved_changes": "Masz niezapisane zmiany."
+ "unsaved_changes": "Masz niezapisane zmiany.",
+ "conflict": {
+ "header": "Napraw konflikt edycji",
+ "count": "Konflikt {num} z {total}",
+ "previous": "< Poprzedni",
+ "next": "Następny >",
+ "keep_local": "Zachowaj moje",
+ "keep_remote": "Użyj ichniejszych",
+ "restore": "Przywróć",
+ "delete": "Pozostaw usunięty",
+ "download_changes": "Lub pobierz swoje zmiany.",
+ "done": "Wszystkie konflikty rozwiązane!",
+ "help": "Inny użytkownik zmienił niektóre z obiektów, które właśnie zmodyfikowałeś.\nWybierz każdą pozycję z osobna, aby poznać szczegóły konfliktu i wybrać jego rozwiązanie.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Ten obiekt został skasowany przez {user}.",
+ "location": "Ten obiekt został przesunięty przez ciebie i {user}.",
+ "nodelist": "Punkty zostały zmienione przez ciebie i {user}.",
+ "memberlist": "Członkowie relacji zostali zmodyfikowani zarówno przez ciebie jak i {user}.",
+ "tags": "Ustawiłeś wartość <b>{tag}</b> na \"{local}\", podczas gdy {user} zmienił go na \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Zmiany zostały wprowadzone do OSM!",
"help_html": "Twoje zmiany powinny się pojawić w przeciągu kilku minut na standardowej warstwie mapy. Odświeżenie innych warstw może potrwać nieco dłużej (<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map'>szczegóły</a>).\n"
},
"confirm": {
- "okay": "Okej"
+ "okay": "Okej",
+ "cancel": "Anuluj"
},
"splash": {
"welcome": "Witaj w edytorze iD map OpenStreetMap",
"browse": "Otwórz plik .gpx"
},
"mapillary": {
+ "tooltip": "Zdjęcia z serwisu Mapillary",
"title": "Nakładka zdjęć (Mapillary)",
"view_on_mapillary": "Zobacz ten obraz w Mapillary"
},
"help": {
"title": "Pomoc",
- "help": "# Pomoc\n\nTo jest edytor [OpenStreetMap](http://www.openstreetmap.org/),\nwolnej i edytowalnej mapy świata. Możesz go używać do dodawania i\naktualizacji danych w twoim rejonie, czyniąc otwartą mapę świata lepszą\ndla każdego.\n\nModyfikacje wprowadzone na tej mapie będą widoczne dla wszystkich\nużywających OpenStreetMap. Aby wprowadzić modyfikacje, potrzebujesz\n[darmowego konta OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n[Edytor iD](http://ideditor.com/) jest projektem społecznościowym z\n[kodem dostępnym na GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Pomoc\n\nTo jest edytor [OpenStreetMap](http://www.openstreetmap.org/),\nwolnej i edytowalnej mapy świata. Możesz go używać do dodawania i\naktualizacji danych w twoim rejonie, czyniąc otwartą mapę świata lepszą\ndla każdego.\n\nModyfikacje wprowadzone na tej mapie będą widoczne dla wszystkich\nużywających OpenStreetMap. Aby wprowadzić modyfikacje,\nmusisz się [zalogować](https://www.openstreetmap.org/login).\n\n[Edytor iD](http://ideditor.com/) jest projektem społecznościowym z\n[kodem dostępnym na GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Edycja i zapis\n\nTen edytor został zaprojektowany do pracy w trybie online i już go używasz poprzez stronę\ninternetową.\n\n### Wybieranie obiektów\n\nAby wybrać obiekt na mapie, na przykład droga, czy POI, kliknij go na mapie.\nSpowoduje to podświetlenie wybranego obiektu, otworzenie panelu zawierającego szczegóły\no nim i wyświetlenie menu z poleceniami, które możesz wykonać na obiekcie.\n\nWiele obiektów może zostać wybranych przez przytrzymanie wciśniętego klawisza 'Shift' i lewego klawisza myszy, z jednoczesnym przeciągnięciem zaznaczając interesujący nas obszar mapy. Spowoduje to wybór wszystkich obiektów zawartych w narysowanym prostokącie, umożliwiając Tobie wykonywanie działań na kilku obiektach naraz.\n\n### Zapisywanie modyfikacji\n\nGdy wprowadzisz zmiany, na przykład przez modyfikacje dróg, budynków i miejsc, są one\nprzechowywane lokalnie aż zapiszesz je na serwerze. Nie martw się, gdy popełnisz błąd - możesz\ncofnąć zmiany przez kliknięcie na przycisk cofnij i powtórzyć je poprzez kliknięcie na przycisk powtórz.\n\nKliknij 'Zapisz' aby skończyć grupę modyfikacji - na przykład, gdy skończyłeś pewien obszar miasta i\nchcesz zacząć następny. Będziesz miał wtedy szansę przejrzeć, co zrobiłeś, a edytor dostarczy pomocne\nsugestie i ostrzeżenia w razie, gdyby coś było nie tak z twoimi zmianami.\n\nJeśli wszystko dobrze wygląda, możesz podać krótki komentarz opisujący zmianę, którą wprowadziłeś\ni kliknąć 'Zapisz' ponownie, aby wysłać zmiany do [OpenStreetMap.org](http://www.openstreetmap.org/),\ngdzie będą one widoczne dla wszystkich użytkowników i dostępne dla innych do bazowania na nich i\ndalszego ulepszania.\n\nJeżeli nie możesz skończyć swoich modyfikacji w czasie jednej sesji, możesz opuścić okno edytora i\nwrócić później (na tym samym komputerze i w tej samej przeglądarce), a edytor zaoferuje ci przywrócenie\ntwojej pracy.\n",
"roads": "# Drogi\n\nMożesz tworzyć, poprawiać i usuwać drogi używając tego edytora. Drogi mogą być wszelkiego rodzaju:\nścieżki, ulice, szlaki, ścieżki rowerowe i tak dalej - każdy często uczęszczany odcinek powinien dać się\nprzedstawić.\n\n### Zaznaczanie\n\nKliknij drogę, aby ją zaznaczyć. Obwiednia powinna stać się widoczna, wraz z małym menu\nnarzędziowym na mapie oraz panelem bocznym pokazującym więcej informacji na temat drogi.\n\n### Modyfikowanie\n\nCzęsto będziesz widział drogi, które nie są wyrównane ze zdjęciami satelitarnymi lub śladami GPS.\nMożesz dopasować te drogi tak, aby były we właściwym miejscu.\n\nNajpierw kliknij drogę, którą chcesz zmienić. Podświetli ją to oraz pokaże punkty kontrolne, które\nmożesz przesunąć w lepsze miejsce. Jeżeli chcesz dodać nowe punkty kontrolne, aby droga\nbyła bardziej szczegółowa, dwukrotnie kliknij część drogi bez punktu, a w tym miejscu nowy się\npojawi.\n\nJeżeli droga łączy się z inną drogą, ale nie jest prawidłowo połączona z nią na mapie, możesz\nprzeciągnąć jeden z puntów kontrolnych na drugą drogę w celu ich połączenia. Prawidłowe połączenia\ndróg są ważne dla mapy i kluczowe dla wyznaczania tras.\n\nMożesz też kliknąć narzędzie 'Przesuń' lub nacisnąć klawisz `M` aby przesunąć jednocześnie całą\ndrogę, a następnie kliknąć ponownie, aby zachować to przesunięcie.\n\n### Usuwanie\n\nGdy droga jest całkiem błędna - widzisz, że nie istnieje na zdjęciach satelitarnych (a najlepiej sam\nsprawdziłeś w terenie, że jej nie ma) - możesz usunąć ją. Uważaj, gdy usuwasz obiekty - wyniki usunięcia,\ntak jak każdej modyfikacji, są widoczne dla wszystkich, a zdjęcie satelitarne często nie są aktualne,\nwięc droga może być po prostu nowo wybudowana.\n\nMożesz usunąć drogę przez zaznaczenie jej, a następnie kliknięcie ikony kosza lub wciśnięcie\nklawisza 'Delete'.\n\n### Tworzenie\n\nGdzieś tam powinna być droga, ale jej nie ma? Kliknij przycisk 'Linia' w górnym lewym rogu edytora\nlub naciśnij klawisz '2' na klawiaturze, aby zacząć rysować linię.\n\nKliknij początek drogi na mapie, aby zacząć rysować. Jeżeli droga odchodzi od już istniejącej, zacznij\nprzez kliknięcie w miejscu, w którym się łączą.\n\nNastępnie klikaj na punktach wzdłuż drogi tak, aby biegła ona odpowiednio według zdjęć satelitarnych\nlub GPS. Jeżeli droga, którą rysujesz, krzyżuje się z inną, połącz je, klikając na punkcie przecięcia. Gdy\nskończysz rysować, dwukrotnie kliknij ostatni punkt lub naciśnij klawisz 'Enter' na klawiaturze.\n",
+ "gps": "# GPS\n\nDane GPS są najbardziej zaufanym źródłem dla OpenStreetMap. Ten edytor obsługuje lokalne ślady - pliki `.gpx` na twoim komputerze. Możesz zbierać tego\nrodzaju ślady GPS używając aplikacji na smartfony lub sprzętu GPS.\n\nInformacje jak używać GPS-u do zbierania informacji o okolicy możesz\nznaleźć pod [Zbieranie informacji z GPS](http://learnosm.org/en/beginner/using-gps/).\n\nAby użyć śladu GPX do rysowania mapy, przeciągnij i upuść plik GPX na edytor.\nJeżeli zostanie rozpoznany, zostanie dodany na mapę w postaci jaskrawej linii.\nKliknij menu 'Dane mapy' po prawej stronie, aby włączyć, wyłączyć lub powiększyć\ndo nowej warstwy GPX.\n\nŚlad GPX nie jest bezpośrednio wysyłany do OpenStreetMap - najlepiej użyć go\ndo rysowania mapy, używając go jako wzoru dla nowych obiektów, które dodasz.\nAby wysłać ślad na serwer odwiedź stronę [Publiczne ślady GPS](http://www.openstreetmap.org/trace/create),\nbędziesz mógł go udostępnić innym użytkownikom.\n",
"imagery": "# Zdjęcia\n\nZdjęcia lotnicze/satelitarne są ważnym zasobem w rysowaniu map. Kolekcja zdjęć lotniczych,\nsatelitarnych i innych wolnodostępnych źródeł jest dostępna w edytorze w menu 'Ustawienia tła' po\nprawej stronie.\n\nDomyślnie wyświetlana jest warstwa zdjęć satelitarnych z [Bing Maps](http://www.bing.com/maps/),\nale w miarę przybliżania i pojawiają się nowe źródła. Niektóre kraje, takie jak Stany Zjednoczone, Francja\nczy Dania mają w pewnych miejscach dostępne zdjęcia bardzo wysokiej jakości.\n\nZdjęcia są czasem przesunięte względem danych na mapie z powodu błędu dostawcy zdjęć. Jeżeli\nwidzisz dużo dróg przesuniętych względem tła, zastanów się, zanim je wszystkie wyrównasz względem\ntła. Zamiast tego możesz dostosować przesunięcie zdjęć tak, aby zgadzały się z istniejącymi danymi przez\nnaciśnięcie przycisku 'Wyrównaj podkład' na dole Ustawień tła.\n",
"addresses": "# Adresy\n\nAdresy są jedną z najbardziej użytecznych informacji na mapie.\n\nMimo że adresy są często reprezentowane jako części ulic, w OpenStreetMap są one\nzapisywane jako atrybuty budynków i miejsc wzdłuż ulicy.\n\nMożesz dodać nową informację adresową do miejsc narysowanych w postaci\nobwiedni budynków jak również do tych narysowanych w postaci pojedynczych punktów.\nNajlepszym źródłem danych adresowych jest jak zwykle zwiedzanie okolicy\nlub własna wiedza - tak jak z każdym innym obiektem, kopiowanie danych z komercyjnych\nźródeł takich jak Google Maps jest zabronione.\n",
"inspector": "# Używanie Inspektora\n\nInspektor jest elementem interfejsu po lewej stronie strony, który pojawia się po zaznaczeniu obiektu\ni który pozwala ci modyfikować jego szczegóły.\n\n### Zaznaczanie typu obiektu\n\nPo dodaniu punktu, linii lub obszaru, możesz wybrać, jakiego rodzaju to jest obiekt, na przykład czy jest\nto autostrada czy droga lokalna, kawiarnia czy supermarket. Inspektor wyświetli przyciski dla\npopularnych typów obiektów, a ty możesz znaleźć inne przez wpisanie tego, czego szukasz do pola\nszukania.\n\nKliknij 'i' w prawym dolnym rogu przycisku typu obiektu, aby dowiedzieć się o nim więcej.\nKliknij przycisk, aby wybrać ten typ.\n\n### Używanie formularzy i edycja tagów\n\nPo wybraniu typu obiektu lub gdy wybierzesz obiekt, który ma już nadany typ, inspektor wyświetli pola\nzawierające szczegóły na temat obiektu, takie jak nazwa i adres.\n\nPoniżej pól, które widzisz, możesz kliknąć ikony w celu dodania innych szczegółów, jak na przykład\ninformacja z [Wikipedii](http://www.wikipedia.org/), dostęp dla wózków inwalidzkich i innych.\n\nNa dole inspektora kliknij 'Dodatkowe tagi', aby dodać dowolne inne tagi do elementu.\n[Taginfo](http://taginfo.openstreetmap.org/) jest świetnym źródłem informacji o popularnych\nkombinacjach tagów.\n\nZmiany, które wprowadzisz w inspektorze, są automatycznie nanoszone na mapę. Możesz je cofnąć w\nkażdym momencie przez wciśnięcie przycisku 'Cofnij'.\n\n### Zamykanie Inspektora\n\nMożesz zamknąć inspektora przez kliknięcie na przycisk zamknij w górnym prawym rogu, wciśnięcie\nklawisza 'Escape' lub kliknięcie mapy.\n",
},
"areas": {
"title": "Obszary",
+ "add": "Obszary służą do wyznaczanie granic dla takich obiektów jak jeziora, budynki, czy osiedla mieszkaniowe. Mogą również zostać użyte do mapowania wielu obiektów, które normalnie przedstawiane są za pomocą punktów. **Kliknij na przycisk Obszar, aby dodać nowy obszar.**",
"corner": "Obszary są rysowane przez stawianie punktów oznaczających granicę obszaru. **Umieść punkt początkowy w jednym z rogów placu zabaw.**",
"place": "Narysuj obszar, umieszczając kolejne punkty. Zakończ go, klikając na początkowy punkt. **Narysuj obszar placu zabaw.**",
"search": "**Wyszukaj '{name}'.**",
"fields": {
"access": {
"label": "Dostęp",
- "placeholder": "Nieznane",
- "types": {
- "access": "Ogólny",
- "foot": "Piesi",
- "motor_vehicle": "Pojazdy silnikowe",
- "bicycle": "Rowery",
- "horse": "Konie"
- },
"options": {
- "yes": {
- "title": "Dozwolony",
- "description": "Dostęp przyznany przez prawo"
+ "designated": {
+ "description": "Dostęp jest dozwolony na podstawie znaków lub określonych przepisów lokalnych",
+ "title": "Wyznaczony"
+ },
+ "destination": {
+ "description": "Dostęp dozwolony tylko by dotrzeć do celu",
+ "title": "Docelowy"
},
"no": {
- "title": "Zabroniony",
- "description": "Niedostępne dla ogólnego ruchu"
+ "description": "Niedostępne dla ogólnego ruchu",
+ "title": "Zabroniony"
},
"permissive": {
- "title": "Dozwolony",
- "description": "Dostęp dozwolony do czasu, gdy właściciel wycofa zgodę"
+ "description": "Dostęp dozwolony do czasu, gdy właściciel wycofa zgodę",
+ "title": "Dozwolony"
},
"private": {
- "title": "Prywatny",
- "description": "Dostęp jest dozwolony tylko za zgodą właściciela na zasadzie indywidualnej"
- },
- "designated": {
- "title": "Wyznaczony",
- "description": "Dostęp jest dozwolony na podstawie znaków lub określonych przepisów lokalnych"
+ "description": "Dostęp jest dozwolony tylko za zgodą właściciela na zasadzie indywidualnej",
+ "title": "Prywatny"
},
- "destination": {
- "title": "Docelowy",
- "description": "Dostęp dozwolony tylko by dotrzeć do celu"
+ "yes": {
+ "description": "Dostęp przyznany przez prawo",
+ "title": "Dozwolony"
}
+ },
+ "placeholder": "Nieznane",
+ "types": {
+ "access": "Ogólny",
+ "bicycle": "Rowery",
+ "foot": "Piesi",
+ "horse": "Konie",
+ "motor_vehicle": "Pojazdy silnikowe"
}
},
"access_simple": {
"address": {
"label": "Adres",
"placeholders": {
+ "city": "Miasto",
+ "country": "Kraj",
+ "district": "Dystrykt",
+ "hamlet": "Przysiółek",
"housename": "Nazwa domu",
"housenumber": "123",
- "street": "Ulica",
- "city": "Miasto",
- "postcode": "Kod pocztowy",
"place": "Miejsce",
- "hamlet": "Przysiółek",
- "suburb": "Dzielnica",
- "subdistrict": "Sub-dystrykt",
- "district": "Dystrykt",
+ "postcode": "Kod pocztowy",
"province": "Prowincja",
"state": "Stan",
- "country": "Kraj"
+ "street": "Ulica",
+ "subdistrict": "Sub-dystrykt",
+ "suburb": "Dzielnica"
}
},
"admin_level": {
"aerialway/access": {
"label": "Dostęp",
"options": {
+ "both": "Oba",
"entry": "Wejście",
- "exit": "Wyjście",
- "both": "Oba"
+ "exit": "Wyjście"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Dostępność w sezonie letnim",
"options": {
+ "both": "Obydwa",
"entry": "Wejście",
"exit": "Wyjście"
}
"barrier": {
"label": "Typ"
},
+ "bench": {
+ "label": "Ławka"
+ },
"bicycle_parking": {
"label": "Typ"
},
"boundary": {
"label": "Typ"
},
+ "brand": {
+ "label": "Marka"
+ },
"building": {
"label": "Budynek"
},
"cardinal_direction": {
"label": "Kierunek",
"options": {
- "N": "Północ",
"E": "Wschód",
- "S": "Południe",
- "W": "Zachód",
- "NE": "Północny wschód",
- "SE": "Południowy wschód",
- "SW": "Południowy zachód",
- "NW": "Północny zachód",
- "NNE": "Północny północny wschód",
"ENE": "Wschodni północny wschód",
"ESE": "Wschodni południowy wschód",
+ "N": "Północ",
+ "NE": "Północny wschód",
+ "NNE": "Północny północny wschód",
+ "NNW": "Północny północny zachód",
+ "NW": "Północny zachód",
+ "S": "Południe",
+ "SE": "Południowy wschód",
"SSE": "Południowy południowy wschód",
"SSW": "Południowy południowy zachód",
- "WSW": "Zachodni południowy zachód",
+ "SW": "Południowy zachód",
+ "W": "Zachód",
"WNW": "Zachodni północny zachód",
- "NNW": "Północny północny zachód"
+ "WSW": "Zachodni południowy zachód"
}
},
"clock_direction": {
"label": "Kierunek",
"options": {
- "clockwise": "Zgodnie ze wskazówkami zegara",
- "anticlockwise": "Przeciwnie do wskazówek zegara"
+ "anticlockwise": "Przeciwnie do wskazówek zegara",
+ "clockwise": "Zgodnie ze wskazówkami zegara"
}
},
"collection_times": {
"cuisine": {
"label": "Kuchnia"
},
+ "delivery": {
+ "label": "Dostawa"
+ },
"denomination": {
"label": "Wyznanie"
},
"description": {
"label": "Opis"
},
+ "drive_through": {
+ "label": "Drive-Through"
+ },
"electrified": {
"label": "Elektryfikacja",
- "placeholder": "Linia napowietrzna, Trzecia szyna",
"options": {
"contact_line": "Linia napowietrzna",
+ "no": "Nie",
"rail": "Trzecia szyna",
- "yes": "Tak (nieokreślone)",
- "no": "Nie"
- }
+ "yes": "Tak (nieokreślone)"
+ },
+ "placeholder": "Linia napowietrzna, Trzecia szyna"
},
"elevation": {
"label": "Wysokość"
"fire_hydrant/type": {
"label": "Typ",
"options": {
- "wall": "Mur",
- "pond": "Staw"
+ "pillar": "Nadziemny",
+ "pond": "Staw",
+ "underground": "Podziemny",
+ "wall": "Mur"
}
},
"fixme": {
"fuel/lpg": {
"label": "LPG"
},
+ "fuel/octane_100": {
+ "label": "Sprzedawana benzyna wyścigowa"
+ },
+ "fuel/octane_91": {
+ "label": "Sprzedawana benzyna niskooktanowa"
+ },
+ "fuel/octane_95": {
+ "label": "Sprzedawana benzyna średniooktanowa"
+ },
+ "fuel/octane_98": {
+ "label": "Sprzedawana benzyna wysokooktanowa"
+ },
"gauge": {
"label": "Wskaźnik"
},
+ "gender": {
+ "label": "Płeć",
+ "options": {
+ "female": "Kobieta",
+ "male": "Mężczyzna",
+ "unisex": "Dla obu płci"
+ },
+ "placeholder": "Nieznana"
+ },
"generator/method": {
"label": "Metoda"
},
"placeholder": "Numer dołka (1-18)"
},
"handicap": {
+ "label": "Dla niepełnosprawnych",
"placeholder": "1-18"
},
"highway": {
"label": "Typ"
},
"hoops": {
+ "label": "Kosz",
"placeholder": "1, 2, 4..."
},
"iata": {
"incline": {
"label": "Nachylenie"
},
+ "incline_steps": {
+ "label": "Nachylenie",
+ "options": {
+ "down": "W dół",
+ "up": "W górę"
+ }
+ },
"information": {
"label": "Typ"
},
"internet_access": {
"label": "Dostęp do internetu",
"options": {
- "yes": "Tak",
"no": "Nie",
- "wlan": "Bezprzewodowy",
+ "terminal": "Terminal",
"wired": "Przewodowy",
- "terminal": "Terminal"
+ "wlan": "Bezprzewodowy",
+ "yes": "Tak"
}
},
"lamp_type": {
"layer": {
"label": "Warstwa"
},
+ "leaf_cycle": {
+ "label": "Cykl życiowy",
+ "options": {
+ "deciduous": "Zrzucające liście na zimę",
+ "evergreen": "Zimozielone",
+ "mixed": "Mieszane",
+ "semi_deciduous": "Zrzucające liście, tropikalne"
+ }
+ },
+ "leaf_type": {
+ "label": "Kategoria",
+ "options": {
+ "broadleaved": "Liściaste",
+ "leafless": "Bezlistne",
+ "mixed": "Mieszane",
+ "needleleaved": "Iglaste"
+ }
+ },
"leisure": {
"label": "Typ"
},
"placeholder": "40, 50, 60..."
},
"mtb/scale": {
+ "label": "Skala trudności dla rowerów górskich",
+ "options": {
+ "0": "0: Ubita nawierzchnia żwirowa lub ziemna, brak przeszkód, szerokie zakręty",
+ "1": "1: Trochę luźnej nawierzchni, niewielkie przeszkody, szerokie zakręty",
+ "2": "2: Luźna nawierzchnia, przeszkody, zakręty",
+ "3": "3: Śliska nawierzchnia, duże przeszkody, ciasne zakręty",
+ "4": "4: Piasek lub kamienie, niebezpieczne zakręty",
+ "5": "5: Maksymalnie trudny szlak, gołoborza, lawiniska",
+ "6": "6: Teren praktycznie nieprzejezdny dla rowerów górskich poza wyczynem - trial, ekstremalne dh itp."
+ },
"placeholder": "0, 1, 2, 3..."
},
+ "mtb/scale/imba": {
+ "label": "Skala trudności szlaków dla rowerów górskich IMBA",
+ "options": {
+ "0": "Najłatwiejszy (biały okrąg)",
+ "1": "Łatwy (zielony okrąg)",
+ "2": "Wymagający (niebieski kwadrat)",
+ "3": "Trudny (czarny romb)",
+ "4": "Ekstremalnie trudny (podwójny czarny romb)"
+ },
+ "placeholder": "Łatwy, Wymagający, Trudny..."
+ },
"mtb/scale/uphill": {
- "placeholder": "0, 1, 2, 3...",
+ "label": "Skala trudności podjazdów dla rowerów górskich ",
"options": {
"0": "0: Śr. nachylenie <10%, żwir/ubita ziemia, brak przeszkód",
"1": "1: Śr. nachylenie <15%, żwir/ubita ziemia, kilka mniejszych obiektów",
"3": "3: Śr. nachylenie <25%, zróżnicowane podłoże, kamienie wielkości pięści/gałęzie",
"4": "4: Śr. nachylenie <30%, zły stan, duże kamienie/gałęzie",
"5": "5: Bardzo strome, rower zwykle musi być wprowadzony"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nazwa",
"oneway": {
"label": "Jednokierunkowa",
"options": {
+ "no": "Nie",
"undefined": "Domyślnie nie",
- "yes": "Tak",
- "no": "Nie"
+ "yes": "Tak"
}
},
"oneway_yes": {
"label": "Jednokierunkowa",
"options": {
+ "no": "Nie",
"undefined": "Domyślnie tak",
- "yes": "Tak",
- "no": "Nie"
+ "yes": "Tak"
}
},
"opening_hours": {
"label": "Operator"
},
"par": {
+ "label": "Par",
"placeholder": "3, 4, 5..."
},
"park_ride": {
"parking": {
"label": "Typ",
"options": {
- "surface": "Naziemny",
- "multi-storey": "Wielopoziomowy",
- "underground": "Podziemny",
- "sheds": "Garaże",
"carports": "Wiaty",
"garage_boxes": "Boksy garażowe",
- "lane": "Pas na jezdni"
+ "lane": "Pas na jezdni",
+ "multi-storey": "Wielopoziomowy",
+ "sheds": "Garaże",
+ "surface": "Naziemny",
+ "underground": "Podziemny"
}
},
"phone": {
"placeholder": "+31 42 123 4567"
},
"piste/difficulty": {
- "label": "Stopień trudności"
+ "label": "Stopień trudności",
+ "placeholder": "Łatwy, Średni, Zaawansowany..."
},
"piste/grooming": {
"label": "Ratrakowanie"
},
"piste/type": {
- "label": "Typ"
+ "label": "Typ",
+ "options": {
+ "sled": "Tor saneczkowy"
+ }
},
"place": {
"label": "Typ"
"service": {
"label": "Typ"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
+ "label": "Skuwacz łańcucha",
"options": {
- "yes": "Tak",
- "no": "Nie"
+ "no": "Nie",
+ "undefined": "Domyślnie nie",
+ "yes": "Tak"
}
},
"service/bicycle/pump": {
+ "label": "Pompowanie",
"options": {
- "yes": "Tak",
- "no": "Nie"
+ "no": "Nie",
+ "undefined": "Domyślnie nie",
+ "yes": "Tak"
}
},
"shelter": {
},
"smoking": {
"label": "Dla palących",
- "placeholder": "Nie, Wydzielone, Tak...",
"options": {
- "no": "Całkowity zakaz palenia",
- "separated": "W miejscach dla palących, nieoddzielonych fizycznie",
+ "dedicated": "Miejsce dla palących (np. klub palaczy)",
"isolated": "W miejscach dla palących, fizycznie oddzielonych",
+ "no": "Całkowity zakaz palenia",
"outside": "Dozwolone na zewnątrz",
- "yes": "Dozwolone wszędzie",
- "dedicated": "Miejsce dla palących (np. klub palaczy)"
- }
+ "separated": "W miejscach dla palących, nieoddzielonych fizycznie",
+ "yes": "Dozwolone wszędzie"
+ },
+ "placeholder": "Nie, Wydzielone, Tak..."
},
"smoothness": {
"label": "Gładkość",
- "placeholder": "Cienkie kółka, Koła, Off-road...",
"options": {
+ "bad": "Solidne koła: rower trekkingowy, samochód, riksza",
"excellent": "Cienkie kółka: łyżworolki, skateboard",
"good": "Cienkie koła: rower szosowy",
+ "horrible": "Off-road: ciężki pojazd terenowy",
+ "impassable": "Nieprzejezdne / nie dla pojazdów kołowych",
"intermediate": "Koła: rower miejski, wózek inwalidzki, skuter",
- "bad": "Solidne koła: rower trekkingowy, samochód, riksza",
"very_bad": "Duży prześwit: lekki pojazd terenowy",
- "horrible": "Off-road: ciężki pojazd terenowy",
"very_horrible": "Wyspecjalizowany off-road: traktor, ATV (quad)"
- }
+ },
+ "placeholder": "Cienkie kółka, Koła, Off-road..."
},
"social_facility_for": {
"label": "Przeznaczone dla osób",
},
"structure": {
"label": "Struktura",
- "placeholder": "Nieznane",
"options": {
"bridge": "Most",
- "tunnel": "Tunel",
- "embankment": "Nasyp",
"cutting": "Wykop",
- "ford": "Bród"
- }
+ "embankment": "Nasyp",
+ "ford": "Bród",
+ "tunnel": "Tunel"
+ },
+ "placeholder": "Nieznane"
},
"studio_type": {
"label": "Typ"
"label": "Wypustki dla niewidomych"
},
"takeaway": {
- "placeholder": "Tak, Nie, Tylko na wynos...",
+ "label": "Na wynos",
"options": {
- "yes": "Tak",
"no": "Nie",
- "only": "Tylko na wynos."
- }
+ "only": "Tylko na wynos.",
+ "yes": "Tak"
+ },
+ "placeholder": "Tak, Nie, Tylko na wynos..."
},
"toilets/disposal": {
- "label": "Opróżnianie"
+ "label": "Opróżnianie",
+ "options": {
+ "bucket": "Wiadro",
+ "chemical": "Chemiczne",
+ "flush": "Spuszczanie wody",
+ "pitlatrine": "Latryna"
+ }
},
"tourism": {
"label": "Typ"
},
"tracktype": {
"label": "Typ drogi nieutwardzonej",
- "placeholder": "Utwardzona, nieubita...",
"options": {
- "grade1": "Utwardzona lub mocna ubita powierzchnia",
+ "grade1": "Utwardzona lub mocna ubita nawierzchnia",
"grade2": "Żwirowa z niewielką domieszką piasku, mułu lub gliny",
"grade3": "Składająca się z równej ilości twardych i miękkich materiałów",
"grade4": "Ziemia/piasek/trawa z domieszką twardych materiałów",
"grade5": "Ziemia/piasek/trawa, bez dodatku materiałów utwardzonych, słabo widoczna"
- }
+ },
+ "placeholder": "Utwardzona, nieubita..."
},
"trail_visibility": {
"label": "Widoczność szlaku",
"terms": "duży ekran,drive-in,film,ruchomy obraz,pokaz zdjęć,zdjęcia,pokaz,silver screen"
},
"amenity/clinic": {
- "name": "Przychodnia lekarska",
+ "name": "Klinika",
"terms": "ośrodek zdrowia, zoz, nzoz, opieka zdrowotna"
},
"amenity/clock": {
"amenity/college": {
"name": "Teren uczelni"
},
+ "amenity/community_centre": {
+ "name": "Dom kultury"
+ },
"amenity/compressed_air": {
"name": "Kompresor"
},
"terms": "stomatolog, gabinet stomatologiczny"
},
"amenity/doctor": {
- "name": "Doktor",
- "terms": "lekarz,doktor,konował,medyk,uzdrowiciel"
+ "name": "Gabinet lub przychodnia lekarska",
+ "terms": "lekarz, doktor, medyk, uzdrowiciel, nzoz, zoz, spzoz, gabinet lekarski"
},
"amenity/dojo": {
"name": "Dojo/szkoła sztuk walki"
"amenity/recycling": {
"name": "Recykling"
},
+ "amenity/register_office": {
+ "name": "Urząd stanu cywilnego"
+ },
"amenity/restaurant": {
"name": "Restauracja",
- "terms": "bar,kawiarnia,stołówka,jadalnia,drive-in,knajpa,jadłodajnia,fast food,grill,gospoda,klub nocny,pizzeria"
+ "terms": "bar,kawiarnia,stołówka,jadalnia,drive-in,knajpa,jadłodajnia,fast food,grill,gospoda,klub nocny,pizzeria,karczma,zajazd"
},
"amenity/school": {
"name": "Teren szkoły"
},
"craft/jeweler": {
"name": "Jubiler",
- "terms": "jubiler"
+ "terms": "biżuteria"
},
"craft/key_cutter": {
"name": "Dorabianie kluczy"
"name": "Łącznik dróg pierwszorzędnych",
"terms": "rampa,wjazd,wyjazd,zjazd"
},
+ "highway/raceway": {
+ "name": "Tor wyścigowy"
+ },
"highway/residential": {
"name": "Droga lokalna",
"terms": "lokalna, osiedlowa, zamieszkała"
"name": "Przydrożna kapliczka",
"terms": "kapliczka,przydrożna"
},
+ "junction": {
+ "name": "Skrzyżowanie"
+ },
"landuse": {
"name": "Użytkowanie gruntów",
"terms": "teren,zagospodarowanie,terenu,użytkowanie,wykorzystanie"
"landuse/churchyard": {
"name": "Dziedziniec kościelny"
},
+ "landuse/commercial": {
+ "name": "Obszar komercyjny"
+ },
"landuse/construction": {
"name": "Budowa",
"terms": "budowa,teren,budowy"
},
+ "landuse/farm": {
+ "name": "Użytki rolne",
+ "terms": "ziemia uprawna,grunty rolne"
+ },
+ "landuse/farmland": {
+ "name": "Pola uprawne"
+ },
"landuse/farmyard": {
"name": "Zabudowa rolnicza",
"terms": "podwórze gospodarskie"
"name": "Trawa",
"terms": "trawa, trawnik, "
},
+ "landuse/industrial": {
+ "name": "Obszar przemysłowy"
+ },
"landuse/landfill": {
"name": "Wysypisko",
"terms": "składowisko odpadów,śmieci"
"name": "Łąka",
"terms": "Łąka"
},
+ "landuse/military": {
+ "name": "Obszar wojskowy"
+ },
"landuse/orchard": {
"name": "Sad",
"terms": "Sad"
"name": "Kamieniołom",
"terms": "kamieniołom, żwirownia, kruszywo"
},
+ "landuse/residential": {
+ "name": "Zabudowa mieszkaniowa"
+ },
+ "landuse/retail": {
+ "name": "Obszar handlowy"
+ },
"landuse/vineyard": {
"name": "Winnica",
"terms": "winnica"
"terms": "pole golfowe"
},
"leisure/ice_rink": {
- "name": "Lodowisko"
+ "name": "Lodowisko",
+ "terms": "lodowisko, ślizgawka"
},
"leisure/marina": {
"name": "Przystań",
"terms": "las,ogród,trawa,zieleń,trawnik,łąka,miejsce,plac,teren rekreacyjny"
},
"leisure/picnic_table": {
- "name": "Stół piknikowy"
+ "name": "Stół piknikowy",
+ "terms": "stół piknikowy"
},
"leisure/pitch": {
"name": "Boisko",
"name": "Basen",
"terms": "basen pływacki"
},
+ "leisure/track": {
+ "name": "Bieżnia"
+ },
"line": {
"name": "Linia",
"terms": "Linia, lina"
"terms": "wieża obserwacyjna"
},
"man_made/pier": {
- "name": "Molo"
+ "name": "Molo",
+ "terms": "pomost"
},
"man_made/pipeline": {
"name": "Rurociąg"
"name": "Wieża ciśnień",
"terms": "wieża ciśnień"
},
+ "man_made/water_well": {
+ "name": "Studnia"
+ },
"man_made/water_works": {
"name": "Filtracja wody"
},
},
"office/accountant": {
"name": "Księgowy",
- "terms": "księgowy"
+ "terms": "biuro rachunkowe, księgowość, rachun"
},
"office/administrative": {
"name": "Biuro samorządowe"
"name": "Biuro branży IT (informatycznej)"
},
"office/lawyer": {
- "name": "Biuro prawnicze"
+ "name": "Biuro prawnicze",
+ "terms": "prawnik, kancelaria, adwokat, radca"
},
"office/newspaper": {
"name": "Gazeta"
"place/neighbourhood": {
"name": "Sąsiedztwo"
},
+ "place/suburb": {
+ "name": "Dzielnica"
+ },
"place/town": {
"name": "Miasto",
"terms": "Miasteczko"
"terms": "torowisko, kolej"
},
"railway/abandoned": {
- "name": "Nieużywany tor",
- "terms": "opuszczona kolej"
+ "name": "Rozebrany tor",
+ "terms": "rozebrany tor"
},
"railway/disused": {
"name": "Nieużywany tor"
"name": "Relacja",
"terms": "relacja"
},
+ "roundabout": {
+ "name": "Rondo"
+ },
"route/ferry": {
"name": "Trasa morska"
},
"shop/art": {
"name": "Galeria sztuki"
},
+ "shop/baby_goods": {
+ "name": "Sklep z artykułami dla dzieci i niemowląt"
+ },
+ "shop/bag": {
+ "name": "Sklep z torebkami/walizkami"
+ },
"shop/bakery": {
"name": "Piekarnia",
"terms": "Piekarnia"
},
+ "shop/bathroom_furnishing": {
+ "name": "Sklep z wyposażeniem łazienek"
+ },
"shop/beauty": {
"name": "Salon piękności",
"terms": "kosmetyczka, wizaż"
},
+ "shop/bed": {
+ "name": "Sklep z łóżkami/materacami"
+ },
"shop/beverages": {
"name": "Sklep z napojami"
},
"name": "Rzeźnik",
"terms": "sklep mięsny, rzeźnia"
},
+ "shop/candles": {
+ "name": "Sklep ze świecami"
+ },
"shop/car": {
"name": "Dealer samochodowy",
"terms": "sprzedawca samochodów, dealer samochodowy"
"name": "Warsztat samochodowy",
"terms": "serwis samochodowy. mechanik"
},
+ "shop/carpet": {
+ "name": "Sklep z dywanami",
+ "terms": "wykładzina"
+ },
+ "shop/cheese": {
+ "name": "Sklep z serami"
+ },
"shop/chemist": {
"name": "Drogeria",
"terms": "apteka"
},
+ "shop/chocolate": {
+ "name": "Sklep z czekoladą"
+ },
"shop/clothes": {
"name": "Sklep odzieżowy",
"terms": "ubrania"
"name": "Sklep komputerowy",
"terms": "sklep komputerowy"
},
+ "shop/confectionery": {
+ "name": "Sklep ze słodyczami",
+ "terms": "cukierki"
+ },
"shop/convenience": {
"name": "Sklep ogólnospożywczy",
"terms": "mały sklep, sklepik osiedlowy"
"name": "Punkt ksero",
"terms": "kopiowanie"
},
+ "shop/cosmetics": {
+ "name": "Sklep z kosmetykami"
+ },
+ "shop/curtain": {
+ "name": "Sklep z zasłonami"
+ },
+ "shop/dairy": {
+ "name": "Sklep z nabiałem"
+ },
"shop/deli": {
"name": "Delikatesy"
},
"name": "Sklep elektroniczny"
},
"shop/erotic": {
- "name": "Sklep erotyczny"
+ "name": "Sklep erotyczny",
+ "terms": "sex shop"
+ },
+ "shop/fabric": {
+ "name": "Sklep z tkaninami"
},
"shop/farm": {
"name": "Stragan produktów"
"name": "Kwiaciarnia",
"terms": "kwiaciarnia"
},
+ "shop/frame": {
+ "name": "Sklep z ramami",
+ "terms": "oprawa obrazów"
+ },
"shop/funeral_directors": {
"name": "Zakład pogrzebowy",
"terms": "pochówek,pogrzeb"
},
+ "shop/furnace": {
+ "name": "Sklep z ogrzewaniem"
+ },
"shop/furniture": {
"name": "Sklep meblowy",
"terms": "sklep meblowy"
"shop/hardware": {
"name": "Sklep z narzędziami"
},
+ "shop/hearing_aids": {
+ "name": "Sklep z aparatami słuchowymi"
+ },
+ "shop/herbalist": {
+ "name": "Zielarz",
+ "terms": "Herbaciarnia, zielarz"
+ },
"shop/hifi": {
"name": "Sklep ze sprzętem Hi-fi"
},
+ "shop/houseware": {
+ "name": "Sklep z małymi artykułami gospodarstwa domowego",
+ "terms": "sztućce, garnki, artykuły kuchenne"
+ },
+ "shop/interior_decoration": {
+ "name": "Sklep z dekoracją wnętrz"
+ },
"shop/jewelry": {
- "name": "Jubiler"
+ "name": "Jubiler",
+ "terms": "biżuteria"
},
"shop/kiosk": {
- "name": "Kiosk z prasą"
+ "name": "Kiosk z prasą",
+ "terms": "Kiosk"
+ },
+ "shop/kitchen": {
+ "name": "Sklep z wyposażeniem i meblami kuchennymi"
},
"shop/laundry": {
"name": "Pralnia",
"terms": "pralnia"
},
+ "shop/leather": {
+ "name": "Sklep skórzany"
+ },
"shop/locksmith": {
"name": "Ślusarz"
},
"shop/mall": {
"name": "Centrum handlowe"
},
+ "shop/massage": {
+ "name": "Masaż"
+ },
+ "shop/medical_supply": {
+ "name": "Sklep ze sprzętem medycznym"
+ },
"shop/mobile_phone": {
"name": "Sklep z telefonami komórkowymi"
},
+ "shop/money_lender": {
+ "name": "Pożyczki",
+ "terms": "kredyt"
+ },
"shop/motorcycle": {
"name": "Dealer motocykli",
"terms": "Dealer motocyklowy"
"name": "Sklep muzyczny",
"terms": "sklep muzyczny"
},
+ "shop/musical_instrument": {
+ "name": "Sklep z instrumentami muzycznymi"
+ },
"shop/newsagent": {
"name": "Sklep z prasą"
},
"name": "Optyk",
"terms": "optyk"
},
+ "shop/organic": {
+ "name": "Sklep z naturalną żywnością"
+ },
+ "shop/outdoor": {
+ "name": "Sklep turystyczny",
+ "terms": "outdoor"
+ },
+ "shop/paint": {
+ "name": "Sklep z farbami"
+ },
"shop/pawnbroker": {
"name": "Lombard"
},
"shop/seafood": {
"name": "Sklep z owocami morza"
},
+ "shop/second_hand": {
+ "name": "Sklep z rzeczami używanymi",
+ "terms": "second hand, komis"
+ },
"shop/shoes": {
"name": "Sklep obuwniczy"
},
"name": "Krawiec",
"terms": "krawcowa, odzież na miarę"
},
+ "shop/tattoo": {
+ "name": "Studio tatuażu"
+ },
"shop/tea": {
"name": "Herbaciarnia"
},
+ "shop/ticket": {
+ "name": "Sprzedaż biletów",
+ "terms": "kasa biletowa"
+ },
+ "shop/tobacco": {
+ "name": "Sklep z tytoniem"
+ },
"shop/toys": {
"name": "Sklep z zabawkami",
"terms": "zabawki, sklep zabawkarski"
"shop/vacant": {
"name": "Pusty lokal sklepowy"
},
+ "shop/vacuum_cleaner": {
+ "name": "Sklep z odkurzaczami"
+ },
"shop/variety_store": {
"name": "Sklep z różnościami"
},
"shop/weapons": {
"name": "Sklep z bronią"
},
+ "shop/window_blind": {
+ "name": "Sklep z żaluzjami/roletami"
+ },
"shop/wine": {
"name": "Winiarnia",
"terms": "Winiarnia"
"terms": "atrakcja turystyczna"
},
"tourism/camp_site": {
- "name": "Kemping"
+ "name": "Kemping",
+ "terms": "Camping"
},
"tourism/caravan_site": {
"name": "Kemping dla kamperów"
"name": "Domek gościnny"
},
"tourism/hostel": {
- "name": "Schronisko",
+ "name": "Schronisko lub hostel",
"terms": "Hostel"
},
"tourism/hotel": {
"name": "Zoo",
"terms": "Zoo, ogród zoologiczny"
},
+ "traffic_calming/bump": {
+ "name": "Próg zwalniający"
+ },
+ "traffic_calming/hump": {
+ "name": "Wysepka zwalniająca"
+ },
+ "traffic_calming/rumble_strip": {
+ "name": "Linia wibracyjna"
+ },
+ "traffic_calming/table": {
+ "name": "Wyniesione przejście dla pieszych"
+ },
"type/boundary": {
"name": "Granica"
},
"multiple": "Excluídos {n} objetos."
},
"incomplete_relation": "Este elemento não pode ser excluído porque não foi ainda totalmente baixado.",
+ "part_of_relation": "Este recurso não pode ser excluído porque ele é parte de uma relação maior. Você deve removê-lo da primeira relação",
"connected_to_hidden": "Não pode ser deletado por estar conectado a um elemento oculto."
},
"add_member": {
"commit": {
"title": "Salvar Alterações",
"description_placeholder": "Descrição curta e clara de suas contribuições",
- "message_label": "Mensagem de alteração",
"upload_explanation": "As alterações que você enviar ficarão visíveis em todos os mapas que usam dados do OpenStreetMap.",
"upload_explanation_with_user": "As alterações que você enviar como {user} estarão visíveis em todos os mapas que usam os dados do OpenStreetMap.",
"save": "Salvar",
"list": "Edições de {users}",
"truncated_list": "Edições de {users} e {count} outros"
},
+ "infobox": {
+ "selected": "{n} selecionados",
+ "geometry": "Geometria",
+ "perimeter": "Perímetro",
+ "length": "Comprimento",
+ "area": "Área",
+ "centroid": "Centróide",
+ "location": "Localização"
+ },
+ "geometry": {
+ "point": "ponto",
+ "vertex": "vértice",
+ "line": "linha",
+ "area": "área",
+ "relation": "relação"
+ },
"geocoder": {
"search": "Buscar no mundo todo...",
"no_results_visible": "Sem resultados nesta área visível do mapa",
"title": "Salvar",
"help": "Salvar alterações no OpenStreetMap, tornando-as visíveis para outros usuários.",
"no_changes": "Sem alterações para salvar.",
- "error": "Ocorreu um erro ao tentar salvar",
+ "error": "Ocorreram erros ao tentar salvar",
+ "status_code": "O servidor retornou o status {code}",
"unknown_error_details": "Por favor, verifique sua conexão com a internet.",
"uploading": "Enviando alterações para o OpenStreetMap.",
- "unsaved_changes": "Você tem alterações não salvas."
+ "unsaved_changes": "Você tem alterações não salvas.",
+ "conflict": {
+ "header": "Resolver edições conflitantes",
+ "count": "Conflito {num} de {total}",
+ "previous": "< Anterior",
+ "next": "Próximo >",
+ "keep_local": "Manter o meu",
+ "keep_remote": "Usar o dele",
+ "restore": "Restaurar",
+ "delete": "Manter removido",
+ "download_changes": "Ou baixar suas alterações.",
+ "done": "Todos os conflitos foram resolvidos!",
+ "help": "Outro usuário alterou alguns dos mesmos itens do mapa que você alterou.\nClique em cada item abaixo para mais detalhes sobre o conflito, e escolha se quer manter as suas alterações ou as do outro usuário.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Este objeto foi excluído por {user}.",
+ "location": "Este objeto foi movido tanto por você quanto pelo(a) {user}",
+ "nodelist": "Os pontos foram modificados tanto por você quanto pelo(a) {user}.",
+ "memberlist": "Os membros da relação foram modificados tanto por você quanto por {user}.",
+ "tags": "Você mudou a etiqueta <b>{tag}</b> para \"{local}\" e o/a {user} mudou-a para \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM editado!",
"help_html": "Suas mudanças devem aparecer na camada \"Padrão\" do OSM em poucos minutos. Outras camadas e certos elementos podem demorar mais\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detalhes</a>).\n"
},
"confirm": {
- "okay": "O.K."
+ "okay": "O.K.",
+ "cancel": "Cancelar"
},
"splash": {
"welcome": "Bem vindo ao editor iD do OpenStreetMap",
},
"help": {
"title": "Ajuda",
- "help": "# Ajuda\n\nEste é um editor para OpenStreetMap (http://www.openstreetmap.org/), o mapa mundial livre e editavel. Você pode usá-lo para adicionar e atualizar de dados em sua área, tornando um mapa mundi de codigo aberto melhor para todos.\nAs edições que você fizer nesse mapa serão visíveis para todos que usam OpenStreetMap. Para fazer uma edição você precisará de uma conta gratuita OpenStreetMap(https://www.openstreetmap.org/user/new).\n\nO editor iD (http://ideditor.com/) é um projeto colaborativo com o código fonte disponível no GitHub(https://github.com/openstreetmap/iD).\n",
+ "help": "# Ajuda\n\nEste é um editor para [OpenStreetMap](http://www.openstreetmap.org/), o mapa mundial livre e editável. Você pode usá-lo para adicionar e atualizar de dados em sua área, tornando um mapa mundi de código aberto melhor para todos.\n\nAs edições que você fizer nesse mapa serão visíveis para todos que usam OpenStreetMap. Para fazer uma edição você precisará se [identificar](https://www.openstreetmap.org/login).\n\nO [editor iD](http://ideditor.com/) é um projeto colaborativo com o [código fonte disponível no GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Editando e Salvando\n\nEsse editor é feito para trabalhar primariamente online e você está\nneste momento acessando-o através de um sítio eletrônico.\n\n### Selecionando Elementos\n\nPara selecionar um elemento do mapa, como uma estrada ou \num ponto de interesse, clique sobre ele. Isso vai pôr o elemento\nselecionado em destaque, abrir um painel com detalhes sobre\nele e mostrar um menu de coisas que podem ser feitas com ele.\n\nMúltiplos elementos podem ser selecionados segurando a tecla\n\"Shift\", clicando e arrastando no mapa. Isso vai selecionar todos\nos elementos que estiverem dentro da caixa que foi desenhada,\npermitindo você fazer coisas com vários objetos de uma vez\nsó.\n\n### Salvando as Alterações\n\nQuando você faz alterações como editar ruas, prédios e lugares, elas\nsão guardadas localmente até que você as envie para o servidor. Não\nse preocupe se você cometer algum deslize: você pode desfazer\nalterações clicando no botão de desfazer e também refazer as\nalterações clicando no botão de refazer.\n\nClique em \"Salvar\" para salvar um conjunto de alterações. Por exemplo,\nvocê completou uma área de uma cidade e gostaria de começar a\neditar uma outra área. Você terá a chance de revisar o que foi feito\naté o momento e o editor mostrará sugestões e dicas se alguma coisa\nparecer estar errada com as suas alterações.\n\nSe tudo parecer estar OK, você pode inserir um breve comentário\nexplicando as mudanças que você fez e clicar em \"Salvar\" de novo\npara lançar as mudanças para o [OpenStreetMap](http://www.openstreetmap.org/),\nonde elas estarão visíveis para todos os outros usuários.\n\nSe você não conseguir concluir uma sessão de edição, você pode\ndeixar a janela do seu editor aberta e voltar mais tarde (no mesmo\nnavegador e computador) que o editor irá oferecer a possibilidade\nde restaurar o seu trabalho.\n",
"roads": "# Estradas \n\nVocê pode criar, corrigir e excluir estradas com este editor. Estradas\npodem ser de vários tipos: caminhos, estradas, trilhas, ciclovias e \nmuito mais - qualquer segmento onde se passa, mesmo que às vezes, \npode ser mapeado. \n\n### Selecionando \n\nClique em uma estrada para selecioná-la. Um esboço deve tornar-se \nvisível, junto com um pequeno menu de ferramentas no mapa e uma \nbarra lateral mostrando mais informações sobre a estrada. \n\n### Modificando \n\nMuitas vezes você vai encontrar estradas que não estão alinhadas \ncom as imagens por trás delas ou com uma faixa de GPS. Você \npode ajustar estas estradas para que elas fiquem no lugar certo. \n\nPrimeiro clique no caminho que você deseja alterar. Isso irá \ndestacá-lo e mostrar pontos de controle ao longo dela que você \npode arrastar para locais melhores. Se o que você deseja é \nadicionar novos pontos de controle para obter mais detalhes, \nclique duas vezes em uma parte da estrada sem um ponto, e \num ponto será adicionado.\n\nSe a estrada se conecta a uma outra estrada, mas não está \ncorretamente conectada no mapa, você pode arrastar um de \nseus pontos de controle para a outra estrada a fim de juntá-las. \nTer estradas que se conectam é importante para o mapa e \nessencial para fornecer instruções de direção. \n\nVocê também pode clicar na ferramenta 'Mover' ou pressione a \ntecla 'M' para mover o caminho inteiro de uma vez, e em seguida, \nclique novamente para salvar esse movimento. \n\n### Apagando \n\nSe uma estrada está completamente errada - você pode ver que ela \nnão existe nas imagens de satélite e, junto a isso, ter confirmado \nlocalmente que ela não existe - você pode apagá-la do mapa.\nSeja cauteloso ao excluir objetos - como qualquer outra edição, os \nresultados são vistos por todos, e como as imagens de satélite \npodem estar desatualizadas, a estrada pode simplesmente ser \nrecém-construída. \n\nVocê pode excluir um caminho, clicando sobre ele para selecioná-lo, em \nseguida, clicar no ícone de lixeira ou pressionando a tecla 'Delete'.\n\n### Criando \n\nEncontrou um lugar onde deveria ter uma estrada, mas não tem? Clique \nno botão 'Linha' no canto superior esquerdo do editor ou pressione a \ntecla de atalho '2' para começar a desenhar uma linha. \n\nClique no início da estrada no mapa para começar a desenhar. Se a \nestrada se ramifica de uma estrada existente, comece clicando sobre \no lugar onde eles se conectam. \n\nEm seguida, clique em pontos ao longo da estrada para que ela siga \no caminho certo, de acordo com imagens de satélite ou GPS. Se a \nestrada que você está desenhando atravessa outra estrada, ligue-as \nclicando sobre o ponto de intersecção. Quando você terminar de \ndesenhar, clique duas vezes ou pressione 'Voltar' ou 'Enter' no seu teclado.\n",
"gps": "# GPS\n\nOs dados de GPS são as fontes mais confiáveis do OpenStreetMap. Este\neditor suporta traçados locais - arquivos '.gpx'. Você pode utilizar aplicativos de celulares ou aparelhos de GPS para coletar esse tipo de traçado.\n\nPara informações sobre como realizar levantamento com GPS, leia\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nPara usar um traçado GPX para mapeamento, arraste e solte o arquivo GPX\nno editor de mapa. Caso seja reconhecido, será adicionado ao mapa como \nlinhas roxo claras. Clique no menu 'Dados do Mapa', no lado direito, para \nativar, desativas ou dar zoom nesta nova camada alimentada pelo GPX.\n\nO traçado GPX não é diretamente subido ao OpenStreetMap - o melhor \ncaminho para usá-lo é desenhar no mapa, usando-o como uma guia \npara os novos elementos que você adicionar, e [subi-lo no OpenStreetMap](http://www.openstreetmap.org/trace/create) para outros usuários utilizá-lo.\n",
"presets": {
"categories": {
"category-building": {
- "name": "Edifício"
+ "name": "Edificação"
},
"category-golf": {
"name": "Golfe"
"fields": {
"access": {
"label": "Acesso",
- "placeholder": "Desconhecido",
- "types": {
- "access": "Geral",
- "foot": "Pedestres",
- "motor_vehicle": "Veículos Automotores",
- "bicycle": "Bicicletas",
- "horse": "Cavalos"
- },
"options": {
- "yes": {
- "title": "Público",
- "description": "Acesso permitido por lei; via pública com direito de passagem"
+ "designated": {
+ "description": "Acesso designado por placas (ou leis locais) para uso preferencial por veículos específicos",
+ "title": "Designado"
+ },
+ "destination": {
+ "description": "Acesso permitido apenas na saída ou na chegada a um destino",
+ "title": "Destino"
},
"no": {
- "title": "Proibido",
- "description": "Acesso não permitido ao público em geral"
+ "description": "Acesso não permitido ao público em geral",
+ "title": "Proibido"
},
"permissive": {
- "title": "Autorizado",
- "description": "Acesso livre e autorizado (mas cancelável) pelo dono"
+ "description": "Acesso livre e autorizado (mas cancelável) pelo dono",
+ "title": "Autorizado"
},
"private": {
- "title": "Privado",
- "description": "Acesso requer permissão prévia do dono, dada individualmente"
+ "description": "Acesso requer permissão prévia do dono, dada individualmente",
+ "title": "Privado"
},
- "designated": {
- "title": "Designado",
- "description": "Acesso designado por placas (ou leis locais) para uso preferencial por veículos específicos"
- },
- "destination": {
- "title": "Destino",
- "description": "Acesso permitido apenas na saída ou na chegada a um destino"
+ "yes": {
+ "description": "Acesso permitido por lei; via pública com direito de passagem",
+ "title": "Público"
}
+ },
+ "placeholder": "Desconhecido",
+ "types": {
+ "access": "Geral",
+ "bicycle": "Bicicletas",
+ "foot": "Pedestres",
+ "horse": "Cavalos",
+ "motor_vehicle": "Veículos Automotores"
}
},
"access_simple": {
"address": {
"label": "Endereço",
"placeholders": {
+ "city": "Município",
+ "country": "País",
+ "district": "Distrito",
+ "hamlet": "Lugarejo",
"housename": "Nome da casa",
"housenumber": "123",
- "street": "Rua",
- "city": "Município",
- "postcode": "CEP",
"place": "Local",
- "hamlet": "Lugarejo",
- "suburb": "Bairro",
- "subdistrict": "Sub-Bairro",
- "district": "Distrito",
+ "postcode": "CEP",
"province": "Província",
"state": "Estado",
- "country": "País"
+ "street": "Rua",
+ "subdistrict": "Sub-Bairro",
+ "suburb": "Bairro"
}
},
"admin_level": {
"aerialway/access": {
"label": "Acesso",
"options": {
+ "both": "Ambos",
"entry": "Entrada",
- "exit": "Saída",
- "both": "Ambos"
+ "exit": "Saída"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Acesso (verão)",
"options": {
+ "both": "Ambos",
"entry": "Entrada",
- "exit": "Saída",
- "both": "Ambos"
+ "exit": "Saída"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Direção",
"options": {
- "N": "Norte",
"E": "Leste",
- "S": "Sul",
- "W": "Oeste",
- "NE": "Nordeste",
- "SE": "Sudeste",
- "SW": "Sudoeste",
- "NW": "Noroeste",
- "NNE": "Nor-nordeste",
"ENE": "És-nordeste",
"ESE": "És-sudeste",
+ "N": "Norte",
+ "NE": "Nordeste",
+ "NNE": "Nor-nordeste",
+ "NNW": "Nor-noroeste",
+ "NW": "Noroeste",
+ "S": "Sul",
+ "SE": "Sudeste",
"SSE": "Su-sudeste",
"SSW": "Su-sudoeste",
- "WSW": "Oés-sudoeste",
+ "SW": "Sudoeste",
+ "W": "Oeste",
"WNW": "Oés-noroeste",
- "NNW": "Nor-noroeste"
+ "WSW": "Oés-sudoeste"
}
},
"clock_direction": {
"label": "Direção",
"options": {
- "clockwise": "Sentido Horário",
- "anticlockwise": "Sentido Anti-horário"
+ "anticlockwise": "Sentido Anti-horário",
+ "clockwise": "Sentido Horário"
}
},
"collection_times": {
"construction": {
"label": "Tipo"
},
+ "content": {
+ "label": "Conteúdo"
+ },
"country": {
"label": "País"
},
"description": {
"label": "Descrição"
},
+ "drive_through": {
+ "label": "Drive-Thru"
+ },
"electrified": {
"label": "Eletrificação",
- "placeholder": "Linha de contato, trilho eletrificado...",
"options": {
"contact_line": "Linha de contato",
+ "no": "Não",
"rail": "Trilho eletrificado",
- "yes": "Sim (indefinido)",
- "no": "Não"
- }
+ "yes": "Sim (indefinido)"
+ },
+ "placeholder": "Linha de contato, trilho eletrificado..."
},
"elevation": {
"label": "Altitude"
"label": "Tipo",
"options": {
"pillar": "Pilar/Sobre o solo",
+ "pond": "Lagoa",
"underground": "Subterrâneo",
- "wall": "Muro",
- "pond": "Lagoa"
+ "wall": "Muro"
}
},
"fixme": {
},
"gender": {
"label": "Gênero",
- "placeholder": "Desconhecido",
"options": {
- "male": "Masculino",
"female": "Feminino",
+ "male": "Masculino",
"unisex": "Unissex"
- }
+ },
+ "placeholder": "Desconhecido"
},
"generator/method": {
"label": "Método"
"incline": {
"label": "Declividade"
},
+ "incline_steps": {
+ "label": "Inclinação",
+ "options": {
+ "down": "Para baixo",
+ "up": "Para cima"
+ }
+ },
"information": {
"label": "Tipo"
},
"internet_access": {
"label": "Acesso à Internet",
"options": {
- "yes": "Sim",
"no": "Não",
- "wlan": "Sem Fio",
+ "terminal": "Terminal de Acesso",
"wired": "Cabeada",
- "terminal": "Terminal de Acesso"
+ "wlan": "Sem Fio",
+ "yes": "Sim"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Ciclo de Folhagem",
"options": {
- "evergreen": "Perenifólia",
"deciduous": "Caducifólia",
- "semi_evergreen": "Semi-perenifólia",
+ "evergreen": "Perenifólia",
+ "mixed": "Mista",
"semi_deciduous": "Semi-caducifólia",
- "mixed": "Mista"
+ "semi_evergreen": "Semi-perenifólia"
}
},
"leaf_type": {
"label": "Tipo de Folha",
"options": {
"broadleaved": "Latifoliada",
- "needleleaved": "Acicufoliada",
+ "leafless": "Sem folhas",
"mixed": "Mista",
- "leafless": "Sem folhas"
+ "needleleaved": "Acicufoliada"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Dificuldade para Mountain Biking",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Pedregulho sólido / terra batida, sem obstáculos, curvas amplas",
"1": "1: Alguma terra solta, pequenos obstáculos, curvas amplas",
"4": "4: Terra solta ou seixos, curva fechada perigosa",
"5": "5: Dificuldade máxima, pedreira, deslizamentos de terra",
"6": "6: Não é transitável exceto pelos melhores mountain bikers"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Trilha de baixa dificuldade",
- "placeholder": "Fácil, Médio, Difícil...",
"options": {
"0": "Mais fácil (cículo branco)",
"1": "Fácil (círculo verde)",
"2": "Médio (quadrado azul)",
"3": "Difícil (diamante negro)",
"4": "Extremamente Difícil (duplo diamante negro)"
- }
+ },
+ "placeholder": "Fácil, Médio, Difícil..."
},
"mtb/scale/uphill": {
"label": "Dificuldade do aclive do Mountain Biking",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Inclinação média <10%, pedregulho/terra batida, sem obstáculos",
"1": "1: Inclinação média <15%, pedregulho/terra batida, poucos objetos pequenos",
"3": "3: Inclinação média <25%, superfície variável, pedras/galhos do tamanho do punho",
"4": "4: Inclinação média <30%, condição insatisfatória, pedras/galhos grandes",
"5": "5: Muito íngreme, geralmente a bicicleta precisa ser empurrada ou carregada"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nome",
"oneway": {
"label": "Mão Única",
"options": {
+ "no": "Não",
"undefined": "Assumindo ser Não",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
}
},
"oneway_yes": {
"label": "Mão Única",
"options": {
+ "no": "Não",
"undefined": "Assumindo ser Sim",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
}
},
"opening_hours": {
"parking": {
"label": "Tipo",
"options": {
- "surface": "Superfície",
- "multi-storey": "Vários níveis",
- "underground": "Subterrâneo",
- "sheds": "Cabanas",
"carports": "Abrigo de carros",
"garage_boxes": "Vagas de estacionamento",
- "lane": "Faixa de acostamento"
+ "lane": "Faixa de acostamento",
+ "multi-storey": "Vários níveis",
+ "sheds": "Cabanas",
+ "surface": "Superfície",
+ "underground": "Subterrâneo"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Dificuldade",
- "placeholder": "Fácil, Intermediário, Avançado...",
"options": {
- "novice": "Principiante (educativo)",
- "easy": "Fácil (círculo verde)",
- "intermediate": "Intermediário (quadrado azul)",
"advanced": "Avançado (diamante preto)",
+ "easy": "Fácil (círculo verde)",
"expert": "Especialista (duplo diamante preto)",
+ "extreme": "Extremo (necessário equipamento de escalada)",
"freeride": "Trajeto livre (fora da pista)",
- "extreme": "Extremo (necessário equipamento de escalada)"
- }
+ "intermediate": "Intermediário (quadrado azul)",
+ "novice": "Principiante (educativo)"
+ },
+ "placeholder": "Fácil, Intermediário, Avançado..."
},
"piste/grooming": {
"label": "Tosa de Animais",
"options": {
- "classic": "Clássico",
- "mogul": "Mongol",
"backcountry": "Sertão",
+ "classic": "Clássico",
"classic+skating": "Clássico e Patinação",
+ "mogul": "Mongol",
"scooter": "Lambreta/Moto de neve",
"skating": "Patinação"
}
"label": "Modelo",
"options": {
"downhill": "Declive",
+ "hike": "Caminhada",
+ "ice_skate": "Patim de gelo",
"nordic": "Nórdico",
+ "playground": "Playground",
"skitour": "Passeio de esqui",
"sled": "Trenó",
- "hike": "Caminhada",
"sleigh": "Trenó",
- "ice_skate": "Patim de gelo",
- "snow_park": "Estação de Esqui",
- "playground": "Playground"
+ "snow_park": "Estação de Esqui"
}
},
"place": {
"power": {
"label": "Tipo"
},
+ "power_supply": {
+ "label": "Fonte de Energia"
+ },
"railway": {
"label": "Tipo"
},
},
"sac_scale": {
"label": "Dificuldade da caminhada",
- "placeholder": "Caminhada na montanha, caminhada alpina",
"options": {
- "hiking": "T1: Caminhada",
- "mountain_hiking": "T2: Caminhada na montanha",
- "demanding_mountain_hiking": "T3: Requer caminhada na montanha",
"alpine_hiking": "T4: Caminhada alpina",
"demanding_alpine_hiking": "T5: Requer caminhada alpina",
- "difficult_alpine_hiking": "T6: Dificuldade de caminhada alpina"
- }
+ "demanding_mountain_hiking": "T3: Requer caminhada na montanha",
+ "difficult_alpine_hiking": "T6: Dificuldade de caminhada alpina",
+ "hiking": "T1: Caminhada",
+ "mountain_hiking": "T2: Caminhada na montanha"
+ },
+ "placeholder": "Caminhada na montanha, caminhada alpina"
+ },
+ "sanitary_dump_station": {
+ "label": "Ponto de Descarga de Dejetos"
},
"seasonal": {
"label": "Sazonal"
"service": {
"label": "Tipo"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Ferramenta de corrente",
"options": {
- "undefined": "Assumindo ser Não",
- "yes": "Sim",
- "no": "Não"
+ "no": "Não",
+ "undefined": "Presume-se que não",
+ "yes": "Sim"
}
},
"service/bicycle/pump": {
"label": "Bomba de ar",
"options": {
+ "no": "Não",
"undefined": "Assumindo ser Não",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
+ }
+ },
+ "service_rail": {
+ "label": "Tipo de serviço",
+ "options": {
+ "crossover": "Linha de serviço",
+ "siding": "Linha de ultrapassagem",
+ "spur": "Ramal de inserção",
+ "yard": "Pátio de manobra"
}
},
"shelter": {
},
"smoking": {
"label": "Fumantes",
- "placeholder": "Não, Separado, Yes...",
"options": {
- "no": "Não fume em qualquer lugar",
- "separated": "Em áreas de fumantes, não fisicamente isoladas",
+ "dedicated": "Dedicado a fumantes (por exemplo, clube de fumantes)",
"isolated": "Em áreas de fumantes, fisicamente isoladas",
+ "no": "Não fume em qualquer lugar",
"outside": "Permitido do lado de fora",
- "yes": "Permitido em toda parte",
- "dedicated": "Dedicado a fumantes (por exemplo, clube de fumantes)"
- }
+ "separated": "Em áreas de fumantes, não fisicamente isoladas",
+ "yes": "Permitido em toda parte"
+ },
+ "placeholder": "Não, Separado, Yes..."
},
"smoothness": {
"label": "Maciez",
- "placeholder": "Cilindros estreitos, rodas, fora de estrada",
"options": {
+ "bad": "Rodas resistentes: trekking bike, carro, riquixá",
"excellent": "Cilindros estreitos: patins urbano, prancha de skate ",
"good": "Rodas estreintas: bicicleta de corridas",
+ "horrible": "Fora de estrada: veículo fora de estrada para serviço pesado.",
+ "impassable": "Intransponível / Nenhum veículo sobre rodas",
"intermediate": "Rodas: bicicleta urbana, cadeira de rodas, lambreta",
- "bad": "Rodas resistentes: trekking bike, carro, riquixá",
"very_bad": "Alta desobstrução: veículo fora de estrada para serviço leve",
- "horrible": "Fora de estrada: veículo fora de estrada para serviço pesado.",
"very_horrible": "Especializado em fora de estrada: trator, quadriciclo"
- }
+ },
+ "placeholder": "Cilindros estreitos, rodas, fora de estrada"
},
"social_facility_for": {
"label": "Pessoas atendidas",
},
"structure": {
"label": "Estrutura",
- "placeholder": "Desconhecido",
"options": {
"bridge": "Ponte",
- "tunnel": "Túnel",
- "embankment": "Aterro Elevado",
"cutting": "Escavação",
- "ford": "Vau"
- }
+ "embankment": "Aterro Elevado",
+ "ford": "Vau",
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Desconhecido"
},
"studio_type": {
"label": "Tipo"
},
"takeaway": {
"label": "Para viagem",
- "placeholder": "Sim, Não, Somente para viagem...",
"options": {
- "yes": "Sim",
"no": "Não",
- "only": "Somente para viagem"
- }
+ "only": "Somente para viagem",
+ "yes": "Sim"
+ },
+ "placeholder": "Sim, Não, Somente para viagem..."
},
"toilets/disposal": {
"label": "Descarte",
"options": {
- "flush": "Descarga",
- "pitlatrine": "Fossa/Latrina",
+ "bucket": "Balde",
"chemical": "Químico",
- "bucket": "Balde"
+ "flush": "Descarga",
+ "pitlatrine": "Fossa/Latrina"
}
},
"tourism": {
},
"tracktype": {
"label": "Tipo de trilha",
- "placeholder": "Sólido, Na maioria das vezes sólido, Macio...",
"options": {
"grade1": "Sólido: Pavimentado ou superfície de pedra britada fortemente compactada",
"grade2": "Na maioria das vezes sólido: Cascalho/rocha com algum material macio mesclado.",
"grade3": "Mistura em parte iguais de materiais duros e macios",
"grade4": "Na maioria das vezes macio: terra/areia/grama com algum material duro mesclado.",
"grade5": "Macio: terra/areia/grama"
- }
+ },
+ "placeholder": "Sólido, Na maioria das vezes sólido, Macio..."
},
"trail_visibility": {
"label": "Visibilidade da Trilha",
- "placeholder": "Excelente, Bom, Ruim...",
"options": {
+ "bad": "Ruim: sem sinais, o caminho algumas vezes não é visível ou não existe",
"excellent": "Excelente: caminho claro ou sinais em toda a parte",
"good": "Bom: sinais visíveis, algumas vezes requer uma busca",
- "intermediate": "Intermediário: poucos sinais, caminho visível na maioria das vezes",
- "bad": "Ruim: sem sinais, o caminho algumas vezes não é visível ou não existe",
"horrible": "Horrível: frequentemente sem caminho, algumas habilidades em localização são necessárias",
+ "intermediate": "Intermediário: poucos sinais, caminho visível na maioria das vezes",
"no": "Não: sem caminho, são necessárias excelentes habilidades em localização"
- }
+ },
+ "placeholder": "Excelente, Bom, Ruim..."
},
"trees": {
"label": "Árvores"
"terms": "Aluguel de Carros"
},
"amenity/car_sharing": {
- "name": "Carsharing",
+ "name": "Compartilhamento de carros",
"terms": "Carsharing, "
},
"amenity/car_wash": {
"name": "Restaurante",
"terms": "Restaurante"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Ponto de Descarga de Dejetos (para trailers)"
+ },
"amenity/school": {
"name": "Escola",
"terms": "Área Escolar, Terreno Escolar, Pátio Escolar"
},
"amenity/shelter": {
- "name": "Abrigo",
- "terms": "Abrigo"
+ "name": "Abrigo contra Intempéries",
+ "terms": "Abrigo contra Intempéries"
},
"amenity/social_facility": {
"name": "Unidade de Assistência Social",
},
"amenity/university": {
"name": "Área Universitária",
- "terms": "Área de Universidade"
+ "terms": "Área de Universidade, Faculdade, Área de Faculdade, Centro Universitário"
},
"amenity/vending_machine": {
"name": "Máquina de Venda",
"terms": "Igreja"
},
"building/college": {
- "name": "Edifício de escola técnica",
+ "name": "Edifício de Escola Técnica",
"terms": "Colégio técnico, Ensino profissionalizante, Educação profissional"
},
"building/commercial": {
},
"building/construction": {
"name": "Edifício em construção",
- "terms": "Edificação em Construção"
+ "terms": "Edificação em Construção, Construção, Obras"
},
"building/detached": {
"name": "Casa Separada",
},
"building/university": {
"name": "Edifício Universitário",
- "terms": "Edifício Universitário"
+ "terms": "Edifício Universitário, Faculdade, Edifício de Faculdade"
},
"building/warehouse": {
"name": "Armazém",
"terms": "Via de Pedestre, Caminho de Pedestre, Passeio, Calçada"
},
"highway/living_street": {
- "name": "Via de Espaço Compartilhado",
- "terms": "Rua Viva, Rua Preferencial a Pedestres"
+ "name": "Via Compartilhada",
+ "terms": "Rua de Convivência, Rua Preferencial a Pedestres"
},
"highway/mini_roundabout": {
"name": "Mini-Rotatória",
- "terms": "Mini-Rotatória"
+ "terms": "Mini-Rotatória, Balão, Mini-Rotunda"
},
"highway/motorway": {
"name": "Autoestrada",
"terms": "Construção"
},
"landuse/farm": {
- "name": "Fazenda",
- "terms": "Campo agrícola, agricultura, campanha, quinta, agrícola, rural, terra arável"
+ "name": "Área de Plantação",
+ "terms": "Campo agrícola, agricultura, campanha, quinta, agrícola, rural, terra arável, fazenda, lavoura,"
},
"landuse/farmland": {
- "name": "Fazenda",
- "terms": "Campo agrícola, agricultura, campanha, quinta, agrícola, rural, terra arável"
+ "name": "Área de Plantação",
+ "terms": "Campo agrícola, agricultura, campanha, quinta, agrícola, rural, terra arável, fazenda, lavoura"
},
"landuse/farmyard": {
"name": "Pátio de Fazenda",
- "terms": "Pátio de Fazenda"
+ "terms": "Pátio de Fazenda, Chácara, Sítio"
},
"landuse/forest": {
"name": "Floresta manejada",
"terms": "Aterro Sanitário, Depósito de Lixo"
},
"landuse/meadow": {
- "name": "Prado",
- "terms": "Prado, Pasto, Pradaria"
+ "name": "Pasto / Prado",
+ "terms": "Prado, Pasto, Pradaria, Área de Pasto, Pastagem, Fazenda"
},
"landuse/military": {
"name": "Área militar",
"name": "Farol",
"terms": "Farol"
},
+ "man_made/mast": {
+ "name": "Torre de Rádio",
+ "terms": "Torre de Comunicação, Torre de Telecomunicações, Antena"
+ },
"man_made/observation": {
"name": "Torre de Observação",
"terms": "Torre de observação"
},
+ "man_made/petroleum_well": {
+ "name": "Poço de Petróleo"
+ },
"man_made/pier": {
"name": "Píer",
"terms": "Píer"
"name": "Tubulação",
"terms": "Encanamento, Duto"
},
+ "man_made/silo": {
+ "name": "Silo"
+ },
"man_made/survey_point": {
"name": "Ponto de Levantamento Geográfico",
"terms": "Marco Geodésico, Equipamento de GPS Diferencial"
},
"natural/wood": {
"name": "Mata Nativa",
- "terms": "Bosque, Floresta"
+ "terms": "Floresta, Bosque"
},
"office": {
"name": "Escritório",
"name": "Cidade Maior",
"terms": "Cidade, Município"
},
+ "place/farm": {
+ "name": "Fazenda",
+ "terms": "Localidade isolada, Fazenda"
+ },
"place/hamlet": {
"name": "Lugarejo",
"terms": "Lugarejo"
"name": "Relação",
"terms": "Relação"
},
+ "roundabout": {
+ "name": "Rotatória",
+ "terms": "Rotatória, Rotunda, Rótula, Bolacha, Girador, Balão"
+ },
"route/ferry": {
"name": "Rota de Balsa",
"terms": "Rota de Barco, Rota de Balsa"
"terms": "Loja"
},
"shop/alcohol": {
- "name": "Loja de Licores",
+ "name": "Loja de alcoólicos licenciada",
"terms": "Loja de Licores"
},
"shop/anime": {
"terms": "Joalheria"
},
"shop/kiosk": {
- "name": "Banca de Revistas",
- "terms": "Banca de Jornais, Jornaleiro"
+ "name": "Quiosque",
+ "terms": "Kiosk, kioske"
},
"shop/kitchen": {
"name": "Loja de Cozinhas",
"terms": "Concessionária de Motos"
},
"shop/music": {
- "name": "Loja de Instrumentos Musicais",
+ "name": "Loja de Discos Musicais",
"terms": "Loja de Discos Musicais, Loja de CD's, Loja de Vinil, Loja Musical"
},
"shop/musical_instrument": {
"terms": "casa de penhores, loja"
},
"shop/pet": {
- "name": "Pet Shop",
+ "name": "Loja de animais",
"terms": "Pet Shop"
},
"shop/photo": {
"terms": "Loja de Mergulho"
},
"shop/seafood": {
- "name": "Loja de frutos do mar",
- "terms": "Peixaria, Petiscaria, Pescado, Petisqueira"
+ "name": "Peixaria / Frutos do mar",
+ "terms": "Peixaria, Pescado, Petisqueira, Loja de Frutos do Mar, Camarão, Lagosta, Peixes"
},
"shop/second_hand": {
"name": "Financeira",
"terms": "Loja de Tiro, Loja de Equipamentos de Tiro"
},
"shop/window_blind": {
- "name": "Loja de Blindagem de Vidros",
+ "name": "Loja de persianas",
"terms": "Loja de Vidros Blindados"
},
"shop/wine": {
"name": "Valeta de drenagem",
"terms": "Dreno"
},
+ "waterway/fuel": {
+ "name": "Posto de Combustível Marítimo",
+ "terms": "Pier de Combustível Marítimo, Ponto de Combustível Marítimo, Ponto de Abastecimento Marítimo"
+ },
"waterway/river": {
"name": "Rio",
"terms": "Rio"
"name": "Orla Fluvial",
"terms": "Orla Fluvial, Margem do Rio"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Ponto de Descarga de Dejetos (para barcos)"
+ },
"waterway/stream": {
"name": "Córrego",
"terms": "Córrego, Riacho"
"multiple": "{n} objetos eliminados."
},
"incomplete_relation": "Este elemento não pode ser eliminado porque não foi todo descarregado.",
+ "part_of_relation": "Este elemento não pode ser eliminado pois faz parte de uma relação maior. Tem de remover-lo da relação primeiro.",
"connected_to_hidden": "Não é possível eliminar pois este elemento está conectado a outro elemento escondido."
},
"add_member": {
"commit": {
"title": "Gravar Alterações",
"description_placeholder": "Breve descrição das suas alterações",
- "message_label": "Sumário de edição",
+ "message_label": "Comentário de Sumário",
"upload_explanation": "As alterações que enviar ficarão visíveis em todos os mapas que usem dados do OpenStreetMap.",
"upload_explanation_with_user": "As alterações que enviar como {user} ficarão visíveis em todos os mapas que usem dados do OpenStreetMap.",
"save": "Gravar",
"cancel": "Cancelar",
- "changes": "{Count} Alterações",
+ "changes": "{count} Alterações",
"warnings": "Avisos",
"modified": "Modificado",
"deleted": "Eliminado",
},
"contributors": {
"list": "Edições de {users}",
- "truncated_list": "Edições de {users} e outros {count}"
+ "truncated_list": "Edições feitas por {users} e outros {count} utilizadores"
+ },
+ "infobox": {
+ "selected": "{n} selecionados",
+ "geometry": "Geometria",
+ "closed": "fechado",
+ "center": "Centro",
+ "perimeter": "Perímetro ",
+ "length": "Comprimento",
+ "area": "Área",
+ "centroid": "Centroide ",
+ "location": "Localização",
+ "metric": "Metrico",
+ "imperial": "Imperial"
+ },
+ "geometry": {
+ "point": "ponto",
+ "vertex": "vértice",
+ "line": "lina",
+ "area": "área",
+ "relation": "relaçã"
},
"geocoder": {
"search": "Pesquisar globalmente...",
"title": "Gravar",
"help": "Gravar alterações no OpenStreetMap, tornando-as visíveis a outros utilizadores.",
"no_changes": "Não há alterações para gravar.",
- "error": "Ocorreu um erro ao tentar gravar",
+ "error": "Ocorreram erros ao tentar gravar",
+ "status_code": "O servidor devolveu o seguinte código de status {code}",
"unknown_error_details": "Por favor certifique-se que está conectado à Internet.",
"uploading": "Enviando alterações para OpenStreetMap.",
- "unsaved_changes": "Tem alterações por gravar"
+ "unsaved_changes": "Tem alterações por gravar",
+ "conflict": {
+ "header": "Resolver edições conflituosas",
+ "count": "Conflito {num} de um total de {total}",
+ "previous": "< Anterior",
+ "next": "Próximo >",
+ "keep_local": "Manter a minha",
+ "keep_remote": "Usar a deles",
+ "restore": "Restaurar",
+ "delete": "Deixar apagado",
+ "download_changes": "Ou descarregue as suas alterações",
+ "done": "Todos os conflitos foram resolvidos!",
+ "help": "Outro utilizador alterou alguns elementos do mapa que você alterou\nClique abaixo em cada item para ver mais detalhes sobre o conflito e escolher se gostaria de manter\na sua alteração ou a do outro utilizador.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Este objeto foi apagado por {user}.",
+ "location": "Este objeto foi movimentado por você e por {user}",
+ "nodelist": "Nós foram alterados por você e por {user}",
+ "memberlist": "Membros de uma relação foram alterados por você e por {user}",
+ "tags": "Alterou a <b>{tag}</b> etiqueta para \"{local}\" e {user} alterou-a para {remote}"
+ }
},
"success": {
"edited_osm": "Acabou de editar o OSM!",
"help_html": "As suas mudanças deverão aparecer na camada \"Standard\" dentro de alguns minutos. Outras camadas, e certos elementos, podem levar mais tempo\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detalhes</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Cancelar"
},
"splash": {
"welcome": "Bem vindo ao editor OpenStreetMap iD",
},
"help": {
"title": "Ajuda",
- "help": "# Ajuda\n\nEste é um editor do [OpenStreetMap](http://www.openstreetmap.org/), o mapa mundial livre e editável. Pode utilizá-lo para adicionar e atualizar dados do mapa na sua área, colaborando na construção de um mapa mundial melhor para todos. \n\nAs edições que fizer neste mapa serão visíveis a todas as pessoas que utilizem o OpenStreetMap. Para poder alterar o mapa é necessário ter uma [conta no OpenStreetMap](https://www.openstreetmap.org/user/new). O [editor iD](http://ideditor.com/) é um projeto colaborativo com [código-fonte disponível no site GitHub](https://github.com/openstreetmap/iD). \n",
+ "help": "#Ajuda\n\nEste é um editor para o [OpenStreetMap](http://www.openstreetmap.org/), o mapa livre e editável do mundo.\nPode usar-lo para adicionar e actualizar dados da tua área, tornando-o num mapa de código e dados abertos mundial melhor para todos.\n\nEdições que faças neste mapa serão visíveis para qualquer pessoa que\ndecida usar o OpenStreetMap. De maneira a fazer uma edição, basta\n[iniciar sessão](https://www.openstreetmap.org/login).\n\nO [editor iD](http://ideditor.com/) é um projeto colaborativo com o seu [código disponível no GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Editar e Gravar\n\nEste editor foi concebido para editar ligado à internet, e está a utilizá-lo\natravés de um site neste momento.\n\n### Selecionar elementos do mapa\n\nPara selecionar um elemento do mapa, como uma estrada ou uma loja,\nclique nesse elemento no mapa. Aparecerá de seguida um painel lateral\ncom informações sobre o elemento onde poderá eliminar, alterar ou\nacrescentar informações.\n\nPara selecionar vários elementos manter premida a tecla 'Shift' (maiúsculas),\nclicar e arrastar com o rato no mapa. Isto irá selecionar todos os elementos\ndentro do retângulo selecionado, permitindo fazer alterações em todos\nos elementos selecionados de uma só vez.\n\n### Gravar Edições\n\nQuando faz alterações como editar estradas, edifícios e locais, as alterações\nsão gravadas no seu computador até que clique no botão Gravar para enviar\nas alterações para o OpenStreetMap. Não se preocupe caso cometa algum\nerro - pode desfazer as alterações clicando no botão de Desfazer, assim\ncomo refazer as alterações desfeitas clicando no botão Refazer que se\nencontram no topo do ecrã.\n\nClique em 'Gravar' para terminar um conjunto de alterações - por exemplo,\nse terminou as alterações num local e quer fazer alterações noutro local.\nTerá oportunidade de rever as alterações que fez e o editor fornece\nsugestões úteis e avisos caso alguma alteração que não pareça correta.\n\nSe tudo estiver bem, pode introduzir uma breve descrição explicando\nas alterações que fez e clicar de seguida em 'Gravar' de novo para enviar\nas alterações para o [OpenStreetMap.org](http://www.openstreetmap.org/)\nonde estarão visíveis para todos e onde outros podem melhorar e completar.\n\nCaso não possa terminar as edições de uma só vez, pode deixar o editor,\nou inclusive fechar o navegador de internet e mais tarde regressar ao site\ndo OpenStreetMap, editando-o novamente . Será mostrado então um aviso\n(caso seja o mesmo computador e mesmo navegador de internet) que tem\nalterações por gravar e se quer recuperar essas alterações, para continuar.\n",
"roads": "# Estradas\n\nPode criar, corrigir e eliminar estradas com o editor. As estradas podem ser\nde qualquer tipo: caminhos, autoestradas, carreiros florestais ou agrícolas,\nruas pedonais, ciclovias, entre outras. Qualquer local que seja frequentemente\natravessado por pessoas deve ser normalmente colocado no mapa.\n\n### Selecionar\n\nClique numa estrada para a selecionar. Aparece o painel lateral direito para\npoder editar as caraterísticas da estrada e botões em redor da estrada.\n\n### Alterar\n\nClique na estrada que quer alterar. Se quiser adicionar pontos à estrada entre\ndois pontos existentes basta clicar 2 vezes sobre o segmento da estrada.\nPode então deslocar esse ponto acabado de criar.\n\nSe existir uma estrada com ligação a outra no terreno mas que no mapa não\nestão ligadas, basta deslocar um ponto de uma das estradas até à outra estrada\npara ficarem ligadas. É muito importante as estradas estarem corretamente\nligadas umas às outras para que os programas de rotas possam fornecer\ninformações corretas aos utilizadores.\n\nPode também clicar no botão de 'Mover' ou premir a tecla 'M' para mover\na estrada toda de uma só vez. No entanto deve-se ter cuidado ao fazer isso\npois todos os pontos da estrada, incluindo os pontos partilhados com\noutras estradas, serão todos movidos.\n\nPara dividir uma estrada em duas, útil por exemplo quando existe uma estrada\nno mapa que na realidade são 2 estradas diferentes com referências diferentes,\nclique no ponto da estrada onde quer dividir e clique no botão da tesoura que\naparece ao lado do ponto. Esse botão aparece apenas se estiver o ponto\nselecionado e não a linha. Pode também combinar as 2 linhas numa só\nselecionando as duas estradas e clicando no botão + que aparece ao lado.\nSe existirem no mapa 2 estradas ligadas (nas extremidades ou num cruzamento)\nmas que na realidade não se ligam ou cruzam, basta selecionar o ponto comum\ne clicar no botão ao lado de desligar as linhas. Pode então deslocar o ponto\npara outro local.\n\n### Eliminar\n\nSe uma estrada estiver errada - pode-se confirmar pela imagem de satélite (ter em\nconta que a imagem de satélite pode ter alguns anos e a estrada pode ter sido\nconstruida posteriormente) e preferencialmente confirmar presencialmente - pode\neliminar a estrada toda. É necessária precaução ao eliminar elementos do mapa.\nTal como qualquer outra alteração, os resultados serão visíveis a todos os outros.\n\nPode eliminar uma estrada clicando nela para a selecionar e de seguida\nclicar no ícone do caixote do lixo que aparece ao lado, ou simplesmente\npressionar na tecla 'Del' do teclado.\n\n### Criar\n\nEncontrou alguma estrada que não existe no mapa? Clique no botão 'Linha' que\nestá na parte superior ou pressione a tecla '2' para começar a desenhar a linha.\n\nClique no ponto inicial da estrada para começar a desenhá-la. Se Já existir\numa estrada no mapa, mas que está incompleta, pode continuá-la bastando\npara isso clicar no ponto da extremidade da estrada existente.\n\nAdicione então outros pontos de acordo com as imagens de satélite ou os trilhos\nGPS. Se a estrada que está a desenhar cruzar com outra estrada, crie um ponto\npor cima da outra estrada onde se cruzam. Quando terminar de desenhar\na estrada, clique duas vezes no último ponto da estrada ou pressione as teclas\nde mudança de linha ou 'Enter'.\n",
"gps": "# GPS\n\nOs dados de GPS são a fonte mais fidedigna de dados no OpenStreetMap.\nEste editor suporta tracejamentos locais - ficheiros `.gpx` que estejam no\nseu computador. Pode também coleccionar este tipo de traços de GPS\natravés das várias aplicações existentes para smartphones assim como\nsistemas pessoais de GPS.\n\nPara mais informações sobre como realizar um exame topográfico com GPS,\nleia [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nPara usar um traço GPX para mapear, arraste e coloque o ficheiro GPX no\nmapa do editor. Se for reconhecido com sucesso, o troço será adicionado\nno mapa, aparecendo como uma linha de cor roxa. Clique no menu\n'Dados do Mapa' à direita para ativar, desativar ou enquadrar nesta nova\ncamada onde se situa o GPX.\n\nO troço GPX não é enviado diretamente para o OpenStreetMap - a melhor\nmaneira de usar-lo é como uma referência para desenhar elementos no\nmapa que precisem de ser mapeados ou alinhados corretamente. Também\npode [enviar os tracejamentos](http://www.openstreetmap.org/trace/create) que faça para o OpenStreetMap de modo a ajudar outros\nutilizadores que podem vir a utilizar esses dados.\n",
"fields": {
"access": {
"label": "Acesso",
- "placeholder": "Desconhecido",
- "types": {
- "access": "Geral",
- "foot": "Peões",
- "motor_vehicle": "Veículos Motorizados",
- "bicycle": "Bicicletas",
- "horse": "Animais"
- },
"options": {
- "yes": {
- "title": "Permitido",
- "description": "Acesso permitido por lei"
+ "designated": {
+ "description": "Acesso permitido de acordo com a sinalética e/ou com leis locais específicas; como p. ex. o Código da Estrada",
+ "title": "Designado"
+ },
+ "destination": {
+ "description": "Acesso permitido apenas para chegar a determinado destino; como p. ex. parques de estacionamento ou centros comerciais",
+ "title": "Destino"
},
"no": {
- "title": "Proibido",
- "description": "Acesso não permitido ao público em geral"
+ "description": "Acesso não permitido ao público em geral",
+ "title": "Proibido"
},
"permissive": {
- "title": "Permissivo",
- "description": "Acesso permitido até o proprietário revogar a permissão"
+ "description": "Acesso permitido até o proprietário revogar a permissão",
+ "title": "Permissivo"
},
"private": {
- "title": "Privado",
- "description": "Acesso permitido apenas com permissão do proprietário de forma individual"
- },
- "designated": {
- "title": "Designado",
- "description": "Acesso permitido de acordo com a sinalética e/ou com leis locais específicas; como p. ex. o Código da Estrada"
+ "description": "Acesso permitido apenas com permissão do proprietário de forma individual",
+ "title": "Privado"
},
- "destination": {
- "title": "Destino",
- "description": "Acesso permitido apenas para chegar a determinado destino; como p. ex. parques de estacionamento ou centros comerciais"
+ "yes": {
+ "description": "Acesso permitido por lei",
+ "title": "Permitido"
}
+ },
+ "placeholder": "Desconhecido",
+ "types": {
+ "access": "Geral",
+ "bicycle": "Bicicletas",
+ "foot": "Peões",
+ "horse": "Animais",
+ "motor_vehicle": "Veículos Motorizados"
}
},
"access_simple": {
"address": {
"label": "Morada",
"placeholders": {
+ "city": "Localidade",
+ "country": "País",
+ "district": "Distrito",
+ "hamlet": "Aldeia",
"housename": "Nome da Habitação",
"housenumber": "123",
- "street": "Rua",
- "city": "Localidade",
- "postcode": "Código Postal",
"place": "Sítio",
- "hamlet": "Aldeia",
- "suburb": "Subúrbio ",
- "subdistrict": "Subdistrito",
- "district": "Distrito",
+ "postcode": "Código Postal",
"province": "Província",
"state": "Estado",
- "country": "País"
+ "street": "Rua",
+ "subdistrict": "Subdistrito",
+ "suburb": "Subúrbio "
}
},
"admin_level": {
"aerialway/access": {
"label": "Acesso",
"options": {
+ "both": "Ambas",
"entry": "Entrada",
- "exit": "Saída",
- "both": "Ambas"
+ "exit": "Saída"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Acesso (verão)",
"options": {
+ "both": "Ambas",
"entry": "Entrada",
- "exit": "Saída",
- "both": "Ambas"
+ "exit": "Saída"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Direção",
"options": {
- "N": "Norte",
"E": "Este",
- "S": "Sul",
- "W": "Oeste",
- "NE": "Nordeste",
- "SE": "Sudeste",
- "SW": "Sudoeste",
- "NW": "Noroeste",
- "NNE": "Nor-nordeste",
"ENE": " Lés-nordeste",
"ESE": "Lés-sudeste",
+ "N": "Norte",
+ "NE": "Nordeste",
+ "NNE": "Nor-nordeste",
+ "NNW": "Nor-noroeste",
+ "NW": "Noroeste",
+ "S": "Sul",
+ "SE": "Sudeste",
"SSE": "Su-sudeste",
"SSW": "Su-sudoeste",
- "WSW": "Oés-sudoeste",
+ "SW": "Sudoeste",
+ "W": "Oeste",
"WNW": "Oés-noroeste",
- "NNW": "Nor-noroeste"
+ "WSW": "Oés-sudoeste"
}
},
"clock_direction": {
"label": "Direção",
"options": {
- "clockwise": "Sentido dos Ponteiros do Relógio",
- "anticlockwise": "Sentido Contrário aos Ponteiros do Relógio."
+ "anticlockwise": "Sentido Contrário aos Ponteiros do Relógio.",
+ "clockwise": "Sentido dos Ponteiros do Relógio"
}
},
"collection_times": {
"construction": {
"label": "Tipo"
},
+ "content": {
+ "label": "Conteúdos"
+ },
"country": {
"label": "País"
},
"description": {
"label": "Descrição"
},
+ "drive_through": {
+ "label": "Drive-Through"
+ },
"electrified": {
"label": "Eletrificação",
- "placeholder": "Catenária, Linha Eletrificada...",
"options": {
"contact_line": "Catenária (Linha de contacto)",
+ "no": "Não",
"rail": "Linha Eletrificada",
- "yes": "Sim (não especificada)",
- "no": "Não"
- }
+ "yes": "Sim (não especificada)"
+ },
+ "placeholder": "Catenária, Linha Eletrificada..."
},
"elevation": {
"label": "Elevação"
"label": "Tipo",
"options": {
"pillar": "Superfície ",
+ "pond": "Poça",
"underground": "Subterrâneo ",
- "wall": "Muro",
- "pond": "Poça"
+ "wall": "Muro"
}
},
"fixme": {
},
"gender": {
"label": "Género",
- "placeholder": "Desconhecido",
"options": {
- "male": "Masculino",
"female": "Feminino",
+ "male": "Masculino",
"unisex": "Unisexo"
- }
+ },
+ "placeholder": "Desconhecido"
},
"generator/method": {
"label": "Método"
"incline": {
"label": "Inclinação"
},
+ "incline_steps": {
+ "label": "Inclinação",
+ "options": {
+ "down": "Para baixo",
+ "up": "Para cima"
+ }
+ },
"information": {
"label": "Tipo"
},
"internet_access": {
"label": "Acesso à Internet",
"options": {
- "yes": "Sim",
"no": "Não",
- "wlan": "Wi-Fi",
+ "terminal": "Terminal de acesso",
"wired": "Com fio",
- "terminal": "Terminal de acesso"
+ "wlan": "Wi-Fi",
+ "yes": "Sim"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Ciclo das Folhas",
"options": {
- "evergreen": "Persistente",
"deciduous": "Caduca",
- "semi_evergreen": "Semi-Presistente",
+ "evergreen": "Persistente",
+ "mixed": "Mistura",
"semi_deciduous": "Semi-Caduca",
- "mixed": "Mistura"
+ "semi_evergreen": "Semi-Presistente"
}
},
"leaf_type": {
"label": "Tipo de Folha",
"options": {
"broadleaved": "Largas",
- "needleleaved": "Agulhas",
+ "leafless": "Sem folha",
"mixed": "Mistura",
- "leafless": "Sem folha"
+ "needleleaved": "Agulhas"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Dificuldade para Bicicletas de Montanha",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Terreno sólido com cascalho ou terra compactada, com nenhum obstáculo, curvas largas, etc.",
"1": "1: Algum terreno solto, com pequenos obstáculos, curvas fáceis, etc.",
"4": "4: Terreno muito solto, com pedregulhos grandes, curvas muito pequenas e perigosas, etc.",
"5": "5: Deslizamentos de terra, depressões grandes e profundas, etc.",
"6": "6: Não transitável exceto aos melhores ciclistas de montanha"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Dificuldade de Caminhar definido pela IMBA",
- "placeholder": "Fácil, Médio, Difícil...",
"options": {
"0": "Muito fácil (circulo branco)",
"1": "Fácil (circulo verde)",
"2": "Médio (quadrado azul)",
"3": "Difícil (diamante negro)",
"4": "Muito Difícil (duplo diamante negro)"
- }
+ },
+ "placeholder": "Fácil, Médio, Difícil..."
},
"mtb/scale/uphill": {
"label": "Dificuldade da Subida para Bicicletas de Montanha",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Inclinação média de <10%, superfície de cascalho ou de terra compactada, com nenhum obstáculos, etc.",
"1": "1. Inclinação média de <15%, superfície de cascalho ou terra de compactada, com alguns obstáculos, etc.",
"3": "3. Inclinação média de <25%, superfície por vezes solta, com pedras/raízes, etc.",
"4": "4. Inclinação média de <30%, superfície em más condições, com grandes pedras/raízes, etc.",
"5": "5. Muito inclinado, é geralmente necessário empurrar ou levar a bicicleta à mão."
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Nome",
"oneway": {
"label": "Sentido Único?",
"options": {
+ "no": "Não",
"undefined": "Assumido que seja Não",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
}
},
"oneway_yes": {
"label": "Sentido Único",
"options": {
+ "no": "Não",
"undefined": "Assumido que seja Sim",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
}
},
"opening_hours": {
"parking": {
"label": "Tipo",
"options": {
- "surface": "Superfície",
- "multi-storey": "Edifício-garagem",
- "underground": "Subterrâneo",
- "sheds": "Barracões",
"carports": "Telheiros",
"garage_boxes": "Garagens",
- "lane": "Estacionamento Paralelo à Estrada"
+ "lane": "Estacionamento Paralelo à Estrada",
+ "multi-storey": "Edifício-garagem",
+ "sheds": "Barracões",
+ "surface": "Superfície",
+ "underground": "Subterrâneo"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Dificuldade de Esquiar ",
- "placeholder": "Fácil, Intermédio, Avançado...",
"options": {
- "novice": "Muito Fácil (instrucional) ",
- "easy": "Fácil (Círculo verde)",
- "intermediate": "Médio (quadrado azul)",
"advanced": "Difícil (losango negro)",
+ "easy": "Fácil (Círculo verde)",
"expert": "Muito Difícil (duplo losango negro)",
+ "extreme": "Extremo (material de escalagem é necessário)",
"freeride": "Freeride (não supervisionada)",
- "extreme": "Extremo (material de escalagem é necessário)"
- }
+ "intermediate": "Médio (quadrado azul)",
+ "novice": "Muito Fácil (instrucional) "
+ },
+ "placeholder": "Fácil, Intermédio, Avançado..."
},
"piste/grooming": {
"label": "Niveladora de Neve",
"options": {
- "classic": "Clássico",
- "mogul": "Estilo Livre",
"backcountry": "Freeride",
+ "classic": "Clássico",
"classic+skating": "Clássico e Patinagem ",
+ "mogul": "Estilo Livre",
"scooter": "Scooter / Mota de Neve",
"skating": "Patinagem "
}
"label": "Tipo",
"options": {
"downhill": "Downhill",
+ "hike": "Passeio",
+ "ice_skate": "Patins no Gelo ",
"nordic": "Esqui nórdico",
+ "playground": "Parque Infantil",
"skitour": "Esqui Turístico",
"sled": "Trenó ",
- "hike": "Passeio",
"sleigh": "Trenó",
- "ice_skate": "Patins no Gelo ",
- "snow_park": "Snowpark",
- "playground": "Parque Infantil"
+ "snow_park": "Snowpark"
}
},
"place": {
"power": {
"label": "Tipo"
},
+ "power_supply": {
+ "label": "Fonte de Energia"
+ },
"railway": {
"label": "Tipo"
},
},
"sac_scale": {
"label": "Dificuldade de Caminhar",
- "placeholder": "Caminhada de Montanha, Caminhada Alpina...",
"options": {
- "hiking": "T1: Caminhada Normal",
- "mountain_hiking": "T2: Caminhada de Montanha",
- "demanding_mountain_hiking": "T3: Caminhada de Montanha Exigente",
"alpine_hiking": "T4: Caminhada Alpina",
"demanding_alpine_hiking": "T5: Caminhada Alpina Exigente",
- "difficult_alpine_hiking": "T6: Caminhada Muito Difícil"
- }
+ "demanding_mountain_hiking": "T3: Caminhada de Montanha Exigente",
+ "difficult_alpine_hiking": "T6: Caminhada Muito Difícil",
+ "hiking": "T1: Caminhada Normal",
+ "mountain_hiking": "T2: Caminhada de Montanha"
+ },
+ "placeholder": "Caminhada de Montanha, Caminhada Alpina..."
},
"seasonal": {
"label": "Sazonal"
"service": {
"label": "Tipo"
},
- "service/bicycle/chaintool": {
- "label": "Corrente de Corte",
+ "service/bicycle/chain_tool": {
+ "label": "Ferramenta para Correia",
"options": {
+ "no": "Não",
"undefined": "Assumido que seja Não",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
}
},
"service/bicycle/pump": {
"label": "Bomba de Ar",
"options": {
+ "no": "Não",
"undefined": "Assumido que seja Não",
- "yes": "Sim",
- "no": "Não"
+ "yes": "Sim"
+ }
+ },
+ "service_rail": {
+ "label": "Tipo de Serviço",
+ "options": {
+ "crossover": "Linha de serviço",
+ "siding": "Linha de ultrapassagem",
+ "spur": "Ramal de inserção",
+ "yard": "Linha de manobras"
}
},
"shelter": {
},
"smoking": {
"label": "Fumar",
- "placeholder": "Não, Separado, Sim",
"options": {
- "no": "Fumar não é permitido",
- "separated": "Em zona de fumadores, não isolada do estabelecimento",
+ "dedicated": "Dedicado a fumadores (por exemplo, clube de fumadores)",
"isolated": "Em zona de fumadores, isolada do estabelecimento ",
+ "no": "Fumar não é permitido",
"outside": "Permitido no exterior",
- "yes": "Fumar é permitido em todo o estabelecimento ",
- "dedicated": "Dedicado a fumadores (por exemplo, clube de fumadores)"
- }
+ "separated": "Em zona de fumadores, não isolada do estabelecimento",
+ "yes": "Fumar é permitido em todo o estabelecimento "
+ },
+ "placeholder": "Não, Separado, Sim"
},
"smoothness": {
"label": "Qualidade da Estrada",
- "placeholder": "Excelente, Boa, Má...",
"options": {
+ "bad": "Intermédia: carros de cidade, camiões, etc.",
"excellent": "Excelente: skates, patins em linha, etc.",
"good": "Muito boa: bicicletas de corrida, carros desportivos etc.",
+ "horrible": "Muito má: bicicletas de montanha, carros todo-o-terreno, etc.",
+ "impassable": "Intransitável / Veículos sem rodas",
"intermediate": "Boa: bicicletas de cidade, cadeira de rodas, scooters, etc.",
- "bad": "Intermédia: carros de cidade, camiões, etc.",
"very_bad": "Má: carroças, SUVs, etc.",
- "horrible": "Muito má: bicicletas de montanha, carros todo-o-terreno, etc.",
- "very_horrible": "Péssima: tratores, moto-quatros, etc.",
- "impassable": "Intransitável / Veículos sem rodas"
- }
+ "very_horrible": "Péssima: tratores, moto-quatros, etc."
+ },
+ "placeholder": "Excelente, Boa, Má..."
},
"social_facility_for": {
"label": "Pessoas Servidas",
},
"structure": {
"label": "Estrutura",
- "placeholder": "Desconhecido",
"options": {
"bridge": "Ponte",
- "tunnel": "Túnel",
- "embankment": "Elevação no terreno",
"cutting": "Corte no terreno",
- "ford": "Vau"
- }
+ "embankment": "Elevação no terreno",
+ "ford": "Vau",
+ "tunnel": "Túnel"
+ },
+ "placeholder": "Desconhecido"
},
"studio_type": {
"label": "Tipo"
},
"takeaway": {
"label": "Take Away",
- "placeholder": "Sim, Não, Apenas Take Away",
"options": {
- "yes": "Sim",
"no": "Não",
- "only": "Apenas Take Away"
- }
+ "only": "Apenas Take Away",
+ "yes": "Sim"
+ },
+ "placeholder": "Sim, Não, Apenas Take Away"
},
"toilets/disposal": {
"label": "Método de Eliminação de Resíduos",
"options": {
- "flush": "Descarregamento",
- "pitlatrine": "Fosso / Latrina",
+ "bucket": "Balde",
"chemical": "Químico ",
- "bucket": "Balde"
+ "flush": "Descarregamento",
+ "pitlatrine": "Fosso / Latrina"
}
},
"tourism": {
},
"tracktype": {
"label": "Qualidade da Superfície ",
- "placeholder": "Sólido, Intermédio, Macio...",
"options": {
"grade1": "1 - Sólida: pavimentada ou com material fortemente compactado",
"grade2": "2 - Sobretudo sólida: cascalho ou pedras misturadas com algum material macio",
"grade3": "3 - Intermédia, mistura de materiais sólidos e macios",
"grade4": "4 - Sobretudo macia: terra, erva ou areia misturadas com algum material sólido",
"grade5": "5 - Macia: Terra, erva ou areia"
- }
+ },
+ "placeholder": "Sólido, Intermédio, Macio..."
},
"trail_visibility": {
"label": "Visibilidade",
- "placeholder": "Excelente, Boa, Má...",
"options": {
+ "bad": "Má: caminho pouco visível",
"excellent": "Excelente: caminho claramente marcado ou com vários marcos de informações",
"good": "Boa: caminho muito visível",
- "intermediate": "Intermédia: caminho visível ou com poucos marcos de informações",
- "bad": "Má: caminho pouco visível",
"horrible": "Péssima: por vezes sem caminho ou com nenhum marco de informação",
+ "intermediate": "Intermédia: caminho visível ou com poucos marcos de informações",
"no": "Nenhuma: caminho não é visível, boa habilidade de orientação é necessária"
- }
+ },
+ "placeholder": "Excelente, Boa, Má..."
},
"trees": {
"label": "Árvores"
"water": {
"label": "Tipo"
},
+ "water_point": {
+ "label": "Bebedouro"
+ },
"waterway": {
"label": "Tipo"
},
"name": "Estação de Reparação de Bicicletas",
"terms": "Bicycle Repair Station"
},
+ "amenity/biergarten": {
+ "name": "Jardim da Cerveja",
+ "terms": "Beer Garden, Biergarten"
+ },
"amenity/boat_rental": {
"name": "Aluguer de Barcos",
"terms": "Boat Rental"
"name": "Farol",
"terms": "Faról, Lighthouse"
},
+ "man_made/mast": {
+ "name": "Torre de Rádio",
+ "terms": "Radio Mast, Mastro de Rádio"
+ },
"man_made/observation": {
"name": "Torre de Observação",
"terms": "Observatório Tower, Miradouro"
},
+ "man_made/petroleum_well": {
+ "name": "Poço de Petróleo",
+ "terms": "Oil Well"
+ },
"man_made/pier": {
"name": "Pontão / Atracadouro",
"terms": "Pier, Porto, Doca"
"name": "Gasoduto / Oleoduto",
"terms": "Tubo, Pipeline"
},
+ "man_made/silo": {
+ "name": "Silo"
+ },
+ "man_made/storage_tank": {
+ "name": "Depósito de Armazenamento"
+ },
"man_made/survey_point": {
"name": "Vértice Geodésico / Talefe",
"terms": "Survey Point"
"name": "Capital de Distrito",
"terms": "City, Cidade, Capital, Distrito"
},
+ "place/farm": {
+ "name": "Quinta",
+ "terms": "Farm, Fazenda, Pasto"
+ },
"place/hamlet": {
"name": "Aldeia",
"terms": "Hamlet, Aldeamento"
"name": "Relação",
"terms": "Relação"
},
+ "roundabout": {
+ "name": "Rotunda",
+ "terms": "Roundabout, Rotatória"
+ },
"route/ferry": {
"name": "Rota de Barca / Ferry",
"terms": "Rota do Ferry"
"name": "Vala de Drenagem",
"terms": "Drain"
},
+ "waterway/fuel": {
+ "name": "Posto de Combustível Marinho",
+ "terms": "Marine Fuel Station"
+ },
"waterway/river": {
"name": "Rio",
"terms": "Afluente, Barra, Barroca, Canal, Corga, Curso de Água, Delta, Estuário, Grota, Ria"
"commit": {
"title": "Salveaza modificarile",
"description_placeholder": "O scurtă descriere a contribuției tale.",
- "message_label": "Consemnează mesaj.",
"save": "Salveaza",
"cancel": "Renunță",
"warnings": "Atenționări",
"title": "Salveaza",
"help": "Salvează modificările pe OpenSteetMap, făcându-le disponibile către alți utilizatori.",
"no_changes": "Nici o modificare de salvat.",
- "error": "A apărut o eroare in timp ce salvai.",
"uploading": "Încarcă modificările in OpenStreetMap",
"unsaved_changes": "Ai modificări nesalvate."
},
"address": {
"label": "Adresă",
"placeholders": {
- "street": "Stradă",
- "city": "Oraș"
+ "city": "Oraș",
+ "street": "Stradă"
}
},
"aeroway": {
"internet_access": {
"label": "Acces internet",
"options": {
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Conectat",
- "terminal": "Terminal"
+ "wlan": "Wifi"
}
},
"landuse": {
+++ /dev/null
-{}
\ No newline at end of file
"multiple": "Удалены {n} объектов."
},
"incomplete_relation": "Этот объект нельзя удалить, потому что он загружен целиком.",
+ "part_of_relation": "Этот объект не может быть удалён, т.к. он является частью отношения. Сначала удалите объект из отношения.",
"connected_to_hidden": "Невозможно удалить, имеется соединение со скрытым объектом."
},
"add_member": {
"list": "Отредактировано {users}",
"truncated_list": "Отредактировано {users} и ещё {count} другими"
},
+ "infobox": {
+ "selected": "выбрано {n}",
+ "geometry": "Геометрия",
+ "closed": "закрыто",
+ "center": "Центр",
+ "perimeter": "Периметр",
+ "length": "Длина",
+ "area": "Площадь",
+ "centroid": "Центроид",
+ "location": "Местоположение",
+ "metric": "Метрическая",
+ "imperial": "Имперская"
+ },
+ "geometry": {
+ "point": "точка",
+ "vertex": "вершина",
+ "line": "линия",
+ "area": "область",
+ "relation": "связь"
+ },
"geocoder": {
"search": "Глобальный поиск...",
"no_results_visible": "Нет результатов в видимой области карты",
"tooltip": "Рельсы"
},
"power": {
- "description": "Объекты електроенергетики",
+ "description": "Объекты электроэнергетики",
"tooltip": "Лини электропередач, электростанции, подстанции и т.д."
},
"past_future": {
"help": "Отправить сделанные изменения на сервер OpenStreetMap, сделав их доступными всему миру",
"no_changes": "Сохранять нечего.",
"error": "Во время сохранения произошла ошибка",
+ "status_code": "Получен ответ сервера с кодом {code}",
"unknown_error_details": "Убедитесь, что вы подключены к Интернету.",
"uploading": "Отправляем данные на сервер OpenStreetMap.",
- "unsaved_changes": "У вас есть несохранённые правки"
+ "unsaved_changes": "У вас есть несохранённые правки",
+ "conflict": {
+ "header": "Разрешение конфликтов правок",
+ "count": "Конфликт {num} из {total}",
+ "previous": "< Предыдущий",
+ "next": "Следующий >",
+ "keep_local": "Моя версия",
+ "keep_remote": "Чужая версия",
+ "restore": "Восстановить",
+ "delete": "Оставить удаленным",
+ "download_changes": "Или загрузить ваши изменения.",
+ "done": "Все конфликты разрешены!",
+ "help": "Кто-то из участников ОСМ также изменил объекты, исправленные вами.\nПросмотрите каждый конфликт, в списке ниже, и решите: либо оставить ваши\nправки, либо принять правки другого участника.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "{user} удалил этот объект.",
+ "location": "Вы и {user} вдвоём переместили этот объект.",
+ "nodelist": "Вы и {user} вдвоём изменили точки.",
+ "memberlist": "Участники отношения были изменены вами и {user}.",
+ "tags": "Вы изменили тег <b>{tag}</b> на\"{local}\", а {user} на \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM отредактирована!",
"help_html": "Ваши изменения должны появиться на «Стандартном» слое в течении нескольких минут. Обновление остальных слоев и элементов может занять большее время\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>подробности</a>).\n"
},
"confirm": {
- "okay": "Ок"
+ "okay": "Ок",
+ "cancel": "Отменить"
},
"splash": {
"welcome": "Здравствуйте! Это iD, редактор карты OpenStreetMap",
},
"help": {
"title": "Справка",
- "help": "# СпÑ\80авка\n\nÐÑ\82о Ñ\80едакÑ\82оÑ\80 [OpenStreetMap](http://www.openstreetmap.org/): обÑ\89едоÑ\81Ñ\82Ñ\83пной,\nÑ\81вободно Ñ\80едакÑ\82иÑ\80Ñ\83емой каÑ\80Ñ\82Ñ\8b миÑ\80а. Ð\92Ñ\8b можеÑ\82е иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ñ\80едакÑ\82оÑ\80 длÑ\8f добавлениÑ\8f\nи обновлениÑ\8f каÑ\80Ñ\82Ñ\8b ваÑ\88ей меÑ\81Ñ\82ноÑ\81Ñ\82и, помогаÑ\8f вÑ\81ем,\nÑ\83лÑ\83Ñ\87Ñ\88аÑ\8f оÑ\82кÑ\80Ñ\8bÑ\82Ñ\83Ñ\8e и Ñ\81вободнÑ\83Ñ\8e каÑ\80Ñ\82Ñ\83 миÑ\80а\n\nÐ\92аÑ\88и пÑ\80авки Ñ\83видиÑ\82 каждÑ\8bй полÑ\8cзоваÑ\82елÑ\8c каÑ\80Ñ\82Ñ\8b OpenStreetMap. Ð\94лÑ\8f\nÑ\80едакÑ\82иÑ\80ованиÑ\8f вам поÑ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f [заÑ\80егиÑ\81Ñ\82Ñ\80иÑ\80оваÑ\82Ñ\8cÑ\81Ñ\8f в OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n[Редактор iD](http://ideditor.com/) — открытый совместный проект\nс [исходным кодом на GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# СпÑ\80авка\n\nÐÑ\82о Ñ\80едакÑ\82оÑ\80 [OpenStreetMap](http://www.openstreetmap.org/): обÑ\89едоÑ\81Ñ\82Ñ\83пной,\nÑ\81вободно Ñ\80едакÑ\82иÑ\80Ñ\83емой каÑ\80Ñ\82Ñ\8b миÑ\80а. Ð\92Ñ\8b можеÑ\82е иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ñ\80едакÑ\82оÑ\80 длÑ\8f добавлениÑ\8f\nи обновлениÑ\8f каÑ\80Ñ\82Ñ\8b ваÑ\88ей меÑ\81Ñ\82ноÑ\81Ñ\82и, помогаÑ\8f вÑ\81ем,\nÑ\83лÑ\83Ñ\87Ñ\88аÑ\8f оÑ\82кÑ\80Ñ\8bÑ\82Ñ\83Ñ\8e и Ñ\81вободнÑ\83Ñ\8e каÑ\80Ñ\82Ñ\83 миÑ\80а\n\nÐ\92аÑ\88и пÑ\80авки Ñ\83видиÑ\82 каждÑ\8bй полÑ\8cзоваÑ\82елÑ\8c каÑ\80Ñ\82Ñ\8b OpenStreetMap. Ð\94лÑ\8f\nÑ\80едакÑ\82иÑ\80ованиÑ\8f вам поÑ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f [войÑ\82и в OpenStreetMap](https://www.openstreetmap.org/login).\n\n[Редактор iD](http://ideditor.com/) — открытый совместный проект\nс [исходным кодом на GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Редактирование и сохранение\n\nЭтот редактор создан, в основном, для онлайн-редактирования, и сейчас вы работаете с ним через веб-сайт.\n\n### Выбор объектов\n\nЧтобы выбрать объект карты, например, дорогу или точку интереса, щёлкните по нему на карте. Выбранный объект будет помечен выделением, откроется панель его свойств, а рядом с ним появится меню с действиями, которые вы можете над ним совершить.\n\nУдерживая клавишу «Shift», можно выделить несколько объектов сразу. Это можно сделать, щёлкая по ним, или же растягивая рамку выделения с нажатой клавишей мыши. Все точки внутри неё будут выделены.\n\n### Сохранение правок\n\nКогда вы редактируете карту, например, изменяете дороги, здания и места, эти изменения хранятся на вашем компьютере, пока вы не сохраните их на сервер. Не бойтесь ошибиться — изменения можно откатить кнопкой «Отмена», или снова повторить их кнопкой «Повтор».\n\nНажмите «Сохранить» для сохранения группы изменений — например, вы закончили редактировать один район города и хотите продолжить с другим. У вас будет возможность просмотреть ваши изменения, а редактор покажет предложения и предупреждения, если во внесенных данных что-то не так.\n\nЕсли все верно, введите краткое описание ваших изменений и еще раз нажмите «Сохранить» для отправки данных на [OpenStreetMap.org](http://www.openstreetmap.org/), где они станут видны другим участникам для просмотра и дальнейшего развития карты.\n\nЕсли у вас не получается закончить с правками за один раз, окно редактора можно закрыть, тогда при следующем запуске редактора (на том же компьютере и в том же браузере) программа предложит восстановить вашу работу.\n",
"roads": "# Дороги\n\nВ этом редакторе вы можете создавать, изменять и удалять дороги. Дороги бывают самых разных типов: тропы, шоссе, грунтовки, велодорожки и другие — любой участок местности, по которому есть какое-либо движение.\n\n### Выбор\n\nКликните на дороге, чтобы выбрать её. Дорога подсветится выделением, справа появится редактор свойств, а рядом с ней появятся иконки действий.\n\n### Изменение\n\nИногда вы увидите дороги, не совпадающие со снимком подложки или GPS-треком. Такие дороги можно отредактировать.\n\nКликните на дороге, которую надо изменить. Линия дороги подсветится, и на ней появятся контрольные точки, которые можно перетащить на более правильные места. Если вы захотите сделать дорогу более детализированной, дважды щелкните на линии для добавления в этом месте новой контрольной точки.\n\nЕсли в реальности дороги соединяются на перекрестке, а на карте не соединены — перетяните одну из контрольных точек дороги на линию другой. Правильное соединение дорог очень важно для карты и навигаторов, прокладывающих по ней маршрут.\n\nЧтобы передвинуть линию дороги целиком — выберите инструмент «Перемещение» или нажмите горячую клавишу `M`. Повторный щелчок мышью зафиксирует дорогу на новом месте.\n\n### Удаление\n\nЕсли дорога нарисована совсем неправильно — её не видно на спутниковом снимке, а в идеальном случае — вы были на месте и сами убедились в её отсутствии — вы можете удалить дорогу с карты. Будьте очень осторожны, удаляя что-либо, — как и другие ваши правки, это затрагивает всех пользователей карты. Спутниковые снимки часто бывают устаревшими, так что дорога может быть просто недавно построенной.\n\nЧтобы удалить дорогу, выберите её щелчком мыши, затем щелкните по иконке мусорного ведра или нажмите клавишу «Delete».\n\n### Создание\n\nНашли место, где в реальности дорога, а на карте её нет? Щелкните на кнопку «Линия» слева вверху окна редактора или нажмите клавишу `2` чтобы начать рисовать линию.\n\nЩелкните на карте в месте, где должна начинаться дорога. Если она ответвляется от уже нарисованной можно начать рисование щелчком мыши в месте их пересечения.\n\nЗатем щёлкайте на карте вдоль траектории дороги, согласно спутниковому снимку или GPS-треку. Если новая дорога пересекается с другой, обязательно щёлкните на уже существующей, чтобы создать точку перекрестка. Чтобы закончить рисование, сделайте двойной щелчок мышью или нажмите «Enter» на клавиатуре.\n",
"gps": "# GPS\n\nДанные GPS — наиболее достоверный источник данных для OpenStreetMap.\nЭтот редактор поддерживает загрузку локальных файлов треков в формате\n`.gpx` с вашего компьютера. Вы можете записывать такие треки с помощью\nприложений для смартфонов и GPS-устройств.\n\nБолее подробно о сборе данных GPS можно прочесть на странице\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nЧтобы воспользоваться GPX-треками при рисовании карты, перетяните файл\nтрека прямо в окно редактора. Если трек успешно загрузится, то он \nотобразится на карте в виде светло-фиолетовой линии. В меню «Данные карты»\nможно выключить, включить или масштабировать слой с треками.\n\nТрек при этом не будет загружен в базу OpenStreetMap, лучший способ его\nиспользования — нарисовать новые объекты карты, основываясь на данных\nтрека; вы также можете [загрузить его на OpenStreetMap](http://www.openstreetmap.org/trace/create), чтобы другие смогли им воспользоваться.\n",
"fields": {
"access": {
"label": "Легальный доступ",
- "placeholder": "не указанно",
- "types": {
- "access": "Для всех",
- "foot": "Пешеходам",
- "motor_vehicle": "Автомототранспорт",
- "bicycle": "Велосипедистам",
- "horse": "Наездникам"
- },
"options": {
- "yes": {
- "title": "Разрешено",
- "description": "Доступ разрешён законом; право пройти"
+ "designated": {
+ "description": "Доступ разрешен в соответствии со знаками или специфичными местными законами",
+ "title": "Предназначенный"
+ },
+ "destination": {
+ "description": "Доступ разрешён только до места назначения",
+ "title": "До места назначения"
},
"no": {
- "title": "Запрещено",
- "description": "Посторонним доступ запрещён"
+ "description": "Посторонним доступ запрещён",
+ "title": "Запрещено"
},
"permissive": {
- "title": "Допускается",
- "description": "Доступ возможен до тех пор, пока владелец не отменит разрешение в любой момент"
+ "description": "Доступ возможен до тех пор, пока владелец не отменит разрешение в любой момент",
+ "title": "Допускается"
},
"private": {
- "title": "С разрешения владельца",
- "description": "Доступ разрешён только с разрешения владельца в индивидуальном порядке"
+ "description": "Доступ разрешён только с разрешения владельца в индивидуальном порядке",
+ "title": "С разрешения владельца"
},
- "designated": {
- "title": "Предназначенный",
- "description": "Доступ разрешен в соответствии со знаками или специфичными местными законами"
- },
- "destination": {
- "title": "До места назначения",
- "description": "Доступ разрешён только до места назначения"
+ "yes": {
+ "description": "Доступ разрешён законом; право пройти",
+ "title": "Разрешено"
}
+ },
+ "placeholder": "не указанно",
+ "types": {
+ "access": "Для всех",
+ "bicycle": "Велосипедистам",
+ "foot": "Пешеходам",
+ "horse": "Наездникам",
+ "motor_vehicle": "Автомототранспорт"
}
},
"access_simple": {
"address": {
"label": "Адресная информация",
"placeholders": {
+ "city": "Город",
+ "country": "Страна",
+ "district": "Район",
+ "hamlet": "Малое село",
"housename": "Housename",
"housenumber": "Номер",
- "street": "Улица",
- "city": "Город",
- "postcode": "Почтовый индекс",
"place": "Населённый пункт",
- "hamlet": "Малое село",
- "suburb": "Пригород",
- "subdistrict": "Subdistrict",
- "district": "Район",
+ "postcode": "Почтовый индекс",
"province": "Провинция",
"state": "Штат",
- "country": "Страна"
+ "street": "Улица",
+ "subdistrict": "Subdistrict",
+ "suburb": "Пригород"
}
},
"admin_level": {
"aerialway/access": {
"label": "Доступ",
"options": {
+ "both": "Оба",
"entry": "Вход",
- "exit": "Выход",
- "both": "Оба"
+ "exit": "Выход"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Доступ (летом)",
"options": {
+ "both": "Оба",
"entry": "Вход",
- "exit": "Выход",
- "both": "Оба"
+ "exit": "Выход"
}
},
"aeroway": {
"boundary": {
"label": "Тип границы"
},
+ "brand": {
+ "label": "Брэнд"
+ },
"building": {
"label": "Здание"
},
"building_area": {
- "label": "Ð\97дание"
+ "label": "Тип зданиÑ\8f"
},
"capacity": {
"label": "Вместимость",
"cardinal_direction": {
"label": "Направление",
"options": {
- "N": "Север",
"E": "Восток",
- "S": "Юг",
- "W": "Запад",
- "NE": "Северо-восток",
- "SE": "Юго-восток",
- "SW": "Юго-запад",
- "NW": "Северо-запад",
- "NNE": "Северо-северо-восток",
"ENE": "Северо-восток-восток",
"ESE": "Юго-восток-восток",
+ "N": "Север",
+ "NE": "Северо-восток",
+ "NNE": "Северо-северо-восток",
+ "NNW": "Северо-северо-запад",
+ "NW": "Северо-запад",
+ "S": "Юг",
+ "SE": "Юго-восток",
"SSE": "Юго-юго-восток",
"SSW": "Юго-юго-запад",
- "WSW": "Юго-запад-запад",
+ "SW": "Юго-запад",
+ "W": "Запад",
"WNW": "Северо-запад-запад",
- "NNW": "Северо-северо-запад"
+ "WSW": "Юго-запад-запад"
}
},
"clock_direction": {
"label": "Направление",
"options": {
- "clockwise": "По часовой стрелке",
- "anticlockwise": "Против часовой стрелки"
+ "anticlockwise": "Против часовой стрелки",
+ "clockwise": "По часовой стрелке"
}
},
"collection_times": {
"construction": {
"label": "Тип строящейся дороги"
},
+ "content": {
+ "label": "Содержимое"
+ },
"country": {
"label": "Страна"
},
"cuisine": {
"label": "Кухня"
},
+ "delivery": {
+ "label": "Доставка"
+ },
"denomination": {
"label": "Конфессия"
},
"description": {
"label": "Описание"
},
+ "drive_through": {
+ "label": "Доступен не выходя из машины"
+ },
"electrified": {
"label": "Электрификация",
- "placeholder": "Контактная линия, электрифицированная линия...",
"options": {
"contact_line": "Контактная линия",
+ "no": "Нет",
"rail": "Электрифицированная линия",
- "yes": "Да (без уточнения)",
- "no": "Нет"
- }
+ "yes": "Да (без уточнения)"
+ },
+ "placeholder": "Контактная линия, электрифицированная линия..."
},
"elevation": {
"label": "Высота над уровнем моря"
"label": "Тип пожарного гидранта",
"options": {
"pillar": "Наземный",
+ "pond": "Около пруда",
"underground": "Подземный",
- "wall": "Настенный",
- "pond": "Около пруда"
+ "wall": "Настенный"
}
},
"fixme": {
"gauge": {
"label": "Колея"
},
+ "gender": {
+ "label": "Пол",
+ "options": {
+ "female": "Женщина",
+ "male": "Мужчина",
+ "unisex": "Унисекс"
+ },
+ "placeholder": "Неизвестно"
+ },
"generator/method": {
"label": "Метод"
},
"label": "Тип"
},
"hoops": {
- "label": "Ð\92оÑ\80оÑ\82а",
+ "label": "Ð\9aол-во колеÑ\86",
"placeholder": "1, 2, 4..."
},
"iata": {
"label": "ICAO"
},
"incline": {
- "label": "Склон"
+ "label": "Перепад высоты вдоль пути"
+ },
+ "incline_steps": {
+ "label": "Уклон",
+ "options": {
+ "down": "Вниз",
+ "up": "Вверх"
+ }
},
"information": {
"label": "Тип"
"internet_access": {
"label": "Доступ в интернет",
"options": {
- "yes": "Да",
"no": "Нет",
- "wlan": "Wifi",
+ "terminal": "Терминал",
"wired": "Проводной",
- "terminal": "Терминал"
+ "wlan": "Wifi",
+ "yes": "Да"
}
},
"lamp_type": {
"layer": {
"label": "Слой"
},
+ "leaf_cycle": {
+ "label": "Цикл листвы у деревьев",
+ "options": {
+ "deciduous": "Листопадные",
+ "evergreen": "Вечнозелёные",
+ "mixed": "Смешанный",
+ "semi_deciduous": "Полу-листопадные",
+ "semi_evergreen": "Полу-вечнозеленые"
+ }
+ },
+ "leaf_type": {
+ "label": "Тип листьев",
+ "options": {
+ "broadleaved": "Широколиственные",
+ "leafless": "Без листьев",
+ "mixed": "Смешанные",
+ "needleleaved": "Хвойные"
+ }
+ },
"leisure": {
"label": "Тип"
},
"label": "Длина (метры)"
},
"levels": {
- "label": "ÐÑ\82ажи",
+ "label": "Ð\9aол-во Ñ\8dÑ\82ажей",
"placeholder": "2, 4, 6..."
},
"lit": {
},
"mtb/scale": {
"label": "Сложность трассы для горного велосипеда",
- "placeholder": "0, 1, 2, 3…",
"options": {
"0": "0: ровный гравий/утоптанная земля, без препятствий, широкие повороты",
"1": "1. Несколько рассыпная поверхность, небольшие препятствия, широкие повороты",
"4": "4. Скользкая поверхность или препятствия, опасные крутые повороты",
"5": "5. Максимальная сложность, каменные поля, оползни",
"6": "6. Не пригодно для езды кроме самых лучших маунтинбайкеров"
- }
+ },
+ "placeholder": "0, 1, 2, 3…"
},
"mtb/scale/imba": {
"label": "Сложность по рейтингу IMBA",
- "placeholder": "Лёгкая, средняя, сложная...",
"options": {
"0": "Легчайшая (белый круг)",
"1": "Лёгкая (зелёный круг)",
"2": "Средняя (синий квадрат)",
"3": "Сложная (чёрный ромб)",
"4": "Экстремально сложная (двойной чёрный круг)"
- }
+ },
+ "placeholder": "Лёгкая, средняя, сложная..."
},
"mtb/scale/uphill": {
"label": "Сложность подъёма на маунтинбайке",
- "placeholder": "0, 1, 2, 3…",
"options": {
"0": "0: Средний подъём <10%, гравий/утоптанная земля, без препятствий",
"1": "1: Средний подъём <15%, гравий/утоптанная земля, несколько небольших объектов",
"3": "3: Средний подъём <25%, переменная поверхность, камни/ветки размером с кулак",
"4": "4: Средний подъём <30%, плохое состояние, большие камни/ветки",
"5": "5: Отвесный подъём, велосипед обычно приходится толкать или нести"
- }
+ },
+ "placeholder": "0, 1, 2, 3…"
},
"name": {
"label": "Название",
"oneway": {
"label": "Одностороннее движение",
"options": {
+ "no": "Нет",
"undefined": "Предполагается «нет»",
- "yes": "Да",
- "no": "Нет"
+ "yes": "Да"
}
},
"oneway_yes": {
"label": "Одностороннее движение",
"options": {
+ "no": "Нет",
"undefined": "Предполагается «да»",
- "yes": "Да",
- "no": "Нет"
+ "yes": "Да"
}
},
"opening_hours": {
"parking": {
"label": "Тип",
"options": {
- "surface": "Наземная",
- "multi-storey": "Многоярусная",
- "underground": "Подземная",
- "sheds": "Сараи рядом с домом",
"carports": "Автомобильный навес",
"garage_boxes": "Одноярусные гаражи",
- "lane": "Полоса вдоль дороги"
+ "lane": "Полоса вдоль дороги",
+ "multi-storey": "Многоярусная",
+ "sheds": "Сараи рядом с домом",
+ "surface": "Наземная",
+ "underground": "Подземная"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Сложность",
- "placeholder": "Простая, средней сложности, высокой сложности...",
"options": {
- "novice": "Для начинающих (учебная)",
- "easy": "Простейшая (зелёный круг)",
- "intermediate": "Средняя (синий квадрат)",
"advanced": "Сложная (чёрный ромб)",
+ "easy": "Простейшая (зелёный круг)",
"expert": "Для экспертов (двойной чёрный ромб)",
+ "extreme": "Экстремальный (нужно снаряжение для скалолазания)",
"freeride": "Фрирайд",
- "extreme": "Экстремальный (нужно снаряжение для скалолазания)"
- }
+ "intermediate": "Средняя (синий квадрат)",
+ "novice": "Для начинающих (учебная)"
+ },
+ "placeholder": "Простая, средней сложности, высокой сложности..."
},
"piste/grooming": {
"label": "Снегоукладка",
"options": {
- "classic": "Классическая",
- "mogul": "Могул",
"backcountry": "Самопрокладные",
+ "classic": "Классическая",
"classic+skating": "Классика и конёк",
+ "mogul": "Могул",
"scooter": "Малый снегоход",
"skating": "Конёк"
}
"label": "Тип",
"options": {
"downhill": "Горнолыжная трасса",
+ "hike": "Пеший туризм",
+ "ice_skate": "Для конькового хода",
"nordic": "Для классического хода",
+ "playground": "Детская трасса",
"skitour": "Лыжный курорт",
"sled": "Для саней",
- "hike": "Пеший туризм",
"sleigh": "Для грузовых саней",
- "ice_skate": "Для конькового хода",
- "snow_park": "Снежный парк",
- "playground": "Детская трасса"
+ "snow_park": "Снежный парк"
}
},
"place": {
},
"sac_scale": {
"label": "Сложность SAC",
- "placeholder": "Горный пеший туризм, Альпинизм…",
"options": {
- "hiking": "T1: Пеший туризм",
- "mountain_hiking": "T2: Горный пеший туризм",
- "demanding_mountain_hiking": "T3: Пеший туризм с подъемом в горы",
"alpine_hiking": "T4: Альпийский пеший туризм",
"demanding_alpine_hiking": "T5: Альпийский туризм с подъемом в горы",
- "difficult_alpine_hiking": "T6: Сложный альпинизм"
- }
+ "demanding_mountain_hiking": "T3: Пеший туризм с подъемом в горы",
+ "difficult_alpine_hiking": "T6: Сложный альпинизм",
+ "hiking": "T1: Пеший туризм",
+ "mountain_hiking": "T2: Горный пеший туризм"
+ },
+ "placeholder": "Горный пеший туризм, Альпинизм…"
},
"seasonal": {
"label": "Сезонное"
"service": {
"label": "Тип проезда"
},
+ "service/bicycle/chain_tool": {
+ "options": {
+ "no": "Нет",
+ "undefined": "Предполагается «нет»",
+ "yes": "Да"
+ }
+ },
+ "service/bicycle/pump": {
+ "label": "Насос",
+ "options": {
+ "no": "Нет",
+ "undefined": "Предполагается «нет»",
+ "yes": "Да"
+ }
+ },
"shelter": {
"label": "Укрытие от непогоды"
},
},
"smoking": {
"label": "Курение",
- "placeholder": "Запрещено, в отдельной зоне, разрешено…",
"options": {
- "no": "Курить запрещено везде",
- "separated": "В зоне для курящих, не отделённой физически",
+ "dedicated": "Предназначено для курящих (например, сигарный клуб)",
"isolated": "В зоне для курящих, отделённой физически",
+ "no": "Курить запрещено везде",
"outside": "Разрешено снаружи",
- "yes": "Разрешено везде",
- "dedicated": "Предназначено для курящих (например, сигарный клуб)"
- }
+ "separated": "В зоне для курящих, не отделённой физически",
+ "yes": "Разрешено везде"
+ },
+ "placeholder": "Запрещено, в отдельной зоне, разрешено…"
},
"smoothness": {
"label": "Проходимость",
- "placeholder": "Ролики, колёса, внедорожники...",
"options": {
+ "bad": "Крепкие колёса: гибридные велосипеды, машины, рикши",
"excellent": "Ролики: роликовые коньки, скейтборды",
"good": "Тонкие колёса: гоночные велосипеды",
+ "horrible": "Внедорожники: полноценные внедорожники",
+ "impassable": "Непроходимо ни для какой колесной техники",
"intermediate": "Колёса: городские велосипеды, коляски, скутеры",
- "bad": "Крепкие колёса: гибридные велосипеды, машины, рикши",
"very_bad": "Большой клиренс: автомобили и малые внедорожники",
- "horrible": "Внедорожники: полноценные внедорожники",
"very_horrible": "Специализированные внедорожники: трактора, мотовездеходы, танки, триалбайки"
- }
+ },
+ "placeholder": "Ролики, колёса, внедорожники..."
},
"social_facility_for": {
"label": "Кого обслуживает",
},
"structure": {
"label": "Сооружение",
- "placeholder": "не указанно",
"options": {
"bridge": "Мост",
- "tunnel": "Тоннель",
- "embankment": "Насыпь",
"cutting": "Выемка",
- "ford": "Брод"
- }
+ "embankment": "Насыпь",
+ "ford": "Брод",
+ "tunnel": "Тоннель"
+ },
+ "placeholder": "не указанно"
},
"studio_type": {
"label": "Тип студии"
"tactile_paving": {
"label": "Тактильное покрытие"
},
+ "takeaway": {
+ "label": "На вынос",
+ "options": {
+ "no": "Нет",
+ "only": "Только на вынос",
+ "yes": "Да"
+ },
+ "placeholder": "Да, Нет, Только на вынос"
+ },
"toilets/disposal": {
"label": "Тип смыва",
"options": {
- "flush": "Смыв",
- "pitlatrine": "Яма / отхожее место",
+ "bucket": "Ведро",
"chemical": "Химический",
- "bucket": "Ведро"
+ "flush": "Смыв",
+ "pitlatrine": "Яма / отхожее место"
}
},
"tourism": {
"label": "Тип башни"
},
"tracktype": {
- "label": "Покрытие просёлочных дорог",
- "placeholder": "Твердая, скорее твёрдая, мягкая",
+ "label": "Тип просёлочных дорог",
"options": {
"grade1": "Твердая: с покрытием, мощение плитами, камнем, кирпичом, укатанный гравий, кирпичный лом",
"grade2": "Скорее твердая: без покрытия, гравий, хорошо укатанный грунт, песок ",
"grade3": "Ровная смесь грунта, песка, гравия ",
"grade4": "Скорее мягкая: укатанный грунт с примесями твёрдых материалов ",
"grade5": "Мягкая: неукатанный грунт, песок, трава "
- }
+ },
+ "placeholder": "Твердая, скорее твёрдая, мягкая"
},
"trail_visibility": {
"label": "Видимость пути",
- "placeholder": "Отличная, хорошая, плохая...",
"options": {
+ "bad": "Плохой: нет указателей, путь иногда невидим/неразличим",
"excellent": "Превосходная: различимые пути либо указатели везде",
"good": "Хорошая: указатели видимы, иногда требуют поиска",
- "intermediate": "Средняя: несколько указателей, путь в основном видимый",
- "bad": "Плохой: нет указателей, путь иногда невидим/неразличим",
"horrible": "Ужасная: часто путь неотличим, требует навыков ориентации",
+ "intermediate": "Средняя: несколько указателей, путь в основном видимый",
"no": "Никакой: неразличимый путь, требуются превосходные навыки ориентации"
- }
+ },
+ "placeholder": "Отличная, хорошая, плохая..."
},
"trees": {
"label": "Деревья"
"terms": "Банк"
},
"amenity/bar": {
- "name": "Бар",
- "terms": "Бар"
+ "name": "Бар / рюмочная",
+ "terms": "Бар, рюмочная"
},
"amenity/bbq": {
"name": "Барбекю/Гриль",
"name": "Небольшие захоронения при местах служения (церквях и т.п.)",
"terms": "кладбище, кладбище животных"
},
+ "amenity/grit_bin": {
+ "name": "Ящик с песком и солью (зимой)",
+ "terms": "песок"
+ },
"amenity/hospital": {
"name": "Территория больницы",
"terms": "больница, госпиталь, стационар"
"terms": "Почтовый ящик"
},
"amenity/post_office": {
- "name": "Почтовый офис",
+ "name": "Почтовое отделение",
"terms": "почта, почтовое отделение, почтамт"
},
"amenity/pub": {
- "name": "Паб",
+ "name": "Паб / ресторан",
"terms": "Паб"
},
+ "amenity/public_bookcase": {
+ "name": "Общественный книжный шкаф",
+ "terms": "книги"
+ },
"amenity/ranger_station": {
"name": "Лесничество",
"terms": "лес, лесник, лесничество"
"terms": "препятствие, преграда, барьер, заграждение"
},
"barrier/block": {
- "name": "Ð\91еÑ\82оннÑ\8bй блок",
+ "name": "Ð\91лок оÑ\82 авÑ\82омобилей (беÑ\82оннÑ\8bй, аÑ\81Ñ\84алÑ\8cÑ\82овÑ\8bй)",
"terms": "Блок, преграда"
},
"barrier/bollard": {
"terms": "канава, ров"
},
"barrier/entrance": {
- "name": "Ð\9fроход",
- "terms": "вход, дверь, главный вход"
+ "name": "Ð\91езпÑ\80епÑ\8fÑ\82Ñ\81Ñ\82веннÑ\8bй проход",
+ "terms": "вход, дыра, проход"
},
"barrier/fence": {
"name": "Прозрачная ограда",
"terms": "Забор, Ограда, Изгородь"
},
"barrier/gate": {
- "name": "Ворота",
- "terms": "ворота"
+ "name": "Ворота / калитка",
+ "terms": "ворота, калитка, дверь"
},
"barrier/hedge": {
"name": "Живая изгородь",
"terms": "фотограф, фото оператор"
},
"craft/photographic_laboratory": {
- "name": "ФоÑ\82олабоÑ\80аÑ\82оÑ\80иÑ\8f",
- "terms": "фото, заказ, печать, свадьба, событие, документы"
+ "name": "Ð\9fеÑ\87аÑ\82Ñ\8c Ñ\84оÑ\82о / пÑ\80оÑ\8fвка",
+ "terms": "фото, заказ, печать, свадьба, событие, документы, проявка"
},
"craft/plasterer": {
"name": "Штуратур",
"terms": "памятник, мемориал"
},
"historic/monument": {
- "name": "Ð\9fамÑ\8fÑ\82ник",
+ "name": "Ð\9cонÑ\83менÑ\82-памÑ\8fÑ\82ник, огÑ\80омнÑ\8bй",
"terms": "монумент"
},
"historic/ruins": {
- "name": "Развалины",
+ "name": "Руины с историческим значением",
"terms": "руины, развалины"
},
"historic/wayside_cross": {
"name": "Церковный двор",
"terms": "кладбище, церковный двор, церковь"
},
+ "landuse/commercial": {
+ "name": "Коммерческая застройка",
+ "terms": "магазины"
+ },
"landuse/construction": {
"name": "Стройплощадка",
"terms": "стройка, строительство"
},
+ "landuse/farm": {
+ "name": "Сельскохозяйственные угодья",
+ "terms": "поле, поля"
+ },
+ "landuse/farmland": {
+ "name": "Сельскохозяйственные угодья",
+ "terms": "поле, поля"
+ },
"landuse/farmyard": {
"name": "Территория фермы (без полей)",
- "terms": "ферма"
+ "terms": "ферма, сельхоз, совхоз"
},
"landuse/forest": {
"name": "Лес / деревья",
"terms": "ГСК"
},
"landuse/grass": {
- "name": "ТÑ\80ава",
+ "name": "Ð\93азон",
"terms": "Газон, Искусственный газон, Земля используемая под газон"
},
+ "landuse/industrial": {
+ "name": "Промышленная зона",
+ "terms": "промзона, завод"
+ },
"landuse/landfill": {
- "name": "Свалка",
+ "name": "Стихийная свалка / промышленные отходы",
"terms": "свалка, отходы"
},
"landuse/meadow": {
"name": "Луг (пастбище, сенокосный луг)",
"terms": "луг, пашня, пастбище, сенокосный луг"
},
+ "landuse/military": {
+ "name": "Военная зона",
+ "terms": "ЗАТО, запретная зона, часть"
+ },
"landuse/orchard": {
"name": "Территория плодового сада",
"terms": "фруктовый сад, сад"
"name": "Территория карьера",
"terms": "карьер, каменоломня, открытая разработка"
},
+ "landuse/residential": {
+ "name": "Жилая зона",
+ "terms": "квартал"
+ },
+ "landuse/retail": {
+ "name": "Торговая зона",
+ "terms": "розничная торговля, ряды, базар"
+ },
"landuse/vineyard": {
"name": "Виноградник",
"terms": "виноградник"
"name": "Яхтклуб",
"terms": "Марина, Стоянка для яхт"
},
+ "leisure/nature_reserve": {
+ "name": "Заповедник",
+ "terms": "заказник"
+ },
"leisure/park": {
"name": "Парк отдыха",
"terms": "парк"
"name": "Маяк",
"terms": "маяк"
},
+ "man_made/mast": {
+ "name": "Коммуникационная мачта (до 20 метров)",
+ "terms": "мачта, радио, телефон, сотовая, вышка"
+ },
"man_made/observation": {
"name": "Смотровая башня",
"terms": "Смотровая башня, Обзорная башня"
},
+ "man_made/petroleum_well": {
+ "name": "Нефтяная скважина",
+ "terms": "скважина, нефть"
+ },
"man_made/pier": {
"name": "Пирс",
"terms": "пирс, причал"
"name": "Трубопровод",
"terms": "трубопровод"
},
+ "man_made/silo": {
+ "name": "Силос (склад сыпучего)",
+ "terms": "зерно, пшеница, мука"
+ },
+ "man_made/storage_tank": {
+ "name": "Cооружение для хранения жидкостей или газов",
+ "terms": "контейнер, танк, танкер"
+ },
"man_made/survey_point": {
"name": "Тригонометрический пункт",
"terms": "Тригонометрический пункт"
"name": "Пляж",
"terms": "пляж"
},
+ "natural/cave_entrance": {
+ "name": "Вход в пещеру",
+ "terms": "пещера"
+ },
"natural/cliff": {
"name": "Скальный обрыв",
"terms": "Скала, Утёс, Шхеры"
"terms": "ледник"
},
"natural/grassland": {
- "name": "Ð\94икий лÑ\83г",
+ "name": "Район Ñ\81 Ñ\82Ñ\80авой",
"terms": "Травяной луг, Луговина, Лужок, Выкос, Перелесье"
},
"natural/heath": {
"terms": "Магазин, Торговая лавка, Точка продаж"
},
"shop/alcohol": {
- "name": "Ð\92инный магазин",
- "terms": "Ð\92иннÑ\8bй магазин, Ð\92иннаÑ\8f лавка, Ð\92ино-водоÑ\87нÑ\8bй магазин"
+ "name": "Ð\90лкоголÑ\8cный магазин",
+ "terms": "Ð\92ино-водоÑ\87нÑ\8bй магазин, гоÑ\80илка, пиво, пивной"
},
"shop/anime": {
"name": "Магазин аниме",
"terms": "новостной киоск, киоск новостей, киоск с новостями, журналы, табачные изделия, газеты, сладости, подарки, открытки"
},
"shop/kitchen": {
- "name": "Ð\9cагазин пÑ\80одаÑ\8eÑ\89ий мебелÑ\8c длÑ\8f кÑ\83Ñ\85ни на заказ",
- "terms": "кухонная фурнитура, установка кухонь, кухни на заказ, планировка кухни"
+ "name": "Ð\9aÑ\83Ñ\85оннаÑ\8f Ñ\81Ñ\82Ñ\83диÑ\8f",
+ "terms": "кухонная фурнитура, установка кухонь, кухни на заказ, планировка кухни, кухни"
},
"shop/laundry": {
"name": "Прачечная",
"terms": "оптика, очки, линзы, окулист"
},
"shop/organic": {
+ "name": "Магазин преимущественно натуральных продукутов",
"terms": "магазин, еда, органическая, полезная, без удобрений"
},
"shop/outdoor": {
"terms": "Мультиполигон, Многоугольник"
},
"type/restriction": {
- "name": "Ð\97апÑ\80еÑ\82 повоÑ\80оÑ\82а",
+ "name": "Ð\9eгÑ\80аниÑ\87ение манÑ\91вÑ\80а",
"terms": "Ограничение, Ограничение направлений движения, Ограничение манёвра, Запрет на поворот, Запрет поворота"
},
"type/restriction/no_left_turn": {
"tail": "මාර්ගයක් සලකුණු කිරීමට සිතියම මත ඔබන්න."
},
"add_point": {
- "title": "ලක්ෂ්යයක්"
+ "title": "ලක්ෂ්යයක්",
+ "description": "ආපනශාලා,ස්මාරක,තැපැල් පෙට්ටි හෝ වෙනත් ස්ථාන එකතුකරන්න",
+ "tail": "නව ස්ථානයක් සටහන් කිරීම සදහා සිතියම මත ක්ලික් කරන්න "
+ },
+ "browse": {
+ "title": "සොයන්න",
+ "description": "සිතියම එහෙ මෙහෙ කිරීම සහ විශාලනය කිරීම"
+ },
+ "draw_area": {
+ "tail": "ඔබ අදිනලද ප්රදේශයේ ස්ථාන ලකුනුකිරීමට ක්ලික් කරන්න. අවසන් කිරීම සදහා පළමුව සටහන් කල ස්ථානය මත ක්ලික් කරන්න."
}
},
"operations": {
+ "add": {
+ "annotation": {
+ "point": "ස්ථානයක් සටහන් කරන ලදී",
+ "vertex": "මාර්ගයකට බිදුම් ස්ථානයක් එකතු කරන ලදී",
+ "relation": "සම්බන්දතාවයක් එකතු කරන්න"
+ }
+ },
"start": {
"annotation": {
"line": "රේඛාවක් අරඹන ලදී.",
"area": "ප්රදේශයක් අරඹන ලදී."
}
},
+ "continue": {
+ "key": "A",
+ "title": "දිගටම කරගෙන යන්න",
+ "description": "මෙමෙ රේකාව තව දිගට අදින්න",
+ "not_eligible": "කිසිදු රේකාවක් මෙතෙන් සිට ඇදිය නොහැක",
+ "multiple": "රේකා කිහිපයක් මෙහිදී දික් කළ හැක. , රේඛාවක් තෝරාගැනීමට Shift key එක ඔබා එය මත ක්ලික් කරන්න.",
+ "annotation": {
+ "line": "රේකාව දික් කරන ලදී",
+ "area": "ප්රදේශයක් වෙනස් කිරීම අරබන ලදී"
+ }
+ },
+ "cancel_draw": {
+ "annotation": "ඇදීම නැවත දැමුනි"
+ },
+ "change_role": {
+ "annotation": "සම්බන්දයට අයත් සාමාජිකයාගේ භූමිකාව වෙනස්විය"
+ },
+ "change_tags": {
+ "annotation": "වෙනනස් කරන ලද සටනහන්"
+ },
+ "circularize": {
+ "title": "වෘතයක් බවට පත්කිරීම",
+ "description": {
+ "line": "මෙම් රේකාව වෘතයක් කරන්න",
+ "area": "මෙම ප්රදේශය වෘතයක් කරන්න"
+ },
+ "key": "O",
+ "annotation": {
+ "line": "රේකාව වෘතයක් කරන්නලදී",
+ "area": "ප්රදේශය වෘතයක් කරන්නලදී"
+ },
+ "not_closed": "මෙය සන්වෘත එසේත් නොමැතිනම් මුදුවක් නොවන නිසා වෘතයක් කලා නොහැක",
+ "too_large": "ප්රමාණවත් පරිදි නොපෙනෙන නිසා වෘත කරණය කල නොහැක",
+ "connected_to_hidden": "සැගවුන ලක්ෂණයකට සම්බන්ද නිසා වෘත කරණය කල නොහැක"
+ },
+ "orthogonalize": {
+ "title": "හතරැස් කොටුව",
+ "description": {
+ "line": "මෙම රේකාවෙහි කෙළවරවල් හතරැස් කරන්න",
+ "area": "මෙම ප්රදේශයේ මුළු හරි හතරැස් කරන්න"
+ },
+ "key": "S",
+ "annotation": {
+ "line": "මෙම ප්රදේශයේ මුළු හරි හතරැස් කරන්න",
+ "area": "මෙම ප්රදේශයේ මුළු හරි හතරැස් කරන්න ලදී"
+ },
+ "not_squarish": "මෙය හතරැස් පෙනුමක් නොගන්න බැවින් හතරැස් කොටුවක් බවට පත් කළා නොහැක",
+ "too_large": "ප්රරමාණවත් පරිදි නොපෙනෙන නිසා හතරැස් කල නොහැක",
+ "connected_to_hidden": "සැගවුන ලක්ෂණයකට සම්බන්ද නිසා හතරැස් කල නොහැක"
+ },
+ "straighten": {
+ "title": "සෘජුකරනය එහෙස් නොමෙතිනම් කෙලින් කිරීම",
+ "description": "මෙම රේකාව කෙලින් කරන්න",
+ "key": "S",
+ "annotation": "රේකාව කෙලින් කරන්නලදී",
+ "too_bendy": "මෙය විශාල වශයෙන් නැවී ඇතිනිසා කෙලින් කල නොහැක",
+ "connected_to_hidden": "මෙය සෙගවුන ලක්ෂණයකට සම්බන්ද බැවින් කෙලින් කල නොහැක"
+ },
"delete": {
"title": "මකන්න",
+ "description": "මෙම වස්තුව ස්ථිරව මකාදමන්න",
"annotation": {
"point": "ලක්ෂ්යයක් ඉවත් කරන්න.",
+ "vertex": "මාර්ගයෙන් බිදුම් ලක්ෂය ඉවත් කරන්න",
"line": "රේඛාව මකන්න.",
- "area": "ප්රදේශය මකන්න."
+ "area": "ප්රදේශය මකන්න.",
+ "relation": "සම්බන්දතාවයක් මක දමන ලදී",
+ "multiple": "වස්තූන් {n} මකාදමන ලදී"
+ },
+ "incomplete_relation": "සම්පුර්ණයෙන් බාගත වී නොමැති නිසා මකාදැමිය නොහැක.",
+ "part_of_relation": "මෙම ලක්ෂණය විශාල සම්බන්දතාවයක කොටසක් බැවින් මකාදැමිය නොහැක. ඔබ ප්රථමයෙන් මෙය සම්බන්දතාවයෙන් ඉවත් කල යුතුය. ",
+ "connected_to_hidden": "මෙය සෙගවුන ලක්ෂණයකට සම්බන්ද බැවින් මකාදැමිය නොහැක."
+ },
+ "add_member": {
+ "annotation": "සම්බන්දතාවයට සමජිකයෙක එකතුකරන්න"
+ },
+ "delete_member": {
+ "annotation": "සාමාජිකයෙක් සම්බන්දතාවයෙන් ඉවත් කරන ලදී."
+ },
+ "connect": {
+ "annotation": {
+ "point": "මාර්ගය ලක්ෂයකට සම්බන්දකරන් ලදී.",
+ "vertex": "මාර්ගය වෙනත් මාර්ගයකට සම්බන්දකරන් ලදී",
+ "line": "මාර්ගය රෙකාවකට සම්බන්දකරන් ලදී",
+ "area": "මාර්ගය ප්රදේශයකට සම්බන්දකරන් ලදී"
}
},
"disconnect": {
- "title": "විසන්ධි කරන්න"
+ "title": "විසන්ධි කරන්න",
+ "description": "මෙම රේකා/ප්රදේශයන් එකිනෙකින් වෙන් කරන්න",
+ "key": "D",
+ "annotation": "රේකා/ප්රදේශයන් එකිනෙකින් වෙන් කරන්න ලදී",
+ "not_connected": "එකිනෙකින් වෙන් කිරීම සදහා අවශ්ය තරම් රේකා/ප්රදේශයන් නොමැත",
+ "connected_to_hidden": "මෙය සෙගවුන ලක්ෂණයකට සම්බන්ද බැවින් වෙන්කල නොහැක."
+ },
+ "merge": {
+ "title": "එකතුකරන්න",
+ "description": "මෙම රේකා එකතුකරන්න",
+ "key": "C",
+ "annotation": "රේකා {n} එකතුකරන ලදී",
+ "not_eligible": "මෙම ලක්ෂණ එක්කල නොහැක.",
+ "not_adjacent": "මෙම රේකා සම්බන්ද නැති බැවින් එක්කල නොහැක",
+ "restriction": "අවම තරමින් එක් රේකාවක් හෝ \"{relation}\" සම්බන්දතාවට අයත් බැවින් මෙම රේකා එක්කල නොහැක",
+ "incomplete_relation": "අවම තරමින් එක් රේකාවක් හෝ සම්පුර්ණයෙන් බාගත වී නොමැති නිසා මෙම රේකා එක්කල නොහැක"
+ },
+ "move": {
+ "title": "චලනය කරන්න",
+ "description": "මෙය වෙනත් ඉස්තානයක් වෙත ගෙනයන්න",
+ "key": "M",
+ "annotation": {
+ "point": "ලක්ෂයක් චලනය කරන ලදී",
+ "vertex": "මාර්ගයක බිදුම් ලක්ෂයක් වෙනස් කරන ලදී",
+ "line": "රෙකාවක් වෙනස් කරන ලදී",
+ "area": "ප්රදේශයක් වෙනස් කරන ලදී",
+ "multiple": "වස්තුන් කිහිපයක් වෙනස් කරන ලදී"
+ },
+ "incomplete_relation": "සම්පුර්ණයෙන් බාගත වී නොමැති නිසා මෙම ලක්ෂණය චලනය කල නොහැක",
+ "too_large": "ප්රමාණවත් පරිදි නොපෙනෙන නිසා සෙලවිය නොහැක",
+ "connected_to_hidden": "මෙය සෙගවුන ලක්ෂණයකට සම්බන්ද බැවින් චලනය කල නොහැක"
},
"rotate": {
- "title": "හරවන්න"
+ "title": "හරවන්න",
+ "description": "මෙම වස්තුව මද්ය ලක්ෂය වටා හරවන්න",
+ "key": "R",
+ "annotation": {
+ "line": "රෙකාවක් හරවන ලදී",
+ "area": "ප්රදේශයක් හරවන ලදී"
+ },
+ "too_large": "ප්රමාණවත් පරිදි නොපෙනෙන නිසා හැරවිය නොහැක",
+ "connected_to_hidden": "සැගවුන ලක්ෂණයකට සම්බන්ද නිසා හැරවිය නොහැක"
+ },
+ "reverse": {
+ "title": "ආපස්සට",
+ "description": "මෙමෙ රේකාව ගමන්කරන දිශාව විරුද්ධ අතට හරවන්න",
+ "key": "V",
+ "annotation": "රේකාවක් විරුද්ධ අතට හරවන ලදී"
+ },
+ "split": {
+ "title": "වෙන්කරන්න",
+ "description": {
+ "line": "මෙමෙ ලක්ශයේදී රේකාව කොටක් දෙකකට වෙන් කරන්න",
+ "area": "මෙම ප්රදේශයේ සීමාව කොටස් දෙකකට වෙන්කරන්න",
+ "multiple": "මෙමෙ ලක්ශයේදී රේකාව/ප්රදේශය කොටක් දෙකකට වෙන් කරන්න"
+ },
+ "key": "X",
+ "annotation": {
+ "line": "රේඛාව බෙදන්න.",
+ "area": "ප්රදේශයේ සීමාව බෙදන්න",
+ "multiple": "ප්රදේශය/රේකාව කොටස් {n} කට බෙදන්න"
+ },
+ "not_eligible": "රේකාවක් ආරම්බයේදී හෝ අවසානයේදී බෙදිය නොහැක",
+ "multiple_ways": "මෙහිදී දෙකට බෙදීමට රේකා විශාල ප්රමානයක් ඇත",
+ "connected_to_hidden": "මෙය සෙගවුන ලක්ෂණයකට සම්බන්ද බැවින් දෙකට බෙදිය නොහැක."
+ },
+ "restriction": {
+ "help": {
+ "select": "මාර්ග කොටස තේරීම සදහා එය මත ක්ලික් කරන්න",
+ "toggle": "හැරවීම් තහනම වෙනස් කිරීම සදහා ක්ලික් කරන්න",
+ "toggle_on": "\"{restriction}\" හරවීම් තහනම එකතු කිරීම සදහා ක්ලික් කරන්න",
+ "toggle_off": "\"{restriction}\" හැරවීම් තහනම ඉවත් කිරීම සදහා ක්ලික් කරන්න"
+ },
+ "annotation": {
+ "create": "හැරවීම තහනමක් එක කරන ලදී",
+ "delete": "හැරවීම් තහනම ඉවත් කිරන ලදී"
+ }
}
},
+ "undo": {
+ "tooltip": "{action} ආපසු හැරවීම",
+ "nothing": "කිසිවක් කිරීමට නැත"
+ },
+ "redo": {
+ "tooltip": "{action} නැවත කරන්න ",
+ "nothing": "නැවත කිරීමට කිසිවක් නැත"
+ },
+ "tooltip_keyhint": "කෙටි මාර්ග",
+ "translate": {
+ "translate": "පරිවර්තනය",
+ "localized_translation_label": "බහු භාශා නාමය",
+ "localized_translation_language": "භාෂාවක් තෝරාගන්න",
+ "localized_translation_name": "නම"
+ },
+ "zoom_in_edit": "සංස්කරණය කිරීම සදහා සමීප කරන්න ",
+ "logout": "ඉවත් වන්න ",
+ "loading_auth": "OpenStreetMap වෙත සම්බන්ද වෙමින්...",
+ "report_a_bug": "දෝෂයක් වාර්තා කිරීම සදහා",
+ "feature_info": {
+ "hidden_warning": "සෙගවුන ලක්ෂණ {count} ක්",
+ "hidden_details": " {details} : මෙම ලක්ෂණ මේ අවස්ථාවේදී සැගව පවතී"
+ },
+ "status": {
+ "error": "වැඩසටහන් අතුරු මුහුණත \"API\" වෙත සම්බන්ද විය නොහැක",
+ "offline": "වැඩසටහන් අතුරු මුහුණත \"API\" අක්රීයව පවතී . පසුව උත්සහ කරන්න",
+ "readonly": "වැඩසටහන් අතුරු මුහුණත \"API\" කියවීමට පමණක් හැකි අවස්ථාවේ පවතී. ඔබගේ වෙනස් කම් සුරැකීම සදහා මදක් රැදී සිටින්න. "
+ },
"commit": {
+ "title": "වෙනස්කම් සුරකින්න",
+ "description_placeholder": "ඔබේ දායකත්වය පිළිබද කෙටි සටහනක්",
+ "upload_explanation": "ඔබ ඇතුලත් කරන ලද වෙනස්කම් OpenStreetMap දත්ත බාවිතා කරන සියලු සිතියම් තුල දිස්වනු ඇත",
+ "upload_explanation_with_user": "{user} වශයෙන් ඔබ ඇතුලත් කරන ලද වෙනස්කම් OpenStreetMap දත්ත බාවිතා කරන සියලු සිතියම් තුල දිස්වනු ඇත",
"save": "සුරකින්න",
- "deleted": "මකාදමන ලදී"
+ "cancel": "අහෝසි කරන්න",
+ "changes": " වෙනස්කම් {count} ක් ",
+ "warnings": "අනතුරු ඇගවීම්",
+ "modified": "වෙනස් කරන ලදී",
+ "deleted": "මකාදමන ලදී",
+ "created": "ඇති කරන ලදී"
+ },
+ "contributors": {
+ "list": "සංස්කරණය {users} විසිනි",
+ "truncated_list": " {users} විසින් සංස්කරණය කිරීමක්ද වෙනත් අය විසින් සංස්කරණයන් {count} "
+ },
+ "geocoder": {
+ "search": "ලෝකය පුරා සොයන්න",
+ "no_results_visible": "පෙනෙන සිතියම කොටසෙන් සොයාගත නොහැක",
+ "no_results_worldwide": "සොයාගත නොහැක"
+ },
+ "geolocate": {
+ "title": "මගේ ස්ථානය පෙන්වන්න"
+ },
+ "inspector": {
+ "no_documentation_combination": "මෙම සටහන් පත සදහා විස්තරක් අඩන්ගු නොවේ",
+ "no_documentation_key": "මෙම යතුර සදහා විස්තරයක් නොමැත",
+ "show_more": "තව පෙන්වන්න",
+ "view_on_osm": "openstreetmap.org හි පෙන්වන්න",
+ "all_tags": "සියලු සටහන්පත්",
+ "all_members": "සියලු සාමාජිකයින්",
+ "all_relations": "සියලු සම්බන්දතා",
+ "new_relation": "නව සම්බන්දතා ",
+ "role": "භූමිකාව",
+ "choose": "ලක්ෂණයෙහි වර්ගය තෝරන්න",
+ "results": "{search} සෙවුම සදහා ප්රතිපල {n} ඇත",
+ "reference": "OpenStreetMap Wiki හි පෙන්නවන්න",
+ "back_tooltip": "ලක්ෂණ වෙනස් කරන්න",
+ "remove": "ඉවත් කරන්න",
+ "search": "සොයන්න",
+ "multiselect": "තෝරාගත් අයිතමය",
+ "unknown": "නොදනී",
+ "incomplete": "<බාගත වේ නොමැත>",
+ "feature_list": "ලක්ෂණ සොයන්න",
+ "edit": "ලක්ෂණ සංස්කරණය කරන්න",
+ "check": {
+ "yes": "ඔව්",
+ "no": "නැත"
+ },
+ "none": "කිසිවක් නැත",
+ "node": "බිදුම් ලක්ෂය",
+ "way": "මාර්ගය",
+ "relation": "සම්බන්දතාවය",
+ "location": "ස්ථානය",
+ "add_fields": "එකතුකරන් ලදී"
+ },
+ "background": {
+ "title": "පසුබිම",
+ "description": "පසුබිම් සැකසුම්",
+ "percent_brightness": "දීප්තිමත් බාවය {opacity} % ",
+ "none": "කිසිවක් නැත",
+ "custom": "රිසි පරදී සැකසු",
+ "custom_button": "පසුතලය රිසි පරිදි සැකසීම සදහා",
+ "fix_misalignment": "එක එල්ලෙට ගැනීමට",
+ "reset": "යළි පිහිටුවනවා"
+ },
+ "map_data": {
+ "title": "සිතියම් දත්ත",
+ "description": "සිතියම් දත්ත",
+ "data_layers": "දත්ත තට්ටුව",
+ "fill_area": "ප්රදේශයන් පුරවන්න",
+ "map_features": "සිතියම් ලක්ෂණයන්"
+ },
+ "feature": {
+ "points": {
+ "description": "ලක්ෂ",
+ "tooltip": "අවදානය දිනාගන්නා ස්ථාන"
+ },
+ "major_roads": {
+ "description": "ප්රදාන පාරවල්",
+ "tooltip": "ප්රදාන මාර්ග, වීදි ආදී ...."
+ },
+ "minor_roads": {
+ "description": "අතුරු මාර්ග",
+ "tooltip": "සැපයුම් මාර්ග, ගාල් කිරීමේ ස්ථාන, අඩි පාර ආදී"
+ },
+ "paths": {
+ "description": "මාර්ග",
+ "tooltip": "පදික මං තීරු , අඩි පාරවල් ,බයිසිකල් මාර්ග"
+ },
+ "buildings": {
+ "description": "ගොඩනැගිලි",
+ "tooltip": "හෝදනගිල්ලක් , සේවනක් , ගරාජයක් ආදී .... "
+ },
+ "landuse": {
+ "description": "ගොඩබිම බාවිතා කර ඇති ලක්ෂණ",
+ "tooltip": "වනාන්තර, ගොවිබිම් ,උද්ද්යාන , ගෘහාශ්රිත ,වාණිජ ආදී"
+ },
+ "boundaries": {
+ "description": "සීමා මායිම්",
+ "tooltip": "පරිපලන සීමා"
+ },
+ "water": {
+ "description": "ජලයේ ආකාරය",
+ "tooltip": "ගංගා,විල්,පොකුණු ආදී"
+ },
+ "rail": {
+ "description": "දුම්රිය මාර්ග ලක්ෂණයන්",
+ "tooltip": "දුම්රිය මාර්ග"
+ },
+ "power": {
+ "description": "විදුලි බල බර්ගයේ ආකාරය ",
+ "tooltip": "විදුලි සැපයුම්, බලාගාර, උප බලාගාර ආදී"
+ },
+ "past_future": {
+ "description": "අතීත/අනාගත",
+ "tooltip": "යෝජිත, ඉදිකෙරිමින් පවතින ,අතහැර දැමු , විනාශකරන ලද , ආදී"
+ },
+ "others": {
+ "description": "වෙනත්",
+ "tooltip": "හැම දෙයක්ම"
+ }
+ },
+ "area_fill": {
+ "wireframe": {
+ "description": "පිරවීමෙන් තොර(සැකිල්ල පමණි)"
+ },
+ "partial": {
+ "description": "පාර්ශිකව පිරුණු"
+ },
+ "full": {
+ "description": "සම්පුර්ණයෙන් පිරුණු",
+ "tooltip": "සම්පුර්ණයෙන් වෙසෙන පරිදි ප්රදේශය ඇඳ ඇත. "
+ }
+ },
+ "restore": {
+ "heading": "ඔබ සතුව සුරකීම නොකරන ලද වෙනස්කම් ඇත",
+ "description": "ඔබට මීට පෙර සංස්කරණය කිරීමේදී සුරැකීමට නොහැකි වූ වෙනස් කිරීම් නැවත පිහිටුවීමට අවශ්යද ? ",
+ "restore": "ප්රතිස්ථාපනය කිරීම",
+ "reset": "යළි පිහිටුවනවා"
},
"save": {
"title": "සුරකින්න",
- "no_changes": "සුරැකීම සඳහා වෙනස් කිරීම් නැත."
+ "help": "සංස්කරණයන් OpenStreetMap වෙත ඇතුලත් කරන, එමගින් ඒවා අනිත් බාවිත කරන්නන් වෙත දිස්වනු ඇත. ",
+ "no_changes": "සුරැකීම සඳහා වෙනස් කිරීම් නැත.",
+ "error": "සුරැකීමේදී වරදක් සිදුවිය",
+ "status_code": " ප්රතිචාර වශයෙන් {code} කේතය සැපයුම් යන්ත්රයෙන් ලැබුණි.",
+ "unknown_error_details": "ඔබ අන්තර්ජාලයට සම්බන්ද වී ඇති බවතහවුරු කරන්න",
+ "uploading": "වෙනස්කම් OpenStreetMap වෙත ඇතුලත් කරමින් පවතී",
+ "unsaved_changes": "ඔබ සතුව සුරකීම නොකරන ලද වෙනස්කම් ඇත",
+ "conflict": {
+ "header": "එකිනෙකට නොගැලපෙන සංස්කරණයන් නිරකරනය කරන්න ",
+ "count": "නොගැලපීම {total} අතරින් {num} ",
+ "previous": "<පෙර",
+ "next": "ඊළඟ>",
+ "restore": "ප්රතිසංස්ථානය",
+ "delete": "මකාදමන ලද කොටස් මගහරින්න",
+ "download_changes": "හෝ වෙනස්කම් බාගත කරන්න",
+ "done": "සියලු නොගැලපීම නිරාකරණය කෙරිණි"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "{user} විසින් මෙම වස්තුව මකා දමන ලදී",
+ "location": "ඔබ සහ {user}. විසින් මෙම වස්තුව එහෙ මෙහෙ කර ඇත "
+ }
+ },
+ "success": {
+ "edited_osm": "OSM සංස්කරණය කරන ලදී!",
+ "just_edited": "ඔබ මේ මොහොතේ OpenStreetMap සංස්කරණය කරන ලදී",
+ "view_on_osm": "OSM මත දක්වන්න",
+ "facebook": "Facebook හි බෙදාහරින්න",
+ "twitter": "Twitter හි බෙදා හරින්න",
+ "google": "Google+ හි බෙදා හරින්න"
+ },
+ "confirm": {
+ "okay": "හරි",
+ "cancel": "අහෝසි කරන්න"
+ },
+ "splash": {
+ "welcome": "iD OpenStreetMap සංස්කරණ වේදසටහන වෙත සාදරයෙන් පිළිගනිමු",
+ "start": "දෙන සංස්කරණය කරන්න"
+ },
+ "source_switch": {
+ "live": "සජීවී"
+ },
+ "tag_reference": {
+ "description": "විස්තරය",
+ "on_wiki": "on wiki.osm.org මත {tag} ",
+ "used_with": "{type} බවිත කර ඇත"
+ },
+ "validations": {
+ "untagged_point": "සටහනක් නොයෙදූ ලක්ෂයක්",
+ "untagged_line": "සටහනක් නොයෙදූ රේකාවක්",
+ "untagged_area": "සටහනක් නොයෙදූ ප්රදේශයක්",
+ "deprecated_tags": "{tags} : බාවිතයෙන් ඉවත් කර ඇත"
+ },
+ "zoom": {
+ "in": "විශාලනය වැඩි කරන්න",
+ "out": "විශාලනය අඩු කරන්න"
+ },
+ "help": {
+ "title": "සහය"
+ },
+ "intro": {
+ "navigation": {
+ "title": "මර්ගෝපදේශනය"
+ },
+ "points": {
+ "title": "ලක්ෂ"
+ },
+ "areas": {
+ "title": "ප්රදේශයන්"
+ },
+ "lines": {
+ "title": "රේකා"
+ },
+ "startediting": {
+ "start": "සිතියම් කරනය ආරම්බ කරන්න"
+ }
+ },
+ "presets": {
+ "categories": {
+ "category-water-area": {
+ "name": "ජලය"
+ },
+ "category-water-line": {
+ "name": "ජලය"
+ }
+ },
+ "fields": {
+ "aerialway": {
+ "label": "වර්ගය"
+ },
+ "aeroway": {
+ "label": "වර්ගය"
+ },
+ "amenity": {
+ "label": "වර්ගය"
+ },
+ "artwork_type": {
+ "label": "වර්ගය"
+ },
+ "barrier": {
+ "label": "වර්ගය"
+ },
+ "bicycle_parking": {
+ "label": "වර්ගය"
+ },
+ "boundary": {
+ "label": "වර්ගය"
+ },
+ "construction": {
+ "label": "වර්ගය"
+ },
+ "craft": {
+ "label": "වර්ගය"
+ },
+ "crossing": {
+ "label": "වර්ගය"
+ },
+ "entrance": {
+ "label": "වර්ගය"
+ },
+ "fire_hydrant/type": {
+ "label": "වර්ගය"
+ },
+ "generator/type": {
+ "label": "වර්ගය"
+ },
+ "highway": {
+ "label": "වර්ගය"
+ },
+ "historic": {
+ "label": "වර්ගය"
+ },
+ "information": {
+ "label": "වර්ගය"
+ },
+ "lamp_type": {
+ "label": "වර්ගය"
+ },
+ "landuse": {
+ "label": "වර්ගය"
+ },
+ "leaf_type": {
+ "label": "වර්ගය"
+ },
+ "leisure": {
+ "label": "වර්ගය"
+ },
+ "man_made": {
+ "label": "වර්ගය"
+ },
+ "office": {
+ "label": "වර්ගය"
+ },
+ "parking": {
+ "label": "වර්ගය"
+ },
+ "piste/type": {
+ "label": "වර්ගය"
+ },
+ "place": {
+ "label": "වර්ගය"
+ },
+ "power": {
+ "label": "වර්ගය"
+ },
+ "railway": {
+ "label": "වර්ගය"
+ },
+ "relation": {
+ "label": "වර්ගය"
+ },
+ "restriction": {
+ "label": "වර්ගය"
+ },
+ "route": {
+ "label": "වර්ගය"
+ },
+ "route_master": {
+ "label": "වර්ගය"
+ },
+ "service": {
+ "label": "වර්ගය"
+ },
+ "shelter_type": {
+ "label": "වර්ගය"
+ },
+ "shop": {
+ "label": "වර්ගය"
+ },
+ "studio_type": {
+ "label": "වර්ගය"
+ },
+ "substation": {
+ "label": "වර්ගය"
+ },
+ "tourism": {
+ "label": "වර්ගය"
+ },
+ "towertype": {
+ "label": "වර්ගය"
+ },
+ "tracktype": {
+ "label": "වර්ගය"
+ },
+ "vending": {
+ "label": "වර්ගය"
+ },
+ "water": {
+ "label": "වර්ගය"
+ },
+ "waterway": {
+ "label": "වර්ගය"
+ },
+ "wetland": {
+ "label": "වර්ගය"
+ }
+ },
+ "presets": {
+ "amenity/drinking_water": {
+ "name": "බොනවතුර"
+ },
+ "golf/water_hazard": {
+ "name": "ජල අනතුරු"
+ },
+ "man_made/water_tower": {
+ "name": "ජල කුලුන"
+ },
+ "man_made/water_well": {
+ "name": "ළිද"
+ },
+ "natural/water": {
+ "name": "ජලය"
+ },
+ "shop/water_sports": {
+ "name": "ජල ක්රීඩා/ පිහිනුම් තටාකය"
+ },
+ "waterway": {
+ "name": "ජල මාර්ගය"
+ }
+ }
}
}
\ No newline at end of file
"multiple": "Odstránenie {n} objektov."
},
"incomplete_relation": "Tento objekt nemožno vymazať, pretože nebol úplne stiahnutý.",
+ "part_of_relation": "Tento objekt nemôže byť vymazaný, pretože je súčasťou väčšej relácie. Musíte ho najskôr z tejto relácie odobrať.",
"connected_to_hidden": "Tento objekt nemožno vymazať, pretože je spojený so skrytým objektom."
},
"add_member": {
"commit": {
"title": "Ukladanie zmien",
"description_placeholder": "Stručný popis vašich úprav",
- "message_label": "Pripojiť správu",
+ "message_label": "Krátky popis ukladaných zmien",
"upload_explanation": "Zmeny, ktoré nahráte, budú viditeľné na všetkých mapách, ktoré používajú údaje z OpenStreetMap.",
"upload_explanation_with_user": "Zmeny, ktoré nahráte ako {user}, budú viditeľné na všetkých mapách, ktoré používajú údaje z OpenStreetMap.",
"save": "Ulož",
"list": "Úpravy od {users}",
"truncated_list": "Úpravy od {users} a {count} ďalších"
},
+ "infobox": {
+ "selected": "{n} označených",
+ "geometry": "Tvar",
+ "closed": "zatvorené",
+ "center": "Stred",
+ "perimeter": "Obvod",
+ "length": "Dĺžka",
+ "area": "Plocha",
+ "centroid": "Ťažisko",
+ "location": "Poloha",
+ "metric": "Metrické",
+ "imperial": "Imperiálne"
+ },
+ "geometry": {
+ "point": "bod",
+ "vertex": "vrchol",
+ "line": "čiara",
+ "area": "plocha",
+ "relation": "relácia"
+ },
"geocoder": {
"search": "Hľadaj celosvetovo...",
"no_results_visible": "Žiadne výsledky v zobrazenej oblasti",
},
"partial": {
"description": "Čiastočná výplň",
- "tooltip": "Plochy sú vykresné s výplňou iba okolo vnútornych okrajoch. (Odporúčané pre začínajúcich užívateľov)"
+ "tooltip": "Plochy sú vykresné s výplňou iba okolo vnútornych okrajoch. (Odporúčané pre začínajúcich používateľov)"
},
"full": {
"description": "Plná výplň",
},
"restore": {
"heading": "Máte neuložené zmeny",
- "description": "Želáte si obnoviť neuložené zmeny z predchádzajúcej relácie?",
+ "description": "Želáte si obnoviť neuložené zmeny z predchádzajúcej návštevy?",
"restore": "Obnov",
"reset": "Vymaž"
},
"title": "Ulož",
"help": "Ulož zmeny do OpenStreetMap a sprístupni ich ďalším užívateľom.",
"no_changes": "Žiadne zmeny na uloženie.",
- "error": "Počas ukladania sa vyskytla chyba",
+ "error": "Počas ukladania sa vyskyla chyba",
+ "status_code": "Server vrátil chybový kód {code}",
"unknown_error_details": "Uistite sa prosím, že ste pripojený k internetu.",
"uploading": "Nahrávam zmeny do OpenStreetMap.",
- "unsaved_changes": "Máte neuložené zmeny"
+ "unsaved_changes": "Máte neuložené zmeny",
+ "conflict": {
+ "header": "Vyrieš konfliktné úpravy",
+ "count": "Konflikt {num} z {total}",
+ "previous": "< Predošlý",
+ "next": "Ďaľší >",
+ "keep_local": "Zachovaj moje",
+ "keep_remote": "Použi ich",
+ "restore": "Obnov",
+ "delete": "Ponechaj vymazané",
+ "download_changes": "Alebo stiahni moje zmeny",
+ "done": "Všetky konflikty sú vyriešené!",
+ "help": "Iný používateľ pozmenil niektoré z objektov, ktoré ste zmenili aj vy.\nPre viac detajlov o konflikte, kliknite na každú položku nižšie a vyberte, či chcete ponechať\nvaše zmeny alebo zmeny iných užívateľov.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Tento objekt bol vymazaný používateľom {user}.",
+ "location": "Tento objekt bol posunutý vami a tiež používateľom {user}.",
+ "nodelist": "Body boli zmenené vami a tiež používateľom {user}.",
+ "memberlist": "Členy relácie boli zmenené vami a tiež používateľom {user}.",
+ "tags": "Zmenili ste označenie <b>{tag}</b> na \"{local}\" a {user} ho zmenil na \"{remote}\"."
+ }
},
"success": {
"edited_osm": "OSM bol upravený!",
"help_html": "Vaše zmeny by sa mali objaviť na \"Základnej\" vrstve v priebehu niekoľkých minút. Ostatným vrstvám a niektorým objektom to môže trvať dlhšie\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detaily</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Zrušiť"
},
"splash": {
"welcome": "Vitajte v iD editore pre OpenStreetMap",
},
"help": {
"title": "Pomoc",
- "help": "# Pomoc\n\nToto je editor pre [OpenStreetMap](http://www.openstreetmap.org/), slobodnú a upravovateľnú mapu sveta. Môžete ho používať na pridávanie a aktualizovanie údajov vo vašom okolí a vylepšiť tak mapu sveta s otvoreným kódom a dátami pre všetkých.\n\nÚpravy, ktoré v tejto mape spravíte, budú viditeľné pre každého, kto používa OpenStreetMap. Na to, aby ste mohli upravovať, budete potrebovať [bezplatný OpenStreetMap účet](https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) je kolaboratívny projekt so [zdrojovým kódom dostupným na GitHub](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Upravovanie a ukladanie\n\nTento editor je primárne navrhnutý na prácu online, a aj práve teraz ho používate cez internetovú stránku.\n\n### Výber objektov\n\nPre výber objektu, ako napríklad cesta alebo bod záujmu, naň kliknite na mape. Týmto sa vybraný objekt zvýrazní, otvorí sa panel s jeho detajlami a zobrazí sa ponuka s úkonmi, ktoré môžete s objektom urobiť.\n\nViacero objektov je možné vybrať podržaním klávesu \"Shift\". Potom jednoducho kliknite na objekty, ktoré chcete vybrať, alebo pretiahnite po mape akoby ste chceli nakresliť obdĺžnik. Týmto sa zobrazí rám a vyberú sa všetky objekty, ktoré sa v ňom nachádzajú.\n\n### Ukladanie úprav\n\nKed urobíte zmeny ako úpravy ciest, budov a miest, tieto budú lokálne uložené, až pokiaľ ich neuložíte na server. Netrápte sa ak urobíte chybu. Zmeny môžete vrátit späť kliknutím na tlačítko vrátiť a zopakovať kliknutím na tlačitko zopakovať.\n\nKeď chcete ukončit sériu úprav, kliknite na \"Uložiť\". Napríklad ak ste dokončili časť mesta a chcete začať s inou časťou. Budete mať možnosť si prehliadnuť, čo ste urobili a editor poskytne užitočné návrhy a varovania ak niečo nie je so zmenami vporiadku.\n\nAk všetko vyzerá vporiadku, môžete vyplniť krátky komentár vysvetľujúci, čo ste urobili a kliknite znovu na \"Uložiť\" pre odoslanie zmien na [OpenStreetMap.org](http://www.openstreetmap.org/), kde budú viditeľné pre ostatných používateľov a tak dostupné pre ďalšie vylepšenia.\n\nAk nemôžete dokončiť úpravy počas jedného sedenia, môžete zatvoriť okno prehliadača, vrátiť sa späť (na rovnakom prehliadači a počítači) a editor vám ponúkne obnoviť vašu prácu.\n",
+ "help": "# Pomoc\n\nToto je editor pre [OpenStreetMap](http://www.openstreetmap.org/), slobodnú a upravovateľnú mapu sveta. Môžete ho používať na pridávanie a aktualizovanie údajov vo vašom okolí a vylepšiť tak mapu sveta s otvoreným kódom a dátami pre všetkých.\n\nÚpravy, ktoré v tejto mape spravíte, budú viditeľné pre každého, kto používa OpenStreetMap. Na to, aby ste mohli upravovať, sa budete musieť prihlásiť [prihlásiť](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) je kolaboratívny projekt so [zdrojovým kódom dostupným na GitHub](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Upravovanie a ukladanie\n\nTento editor je primárne navrhnutý na prácu online, a aj práve teraz ho používate cez internetovú stránku.\n\n### Výber objektov\n\nPre výber objektu, ako napríklad cesta alebo bod záujmu, naň kliknite na mape. Týmto sa vybraný objekt zvýrazní, otvorí sa panel s jeho detajlami a zobrazí sa ponuka s úkonmi, ktoré môžete s objektom urobiť.\n\nViacero objektov je možné vybrať podržaním klávesu \"Shift\". Potom jednoducho kliknite na objekty, ktoré chcete vybrať, alebo pretiahnite po mape akoby ste chceli nakresliť obdĺžnik. Týmto sa zobrazí rám a vyberú sa všetky objekty, ktoré sa v ňom nachádzajú.\n\n### Ukladanie úprav\n\nKed urobíte zmeny ako úpravy ciest, budov a miest, tieto budú lokálne uložené, až pokiaľ ich neuložíte na server. Netrápte sa ak urobíte chybu. Zmeny môžete vrátit späť kliknutím na tlačítko vrátiť a zopakovať kliknutím na tlačitko zopakovať.\n\nKeď chcete ukončit sériu úprav, kliknite na \"Ulož\". Napríklad ak ste dokončili časť mesta a chcete začať s inou časťou. Budete mať možnosť si prehliadnuť, čo ste urobili a editor poskytne užitočné návrhy a varovania ak niečo nie je so zmenami vporiadku.\n\nAk všetko vyzerá vporiadku, môžete vyplniť krátky komentár vysvetľujúci, čo ste urobili a kliknite znovu na \"Ulož\" pre odoslanie zmien na [OpenStreetMap.org](http://www.openstreetmap.org/), kde budú viditeľné pre ostatných používateľov a tak dostupné pre ďalšie vylepšenia.\n\nAk nemôžete dokončiť úpravy počas jedného sedenia, môžete zatvoriť okno prehliadača, vrátiť sa späť (na rovnakom prehliadači a počítači) a editor vám ponúkne obnoviť vašu prácu.\n",
"roads": "# Cesty\n\nS týmto editorom môžete cesty vytvoriť, opraviť alebo vymazať. Cesty môžu byť rôzneho druhu: chodníky, diaľnice, lesné cestičky, cyklochodníky a iné. Akýkoľvek často prechádzaný úsek by malo byť možné zmapovať.\n\n### Výber\n\nKliknite na cestu pre jej výber. Viditeľným by sa mal stať jej obrys spolu s malou ponukou nástrojov na mape a postranným panelom, ukazujúcim dodatočné informácie o ceste.\n\n### Úprava\n\nČasto krát uvidíte cesty, ktoré nie sú zarovnané so snímkami pod nimi alebo s GPS stopu. Tieto cesty môžete upraviť tak, aby boli na správnom mieste.\n\nNajskôr kliknite na cestu, ktorú chcete zmeniť. Týmto sa zvýrazní a po jej dĺžke sa ukážu kontrolné body, ktoré môžete pretiahnuť na lepšiu pozíciu. Ak chcete pridať nový kontrolný bod pre viac detailov, dva krát kliknite na časť cesty bez uzla a jeden bude pridaný.\n\nAk sa cesta spája s inou cestou, ale nie je správne spojená na mape, môžete pretiahnuť jeden z jej kontrolných bodov na druhú cestu, aby ste ich spojili. Spojenie ciest je dôležité pre mapu a nevyhnutné pre poskytovanie navigácie na cestách.\n\nMôžete tiež kliknúť na nástroj \"Presuň\" alebo stlačiť kláves \"M\" pre posunutie celej cesty naraz a potom kliknite znovu, aby ste uložili presun.\n\n### Vymazávanie\n\nAk je cesta úplne nesprávna - vidíte, že cesta neexistuje na satelitných snímkoch a najlepšie mate potvrdené zo samotného miesta, že tam cesta nie je - môžete ju vymazať, čím ju odstránite z mapy. Pri vymazávaní objektov buďte obozretný, rovnako ako pri iných úpravách sú výsledky viditeľné ostatnými a satelitné snímky sú často neaktuálne, takže cesta môže byť jednoducho novopostavená.\n\nCestu môžete vymazať, tak že na ňu kliknete čim ju vyberiete a potom kliknete na ikonu smetného koša alebo stlačením klávesu \"Delete\".\n\n### Vytváranie\n\nZistili ste, že niekde by mala byť cesta ale ona tam nie je? Kliknite naľavo hore na ikonu \"Čiara\" alebo stlačte kláves \"2\" pre kreslenie čiary.\n\nAby ste začali kresliť, kliknite na začiatok cesty na mape. Ak cesta odbočuje z inej existujúcej cesty, začnite kliknútím na miesto, kde sa spájajú.\n\nPotom kliknite na body pozdĺž cesty tak, aby nasledovali správny smer podľa satelitných snímkov alebo GPS. Ak cesta, ktorú kreslíte, pretína ďalšiu cestu, spojte ich kliknutím v mieste križovatky. Keď ste hotový s skreslením, dva krát kliknite alebo stlačte kláves \"Enter\" na vašej klávesnici.\n",
"gps": "# GPS\nGPS údaje sú najviac dôveryhodný zdroj dát pre OpenStreetMap. Tento editor podporuje stopy z lokálnych \".gpx\" súborov na vašom počítači. Tento typ GPS stôp môžete zachytiť pomocou rôznych aplikácií pre múdre telefóny ako aj GPS prístrojmi.\n\nPre informácie, ako robiť GPS prieskum, si prečítajte [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nAby ste použili GPX trasu pre mapovanie, pretiahnite a pustite GPX súbor na mapový editor. Po rozpoznaní, bude pridaný na mapu ako jasná fialová čiara. Kliknite na ponuku \"Mapové údaje\" na ľavej strane pre zapnutie, vypnutie alebo priblíženie na túto novú GPX vrstvu.\n\nGPX trasa nie je priamo nahraná na OpenStreetMap. Najlepší spôsob ako ju využiť je, použiť ju ako predlohu pre zakreslovanie nových objektov a potom ju [nahrať na OpenStreetMap](http://www.openstreetmap.org/trace/create) pre ďalších uživateľov.\n \n",
"imagery": "# Snímky povrchu\n\nLetecké snímky sú dôležitým zdrojom pre mapovanie. Kombinácia leteckých fotografií, satelitných snímok a voľne skompilovaných zdrojov je v editore dostupná vpravo pod ponukou \"Nastavenia pozadia\".\n\nŠtandardne je v editore predvolená satelitná vrstva z [Bing Maps](http://www.bing.com/maps/), ale ako posuniete a priblížite mapu na nové geografické miesta, dostupnými sa stanú nové zdroje. Niektoré krajiny ako Spojené Štáty, Francúzsko, a Dánsko majú pre niektoré oblasti dostupné veľmi kvalitné snímky.\n\nSnímky môžu byť niekedy posunuté voči mapovým dátam, kvôli chybe na strane poskytovateľa snímkov. Ak uvidíte veľa ciest posunutých voči pozadiu, neposúvajte ich hneď všetky, aby ste ich zarovnali s pozadím. Namiesto toho môžete upraviť snímky, aby odpovedali existujúcim dátam tým, že kliknete na \"Oprav zarovnanie\" naspodku Nastavenia pozadia.\n",
"addresses": "# Adresy\n\nAdresy sú jedny z najužitočnejších informácií na mape.\n\nHoci sú adresy často znázorňované ako časti ulíc, v OpenStreetMap sú zaznamenávané ako atribúty budov a miest pozdĺž ulíc.\n\nInformáciu o adrese môžete pridať ku miestam znázornených ako obrysy budov, ale aj ku tým, ktoré boli zmapované ako jediný bod. Najvhodnejším zdrojom adresných údajov je miestny prieskum alebo znalosť lokality. Tak ako pri iných objektoch, kopírovanie z komerčných zdrojov ako Google Mapy je prísne zakázané.\n",
- "inspector": "# Používanie Inšpektora\n\nInšpektor je používateľské rozhranie na ľavej strane stránky, ktoré sa objaví po vybraní objektu a umožní vám upravovať detaily.\n\n### Voľba typu objektu\n\nPo tom ako pridáte bod, čiaru alebo plochu, môžete vybrať aký je to typ objektu. Napríklad či je to diaľnica alebo obytná ulica, či supermarket alebo kaviareň. Inšpektor zobrazí tlačítka pre bežné typy objektov a nájsť ďalšie môžete zadaním toho, čo hľadáte do vyhľadávacieho políčka.\n\nKliknite na \"i\" v pravom dolnom rohu tlačítka pre výber typu objektu, ak sa chcete o ňom dozvedieť viac. Kliknite na tlačítko a vyberte typ objektu.\n\n### Používanie formulárov a upravovanie označenia\n\nPo tom ako zvolíte typ objektu, alebo keď vyberiete objekt, ktorý už má pridelený typ, inšpektor zobrazí polia s detailmi o objekte ako jeho meno a adresa.\n\nPod poliami sú ikony, na ktoré môžete kliknúť a pridať ďalšie detaily ako informácie z [Wikipédie](http://www.wikipedia.org/), prístup pre vozičkárov a ďalšie.\n\nNaspodku inšpektora kliknite na \"Dodatočné označenia\" pre pridanie ľubovoľných označení pre daný element. [Taginfo](http://taginfo.openstreetmap.org/) je výborný zdroj pre zistenie populárnych kombinácií označení.\n\nZmeny, ktoré spravíte v inšpektorovi, sú automaticky aplikované na mapu. Vrátiť späť ich môžete kedykoľvek kliknutím na tlačítko \"Vrátiť\".\n",
+ "inspector": "# Používanie Inšpektora\n\nInšpektor je používateľské rozhranie na ľavej strane stránky, ktoré sa objaví po vybraní objektu a umožní vám upravovať detaily.\n\n### Voľba typu objektu\n\nPo tom ako pridáte bod, čiaru alebo plochu, môžete vybrať aký je to typ objektu. Napríklad či je to diaľnica alebo obytná ulica, či supermarket alebo kaviareň. Inšpektor zobrazí tlačítka pre bežné typy objektov a nájsť ďalšie môžete zadaním toho, čo hľadáte do vyhľadávacieho poľa.\n\nKliknite na \"i\" v pravom dolnom rohu tlačítka pre výber typu objektu, ak sa chcete o ňom dozvedieť viac. Kliknite na tlačítko a vyberte typ objektu.\n\n### Používanie formulárov a upravovanie označenia\n\nPo tom ako zvolíte typ objektu, alebo keď vyberiete objekt, ktorý už má pridelený typ, inšpektor zobrazí polia s detailmi o objekte ako jeho meno a adresa.\n\nPod poliami sú ikony, na ktoré môžete kliknúť a pridať ďalšie detaily ako informácie z [Wikipédie](http://www.wikipedia.org/), prístup pre vozičkárov a ďalšie.\n\nNaspodku inšpektora kliknite na \"Dodatočné označenia\" pre pridanie ľubovoľných označení pre daný element. [Taginfo](http://taginfo.openstreetmap.org/) je výborný zdroj pre zistenie populárnych kombinácií označení.\n\nZmeny, ktoré spravíte v inšpektorovi, sú automaticky aplikované na mapu. Vrátiť späť ich môžete kedykoľvek kliknutím na tlačítko \"Vrátiť\".\n",
"buildings": "# Budovy\n\nOpenStreetMap je najväčšia databáza budov na svete. Práve vy ju môžete tvoriť a vylepšovať.\n\n### Výber\n\nBudovu môžete vybrať kliknutím na jej hranicu. Týmto sa budova zvýrazní a otvorí sa malá ponuka nástrojov a postranný panel, ukazujúcim dodatočné informácie o budove.\n\n### Úprava\n\nNiekedy môžu byť budovy chybne umiestnené alebo mať nesprávne označenia.\n\nPre presun celej budovy ju vyberte, a potom kliknite na nástroj \"Presunúť\". Posuňte vašu myš, aby ste posunuli budovu a kliknite, keď je umiestnená správne.\n\nPre opravu tvaru budovy, kliknite a ťahajte za uzly, ktoré tvoria jej ohraničenie, na lepšie miesto.\n\n### Vytváranie\n\nJeden z hlavných problémov okolo pridávania budov je, že OpenStreetMap zaznamenáva budovy ako útvary aj ako body. Nepísaným pravidlom je mapovať budovy vo forme útvaru vždy, keď je to možné a mapovať firmy, domovy, služby občianskej vybavenosti a ďalšie subjekty, ktoré v budove pôsobia ako body umiestnené vo vnútri útvaru budovy.\n\nZačnite kresliť budovu ako útvar, klinutím na tlačítko \"Plocha\" vľavo hore a ukončite ju buď stlačením \"Enter\" na vašej klávesnici alebo kliknutím na prvý uzol, ktorý ste zakreslili, čím uzavriete útvar.\n\n### Vymazávanie\n\nAk je budova úplne nesprávna - vidíte, že neexistuje na satelitných snímkoch a najlepšie mate potvrdené zo samotného miesta, že tam nie je - môžete ju vymazať, čím ju odstránite z mapy. Pri vymazávaní objektov buďte obozretný. Rovnako ako pri iných úpravách sú výsledky viditeľné ostatnými a satelitné snímky sú často neaktuálne, takže budova môže byť jednoducho novopostavená.\n\nBudovu môžete vymazať tak, že na ňu kliknete, čím ju vyberiete, a potom kliknete na ikonu koša alebo stlačením klávesu \"Delete\".\n",
"relations": "# Relácie\n\nRelácia je zvláštny typ objektu v OpenStreetMap, ktorý zoskupuje dokopy iné objekty. Dva najčastejšie typy relácií sú *trasy*, ktoré zoskupujú časti cesty patriace určitému cestnému ťahu a *multipolygóny*, ktoré zoskupujú čiary vytvárajúce zložité plochy (pozostávajúce z niekoľko častí alebo otvorov uprostred).\n\nObjekty v relácií sa nazývajú *členy*. V postrannom panely môžete vidieť v akých reláciach sa objekt nachádza a kliknutím na reláciu ju označiť. Keď je relácia označená, môžete vidieť všetky jej členy na postrannom panely a zvýraznené na mape.\n\nVo väčšine prípadov sa iD postará o udržovanie relácií počas vášho upravovania automaticky. Dôležitá vec, na ktorú by ste si mali dávať pozor je, ak vymažete časť cesty, aby ste ju presnejšie nakreslili, že táto časť bude členom rovnakých relácií ako časť pôvodná.\n\n ## Úprava relácií\n\nAk chcete upravovať relácie, tu sú základy.\n\nPre pridanie objektu do relácie, vyberte objekt a kliknite na tlačítko \"+\" v časti postranného panelu s názvom \"Všetky relácie\" a vyberte alebo napíšte meno relácie.\n\nPre vytvorenie novej relácie, vyberte prvý objekt, ktorý by mal byť jej členom a kliknite na tlačítko \"+\" v časti s názvom \"Všetky relácie\" a vyberte \"Nová relácia...\".\n\nPre odstránenie objektu z relácie, vyberte objekt a kliknite na tlačitko smetného koša, vedľa relácie, z ktorej ho chcete odobrať.\n\n Pomocou nástroja \"Zlúč\" môžete vytvoriť multipolygón s dierami. Nakreslite dve plochy (vonkajšiu a vnútornú), stlačte klávesu Shift a kliknite na každú z nich, aby ste ich vybrali a potom kliknite na tlačítko \"Zlúč\" (+).\n"
},
"navigation": {
"title": "Navigácia",
"drag": "Hlavná plocha s mapou zobrazuje nad pozadím údaje z OpenStreetMap. Presúvať sa môžete ťahaním za mapu alebo koliečkom myši rovnako, ako u iných webových máp. **Potiahnite za mapu!**",
- "select": "Objekty na mape sú reprezentované tromi spôsobmi: pomocou bodov, čiar alebo plôch. Všetky objekty môžu byť vybraté tým, že na ne kliknete. **Kliknite na bod, aby ste ho vybrali.**",
+ "select": "Objekty na mape sú reprezentované tromi spôsobmi: pomocou bodov, čiar alebo plôch. Každý objekt môžete vybrať tým, že naň kliknete. **Kliknite na bod, aby ste ho vybrali.**",
"header": "Hlavička nám ukazuje typ objektu.",
- "pane": "Keď je objekt vybraný, zobrazí sa editor objektu. Hlavička nám ukazuje typ objektu a hlavný panel zobrazuje atribúty objektu, ako sú jeho meno a adresa. **Zatvorte editor objektu pomocou tlačítka vpravo hore.**"
+ "pane": "Keď je objekt vybraný, zobrazí sa editor objektu. Hlavička nám ukazuje typ objektu a hlavný panel zobrazuje vlastnosti objektu, ako sú jeho meno a adresa. **Zatvorte editor objektu pomocou tlačítka vpravo hore.**"
},
"points": {
"title": "Body",
- "add": "Body môžu byť použité na znázorňovanie objektov ako sú obchody, reštaurácie a pamätihodnosťi. Označujú špecifickú polohu a popisujú čo sa tam nachádza. **Kliknite na tlačidlo Bod a pridajte nový bod.**",
+ "add": "Body môžu byť použité na znázorňovanie objektov ako sú obchody, reštaurácie a pamätihodnosťi. Označujú špecifickú polohu a popisujú čo sa tam nachádza. **Kliknite na tlačítko Bod a pridajte nový bod.**",
"place": "Bod môžete umiestniť kliknutím na mapu. **Umiestnite bod na vrch budovy.**",
"search": "Body môžu znázorňovať veľa rôznych objektov. Bod, ktorý ste práve pridali, je Kaviareň. **Vyhľadajte \"{name}\"**",
"choose": "**Vyberte Kaviareň zo zoznamu.**",
},
"areas": {
"title": "Plochy",
- "add": "Plochy slúžia na zobrazenie hraníc jazier, budov a obytných oblastí. Môžu byť taktiež použité pre podrobnejšie zmapovanie mnohých funkcií, ktoré sú na mape ako normálne body. ** Kliknite na tlačidlo Plocha a pridajte novú oblasť. **",
+ "add": "Plochy slúžia na zobrazenie hraníc jazier, budov a obytných oblastí. Môžu byť taktiež použité pre podrobnejšie zmapovanie mnohých objektov, ktoré by ste normálne mapovali ako bod. ** Kliknite na tlačítko Plocha a pridajte novú oblasť. **",
"corner": "Plochy sú zakreslované umiestňovaním uzlov, ktoré označujú hranicu plochy. **Umiestnite počiatočný uzol na jeden z rohov ihriska.**",
- "place": "Nakreslite plochu umiestnením ďalších uzlov. Dokončite plochu kliknutím na počiatočný uzol. **Nakreslite plochu pre ihrisko.**",
+ "place": "Nakreslite plochu umiestnením ďalších uzlov. Plochu dokončíte kliknutím na počiatočný uzol. **Nakreslite plochu pre ihrisko.**",
"search": "**Vyhľadajte \"{name}\".**",
- "choose": "**Vyberte Ihrisko zo zoznamu.**",
+ "choose": "**Vyberte ihrisko zo zoznamu.**",
"describe": "**Vyplňte názov a zatvorte editor objektu**"
},
"lines": {
"fields": {
"access": {
"label": "Prístup",
- "placeholder": "Neznámy",
- "types": {
- "access": "Všeobecné",
- "foot": "Chodci",
- "motor_vehicle": "Motorové vozidlá",
- "bicycle": "Bicykle",
- "horse": "Kone"
- },
"options": {
- "yes": {
- "title": "Povolené",
- "description": "Vstup povolený zo zákona"
+ "designated": {
+ "description": "Povolenie vstupu je riadené dopravnými značkami alebo miestnymi zákonmi",
+ "title": "Vyznačené"
+ },
+ "destination": {
+ "description": "Vstup povolený iba dosiahnutie cieľa",
+ "title": "Prejazd zakázaný"
},
"no": {
- "title": "Zakázané",
- "description": "Verejnosti vstup zakázaný"
+ "description": "Verejnosti vstup zakázaný",
+ "title": "Zakázané"
},
"permissive": {
- "title": "Povolený",
- "description": "Vstup povolený pokiaľ majiteľ povolenie neodvolá"
+ "description": "Vstup povolený pokiaľ majiteľ povolenie neodvolá",
+ "title": "Povolený"
},
"private": {
- "title": "Súkromné",
- "description": "Vstup možný iba s povolením vlastníka na individuálnom základe"
- },
- "designated": {
- "title": "Vyznačené",
- "description": "Povolenie vstupu je riadené dopravnými značkami alebo miestnymi zákonmi"
+ "description": "Vstup možný iba s povolením vlastníka na individuálnom základe",
+ "title": "Súkromné"
},
- "destination": {
- "title": "Prejazd zakázaný",
- "description": "Vstup povolený iba dosiahnutie cieľa"
+ "yes": {
+ "description": "Vstup povolený zo zákona",
+ "title": "Povolené"
}
+ },
+ "placeholder": "Neznámy",
+ "types": {
+ "access": "Všeobecné",
+ "bicycle": "Bicykle",
+ "foot": "Chodci",
+ "horse": "Kone",
+ "motor_vehicle": "Motorové vozidlá"
}
},
"access_simple": {
"address": {
"label": "Adresa",
"placeholders": {
+ "city": "Mesto",
+ "country": "Štát",
+ "district": "Okres",
+ "hamlet": "Osada/Samota",
"housename": "Meno domu",
"housenumber": "123",
- "street": "Ulica",
- "city": "Mesto",
- "postcode": "PSČ",
"place": "Obec",
- "hamlet": "Osada/Samota",
- "suburb": "Predmestie",
- "subdistrict": "Podoblasť",
- "district": "Okres",
+ "postcode": "PSČ",
"province": "Provincia",
"state": "Štát",
- "country": "Štát"
+ "street": "Ulica",
+ "subdistrict": "Podoblasť",
+ "suburb": "Predmestie"
}
},
"admin_level": {
"aerialway/access": {
"label": "Prístup",
"options": {
+ "both": "Obidva",
"entry": "Vchod",
- "exit": "Východ",
- "both": "Obidva"
+ "exit": "Východ"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Prístup (leto)",
"options": {
+ "both": "Obidva",
"entry": "Vchod",
- "exit": "Východ",
- "both": "Obidva"
+ "exit": "Východ"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Smer",
"options": {
- "N": "Sever",
"E": "Východ",
- "S": "Juh",
- "W": "Západ",
- "NE": "Severtovýchod",
- "SE": "Juhovýchod",
- "SW": "Juhozápad",
- "NW": "Severozápad",
- "NNE": "Severo-severovýchod",
"ENE": "Východo-severovýchod",
"ESE": "Východo-juhovýchod",
+ "N": "Sever",
+ "NE": "Severtovýchod",
+ "NNE": "Severo-severovýchod",
+ "NNW": "Severo-severozápad",
+ "NW": "Severozápad",
+ "S": "Juh",
+ "SE": "Juhovýchod",
"SSE": "Juho-juhovýchod",
"SSW": "Juho-juhozápad",
- "WSW": "Západo-juhozápad",
+ "SW": "Juhozápad",
+ "W": "Západ",
"WNW": "Západo-severozápad",
- "NNW": "Severo-severozápad"
+ "WSW": "Západo-juhozápad"
}
},
"clock_direction": {
"label": "Smer",
"options": {
- "clockwise": "V smere hodinových ručičiek",
- "anticlockwise": "Proti smeru hodinových ručičiek"
+ "anticlockwise": "Proti smeru hodinových ručičiek",
+ "clockwise": "V smere hodinových ručičiek"
}
},
"collection_times": {
"construction": {
"label": "Typ"
},
+ "content": {
+ "label": "Obsah"
+ },
"country": {
"label": "štát"
},
"description": {
"label": "Popis"
},
+ "drive_through": {
+ "label": "Obslúženie z auta"
+ },
"electrified": {
"label": "Elektrifikovaná",
- "placeholder": "Troleje, elektrifikované koľaje...",
"options": {
"contact_line": "Troleje",
+ "no": "Nie",
"rail": "Elektrifikované koľaje",
- "yes": "Áno (nešpecifikované)",
- "no": "Nie"
- }
+ "yes": "Áno (nešpecifikované)"
+ },
+ "placeholder": "Troleje, elektrifikované koľaje..."
},
"elevation": {
"label": "Nadmorská výška"
"label": "Typ",
"options": {
"pillar": "Stĺpik/Nadzemný",
+ "pond": "Požiarna nádrž",
"underground": "Podzemný",
- "wall": "Nastenný",
- "pond": "Požiarna nádrž"
+ "wall": "Nastenný"
}
},
"fixme": {
},
"gender": {
"label": "Pohlavie",
- "placeholder": "Neznáme",
"options": {
- "male": "Muži",
"female": "Ženy",
+ "male": "Muži",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Neznáme"
},
"generator/method": {
"label": "Metóda"
"incline": {
"label": "Sklon"
},
+ "incline_steps": {
+ "label": "Sklon",
+ "options": {
+ "down": "Nadol",
+ "up": "Nahor"
+ }
+ },
"information": {
"label": "Typ"
},
"internet_access": {
"label": "Prístup k Internetu",
"options": {
- "yes": "Áno",
"no": "Nie",
- "wlan": "Wifi",
+ "terminal": "Terminál",
"wired": "Káblom",
- "terminal": "Terminál"
+ "wlan": "Wifi",
+ "yes": "Áno"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Opadavosť",
"options": {
- "evergreen": "Neopadavý",
"deciduous": "Opadavý",
- "semi_evergreen": "Poloopadavý",
- "semi_deciduous": "Krátkoopadavé",
- "mixed": "Zmiešaný"
+ "evergreen": "Neopadavý",
+ "mixed": "Zmiešaný",
+ "semi_deciduous": "Krátkoopadavý",
+ "semi_evergreen": "Poloopadavý"
}
},
"leaf_type": {
"label": "Typ listov",
"options": {
"broadleaved": "Širokolisté",
- "needleleaved": "Ihličnaté",
+ "leafless": "Bezlisté",
"mixed": "Zmiešané",
- "leafless": "Bezlisté"
+ "needleleaved": "Ihličnaté"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Obtiažnosť pre horské bicykle",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Štrk/zhutnená pôda, bez prekážok, široké zákruty",
"1": "1: Miestami nespevnený povrch, malé prekážky, široké zákruty",
"4": "4: Nespevnený povrch alebo balvany, nebezpečné vlásenky",
"5": "5: Najväčšia obtiažnosť, skalné polia, zosuvy pôdy",
"6": "6: Nezjazdné okrem najlepších horských bicyklistov"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Obtiažnosť podľa IMBA",
- "placeholder": "Lahká, stredná, ťažká...",
"options": {
"0": "Najľahšia (biely kruh)",
"1": "Ľahká (zelený kruh)",
"2": "Stredná (modrý štvorec)",
"3": "Ťažká (čierny kosoštvorec)",
"4": "Veľmi ťažká (dvojitý čierny kosoštvorec)"
- }
+ },
+ "placeholder": "Lahká, stredná, ťažká..."
},
"mtb/scale/uphill": {
"label": "Obtiažnosť jazdy do kopca",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Priem. sklon <10%, štrk/udupaná hlina, bez prekážok",
"1": "1: Priem. sklon <15%, štrk/udupaná hlina, niekoľko malých objektov",
"3": "3: Priem. sklon <25%, premenlivý povrch, kamene/korene veľkosti päste",
"4": "4: Priem. sklon <30%, nevhodné podmienky, veľké kamene/konáre",
"5": "5: Veľmi strmé, bicykel sa musí tlačiť alebo preniesť"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Názov",
"oneway": {
"label": "Jednosmerná",
"options": {
+ "no": "Nie",
"undefined": "Pravdepodobne nie",
- "yes": "Áno",
- "no": "Nie"
+ "yes": "Áno"
}
},
"oneway_yes": {
"label": "Jednosmerná",
"options": {
+ "no": "Nie",
"undefined": "Pravdepodobne áno",
- "yes": "Áno",
- "no": "Nie"
+ "yes": "Áno"
}
},
"opening_hours": {
"parking": {
"label": "Typ",
"options": {
- "surface": "Povrch",
- "multi-storey": "Viacúrovňové",
- "underground": "Podzemné",
- "sheds": "Šopy",
"carports": "Kryté",
"garage_boxes": "Garáže",
- "lane": "Postranné"
+ "lane": "Postranné",
+ "multi-storey": "Viacúrovňové",
+ "sheds": "Šopy",
+ "surface": "Povrch",
+ "underground": "Podzemné"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Obtiažnosť",
- "placeholder": "Ľahká, stredná, pokročilá...",
"options": {
- "novice": "Pre začiatočníkov (inštruktážny)",
- "easy": "Ľahká (zelený kruh)",
- "intermediate": "Stredná (modrý štvorec)",
"advanced": "Pokročilá (čierny kosoštvorec)",
+ "easy": "Ľahká (zelený kruh)",
"expert": "Pre expertov (dvojitý čierny kosoštvorec)",
+ "extreme": "Extrémna (potrebné horolezecké vybavenie)",
"freeride": "Voľný zjazd (mimo zjazdovky)",
- "extreme": "Extrémna (potrebné horolezecké vybavenie)"
- }
+ "intermediate": "Stredná (modrý štvorec)",
+ "novice": "Pre začiatočníkov (inštruktážny)"
+ },
+ "placeholder": "Ľahká, stredná, pokročilá..."
},
"piste/grooming": {
"label": "Úprava",
"options": {
- "classic": "Klasické",
- "mogul": "Bubny",
"backcountry": "Bežky",
+ "classic": "Klasické",
"classic+skating": "Klasické a korčuľovanie",
+ "mogul": "Bubny",
"scooter": "Snežné skútre",
"skating": "Korčuľovanie"
}
"label": "Typ",
"options": {
"downhill": "Zjazd",
+ "hike": "Pešie túry",
+ "ice_skate": "Korčuľovanie",
"nordic": "Severské lyžovanie",
+ "playground": "Ihrisko",
"skitour": "Bežkovanie do kopca",
"sled": "Sánky",
- "hike": "Pešie túry",
"sleigh": "Záprah",
- "ice_skate": "Korčuľovanie",
- "snow_park": "Snežný park",
- "playground": "Ihrisko"
+ "snow_park": "Snežný park"
}
},
"place": {
"power": {
"label": "Typ"
},
+ "power_supply": {
+ "label": "Elektrický zdoj"
+ },
"railway": {
"label": "Typ"
},
},
"sac_scale": {
"label": "Obtiažnosť turistickej trasy",
- "placeholder": "Horská turistika, vysokohorská turistika...",
"options": {
- "hiking": "T1: Turistika",
- "mountain_hiking": "T2: Horská turistika",
- "demanding_mountain_hiking": "T3: Náročná horská turistika",
"alpine_hiking": "T4: Vysokohorská turistika",
"demanding_alpine_hiking": "T5: Náročná vysokohorská turistika",
- "difficult_alpine_hiking": "T6: Obtiažna vysokohorská turistika"
- }
+ "demanding_mountain_hiking": "T3: Náročná horská turistika",
+ "difficult_alpine_hiking": "T6: Obtiažna vysokohorská turistika",
+ "hiking": "T1: Turistika",
+ "mountain_hiking": "T2: Horská turistika"
+ },
+ "placeholder": "Horská turistika, vysokohorská turistika..."
+ },
+ "sanitary_dump_station": {
+ "label": "Vyprázdňovanie toaliet"
},
"seasonal": {
"label": "Sezónne"
"service": {
"label": "Typ"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Oprava reťaze",
"options": {
+ "no": "Nie",
"undefined": "Pravdepodobne nie",
- "yes": "Áno",
- "no": "Nie"
+ "yes": "Áno"
}
},
"service/bicycle/pump": {
"label": "Vzduchová pumpa",
"options": {
+ "no": "Nie",
"undefined": "Pravdepodobne nie",
- "yes": "Áno",
- "no": "Nie"
+ "yes": "Áno"
+ }
+ },
+ "service_rail": {
+ "label": "Typ koľaje",
+ "options": {
+ "crossover": "Výhybka",
+ "siding": "Výhybňa",
+ "spur": "Vlečka",
+ "yard": "Zoraďovacia koľaj"
}
},
"shelter": {
},
"smoking": {
"label": "Fajčenie",
- "placeholder": "Nie, odelene, áno...",
"options": {
- "no": "Zákaz fajčenia",
- "separated": "Vo fajčiarskom priestore, bez fyzického oddelenia",
+ "dedicated": "Určený pre fajčiarov (napr. fajčiarský klub)",
"isolated": "Vo fajčiarskom priestore, fyzicky oddelený",
+ "no": "Zákaz fajčenia",
"outside": "Vo vonkajšich priestoroch",
- "yes": "Povolené všade",
- "dedicated": "Určený pre fajčiarov (napr. fajčiarský klub)"
- }
+ "separated": "Vo fajčiarskom priestore, bez fyzického oddelenia",
+ "yes": "Povolené všade"
+ },
+ "placeholder": "Nie, odelene, áno..."
},
"smoothness": {
"label": "Rovnosť vozovky",
- "placeholder": "Malé kolieska, kolesá, off-road...",
"options": {
+ "bad": "Pevné kolesá: trekový bicykel, auto, rikša",
"excellent": "Malé kolieska: kolieskové korčule, skateboard",
"good": "Tenké kolesá: závodný bicykel",
+ "horrible": "Off-road: výkonné off-road vozidlo",
+ "impassable": "Nepriechodné / Nie pre kolesové vozidlá",
"intermediate": "Kolesá: mestský bicykel, invalidný vozík, skúter",
- "bad": "Pevné kolesá: trekový bicykel, auto, rikša",
"very_bad": "Zvýšený podvozok: ľahké off-road vozidlo",
- "horrible": "Off-road: výkonné off-road vozidlo",
"very_horrible": "Špecializovaný off-road: traktor, štvorkolka"
- }
+ },
+ "placeholder": "Malé kolieska, kolesá, off-road..."
},
"social_facility_for": {
"label": "Služby poskytované pre",
},
"structure": {
"label": "Štruktúra",
- "placeholder": "Neznáme",
"options": {
"bridge": "Most",
- "tunnel": "Tunel",
- "embankment": "Násyp",
"cutting": "Výkop",
- "ford": "Brod"
- }
+ "embankment": "Násyp",
+ "ford": "Brod",
+ "tunnel": "Tunel"
+ },
+ "placeholder": "Neznáme"
},
"studio_type": {
"label": "Typ"
},
"takeaway": {
"label": "Jedlo so sebou",
- "placeholder": "Áno, Nie, Iba so sebou...",
"options": {
- "yes": "Áno",
"no": "Nie",
- "only": "Iba so sebou"
- }
+ "only": "Iba so sebou",
+ "yes": "Áno"
+ },
+ "placeholder": "Áno, Nie, Iba so sebou..."
},
"toilets/disposal": {
"label": "Odstraňovanie",
"options": {
- "flush": "Splachovacie",
- "pitlatrine": "Latrína",
+ "bucket": "Suché",
"chemical": "Chemické",
- "bucket": "Suché"
+ "flush": "Splachovacie",
+ "pitlatrine": "Latrína"
}
},
"tourism": {
},
"tracktype": {
"label": "Typ lesnej cesty",
- "placeholder": "Pevná, väčšinou pevná, mäkká...",
"options": {
"grade1": "Pevná: spevnený alebo silne skompaktnený povrch",
"grade2": "Väčšinou pevná: štrk zmiešaný s mäkkými materiálmi",
"grade3": "Vyvážená zmes tvrdých a mäkkých materiálov",
"grade4": "Väčšinou jemná: pôda/piesok/tráva s zmiešané s tvrdým materiálom",
"grade5": "Mäkká: pôda/piesok/tráva"
- }
+ },
+ "placeholder": "Pevná, väčšinou pevná, mäkká..."
},
"trail_visibility": {
"label": "Viditeľnosť trasy",
- "placeholder": "Výborná, dobrá, zlá...",
"options": {
+ "bad": "Zlá: bez značenia, chodník občas nepozorovateľný",
"excellent": "Výborná: jednoznačný chodník alebo časté značenie",
"good": "Dobrá: značenie viditeľné, občasne vyžaduje hľadanie",
- "intermediate": "Stredná: riedke značenie, chodník zväčša viditeľný",
- "bad": "Zlá: bez značenia, chodník občas nepozorovateľný",
"horrible": "Veľmi zlá: často bez chodníka, čiastočne vyžaduje orientačné zručnosti",
+ "intermediate": "Stredná: riedke značenie, chodník zväčša viditeľný",
"no": "Nie: bez chodníka, vyžaduje výborné orientačné zručnosti"
- }
+ },
+ "placeholder": "Výborná, dobrá, zlá..."
},
"trees": {
"label": "Stromy"
"water": {
"label": "Typ"
},
+ "water_point": {
+ "label": "Zdroj vody"
+ },
"waterway": {
"label": "Typ"
},
"name": "Stojan pre opravu bicyklov",
"terms": "stojan,oprava,bicykle,bicykel,reťaz,retaz,pumpa,hustilka,vzduch,koleso,kolesá,kolesa"
},
+ "amenity/biergarten": {
+ "name": "Záhradná piváreň",
+ "terms": "zahradna pivaren,pivnica,hostinec,krčma,krcma,vonkajšie posedenie,vonkajsie posedenie"
+ },
"amenity/boat_rental": {
"name": "Prenájom lodí",
"terms": "prenajom lodi,požičovňa lodí,pozicovna lodi,prenájom člnov,prenajom clnov,pozivocna clnov,požičovňa člnov, čln,cln,člny,clny,lode,skútre,skutre,vodné skútre,vodne skutre"
"name": "Reštaurácia",
"terms": "bar,kafetéria,kantýna,jedáleň,pizzeria,jedlo,rýchloobčerstvenie,fastfood,večera,reštaurácia,reštika,jedenie,kantyna,jedalen,rychloobcerstvenie,vecera,restauracia,restika"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Vyprázdňovanie karavánových toaliet",
+ "terms": "vyprazdnovanie karavanovych toaliet"
+ },
"amenity/school": {
"name": "Školský areál",
"terms": "Skolsky areal,skola,druzina"
"name": "Maják",
"terms": "majak,výstraha,vystraha"
},
+ "man_made/mast": {
+ "name": "Telekomunikačný stožiar",
+ "terms": "telekomunikacny stoziar,stlp,veza,veža,stĺp"
+ },
"man_made/observation": {
"name": "Výhliadková veža",
"terms": "vyhliadkova veza,veza,veža,výhliadka,vyhliadka"
},
+ "man_made/petroleum_well": {
+ "name": "Ropný vrt",
+ "terms": "ropny vrt,ropa"
+ },
"man_made/pier": {
"name": "Mólo",
"terms": "molo,stĺpy,stlpy,kotva,kotvenie,ukotvenie,lode,promenáda,promenada,lávka,lavka"
"name": "Potrubie",
"terms": "rúra,rura,rúry,rury,transport,vodovod,ropovod,plynovod,kanál,kanal,rozvod"
},
+ "man_made/silo": {
+ "name": "Silo",
+ "terms": "siláž,silaz,silazna veza,silážna veža"
+ },
+ "man_made/storage_tank": {
+ "name": "Zásobník",
+ "terms": "zasobnik,rezervoár,rezervoar,cisterna,nádrž,nadrz"
+ },
"man_made/survey_point": {
"name": "Triangulačný bod",
"terms": "triangulacny bod,nivelizacny bod,nivelizačný bod,nivelácia,nivelacia,referencny bod,referenčný bod"
"name": "Veľkomesto",
"terms": "velkomesto,mesto"
},
+ "place/farm": {
+ "name": "Farma",
+ "terms": "farma"
+ },
"place/hamlet": {
"name": "Osada",
"terms": "laz,kopanice,kopanica,samota,kolónia,kolonia"
"name": "Relácia",
"terms": "relacia,linka,trasa"
},
+ "roundabout": {
+ "name": "Kruhový objazd",
+ "terms": "kruhovy objazd, kruhac, kruháč, kruhová križovatka, kruhova krizovatka"
+ },
"route/ferry": {
"name": "Trajektová trasa",
"terms": "trajektova trasa,trasa trajektu,trajekt,linka"
"name": "Odvodňovací kanál",
"terms": "odvodnovaci kanal,kanal,jarok"
},
+ "waterway/fuel": {
+ "name": "Čerpacia stanica pre lode",
+ "terms": "cerpacia stanica pre lode,benzín,benzin,nafta,palivo"
+ },
"waterway/river": {
"name": "Rieka",
"terms": "riečka,potok,potúčik,potocik,bystrina"
"name": "Breh rieky",
"terms": "riečny breh,riecny breh,bok,strana,pobrežie,pobrezie,rieky,bok rieky,strana rieky"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Vyprázdnovanie lodných toaliet",
+ "terms": "vyprazdnovanie lodnych toaliet"
+ },
"waterway/stream": {
"name": "Potok",
"terms": "potok,potôčik,bystrina,riečka,kanál,potocik,riecka,kanal,pstruha"
"commit": {
"title": "Shrani spremembe",
"description_placeholder": "Kratek opis vaših sprememb",
- "message_label": "Povzetek sprememb",
"upload_explanation": "Spremembe, ki ji boste naložili, bodo vidne na vseh zemljevidih, ki uporabljajo podatke OpenStreetMap.",
"upload_explanation_with_user": "Spremembe, ki jih boste naložili kot {user}, bodo vidne na vseh zemljevidih, ki uporabljajo podatke OpenStreetMap.",
"save": "Shrani",
"title": "Shrani",
"help": "Shrani spremembe na OpenStreetMap, s čimer bodo vidne tudi ostalim uporabnikom.",
"no_changes": "Ni sprememb za shranjevanje.",
- "error": "Med shranjevnjem je prišlo do napake",
"uploading": "Prenašanje sprememb v OpenStreetMap.",
"unsaved_changes": "Nekatere spremembe še niso bile shranjene."
},
},
"help": {
"title": "Pomoč",
- "help": "# Pomoč\n\nTo je urejevalnik [OpenStreetMap](http://www.openstreetmap.org/)\nzemljevida sveta, ki je brezplačen in ga je mogoče urejati. Urejevalnik\nlahko uporabite za dodajanje in posodabljanje podatkov na vašem območju,\ns čimer bo ta odprtokoden in open-data zemljevid sveta boljši za vse uporabnike.\n\nSpremembe, ki jih boste izvedli na tem zemljevidu, bodo videli vsi uporabniki\nOpenStreetMap. Za urejanje zemljevida potrebujete [brezplačen OpenStreetMap račun]\n(https://www.openstreetmap.org/user/new).\n\nUrejevalnik [iD editor](http://ideditor.com/) je sodelovalen projekt, [izvorna\\nkoda je na voljo na GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Urejanje & shranjevanje\n\nUrejevalnik je narejen predvsem za delo na spletu, trenutno do njega dostopate\npreko spletne strani.\n\n### Izbiranje objektov\n\nObjekte na zemljevidu, kot so cesta ali POI izberete tako, da kliknete nanje\nna zemljevidu. Izbrani objekt se bo poudaril, odprla se bo plošča z informacijami\no objektu in pokazal se bo nabor ukazov, ki jih lahko izvedete na objektu.\n\nZa izbiro večih objektov držite pritisnjeno tipko 'Shift'. Medtem lahko s klikom\nizberete na želene objekte ali pa z miško narišete kvadrat, v katerem so objekti.\nTako se bodo označili vsi objekti v kvadratu.\n\n### Shranjevanje sprememb\n\nVse spremembe - npr. urejene ceste, stavbe, mesta - so shranjene lokalno (na vaš računalnik),\ndokler jih ne shranite na strežnik. Ne skrbite, če med urejanjem naredite napako,\nsaj lahko spremembe razveljavite s klikom na gumb 'razveljavi', lahko pa jih tudi \nponoviteand s klikom na gumb 'ponovi'.\n\nKo končate z urejanjem skupine objektov, npr. dela mesta, in boste z urejanjem\nnadaljevali na drugem območju ali skupini objektov, kliknite 'Shrani'.Nato se bo\nprikazal povzetek vaših sprememb, urejevalnik pa bo tudi preveril in opozoril,\nče bo s spremembami karkoli narobe.\n\nČe bo vse v redu, lahko dodate kratek komentar o opravljenih spremembah\nin še enkrat kliknete 'Shrani' za pošiljanje sprememb na\n[OpenStreetMap.org](http://www.openstreetmap.org/), kjer jih bodo vsi ostali \nuporabniki videli in kasneje lahko tudi nadgrajevali oz. izboljšali.\n\nČe ne morete dokončati urejanja v enem zamahu, lahko pustite urejevalnik odprt\nin se vrnete (na isti računalnik in isti brskalnik) - urejevalnik vam bo ponudil\nobnovitev vseh opravljenih, toda ne še na strežnih poslanih sprememb.\n",
"roads": "# Ceste\n\nS tem urejevalnikom lahko ceste ustvarjate, popravljate in jih brišete. Ceste so lahko vseh\ntipov: poti, avtoceste, kolovozi, kolesarske steze idr. - vsak pogosto prečkan del ceste\n\nnaj bi bil kartiran.\n\n### Izbiranje\n\nZa izbiranje ceste kliknite nanjo. Pokazal se bo obris ceste, ob njem pa\nmajhen meni z orodji in stranski meni z več informacijami o tej cesti.\n\n### Spreminjanje\n\nPogosto boste opazili ceste, ki se ne prekrivajo s sliko v ozadju,\nali z GPS sledjo. Te ceste lahko prilagodite tako, da so na pravilnem\nmestu.\n\nNajprej klinite na cesto, ki jo želite spremeniti. Cesta bo postala poudarjena in vzdolž\nnje se bodo prikazala vozlišča, ki jih lahko premaknete na pravo mesto. Če želite\ndodati nova vozlišča za bolj podroben potek ceste, dvokliknite na del ceste, ki\nše nima vozlišča, in pojavilo se bo novo vozlišče.\nČe se cesta dotika druge ceste, toda na zemljevidu ni pravilno povezana, \nlahko enega od njenih vozlišč premaknete na drugo cesto in ju tako\npovežete. Pravilno povezane ceste so pomembne za zemljevid\nin nujne za samodejno iskanje pot med različnimi kraji.\nS klikom na 'Premakni' ali s pritiskom tipke 'M' na tipkovnici lahko aktivirate orodje\nza premik celotne ceste naenkrat; premik je končan ob naslednjem kliku.\n### Odstranjevanje\nČe je potek ceste v celoti napačen - npr. ko cesta na satelitskem posnetku sploh ne obstaja\noz. še bolje, ko imate informacijo o tem iz prve roke - jo lahko izbrišete ter jo tako\nodstranite z zemljevida. Pri brisanju objektov bodite pozorni - \nkot pri ostalih načinih urejanja bodo posledice vidne vsakomur. Včasih so satelitski posnetki\nzastareli in morda zato kakšne ceste na njih še ni.\nCesto izbrišete tako, da najprej kliknete nanjo, nato pa kliknete na ikono za smetnjak ali\npa pritisnete tipko 'Izbriši'.\n\n### Creating\n\nSte opazili, da na zemljevidu manjka kakšna cesta? Za začetek risanja kliknite ikono 'Črta' \nlevo zgoraj v urejevalniku ali pa pritisnite tipko '2'.\nKliknite na zemljevid na začetek nove ceste. Če se cesta odcepi z že obstoječe ceste,\nzačnite s klikom na mesto, kjer se ločita.\nNato klikajte na točke vzdolž ceste v pravi smeri (glede na satelitske posnetke ali GPS)\nČe cesta, ki jo rišete, prečka drugo cesto, ju povežite s klikom na njuno križišče.\nKo končate, dvokliknite z miško ali na tipkovnici pritisnite tipko 'Return' ali 'Enter'.\n",
"imagery": "# Slikovni posnetki\n\nZračne/satelitske fotografije so pomemben vir za kartiranje. Kombinacija letalskih\nposnetkov, satelitski posnetki in brezplačni viri so dostopni v\nurejevalniku v meniju 'Nastavitve ozadja' na desni.\nZa prikaz so prednastavljen [Bing Maps](http://www.bing.com/maps/) satelitski posnetki,\na ob premikanju in povečevanju zemljevida se bodo prikazali tudi ostali razpoložljivi viri.\nV nekaterih državah, kot so ZDA, Francija ali Danska, so za posamezna območja na voljo tudi posnetki\nz zelo veliko prostorsko ločljivostjo.\nPosnetki so zaradi napak na strani ponudnika včasih zamaknjeni glede na zemljevid.\nČe vidite, da je več cest zamaknjenih glede na posnetek v ozadju,\ncest ne premikajte. Namesto tega lahko prilagodite posnetek tako, da se prekriva z\nobstoječimi podatki na zemljevidu; to storite s klikom na 'Popravi lego' na dnu\nuporabniškega vmesnika 'Nastavitve ozadja'.\n",
"fields": {
"access": {
"label": "Dostop",
- "placeholder": "Neznano",
- "types": {
- "access": "Splošno",
- "foot": "Peš",
- "motor_vehicle": "Motorna vozila",
- "bicycle": "Kolesarji",
- "horse": "Konji"
- },
"options": {
- "yes": {
- "title": "Dovoljeno",
- "description": "Dostopno po zakonu; služnostna pravica"
+ "designated": {
+ "description": "Dostop je dovoljen v skladu z znaki ali posebnimi krajevnimi zakoni",
+ "title": "Namembno"
+ },
+ "destination": {
+ "description": "Dostop je dovoljen samo za dostavo",
+ "title": "Za dostavo"
},
"no": {
- "title": "Prepovedano",
- "description": "Dostop za splošno javnosto NI dovoljen"
+ "description": "Dostop za splošno javnosto NI dovoljen",
+ "title": "Prepovedano"
},
"permissive": {
- "title": "Začasno dovoljen",
- "description": "Dostop je dovoljen začasno, dokler lastnik dovoljenja ne prekliče"
+ "description": "Dostop je dovoljen začasno, dokler lastnik dovoljenja ne prekliče",
+ "title": "Začasno dovoljen"
},
"private": {
- "title": "Zasebno",
- "description": "Dostop je dovoljen samo z osebnim dovoljenjem lastnika"
- },
- "designated": {
- "title": "Namembno",
- "description": "Dostop je dovoljen v skladu z znaki ali posebnimi krajevnimi zakoni"
+ "description": "Dostop je dovoljen samo z osebnim dovoljenjem lastnika",
+ "title": "Zasebno"
},
- "destination": {
- "title": "Za dostavo",
- "description": "Dostop je dovoljen samo za dostavo"
+ "yes": {
+ "description": "Dostopno po zakonu; služnostna pravica",
+ "title": "Dovoljeno"
}
+ },
+ "placeholder": "Neznano",
+ "types": {
+ "access": "Splošno",
+ "bicycle": "Kolesarji",
+ "foot": "Peš",
+ "horse": "Konji",
+ "motor_vehicle": "Motorna vozila"
}
},
"access_simple": {
"address": {
"label": "Naslov",
"placeholders": {
+ "city": "Mesto",
+ "country": "Država",
+ "district": "Okrožje",
+ "hamlet": "Zaselek",
"housename": "Hišno/domače ime",
"housenumber": "123",
- "street": "Ulica",
- "city": "Mesto",
- "postcode": "Poštna številka",
"place": "Kraj",
- "hamlet": "Zaselek",
- "suburb": "Predmestje",
- "subdistrict": "Okraj",
- "district": "Okrožje",
+ "postcode": "Poštna številka",
"province": "Pokrajina",
"state": "Zvezna država",
- "country": "Država"
+ "street": "Ulica",
+ "subdistrict": "Okraj",
+ "suburb": "Predmestje"
}
},
"admin_level": {
"aerialway/access": {
"label": "Dostop",
"options": {
+ "both": "Oboje",
"entry": "Vhod",
- "exit": "Izhod",
- "both": "Oboje"
+ "exit": "Izhod"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Dostop (poleti)",
"options": {
+ "both": "Oboje",
"entry": "Vhod",
- "exit": "Izhod",
- "both": "Oboje"
+ "exit": "Izhod"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Smer",
"options": {
- "N": "Sever",
"E": "Vzhod",
- "S": "Jug",
- "W": "Zahod",
- "NE": "Severovzhod",
- "SE": "Jugovzhod",
- "SW": "Jugozahod",
- "NW": "Severozahod",
- "NNE": "Sever-severovzhod",
"ENE": "Vzhod-severovzhod",
"ESE": "Vzhod-jugovzhod",
+ "N": "Sever",
+ "NE": "Severovzhod",
+ "NNE": "Sever-severovzhod",
+ "NNW": "Sever-severozahod",
+ "NW": "Severozahod",
+ "S": "Jug",
+ "SE": "Jugovzhod",
"SSE": "Jug-jugovzhod",
"SSW": "Jug-jugozahod",
- "WSW": "Zahod-jugozahod",
+ "SW": "Jugozahod",
+ "W": "Zahod",
"WNW": "Zahod-severozahod",
- "NNW": "Sever-severozahod"
+ "WSW": "Zahod-jugozahod"
}
},
"clock_direction": {
"label": "Smer",
"options": {
- "clockwise": "V smeri urinega kazalca",
- "anticlockwise": "Proti smeri urinega kazalca"
+ "anticlockwise": "Proti smeri urinega kazalca",
+ "clockwise": "V smeri urinega kazalca"
}
},
"collection_times": {
},
"electrified": {
"label": "Elektrifikacija",
- "placeholder": "Elektrificiran tir",
"options": {
"contact_line": "Kontaktni vod",
+ "no": "Ne",
"rail": "Prevodne tračnice",
- "yes": "Da (vrsta ni določena)",
- "no": "Ne"
- }
+ "yes": "Da (vrsta ni določena)"
+ },
+ "placeholder": "Elektrificiran tir"
},
"elevation": {
"label": "Nadmorska višina"
"label": "Vrsta",
"options": {
"pillar": "Nadzemni",
+ "pond": "Črpališče iz ribnika",
"underground": "Podzemni",
- "wall": "Zidni",
- "pond": "Črpališče iz ribnika"
+ "wall": "Zidni"
}
},
"fixme": {
"internet_access": {
"label": "Dostop do interneta",
"options": {
- "yes": "Da",
"no": "Ne",
- "wlan": "Wifi - brezžično",
+ "terminal": "Računalniški terminal",
"wired": "Žično",
- "terminal": "Računalniški terminal"
+ "wlan": "Wifi - brezžično",
+ "yes": "Da"
}
},
"lamp_type": {
},
"mtb/scale": {
"label": "Gorsko-kolesarska zahtevnost",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Trden konglomerat (prodniki)/zbita prst, brez ovir, široki zavoji",
"1": "1: Ponekod nestabilna podlaga, majhne ovire, široki zavoji",
"4": "4: Nestabilna podlaga ali večje skale, tvegano obračanje na prednjem kolesu",
"5": "5: Največja zahtevnost, večja območja skal, zemeljski plazovi, usadi",
"6": "6: Ni mogoče premagati na kolesu, razen za najbolj izurjene gorske kolesarje"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Zahtevnost po IMBA",
- "placeholder": "Nezahtevno, srednje zahtevno, zahtevno",
"options": {
"0": "Najlažje (bel krogec)",
"1": "Lahko (zelen krogec)",
"2": "Srednje zahtevno (moder kvadratek)",
"3": "Zahtevno (črn karo)",
"4": "Izjemno zahtevno (dvojni črn karo)"
- }
+ },
+ "placeholder": "Nezahtevno, srednje zahtevno, zahtevno"
},
"mtb/scale/uphill": {
"label": "Zahtevnost vzpona na kolesu",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Povprečen naklon <10%, prod/zbita prst, brez ovir",
"1": "1: Povprečen naklon <15%, prod/zbita prst, nekaj manjših ovir",
"3": "3: Povprečen naklon <25%, spremenljiva podlaga, kamenje do velikosti pesti, veje",
"4": "4: Povprečen naklon <30%, v slabem stanju, veliki kamni, veje",
"5": "5: Zelo strmo, kolo je večinoma potrebno potiskati oz. ga nositi"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Ime",
"oneway": {
"label": "Enosmerna",
"options": {
+ "no": "Ne",
"undefined": "Predpostavljeno: NE",
- "yes": "Da",
- "no": "Ne"
+ "yes": "Da"
}
},
"oneway_yes": {
"label": "Enosmerna",
"options": {
+ "no": "Ne",
"undefined": "Predpostavljeno: DA",
- "yes": "Da",
- "no": "Ne"
+ "yes": "Da"
}
},
"opening_hours": {
"parking": {
"label": "Vrsta",
"options": {
- "surface": "Na prostem",
- "multi-storey": "V več nadstropjih",
- "underground": "Podzemno",
- "sheds": "Samostoječa zasebna garaža",
"carports": "Nadstrešek",
"garage_boxes": "Garažni boks",
- "lane": "Pas za parkiranje"
+ "lane": "Pas za parkiranje",
+ "multi-storey": "V več nadstropjih",
+ "sheds": "Samostoječa zasebna garaža",
+ "surface": "Na prostem",
+ "underground": "Podzemno"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Zahtevnost",
- "placeholder": "Lahke, srednje zahtevne, zahtevne...",
"options": {
- "novice": "Za začetnike",
- "easy": "Lahka",
- "intermediate": "Srednje zahtevna",
"advanced": "Zahtevna",
+ "easy": "Lahka",
"expert": "Zelo zahtevna",
+ "extreme": "Izjemno zahtevna (za vzpon nujna uporaba plezalnih pripomočkov)",
"freeride": "Variantno smučanje - neteptana",
- "extreme": "Izjemno zahtevna (za vzpon nujna uporaba plezalnih pripomočkov)"
- }
+ "intermediate": "Srednje zahtevna",
+ "novice": "Za začetnike"
+ },
+ "placeholder": "Lahke, srednje zahtevne, zahtevne..."
},
"piste/grooming": {
"label": "Teptanje",
"options": {
- "classic": "Klasično",
- "mogul": "Grbine",
"backcountry": "Smučarsko pohodništvo",
+ "classic": "Klasično",
"classic+skating": "Tek na smučeh - klasična in drsalna tehnika",
+ "mogul": "Grbine",
"scooter": "Snežne sani",
"skating": "Tek na smučeh - drsalna tehnika"
}
"label": "Vrsta",
"options": {
"downhill": "Alpsko smučanje",
+ "hike": "Zimsko pohodništvo",
+ "ice_skate": "Drsanje",
"nordic": "Nordijsko smučanje",
+ "playground": "Igrišče",
"skitour": "Turno smučanje",
"sled": "Sankanje",
- "hike": "Zimsko pohodništvo",
"sleigh": "Snežna vprega",
- "ice_skate": "Drsanje",
- "snow_park": "Snežni park",
- "playground": "Igrišče"
+ "snow_park": "Snežni park"
}
},
"place": {
},
"sac_scale": {
"label": "Težavnost hoje",
- "placeholder": "Različne stopnje težavnosti poti...",
"options": {
- "hiking": "T1: Hiking",
- "mountain_hiking": "T2: Mountain Hiking",
- "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
"alpine_hiking": "T4: Alpine Hiking",
"demanding_alpine_hiking": "T5: Demanding Alpine Hiking",
- "difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
- }
+ "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
+ "difficult_alpine_hiking": "T6: Difficult Alpine Hiking",
+ "hiking": "T1: Hiking",
+ "mountain_hiking": "T2: Mountain Hiking"
+ },
+ "placeholder": "Različne stopnje težavnosti poti..."
},
"seasonal": {
"label": "Sezonskost"
},
"smoking": {
"label": "Kajenje",
- "placeholder": "Ne, ločeno, da...",
"options": {
- "no": "Prepovedano brez izjem",
- "separated": "Prostor za kadilce, ki ni ločen s pregrado",
+ "dedicated": "Namenjeno kadilcem.",
"isolated": "Prostor za kadilce, ki je ločen s pregrado",
+ "no": "Prepovedano brez izjem",
"outside": "Dovoljeno zunaj.",
- "yes": "Dovoljeno povsod.",
- "dedicated": "Namenjeno kadilcem."
- }
+ "separated": "Prostor za kadilce, ki ni ločen s pregrado",
+ "yes": "Dovoljeno povsod."
+ },
+ "placeholder": "Ne, ločeno, da..."
},
"smoothness": {
"label": "Gladkost",
- "placeholder": "Za rolerje, kolesa, terence ...",
"options": {
+ "bad": "Robustna kolesa: za treking kolo, avto, rikšo ipd.",
"excellent": "Ozka kolesca - tudi za rolerje, rolke ipd.",
"good": "Ozka kolesa: za cestno kolo ipd.",
+ "horrible": "Terenska vozila: za terenska vozila ipd.",
"intermediate": "Kolesa: za cestno kolo, invalidski voziček, skuter ipd.",
- "bad": "Robustna kolesa: za treking kolo, avto, rikšo ipd.",
"very_bad": "Visoko podvozje: za vozila z večjim odmikom od tal, lažje terence",
- "horrible": "Terenska vozila: za terenska vozila ipd.",
"very_horrible": "Posebna terenska vozila: traktor, štirikolesnik, tank, gorsko kolo"
- }
+ },
+ "placeholder": "Za rolerje, kolesa, terence ..."
},
"social_facility_for": {
"label": "Socialna ustanova - ciljna skupina",
},
"structure": {
"label": "Premostitveni objekt",
- "placeholder": "Neznano",
"options": {
"bridge": "Most",
- "tunnel": "Predor",
- "embankment": "Nasip",
"cutting": "Usek",
- "ford": "Plitvina"
- }
+ "embankment": "Nasip",
+ "ford": "Plitvina",
+ "tunnel": "Predor"
+ },
+ "placeholder": "Neznano"
},
"studio_type": {
"label": "Vrsta"
"toilets/disposal": {
"label": "Odstranjevanje odpadkov",
"options": {
- "flush": "Splakovanje",
- "pitlatrine": "Štrbunk",
+ "bucket": "Posoda",
"chemical": "Kemično",
- "bucket": "Posoda"
+ "flush": "Splakovanje",
+ "pitlatrine": "Štrbunk"
}
},
"tourism": {
},
"tracktype": {
"label": "Tip kolovoza",
- "placeholder": "Trdno, pretežno trdno, mehko...",
"options": {
"grade1": "Trdno: asfaltirano ali močno zbito vozišče",
"grade2": "Pretežno trdno: prodniki/kamni, pomešani z mehkejšim materialom",
"grade3": "Enakovredna zmes trdnega in mehkega materiala",
"grade4": "Pretežno mehko: prst/pesek/traka z dodatki tršega materiala",
"grade5": "Mehko: prst/pesek/trava"
- }
+ },
+ "placeholder": "Trdno, pretežno trdno, mehko..."
},
"trail_visibility": {
"label": "Vidnost poti",
- "placeholder": "Odlična, dobra, slaba...",
"options": {
+ "bad": "Slaba: ni oznak poti, pot ponekod ni vidna oz. je sploh ni",
"excellent": "Odlična: nedvoumen potek poti ali pa zelo dobro označena",
"good": "Dobra: vidne oznake poti, ponekod je lahko potrebno iskanje",
- "intermediate": "Srednja: le nekaj oznak poti, pot je večinoma vidna",
- "bad": "Slaba: ni oznak poti, pot ponekod ni vidna oz. je sploh ni",
"horrible": "Obupna: pogosto brezpotje, terja sposobnost orientacije",
+ "intermediate": "Srednja: le nekaj oznak poti, pot je večinoma vidna",
"no": "Ne: brezpotje, terja zelo dobro sposobnost orientacije"
- }
+ },
+ "placeholder": "Odlična, dobra, slaba..."
},
"trees": {
"label": "Drevesa"
+++ /dev/null
-{}
\ No newline at end of file
+++ /dev/null
-{}
\ No newline at end of file
+++ /dev/null
-{}
\ No newline at end of file
"commit": {
"title": "Сачувај измене",
"description_placeholder": "Кратак опис ваших доприноса",
- "message_label": "Предавање поруке",
"upload_explanation": "Промене које учитате ће бити видљиве на свим мапама које користе Опенстреетмап податке.",
"upload_explanation_with_user": "Промене које учитате као {user} ће бити видљиве на свим мапама које користе Опенстреетмап податке.",
"save": "Сачувај",
"title": "Сачувај",
"help": "Сачувајте измене на Опенстреетмапу, што их чини видљивим за друге кориснике.",
"no_changes": "Нема измена које треба сачувати.",
- "error": "Дошло је до грешке приликом чувања",
"uploading": "Учитавања измена на Опенстреетмап.",
"unsaved_changes": "Имате несачуваних измена"
},
"help_html": "Ваше измене би требало да се појаве у „стандардном“ слоју за неколико минута. За остале слојеви, и још неке могућности, може потрајати дуже (<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>детаљи</a>).\n"
},
"confirm": {
- "okay": "У реду"
+ "okay": "У реду",
+ "cancel": "Откажи"
},
"splash": {
"welcome": "Добродошли на iD, уређивач Опенстреетмапа ",
"fields": {
"access": {
"label": "Приступ",
- "placeholder": "Непознато",
- "types": {
- "access": "Општи",
- "foot": "Пешке",
- "motor_vehicle": "За моторна возила",
- "bicycle": "За бицикле",
- "horse": "За коње"
- },
"options": {
- "yes": {
- "title": "Дозвољен",
- "description": "Приступе дозвољен законом, правом проласка"
+ "designated": {
+ "description": "Приступ дозвољен само према знацима или одређеним локалним законима",
+ "title": "Наменски"
+ },
+ "destination": {
+ "description": "Приступ дозвољен само за пролазак до одредишта",
+ "title": "Одредиште"
},
"no": {
- "title": "Забрањен",
- "description": "Приступ није дозвољен за ширу јавност"
+ "description": "Приступ није дозвољен за ширу јавност",
+ "title": "Забрањен"
},
"permissive": {
- "title": "Пропустљив",
- "description": "Приступе дозвољен све док власник опозове дозволу"
+ "description": "Приступе дозвољен све док власник опозове дозволу",
+ "title": "Пропустљив"
},
"private": {
- "title": "Приватан",
- "description": "Приступ дозвољен само уз одобрење власника на индивидуалној основи"
+ "description": "Приступ дозвољен само уз одобрење власника на индивидуалној основи",
+ "title": "Приватан"
},
- "designated": {
- "title": "Наменски",
- "description": "Приступ дозвољен само према знацима или одређеним локалним законима"
- },
- "destination": {
- "title": "Одредиште",
- "description": "Приступ дозвољен само за пролазак до одредишта"
+ "yes": {
+ "description": "Приступе дозвољен законом, правом проласка",
+ "title": "Дозвољен"
}
+ },
+ "placeholder": "Непознато",
+ "types": {
+ "access": "Општи",
+ "bicycle": "За бицикле",
+ "foot": "Пешке",
+ "horse": "За коње",
+ "motor_vehicle": "За моторна возила"
}
},
"access_simple": {
"address": {
"label": "Адреса",
"placeholders": {
+ "city": "Град",
+ "country": "Држава",
+ "district": "Округ",
+ "hamlet": "Засеок",
"housename": "Назив куће",
"housenumber": "123",
- "street": "Улица",
- "city": "Град",
"place": "Место",
- "hamlet": "Засеок",
- "suburb": "Предграђе",
- "subdistrict": "Подокруг",
- "district": "Округ",
"province": "Провинција",
"state": "Савезна држава",
- "country": "Држава"
+ "street": "Улица",
+ "subdistrict": "Подокруг",
+ "suburb": "Предграђе"
}
},
"admin_level": {
"cardinal_direction": {
"label": "Правац",
"options": {
- "N": "Север",
"E": "Исток",
- "S": "Југ",
- "W": "Запад",
- "NE": "Североисток",
- "SE": "Југоисток",
- "SW": "Југозапад",
- "NW": "Северозапад",
- "NNE": "Север-северозапад",
"ENE": "Исток-североисток",
"ESE": "Исток-југоисток",
+ "N": "Север",
+ "NE": "Североисток",
+ "NNE": "Север-северозапад",
+ "NNW": "Север-северозапад",
+ "NW": "Северозапад",
+ "S": "Југ",
+ "SE": "Југоисток",
"SSE": "Југ-југоисток",
"SSW": "Југ-југозапад",
- "WSW": "Запад-југозапад",
+ "SW": "Југозапад",
+ "W": "Запад",
"WNW": "Запад-северозапад",
- "NNW": "Север-северозапад"
+ "WSW": "Запад-југозапад"
}
},
"clock_direction": {
"label": "Правац",
"options": {
- "clockwise": "У смеру казаљке на сату",
- "anticlockwise": "Супротно смеру казаљке на сату"
+ "anticlockwise": "Супротно смеру казаљке на сату",
+ "clockwise": "У смеру казаљке на сату"
}
},
"collection_times": {
"label": "Електрификација",
"options": {
"contact_line": "Контактна мрежа",
- "yes": "Да (неодређено)",
- "no": "Не"
+ "no": "Не",
+ "yes": "Да (неодређено)"
}
},
"elevation": {
"label": "Врста",
"options": {
"pillar": "Стуб/Надземни",
+ "pond": "Резервоар",
"underground": "Подземни",
- "wall": "Зид",
- "pond": "Резервоар"
+ "wall": "Зид"
}
},
"fixme": {
"internet_access": {
"label": "Приступ Интернету",
"options": {
- "yes": "Да",
"no": "Не",
- "wlan": "Бежични Интернет",
+ "terminal": "Терминал",
"wired": "Кабловски",
- "terminal": "Терминал"
+ "wlan": "Бежични Интернет",
+ "yes": "Да"
}
},
"lamp_type": {
"oneway": {
"label": "Једносмерни",
"options": {
- "yes": "Да",
- "no": "Не"
+ "no": "Не",
+ "yes": "Да"
}
},
"oneway_yes": {
"label": "Једносмерна",
"options": {
- "yes": "Да",
- "no": "Не"
+ "no": "Не",
+ "yes": "Да"
}
},
"opening_hours": {
"label": "Врста",
"options": {
"multi-storey": "Вишеспратни",
- "underground": "Подземни",
- "sheds": "Наткривени"
+ "sheds": "Наткривени",
+ "underground": "Подземни"
}
},
"phone": {
},
"structure": {
"label": "Грађевина",
- "placeholder": "Непознато",
"options": {
"bridge": "Мост",
- "tunnel": "Тунел",
+ "cutting": "Усек",
"embankment": "Насип",
- "cutting": "Усек"
- }
+ "tunnel": "Тунел"
+ },
+ "placeholder": "Непознато"
},
"studio_type": {
"label": "Врста"
"multiple": "Tagit bort {n} objekt."
},
"incomplete_relation": "Detta objekt kan inte raderas, då det inte är komplett hämtad.",
+ "part_of_relation": "Detta objekt kan inte raderas då det är del i en större relation. Du måste ta bort det från relationen först. ",
"connected_to_hidden": "Detta kan inte tas bort då det är kopplat till ett dolt objekt."
},
"add_member": {
"commit": {
"title": "Spara ändringar",
"description_placeholder": "Kort beskrivning av dina ändringar",
- "message_label": "Skicka meddelande",
+ "message_label": "Ändringskommentar",
"upload_explanation": "De redigeringar du bidrar med kommer att synas på alla kartor som använder OpenStreetMaps data.",
"upload_explanation_with_user": "De redigeringar du bidrar med som {user} kommer att synas på alla kartor som använder OpenStreetMaps data.",
"save": "Spara",
"list": "Ändrad av {users}",
"truncated_list": "Ändrad av {users} och {count} andra"
},
+ "infobox": {
+ "selected": "{n} vald(a)",
+ "geometry": "Geometri",
+ "closed": "sluten",
+ "center": "Centrum",
+ "perimeter": "Omkrets",
+ "length": "Längd",
+ "area": "Area",
+ "centroid": "Centrumpunkt",
+ "location": "Positionering",
+ "metric": "Metriskt",
+ "imperial": "Brittiskt"
+ },
+ "geometry": {
+ "point": "Punkt",
+ "vertex": "Hörn",
+ "line": "Linje",
+ "area": "area",
+ "relation": "relation"
+ },
"geocoder": {
"search": "Sök hela världen...",
"no_results_visible": "Inget hittades i visad kartyta",
"help": "Spara ändringar till OpenStreetMap så att andra användare kan se dem.",
"no_changes": "Inga ändringar att spara.",
"error": "Något gick fel vid sparandet",
+ "status_code": "Server returnerade statuskoden {code}",
"unknown_error_details": "Kontrollera att du är ansluten till Internet.",
"uploading": "Dina ändringar sparas nu till OpenStreetMap.",
- "unsaved_changes": "Du har icke-sparade ändringar."
+ "unsaved_changes": "Du har icke-sparade ändringar.",
+ "conflict": {
+ "header": "Lös motstridiga ändringar",
+ "count": "Konflikt {num} av {total}",
+ "previous": "< Föregående",
+ "next": "Nästa >",
+ "keep_local": "Behåll min",
+ "keep_remote": "Använd deras",
+ "restore": "Återställ",
+ "delete": "Låt vara borttagen",
+ "download_changes": "Eller ladda ner dina ändringar.",
+ "done": "Alla konflikter lösta!",
+ "help": "En annan användare har ändrat på samma objekt som du har ändrat.\nKlicka på vardera objekt nedan för ytterligare detaljer om respektive konflikt, och välj om dina eller\nden andra användarens ändringar ska behållas.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Detta objekt har tagits bort av {user}.",
+ "location": "Detta objekt har flyttats av både dig och {user}.",
+ "nodelist": "Nod har ändrats av både dig och {user}.",
+ "memberlist": "Relationsmedlem har ändrats av både dig och {user}.",
+ "tags": "Du ändrade taggen <b>{tag}</b> till \"{local}\" och {user} ändrade den till \"{remote}\"."
+ }
},
"success": {
"edited_osm": "Redigerat OSM!",
"help_html": "Dina ändringar bör synas på \"Standard\"-lagret innom några minuter. Andra lager, och vissa egenskaper kan ta längre tid. \n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>detaljer</a>).\n"
},
"confirm": {
- "okay": "Ok"
+ "okay": "Ok",
+ "cancel": "Avbryt"
},
"splash": {
"welcome": "Välkommen till iD OpenStreetMap-redigeraren",
},
"help": {
"title": "Hjälp",
- "help": "# Hjälp\n\nDetta är en redigerare för [OpenStreetMap](http://www.openstreetmap.org/), den\nfri och redigerbara världskartan. Du kan använda den för att lägga till och uppdatera\ndata i ditt närområde, allt för att ytterligare förbättra en världskarta för alla baserad på öppen källkod och data.\n\nÄndringar du gör i den här kartan kommer att visas för alla som använder\nOpenStreetMap. För att göra en ändring behöver du ett\n[gratis OpenStreetMap-konto](https://www.openstreetmap.org/user/new).\n\n[iD editor](http://ideditor.com/) är ett samarbetsprojekt med [källkodkod \ntillgänglig på GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Hjälp\n\nDetta är en redigerare för [OpenStreetMap](http://www.openstreetmap.org/), \nen gratis och redigerbar karta över världen. Du kan använda den för att lägga till och ändra \ndata i ditt område, allt för att göra en världsomspännande karta baserad på \nöppen källkod och öppen data bättre för alla.\n\nRedigeringar du gör på kartan kommer att visas för alla som använder \nOpenStreetMap. För att göra en redigering måste du\n[log in](https://www.openstreetmap.org/login).\n\n[iD editor](http://ideditor.com/) är ett gemensammt projekt med [källkod \ntillgänglig på GitHub](https://github.com/openstreetmap/iD).\n",
"editing_saving": "# Redigera & spara\n\nDenna redigerare är designad att främst fungera online, och du använder den via en webbsida just nu.\n\n### Välj objekt\n\nFör att välja ett kartobjekt, t.ex. en väg eller en punkt, klicka på den på kartan. Detta kommer att markera det valda objektet, öppna en panel med detaljer om det, och visa en meny med saker du kan göra med det.\n\nFör att välja flera objekt, håll ner Skift-tangenten. Klicka sedan på objekten du vill välja eller dra på kartan för att rita en rektangel. Detta kommer att rita en ruta och markera punkterna inuti den.\n\n### Spara redigeringar\n\nNär du gör ändringar som att ändra på en väg, byggnad eller plats är detta sparat lokalt fram tills att du spara det på servern. Oroa dig inte om du gör ett misstag, du kan alltid ångra en ändring genom att klicka på Ånga-knappen och göra om din förändring genom att klicka på Gör om-knappen.\n\nKlicka på Spara för att slutföra en grupp att förändringar, t.ex. om du fullfört ett område i en stad och vill börja ändra i ett annat område. Du får möjlighet att granska vad du gjort och redigeraren ger dig hjälpsamma förslag och varningar om någon ändring inte verka korrekt.\n\nOm allt ser bra ut kan du ange en kort kommentar som förklarar vad du gjort och sedan klicka på Spara igen för att skicka iväg ändringarna till [OpenStreetMap.org](http://www.openstreetmap.org/) där de blir synliga för alla andra användare och tillgängliga för andra att bygga sina förbättringar på.\n\nOm du inte kan slutföra din ändring på en gång kan du lämna redigeringsfönstret öppet och komma tillbaka (i samma webbläsare på samma dator) och redigeringsprogrammet kommer att ge dig möjlighet att återställa ditt arbete.\n",
"roads": "# Vägar\n\nDu kan skapa, fixa och ta bort vägar med denna redigerare. Vägar kan vara alla typer av: stigar, bilvägar, spår, cykelvägar m.m - alla välanvända segment ska mappas.\n\n### Markering\n\nKlicka på en väg för att välja den. En markering blir då synlig tillsammans med en liten verktygsmeny på kartan och ett sidofällt visar mer information om vägen.\n\n### Modifiering\n\nOfta ser du vägar som inte är justerade till bakgrundsbilden eller till ett GPS-spår. Du kan justera dessa vägar så att de är på korrekt plats.\n\nKlicka först på vägen du vill ändra. Detta kommer att markera den och visa kontrollpunkt längst den som du kan dra i för att justera den. Om du vill lägga till en ny kontrollpunkt för högre detaljrikedom, dubbelklicka på en del av vägen utan en punkt så kommer en kontrollpunkt läggas till.\n\nOm vägen är ansluten till en annan väg, men är inte det på kartan, kan du dra en av dess kontrollpunkt till den andra vägen för att koppla dem tillsammans. Att vägarna är kopplade till varandra är viktigt för kartan och avgörande för att kunna ge korrekta körinstruktioner.\n\nDu kan också klicka på verktyget 'Flytta' eller trycka på tangenten 'M' på tangentbordet för att flytta en hel väg på en gång, och sedan klicka igen för att spara flytten.\n\n### Borttagning\n\nOm hela vägen är helt fel - du kan se att den inte existerar på satellitbilderna och har helst bekräftat i verkligheten att den inte finns - kan du ta bort den, vilket tar bort den från kartan. Var försiktigt när du ta bort objekt - precis som vi all redigering kan alla se resultatet och satellitbilderna är oftast gamla, så vägen kan helt enkelt vara nybyggd.\n\nDu kan ta bort en väg genom att klicka på den för att markera den och sedan klicka på ikonen soptunna eller klicka på knappen 'Delete' på tangentbordet.\n\n### Skapa\n\nHittat någonstans att det borde finnas en väg där de inte finns en? Klicka på ikonen 'Linje' högst upp till vänster i redigeringsfönstret eller klicka på knappen '2' på tangentbordet för att börja rita en linje.\n\nKlicka på början av vägen på kartan för att påbörja ritningen. Om vägen viker av från en existerande väg, starta genom att klicka där de ansluter till varandra. \n\nKlicka sedan på punkter längst vägen så att den följer vägens sträckning enligt satellitbilder eller GPS-spår. Om vägen du ritar korsar en annan väg, anslut dem tillsammans genom att klicka där de korsar. När du är klar med att rita in vägen, dubbelklicka eller tryck 'Enter' på tangentbordet.\n",
"gps": "# GPS\n\nGPS-data är den mest tillförlitliga källan för data till OpenStreetMap. Denna redigeraren stöder lokala spår - .gpx-filer på din lokala dator. Du kan samla in denna typ av GPS-spår med ett antal olika appar till din smartphone eller en GPS-enhet.\n\nFör information om du du gör en GPS-uppmätning, läs [Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/).\n\nFör att använda ett GPX-spår för att kartlägga, dra och släpp GPX-filen på kartredigeraren. Om det accepteras kommer det att läggas till på kartan som en ljuslila linje. Klicka på menyn Kartdata till höger för att aktivera, avaktivera eller zooma in till detta nya GPX-skapade lager.\n\nGPX-spåret laddas inte direkt upp till OpenStreetMap - bästa sätet att använda det är att rita på kartan och använda det som en guide för att lägga till ny information, men också för att [ladda upp det till OpenStreetMap] (http://www.openstreetmap.org/trace/create) så att andra kan använda det. \n",
"fields": {
"access": {
"label": "Tillgång",
- "placeholder": "Okänt",
- "types": {
- "access": "Generell",
- "foot": "Fotgängare",
- "motor_vehicle": "Motorfordon",
- "bicycle": "Cyklar",
- "horse": "Hästar"
- },
"options": {
- "yes": {
- "title": "Tillåtna",
- "description": "Tillträde är tillåtet enligt lag"
+ "designated": {
+ "description": "Åtkomst tillåten enligt skyltar eller specifika lokala lagar",
+ "title": "Föredragen"
+ },
+ "destination": {
+ "description": "Åtkomst tillåten endast för att nå en destination",
+ "title": "Destination"
},
"no": {
- "title": "Förbjudet",
- "description": "Tillträde ej tillåten för allmänheten"
+ "description": "Tillträde ej tillåten för allmänheten",
+ "title": "Förbjudet"
},
"permissive": {
- "title": "Påbjuden",
- "description": "Tillträde tillåten fram till dess ägare återkallar tillståndet"
+ "description": "Tillträde tillåten fram till dess ägare återkallar tillståndet",
+ "title": "Påbjuden"
},
"private": {
- "title": "Privat",
- "description": "Tillträde tillåten endast med tillstånd av ägaren på individuell basis"
+ "description": "Tillträde tillåten endast med tillstånd av ägaren på individuell basis",
+ "title": "Privat"
},
- "designated": {
- "title": "Föredragen",
- "description": "Åtkomst tillåten enligt skyltar eller specifika lokala lagar"
- },
- "destination": {
- "title": "Destination",
- "description": "Åtkomst tillåten endast för att nå en destination"
+ "yes": {
+ "description": "Tillträde är tillåtet enligt lag",
+ "title": "Tillåtna"
}
+ },
+ "placeholder": "Okänt",
+ "types": {
+ "access": "Generell",
+ "bicycle": "Cyklar",
+ "foot": "Fotgängare",
+ "horse": "Hästar",
+ "motor_vehicle": "Motorfordon"
}
},
"access_simple": {
"address": {
"label": "Adress",
"placeholders": {
+ "city": "Stad",
+ "country": "Land",
+ "district": "Distrikt",
+ "hamlet": "Småort",
"housename": "Husnamn",
"housenumber": "123",
- "street": "Gata",
- "city": "Stad",
- "postcode": "Postnummer",
"place": "Plats",
- "hamlet": "Småort",
- "suburb": "Stadsdel",
- "subdistrict": "Deldistrikt",
- "district": "Distrikt",
+ "postcode": "Postnummer",
"province": "Provins",
"state": "Stat",
- "country": "Land"
+ "street": "Gata",
+ "subdistrict": "Deldistrikt",
+ "suburb": "Stadsdel"
}
},
"admin_level": {
"aerialway/access": {
"label": "Tillgång",
"options": {
+ "both": "Båda",
"entry": "Ingång",
- "exit": "Utgång",
- "both": "Båda"
+ "exit": "Utgång"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Tillgång (sommar)",
"options": {
+ "both": "Båda",
"entry": "Ingång",
- "exit": "Utgång",
- "both": "Båda"
+ "exit": "Utgång"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Riktning",
"options": {
- "N": "Norr",
"E": "Öster",
- "S": "Söder",
- "W": "Väster",
- "NE": "Nordost",
- "SE": "Sydost",
- "SW": "Sydväst",
- "NW": "Nordväst",
- "NNE": "Nordnordost",
"ENE": "Ostnordost",
"ESE": "Ostsydost",
+ "N": "Norr",
+ "NE": "Nordost",
+ "NNE": "Nordnordost",
+ "NNW": "Nordnordväst",
+ "NW": "Nordväst",
+ "S": "Söder",
+ "SE": "Sydost",
"SSE": "Sydsydost",
"SSW": "Sydsydväst",
- "WSW": "Västsydväst",
+ "SW": "Sydväst",
+ "W": "Väster",
"WNW": "Västnordväst",
- "NNW": "Nordnordväst"
+ "WSW": "Västsydväst"
}
},
"clock_direction": {
"label": "Riktning",
"options": {
- "clockwise": "Medsols",
- "anticlockwise": "Motsols"
+ "anticlockwise": "Motsols",
+ "clockwise": "Medsols"
}
},
"collection_times": {
"construction": {
"label": "Typ"
},
+ "content": {
+ "label": "Innehåll"
+ },
"country": {
"label": "Land"
},
"description": {
"label": "Beskrivning"
},
+ "drive_through": {
+ "label": "Genomkörning (Drive-through)"
+ },
"electrified": {
"label": "Elförsörjning",
- "placeholder": "Kontaktledning, elektrifierad räls...",
"options": {
"contact_line": "Kontaktledning",
+ "no": "Nej",
"rail": "Elektrifierad räls",
- "yes": "Ja (ospecificerad)",
- "no": "Nej"
- }
+ "yes": "Ja (ospecificerad)"
+ },
+ "placeholder": "Kontaktledning, elektrifierad räls..."
},
"elevation": {
"label": "Höjd"
"label": "Typ",
"options": {
"pillar": "Stolpe/Ovan jord",
+ "pond": "Damm",
"underground": "Underjordisk",
- "wall": "Vägg",
- "pond": "Damm"
+ "wall": "Vägg"
}
},
"fixme": {
},
"gender": {
"label": "Kön",
- "placeholder": "Okänt",
"options": {
- "male": "Man",
"female": "Kvinna",
+ "male": "Man",
"unisex": "Unisex"
- }
+ },
+ "placeholder": "Okänt"
},
"generator/method": {
"label": "Metod"
"incline": {
"label": "Lutning"
},
+ "incline_steps": {
+ "label": "Lutning",
+ "options": {
+ "down": "Ner",
+ "up": "Upp"
+ }
+ },
"information": {
"label": "Typ"
},
"internet_access": {
"label": "Internetaccess",
"options": {
- "yes": "Ja",
"no": "Nej",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Trådbunden",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Ja"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Lövcykel",
"options": {
- "evergreen": "Vintergröna",
"deciduous": "Lövfällande",
- "semi_evergreen": "Delvist vintergröna",
+ "evergreen": "Vintergröna",
+ "mixed": "Mixat",
"semi_deciduous": "Delvist lövfällande",
- "mixed": "Mixat"
+ "semi_evergreen": "Delvist vintergröna"
}
},
"leaf_type": {
"label": "Lövtyp",
"options": {
"broadleaved": "Löv",
- "needleleaved": "Barr",
+ "leafless": "Utan löv",
"mixed": "Blandat",
- "leafless": "Utan löv"
+ "needleleaved": "Barr"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Mountainbike-svårighet",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Fast grus/packad jord, inga hinder, breda kurvor",
"1": "1: Delvis löst underlag, små hinder, breda kurvor",
"4": "4: löst underlag eller stenblock, farliga hårnålar",
"5": "5: Maximal svårighet, blockfält, jordskred",
"6": "6: Inte körbar förutom för de allra bästa mountainbikecyklisterna"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Svårighetsgrad enligt IMBA",
- "placeholder": "Enkel, medel, svår...",
"options": {
"0": "Enklast (vita cirkel)",
"1": "Enkel (gröna cirkel)",
"2": "Medium (blå fyrkant)",
"3": "Svår (svart diamant)",
"4": "Extremt svårt (dubbel svart diamant)"
- }
+ },
+ "placeholder": "Enkel, medel, svår..."
},
"mtb/scale/uphill": {
"label": "Mountainbike svårighetsgrad uppför",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Genomsnittlig lutning <10%, grus/packad jord, inga hinder",
"1": "1: Genomsnittlig lutning <15%, grus/packad jord, få små hinder",
"3": "3: Genomsnittlig lutning <25%, varierande underlag, stena/grenar stora som en knytnäve",
"4": "4: Genomsnittlig lutning <30%, dåliga förutsättningar, stora stena/grenar",
"5": "5: Mycket brant, cykel måste i regel skjutas eller bäras"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Namn",
"oneway": {
"label": "Enkelriktat",
"options": {
+ "no": "Nej",
"undefined": "Förväntas vara Nej",
- "yes": "Ja",
- "no": "Nej"
+ "yes": "Ja"
}
},
"oneway_yes": {
"label": "Enkelriktat",
"options": {
+ "no": "Nej",
"undefined": "Förväntas vara Ja",
- "yes": "Ja",
- "no": "Nej"
+ "yes": "Ja"
}
},
"opening_hours": {
"parking": {
"label": "Typ",
"options": {
- "surface": "Yta",
- "multi-storey": "Flera våningar",
- "underground": "Underjordisk",
- "sheds": "Skjul",
"carports": "Carportar",
"garage_boxes": "Garageboxar",
- "lane": "Fickparkering"
+ "lane": "Fickparkering",
+ "multi-storey": "Flera våningar",
+ "sheds": "Skjul",
+ "surface": "Yta",
+ "underground": "Underjordisk"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Svårighetsgrad",
- "placeholder": "Lätt, Medel, Avancerad...",
"options": {
- "novice": "Nybörjare (undervisning)",
- "easy": "Enkel (grön cirkel)",
- "intermediate": "Medel (blå fyrkant)",
"advanced": "Avancerad (svart diamant)",
+ "easy": "Enkel (grön cirkel)",
"expert": "Expert (dubbel svart diamant)",
+ "extreme": "Extrem (klättringsutrustning krävs)",
"freeride": "Friåkning (offpist)",
- "extreme": "Extrem (klättringsutrustning krävs)"
- }
+ "intermediate": "Medel (blå fyrkant)",
+ "novice": "Nybörjare (undervisning)"
+ },
+ "placeholder": "Lätt, Medel, Avancerad..."
},
"piste/grooming": {
"label": "Stil",
"options": {
- "classic": "Klassisk",
- "mogul": "Puckelpist",
"backcountry": "Off-pist",
+ "classic": "Klassisk",
"classic+skating": "Klassisk och skating",
+ "mogul": "Puckelpist",
"scooter": "Scooter/Snöskoter",
"skating": "Skating"
}
"label": "Typ",
"options": {
"downhill": "Utförsåkning",
+ "hike": "Vandringsled",
+ "ice_skate": "Skridskoåkning",
"nordic": "Längdskidåkning",
+ "playground": "Lekplats",
"skitour": "Turåkning",
"sled": "Pulkabacke",
- "hike": "Vandringsled",
"sleigh": "Slädåkning ",
- "ice_skate": "Skridskoåkning",
- "snow_park": "Snöpark",
- "playground": "Lekplats"
+ "snow_park": "Snöpark"
}
},
"place": {
"power": {
"label": "Typ"
},
+ "power_supply": {
+ "label": "Strömförsörjning"
+ },
"railway": {
"label": "Typ"
},
},
"sac_scale": {
"label": "Svårighetsgrad",
- "placeholder": "Bergsvandring, alpin vandring",
"options": {
- "hiking": "T1: Vandring",
- "mountain_hiking": "T2: Bergsvandring",
- "demanding_mountain_hiking": "T3: Krävande bergsvandring",
"alpine_hiking": "T4: Alpin vandring",
"demanding_alpine_hiking": "T5: Krävande alpin vandring",
- "difficult_alpine_hiking": "T6: Svår alpin vandring"
- }
+ "demanding_mountain_hiking": "T3: Krävande bergsvandring",
+ "difficult_alpine_hiking": "T6: Svår alpin vandring",
+ "hiking": "T1: Vandring",
+ "mountain_hiking": "T2: Bergsvandring"
+ },
+ "placeholder": "Bergsvandring, alpin vandring"
+ },
+ "sanitary_dump_station": {
+ "label": "Latrintömning "
},
"seasonal": {
"label": "Säsongsöppen"
"service": {
"label": "Typ"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Kedjebrytare",
"options": {
+ "no": "Nej",
"undefined": "Förväntas vara Nej",
- "yes": "Ja",
- "no": "Nej"
+ "yes": "Ja"
}
},
"service/bicycle/pump": {
"label": "Cykelpump",
"options": {
+ "no": "Nej",
"undefined": "Förväntas vara Nej",
- "yes": "Ja",
- "no": "Nej"
+ "yes": "Ja"
+ }
+ },
+ "service_rail": {
+ "label": "Användningsområde ",
+ "options": {
+ "crossover": "Växelförbindelse",
+ "siding": "Sidospår",
+ "spur": "Industrispår",
+ "yard": "Bangård"
}
},
"shelter": {
},
"smoking": {
"label": "Rökning",
- "placeholder": "Nej, separat, ja...",
"options": {
- "no": "Rökning ej tillåtet",
- "separated": "I rökområde, ej fysiskt separerat",
+ "dedicated": "Dedikerat för rökare (t.ex. rökklubb)",
"isolated": "I rökområde, fysiskt separerat",
+ "no": "Rökning ej tillåtet",
"outside": "Tillåtet utomhus",
- "yes": "Tillåtet överallt",
- "dedicated": "Dedikerat för rökare (t.ex. rökklubb)"
- }
+ "separated": "I rökområde, ej fysiskt separerat",
+ "yes": "Tillåtet överallt"
+ },
+ "placeholder": "Nej, separat, ja..."
},
"smoothness": {
"label": "Jämnhet",
- "placeholder": "Tunna hjul, hjul, terräng...",
"options": {
+ "bad": "Robusta hjul: trekkingcykel, bil, riksha",
"excellent": "Tunna rullar: rollerblade, skateboard",
"good": "Tunna Hjul: racercykel",
+ "horrible": "Terräng: tunga terrängfordon",
+ "impassable": "Oframkomligt / Inga hjulfordon",
"intermediate": "Hjul: cykel, rullstol, scooter",
- "bad": "Robusta hjul: trekkingcykel, bil, riksha",
"very_bad": "Hög frigång: lätta terrängfordon",
- "horrible": "Terräng: tunga terrängfordon",
- "very_horrible": "Specialiserade för terräng: traktor, fyrhjuling",
- "impassable": "Oframkomligt / Inga hjulfordon"
- }
+ "very_horrible": "Specialiserade för terräng: traktor, fyrhjuling"
+ },
+ "placeholder": "Tunna hjul, hjul, terräng..."
},
"social_facility_for": {
"label": "Människohjälp",
},
"structure": {
"label": "Struktur",
- "placeholder": "Okänt",
"options": {
"bridge": "Bro",
- "tunnel": "Tunnel",
- "embankment": "Vägbank",
"cutting": "Vägsnitt",
- "ford": "Vadställe"
- }
+ "embankment": "Vägbank",
+ "ford": "Vadställe",
+ "tunnel": "Tunnel"
+ },
+ "placeholder": "Okänt"
},
"studio_type": {
"label": "Typ"
},
"takeaway": {
"label": "Hämtmat",
- "placeholder": "Ja, nej, enbart hämtmat",
"options": {
- "yes": "Ja",
"no": "Nej",
- "only": "Enbart hämtmat"
- }
+ "only": "Enbart hämtmat",
+ "yes": "Ja"
+ },
+ "placeholder": "Ja, nej, enbart hämtmat"
},
"toilets/disposal": {
"label": "Omhändertagande",
"options": {
- "flush": "Spola",
- "pitlatrine": "Grop/Latrin",
+ "bucket": "Behållare",
"chemical": "Kemisk",
- "bucket": "Behållare"
+ "flush": "Spola",
+ "pitlatrine": "Grop/Latrin"
}
},
"tourism": {
},
"tracktype": {
"label": "Typ av bruksväg",
- "placeholder": "Fast, Mestadels fast, Mjuk ...",
"options": {
"grade1": "Fast: asfalterad eller kraftigt packad hård yta",
"grade2": "Mestadels fast: grus/sten med inslag av mjukt material",
"grade3": "Jämn blandning av hårda och mjuka material",
"grade4": "Mestadels mjukt: jord/sand/gräs med inslag av hårt material",
"grade5": "Mjukt: jord/sand/gräs"
- }
+ },
+ "placeholder": "Fast, Mestadels fast, Mjuk ..."
},
"trail_visibility": {
"label": "Synlighet",
- "placeholder": "Utmärkt, bra, dåligt...",
"options": {
+ "bad": "Dåligt: inga markörer, stig ibland osynlig/stiglös",
"excellent": "Utmärkt: Tydlig väg eller markörer överallt",
"good": "Bra: markörer synliga men ibland svåra att hitta",
- "intermediate": "Medel: få markörer, stig mestadels synliga",
- "bad": "Dåligt: inga markörer, stig ibland osynlig/stiglös",
"horrible": "Hemsk: ofta stiglös, en del orienteringskunskaper krävs",
+ "intermediate": "Medel: få markörer, stig mestadels synliga",
"no": "Ingen: stiglös, utmärkta orienteringskunskaper krävs"
- }
+ },
+ "placeholder": "Utmärkt, bra, dåligt..."
},
"trees": {
"label": "Träd"
"water": {
"label": "Typ"
},
+ "water_point": {
+ "label": "Vattenpåfyllning"
+ },
"waterway": {
"label": "Typ"
},
"name": "Station för cykelreparation ",
"terms": "Cykelreparation, kedjebrytare, cykelpump, tryckluft, pumpstation, cykel, "
},
+ "amenity/biergarten": {
+ "name": "Ölträdgård",
+ "terms": "ölträdgård, Biergarten, uteservering,ölcafé, utecafé, trädgårdspub"
+ },
"amenity/boat_rental": {
"name": "Båtuthyrning",
"terms": "Båtuthyrning, båtlån, båtleasing, lånebåt, hyrbåt"
"name": "Restaurang",
"terms": "Restaurang, matservering, matställe, servering, restauration, näringsställe, grillbar, bar, krog, värdshus, pub, bodega, brasserie, rotisseri, pizzeria, kafé, cafeteria, sylta"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Latrintömning"
+ },
"amenity/school": {
"name": "Skolområde",
"terms": "Skolgård, skolområde, Campus, universitetsområde, högskoleområde, universitet, högskola"
"terms": "Byggarbetsplats, bygge, Byggnad under konstruktion, Byggnad under uppförande, byggarbete, byggnation, byggnadsplats"
},
"landuse/farm": {
- "name": "Gård",
- "terms": "Bondgård, gård, jordbruk, lantbruk, lantegendom, lantgård"
+ "name": "Åkermark",
+ "terms": "Åker, åkerjord, åkerfält, fält, gärde, teg, åkerlapp, inäga, odling, odlingsfält, lantbruk"
},
"landuse/farmland": {
"name": "Åkermark",
"name": "Relation",
"terms": "Relation, relaterat, förbindelse, förhållande, samband, anknytning, koppling, kontext"
},
+ "roundabout": {
+ "name": "Rondell",
+ "terms": "Rondell, cirkulationsplats, trafikrondell"
+ },
"route/ferry": {
"name": "Färjerutt",
"terms": "Färjerutt, båtrutt, rutt, färjelinje, båtlinje, färja, båt i linjetrafik"
},
"fields": {
"access": {
- "placeholder": "அறியப்படவில்லை",
- "types": {
- "horse": "குதிரைகள்"
- },
"options": {
- "yes": {
- "title": "அனுமதிக்கப்படுகிறது"
- },
"private": {
"title": "தனியார்"
+ },
+ "yes": {
+ "title": "அனுமதிக்கப்படுகிறது"
}
+ },
+ "placeholder": "அறியப்படவில்லை",
+ "types": {
+ "horse": "குதிரைகள்"
}
},
"address": {
"label": "முகவரி",
"placeholders": {
- "street": "தெரு",
- "city": "மாநகரம்"
+ "city": "மாநகரம்",
+ "street": "தெரு"
}
},
"aerialway": {
"commit": {
"title": "మార్పులను భద్రపరచు",
"description_placeholder": "మీ మార్పులకు టూకీ వివరణ",
- "message_label": "మార్పుని తెలిపే సందేశం",
"upload_explanation": "మీరు ఎక్కించే మార్పులు ఓపెన్స్ట్రీట్మ్యాప్ డేటాను వాడే పటాలన్నింటిలోనూ కనిపిస్తాయి.",
"save": "భద్రపరచు",
"cancel": "రద్దుచేయి",
"save": {
"title": "భద్రపరచు",
"no_changes": "భద్రపరచాల్సిన మార్పులేమీ లేవు.",
- "error": "భద్రపరచడంలో పొరపాటు జరిగింది",
"unsaved_changes": "భద్రపరచని మార్పులు ఉన్నాయి"
},
"success": {
"presets": {
"fields": {
"access": {
- "types": {
- "access": "సాధారణం",
- "bicycle": "సైకిళ్ళు",
- "horse": "గుర్రాలు"
- },
"options": {
"destination": {
"title": "గమ్యం"
}
+ },
+ "types": {
+ "access": "సాధారణం",
+ "bicycle": "సైకిళ్ళు",
+ "horse": "గుర్రాలు"
}
},
"address": {
"label": "చిరునామా",
"placeholders": {
- "street": "వీధి",
- "city": "నగరం"
+ "city": "నగరం",
+ "street": "వీధి"
}
},
"aeroway": {
"commit": {
"title": "I-save ang mga binago.",
"description_placeholder": "Maikling paglalarawan ng iyong mga ambag o edits",
- "message_label": "Mag-commit mensahe",
"upload_explanation": "Ang mga pagbabagong na-upload ay makikita sa lahat ng mapang gumagamit ng datos ng OpenStreetMap.",
"upload_explanation_with_user": "Ang mga pagbabagong na-upload bilang {user} ay makikita sa lahat ng mapang gumagamit ng datos ng OpenStreetMap.",
"save": "I-save",
"incomplete": "<not downloaded>",
"feature_list": "Mag-hanap ng \"feature\"",
"edit": "I-edit ang \"feature\"",
+ "check": {
+ "yes": "Oo",
+ "no": "Hindi"
+ },
"none": "Wala",
"node": "Node",
"way": "Way",
"fix_misalignment": "Ayusin ang pagkakahanay ng \"imagery\"",
"reset": "I-reset"
},
+ "feature": {
+ "others": {
+ "description": "Iba pa"
+ }
+ },
"restore": {
"heading": "Mayroon kang hindi na-save ng mga pagbabago",
"description": "Ibig mo bang ibalik ang mga hindi na-save na pagbabago mula sa isang nakaraang session sa pag-edit?",
"title": "I-save",
"help": "I-save ang mga pagbabago sa OpenStreetMap upang makita ng ibang gumagamit ng datos.",
"no_changes": "Walang mga pagbabago upang i-save.",
- "error": "May error habang sinusubukang i-save",
"uploading": "Ina-upload ang mga pagbabago sa OpenStreetMap.",
"unsaved_changes": "Mayroon kang hindi na-save ng mga pagbabago"
},
},
"help": {
"title": "Tulong",
- "help": "# Help\n\nIto ay isang editor para sa [OpenStreetMap] (http://www.openstreetmap.org/), isang libre at maaaring i-edit na mapa ng mundo. Maaari mo itong gamitin upang idagdag at i-update ang iyong lugar, sa paggawa ng isang open-source at open-data na mapa ng mundo para magamit ng lahat.\n\nAng pag-edit na gagawin mo sa mapang ito ay makikita ng lahat ng gumagamit OpenStreetMap. Upang makapag-edit, kakailanganin mo ng [OpenStreetMap account] (https://www.openstreetmap.org/user/new). \n\nAng [iD editor] (http://ideditor.com/) ay isang collaborative proyekto, ang [source code ay matatagpuan sa GitHub] (https://github.com/openstreetmap/iD).\n",
"editing_saving": "### Pag-edit & Saving\n\nEditor na ito ay dinisenyo upang gumana lalo na sa online, at ina-access mo ito sa pamamagitan ng isang website sa ngayon.\n\n### Pagpili ng Mga Tampok\n\nUpang pumili ng isang tampok ng mapa , tulad ng kalsada o punto ng interes , i-click \nsa ito sa mapa. Ito ay i-highlight ang mga napiling tampok , buksan ang isang panel na may \nmga detalye tungkol dito , at ipakita ang menu ng mga bagay na maaari mong gawin gamit ang tampok. \n\nUpang pumili ng maraming mga tampok , pindutin nang matagal ang 'Shift ' key. Pagkatapos ay i-click ang alinman sa \nsa ang tampok na gusto mong piliin , o i-drag sa mapa upang gumuhit ng parihaba . \nAy ito gumuhit ng isang kahon at piliin ang lahat ng mga punto sa loob nito.\n\n### Saving Pag-edit \n\nKapag gumawa ka ng mga pagbabago tulad ng pag-edit ng mga kalsada, gusali , at mga lugar, ang mga ito ay \nnaka-imbak sa isang lugar lamang hanggang sa i-save mo ang mga ito sa server. Huwag mag-alala kung gumawa ka \nisang pagkakamali - maaari mong i-undo ang mga pagbabago sa pamamagitan ng pag-click sa pindutan undo , at gawing muli ang \nmga pagbabago sa pamamagitan ng pag-click sa pindutan gawing muli.\n\nI-click ang 'I-save ' upang matapos sa isang pangkat ng mga pag-edit - halimbawa , kung nag- nakumpleto \nisang lugar ng bayan at nais na magsimula sa isang bagong lugar . Magkakaroon ka ng pagkakataong \nupang suriin kung ano ang iyong nagawa , at ang editor supplies nakakatulong na mga mungkahi\nat babala kung may isang bagay ay hindi tila karapatan tungkol sa mga pagbabago . \n\nKung mukhang maganda ang lahat ng bagay , maaari mong ipasok ang isang maikling komento na nagpapaliwanag ng mga pagbabago\nna ginawa mo , at i-click muli ang ' I-save' upang i-post ang mga pagbabago\nsa [ OpenStreetMap.org ] ( http://www.openstreetmap.org/ ), kung saan ang mga ito ay nakikita \nsa lahat ng iba pang mga gumagamit at magagamit para sa iba upang bumuo at pagbutihin sa.\n\nKung hindi mo maaaring tapusin ang iyong mga pag-edit sa isang sitting , maaari mong iwanan ang editor window at bumalik ( sa parehong browser at computer ) , at ang\neditor application ay mag-aalok upang ibalik ang iyong trabaho .\n\n"
},
"intro": {
"address": {
"label": "Address",
"placeholders": {
- "street": "Kalsada",
- "city": "Siyudad"
+ "city": "Siyudad",
+ "street": "Kalsada"
}
},
"aerialway": {
"commit": {
"title": "Değişiklikleri kaydet",
"description_placeholder": "Katkı sağlayanlar hakkında kısa açıklama",
- "message_label": "Mesajı işle",
"upload_explanation": "Yüklediğin değişiklikler OpenStreetMap verilerini kullanan bütün haritalarda görülebilecek. ",
"upload_explanation_with_user": "{user} olarak yüklediğin değişiklikler OpenStreetMap verilerini kullanan bütün haritalarda görülebilecek. ",
"save": "Kaydet",
"title": "Kaydet",
"help": "Diğer kullanıcıların yaptığınız değişiklikleri görmesi için OpenStreetMap'e kaydediniz.",
"no_changes": "Kaydedilecek bir değişiklik yok",
- "error": "Kaydederken bir hata oluştu",
"unknown_error_details": "Lütfen internete bağlı olduğunuzdan emin olun.",
"uploading": "Değişiklikleriniz OpenStreetMap'e gönderiliyor.",
"unsaved_changes": "Kaydedilmemiş değişiklikleriniz var"
"view_on_mapillary": "Bu resmi Mapillary'de görüntüle"
},
"help": {
- "title": "Yardım",
- "help": "# Yardım\n\nBu, dünyanın özgür ve düzenlenebilir haritası [OpenStreetMap](http://www.openstreetmap.org/)\niçin bir düzenleyici. Bunu bulunduğunuz bölgeyle ilgili bir veri\neklemek ya da güncellemek, böylece herkes için daha iyi bir açık kaynak\nve açık veri bir dünya haritası oluşturmak için kullanabilirsiniz\n\nBu haritada yaptığınız düzenlemeler OpenStreetMap kullanan herkesçe\ngörülebilir olacak. Düzenleyebilek için bir \n[ücretsiz OpenStreetMap kullanıcısına](https://www.openstreetmap.org/user/new)\ngereksiniminiz var.\n\n[iD düzenleyicisi](http://ideditor.com/) ortak çaba ürünü bir proje ya da başka deyişle tasarı ve [kaynak kodu GitHub üzerinden erişilebilir](https://github.com/openstreetmap/iD).\n"
+ "title": "Yardım"
},
"intro": {
"navigation": {
"fields": {
"access": {
"label": "Ulaşım",
- "placeholder": "Bilinmeyen",
- "types": {
- "access": "Genel",
- "foot": "Yürüyerek",
- "motor_vehicle": "Motorlu araçlar",
- "bicycle": "Bisikletler",
- "horse": "Atlar"
- },
"options": {
- "yes": {
- "title": "Serbest",
- "description": "Yasaca girişe izin verilmiş; geçme önceliği"
+ "designated": {
+ "description": "Giriş, imlere ya da yerel yasalara göre olurlanmış",
+ "title": "Ayrılmış"
+ },
+ "destination": {
+ "description": "Giriş, yalnız varılacak yere ulaşmak için olurlu",
+ "title": "Hedef"
},
"no": {
- "title": "Yasak",
- "description": "Giriş kamuya açık değildir"
+ "description": "Giriş kamuya açık değildir",
+ "title": "Yasak"
},
"permissive": {
- "title": "İzin veren",
- "description": "Sahibi geri çekene kadar giriş açık"
+ "description": "Sahibi geri çekene kadar giriş açık",
+ "title": "İzin veren"
},
"private": {
- "title": "Özel",
- "description": "Giriş, sahibinin oluruna bağlı"
- },
- "designated": {
- "title": "Ayrılmış",
- "description": "Giriş, imlere ya da yerel yasalara göre olurlanmış"
+ "description": "Giriş, sahibinin oluruna bağlı",
+ "title": "Özel"
},
- "destination": {
- "title": "Hedef",
- "description": "Giriş, yalnız varılacak yere ulaşmak için olurlu"
+ "yes": {
+ "description": "Yasaca girişe izin verilmiş; geçme önceliği",
+ "title": "Serbest"
}
+ },
+ "placeholder": "Bilinmeyen",
+ "types": {
+ "access": "Genel",
+ "bicycle": "Bisikletler",
+ "foot": "Yürüyerek",
+ "horse": "Atlar",
+ "motor_vehicle": "Motorlu araçlar"
}
},
"access_simple": {
"address": {
"label": "Adres",
"placeholders": {
+ "city": "Şehir",
+ "country": "Ülke",
+ "hamlet": "Küçük köy",
"housename": "Ev adı",
"housenumber": "123",
- "street": "Sokak",
- "city": "Şehir",
- "postcode": "Posta kodu",
"place": "Yer",
- "hamlet": "Küçük köy",
+ "postcode": "Posta kodu",
"province": "İl",
"state": "Uçbeylik",
- "country": "Ülke"
+ "street": "Sokak"
}
},
"admin_level": {
"aerialway/access": {
"label": "Erişim",
"options": {
+ "both": "İkisi",
"entry": "Giriş",
- "exit": "Çıkış",
- "both": "İkisi"
+ "exit": "Çıkış"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Erişim (yaz)",
"options": {
+ "both": "İkisi",
"entry": "Giriş",
- "exit": "Çıkış",
- "both": "İkisi"
+ "exit": "Çıkış"
}
},
"aeroway": {
"internet_access": {
"label": "İnternet Bağlantısı",
"options": {
- "yes": "Evet",
"no": "Hayır",
- "wlan": "Wifi",
+ "terminal": "Terminal",
"wired": "Kablolu",
- "terminal": "Terminal"
+ "wlan": "Wifi",
+ "yes": "Evet"
}
},
"lamp_type": {
},
"structure": {
"label": "Yapı",
- "placeholder": "Bilinmeyen",
"options": {
"bridge": "Köprü",
"tunnel": "Tünel"
- }
+ },
+ "placeholder": "Bilinmeyen"
},
"supervised": {
"label": "Gözetimli"
"title": "Далі",
"description": "Продовжуйте цю лінію.",
"not_eligible": "Немає лінії, яку можна продовжити.",
- "multiple": "Тут є кліка ліній, які можна продовжити. Для вибору ліні натисніть Shift та клацніть на потрібну лінію.",
+ "multiple": "Тут є кілька ліній, які можна продовжити. Для вибору ліні натисніть Shift та клацніть на потрібну лінію.",
"annotation": {
"line": "Лінію подовжено.",
"area": "Полігон змінено."
},
"not_closed": "Неможливо перетворити на коло — лінія не замкнена.",
"too_large": "Неможливо перетворити на коло, не все що є видно.",
- "connected_to_hidden": "Неможливо перетворити на коло, мається з’єднання з прихованим об’єктом"
+ "connected_to_hidden": "Неможливо перетворити на коло, мається з’єднання з прихованим об’єктом."
},
"orthogonalize": {
"title": "Випрямити кути",
"key": "S",
"annotation": "Лінія випрямлена.",
"too_bendy": "Цю лінію не вдалось випрямити, бо вона надто вигнута.",
- "connected_to_hidden": "Лінію неможливо випрямити, так як мається з’єднання з прихованим об’єктом."
+ "connected_to_hidden": "Лінію неможливо випрямити, оскільки мається з’єднання з прихованим об’єктом."
},
"delete": {
"title": "Вилучити",
"multiple": "Вилучено {n} об’єктів."
},
"incomplete_relation": "Цей об’єкт неможливо вилучити, бо він не повністю завантажений.",
- "connected_to_hidden": "Об’єкт неможливо вилучити, так як мається з’єднання з прихованим об’єктом."
+ "part_of_relation": "Цей елемент неможливо вилучити, тому що він є частиною велікого зв’язку. Його потрібно вилучити спочатку із самого зв'язку.",
+ "connected_to_hidden": "Об’єкт неможливо вилучити, оскільки мається з’єднання з прихованим об’єктом."
},
"add_member": {
"annotation": "Додано члена зв’язку."
"title": "Від’єднати",
"description": "Роз’єднати лінії/полігони.",
"key": "D",
- "annotation": "Роз’єднано лінії.",
+ "annotation": "Роз’єднано лінії/полігони.",
"not_connected": "Недостатньо ліній/полігонів для роз’єднання.",
- "connected_to_hidden": "Об’єкт немжливо від’єднати, так як мається з’єднання з прихованим об’єктом."
+ "connected_to_hidden": "Об’єкт немжливо від’єднати, оскільки мається з’єднання з прихованим об’єктом."
},
"merge": {
"title": "Об’єднати",
"description": "Об’єднати лінії.",
"key": "C",
"annotation": "Об’єднати {n} ліній.",
- "not_eligible": "ЦÑ\96 обâ\80\99Ñ\94кÑ\82и неможливо злити.",
- "not_adjacent": "ЦÑ\96 лÑ\96нÑ\96Ñ\97 неможливо злити, бо вони не з’єднані.",
+ "not_eligible": "ЦÑ\96 обâ\80\99Ñ\94кÑ\82и неможливо обâ\80\99Ñ\94днати.",
+ "not_adjacent": "ЦÑ\96 лÑ\96нÑ\96Ñ\97 неможливо обâ\80\99Ñ\94днати, бо вони не з’єднані.",
"restriction": "Ці лінії не можуть бути об’єднані, принаймні одна з них є членом зв’язку \"{relation}\".",
"incomplete_relation": "Ці об’єкти не можуть бути об’єднані, принаймні один з них завантажений не повністю."
},
},
"incomplete_relation": "Цей об’єкт неможливо пересунути, бо він не повністю завантажний.",
"too_large": "Неможливо перемістити об’єкт, він не повністю відкритий.",
- "connected_to_hidden": "Об’єкт неможливо пересунути, так як мається з’єднання з прихованим об’єктом."
+ "connected_to_hidden": "Об’єкт неможливо пересунути, оскільки мається з’єднання з прихованим об’єктом."
},
"rotate": {
"title": "Обернути",
"area": "Полігон обернуто."
},
"too_large": "Неможливо обернути об’єкт, він не повністю відкритий.",
- "connected_to_hidden": "Об’єкт неможливо обертати, так як мається з’єднання з прихованим об’єктом."
+ "connected_to_hidden": "Об’єкт неможливо обертати, оскільки мається з’єднання з прихованим об’єктом."
},
"reverse": {
"title": "Розвернути",
},
"not_eligible": "Неможливо розділити лінію на її початку чи кінці.",
"multiple_ways": "Забагато ліній для розділення.",
- "connected_to_hidden": "Об’єкт неможливо розділити, так як мається з’єднання з прихованим об’єктом."
+ "connected_to_hidden": "Об’єкт неможливо розділити, оскільки мається з’єднання з прихованим об’єктом."
},
"restriction": {
"help": {
- "select": "Ð\9dаÑ\82иÑ\81ніть для вибору відрізку дороги",
- "toggle": "Ð\9dаÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c длÑ\8f пеÑ\80емиканнÑ\8f заборони повороту",
- "toggle_on": "Ð\9dаÑ\82иÑ\81ніть для додавання заборони \"{restriction}\".",
- "toggle_off": "Ð\9dаÑ\82иÑ\81ніть для видалення заборони \"{restriction}\"."
+ "select": "Ð\9aлаÑ\86ніть для вибору відрізку дороги",
+ "toggle": "Ð\9aлаÑ\86нÑ\96Ñ\82Ñ\8c длÑ\8f вибоÑ\80Ñ\83 заборони повороту",
+ "toggle_on": "Ð\9aлаÑ\86ніть для додавання заборони \"{restriction}\".",
+ "toggle_off": "Ð\9aлаÑ\86ніть для видалення заборони \"{restriction}\"."
},
"annotation": {
"create": "Додано заборону повороту",
}
},
"undo": {
- "tooltip": "Ð\92Ñ\96дмÑ\96нити: {action}",
- "nothing": "Нема чого відміняти."
+ "tooltip": "СкаÑ\81Ñ\83вати: {action}",
+ "nothing": "Нема чого скасовувати."
},
"redo": {
"tooltip": "Повернути: {action}",
},
"status": {
"error": "Неможливо з’єднатись з API.",
- "offline": "API оффлайн. Будь ласка, спробуйте внести зміни пізніше.",
+ "offline": "API в Ñ\81Ñ\82анÑ\96 оÑ\84Ñ\84лайн. Ð\91Ñ\83дÑ\8c лаÑ\81ка, Ñ\81пÑ\80обÑ\83йÑ\82е внеÑ\81Ñ\82и змÑ\96ни пÑ\96знÑ\96Ñ\88е.",
"readonly": "API доступний тільки для читання. Вам потрібно зачекати, щоб зберегти зміни."
},
"commit": {
"title": "Зберегти зміни",
"description_placeholder": "Короткий опис ваших правок",
- "message_label": "Ð\9dадÑ\96Ñ\81лаÑ\82и повÑ\96домленнÑ\8f",
+ "message_label": "Ð\9fоÑ\8fÑ\81неннÑ\8f до набоÑ\80Ñ\83 змÑ\96н",
"upload_explanation": "Зміни, зроблені вами, з’являться на всіх мапах, що використовують дані OpenStreetMap.",
"upload_explanation_with_user": "Зміни, зроблені вами під іменем {user}, з’являться на всіх мапах, що використовують дані OpenStreetMap.",
"save": "Зберегти",
"created": "Створено"
},
"contributors": {
- "list": "Змінено: {users}",
- "truncated_list": "Змінено {users} та {count} іншими"
+ "list": "Редагували: {users}",
+ "truncated_list": "Редагували: {users} та {count} інших"
+ },
+ "infobox": {
+ "selected": "{n} виділено",
+ "geometry": "Геометрія",
+ "closed": "закрито",
+ "center": "Центр",
+ "perimeter": "Периметр",
+ "length": "Довжина",
+ "area": "Полігон",
+ "centroid": "Центроїд",
+ "location": "Місцезнаходження",
+ "metric": "Метрична",
+ "imperial": "Імперська"
+ },
+ "geometry": {
+ "point": "точка",
+ "vertex": "вершина",
+ "line": "лінія",
+ "area": "полігон",
+ "relation": "зв’язок"
},
"geocoder": {
"search": "Шукати по всьому світу…",
"new_relation": "Новий зв’язок…",
"role": "Роль",
"choose": "Виберіть тип об’єкта",
- "results": "знайдено {n} обâ\80\99Ñ\94кÑ\82Ñ\96в на запиÑ\82 {search}",
+ "results": "знайдено {n} обâ\80\99Ñ\94кÑ\82Ñ\96в за запиÑ\82ом {search}",
"reference": "Подивитись на OpenStreetMap Wiki",
"back_tooltip": "Змінити об’єкт",
"remove": "Вилучити",
"data_layers": "Шари даних",
"fill_area": "Заливати полігони",
"map_features": "Об’єкти на мапі",
- "autohidden": "Ці об’єкти були автоматично приховані, щоб незахаращувати мапу на екрані. Ви можете наблизитись щоб редагувати їх."
+ "autohidden": "Ці об’єкти були автоматично приховані, щоб не захаращувати мапу на екрані. Ви можете наблизитись щоб редагувати їх."
},
"feature": {
"points": {
"help": "Зберегти зміни надіславши їх до OpenStreetMap, що зробить їх доступними усім іншим.",
"no_changes": "Зміни для збереження відсутні.",
"error": "Під час збереження виникла помилка",
+ "status_code": "Сервер повернув код стану {code}",
"unknown_error_details": "Переконайтесь, що ви під’єднані до Інтернету.",
"uploading": "Надсилання змін до OpenStreetMap.",
- "unsaved_changes": "Ви маєте незбережені правки"
+ "unsaved_changes": "Ви маєте незбережені правки",
+ "conflict": {
+ "header": "Розв’язання конфліктуючих правок",
+ "count": "Конфлікт {num} з {total}",
+ "previous": "< Попередній",
+ "next": "Наступний >",
+ "keep_local": "Залишити мої правки",
+ "keep_remote": "Використовувати правки інших",
+ "restore": "Відновити",
+ "delete": "Залишити вилученим",
+ "download_changes": "Або завантажити мої зміни.",
+ "done": "Всі конфлікти розв’язано!",
+ "help": "Інший учасник змінив кілька об’єктів на мапі, змінених вами.\nКлацніть на кожний з перелічених нижче конфліктів, щоб дізнатись про нього, та вирішити, \nчи залишити ваші зміни, чи зміни інших.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "Цей об’єкт був вилучений {user}.",
+ "location": "Цей об’єкт був переміщений вами та {user}.",
+ "nodelist": "Точки були змінені вами та {user}.",
+ "memberlist": "Члени зв’язку були змінені вами та {user}.",
+ "tags": "Ви змінили теґ <b>{tag}</b> на \"{local}\", а {user} змінив його на \"{remote}\"."
+ }
},
"success": {
- "edited_osm": "Відредаговано OSM!",
- "just_edited": "Ви щойно відредагували мапу OpenStreetMap!",
+ "edited_osm": "OSM змінено!",
+ "just_edited": "Ви щойно внесли зміни на мапу OpenStreetMap!",
"view_on_osm": "Подивитись в OSM",
- "facebook": "Поділитись на Facebook",
- "twitter": "Поділитись на Twitter",
- "google": "Поділитись на Google+",
+ "facebook": "Поділитись у Facebook",
+ "twitter": "Поділитись у Twitter",
+ "google": "Поділитись у Google+",
"help_html": "Ваші зміни повинні з’явитись в «Стандартному» шарі за кілька хвилин. \nЗміни інших шарів та об’єктів можуть відбуватись довше (<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>докладніше англійською</a>).\n"
},
"confirm": {
- "okay": "Готово"
+ "okay": "Готово",
+ "cancel": "Скасувати"
},
"splash": {
"welcome": "Ласкаво просимо до редактора OpenStreetMap — iD",
"gpx": {
"local_layer": "Локальний файл GPX",
"drag_drop": "Перетягніть файл .gpx на сторінку чи натисніть кнопку праворуч для вибору файлу",
- "zoom": "Ð\9cаÑ\81Ñ\88Ñ\82абÑ\83ваÑ\82и за Ñ\82Ñ\80еком GPX",
+ "zoom": "Ð\9cаÑ\81Ñ\88Ñ\82абÑ\83ваÑ\82и до Ñ\82Ñ\80екÑ\83 GPX",
"browse": "Вибрати файл .gpx"
},
"mapillary": {
"tooltip": "Знімки з вулиць від Mapillary",
"title": "Фото-шар (Mapillary)",
- "view_on_mapillary": "Ð\9fодивиÑ\82иÑ\81Ñ\8c Ñ\86ей знÑ\96мок на "
+ "view_on_mapillary": "Ð\9fеÑ\80еглÑ\8fнÑ\83Ñ\82и Ñ\86ей знÑ\96мок на Mapillary"
},
"help": {
"title": "Довідка",
- "help": "# Ð\94овÑ\96дка\n\nЦе Ñ\80едакÑ\82оÑ\80 [OpenStreetMap](http://www.openstreetmap.org/) â\80\94\nвÑ\96лÑ\8cноÑ\97 мапи Ñ\81вÑ\96Ñ\82Ñ\83, пÑ\80авиÑ\82и Ñ\8fкÑ\83 може кожен. Ð\92и можеÑ\82е викоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и\nйого длÑ\8f додаваннÑ\8f Ñ\82а випÑ\80авленнÑ\8f даниÑ\85, Ñ\81Ñ\82воÑ\80Ñ\8eÑ\8eÑ\87и найкÑ\80аÑ\89Ñ\83 \nвÑ\96дкÑ\80иÑ\82Ñ\83 мапÑ\83 Ñ\81вÑ\96Ñ\82Ñ\83 з вÑ\96лÑ\8cними, доÑ\81Ñ\82Ñ\83пними вÑ\81Ñ\96м, каÑ\80Ñ\82огÑ\80аÑ\84Ñ\96Ñ\87ними даними.\n\nÐ\92ипÑ\80авленнÑ\8f, Ñ\8fкÑ\96 ви вноÑ\81иÑ\82е до Ñ\86Ñ\96Ñ\94Ñ\97 мапи, бÑ\83дÑ\83Ñ\82Ñ\8c доÑ\81Ñ\82Ñ\83пнÑ\96 вÑ\81Ñ\96м\nÑ\96нÑ\88им, Ñ\85Ñ\82о викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\94 OpenStreetMap. Ð\94лÑ\8f Ñ\82ого, Ñ\89об вноÑ\81иÑ\82и\nзмÑ\96ни вам поÑ\82Ñ\80Ñ\96бно маÑ\82и \n[облÑ\96ковий запиÑ\81 OpenStreetMap](https://www.openstreetmap.org/user/new).\n\n[РедакÑ\82оÑ\80 iDr](http://ideditor.com/) — є спільним проектом з [сирцями\nдоступними на GitHub](https://github.com/openstreetmap/iD).\n",
- "editing_saving": "# Редагування та збереження\n\nЦей редактор створений переважно для роботи онлайн, і ви зараз\nпрацюєте з ним на веб-сайті.\n\n### Виділення об’єктів\n\nДля виділення об’єктів на мапі, таких як дороги чи пам’ятки, треба\nклацнути по них на мапі. Виділені об’єкти будуть підсвічені, з’явиться\nпанель з подробицями про них та меню із переліком того, що можна\nзробити.\n\nДля виділення кількох об’єктів натисніть 'Shift', або клацніть та потягніть\nмишею по мапі. Будуть виділені всі об’єкти, що попали у прямокутник\nвиділення, це дозволить вам виконувати дії одночасно над кількома\nоб’єктами.\n\n### Збереження правок\n\nПісля того як ви зробили зміни, виправивши дорогу, чи будинок, вони є\nлокальними доки ви не збережете їх на сервері. Не хвилюйтесь, якщо\nви припустились помилки, ви можете відмінити зміни натиснувши на\nкнопку 'Відмінити', а також повернути зміни — натиснувши 'Повернути'\n\nНатисніть 'Зберегти', щоб закінчити групу правок, наприклад, якщо ви\nзакінчили роботу над одним районом міста і бажаєте перейти до іншого.\nВи будете мати можливість переглянути те, що ви зробили, а редактор\nзапропонує вам корисні поради та видасть попередження, якщо ваші\nправки не виглядають вірними.\n\nЯкщо все виглядає добре, ви можете додати коротке пояснення того, що\nви зробили та натиснути кнопку 'Зберегти' ще раз, щоб надіслати зміни\nдо [OpenStreetMap.org](http://www.openstreetmap.org/), де вони стануть\nдоступні для всіх інших користувачів для перегляду та вдосконалення.\n\nЯкщо ви не можете закінчити ваші правки за один раз, ви можете лишити\nвікно з редактором відкритим і повернутись (на тому самому комп’ютері та\nоглядачі) до роботи потім — редактор запропонує вам відновити вашу\nроботу.\n",
- "roads": "# Дороги\n\nВи можете створювати, виправляти та вилучати дороги з допомогою\nцього редактора. Дороги можуть бути будь-якого типу: автомагістралі, \nстежки, велодоріжки та багато інших — все що частіше за все має\nперетин між собою, повинне бути нанесено на мапу.\n\n### Виділення\n\nКлацніть по дорозі для того щоб її вибрати. Вона стані підсвіченою\nпо всій довжині, поряд на мапі з’явиться невеличке меню з інструментами,\nа на бічній панелі буде показано додаткову інформацію про дорогу.\n\n### Зміна\n\nДоволі часто вам будуть траплятись дороги, що не співпадають із дорогами\nна супутниковому знімку чи треками GPS. Ви можете виправити їх положення.\nАле з початку вирівняйте положення знімку по треках GPS. \n\nПотім клацніть по дорозі, яку ви маєте намір змінити. Вона стане підсвіченою\nі на ній з’являться контрольні точки, які можна рухати, підлаштовуючи положення\nта форму дороги. Якщо вам потрібно додати нову точку, для підвищення деталізації,\nдодайте її подвійним клацанням на відрізку дороги. \n\nЯкщо дорога повинна з’єднуватись з іншою дорогою, але на мапі лінії не\nз’єднані, підтягніть одну із контрольних точок однієї дорого до іншої, для\nїх з’єднання. Мати з’єднані дороги — дуже важливо для мапи, а особливо\nдля впровадження можливості прокладання маршрутів.\n\nВи також можете обрати інструмент 'Перемістити' або натиснути 'M' для \nпереміщення всієї дороги, повторне клацання зберігає нове положення\nдороги.\n\n### Вилучення\n\nЯкщо дороги накреслені зовсім невірно і це добре видно по супутникових\nзнімках, а, в ідеалі, ви точно знаєте що їх у цьому місці немає — ви можете\nїх вилучити, що призведе до їх вилучення з мапи. Проте будьте уважними,\nвилучення, як і інші виправлення, призведуть до змін на мапі, що доступна\nкожному; також зауважте, що супутникові знімки з часом застарівають, отже\nновозбудована дорога буде на них відсутня. \n\nВи можете вилучити дорогу клацнувши на неї для виділення, потім натиснувши\nна значок із смітником чи натиснувши клавішу 'Delete'.\n\n### Створення\n\nЩо робити — знайшли місце де повинна бути дорога, а її там немає? Оберіть \nінструмент 'Лінія' зверху ліворуч або натисніть клавішу '2' для того, щоб\nрозпочати креслення ліній.\n\nКлацніть на початку дороги на мапі для того, щоб розпочати креслення. Якщо\nдорога відгалужується від існуючої дороги, розпочніть з місця їх з’єднання.\n\nПотім клацайте вздовж дороги так щоб утворився правильний шлях, відповідно\nдо супутникових знімків та/чи треків GPS. Якщо дорога, яку ви креслите, перетинає\nіншу дорогу, з’єднуйте їх клацаючи в точці їх перехрещення. Для закінчення\nкреслення виконайте подвійне клацання мишею чи натисніть 'Enter' на \nклавіатурі.\n",
- "gps": "# GPS\n\nÐ\94анÑ\96 GPS Ñ\94 найбÑ\96лÑ\8cÑ\88 надÑ\96йним джерелом даних для OpenStreetMap. Редактор\nпідтримує локальні треки – файли `.gpx` на вашому комп’ютері. Ви можете\nотримати GPS треки за допомогою численних застосунків для смартфонів\nтак само, як і з допомогою спеціального GPS-обладнання. \n\nДля того, щоб дізнатись як проводити збір GPS-даних прочитайте\n[Збір інформації за допомогою GPS](http://learnosm.org/en/beginner/using-gps/).\n\nЩоб використати записаний трек для мапінгу, перетягніть GPX-файл з треком на\nмапу в редакторі. Після того, як його буде розпізнано, він буде доданий на мапу\nу вигляді світло-фіолетової лінії. Клацніть на меню 'Дані мапи' праворуч, щоб показати, приховати або масштабуватись до нового шару з GPX-треком.\n\nGPX трек не буде завантажений безпосередньо до OpenStreetMap, кращий спосіб\nйого використання — креслити об’єкти на мапі, використовуючи його як орієнтир\nдля додавання об’єктів; трек також можна \n[завантажити на OpenStreetMap](http://www.openstreetmap.org/trace/create), \nдля використання іншими учасниками.\n",
- "imagery": "# Тло\n\nВикористання аерофотознімків є важливим засобом картографування.\nЗнімки, зроблені з літака, супутника, а також отримані з відкритих джерел\nдоступні в редакторі у меню 'Налаштування тла' праворуч.\n\nТипово вибраним шаром з супутниковими знімками є [Bing Maps](http://www.bing.com/maps/),\nале у різних місцях та на різних масштабах будуть доступні й інші джерела.\nДеякі країни, як, наприклад, Сполучені Штати, Франція, Данія,\nмають дуже високоякісні знімки певних територій.\n\nЗображення тла іноді є зміщеним відносно даних мапи через помилки\nпостачальників знімків. Якщо ви помітили, що дороги є зміщеними\nвідносно знімків, не кидайтесь пересувати їх так, щоб вони співпали \nз дорогами на знімку. Спробуйте спочатку підлаштувати положення тла так,\nщоб воно співпадало з даними за допомогою підменю 'Виправити зсув'\nнаприкінці меню 'Налаштування тла'.\n",
- "addresses": "# Ð\90дÑ\80еÑ\81и\n\nÐ\90дÑ\80еÑ\81и Ñ\94 однÑ\96Ñ\94Ñ\8e з найважливÑ\96Ñ\88иÑ\85 видÑ\96в Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 на мапÑ\96.\n\nХоÑ\87а адÑ\80еÑ\81и Ñ\87аÑ\81Ñ\82о пÑ\80едÑ\81Ñ\82авлÑ\8fÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк Ñ\87аÑ\81Ñ\82ини вÑ\83лиÑ\86Ñ\8c, в OpenStreetMap \nвони запиÑ\81анÑ\96 Ñ\8fк аÑ\82Ñ\80ибÑ\83Ñ\82и бÑ\83дÑ\96велÑ\8c Ñ\96 мÑ\96Ñ\81Ñ\86Ñ\8c вздовж вÑ\83лиÑ\86Ñ\8c.\n\nÐ\92и можеÑ\82е додаваÑ\82и Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\8e з адÑ\80еÑ\81оÑ\8e до бÑ\83дÑ\96велÑ\8c, Ñ\89о познаÑ\87енÑ\96\nполÑ\96гонами, Ñ\82ак Ñ\81амо Ñ\8fк Ñ\96 до бÑ\83дÑ\96велÑ\8c познаÑ\87ениÑ\85 Ñ\82оÑ\87ками. Ð\9dайкÑ\80аÑ\89им\nджеÑ\80елом Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 пÑ\80о адÑ\80еÑ\81и Ñ\94 пÑ\80оведеннÑ\8f доÑ\81лÑ\96дженÑ\8c на мÑ\96Ñ\81Ñ\86евоÑ\81Ñ\82Ñ\96,\nабо ваÑ\88Ñ\96 оÑ\81обиÑ\81Ñ\82Ñ\96 знаннÑ\8f пÑ\80о обâ\80\99Ñ\94кÑ\82и, Ñ\89о знаÑ\85одÑ\8fÑ\82Ñ\8cÑ\81Ñ\8f поруч з вами,\nадже як і вся інша інформація в проекті, вона не повинна бути скопійована\nз комерційних/закритих джерел. Копіювання, наприклад з Google Maps,\nє суворо забороненим.\n",
- "inspector": "# Використання Інспектора\n\nІнспектор — частина інтерфейсу ліворуч, що дозволяє змінювати \nдеталі виділеного об’єкта.\n\n### Вибір типу об’єкта\n\nПісля додавання точки, лінії чи полігону, ви можете вибрати\nтип об’єкта. Наприклад, це може бути автомагістраль, вулиця,\nсупермаркет або кафе. Інспектор запропонує вам обрати серед\nнайпопулярніших типів, а також ви можете пошукати потрібний\nтип об’єкта, увівши його назву у пошуковий рядок.\n\nНатисніть на кнопку \"i\" праворуч від типу, щоб дізнатися більше\nпро нього. Натисніть на тип, щоб застосувати його до об’єкта.\n\n### Використання форм та редагування теґів\n\nПісля вибору типу нового об’єкта чи виділення вже існуючого об’єкта\nпевного типу інспектор покаже поля властивостей, наприклад, \nназву та адресу.\n\nНижче ви побачите рядок значків для додавання інших деталей:\nпосилання на [Wikipedia](http://www.wikipedia.org/), вказання на можливість\nпересування інвалідним візком, та інші.\n\nЩоб додати до об’єкта довільні теґи, потрібно розкрити пункт 'Всі теґи' \nвнизу інспектора. \n[Taginfo](http://taginfo.openstreetmap.org/) є хорошим джерелом інформації про поширені\nкомбінації застосування теґів.\n\nЗміни, які ви здійснюєте у інспекторі, автоматично застосовуються до мапи.\nВи можете скасувати їх, натиснувши кнопку 'Відмінити'.\n",
+ "help": "# Ð\94овÑ\96дка\n\nЦе Ñ\80едакÑ\82оÑ\80 [OpenStreetMap](http://www.openstreetmap.org/) â\80\94\nвÑ\96лÑ\8cноÑ\97 мапи Ñ\81вÑ\96Ñ\82Ñ\83, пÑ\80авиÑ\82и Ñ\8fкÑ\83 може кожен. Ð\92и можеÑ\82е викоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и\nйого длÑ\8f додаваннÑ\8f Ñ\82а випÑ\80авленнÑ\8f даниÑ\85, Ñ\81Ñ\82воÑ\80Ñ\8eÑ\8eÑ\87и найкÑ\80аÑ\89Ñ\83 \nвÑ\96дкÑ\80иÑ\82Ñ\83 мапÑ\83 Ñ\81вÑ\96Ñ\82Ñ\83 з вÑ\96лÑ\8cними, доÑ\81Ñ\82Ñ\83пними вÑ\81Ñ\96м, каÑ\80Ñ\82огÑ\80аÑ\84Ñ\96Ñ\87ними даними.\n\nÐ\97мÑ\96ни, Ñ\8fкÑ\96 ви вноÑ\81иÑ\82е до Ñ\86Ñ\96Ñ\94Ñ\97 мапи, бÑ\83дÑ\83Ñ\82Ñ\8c доÑ\81Ñ\82Ñ\83пнÑ\96 вÑ\81Ñ\96м\nÑ\96нÑ\88им, Ñ\85Ñ\82о викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\94 OpenStreetMap. Ð\94лÑ\8f Ñ\82ого, Ñ\89об вноÑ\81иÑ\82и\nзмÑ\96ни вам поÑ\82Ñ\80Ñ\96бно \n[Ð\92вÑ\96йÑ\82и](https://www.openstreetmap.org/login).\n\n[РедакÑ\82оÑ\80 iD](http://ideditor.com/) — є спільним проектом з [сирцями\nдоступними на GitHub](https://github.com/openstreetmap/iD).\n",
+ "editing_saving": "# Редагування та збереження\n\nЦей редактор створений переважно для роботи онлайн, і ви зараз\nпрацюєте з ним на веб-сайті.\n\n### Виділення об’єктів\n\nДля виділення об’єктів на мапі, таких як дороги чи пам’ятки, треба\nклацнути по них на мапі. Виділені об’єкти будуть підсвічені, з’явиться\nпанель з подробицями про них та меню із переліком того, що можна\nзробити.\n\nДля виділення кількох об’єктів натисніть 'Shift', або клацніть та потягніть\nмишею по мапі. Будуть виділені всі об’єкти, що потрапили у прямокутник\nвиділення, це дозволить вам виконувати дії одночасно над кількома\nоб’єктами.\n\n### Збереження правок\n\nПісля того як ви зробили зміни, виправивши дорогу, чи будинок, вони є\nлокальними доки ви не збережете їх на сервері. Не хвилюйтесь, якщо\nви припустились помилки, ви можете скасувати зміни натиснувши на\nкнопку 'Скасувати', а також повернути зміни — натиснувши 'Повернути'\n\nНатисніть 'Зберегти', щоб закінчити групу правок, наприклад, якщо ви\nзакінчили роботу над одним районом міста і бажаєте перейти до іншого.\nВи будете мати можливість переглянути те, що ви зробили, а редактор\nзапропонує вам корисні поради та видасть попередження, якщо ваші\nправки не виглядають правильними.\n\nЯкщо все виглядає добре, ви можете додати коротке пояснення того, що\nви зробили та натиснути кнопку 'Зберегти' ще раз, щоб надіслати зміни\nдо [OpenStreetMap.org](http://www.openstreetmap.org/), де вони стануть\nдоступні для всіх інших користувачів для перегляду та вдосконалення.\n\nЯкщо ви не можете закінчити ваші правки за один раз, ви можете лишити\nвікно з редактором відкритим і повернутись (на тому самому комп’ютері та\nоглядачі) до роботи потім — редактор запропонує вам відновити вашу\nроботу.\n",
+ "roads": "# Дороги\n\nВи можете створювати, виправляти та вилучати дороги з допомогою\nцього редактора. Дороги можуть бути будь-якого типу: автомагістралі, \nстежки, велодоріжки та багато інших — все що частіше за все має\nперетин між собою, повинне бути нанесено на мапу.\n\n### Виділення\n\nКлацніть по дорозі для того щоб її вибрати. Вона стані підсвіченою\nпо всій довжині, поряд на мапі з’явиться невеличке меню з інструментами,\nа на бічній панелі буде показано додаткову інформацію про дорогу.\n\n### Зміна\n\nДоволі часто вам будуть траплятись дороги, що не збігаються із дорогами\nна супутниковому знімку чи треками GPS. Ви можете виправити їхнє положення.\nАле спочатку вирівняйте положення знімку за треками GPS. \n\nПотім клацніть по дорозі, яку ви маєте намір змінити. Вона стане підсвіченою\nі на ній з’являться контрольні точки, які можна рухати, підлаштовуючи положення\nта форму дороги. Якщо вам потрібно додати нову точку, для підвищення деталізації,\nдодайте її подвійним клацанням на відрізку дороги. \n\nЯкщо дорога повинна з’єднуватись з іншою дорогою, але на мапі лінії не\nз’єднані, підтягніть одну із контрольних точок однієї дорого до іншої, для\nїх з’єднання. Мати з’єднані дороги — дуже важливо для мапи, а особливо\nдля впровадження можливості прокладання маршрутів.\n\nВи також можете обрати інструмент 'Перемістити' або натиснути 'M' для \nпереміщення всієї дороги, повторне клацання зберігає нове положення\nдороги.\n\n### Вилучення\n\nЯкщо дороги накреслені зовсім неправильно і це добре видно на супутникових\nзнімках, а, в ідеалі, ви точно знаєте що їх у цьому місці немає — ви можете\nїх вилучити, що призведе до їх вилучення з мапи. Проте будьте уважними,\nвилучення, як і інші виправлення, призведуть до змін на мапі, що доступна\nкожному; також зауважте, що супутникові знімки з часом застарівають, отже\nновозбудована дорога буде на них відсутня. \n\nВи можете вилучити дорогу клацнувши на неї для виділення, потім натиснувши\nна значок із смітником чи натиснувши клавішу 'Delete'.\n\n### Створення\n\nЩо робити — знайшли місце де повинна бути дорога, а її там немає? Оберіть \nінструмент 'Лінія' зверху ліворуч або натисніть клавішу '2' для того, щоб\nрозпочати креслення ліній.\n\nКлацніть на початку дороги на мапі для того, щоб розпочати креслення. Якщо\nдорога відгалужується від наявної дороги, розпочніть з місця їх з’єднання.\n\nПотім клацайте вздовж дороги так щоб утворився правильний шлях, відповідно\nдо супутникових знімків та/чи треків GPS. Якщо дорога, яку ви креслите, перетинає\nіншу дорогу, з’єднуйте їх клацаючи в точці їх перехрещення. Для закінчення\nкреслення виконайте подвійне клацання мишею чи натисніть 'Enter' на \nклавіатурі.\n",
+ "gps": "# GPS\n\nÐ\94анÑ\96 GPS Ñ\94 найнадÑ\96йнÑ\96Ñ\88им джерелом даних для OpenStreetMap. Редактор\nпідтримує локальні треки – файли `.gpx` на вашому комп’ютері. Ви можете\nотримати GPS треки за допомогою численних застосунків для смартфонів\nтак само, як і з допомогою спеціального GPS-обладнання. \n\nДля того, щоб дізнатись як проводити збір GPS-даних прочитайте\n[Збір інформації за допомогою GPS](http://learnosm.org/en/beginner/using-gps/).\n\nЩоб використати записаний трек для мапінгу, перетягніть GPX-файл з треком на\nмапу в редакторі. Після того, як його буде розпізнано, він буде доданий на мапу\nу вигляді світло-фіолетової лінії. Клацніть на меню 'Дані мапи' праворуч, щоб показати, приховати або масштабуватись до нового шару з GPX-треком.\n\nGPX трек не буде завантажений безпосередньо до OpenStreetMap, кращий спосіб\nйого використання — креслити об’єкти на мапі, використовуючи його як орієнтир\nдля додавання об’єктів; трек також можна \n[завантажити на OpenStreetMap](http://www.openstreetmap.org/trace/create), \nдля використання іншими учасниками.\n",
+ "imagery": "# Тло\n\nВикористання аерофотознімків є важливим засобом картографування.\nЗнімки, зроблені з літака, супутника, а також отримані з відкритих джерел\nдоступні в редакторі у меню 'Налаштування тла' праворуч.\n\nТипово вибраним шаром з супутниковими знімками є [Bing Maps](http://www.bing.com/maps/),\nале у різних місцях та на різних масштабах будуть доступні й інші джерела.\nДеякі країни, як, наприклад, Сполучені Штати, Франція, Данія,\nмають дуже високоякісні знімки певних територій.\n\nЗображення тла іноді є зміщеним відносно даних мапи через помилки\nпостачальників знімків. Якщо ви помітили, що дороги є зміщеними\nвідносно знімків, не кидайтесь пересувати їх так, щоб вони збіглися \nз дорогами на знімку. Спробуйте спочатку підлаштувати положення тла так,\nщоб воно збігалося з даними за допомогою підменю 'Виправити зсув'\nнаприкінці меню 'Налаштування тла'.\n",
+ "addresses": "# Ð\90дÑ\80еÑ\81и\n\nÐ\90дÑ\80еÑ\81и Ñ\94 однÑ\96Ñ\94Ñ\8e з найважливÑ\96Ñ\88иÑ\85 видÑ\96в Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 на мапÑ\96.\n\nХоÑ\87а адÑ\80еÑ\81и Ñ\87аÑ\81Ñ\82о пÑ\80едÑ\81Ñ\82авлÑ\8fÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк Ñ\87аÑ\81Ñ\82ини вÑ\83лиÑ\86Ñ\8c, в OpenStreetMap \nвони запиÑ\81анÑ\96 Ñ\8fк аÑ\82Ñ\80ибÑ\83Ñ\82и бÑ\83дÑ\96велÑ\8c Ñ\96 мÑ\96Ñ\81Ñ\86Ñ\8c вздовж вÑ\83лиÑ\86Ñ\8c.\n\nÐ\92и можеÑ\82е додаваÑ\82и Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\8e з адÑ\80еÑ\81оÑ\8e до бÑ\83дÑ\96велÑ\8c, Ñ\89о познаÑ\87енÑ\96\nполÑ\96гонами, Ñ\82ак Ñ\81амо Ñ\8fк Ñ\96 до бÑ\83дÑ\96велÑ\8c познаÑ\87ениÑ\85 Ñ\82оÑ\87ками. Ð\9dайкÑ\80аÑ\89им\nджеÑ\80елом Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 пÑ\80о адÑ\80еÑ\81и Ñ\94 пÑ\80оведеннÑ\8f доÑ\81лÑ\96дженÑ\8c на мÑ\96Ñ\81Ñ\86евоÑ\81Ñ\82Ñ\96,\nабо ваÑ\88Ñ\96 оÑ\81обиÑ\81Ñ\82Ñ\96 знаннÑ\8f пÑ\80о обâ\80\99Ñ\94кÑ\82и, Ñ\89о пеÑ\80ебÑ\83ваÑ\8eÑ\82Ñ\8c поруч з вами,\nадже як і вся інша інформація в проекті, вона не повинна бути скопійована\nз комерційних/закритих джерел. Копіювання, наприклад з Google Maps,\nє суворо забороненим.\n",
+ "inspector": "# Використання Інспектора\n\nІнспектор — частина інтерфейсу ліворуч, що дозволяє змінювати \nдеталі виділеного об’єкта.\n\n### Вибір типу об’єкта\n\nПісля додавання точки, лінії чи полігону, ви можете вибрати\nтип об’єкта. Наприклад, це може бути автомагістраль, вулиця,\nсупермаркет або кафе. Інспектор запропонує вам обрати серед\nнайпопулярніших типів, а також ви можете пошукати потрібний\nтип об’єкта, увівши його назву у пошуковий рядок.\n\nНатисніть на кнопку \"i\" праворуч від типу, щоб дізнатися більше\nпро нього. Натисніть на тип, щоб застосувати його до об’єкта.\n\n### Використання форм та редагування теґів\n\nПісля вибору типу нового об’єкта чи виділення вже наявного об’єкта\nпевного типу інспектор покаже поля властивостей, наприклад, \nназву та адресу.\n\nНижче ви побачите рядок значків для додавання інших деталей:\nпосилання на [Wikipedia](http://www.wikipedia.org/), вказання на можливість\nпересування інвалідним візком, та інші.\n\nЩоб додати до об’єкта довільні теґи, потрібно розкрити пункт 'Всі теґи' \nвнизу інспектора. \n[Taginfo](http://taginfo.openstreetmap.org/) є хорошим джерелом інформації про поширені\nкомбінації застосування теґів.\n\nЗміни, які ви здійснюєте у інспекторі, автоматично застосовуються до мапи.\nВи можете скасувати їх, натиснувши кнопку 'Скасувати'.\n",
"buildings": "# Будівлі\n\nOpenStreetMap — є найбільшою в світі базою даних будівель. Ви можете\nпримати участь у її створенні та покращенні.\n\n### Виділення\n\nДля того, щоб виділити будівлю, потрібно клацнути на її контурі. Вона\nстане підсвіченою і поруч з’явиться невеличке меню з інструментами, а\nна боковій панелі — докладна інформація про будівлю.\n\n### Змінення\n\nІноді будівлі неточно розміщенні або мають неправильні теґи.\n\nДля того, щоб пересунути будівлю, виділіть її, клацніть на інструмент\n'Переміщення'. Рухайте мишею, щоб пересунути будівлю на нове місце,\nпісля чого клацніть мишею ще раз.\n\nДля того щоб надати будівлі певної форми, перетягуйте точки її контуру\nдо досягнення бажаного результату.\n\n\n### Створення\n\nОдне із питань є в тому, що OpenStreetMap підтримує обидва варіанти \nбудівель: у вигляді полігонів та точок. Основне правило полягає в тому,\nщо _наносити будівлі потрібно у вигляді полігонів, якщо це можливо_, а\nкомпанії, помешкання, зручності та інші речі, які розташовані в будинках —\nточками в межах полігону будівлі.\n\nДля того, щоб розпочати креслення будівлі, оберіть інструмент 'Полігон'\nзверху ліворуч, для закінчення креслення натисніть або 'Return' на \nклавіатурі чи клацнувши на першій точці для замкнення полігону.\n\n### Вилучення\n\nЯкщо будівля є зовсім неправильною — її немає на супутниковому знімку\nта, в ідеалі, це підтверджено дослідженнями на місцевості — ви можете\nїї вилучити, що призведе до її зникнення з мапи. Будьте обережні, \nвилучаючи об’єкти, ці дії, так само як і інші зміни вони будуть видимі\nвсім іншим; до того ж супутникові знімки можуть бути застарілими, отже\nновозбудовані будівлі будуть на них відсутні.\n\nДля того, щоб вилучити будівлі, виділіть її, потім натисніть на значок із\nзображенням смітника чи натисніть клавішу 'Delete'.\n",
- "relations": "# Ð\97вâ\80\99Ñ\8fзки\n\nÐ\97вâ\80\99Ñ\8fзки Ñ\94 певним Ñ\82ипом обâ\80\99Ñ\94кÑ\82Ñ\96в в OpenStreetMap, Ñ\8fкÑ\96 Ñ\81кладаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f з Ñ\96нÑ\88иÑ\85\nобâ\80\99Ñ\94кÑ\82Ñ\96в. Ð\9dапÑ\80иклад, двома найпоÑ\88иÑ\80енÑ\96Ñ\88ими Ñ\82ипами звâ\80\99Ñ\8fзкÑ\96в Ñ\94 *маÑ\80Ñ\88Ñ\80Ñ\83Ñ\82и*,\nдо Ñ\81кладÑ\83 Ñ\8fкиÑ\85 вÑ\85одÑ\8fÑ\82Ñ\8c Ñ\87аÑ\81Ñ\82ини доÑ\80Ñ\96г, по Ñ\8fкиÑ\85 пÑ\80оÑ\85одиÑ\82Ñ\8c певна авÑ\82омагÑ\96Ñ\81Ñ\82Ñ\80алÑ\8c,\nÑ\82а *мÑ\83лÑ\8cÑ\82иполÑ\96гони*, Ñ\8fкÑ\96 обâ\80\99Ñ\94днÑ\83Ñ\8eÑ\82Ñ\8c кÑ\96лÑ\8cка Ñ\80Ñ\96зниÑ\85 лÑ\96нÑ\96й длÑ\8f Ñ\83Ñ\82воÑ\80еннÑ\8f обâ\80\99Ñ\94кÑ\82а\nÑ\81кладноÑ\97 Ñ\84оÑ\80ми (напÑ\80иклад, Ñ\82акий Ñ\89о Ñ\81кладаÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\96з кÑ\96лÑ\8cкоÑ\85 Ñ\87аÑ\81Ñ\82ин, або\nмаÑ\94 дÑ\96Ñ\80кÑ\83, Ñ\8fк бÑ\83блик).\n\nÐ\9eбâ\80\99Ñ\94кÑ\82и в звâ\80\99Ñ\8fзкÑ\83 називаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f *Ñ\87ленами*. Ð\9dа боковÑ\96й панелÑ\96 ви можеÑ\82е\nбаÑ\87иÑ\82и Ñ\87леном Ñ\8fкого звâ\80\99Ñ\8fзкÑ\83 Ñ\94 обâ\80\99Ñ\94кÑ\82, Ñ\82а клаÑ\86нÑ\83вÑ\88и на звâ\80\99Ñ\8fзок, маÑ\94Ñ\82е\nможливÑ\96Ñ\81Ñ\82Ñ\8c видÑ\96лиÑ\82и його. Ð\9aоли звâ\80\99Ñ\8fзок видÑ\96лено, ви можеÑ\82е побаÑ\87иÑ\82и вÑ\81Ñ\96Ñ\85\nйого Ñ\87ленÑ\96в на боковÑ\96й панелÑ\96, звâ\80\99Ñ\8fзок Ñ\82акож бÑ\83де пÑ\96дÑ\81вÑ\96Ñ\87ений на мапÑ\96.\n\nУ бÑ\96лÑ\8cÑ\88оÑ\81Ñ\82Ñ\96 випадкÑ\96в iD пÑ\96клÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f пÑ\80о авÑ\82омаÑ\82иÑ\87нÑ\83 обÑ\80обкÑ\83 звâ\80\99Ñ\8fзкÑ\96в\nпÑ\96д Ñ\87аÑ\81 Ñ\80едагÑ\83ваннÑ\8f. Ð\93оловне, Ñ\89о поÑ\82Ñ\80Ñ\96бно запамâ\80\99Ñ\8fÑ\82аÑ\82и, Ñ\82ак Ñ\86е Ñ\82е, Ñ\8fкÑ\89о\nви вилÑ\83Ñ\87иÑ\82е лÑ\96нÑ\96Ñ\8e, длÑ\8f Ñ\82ого, Ñ\89об Ñ\97Ñ\97 нанеÑ\81Ñ\82и Ñ\82оÑ\87нÑ\96Ñ\88е, вам Ñ\82Ñ\80еба пеÑ\80еконаÑ\82иÑ\81Ñ\8c\nв Ñ\82омÑ\83, Ñ\89о нова лÑ\96нÑ\96Ñ\8f бÑ\83де вклÑ\8eÑ\87ена до Ñ\81кладÑ\83 Ñ\82ого ж звâ\80\99Ñ\8fзкÑ\83, Ñ\89о й \nоÑ\80игÑ\96налÑ\8cна.\n\n## РедагÑ\83ваннÑ\8f звâ\80\99Ñ\8fзкÑ\96в\n\nТÑ\83Ñ\82 ви можеÑ\82е ознайомиÑ\82иÑ\81Ñ\8c Ñ\96з оÑ\81новами Ñ\80едагÑ\83ваннÑ\8f звâ\80\99Ñ\8fзкÑ\96в.\n\nÐ\94лÑ\8f Ñ\82ого, Ñ\89об додаÑ\82и обâ\80\99Ñ\94кÑ\82 до звâ\80\99Ñ\8fзкÑ\83, наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c на кнопкÑ\83 «+» в Ñ\80оздÑ\96лÑ\96\n«Ð\92Ñ\81Ñ\96 звâ\80\99Ñ\8fзки» на боковÑ\96й панелÑ\96 Ñ\82а обеÑ\80Ñ\96Ñ\82Ñ\8c Ñ\82ип Ñ\82а назвÑ\83 звâ\80\99Ñ\8fзкÑ\83.\n\nЩоб Ñ\81Ñ\82воÑ\80иÑ\82и новий звâ\80\99Ñ\8fзок, видÑ\96лÑ\96Ñ\82Ñ\8c обâ\80\99Ñ\94кÑ\82, Ñ\8fкий повинен вÑ\85одиÑ\82и до його\nÑ\81кладÑ\83, наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c «+» в Ñ\80оздÑ\96лÑ\96 «Ð\92Ñ\81Ñ\96 звâ\80\99Ñ\8fзки» Ñ\82а обеÑ\80Ñ\96Ñ\82Ñ\8c «Ð\9dовий звâ\80\99Ñ\8fзокâ\80¦Â».\n\nÐ\94лÑ\8f вилÑ\83Ñ\87еннÑ\8f обâ\80\99Ñ\94кÑ\82а зÑ\96 звâ\80\99Ñ\8fзкÑ\83 â\80\94 видÑ\96лÑ\96Ñ\82Ñ\8c обâ\80\99Ñ\94кÑ\82 Ñ\82а наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c на знаÑ\87ок\nÑ\81мÑ\96Ñ\82ника поÑ\80Ñ\83Ñ\87 Ñ\96з звâ\80\99Ñ\8fзком, з Ñ\8fкого ви бажаÑ\94Ñ\82е вилÑ\83Ñ\87иÑ\82и обâ\80\99Ñ\94кÑ\82.\n\nÐ\92и можеÑ\82е Ñ\81Ñ\82воÑ\80иÑ\82и мÑ\83лÑ\8cÑ\82иполÑ\96гон Ñ\96з дÑ\96Ñ\80ками Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83менÑ\82ом «Ð\9eбâ\80\99Ñ\94днаÑ\82и». Ð\9dакÑ\80еÑ\81лÑ\96Ñ\82Ñ\8c\nдва полÑ\96гони (зовнÑ\96Ñ\88нÑ\96й Ñ\82а внÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\96й), видÑ\96лÑ\96Ñ\82Ñ\8c Ñ\97Ñ\85 утримуючи натиснутим Shift,\nпотім натисніть на клавішу «Об’єднати» (+).\n"
+ "relations": "# Ð\97вâ\80\99Ñ\8fзки\n\nÐ\97вâ\80\99Ñ\8fзки Ñ\94 певним Ñ\82ипом обâ\80\99Ñ\94кÑ\82Ñ\96в в OpenStreetMap, Ñ\8fкÑ\96 Ñ\81кладаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f з Ñ\96нÑ\88иÑ\85\nобâ\80\99Ñ\94кÑ\82Ñ\96в. Ð\9dапÑ\80иклад, двома найпоÑ\88иÑ\80енÑ\96Ñ\88ими Ñ\82ипами звâ\80\99Ñ\8fзкÑ\96в Ñ\94 *маÑ\80Ñ\88Ñ\80Ñ\83Ñ\82и*,\nдо Ñ\81кладÑ\83 Ñ\8fкиÑ\85 вÑ\85одÑ\8fÑ\82Ñ\8c Ñ\87аÑ\81Ñ\82ини доÑ\80Ñ\96г, по Ñ\8fкиÑ\85 пÑ\80оÑ\85одиÑ\82Ñ\8c певна авÑ\82омагÑ\96Ñ\81Ñ\82Ñ\80алÑ\8c,\nÑ\82а *мÑ\83лÑ\8cÑ\82иполÑ\96гони*, Ñ\8fкÑ\96 обâ\80\99Ñ\94днÑ\83Ñ\8eÑ\82Ñ\8c кÑ\96лÑ\8cка Ñ\80Ñ\96зниÑ\85 лÑ\96нÑ\96й длÑ\8f Ñ\83Ñ\82воÑ\80еннÑ\8f обâ\80\99Ñ\94кÑ\82а\nÑ\81кладноÑ\97 Ñ\84оÑ\80ми (напÑ\80иклад, Ñ\82акий Ñ\89о Ñ\81кладаÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\96з кÑ\96лÑ\8cкоÑ\85 Ñ\87аÑ\81Ñ\82ин, або\nмаÑ\94 дÑ\96Ñ\80кÑ\83, Ñ\8fк бÑ\83блик).\n\nÐ\9eбâ\80\99Ñ\94кÑ\82и в звâ\80\99Ñ\8fзкÑ\83 називаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f *Ñ\87ленами*. Ð\9dа боковÑ\96й панелÑ\96 ви можеÑ\82е\nбаÑ\87иÑ\82и Ñ\87леном Ñ\8fкого звâ\80\99Ñ\8fзкÑ\83 Ñ\94 обâ\80\99Ñ\94кÑ\82, Ñ\82а клаÑ\86нÑ\83вÑ\88и на звâ\80\99Ñ\8fзок, маÑ\94Ñ\82е\nможливÑ\96Ñ\81Ñ\82Ñ\8c видÑ\96лиÑ\82и його. Ð\9aоли звâ\80\99Ñ\8fзок видÑ\96лено, ви можеÑ\82е побаÑ\87иÑ\82и вÑ\81Ñ\96Ñ\85\nйого Ñ\87ленÑ\96в на боковÑ\96й панелÑ\96, звâ\80\99Ñ\8fзок Ñ\82акож бÑ\83де пÑ\96дÑ\81вÑ\96Ñ\87ений на мапÑ\96.\n\nÐ\97дебÑ\96лÑ\8cÑ\88ого iD пÑ\96клÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f пÑ\80о авÑ\82омаÑ\82иÑ\87нÑ\83 обÑ\80обкÑ\83 звâ\80\99Ñ\8fзкÑ\96в\nпÑ\96д Ñ\87аÑ\81 Ñ\80едагÑ\83ваннÑ\8f. Ð\93оловне, Ñ\89о поÑ\82Ñ\80Ñ\96бно запамâ\80\99Ñ\8fÑ\82аÑ\82и, Ñ\82ак Ñ\86е Ñ\82е, Ñ\8fкÑ\89о\nви вилÑ\83Ñ\87иÑ\82е лÑ\96нÑ\96Ñ\8e, длÑ\8f Ñ\82ого, Ñ\89об Ñ\97Ñ\97 нанеÑ\81Ñ\82и Ñ\82оÑ\87нÑ\96Ñ\88е, вам Ñ\82Ñ\80еба пеÑ\80еконаÑ\82иÑ\81Ñ\8c\nв Ñ\82омÑ\83, Ñ\89о нова лÑ\96нÑ\96Ñ\8f бÑ\83де вклÑ\8eÑ\87ена до Ñ\81кладÑ\83 Ñ\82ого ж звâ\80\99Ñ\8fзкÑ\83, Ñ\89о й \nоÑ\80игÑ\96налÑ\8cна.\n\n## РедагÑ\83ваннÑ\8f звâ\80\99Ñ\8fзкÑ\96в\n\nТÑ\83Ñ\82 ви можеÑ\82е ознайомиÑ\82иÑ\81Ñ\8c Ñ\96з оÑ\81новами Ñ\80едагÑ\83ваннÑ\8f звâ\80\99Ñ\8fзкÑ\96в.\n\nÐ\94лÑ\8f Ñ\82ого, Ñ\89об додаÑ\82и обâ\80\99Ñ\94кÑ\82 до звâ\80\99Ñ\8fзкÑ\83, наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c на кнопкÑ\83 «+» в Ñ\80оздÑ\96лÑ\96\n«Ð\92Ñ\81Ñ\96 звâ\80\99Ñ\8fзки» на боковÑ\96й панелÑ\96 Ñ\82а обеÑ\80Ñ\96Ñ\82Ñ\8c Ñ\82ип Ñ\82а назвÑ\83 звâ\80\99Ñ\8fзкÑ\83.\n\nЩоб Ñ\81Ñ\82воÑ\80иÑ\82и новий звâ\80\99Ñ\8fзок, видÑ\96лÑ\96Ñ\82Ñ\8c обâ\80\99Ñ\94кÑ\82, Ñ\8fкий повинен вÑ\85одиÑ\82и до його\nÑ\81кладÑ\83, наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c «+» в Ñ\80оздÑ\96лÑ\96 «Ð\92Ñ\81Ñ\96 звâ\80\99Ñ\8fзки» Ñ\82а обеÑ\80Ñ\96Ñ\82Ñ\8c «Ð\9dовий звâ\80\99Ñ\8fзокâ\80¦Â».\n\nÐ\94лÑ\8f вилÑ\83Ñ\87еннÑ\8f обâ\80\99Ñ\94кÑ\82а зÑ\96 звâ\80\99Ñ\8fзкÑ\83 â\80\94 видÑ\96лÑ\96Ñ\82Ñ\8c обâ\80\99Ñ\94кÑ\82 Ñ\82а наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c на знаÑ\87ок\nÑ\81мÑ\96Ñ\82ника поÑ\80Ñ\83Ñ\87 Ñ\96з звâ\80\99Ñ\8fзком, з Ñ\8fкого ви бажаÑ\94Ñ\82е вилÑ\83Ñ\87иÑ\82и обâ\80\99Ñ\94кÑ\82.\n\nÐ\92и можеÑ\82е Ñ\81Ñ\82воÑ\80иÑ\82и мÑ\83лÑ\8cÑ\82иполÑ\96гон Ñ\96з дÑ\96Ñ\80ками Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83менÑ\82ом «Ð\9eбâ\80\99Ñ\94днаÑ\82и». Ð\9dакÑ\80еÑ\81лÑ\96Ñ\82Ñ\8c\nдва полÑ\96гони (зовнÑ\96Ñ\88нÑ\96й Ñ\82а внÑ\83Ñ\82Ñ\80Ñ\96Ñ\88нÑ\96й), видÑ\96лÑ\96Ñ\82Ñ\8c Ñ\97Ñ\85, утримуючи натиснутим Shift,\nпотім натисніть на клавішу «Об’єднати» (+).\n"
},
"intro": {
"navigation": {
"title": "Пересування",
"drag": "На основній області редагування мапи показуються дані OpenStreetMap над зображенням тла. Ви можете рухатись мапою перетягуючи її так само, як і на будь якій іншій веб-мапі. **Потягніть мапу!**",
- "select": "Ð\9eбâ\80\99Ñ\94кÑ\82и мапи пÑ\80едÑ\81Ñ\82авленÑ\96 Ñ\82Ñ\80Ñ\8cома Ñ\81поÑ\81обами: Ñ\82оÑ\87ками, лÑ\96нÑ\96Ñ\8fми Ñ\82а полÑ\96гонами. Ð\94лÑ\8f Ñ\82ого Ñ\89об Ñ\97Ñ\85 видÑ\96лиÑ\82и Ñ\82Ñ\80еба клаÑ\86нÑ\83Ñ\82и по них. **Клацніть на точку для її виділення.**",
+ "select": "Ð\9eбâ\80\99Ñ\94кÑ\82и мапи пÑ\80едÑ\81Ñ\82авленÑ\96 Ñ\82Ñ\80Ñ\8cома Ñ\81поÑ\81обами: Ñ\82оÑ\87ками, лÑ\96нÑ\96Ñ\8fми Ñ\82а полÑ\96гонами. Ð\94лÑ\8f Ñ\82ого Ñ\89об Ñ\97Ñ\85 видÑ\96лиÑ\82и Ñ\82Ñ\80еба клаÑ\86нÑ\83Ñ\82и на них. **Клацніть на точку для її виділення.**",
"header": "В заголовку показується тип об’єкта.",
- "pane": "Ð\9aоли обâ\80\99Ñ\94кÑ\82 мапи видÑ\96лено, зâ\80\99Ñ\8fвлÑ\8fÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\80едакÑ\82оÑ\80 його влаÑ\81Ñ\82ивоÑ\81Ñ\82ей. Ð\92 заголовкÑ\83 бÑ\83де показаний Ñ\82ип обâ\80\99Ñ\94кÑ\82а, а на головнÑ\96й панелÑ\96 â\80\94 аÑ\82Ñ\80ибÑ\83Ñ\82и обâ\80\99Ñ\94кÑ\82а, Ñ\82акÑ\96 Ñ\8fк його назва та адреса. **Закрийте редактор об’єктів натиснувши на кнопку вгорі праворуч.**"
+ "pane": "Ð\9aоли обâ\80\99Ñ\94кÑ\82 мапи видÑ\96лено, зâ\80\99Ñ\8fвлÑ\8fÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f Ñ\80едакÑ\82оÑ\80 його влаÑ\81Ñ\82ивоÑ\81Ñ\82ей. Ð\92 заголовкÑ\83 бÑ\83де показаний Ñ\82ип обâ\80\99Ñ\94кÑ\82а, а на головнÑ\96й панелÑ\96 â\80\94 аÑ\82Ñ\80ибÑ\83Ñ\82и обâ\80\99Ñ\94кÑ\82а, Ñ\8fк оÑ\82 його назва та адреса. **Закрийте редактор об’єктів натиснувши на кнопку вгорі праворуч.**"
},
"points": {
"title": "Точки",
"choose": "**Виберіть Кафе зі списку.**",
"describe": "Тепер наша точка позначена, як кафе. Використовуючи редактор об’єктів ви можете додати більше інформації про об’єкт. **Додайте назву**",
"close": "Редактор об’єктів можна закрити клацнувши на кнопку вгорі праворуч. **Закрийте редактор об’єктів**",
- "reselect": "Часто точки вже існують, але мають помилки чи не повну інформацію. Ми можемо правити вже існуючі точки. **Виділіть щойно створену точку.**",
+ "reselect": "Часто точки вже існують, але мають помилки чи не повну інформацію. Ми можемо правити вже наявні точки. **Виділіть щойно створену точку.**",
"fixname": "**Змініть її назву та закрите редактор об’єктів.**",
"reselect_delete": "Всі об’єкти на мапі можуть бути вилучені. **Виберіть щойно створену точку.**",
"delete": "Меню навколо точки містить дії, які можна застосовувати до неї, включаючи вилучення. **Вилучіть точку.**"
},
"areas": {
"title": "Полігони",
- "add": "Ð\9fолÑ\96гони викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\82Ñ\8cÑ\81Ñ\8f, Ñ\89об показаÑ\82и межÑ\96 обâ\80\99Ñ\94кÑ\82Ñ\96в, напÑ\80иклад: озеÑ\80, бÑ\83динкÑ\96в Ñ\82еÑ\80иÑ\82оÑ\80Ñ\96Ñ\97 жиÑ\82ловоÑ\97 забÑ\83дови. Ð\87Ñ\85 Ñ\82акож викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\82Ñ\8c длÑ\8f бÑ\96лÑ\8cÑ\88 деÑ\82алÑ\8cного нанесення на мапу об’єктів, які зазвичай позначаються точками. **Натисніть на кнопку Полігон, щоб додати його до мапи.**",
+ "add": "Ð\9fолÑ\96гони викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\82Ñ\8cÑ\81Ñ\8f, Ñ\89об показаÑ\82и межÑ\96 обâ\80\99Ñ\94кÑ\82Ñ\96в, напÑ\80иклад: озеÑ\80, бÑ\83динкÑ\96в Ñ\82еÑ\80иÑ\82оÑ\80Ñ\96Ñ\97 жиÑ\82ловоÑ\97 забÑ\83дови. Ð\87Ñ\85 Ñ\82акож викоÑ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\82Ñ\8c длÑ\8f деÑ\82алÑ\8cнÑ\96Ñ\88ого нанесення на мапу об’єктів, які зазвичай позначаються точками. **Натисніть на кнопку Полігон, щоб додати його до мапи.**",
"corner": "Полігони кресляться додаванням точок на межах об’єкта. **Поставте першу точку на куті ігрового майданчика.**",
"place": "Окресліть територію, додаючи точки. Закінчіть креслення, клацнувши на першу точку. **Накресліть полігон для ігрового майданчика.**",
"search": "**Знайдіть '{name}'.**",
"intersect": "Клацніть, щоб додати ще кілька точок до лінії. Ви можете перетягувати мапу під час креслення у разі потреби. Дороги, та багато ліній інших типів є частиною великих мереж. Тому дуже важливо, щоб вони були правильно з’єднані одна з одною для того, щоб можливо було прокласти по них маршрут. **Клацніть на Flower Street, для того, щоб створити перехрещення, що з’єднує дві лінії.**",
"finish": "Закінчити креслення лінії можна клацнувши на її останню точку знов. **Закінчіть креслення дороги.**",
"road": "**Виберіть Дороги зі списку**",
- "residential": "Існує багато різних типів доріг, найбільш уживаним є Вулиця. **Виберіть Вулицю** ",
+ "residential": "Існує багато різних типів доріг, найуживанішим є Вулиця. **Виберіть Вулицю** ",
"describe": "**Додайте назву дорозі та закрите редактор об’єктів.**",
"restart": "Дорога повинна з’єднуватись з Flower Street",
"wrong_preset": "Ви не не обрали тип дороги «Дорога місцевого значення». **Спробуйте ще раз**"
},
"startediting": {
"title": "Розпочати редагування",
- "help": "Ð\91Ñ\96лÑ\8cÑ\88 докладна докÑ\83менÑ\82аÑ\86Ñ\96Ñ\8f Ñ\82а покÑ\80окове кеÑ\80Ñ\96вниÑ\86Ñ\82во знаÑ\85одиться тут.",
+ "help": "Ð\94окладнÑ\96Ñ\88а докÑ\83менÑ\82аÑ\86Ñ\96Ñ\8f Ñ\82а покÑ\80окове кеÑ\80Ñ\96вниÑ\86Ñ\82во мÑ\96Ñ\81Ñ\82иться тут.",
"save": "Не забувайте регулярно зберігати свої зміни!",
"start": "Розпочати!"
}
"fields": {
"access": {
"label": "Доступ",
- "placeholder": "Невідомо",
- "types": {
- "access": "Загальний",
- "foot": "Пішки",
- "motor_vehicle": "Автівкам",
- "bicycle": "Велосипедам",
- "horse": "Коням"
- },
"options": {
- "yes": {
- "title": "Дозволений",
- "description": "Доступ дозволений законодавчо; право проїзду"
+ "designated": {
+ "description": "Доступ дозволений відповідними знаками чи на законодавчому рівні",
+ "title": "Зазначений"
+ },
+ "destination": {
+ "description": "Доступ дозволений тільки для того, щоб дістатись місця призначення",
+ "title": "До місця призначення"
},
"no": {
- "title": "Заборонений",
- "description": "Доступ не дозволений для широкого загалу"
+ "description": "Доступ не дозволений для широкого загалу",
+ "title": "Заборонений"
},
"permissive": {
- "title": "З дозволу",
- "description": "Доступ дозволений, доки власник не вирішить інакше"
+ "description": "Доступ дозволений, доки власник не вирішить інакше",
+ "title": "З дозволу"
},
"private": {
- "title": "Приватний",
- "description": "Доступ дозволений лише за персональним дозволом власника"
- },
- "designated": {
- "title": "Зазначений",
- "description": "Доступ дозволений відповідними знаками чи на законодавчому рівні"
+ "description": "Доступ дозволений лише за персональним дозволом власника",
+ "title": "Приватний"
},
- "destination": {
- "title": "До місця призначення",
- "description": "Доступ дозволений тільки для того, щоб дістатись місця призначення"
+ "yes": {
+ "description": "Доступ дозволений законодавчо; право проїзду",
+ "title": "Дозволений"
}
+ },
+ "placeholder": "Невідомо",
+ "types": {
+ "access": "Загальний",
+ "bicycle": "Велосипедам",
+ "foot": "Пішки",
+ "horse": "Коням",
+ "motor_vehicle": "Автівкам"
}
},
"access_simple": {
"address": {
"label": "Адреса",
"placeholders": {
- "housename": "Ім’я будинку",
- "housenumber": "123",
- "street": "Вулиця",
"city": "Місто",
- "postcode": "Поштовий індекс",
- "place": "Місцевість",
- "hamlet": "Хутір",
- "suburb": "Передмістя",
- "subdistrict": "Підрайон",
+ "country": "Країна",
"district": "Район",
+ "hamlet": "Хутір",
+ "housename": "Назва будинку",
+ "housenumber": "123",
+ "place": "Місцевість",
+ "postcode": "Поштовий індекс",
"province": "Провінція",
"state": "Штат",
- "country": "Країна"
+ "street": "Вулиця",
+ "subdistrict": "Підрайон",
+ "suburb": "Передмістя"
}
},
"admin_level": {
"aerialway/access": {
"label": "Доступ",
"options": {
+ "both": "Вхід/Вихід",
"entry": "Вхід",
- "exit": "Вихід",
- "both": "Вхід/Вихід"
+ "exit": "Вихід"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Доступ влітку",
"options": {
+ "both": "Вхід/Вихід",
"entry": "Вхід",
- "exit": "Вихід",
- "both": "Вхід/Вихід"
+ "exit": "Вихід"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Напрямок",
"options": {
- "N": "Північ",
"E": "Схід",
- "S": "Південь",
- "W": "Захід",
- "NE": "Північний схід",
- "SE": "Південний схід",
- "SW": "Південний захід",
- "NW": "Північний захід",
- "NNE": "Північно-північний схід",
"ENE": "Східно-північний схід",
"ESE": "Східно-південний схід",
+ "N": "Північ",
+ "NE": "Північний схід",
+ "NNE": "Північно-північний схід",
+ "NNW": "Північно-північний захід",
+ "NW": "Північний захід",
+ "S": "Південь",
+ "SE": "Південний схід",
"SSE": "Південно-південний схід",
"SSW": "Південно-південний захід",
- "WSW": "Західно-південний захід",
+ "SW": "Південний захід",
+ "W": "Захід",
"WNW": "Західно-північний захід",
- "NNW": "Північно-північний захід"
+ "WSW": "Західно-південний захід"
}
},
"clock_direction": {
"label": "Напрямок",
"options": {
- "clockwise": "За годинниковою стрілкою",
- "anticlockwise": "Проти годинникової стрілки"
+ "anticlockwise": "Проти годинникової стрілки",
+ "clockwise": "За годинниковою стрілкою"
}
},
"collection_times": {
"construction": {
"label": "Тип"
},
+ "content": {
+ "label": "Вміст"
+ },
"country": {
"label": "Країна"
},
"description": {
"label": "Опис"
},
+ "drive_through": {
+ "label": "Проїзд біля пункту обслуговування"
+ },
"electrified": {
"label": "Електрифікація",
- "placeholder": "Контактна лінія, електрифіковані рейки…",
"options": {
"contact_line": "Контактна лінія",
+ "no": "Ні",
"rail": "Електрифіковані рейки",
- "yes": "Так (невизначено)",
- "no": "Ні"
- }
+ "yes": "Так (невизначено)"
+ },
+ "placeholder": "Контактна лінія, електрифіковані рейки…"
},
"elevation": {
- "label": "Висота"
+ "label": "Висота над р.м."
},
"emergency": {
"label": "Аварійні служби"
"label": "Тип"
},
"except": {
- "label": "Ð\92ийнÑ\8fÑ\82ки"
+ "label": "Винятки"
},
"fax": {
"label": "Факс",
"fire_hydrant/type": {
"label": "Тип",
"options": {
- "pillar": "Надземний",
+ "pillar": "Колонка/Надземний",
+ "pond": "Ставок",
"underground": "Підземний",
- "wall": "Настінний",
- "pond": "Ставок"
+ "wall": "Настінний"
}
},
"fixme": {
},
"gender": {
"label": "Стать",
- "placeholder": "Невідомо",
"options": {
- "male": "Чоловіча",
"female": "Жіноча",
+ "male": "Чоловіча",
"unisex": "Унісекс"
- }
+ },
+ "placeholder": "Невідомо"
},
"generator/method": {
"label": "Метод"
"placeholder": "Номер лунки (1-18)"
},
"handicap": {
- "label": "Ð\9fеÑ\80еÑ\88кода",
+ "label": "Ð\93андÑ\96кап",
"placeholder": "1-18"
},
"highway": {
"incline": {
"label": "Нахил"
},
+ "incline_steps": {
+ "label": "Нахил",
+ "options": {
+ "down": "Вниз",
+ "up": "Вгору"
+ }
+ },
"information": {
"label": "Тип"
},
"internet_access": {
"label": "Доступ до Інтеренету",
"options": {
- "yes": "Так",
"no": "Ні",
- "wlan": "Wifi",
+ "terminal": "Термінал",
"wired": "Дротовий",
- "terminal": "Термінал"
+ "wlan": "Wifi",
+ "yes": "Так"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Сезонність",
"options": {
- "evergreen": "Вічнозелений",
"deciduous": "Листяний",
- "semi_evergreen": "Напів-вичнозелений",
+ "evergreen": "Вічнозелений",
+ "mixed": "Змішаний",
"semi_deciduous": "Напів-лістяний",
- "mixed": "Змішаний"
+ "semi_evergreen": "Напів-вічнозелений"
}
},
"leaf_type": {
- "label": "Тип лісття",
+ "label": "Тип лисття",
"options": {
"broadleaved": "Широколисті",
- "needleleaved": "Хвоя",
+ "leafless": "Без лисття",
"mixed": "Змішана",
- "leafless": "Без лисття"
+ "needleleaved": "Хвоя"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Рівень складності для гірських велосипедів",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Твердій гравій/утрамбований ґрунт, перешкод немає, плавні повороти",
"1": "1: Деінде пухкі ділянки, невеликі перешкоди, плавні повороти",
"2": "2: Багато пухких ділянок, великі перешкоди, легкі шпильки",
- "3": "3: СлизÑ\8cкÑ\96 повеÑ\80Ñ\85нÑ\96, великÑ\96 пеÑ\80еÑ\88коди, жоÑ\80Ñ\81Ñ\82кі шпильки",
+ "3": "3: СлизÑ\8cкÑ\96 повеÑ\80Ñ\85нÑ\96, великÑ\96 пеÑ\80еÑ\88коди, кÑ\80Ñ\83Ñ\82і шпильки",
"4": "4: Відсутність твердих ділянок чи валуни, небезпечні шпильки",
"5": "5: Максимальна складність, поля валунів, зсуви",
"6": "6: Не придатне для проїзду, крім найкращих велосипедистів"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "Складність маршруту IMBA",
- "placeholder": "Легко, Середньо, Важко…",
"options": {
"0": "Найпростіший (біле коло)",
"1": "Простий (зелене коло)",
"2": "Середній (синій квадрат)",
"3": "Складний (чорний ромб)",
"4": "Надзвичайно складний (подвійний чорний ромб)"
- }
+ },
+ "placeholder": "Легко, Середньо, Важко…"
},
"mtb/scale/uphill": {
"label": "Складність підйому на гору на велосипеді",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: Нахил <10% гравій/втрамбований ґрунт, без перешкод",
"1": "1: Нахил <15%, гравій/втрамбований ґрунт, кілька невеликих перешкод",
"2": "2: Нахил <20%, стійка поверхня, невеликі камені/корені",
"3": "3: Нахил <25%, нестійка поверхня, невеликі камені/гілки",
"4": "4: Нахил <30%, поганий стан поверхні, великі камені/гілки",
- "5": "5: Нахил >30%, велоспед треба, в основному, або штовхати або нести"
- }
+ "5": "5: Нахил >30%, велоспед треба, в основному, щоб його штовхати або нести"
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "Назва",
"oneway": {
"label": "Односторонній рух",
"options": {
+ "no": "Ні",
"undefined": "Передбачається, Ні",
- "yes": "Так",
- "no": "Ні"
+ "yes": "Так"
}
},
"oneway_yes": {
"label": "Односторонній рух",
"options": {
+ "no": "Ні",
"undefined": "Передбачається, Так",
- "yes": "Так",
- "no": "Ні"
+ "yes": "Так"
}
},
"opening_hours": {
"parking": {
"label": "Тип",
"options": {
- "surface": "Покриття",
- "multi-storey": "Багаторівнева",
- "underground": "Підземна",
- "sheds": "Гаражі",
"carports": "Навіси",
"garage_boxes": "Гаражі",
- "lane": "Смуга вздовж дороги"
+ "lane": "Смуга вздовж дороги",
+ "multi-storey": "Багаторівнева",
+ "sheds": "Навіси",
+ "surface": "Покриття",
+ "underground": "Підземна"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Складність",
- "placeholder": "Легкий, Середній, Складний…",
"options": {
- "novice": "Для новачків (навчальний)",
- "easy": "Проста (зелене коло)",
- "intermediate": "Середня (синій квадрат)",
"advanced": "Складна (чорний ромб)",
+ "easy": "Проста (зелене коло)",
"expert": "Надзвичайно складна (подвійний чорний ромб)",
+ "extreme": "Екстремальний (потрібне спорядження для скелелазів)",
"freeride": "Фрірайд (без траси)",
- "extreme": "Екстремальний (потрібне спорядження для скелелазів)"
- }
+ "intermediate": "Середня (синій квадрат)",
+ "novice": "Для новачків (навчальний)"
+ },
+ "placeholder": "Легкий, Середній, Складний…"
},
"piste/grooming": {
"label": "Підготовка траси",
"options": {
- "classic": "Класична",
- "mogul": "Могул",
"backcountry": "Беккантрі",
+ "classic": "Класична",
"classic+skating": "Класична та Ковзанковий хід",
+ "mogul": "Могул",
"scooter": "Скутер/Снігохід",
"skating": "Ковзанковий хід"
}
"label": "Тип",
"options": {
"downhill": "Гірськолижна",
+ "hike": "Пішки",
+ "ice_skate": "Ковзанка",
"nordic": "Лижня",
+ "playground": "Ігровий майданчик",
"skitour": "Лижний курорт",
"sled": "Санчата",
- "hike": "Пішки",
"sleigh": "Сані",
- "ice_skate": "Ковзанка",
- "snow_park": "Зимовий парк розваг",
- "playground": "Ігровий майданчик"
+ "snow_park": "Зимовий парк розваг"
}
},
"place": {
"power": {
"label": "Тип"
},
+ "power_supply": {
+ "label": "Розетка"
+ },
"railway": {
"label": "Тип"
},
},
"sac_scale": {
"label": "Складність туристичного маршруту",
- "placeholder": "Гірський туризм, Альпінізм…",
"options": {
- "hiking": "T1: Піший туризм",
- "mountain_hiking": "T2: Гірський туризм",
- "demanding_mountain_hiking": "T3: Гірський туризм з підйомом на гору",
"alpine_hiking": "T4: Альпійський туризм",
"demanding_alpine_hiking": "T5: Альпійський туризм з підйомом на гору",
- "difficult_alpine_hiking": "T6: Складний альпінізм"
- }
+ "demanding_mountain_hiking": "T3: Гірський туризм з підйомом на гору",
+ "difficult_alpine_hiking": "T6: Складний альпінізм",
+ "hiking": "T1: Піший туризм",
+ "mountain_hiking": "T2: Гірський туризм"
+ },
+ "placeholder": "Гірський туризм, Альпінізм…"
+ },
+ "sanitary_dump_station": {
+ "label": "Злив каналізаційних відходів"
},
"seasonal": {
"label": "Сезонний"
"service": {
"label": "Тип"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Ремонт вело-ланцюгів",
"options": {
+ "no": "Ні",
"undefined": "Передбачається, Ні",
- "yes": "Так",
- "no": "Ні"
+ "yes": "Так"
}
},
"service/bicycle/pump": {
"label": "Велосипедний насос",
"options": {
+ "no": "Ні",
"undefined": "Передбачається, Ні",
- "yes": "Так",
- "no": "Ні"
+ "yes": "Так"
+ }
+ },
+ "service_rail": {
+ "label": "Тип службового шляху",
+ "options": {
+ "crossover": "Переїзд",
+ "siding": "Запасна колія",
+ "spur": "Вітка",
+ "yard": "Депо"
}
},
"shelter": {
- "label": "Ð\9dавÑ\96Ñ\81"
+ "label": "Ð\9fÑ\80иÑ\82Ñ\83лок"
},
"shelter_type": {
"label": "Тип"
},
"smoking": {
"label": "Паління",
- "placeholder": "Заборонено, окремо, дозволено,...",
"options": {
- "no": "Паління заборонено",
- "separated": "У відведених зонах, не ізольованих",
+ "dedicated": "Призначено для курців",
"isolated": "У відведених зонах, ізольованих",
+ "no": "Паління заборонено",
"outside": "Дозволено зовні",
- "yes": "Дозволено скрізь",
- "dedicated": "Призначено для курців"
- }
+ "separated": "У відведених зонах, не ізольованих",
+ "yes": "Дозволено скрізь"
+ },
+ "placeholder": "Заборонено, окремо, дозволено,..."
},
"smoothness": {
"label": "Проходимість",
- "placeholder": "Ролики, Колеса, Позашляховики…",
"options": {
+ "bad": "Міцні колеса: гібридні велосипеди, машини, рикші",
"excellent": "Ролики: роликові ковзани, скейтборди",
"good": "Вузькі колеса: гоночні велосипеди",
+ "horrible": "Позашляховики: повноцінні позашляховики",
+ "impassable": "Неможливо для будь-якої колісної техніки",
"intermediate": "Колеса: дорожні велосипеди, візки, самокати",
- "bad": "Міцні колеса: гібридні велосипеди, машини, рикші",
"very_bad": "Великий кліренс: автомобілі і малі позашляховики",
- "horrible": "Позашляховики: повноцінні позашляховики",
"very_horrible": "Спеціалізовані позашляховики: трактори, мотоусюдиходи, танки, тріалбайкі"
- }
+ },
+ "placeholder": "Ролики, Колеса, Позашляховики…"
},
"social_facility_for": {
"label": "Кого обслуговує",
},
"structure": {
"label": "Споруда",
- "placeholder": "Невідомо",
"options": {
"bridge": "Міст",
- "tunnel": "Тунель",
- "embankment": "Насип",
"cutting": "Виїмка",
- "ford": "Брід"
- }
+ "embankment": "Насип",
+ "ford": "Брід",
+ "tunnel": "Тунель"
+ },
+ "placeholder": "Невідомо"
},
"studio_type": {
"label": "Тип"
},
"takeaway": {
"label": "На винос",
- "placeholder": "Так, Ні, Тільки на винос…",
"options": {
- "yes": "Так",
"no": "Ні",
- "only": "Тільки на винос"
- }
+ "only": "Тільки на винос",
+ "yes": "Так"
+ },
+ "placeholder": "Так, Ні, Тільки на винос…"
},
"toilets/disposal": {
"label": "Тип туалету",
"options": {
- "flush": "Зливний",
- "pitlatrine": "Яма",
+ "bucket": "Відро",
"chemical": "Хімічний",
- "bucket": "Відро"
+ "flush": "Зливний",
+ "pitlatrine": "Яма"
}
},
"tourism": {
},
"tracktype": {
"label": "Тип путівця",
- "placeholder": "Тверде, переважно тверде, м’яке",
"options": {
"grade1": "Тверде: з твердим покриттям чи з ущільненою поверхнею на твердих породах",
"grade2": "Переважно тверде: гравій/камінь з домішками м’яких порід",
"grade3": "Рівна кількість твердих і м’яких матеріалів",
"grade4": "Переважно м’яке: грунт/пісок/трава з домішками твердих порід",
"grade5": "М’яке: грунт/пісок/трава"
- }
+ },
+ "placeholder": "Тверде, переважно тверде, м’яке"
},
"trail_visibility": {
"label": "Видимість маршруту",
- "placeholder": "Відмінна, Хороша, Погана,...",
"options": {
+ "bad": "Погана: без вказівників, шлях іноді відсутній",
"excellent": "Відмінна: чіткий шлях чи вказівники повсюди",
"good": "Хороша: вказівники в межах видимості, шлях не завжди чіткий",
- "intermediate": "Середня: мала кількість вказівників, шлях в основному видимий",
- "bad": "Погана: без вказівників, шлях іноді відсутній",
"horrible": "Жахлива: шлях часто відсутній, потребує навичок орієнтування",
+ "intermediate": "Середня: мала кількість вказівників, шлях в основному видимий",
"no": "Немає: шлях відсутній, потребує хороших навичок орієнтування"
- }
+ },
+ "placeholder": "Відмінна, Хороша, Погана,..."
},
"trees": {
"label": "Дерева"
"water": {
"label": "Тип"
},
+ "water_point": {
+ "label": "Заправка водою"
+ },
"waterway": {
"label": "Тип"
},
"presets": {
"address": {
"name": "Адреса",
- "terms": "Address, адреса, місце, квартира, будинок, корпус, flhtcf, vscwt, rdfhnbhf, ,elbyjr, rjhgec"
+ "terms": "address,адреса,місце,квартира,будинок,корпус,flhtcf,vscwt,rdfhnbhf,elbyjr,rjhgec"
},
"aerialway": {
"name": "Канатна дорога",
- "terms": "Aerialway, rfyfnyf ljhjuf, канатна дорога"
+ "terms": "aerialway,rfyfnyf ljhjuf,канатна дорога,підвісна дорога"
},
"aerialway/cable_car": {
"name": "Канатний трамвай",
- "terms": "Cable car, канат, трамвай, транспорт, громадський"
+ "terms": "cable car,канат,трамвай,транспорт,громадський"
},
"aerialway/chair_lift": {
"name": "Крісельний підйомник",
"name": "Станція ремонту велосипедів",
"terms": "вело-ремонт, ремонт, станція"
},
+ "amenity/biergarten": {
+ "name": "Пивний садок",
+ "terms": "пиво, лавка, їжа, тепло, напої, beer, biergarten, відпочинок"
+ },
"amenity/boat_rental": {
"name": "Прокат човнів",
"terms": "Boat Rental,ghjrfn xjdysd, катамарани, прокат човнів"
"name": "Ресторан",
"terms": "Restaurant, htcnjhfy, ресторан, їжа"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Місце зливу каналізації",
+ "terms": "каналізація,відходи,станція,послуги,кемпер,Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
+ },
"amenity/school": {
"name": "Територія школи",
"terms": "School grounds, nthbnjhsz irjkb, шкільний двір, школа"
"terms": "піщана пастка, гольф"
},
"golf/fairway": {
- "name": "ФаÑ\80ваÑ\82еÑ\80",
- "terms": "фарватер, вода, течія, маршрут"
+ "name": "ФеÑ\80вей",
+ "terms": "Fairway, Фервей, трава, низька, гладенька"
},
"golf/green": {
- "name": "Нізька трава",
- "terms": "гольф, путін грін"
+ "name": "Ґрін",
+ "terms": "green, гольф, ґрін, низька трава, лунка"
},
"golf/hole": {
"name": "Лунка",
"terms": "гольф, вода, пастка"
},
"golf/rough": {
- "name": "Ð\9dеÑ\80Ñ\96вна мÑ\96Ñ\81Ñ\86евÑ\96Ñ\81Ñ\82Ñ\8c",
- "terms": "нерівна місцевість"
+ "name": "РаÑ\84",
+ "terms": "rough, нерівна місцевість, раф, гольф"
},
"golf/tee": {
"name": "Ті",
- "terms": "гольф, початок, підставка"
+ "terms": "гольф, початок, підставка, tee"
},
"golf/water_hazard": {
"name": "Водяна пастка",
"name": "Маяк",
"terms": "Lighthouse, vfzr, сигнал, вогонь, маяк"
},
+ "man_made/mast": {
+ "name": "Радіощогла",
+ "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower, радіовежа,мобільний зв’язок,мачта,вежа,щогла,антена"
+ },
"man_made/observation": {
"name": "Оглядова вежа",
"terms": "Observation tower, jukzljdf dtf, пожежна вежа, вежа спостереження"
},
+ "man_made/petroleum_well": {
+ "name": "Нафтова свердловина",
+ "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack,нафта,насос,свердловина,викачування нафти"
+ },
"man_made/pier": {
"name": "Пірс",
"terms": "Pier, gshc, причал, пірс"
"name": "Трубопровід",
"terms": "Pipeline, nhejghjdsl, трубопровід"
},
+ "man_made/silo": {
+ "name": "Силос",
+ "terms": "grain,corn,wheat,зерно,пшениця,ячмінь,елеватор"
+ },
+ "man_made/storage_tank": {
+ "name": "Резервуар",
+ "terms": "water,oil,gas,petrol,вода,нафта,газ,бензин"
+ },
"man_made/survey_point": {
"name": "Геодезичний пункт",
"terms": "Survey Point, utjltpbxybq geyrn, місце спостереження"
"name": "Місто",
"terms": "City,vscnj, місто"
},
+ "place/farm": {
+ "name": "Ферма",
+ "terms": "farm,ферма"
+ },
"place/hamlet": {
"name": "Хутір",
"terms": "Hamlet, ensh, хутір"
"name": "Зв’язок",
"terms": "Relation, pdzpjr, зв’язок"
},
+ "roundabout": {
+ "name": "Круг",
+ "terms": "Roundabout, круг, круговий рух, коло, перехресття"
+ },
"route/ferry": {
"name": "Паром",
"terms": "Ferry Route, gfhjv, паромна переправа"
"name": "Дренажний канал",
"terms": "Drain, lhtyfybq rfyfk, стічна канава, дренаж"
},
+ "waterway/fuel": {
+ "name": "АЗС для човнів",
+ "terms": "petrol,gas,diesel,boat,пальне,бензин,дизпаливо,човен,лодка,газ"
+ },
"waterway/river": {
"name": "Ріка",
"terms": "River, hsrf, річка"
"name": "Берег ріки",
"terms": "Riverbank, thtu hsrb, берег ріки"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Місце зливу каналізації для човнів",
+ "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet,каналізація,відходи,човен,лодка,яхта"
+ },
"waterway/stream": {
"name": "Струмок",
"terms": "Stream, cnhevjr, струмок"
"multiple": "xóa {n} đối tượng"
},
"incomplete_relation": "Không thể xóa đối tượng chưa được tải về hoàn toàn.",
+ "part_of_relation": "Không thể xóa đối tượng này vì nó trực thuộc một quan hệ lớn hơn. Bạn phải gỡ nó khỏi quan hệ trước tiên.",
"connected_to_hidden": "Không thể xóa đối tượng này vì nó nối liền với một đối tượng ẩn."
},
"add_member": {
"list": "Đóng góp bởi {users}",
"truncated_list": "Đóng góp bởi {users} và {count} người khác"
},
+ "infobox": {
+ "selected": "{n} được chọn",
+ "geometry": "Hình dạng",
+ "closed": "đóng",
+ "center": "Trung tâm",
+ "perimeter": "Chu vi",
+ "length": "Chiều dài",
+ "area": "Diện tích",
+ "centroid": "Trọng tâm",
+ "location": "Vị trí",
+ "metric": "Hệ mét",
+ "imperial": "Hệ Anh"
+ },
+ "geometry": {
+ "point": "điểm",
+ "vertex": "đỉnh",
+ "line": "đường kẻ",
+ "area": "vùng",
+ "relation": "quan hệ"
+ },
"geocoder": {
"search": "Tìm kiếm trên toàn thế giới…",
"no_results_visible": "Không tìm thấy kết quả trong khu vực đang xem",
"title": "Lưu",
"help": "Lưu các thay đổi vào OpenStreetMap để cho mọi người xem.",
"no_changes": "Không có thay đổi nào để lưu.",
- "error": "Xảy ra lỗi khi lưu",
+ "error": "Đã xuất hiện lỗi khi lưu",
+ "status_code": "Máy chủ phản hồi với mã lỗi {code}",
"unknown_error_details": "Xin vui lòng chắc chắn rằng bạn được kết nối với Internet.",
"uploading": "Đang tải các thay đổi lên OpenStreetMap.",
- "unsaved_changes": "Bạn có Thay đổi Chưa lưu"
+ "unsaved_changes": "Bạn có Thay đổi Chưa lưu",
+ "conflict": {
+ "header": "Giải quyết sửa đổi mâu thuẫn",
+ "count": "Mâu thuẫn {num} trong {total}",
+ "previous": "◄ Trước",
+ "next": "Sau ►",
+ "keep_local": "Giữ của tôi",
+ "keep_remote": "Lấy của họ",
+ "restore": "Khôi phục",
+ "delete": "Không Khôi phục",
+ "download_changes": "Hoặc tải về các thay đổi của bạn.",
+ "done": "Đã hoàn tất giải quyết các mâu thuẫn!",
+ "help": "Một người khác đã thay đổi cùng một số đối tượng với bạn trên bản đồ.\nNhấn chuột vào mỗi mục bên dưới để xem chi tiết về sự mâu thuẫn và quyết định giữ thay đổi của bạn hoặc của người kia.\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "{user} đã xóa đối tượng này.",
+ "location": "Bạn và {user} đều đã di chuyển đối tượng này.",
+ "nodelist": "Bạn và {user} đều đã thay đổi các nốt của đối tượng này.",
+ "memberlist": "Bạn và {user} đều đã thay đổi các thành viên của quan hệ này.",
+ "tags": "Bạn đã đổi thẻ <b>{tag}</b> thành “{local}” trong khi {user} đã đổi nó thành “{remote}”."
+ }
},
"success": {
"edited_osm": "Bạn đã sửa đổi OSM!",
"help_html": "Các thay đổi của bạn sẽ xuất hiện trên lớp “Chuẩn” trong vòng vài phút. Một số lớp và tính năng khác có thể được cập nhật chậm hơn \n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>chi tiết</a>).\n"
},
"confirm": {
- "okay": "OK"
+ "okay": "OK",
+ "cancel": "Hủy bỏ"
},
"splash": {
"welcome": "Chào mừng bạn đến với iD, chương trình vẽ bản đồ OpenStreetMap",
},
"help": {
"title": "Trợ giúp",
- "help": "# Trợ giúp\n\nĐây là trình vẽ của [OpenStreetMap](http://www.openstreetmap.org/), bản đồ có mã nguồn mở và dữ liệu mở cho phép mọi người cùng sửa đổi. Bạn có thể sử dụng chương trình này để bổ sung và cập nhật dữ liệu bản đồ tại khu vực của bạn. Bạn có thể cải tiến bản đồ thế giới mở để cho mọi người sử dụng.\n\nCác sửa đổi của bạn trên bản đồ này sẽ xuất hiện cho mọi người dùng OpenStreetMap. Để sửa bản đồ, bạn cần có một [tài khoản OpenStreetMap miễn phí](https://www.openstreetmap.org/user/new).\n\n[Tình vẽ iD](http://ideditor.com/) là một dự án cộng tác và xuất bản [tất cả mã nguồn tại GitHub](https://github.com/openstreetmap/iD).\n",
+ "help": "# Trợ giúp\n\nĐây là trình vẽ của [OpenStreetMap](http://www.openstreetmap.org/), bản đồ có mã nguồn mở và dữ liệu mở cho phép mọi người cùng sửa đổi. Bạn có thể sử dụng chương trình này để bổ sung và cập nhật dữ liệu bản đồ tại khu vực của bạn. Bạn có thể cải tiến bản đồ thế giới mở để cho mọi người sử dụng.\n\nCác sửa đổi của bạn trên bản đồ này sẽ xuất hiện cho mọi người dùng OpenStreetMap. Để sửa bản đồ, bạn cần phải [đăng nhập](https://www.openstreetmap.org/login).\n\n[Trình vẽ iD](http://ideditor.com/) là một dự án cộng tác và xuất bản [tất cả mã nguồn tại GitHub](https://github.com/openstreetmap/iD). \n",
"editing_saving": "# Sửa đổi & Lưu giữ\n\nĐây là một chương trình vẽ trực tuyến, hiện tại bạn đang truy cập nó qua một trang Web.\n\n### Lựa chọn Đối tượng\n\nĐể lựa chọn một đối tượng, thí dụ con đường hay một điểm, nhấn chuột vào nó trên bản đồ. Khi đối tượng được chọn, bạn sẽ thấy một biểu mẫu ở bên phải chứa các chi tiết về đối tượng, cũng như một trình đơn giống bảng màu của họa sĩ chứa các tác vụ để thực hiện với đối tượng.\n\nĐể lựa chọn nhiều đối tượng cùng lúc, nhấn giữ phím Shift và nhấn chuột vào từng đối tượng một. Thay thế, nhấn giữ Shift và kéo chuột trên bản đồ để vẽ hộp bao. Các đối tượng nằm vào hộp này sẽ được chọn.\n\n### Lưu giữ Sửa đổi\n\nKhi bạn sửa đổi các tuyến đường, tòa nhà, và địa điểm, các thay đổi này được lưu giữ trên máy cho đến khi bạn đăng nó lên máy chủ. Đừng lo nhầm lẫn: chỉ việc nhấn vào các nút Hoàn tác và Làm lại.\n\nNhấn “Lưu” để hoàn thành các sửa đổi, thí dụ bạn vừa vẽ xong một khu và muốn bắt đầu vẽ khu mới. Trình vẽ sẽ trình bày các thay đổi để bạn xem lại, cũng như các gợi ý và cảnh báo nếu bạn đã sửa nhầm lẫn.\n\nSau khi vẽ xong, bạn sẽ nhập lời tóm lược các thay đổi và nhấn “Lưu” lần nữa để đăng các thay đổi lên [OpenStreetMap.org](http://www.openstreetmap.org/). Các thay đổi sẽ xuất hiện tại trang web này để mọi người xem và cập nhật nếu có sai sót.\n\nNếu bạn chưa xong mà cần rời khỏi máy tính, bạn có thể đóng trình vẽ này. Lần sau trở lại, trình vẽ này sẽ cho phép khôi phục các thay đổi chưa lưu của bạn (miễn là bạn sử dụng cùng máy tính và trình duyệt).\n",
"roads": "# Đường sá\n\nTrình vẽ này cho phép tạo, sửa, và xóa các con đường. Con đường không nhất thiết phải là đường phố: có thể vẽ đường cao tốc, đường mòn, đường đi bộ, đường xe đạp…\n\n### Lựa chọn\n\nNhấn vào con đường để lựa chọn nó. Con đường sẽ được tô sáng, một trình đơn công cụ sẽ xuất hiện bên cạnh đường, và thanh bên sẽ trình bày các chi tiết của con đường.\n\n### Sửa đổi\n\nNhiều khi bạn sẽ gặp những con đường bị chệch đối với hình nền hoặc tuyến đường GPS. Bạn có thể chỉnh lại các con đường này để chính xác hơn.\n\nTrước tiên, nhấn vào con đường cần chỉnh lại. Đường sẽ được tô sáng và các nốt sẽ xuất hiện để bạn kéo sang vị trí đúng hơn. Để thêm chi tiết, nhấn đúp vào một khúc đường chưa có nốt, và một nốt mới sẽ xuất hiện để bạn kéo.\n\nNếu con đường nối với đường khác trên thực tiếp, nhưng trên bản đồ thì chưa nối liền, hãy kéo một nốt của một con đường sang đường kia để nối liền hai con đường. Nối liền các đường tại giao lộ là một điều rất quan trọng tăng khả năng chỉ đường.\n\nĐể di chuyển toàn bộ con đường cùng lúc, nhấn vào công cụ “Di chuyển” hoặc nhấn phím tắt `M`, chuyển chuột sang vị trí mới, rồi nhấn chuột để hoàn thành việc di chuyển.\n\n### Xóa\n\nHãy tưởng tượng bạn gặp một con đường hoàn toàn sai: bạn không thấy được con đường trong hình ảnh trên không và, theo lý tưởng, cũng đã ghé vào chỗ đó để xác nhận rằng nó không tồn tại. Nếu trường hợp này, bạn có thể xóa con đường hoàn toàn khỏi bản đồ. Xin cẩn thận khi xóa đối tượng: giống như mọi sửa đổi khác, mọi người sẽ thấy được kết quả. Ngoài ra, hình ảnh trên không nhiều khi lỗi thời – con đường có thể mới xây – thành thử tốt nhất là ghé vào chỗ đó để quan sát chắc chắn, nếu có thể.\n\nĐể xóa một con đường, lựa chọn nó bằng cách nhấn vào nó, rồi nhấn vào hình thùng rác hoặc nhấn phím Delete.\n\n### Tạo mới\n\nBạn có tìm ra một con đường chưa được vẽ trên bản đồ? Hãy bắt đầu vẽ đường kẻ mới bằng cách nhấn vào nút “Đường” ở phía trên bên trái của trình vẽ, hoặc nhấn phím tắt `2`.\n\nNhấn vào bản đồ tại điểm bắt đầu của con đường. Hoặc nếu con đường chia ra từ đường khác đã tồn tại, trước tiên nhấn chuột tại giao lộ giữa hai con đường này.\n\nSau đó, nhấn chuột lần lượt theo lối đường dùng hình ảnh trên không hoặc tuyến đường GPS. Khi nào con đường giao với đường khác, nhấn chuột tại giao lộ để nối liền hai con đường này. Sau khi vẽ xong, nhấn đúp vào nốt cuối dùng hoặc nhấn phím Return hay Enter.\n",
"gps": "# GPS\n\nHệ thống định vị toàn cầu, còn gọi GPS, là nguồn dữ liệu tin tưởng nhất trong dự án OpenStreetMap. Trình vẽ này hỗ trợ các tuyến đường thu thập được từ máy GPS, tức tập tin `.gpx` trên máy tính của bạn. Bạn có thể thu loại tuyến đường GPS này bằng một ứng dụng cài đặt trên điện thoại thông minh hoặc máy thu GPS, chẳng hạn máy Garmin.\n\nĐọc thêm về cách thu thập dữ liệu bằng GPS tại “[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/)”.\n\nĐể sử dụng một tuyến đường GPX trong việc vẽ bản đồ, kéo thả tập tin GPX vào trình vẽ bản đồ này. Nếu trình vẽ nhận ra tuyến đường, tuyến đường sẽ được tô màu hồng sẫm trên bản đồ. Mở hộp “Dữ liệu Bản đồ” ở thanh công cụ bên phải để bật tắt hoặc thu phóng lớp GPX này.\n\nTuyến đường GPX không được tải lên OpenStreetMap trực tiếp. Cách tốt nhất để sử dụng nó là vạch đường theo nó trên bản đồ, cũng như [tải nó lên OpenStreetMap](http://www.openstreetmap.org/trace/create) để cho người khác sử dụng.\n",
"fields": {
"access": {
"label": "Quyền Truy cập",
- "placeholder": "Không rõ",
- "types": {
- "access": "Tổng quát",
- "foot": "Người Đi bộ",
- "motor_vehicle": "Xe cộ",
- "bicycle": "Xe đạp",
- "horse": "Ngựa"
- },
"options": {
- "yes": {
- "title": "Cho phép",
- "description": "Mọi người được phép truy cập theo luật pháp"
+ "designated": {
+ "description": "Được xây với mục đích cho phép vận chuyển bằng phương thức này, theo bảng hay luật pháp địa phương",
+ "title": "Theo mục đích"
+ },
+ "destination": {
+ "description": "Chỉ cho phép truy cập để tới nơi",
+ "title": "Nơi đến"
},
"no": {
- "title": "Cấm",
- "description": "Công chúng không được phép truy cập"
+ "description": "Công chúng không được phép truy cập",
+ "title": "Cấm"
},
"permissive": {
- "title": "Chủ cho phép",
- "description": "Chủ cho phép rộng rãi nhưng có thể cấm sau"
+ "description": "Chủ cho phép rộng rãi nhưng có thể cấm sau",
+ "title": "Chủ cho phép"
},
"private": {
- "title": "Tư nhân",
- "description": "Chỉ có những người được chủ cho phép truy cập"
- },
- "designated": {
- "title": "Theo mục đích",
- "description": "Được xây với mục đích cho phép vận chuyển bằng phương thức này, theo bảng hay luật pháp địa phương"
+ "description": "Chỉ có những người được chủ cho phép truy cập",
+ "title": "Tư nhân"
},
- "destination": {
- "title": "Nơi đến",
- "description": "Chỉ cho phép truy cập để tới nơi"
+ "yes": {
+ "description": "Mọi người được phép truy cập theo luật pháp",
+ "title": "Cho phép"
}
+ },
+ "placeholder": "Không rõ",
+ "types": {
+ "access": "Tổng quát",
+ "bicycle": "Xe đạp",
+ "foot": "Người Đi bộ",
+ "horse": "Ngựa",
+ "motor_vehicle": "Xe cộ"
}
},
"access_simple": {
"address": {
"label": "Địa chỉ",
"placeholders": {
+ "city": "Thành phố/thị xã",
+ "country": "Quốc gia",
+ "district": "Quận/thị xã/huyện",
+ "hamlet": "Thôn",
"housename": "Tên nhà",
"housenumber": "123",
- "street": "Đường",
- "city": "Thành phố/thị xã",
- "postcode": "Mã bưu chính",
"place": "Địa phương",
- "hamlet": "Thôn",
- "suburb": "Khu phố",
- "subdistrict": "Phường/xã/thị trấn",
- "district": "Quận/thị xã/huyện",
+ "postcode": "Mã bưu chính",
"province": "Tỉnh",
"state": "Tiểu bang",
- "country": "Quốc gia"
+ "street": "Đường",
+ "subdistrict": "Phường/xã/thị trấn",
+ "suburb": "Khu phố"
}
},
"admin_level": {
"aerialway/access": {
"label": "Quyền Truy cập",
"options": {
+ "both": "Ra vào",
"entry": "Vào",
- "exit": "Ra",
- "both": "Ra vào"
+ "exit": "Ra"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "Quyền Truy cập (Mùa hè)",
"options": {
+ "both": "Ra vào",
"entry": "Vào",
- "exit": "Ra",
- "both": "Ra vào"
+ "exit": "Ra"
}
},
"aeroway": {
"cardinal_direction": {
"label": "Chiều",
"options": {
- "N": "Bắc",
"E": "Đông",
- "S": "Nam",
- "W": "Tây",
- "NE": "Đông Bắc",
- "SE": "Đông Nam",
- "SW": "Tây Nam",
- "NW": "Tây Bắc",
- "NNE": "Bắc Đông Bắc",
"ENE": "Đông Đông Bắc",
"ESE": "Đông Đông Nam",
+ "N": "Bắc",
+ "NE": "Đông Bắc",
+ "NNE": "Bắc Đông Bắc",
+ "NNW": "Bắc Tây Bắc",
+ "NW": "Tây Bắc",
+ "S": "Nam",
+ "SE": "Đông Nam",
"SSE": "Nam Đông Nam",
"SSW": "Nam Tây Nam",
- "WSW": "Tây Tây Nam",
+ "SW": "Tây Nam",
+ "W": "Tây",
"WNW": "Tây Tây Bắc",
- "NNW": "Bắc Tây Bắc"
+ "WSW": "Tây Tây Nam"
}
},
"clock_direction": {
"label": "Chiều",
"options": {
- "clockwise": "Theo Chiều kim Đồng hồ",
- "anticlockwise": "Ngược Chiều kim Đồng hồ"
+ "anticlockwise": "Ngược Chiều kim Đồng hồ",
+ "clockwise": "Theo Chiều kim Đồng hồ"
}
},
"collection_times": {
"construction": {
"label": "Kiểu"
},
+ "content": {
+ "label": "Đồ Chứa đựng"
+ },
"country": {
"label": "Quốc gia"
},
"description": {
"label": "Miêu tả"
},
+ "drive_through": {
+ "label": "Lối Mua hàng trên Xe"
+ },
"electrified": {
"label": "Điện khí hóa",
- "placeholder": "Dây điện Bên trên, Đường ray Điện…",
"options": {
"contact_line": "Dây điện Bên trên",
+ "no": "Không có",
"rail": "Đường ray Điện",
- "yes": "Có (không xác định)",
- "no": "Không có"
- }
+ "yes": "Có (không xác định)"
+ },
+ "placeholder": "Dây điện Bên trên, Đường ray Điện…"
},
"elevation": {
"label": "Cao độ"
"label": "Kiểu",
"options": {
"pillar": "Cột",
+ "pond": "Ao",
"underground": "Dưới đất",
- "wall": "Tường",
- "pond": "Ao"
+ "wall": "Tường"
}
},
"fixme": {
},
"gender": {
"label": "Giới tính",
- "placeholder": "Không rõ",
"options": {
- "male": "Nam",
"female": "Nữ",
+ "male": "Nam",
"unisex": "Chung"
- }
+ },
+ "placeholder": "Không rõ"
},
"generator/method": {
"label": "Phương pháp"
"label": "ICAO"
},
"incline": {
- "label": "Nghiêng"
+ "label": "Độ dốc"
+ },
+ "incline_steps": {
+ "label": "Độ dốc",
+ "options": {
+ "down": "Xuống",
+ "up": "Lên"
+ }
},
"information": {
"label": "Kiểu"
"internet_access": {
"label": "Truy cập Internet",
"options": {
- "yes": "Có",
"no": "Không có",
- "wlan": "Wi-Fi",
+ "terminal": "Máy tính công cộng",
"wired": "Qua dây điện",
- "terminal": "Máy tính công cộng"
+ "wlan": "Wi-Fi",
+ "yes": "Có"
}
},
"lamp_type": {
"leaf_cycle": {
"label": "Thời gian Mọc Lá",
"options": {
- "evergreen": "Thường xanh",
"deciduous": "Rụng Lá",
- "semi_evergreen": "Bán Thường xanh",
+ "evergreen": "Thường xanh",
+ "mixed": "Pha trộn",
"semi_deciduous": "Bán Rụng Lá",
- "mixed": "Pha trộn"
+ "semi_evergreen": "Bán Thường xanh"
}
},
"leaf_type": {
"label": "Loại Lá",
"options": {
"broadleaved": "Hình Quạt",
- "needleleaved": "Hình Kim",
+ "leafless": "Không có",
"mixed": "Pha trộn",
- "leafless": "Không có"
+ "needleleaved": "Hình Kim"
}
},
"leisure": {
},
"mtb/scale": {
"label": "Độ hiểm trở Đạp xe Leo núi",
- "placeholder": "0, 1, 2, 3…",
"options": {
"0": "0: Sỏi/đất chắc, không có trở ngại, uốn từ từ",
"1": "1: Mặt có một tí phần không chặt, trở ngại nhỏ, uốn từ từ",
"4": "4. Mặt không chặt hoặc hòn đá, chữ chi nguy hiểm",
"5": "5. Cực hiểm trở, sân đầy hòn đá, lở đất",
"6": "6. Không thể đạp xe trừ những người lão luyện nhất"
- }
+ },
+ "placeholder": "0, 1, 2, 3…"
},
"mtb/scale/imba": {
"label": "Độ hiểm trở Đường mòn IMBA",
- "placeholder": "Dễ, Trung bình, Khó…",
"options": {
"0": "Dễ nhất (hình tròn màu trắng)",
"1": "Dễ (hình tròn màu xanh lục)",
"2": "Trung bình (hình vuông màu xanh lam)",
"3": "Khó (hình thoi màu đen)",
"4": "Cực Khó (2 hình thoi màu đen)"
- }
+ },
+ "placeholder": "Dễ, Trung bình, Khó…"
},
"mtb/scale/uphill": {
"label": "Độ hiểm trở Đạp xe Leo lên núi",
- "placeholder": "0, 1, 2, 3…",
"options": {
"0": "0: Độ dốc trung bình <10%, sỏi/đất chắc, không có trở ngại",
"1": "1: Độ dốc trung bình <15%, sỏi/đất chắc, vài thứ nhỏ",
"3": "3: Độ dốc trung bình <25%, mặt thay đổi, đá/rễ bằng cỡ tay",
"4": "4: Độ dốc trung bình <30%, phẩm chất kém, đá/rễ lớn",
"5": "5: Rất dốc, thường phải đẩy hoặc vác xe đạp"
- }
+ },
+ "placeholder": "0, 1, 2, 3…"
},
"name": {
"label": "Tên",
"oneway": {
"label": "Một chiều",
"options": {
+ "no": "Không phải",
"undefined": "Có lẽ Không phải",
- "yes": "Một chiều",
- "no": "Không phải"
+ "yes": "Một chiều"
}
},
"oneway_yes": {
"label": "Một chiều",
"options": {
+ "no": "Không phải",
"undefined": "Có lẽ Một chiều",
- "yes": "Một chiều",
- "no": "Không phải"
+ "yes": "Một chiều"
}
},
"opening_hours": {
"parking": {
"label": "Kiểu",
"options": {
- "surface": "Ngoài trời",
- "multi-storey": "Cao tầng",
- "underground": "Ngầm",
- "sheds": "Lán",
"carports": "Nhà xe",
"garage_boxes": "Ga ra",
- "lane": "Làn đường"
+ "lane": "Làn đường",
+ "multi-storey": "Cao tầng",
+ "sheds": "Lán",
+ "surface": "Ngoài trời",
+ "underground": "Ngầm"
}
},
"phone": {
},
"piste/difficulty": {
"label": "Độ Hiểm trở",
- "placeholder": "Dễ, Trung bình, Nâng cao…",
"options": {
- "novice": "Tập",
- "easy": "Dễ (Mỹ: tròn lục; Âu: xanh lục; Nhật: lục)",
- "intermediate": "Trung bình (Mỹ: vuông lam; Âu: đỏ; Nhật: đỏ)",
"advanced": "Nâng cao (Mỹ: thoi đen; Âu: đen; Nhật: đen)",
+ "easy": "Dễ (Mỹ: tròn lục; Âu: xanh lục; Nhật: lục)",
"expert": "Lão luyện (Mỹ: 2 thoi đen; Âu: cam)",
+ "extreme": "Cực độ (cần thiết bị leo núi)",
"freeride": "Tự do (xa đường; Âu: vàng)",
- "extreme": "Cực độ (cần thiết bị leo núi)"
- }
+ "intermediate": "Trung bình (Mỹ: vuông lam; Âu: đỏ; Nhật: đỏ)",
+ "novice": "Tập"
+ },
+ "placeholder": "Dễ, Trung bình, Nâng cao…"
},
"piste/grooming": {
"label": "Kiểu Ủi Tuyết",
"options": {
- "classic": "Cổ điển",
- "mogul": "Mogul",
"backcountry": "Hẻo lánh",
+ "classic": "Cổ điển",
"classic+skating": "Cổ điển và Trượt băng",
+ "mogul": "Mogul",
"scooter": "Xe máy Trượt tuyết",
"skating": "Trượt băng"
}
"label": "Kiểu",
"options": {
"downhill": "Xuống dốc",
+ "hike": "Đi bộ đường dài",
+ "ice_skate": "Trượt băng",
"nordic": "Trượt tuyết Bắc Âu",
+ "playground": "Vui chơi",
"skitour": "Skitour",
"sled": "Xe Trượt tuyết",
- "hike": "Đi bộ đường dài",
"sleigh": "Xe trượt tuyết",
- "ice_skate": "Trượt băng",
- "snow_park": "Vườn Tuyết",
- "playground": "Vui chơi"
+ "snow_park": "Vườn Tuyết"
}
},
"place": {
"power": {
"label": "Kiểu"
},
+ "power_supply": {
+ "label": "Nguồn Điện"
+ },
"railway": {
"label": "Kiểu"
},
},
"sac_scale": {
"label": "Độ hiểm trở Đi bộ Đường dài",
- "placeholder": "Đi bộ Đường dài Núi, Đi bộ Đường dài Anpơ…",
"options": {
- "hiking": "T1: Đi bộ Đường dài",
- "mountain_hiking": "T2: Đi bộ Đường dài Núi",
- "demanding_mountain_hiking": "T3: Đi bộ Đường dài Núi Rán sức",
"alpine_hiking": "T4: Đi bộ Đường dài Anpơ",
"demanding_alpine_hiking": "T5: Đi bộ Đường dài Anpơ Rán sức",
- "difficult_alpine_hiking": "T6: Đi bộ Đường dài Anpơ Khó"
- }
+ "demanding_mountain_hiking": "T3: Đi bộ Đường dài Núi Rán sức",
+ "difficult_alpine_hiking": "T6: Đi bộ Đường dài Anpơ Khó",
+ "hiking": "T1: Đi bộ Đường dài",
+ "mountain_hiking": "T2: Đi bộ Đường dài Núi"
+ },
+ "placeholder": "Đi bộ Đường dài Núi, Đi bộ Đường dài Anpơ…"
+ },
+ "sanitary_dump_station": {
+ "label": "Trạm Đổ Chất thải Vệ sinh"
},
"seasonal": {
"label": "Tùy Mùa"
"service": {
"label": "Kiểu"
},
- "service/bicycle/chaintool": {
+ "service/bicycle/chain_tool": {
"label": "Dụng cụ Cắt Xích",
"options": {
+ "no": "Không có",
"undefined": "Có lẽ Không có",
- "yes": "Có",
- "no": "Không có"
+ "yes": "Có"
}
},
"service/bicycle/pump": {
"label": "Bơm",
"options": {
+ "no": "Không có",
"undefined": "Có lẽ Không có",
- "yes": "Có",
- "no": "Không có"
+ "yes": "Có"
+ }
+ },
+ "service_rail": {
+ "label": "Kiểu Dịch vụ",
+ "options": {
+ "crossover": "Đường Xuyên chéo",
+ "siding": "Đường Tránh",
+ "spur": "Đường Nhánh",
+ "yard": "Đường Sân ga"
}
},
"shelter": {
},
"smoking": {
"label": "Hút thuốc",
- "placeholder": "Cấm, Nơi dành riêng, Cho phép…",
"options": {
- "no": "Hoàn toàn cấm hút thuốc",
- "separated": "Ở nơi hút thuốc không có tường",
+ "dedicated": "Dành riêng cho người hút thuốc (ví dụ quán hút thuốc)",
"isolated": "Ở nơi hút thuốc có tường",
+ "no": "Hoàn toàn cấm hút thuốc",
"outside": "Cho phép ở ngoài trời",
- "yes": "Cho phép ở bất cứ nơi nào",
- "dedicated": "Dành riêng cho người hút thuốc (ví dụ quán hút thuốc)"
- }
+ "separated": "Ở nơi hút thuốc không có tường",
+ "yes": "Cho phép ở bất cứ nơi nào"
+ },
+ "placeholder": "Cấm, Nơi dành riêng, Cho phép…"
},
"smoothness": {
"label": "Độ nhẵn",
- "placeholder": "Bánh xe Trượt, Bánh xe, Xa đường…",
"options": {
+ "bad": "Bánh xe Bền: Xe hơi, xích lô, xe đạp dã ngoại",
"excellent": "Bánh xe Trượt: Giày patanh, ván trượt",
"good": "Bánh xe Mỏng: Xe đạp đua",
+ "horrible": "Xa đường: Xe xa đường nặng",
+ "impassable": "Không thể qua được bằng bánh xe",
"intermediate": "Bánh xe: Xe đạp lai, xe lăn, vét pa",
- "bad": "Bánh xe Bền: Xe hơi, xích lô, xe đạp dã ngoại",
"very_bad": "Gầm Cao: Xe xa đường nhẹ",
- "horrible": "Xa đường: Xe xa đường nặng",
- "very_horrible": "Xa đường Chuyên dụng: Máy kéo, ATV",
- "impassable": "Không thể qua được bằng bánh xe"
- }
+ "very_horrible": "Xa đường Chuyên dụng: Máy kéo, ATV"
+ },
+ "placeholder": "Bánh xe Trượt, Bánh xe, Xa đường…"
},
"social_facility_for": {
"label": "Dân được phục vụ",
},
"structure": {
"label": "Cấu trúc",
- "placeholder": "Không rõ",
"options": {
"bridge": "Cầu",
- "tunnel": "Đường hầm",
- "embankment": "Đường đắp cao",
"cutting": "Đường xẻ",
- "ford": "Nơi Lội qua Sông"
- }
+ "embankment": "Đường đắp cao",
+ "ford": "Nơi Lội qua Sông",
+ "tunnel": "Đường hầm"
+ },
+ "placeholder": "Không rõ"
},
"studio_type": {
"label": "Loại"
},
"takeaway": {
"label": "Mang về",
- "placeholder": "Có, Không có, Chỉ có Mang về…",
"options": {
- "yes": "Có",
"no": "Không có",
- "only": "Chỉ có Mang về"
- }
+ "only": "Chỉ có Mang về",
+ "yes": "Có"
+ },
+ "placeholder": "Có, Không có, Chỉ có Mang về…"
},
"toilets/disposal": {
"label": "Phương pháp thải",
"options": {
- "flush": "Bấm",
- "pitlatrine": "Mương",
+ "bucket": "Thùng",
"chemical": "Hóa chất",
- "bucket": "Thùng"
+ "flush": "Bấm",
+ "pitlatrine": "Mương"
}
},
"tourism": {
},
"tracktype": {
"label": "Loại Đường mòn",
- "placeholder": "Rất chắc, Khá Chắc, Mềm…",
"options": {
"grade1": "Rất Chắc: Mặt lát hoặc bằng cốt liệu chắc",
"grade2": "Khá Chắc: Sỏi đá pha một tí nguyên liệu mềm",
"grade3": "Pha trộn đều các nguyên liệu cứng mềm",
"grade4": "Khá Mềm: Đất/cát/cỏ pha một tí nguyên liệu cứng",
"grade5": "Rất Mềm: Đất/cát/cỏ"
- }
+ },
+ "placeholder": "Rất chắc, Khá Chắc, Mềm…"
},
"trail_visibility": {
"label": "Tầm nhìn trên Đường mòn",
- "placeholder": "Tốt, Khá, Trung bình…",
"options": {
+ "bad": "Kém: Không có cắm bảng, đôi khi không thấy được lối đi hoặc không có lối đi",
"excellent": "Tốt: Lối đi rõ ràng hoặc có cắm bảng từng quãng một",
"good": "Khá: Có bảng thấy được nhưng đôi khi cần phải mò mẫm",
- "intermediate": "Trung bình: Ít bảng, lối đi thấy được phần lớn",
- "bad": "Kém: Không có cắm bảng, đôi khi không thấy được lối đi hoặc không có lối đi",
"horrible": "Tồi: Nhiều khi không có lối đi, cần biết dò đường một chút",
+ "intermediate": "Trung bình: Ít bảng, lối đi thấy được phần lớn",
"no": "Không có lối đi, rất cần biết dò đường"
- }
+ },
+ "placeholder": "Tốt, Khá, Trung bình…"
},
"trees": {
"label": "Loại cây"
"water": {
"label": "Loại"
},
+ "water_point": {
+ "label": "Trạm Đóng Bình Nước uống"
+ },
"waterway": {
"label": "Loại"
},
"name": "Quầy Sửa Xe đạp",
"terms": "quầy sửa xe đạp, quay sua xe dap"
},
+ "amenity/biergarten": {
+ "name": "Vườn Bia",
+ "terms": "vườn bia, vườn uống bia, vườn nhậu, vuon bia, vuon uong bia, vuon nhau"
+ },
"amenity/boat_rental": {
"name": "Cho thuê Tàu",
"terms": "dịch vụ cho thuê tàu, chỗ thuê tàu, tiệm thuê tàu, thuê tàu, dịch vụ cho mướn tàu, chỗ mướn tàu, tiệm mướn tàu, mướn tàu, dịch vụ cho thuê thuyền, chỗ thuê thuyền, tiệm thuê thuyền, thuê thuyền, dịch vụ cho mướn thuyền, chỗ mướn thuyền, tiệm mướn thuyền, mướn thuyền, dich vu cho thue tau, cho thue tau, tiem thue tau, thue tau, dich vu cho muon tau, cho muon tau, tiem muon tau, muon tau, dich vu cho thue thuyen, cho thue thuyen, tiem thue thuyen, thue thuyen, dich vu cho muon thuyen, cho muon thuyen, tiem muon thuyen, muon thuyen"
},
"amenity/fuel": {
"name": "Cây xăng",
- "terms": "cây xăng, cột xăng, xăng, ét xăng, ét-xăng, nhiên liệu, cay xang, cot xang, xang, et xang, et-xang, nhien lieu"
+ "terms": "cây xăng, cột xăng, xăng, ét xăng, ét-xăng, trạm xăng dầu, nhiên liệu, cay xang, cot xang, xang, et xang, et-xang, tram xang dau, nhien lieu"
},
"amenity/grave_yard": {
"name": "Nghĩa địa tại Nhà thờ",
"name": "Nhà hàng",
"terms": "quán ăn, nhà hàng, tiệm ăn, nhà ăn, phòng ăn, quán ăn nhanh, nhà hàng ăn nhanh, quán ăn qua loa, căng tin, căng-tin, xe đẩy, quán rượu, quán bia, tiệm rượu, hiệu chả cá, quán chả nướng, quán phở, tiệm phở, quán cơm, quán bánh cuốn, tiệm bánh cuốn, quán bánh mì, tiệm bánh mì, quán bánh xèo, tiệm bánh xèo, quán chè, tiệm chè, quán gỏi cuốn, quán bún, quán hải sản, quán gà, quán cà ri, quán cà-ri, tiệm cà ri, tiệm cà-ri, quan an, nha hang, tiem an, nha an, phong an, quan an nhanh, nha hang an nhanh, quan an qua loa, can tin, cang-tin, xe day, quan ruou, quan bia, tiem ruou, hieu cha ca, quan cha nuong, quan pho, tiem pho, quan com, quan banh cuon, tiem banh cuon, quan banh mi, tiem banh mi, quan banh xeo, tiem banh xeo, quan che, tiem che, quan goi cuon, quan bun, quan hai san, quan ga, quan ca ri, quan ca-ri, tiem ca ri, tiem ca-ri"
},
+ "amenity/sanitary_dump_station": {
+ "name": "Trạm Đổ Chất thải dành cho Nhà lưu động",
+ "terms": "trạm đổ chất thải dành cho nhà lưu động, trạm đổ chất thải vệ sinh dành cho nhà lưu động, tram do chat thai danh cho nha luu dong, tram do chat thai ve sinh danh cho nha luu dong"
+ },
"amenity/school": {
"name": "Sân Trường",
"terms": "sân trường, sân trường học, sân nhà trường, sân trung tâm giáo dục, san truong, san truong hoc, san nha truong, san trung tam giao duc"
"terms": "ngõ hẻm, hẻm, ngo hem, hem"
},
"highway/service/drive-through": {
- "name": "Khu vực Mua hàng trên Xe",
- "terms": "khu vực mua hàng trên xe, đứng hàng, hàng xe, xe, khu vuc mua hang tren xe, dung hang, hang xe"
+ "name": "Lối Mua hàng trên Xe",
+ "terms": "lối mua hàng trên xe, dịch vụ mua hàng không cần đậu xe, dịch vụ mua hàng không cần đỗ xe, đứng hàng, hàng xe, xe, loi mua hang tren xe, dich vu mua hang khong can dau xe, dich vu mua hang khong can do xe, dung hang, hang xe"
},
"highway/service/driveway": {
"name": "Lối đi vào Nhà",
"name": "Hải đăng",
"terms": "hải đăng, đèn biển, hai dang, den bien"
},
+ "man_made/mast": {
+ "name": "Cột Radio",
+ "terms": "cột radio, cột rađiô, cột ra-đi-ô, cột vô tuyến, tháp radio, tháp rađiô, tháp ra-đi-ô, tháp vô tuyến, anten radio, anten rađiô, an-ten ra-đi-ô, cột tv, cột tivi, tháp tv, tháp tivi, anten tv, anten tivi, cot radio, cot ra-di-o, cot vo tuyen, thap radio, thap ra-di-o, thap vo tuyen, anten radio, anten ra-di-o, cot tv, cot vivi, thap tv, thap tivi, anten tv, anten tivi"
+ },
"man_made/observation": {
"name": "Tháp Quan sát",
"terms": "tháp quan sát, trạm quan sát, tầng quan sát, thap quan sat, tram quan sat, tang quan sat"
},
+ "man_made/petroleum_well": {
+ "name": "Giếng Dầu",
+ "terms": "giếng dầu, gieng dau"
+ },
"man_made/pier": {
"name": "Cầu tàu",
"terms": "cầu tàu, bến tàu, đạp ngăn sóng, cầu dạo chơi, cau tau, ben tau, dap ngan song, cau dao choi"
"name": "Đường ống",
"terms": "đường ống, tuyến đường ống, duong ong, tuyen duong ong"
},
+ "man_made/silo": {
+ "name": "Xilô",
+ "terms": "xilô, xi-lô, xi lô, xilo, xi-lo, xi lo"
+ },
+ "man_made/storage_tank": {
+ "name": "Thùng Chứa",
+ "terms": "thùng chứa, bể chứa, bình chứa, xi-téc, xi-tẹc, bể nước, thung chua, be chua, binh chua, xi-tec, be nuoc"
+ },
"man_made/survey_point": {
"name": "Điểm Khảo sát",
"terms": "điểm khảo sát, diem khao sat"
"name": "Thành phố",
"terms": "thành phố, TP, thành thị, đô thị, thanh pho, thanh thi, do thi"
},
+ "place/farm": {
+ "name": "Trại",
+ "terms": "trại,nông nghiệp,trang trại,đồn điền,trai,nong nghiep,trang trại,don dien"
+ },
"place/hamlet": {
"name": "Thôn",
"terms": "thôn, ấp, thôn ấp, xóm, liên gia, thon, ap, thon ap, xom, lien gia"
"name": "Quan hệ",
"terms": "quan hệ, liên kệ, mối quan hệ, mối liên hệ, quan he, lien ke, moi quan he, moi lien he"
},
+ "roundabout": {
+ "name": "Đường vòng",
+ "terms": "bùng binh, đường vòng, bung binh, duong vong"
+ },
"route/ferry": {
"name": "Tuyến đường Phà",
"terms": "phà, chuyến phà, bến phà, lộ trình phà, tuyến đường phà, đường phà, pha, chuyen pha, ben pha, lo trinh pha, tuyen duong pha, duong pha"
},
"shop/furniture": {
"name": "Cửa hàng Nội thất",
- "terms": "cửa hàng đồ đạc, chỗ đồ đạc, cửa hàng bán đồ đạc, tiệm bán đồ đạc, quầy bán đồ đạc, nơi bán đồ đạc, đồ gỗ, giường, bàn, ghế, đèn, cua hang do dac, cho do dac, cua hang ban do dac, tiem ban do dac, quay ban do dac, noi ban do dac, do go, giuong, ban, ghe, den"
+ "terms": "tiệm nội thất, cửa hàng đồ đạc, chỗ đồ đạc, cửa hàng bán đồ đạc, tiệm bán đồ đạc, quầy bán đồ đạc, nơi bán đồ đạc, đồ gỗ, giường, bàn, ghế, đèn, tiem noi that, cua hang do dac, cho do dac, cua hang ban do dac, tiem ban do dac, quay ban do dac, noi ban do dac, do go, giuong, ban, ghe, den"
},
"shop/garden_centre": {
"name": "Trung tâm Làm vườn",
"name": "Cống",
"terms": "cống, cong"
},
+ "waterway/fuel": {
+ "name": "Trạm Đổ xăng trên Biển",
+ "terms": "trạm đổ xăng trên biển, trạm đổ xăng dành cho tàu thủy, trạm đổ xăng dành cho tàu thuỷ, tram do xang tren bien, tram do xang danh cho tau thuy"
+ },
"waterway/river": {
"name": "Sông",
"terms": "sông, dòng sông, song, dong song"
"name": "Bờ sông",
"terms": "bờ sông, bo song"
},
+ "waterway/sanitary_dump_station": {
+ "name": "Trạm Đổ Chất thải dành cho Tàu thủy",
+ "terms": "trạm đổ chất thải dành cho tàu thủy, trạm đổ chất thải dành cho tàu thuỷ, trạm đổ chất thải ve sinh dành cho tàu thủy, trạm đổ chất thải ve sinh dành cho tàu thuỷ, tram do chat thai danh cho tau thuy, tram do chat thai ve sinh danh cho tau thuy"
+ },
"waterway/stream": {
"name": "Dòng suối",
"terms": "dòng suối, dòng chảy, dong suoi, dong chay"
"commit": {
"title": "記低修改",
"description_placeholder": "簡述你爾則稿件",
- "message_label": "遞交片語",
"upload_explanation": "你嘅修改,傳咗上去公家街圖。凢用公家街圖資料,地圖都會見到。",
"upload_explanation_with_user": "你以{user}名義,修改傳咗上去公家街圖。凢用公家街圖資料,地圖都會見到。",
"save": "記",
"title": "記低",
"help": "修改放上公家街圖,等其他用者都睇到。",
"no_changes": "無修改可記",
- "error": "記上去時出錯",
"uploading": "修改傳上公家街圖。",
"unsaved_changes": "你有修改未記妥"
},
"fields": {
"access": {
"label": "通",
- "placeholder": "未知",
- "types": {
- "access": "總體",
- "foot": "行",
- "motor_vehicle": "車",
- "bicycle": "單車",
- "horse": "馬"
- },
"options": {
- "yes": {
- "title": "准許",
- "description": "按法例可通,通路之權。"
+ "designated": {
+ "description": "通行與否,按法例或路牌指定",
+ "title": "指名"
+ },
+ "destination": {
+ "description": "限往目的地",
+ "title": "目的地"
},
"no": {
- "title": "禁入",
- "description": "公眾不通"
+ "description": "公眾不通",
+ "title": "禁入"
},
"permissive": {
- "title": "放任",
- "description": "可通,直至地主唔畀。"
+ "description": "可通,直至地主唔畀。",
+ "title": "放任"
},
"private": {
- "title": "私家",
- "description": "要地主批准"
- },
- "designated": {
- "title": "指名",
- "description": "通行與否,按法例或路牌指定"
+ "description": "要地主批准",
+ "title": "私家"
},
- "destination": {
- "title": "目的地",
- "description": "限往目的地"
+ "yes": {
+ "description": "按法例可通,通路之權。",
+ "title": "准許"
}
+ },
+ "placeholder": "未知",
+ "types": {
+ "access": "總體",
+ "bicycle": "單車",
+ "foot": "行",
+ "horse": "馬",
+ "motor_vehicle": "車"
}
},
"access_simple": {
"address": {
"label": "地埗",
"placeholders": {
- "street": "街",
- "city": "城"
+ "city": "城",
+ "street": "街"
}
},
"admin_level": {
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "é \86æ\99\82é\87\9d",
- "anticlockwise": "é\80\86æ\99\82é\87\9d"
+ "anticlockwise": "é\80\86æ\99\82é\87\9d",
+ "clockwise": "é \86æ\99\82é\87\9d"
}
},
"collection_times": {
"internet_access": {
"label": "用到互聯網",
"options": {
- "wlan": "無綫上網",
+ "terminal": "終端機",
"wired": "揷綫上網",
- "terminal": "終端機"
+ "wlan": "無綫上網"
}
},
"landuse": {
},
"structure": {
"label": "結構",
- "placeholder": "未知",
"options": {
"bridge": "橋",
- "tunnel": "隧道",
+ "cutting": "開山",
"embankment": "基堤",
- "cutting": "開山"
- }
+ "tunnel": "隧道"
+ },
+ "placeholder": "未知"
},
"supervised": {
"label": "有人睇"
+++ /dev/null
-{}
\ No newline at end of file
"area": "环形化区域。"
},
"not_closed": "它不是闭合的环形,无法圆形化。",
- "too_large": "因为可见部分不足,不能变成圆形。"
+ "too_large": "因为可见部分不足,不能变成圆形。",
+ "connected_to_hidden": "该对象无法环形化,因为其与一隐藏要素相连。"
},
"orthogonalize": {
"title": "直角化",
"area": "已将区域的弯角换成直角。"
},
"not_squarish": "因为它不是近似方形的,这不能被直角化。",
- "too_large": "因为可见部分不足,不能变成方形。"
+ "too_large": "因为可见部分不足,不能变成方形。",
+ "connected_to_hidden": "该对象无法直角化,因为其与一隐藏要素相连。"
},
"straighten": {
"title": "拉直",
"description": "把这一条线拉直。",
"key": "S",
"annotation": "已拉直了一条线。",
- "too_bendy": "因为它弯曲太多,不能拉直。"
+ "too_bendy": "因为它弯曲太多,不能拉直。",
+ "connected_to_hidden": "该线不能取直,因为其与一隐藏要素相连。"
},
"delete": {
"title": "删除",
"relation": "删除关系。",
"multiple": "删除{n}个对象。"
},
- "incomplete_relation": "此内容暂未下载完成无法删除。"
+ "incomplete_relation": "此内容暂未下载完成无法删除。",
+ "part_of_relation": "无法删除该要素,因为它是更大的关系的一部分。必须先将其从关系中移除。",
+ "connected_to_hidden": "无法删除,因为其与一隐藏要素相连。"
},
"add_member": {
"annotation": "增加关系中的成员。"
},
"connect": {
"annotation": {
- "point": "连接条路径到点。",
+ "point": "连接路径到点。",
"vertex": "连接两条路径。",
"line": "连接路径到线。",
"area": "连接条路径到区域。"
"description": "断开这些线/区域之间的连接。",
"key": "D",
"annotation": "断开线/区域连接。",
- "not_connected": "没有足够的线/面来断开。"
+ "not_connected": "没有足够的线/面来断开。",
+ "connected_to_hidden": "无法断开连接,因为其与一隐藏要素相连。"
},
"merge": {
"title": "合并",
"description": "移动到不同的位置。",
"key": "M",
"annotation": {
- "point": "移动了一个点。",
- "vertex": "移动了路径中的一个节点。",
+ "point": "移动点。",
+ "vertex": "移动路径中节点。",
"line": "移动线。",
"area": "移动区域。",
"multiple": "移动多个对象。"
},
"incomplete_relation": "该特征还没有下载完整,无法移动。",
- "too_large": "因为可见部分不足,不能移动。"
+ "too_large": "因为可见部分不足,不能移动。",
+ "connected_to_hidden": "无法移动,因为其与一隐藏要素相连。"
},
"rotate": {
"title": "旋转",
"line": "旋转线。",
"area": "旋转区域。"
},
- "too_large": "因为可见部分不足,不能旋转。"
+ "too_large": "因为可见部分不足,不能旋转。",
+ "connected_to_hidden": "无法旋转,因为其与一隐藏要素相连。"
},
"reverse": {
"title": "反转",
"multiple": "分割{n}的项线段/区域的边界。"
},
"not_eligible": "不能在线段的首尾进行分割。",
- "multiple_ways": "太多线段,未能进行分割。"
+ "multiple_ways": "太多线段,未能进行分割。",
+ "connected_to_hidden": "无法打断,因为其与一隐藏要素相连。"
},
"restriction": {
"help": {
"logout": "退出",
"loading_auth": "正在连接OpenStreetMap...",
"report_a_bug": "报告漏洞",
+ "feature_info": {
+ "hidden_warning": "{count}个隐藏特征",
+ "hidden_details": "以下要素目前被隐藏:{details}"
+ },
"status": {
"error": "无法连接到 API。",
"offline": "API 已下线,请稍后再尝试编辑。",
"commit": {
"title": "保存变更",
"description_placeholder": "简单说明你的贡献。",
- "message_label": "提交信息",
"upload_explanation": "你的修改将会在所有使用OpenStreetMap的数据的地图上看得见。",
"upload_explanation_with_user": "{user},你的修改将会在所有使用OpenStreetMap数据的地图上展现。",
"save": "保存",
"search": "搜索",
"multiselect": "选择项目",
"unknown": "未知",
- "incomplete": "<未有下载>",
+ "incomplete": "<未下载>",
"feature_list": "搜索特征",
"edit": "编辑特征",
+ "check": {
+ "yes": "是",
+ "no": "否"
+ },
"none": "空",
"node": "节点",
"way": "路径",
"relation": "关系",
- "location": "位置"
+ "location": "位置",
+ "add_fields": "添加字段:"
},
"background": {
"title": "背景",
"map_data": {
"title": "地图数据",
"description": "地图数据",
- "data_layers": "数据图层"
+ "data_layers": "数据图层",
+ "fill_area": "填充区域",
+ "map_features": "地图特征",
+ "autohidden": "这些要素已被自动隐藏,因为屏幕中的要素过多。请放大再编辑。"
+ },
+ "feature": {
+ "points": {
+ "description": "点",
+ "tooltip": "兴趣点(POI)"
+ },
+ "major_roads": {
+ "description": "主要道路",
+ "tooltip": "公路,街道等。"
+ },
+ "minor_roads": {
+ "description": "次要道路",
+ "tooltip": "辅助道路,停车场通道,土路等。"
+ },
+ "paths": {
+ "description": "小路",
+ "tooltip": "人行道,步行道路,自行车道等。"
+ },
+ "buildings": {
+ "description": "建筑物",
+ "tooltip": "建筑物,遮蔽处,车库等。"
+ },
+ "landuse": {
+ "description": "土地利用要素",
+ "tooltip": "森林,农田,公园,居民地,商用地等。"
+ },
+ "boundaries": {
+ "description": "境界",
+ "tooltip": "行政境界"
+ },
+ "water": {
+ "description": "水部要素",
+ "tooltip": "河流,湖泊,池塘,盆地等。"
+ },
+ "rail": {
+ "description": "铁路要素",
+ "tooltip": "铁路"
+ },
+ "power": {
+ "description": "电力要素",
+ "tooltip": "输电线,发电厂,变电所等。"
+ },
+ "past_future": {
+ "description": "过去/未来",
+ "tooltip": "规划,在建,废弃,拆毁等。"
+ },
+ "others": {
+ "description": "其他",
+ "tooltip": "其他东西"
+ }
+ },
+ "area_fill": {
+ "wireframe": {
+ "description": "无填充(线框)",
+ "tooltip": "开启线框模式,以便看清背景影像。"
+ },
+ "partial": {
+ "description": "部分填充",
+ "tooltip": "仅在内部边界附近填充区域。(推荐初学者使用)"
+ },
+ "full": {
+ "description": "全部填充",
+ "tooltip": "面状要素以全部填充绘制。"
+ }
},
"restore": {
"heading": "您有未保存的更改",
"title": "保存",
"help": "保存改变至OpenStreetMap,让其他用户可见。",
"no_changes": "没有待保存变更。",
- "error": "尝试保存时出错。",
+ "error": "尝试保存时发生错误。",
+ "status_code": "服务器返回的状态代码{code}",
"unknown_error_details": "请确保你连接到互联网。",
"uploading": "正在向 OpenStreetMap 上传更改。",
- "unsaved_changes": "你有未保存变更"
+ "unsaved_changes": "你有未保存变更",
+ "conflict": {
+ "header": "调解编辑冲突",
+ "count": "第{num}处冲突,共{num}处",
+ "previous": "< 上一个",
+ "next": "下一个>",
+ "keep_local": "保留自己的编辑",
+ "keep_remote": "使用他人的编辑",
+ "restore": "还原",
+ "delete": "恢复被删除的内容",
+ "download_changes": "或者下载你的修改。",
+ "done": "所有冲突已调解!",
+ "help": "另一位用户修改了你刚刚修改的地图要素。\n点击下面条目查看冲突详情,并选择保留你自己的或者别人的修改。\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "该对象已被{user}删除。",
+ "location": "你和{user}同时移动了该对象。",
+ "nodelist": "你和{user}同时修改了节点。",
+ "memberlist": "你和{user}同时修改了关系成员。",
+ "tags": "你将<b>{tag}</b>标签改为\"{local}\"而{user}将其改为\"{remote}\"。"
+ }
},
"success": {
"edited_osm": "编辑了 OSM!",
"help_html": "你的更新应该在几分钟后出现在“标准”图层上。其他图层和某些功能,可能需要更长的时间\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>详情</a>).\n"
},
"confirm": {
- "okay": "确定"
+ "okay": "确定",
+ "cancel": "取消"
},
"splash": {
"welcome": "欢迎使用OpenStreetMap iD编辑器",
"untagged_area": "未标记的区域",
"many_deletions": "您正在删除 {n} 个对象,您确定要这么做吗?这将会把它们从大家所见的 openstreetmap.org 地图上删除。",
"tag_suggests_area": "标签{tag}表明线应该为区域,但它不是区域",
- "untagged_point_tooltip": "选择该点的特征类型。",
- "untagged_line_tooltip": "选择描述这条线的特征类型。",
- "untagged_area_tooltip": "选择描述这块区域的特征类型。",
+ "untagged_point_tooltip": "选择该点的要素类型。",
+ "untagged_line_tooltip": "选择描述这条线的要素类型。",
+ "untagged_area_tooltip": "选择描述这块区域的要素类型。",
"deprecated_tags": "弃用标签:{tags}"
},
"zoom": {
},
"help": {
"title": "帮助",
- "help": "# 帮助\n\n这是免费可编辑的世界地图 [OpenStreetMap](http://www.openstreetmap.org/) 的编辑器。您可以使用它来添加和更新您的区域的数据,向所有人贡献更好的开放源代码、开放数据的世界地图。\n\n使用 OpenStreetMap 的所有人都能看到您在此地图上的编辑。要开始编辑,您需要一个[免费的 OpenStreetMap 帐号](https://www.openstreetmap.org/user/new)。\n\n[iD 编辑器](http://ideditor.com/)是一个协同项目,[源代码可在 GitHub 获取](https://github.com/openstreetmap/iD)。\n",
+ "help": "#帮助\n\n这是一个免费且可编辑的世界地图[OpenStreetMap](http://www.openstreetmap.org/)\n的编辑器,你可以用它来增加和更新你所在地区的数据,\n为全世界将这个开源、开放数据的世界地图变得更好。\n\n你在这张地图上的编辑将会被使用OpenStreetMap的所有人看到。\n你需要[登录](https://www.openstreetmap.org/login)才能编辑。\n\n本编辑器名为[iD](http://ideditor.com/),是一个[源码在GitHub上共享](https://github.com/openstreetmap/iD)\n的协作项目。\n",
"editing_saving": "# 编辑和保存\n\n本编辑器为在线使用设计,您先在也是通过一个网站访问它的。\n\n### 选择特征\n\n在地图上点击可以选择一个地图特征,比如道路或景点,并使得所选的特征高亮显示、打开包含它详情的面板、以及显示一个包含您可以对这个特征所做操作的菜单。\n\n按住 Shift 键并点击您想选择的特征或在地图上拖拽方框可以选择多个特征。\n\n### 保存编辑\n\n当您做了比如编辑道路、建筑物或地点的更改后,这些更改在您将它们保存到服务器之前都只会保存在本地。不要担心犯错,您可以点击撤销或重做按钮撤销或重做更改。\n\n点击「保存」按钮结束一组编辑,比方说,当您完成了城镇一个区域并想要开始一个新区域。您会有一次检查您所做的更改的机会,此时编辑器会提供一些有帮助的建议并对看起来有问题的更改作出警告。\n\n如果一切正常,您可以输入一段简短的文字说明您所做的更改,并再次点击「保存」将更改提交到 [OpenStreetMap.org](http://www.openstreetmap.org/),让所有用户都可以浏览或继续改进。\n\n如果您不能一次完成您的编辑,您可以离开编辑器窗口,并随时回来(同一台电脑,同一个浏览器)继续编辑。编辑器会为您保留上一次的状态。\n",
"roads": "# 道路\n\n您可以利用这个编辑器创建,修复,及删除道路。道路可以有很多种:路径,公路,郊游径,单车径,和更多- 任何经常使用的路段都可制图。\n\n### 选择道路\n\n点击图上的道路以选择该道路。道路的轮廓会以高亮度显示,而同时地图上会出现小工具选单,旁边亦会弹出面板,显示有关该道路的信息。\n\n### 编辑道路\n\n您或会经常注意到,道路并非对齐在背景中显示的卫星图像或GPS轨迹。您可以调整这些道路,让他们位于正确的位置。\n\n首先,点击您想编辑的道路。这会将道路以高亮度显示,并显示沿着这道路的节点,你可以拖曳这些节点到更好的位置。如果您想增加细节,可以为道路添加新的节点,点击两下道路上没有节点的部分,便可在该处増加节点。\n\n如果道路连接到另一条道路,但在地图上并未妥善连接,你可以拖曳道路的其中一个节点到另一条道路上,以连接两条道路。连接好道路,对地图非常重要,特别是对提供驾驶指示的应用程序而言,是必要的。\n\n您也可以点击'移动'工具或按`M`快速键,来移动整条道路,然后点击一下以完成移动的动作。\n\n### 删除道路\n\n如果一条道路完全不正确- 您看到它在卫星图像上不存在,并最好实地证实它根本不存在- 您可以将道路删除,这会从地图中将之移除。删除物件时务必要小心- 像任何其他的编辑,结果会被大家看见,而卫星图像往往会过时,因此该道路或许只是新建的。\n\n要删除道路,您可以点击它以选择,然后点击垃圾桶图标,或按'Delete' 键。\n\n### 绘制新道路\n\n发现某处应有一条道路,但地图上没有?点击编辑器左上方的'线'图标,或按下`2`快速键,以开始绘制线段。\n\n在地图上点击道路的开端,以开始绘制道路。如果道路从一条现有的道路分支出来,应点击两者连接的地方,以开始绘制。\n\n然后点击沿着道路的点,以根据卫星影像或GPS轨迹,正确地绘制道路。如果您绘制的道路如果与另一条道路交汇,请点击相交点以将它们连接起来。当您完成绘制后,可点击两下或按键盘上的'Return' 或'Enter' 键。\n",
+ "gps": "# GPS\n\nGPS数据是OpenStreetMap最信任的数据源。本编辑器\n支持本地轨迹(即本地计算机中的GPX文件)。你可以\n用各种智能手机或者用个人手持GPS硬件收集此类数据。\n\n关于如何进行GPS测绘,请参见\n[用GPS测绘](http://learnosm.org/en/beginner/using-gps/).\n\n要利用GPX轨迹绘图,请将GPX文件拖曳至地图编辑器。\n如果能被识别,其将以亮紫色线条显示于图中。点击右侧\n地图数据菜单开启、关闭或缩放至该新增的GPX图层。\n\nGPX轨迹未被直接上传至OpenStreetMap,轨迹的最佳用\n法是在地图上显示,引导你绘制新的地图要素。也可以[上传\n至OpenStreetMap](http://www.openstreetmap.org/trace/create)\n供其他用户使用。\n",
"imagery": "# 影像\n\n航拍影像是绘制地图的一个重要资源。编辑器右侧「背景设置」菜单里提供了一组飞机航拍、卫星影像及自由编译的来源。\n\n默认情况下编辑器显示的是[必应地图](http://www.bing.com/maps/)的卫星图层,但当您移动或缩放地图到一个新的地理区域会得到新的来源。一些国家,比如美国、法国和丹麦,会在一些区域提供非常高质量的影像。\n\n影像有时会因为影像提供商的错误和地图数据存在偏移。如果您看到许多道路偏离背景,请不要立刻移动它们来匹配背景,您可以点击背景设置界面底部的「修复对齐」来调整影像以使它和已有数据吻合。\n",
"addresses": "# 地址\n\n地址是地图上的最有用的一些信息。\n\nOpenStreetMap通过沿街位置记录建筑和场所的地址,地址通常表示为街道的一部分。\n\n您可以添加地址信息映射为建筑轮廓的地方以及那些映射为单个点。地址的最佳来源数据是来自于实地调查或个人的知识与任何其他功能,从谷歌地图商业来源的复制是严格禁止的。\n",
"inspector": "# 使用检查器\n\n检查器位于页面左侧,可以用来编辑所选特征的详情。\n\n### 选择特征类型\n\n当您添加了一个点、线或区域后,您可以选择它特征类型,比如它是高速公路还是小区道路、超市还是咖啡厅。检查器会显示基本特征类型的按钮,您也可以在搜索框中输入其它您要寻找的类型。\n\n点击特征类型右下角的「i」可以了解这个类型的一些信息,点击按钮选中这个类型。\n\n### 使用表单和编辑标签\n\n当你选中一个特征类型,或当你选中了一个已经指定了类型的特征后,检查器会显示这个特征的名称、地址等字段和详情。\n\n在您看到的字段下面,您可以点击图标来添加其它详情,比如[维基百科](http://www.wikipedia.org/)信息、无障碍情况等。\n\n在检查器的底部,点击「附加标签」可以向元素添加其它任意标签。您可以从 [Taginfo](http://taginfo.openstreetmap.org/) 了解更多常用标签组合的信息。\n\n您在检查器中所做的更改将会自动应用到地图上。您可以随时点击「撤销」按钮撤掉更改。\n",
},
"areas": {
"title": "区域",
- "add": "区域被用来表示图征的界限,像是湖、建筑物或住宅区。也就是说可以让原本只是个兴趣点的图征呈现更多细节。 **按下区域的按钮新增区域**",
+ "add": "区域被用来表示要素的界限,像是湖、建筑物或住宅区。也就是说可以让原本只是个兴趣点的要素呈现更多细节。 **按下区域的按钮新增区域**",
"corner": "通过将节点放到面的边界上,可绘制面。 **将起始节点置于游乐场的其中一角**",
"place": "放置更多节点可绘制区域。点击开始节点即可完成绘制。**在沙盒绘制一个区域。**",
"search": "**搜索'{name}'。**",
"fields": {
"access": {
"label": "通行限制",
- "placeholder": "未知",
- "types": {
- "access": "普通",
- "foot": "步行",
- "motor_vehicle": "汽车",
- "bicycle": "自行车",
- "horse": "马匹"
- },
"options": {
- "yes": {
- "title": "允许的",
- "description": "按法律及路权,有权使用"
+ "designated": {
+ "description": "只限标志指定或特定本地法律容许人士进入",
+ "title": "特定的"
+ },
+ "destination": {
+ "description": "只限前往目的地人士进入",
+ "title": "目的地"
},
"no": {
- "title": "禁止的",
- "description": "禁止一般公众进入"
+ "description": "禁止一般公众进入",
+ "title": "禁止的"
},
"permissive": {
- "title": "获许可进入",
- "description": "容许进入,直至拥有者撇回许可"
+ "description": "容许进入,直至拥有者撇回许可",
+ "title": "获许可进入"
},
"private": {
- "title": "私人",
- "description": "须拥有者个别批准,方可进入"
- },
- "designated": {
- "title": "特定的",
- "description": "只限标志指定或特定本地法律容许人士进入"
+ "description": "须拥有者个别批准,方可进入",
+ "title": "私人"
},
- "destination": {
- "title": "目的地",
- "description": "只限前往目的地人士进入"
+ "yes": {
+ "description": "按法律及路权,有权使用",
+ "title": "允许的"
}
+ },
+ "placeholder": "未知",
+ "types": {
+ "access": "普通",
+ "bicycle": "自行车",
+ "foot": "步行",
+ "horse": "马匹",
+ "motor_vehicle": "汽车"
}
},
"access_simple": {
"address": {
"label": "地址",
"placeholders": {
+ "city": "城市",
+ "country": "国家",
+ "district": "行政区",
+ "hamlet": "村庄",
"housename": "房屋名称",
"housenumber": "123号",
- "street": "街道",
- "city": "城市",
- "postcode": "邮政编码",
"place": "地方",
- "hamlet": "村庄",
- "suburb": "地区",
- "subdistrict": "街道",
- "district": "行政区",
+ "postcode": "邮政编码",
"province": "行政省",
"state": "行政州",
- "country": "国家"
+ "street": "街道",
+ "subdistrict": "街道",
+ "suburb": "地区"
}
},
"admin_level": {
"aerialway/access": {
"label": "通行限制",
"options": {
+ "both": "双向",
"entry": "入口",
- "exit": "出口",
- "both": "双向"
+ "exit": "出口"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "通行方向(夏季)",
"options": {
+ "both": "双方",
"entry": "入口",
- "exit": "出口",
- "both": "双方"
+ "exit": "出口"
}
},
"aeroway": {
"boundary": {
"label": "类型"
},
+ "brand": {
+ "label": "品牌"
+ },
"building": {
"label": "建筑物"
},
"cardinal_direction": {
"label": "方向",
"options": {
- "N": "北",
"E": "东",
- "S": "南",
- "W": "西",
- "NE": "东北",
- "SE": "东南",
- "SW": "西南",
- "NW": "西北",
- "NNE": "东北偏北",
"ENE": "东北偏东",
"ESE": "东南偏东",
+ "N": "北",
+ "NE": "东北",
+ "NNE": "东北偏北",
+ "NNW": "西北偏北",
+ "NW": "西北",
+ "S": "南",
+ "SE": "东南",
"SSE": "东南偏南",
"SSW": "西南偏南",
- "WSW": "西南偏西",
+ "SW": "西南",
+ "W": "西",
"WNW": "西北偏西",
- "NNW": "西北偏北"
+ "WSW": "西南偏西"
}
},
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "顺时针",
- "anticlockwise": "逆时针"
+ "anticlockwise": "逆时针",
+ "clockwise": "顺时针"
}
},
"collection_times": {
"cuisine": {
"label": "菜肴"
},
+ "delivery": {
+ "label": "邮寄"
+ },
"denomination": {
"label": "教派"
},
"description": {
"label": "说明"
},
+ "drive_through": {
+ "label": "免下车"
+ },
"electrified": {
"label": "电气化",
- "placeholder": "接触线、电气化铁路…",
"options": {
"contact_line": "接触线",
+ "no": "否",
"rail": "电气化铁路",
- "yes": "是(未指明)",
- "no": "否"
- }
+ "yes": "是(未指明)"
+ },
+ "placeholder": "接触线、电气化铁路…"
},
"elevation": {
"label": "海拔"
"label": "类型",
"options": {
"pillar": "支柱/地上",
+ "pond": "池塘",
"underground": "地铁",
- "wall": "墙",
- "pond": "池塘"
+ "wall": "墙"
}
},
"fixme": {
"gauge": {
"label": "轨距"
},
+ "gender": {
+ "label": "性别",
+ "options": {
+ "female": "女",
+ "male": "男",
+ "unisex": "中性"
+ },
+ "placeholder": "未知"
+ },
"generator/method": {
"label": "模式"
},
"incline": {
"label": "斜度"
},
+ "incline_steps": {
+ "label": "坡度",
+ "options": {
+ "down": "下",
+ "up": "上"
+ }
+ },
"information": {
"label": "类型"
},
"internet_access": {
"label": "互联网接入",
"options": {
- "yes": "是",
"no": "否",
- "wlan": "Wi-Fi",
+ "terminal": "终端",
"wired": "有线网络",
- "terminal": "终端"
+ "wlan": "Wi-Fi",
+ "yes": "是"
}
},
"lamp_type": {
"layer": {
"label": "图层"
},
+ "leaf_cycle": {
+ "label": "叶寿命",
+ "options": {
+ "deciduous": "落叶",
+ "evergreen": "常绿",
+ "mixed": "混交林",
+ "semi_deciduous": "半落叶",
+ "semi_evergreen": "半常绿"
+ }
+ },
+ "leaf_type": {
+ "label": "叶型",
+ "options": {
+ "broadleaved": "阔叶",
+ "leafless": "无叶",
+ "mixed": "混交林",
+ "needleleaved": "针叶"
+ }
+ },
"leisure": {
"label": "类型"
},
},
"mtb/scale": {
"label": "登山車难度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0:坚实的硕石土路,没有障碍物,大湾曲",
"1": "1:铺面部分松散,有小的障碍物,大弯曲",
"4": "4:路面松散或是充满石头,有危险的发夹弯",
"5": "5:骑乘等级最困难,路面充满石头,或者是路面坍方",
"6": "6:除非是技巧极好的越野车手,否则并不适合骑乘"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "国际登山车协会路径难度",
- "placeholder": "简单,中等,困难...",
"options": {
"0": "最简单(白圈)",
"1": "容易(绿圈)",
"2": "中等(蓝方块)",
"3": "困难(黑色钻石型)",
"4": "极端困难(双重黑色钻石型)"
- }
+ },
+ "placeholder": "简单,中等,困难..."
},
"mtb/scale/uphill": {
"label": "山地自行车上坡难度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0:平均坡度小于10%时,有碎石/夯实的地面,没有障碍物",
"1": "1:平均坡度小于15%,有碎石/夯实的地面,有些许障碍物",
"3": "3:平均坡度25%,多变的平面,拳头大的石头/树墙",
"4": "4:平均坡度小于30%时,很糟的路面状况,大石头/树墙",
"5": "5:很陡,单车得牵行或扛车"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "名称",
"oneway": {
"label": "单行线",
"options": {
+ "no": "否",
"undefined": "假定为否",
- "yes": "是",
- "no": "否"
+ "yes": "是"
}
},
"oneway_yes": {
"label": "单行线",
"options": {
+ "no": "否",
"undefined": "假定为是",
- "yes": "是",
- "no": "否"
+ "yes": "是"
}
},
"opening_hours": {
"parking": {
"label": "类型",
"options": {
- "surface": "地面",
- "multi-storey": "多晨",
- "underground": "地下",
- "sheds": "单独车库",
"carports": "车棚",
"garage_boxes": "车库盒",
- "lane": "路边"
+ "lane": "路边",
+ "multi-storey": "多晨",
+ "sheds": "单独车库",
+ "surface": "地面",
+ "underground": "地下"
}
},
"phone": {
},
"piste/difficulty": {
"label": "困难",
- "placeholder": "容易,中阶,进阶",
"options": {
- "novice": "新手(教学)",
- "easy": "容易(绿圈)",
- "intermediate": "中阶(蓝方块)",
"advanced": "进阶(黑色钻石型)",
+ "easy": "容易(绿圈)",
"expert": "专家(双重黑色钻石型)",
+ "extreme": "极端困难(需要攀登工具)",
"freeride": "自由滑行(场地外)",
- "extreme": "极端困难(需要攀登工具)"
- }
+ "intermediate": "中阶(蓝方块)",
+ "novice": "新手(教学)"
+ },
+ "placeholder": "容易,中阶,进阶"
},
"piste/grooming": {
"label": "雪道类型",
"options": {
- "classic": "经典",
- "mogul": "蒙古人",
"backcountry": "偏远地区",
+ "classic": "经典",
"classic+skating": "经典和滑行",
+ "mogul": "蒙古人",
"scooter": "滑行艇/雪车",
"skating": "滑冰"
}
"label": "类型",
"options": {
"downhill": "下坡",
+ "hike": "徒步旅行",
+ "ice_skate": "冰刀",
"nordic": "北欧人",
+ "playground": "练习场",
"skitour": "滑雪旅行",
"sled": "雪橇",
- "hike": "徒步旅行",
"sleigh": "简易雪橇",
- "ice_skate": "冰刀",
- "snow_park": "滑雪场",
- "playground": "练习场"
+ "snow_park": "滑雪场"
}
},
"place": {
},
"sac_scale": {
"label": "远足难度",
- "placeholder": "登山旅行,越岭行走...",
"options": {
- "hiking": "T1:徒步旅行",
- "mountain_hiking": "T2:登山旅行",
- "demanding_mountain_hiking": "T3:进阶登山旅行",
"alpine_hiking": "T4:高山旅行",
"demanding_alpine_hiking": "T5:进阶高山旅行",
- "difficult_alpine_hiking": "T6:艰困高山旅行"
- }
+ "demanding_mountain_hiking": "T3:进阶登山旅行",
+ "difficult_alpine_hiking": "T6:艰困高山旅行",
+ "hiking": "T1:徒步旅行",
+ "mountain_hiking": "T2:登山旅行"
+ },
+ "placeholder": "登山旅行,越岭行走..."
},
"seasonal": {
"label": "具备季节性"
"service": {
"label": "类型"
},
+ "service/bicycle/chain_tool": {
+ "options": {
+ "no": "否",
+ "undefined": "假定为否",
+ "yes": "是"
+ }
+ },
+ "service/bicycle/pump": {
+ "label": "气泵",
+ "options": {
+ "no": "否",
+ "undefined": "假定为否",
+ "yes": " 是"
+ }
+ },
+ "service_rail": {
+ "label": "服务类型",
+ "options": {
+ "crossover": "渡线",
+ "siding": "侧线",
+ "spur": "短途支线",
+ "yard": "站场线路"
+ }
+ },
"shelter": {
"label": "避难所"
},
},
"smoking": {
"label": "吸烟",
- "placeholder": "禁止、隔开、允许...",
"options": {
- "no": "禁止吸烟",
- "separated": "指定区域可使用(布隔开)",
+ "dedicated": "吸烟专用",
"isolated": "指定区域可使用(隔开)",
+ "no": "禁止吸烟",
"outside": "外面可使用",
- "yes": "随处可使用",
- "dedicated": "吸烟专用"
- }
+ "separated": "指定区域可使用(布隔开)",
+ "yes": "随处可使用"
+ },
+ "placeholder": "禁止、隔开、允许..."
},
"smoothness": {
"label": "平顺度",
- "placeholder": "轴承,轮胎,越野",
"options": {
+ "bad": "强化轮胎:休旅自行车,汽车,人力车",
"excellent": "轴承:溜冰,滑板",
"good": "细轮:竞速自行车",
+ "horrible": "越野:高负重越野车辆",
+ "impassable": "禁止通行/禁止轮类交通工具",
"intermediate": "轮胎:通勤脚踏车,轮椅,滑板车",
- "bad": "强化轮胎:休旅自行车,汽车,人力车",
"very_bad": "轻量化:低负重越野车辆",
- "horrible": "越野:高负重越野车辆",
"very_horrible": "越野专用:拖拉机,全地形越野车"
- }
+ },
+ "placeholder": "轴承,轮胎,越野"
},
"social_facility_for": {
"label": "服务对象",
},
"structure": {
"label": "结构",
- "placeholder": "未知种类",
"options": {
"bridge": "桥",
- "tunnel": "隧道",
- "embankment": "堤岸",
"cutting": "开凿",
- "ford": "浅滩"
- }
+ "embankment": "堤岸",
+ "ford": "浅滩",
+ "tunnel": "隧道"
+ },
+ "placeholder": "未知种类"
},
"studio_type": {
"label": "类型"
},
+ "substation": {
+ "label": "类型"
+ },
"supervised": {
"label": "监督"
},
"tactile_paving": {
"label": "人行道视障引导设施"
},
+ "takeaway": {
+ "label": "外卖",
+ "options": {
+ "no": "否",
+ "only": "仅限外卖",
+ "yes": "是"
+ },
+ "placeholder": "是,否,仅限外卖"
+ },
"toilets/disposal": {
"label": "废弃",
"options": {
- "flush": "冲水式",
- "pitlatrine": "旱厕/翼坑",
+ "bucket": "尿筒",
"chemical": "化工",
- "bucket": "尿筒"
+ "flush": "冲水式",
+ "pitlatrine": "旱厕/翼坑"
}
},
"tourism": {
},
"tracktype": {
"label": "产业道路种类",
- "placeholder": "坚硬地面,硬物铺面,软铺面",
"options": {
"grade1": "刚性铺面:铺面为柏油,水泥或由刚性材质密实组成",
"grade2": "近刚性铺面:砾石与石块混合柔性材质",
"grade3": "混合刚性与柔性材质",
"grade4": "近柔性铺面:土壤,砂土与草地混合其他刚性材质",
"grade5": "柔性铺面:只有土壤,砂土与草地"
- }
+ },
+ "placeholder": "坚硬地面,硬物铺面,软铺面"
},
"trail_visibility": {
"label": "路径可见度",
- "placeholder": "良好,尚可,稍差...",
"options": {
+ "bad": "差劲:没有标示,路径有时候消失",
"excellent": "良好:路径明显或标示充分",
"good": "尚可:有标示但可能不明显",
- "intermediate": "略差:标示稀少,路径大致可见",
- "bad": "差劲:没有标示,路径有时候消失",
"horrible": "可怕:路径常消失,需要部分定向能力",
+ "intermediate": "略差:标示稀少,路径大致可见",
"no": "无:没有路径,需具备完整的定向能力"
- }
+ },
+ "placeholder": "良好,尚可,稍差..."
},
"trees": {
"label": "树林"
"terms": "缆车线路"
},
"aerialway/cable_car": {
- "name": "缆车"
+ "name": "缆车",
+ "terms": "缆车, 索道车"
},
"aerialway/chair_lift": {
- "name": "登山吊椅"
+ "name": "登山吊椅",
+ "terms": "座椅式索道,观光索道,升降椅"
+ },
+ "aerialway/gondola": {
+ "name": "贡多拉",
+ "terms": "长平底船,两头尖的平底船,狭长小船"
+ },
+ "aerialway/magic_carpet": {
+ "name": "魔毯电梯",
+ "terms": "魔毯,传送带式电梯"
},
"aerialway/pylon": {
"name": "缆车塔",
"name": "自行车出租点",
"terms": "自行车租赁处,单车,出租,租赁,自行车"
},
+ "amenity/bicycle_repair_station": {
+ "name": "自行车修理站"
+ },
"amenity/boat_rental": {
"name": "船舶租赁处",
"terms": "船舶租赁处"
"name": "货币兑换"
},
"amenity/bus_station": {
- "name": "公交车站"
+ "name": "汽车站",
+ "terms": "公交车起讫站,公交枢纽,公交场站"
},
"amenity/cafe": {
"name": "咖啡馆",
"name": "充电站",
"terms": "充电站"
},
+ "amenity/childcare": {
+ "name": "托儿所/保育园",
+ "terms": "幼儿园"
+ },
"amenity/cinema": {
"name": "电影院",
"terms": "电影院,电影,戏院"
"name": "时钟",
"terms": "时钟,钟表,钟"
},
+ "amenity/college": {
+ "name": "大专院校校园"
+ },
+ "amenity/community_centre": {
+ "name": "社区活动中心",
+ "terms": "活动室"
+ },
"amenity/compressed_air": {
"name": "压缩空气"
},
"amenity/hospital": {
"name": "医院"
},
+ "amenity/kindergarten": {
+ "name": "学前班/幼儿园用地"
+ },
"amenity/library": {
"name": "图书馆",
"terms": "图书馆"
"terms": "寺庙,佛堂,和尚寺,尼姑庵"
},
"amenity/place_of_worship/christian": {
- "name": "教堂",
+ "name": "基督教堂",
"terms": "教堂"
},
"amenity/place_of_worship/jewish": {
"name": "酒馆",
"terms": "酒馆"
},
+ "amenity/public_bookcase": {
+ "name": "公共书架"
+ },
"amenity/ranger_station": {
"name": "野郊访客处",
"terms": "野郊访客处"
"name": "资源回收设施",
"terms": "回收,循环利用,再造"
},
+ "amenity/register_office": {
+ "name": "民政登记处"
+ },
"amenity/restaurant": {
"name": "餐馆",
"terms": "餐馆,餐厅,饭店,酒楼,酒家,茶楼,美食"
"amenity/social_facility/food_bank": {
"name": "食品银行"
},
+ "amenity/social_facility/group_home": {
+ "name": "敬老院"
+ },
"amenity/social_facility/homeless_shelter": {
"name": "流浪者庇护站"
},
"name": "市政府",
"terms": "市政府,市政厅,大会堂"
},
+ "amenity/university": {
+ "name": "大学校园"
+ },
"amenity/vending_machine": {
"name": "售卖机",
"terms": "售卖机"
"terms": "自行车,单车,路障"
},
"barrier/ditch": {
- "name": "沟",
- "terms": "沟"
+ "name": "壕沟",
+ "terms": "沟坎,壕"
},
"barrier/entrance": {
"name": "入口",
"name": "公寓",
"terms": "公寓"
},
+ "building/barn": {
+ "name": "谷仓",
+ "terms": "粮仓,畜棚,库房"
+ },
+ "building/bunker": {
+ "name": "煤仓",
+ "terms": "地堡"
+ },
+ "building/cabin": {
+ "name": "小木屋"
+ },
"building/cathedral": {
"name": "主教座堂",
"terms": "教堂,大教堂"
},
"building/church": {
- "name": "教堂",
+ "name": "宗教场所",
"terms": "礼拜堂"
},
+ "building/college": {
+ "name": "大专院校建筑"
+ },
"building/commercial": {
"name": "商业建筑物",
"terms": "商业建筑物"
"terms": "入口/出口,出入口"
},
"building/garage": {
- "name": "车库",
+ "name": "车库(单个)",
"terms": "车库"
},
"building/garages": {
- "name": "车库"
+ "name": "车库(连排)"
},
"building/greenhouse": {
- "name": "温室"
+ "name": "温室",
+ "terms": "大棚"
},
"building/hospital": {
"name": "医院大楼"
"name": "工业建筑物",
"terms": "工业建筑物"
},
+ "building/kindergarten": {
+ "name": "学前班/幼儿园建筑"
+ },
"building/public": {
"name": "公共建筑"
},
"name": "学校建筑",
"terms": "校舍,学校建筑"
},
+ "building/shed": {
+ "terms": "储物间, 小木屋"
+ },
"building/train_station": {
"name": "火车站",
"terms": "火车站"
"craft/locksmith": {
"name": "锁匠"
},
+ "craft/metal_construction": {
+ "name": "金属结构建筑"
+ },
"craft/optician": {
"name": "眼镜店"
},
"craft/window_construction": {
"name": "窗户修理店"
},
+ "craft/winery": {
+ "name": "酿酒厂",
+ "terms": "酒庄,酒厂"
+ },
"embankment": {
"name": "堤坝",
"terms": "堤,堤坝,堤岸"
"name": "主要道路匝道",
"terms": "主要道路匝道"
},
+ "highway/raceway": {
+ "name": "赛车赛道"
+ },
"highway/residential": {
"name": "住宅区道路",
"terms": "住宅区道路"
"name": "路旁神龛",
"terms": "路边神社"
},
+ "junction": {
+ "name": "交叉口",
+ "terms": "交通枢纽,路口"
+ },
"landuse": {
"name": "土地用途",
"terms": "土地用途"
"name": "墓地",
"terms": "墓地"
},
+ "landuse/commercial": {
+ "name": "商业区"
+ },
"landuse/construction": {
- "name": "建筑物",
+ "name": "建设用地",
"terms": "建筑物"
},
+ "landuse/farm": {
+ "name": "农田"
+ },
"landuse/farmyard": {
"name": "农庄",
"terms": "农庄"
"name": "森林",
"terms": "森林"
},
+ "landuse/garages": {
+ "name": "车库"
+ },
"landuse/grass": {
- "name": "è\8d\89å\9c°",
+ "name": "è\8d\89å\9dª",
"terms": "草地"
},
+ "landuse/industrial": {
+ "name": "工业区"
+ },
"landuse/landfill": {
"name": "垃圾填埋区"
},
"landuse/meadow": {
- "name": "草地",
- "terms": "牧场"
+ "name": "草甸",
+ "terms": "牧场,草场"
+ },
+ "landuse/military": {
+ "name": "军事区"
},
"landuse/orchard": {
"name": "果园",
"name": "矿场",
"terms": "矿场"
},
+ "landuse/residential": {
+ "name": "居民区",
+ "terms": "住宅小区"
+ },
+ "landuse/retail": {
+ "name": "零售场所"
+ },
"landuse/vineyard": {
"name": "葡萄园",
"terms": "葡萄园,酒庄"
"name": "码头",
"terms": "码头"
},
+ "leisure/nature_reserve": {
+ "name": "自然保护区"
+ },
"leisure/park": {
"name": "公园",
"terms": "公园"
"name": "野餐桌"
},
"leisure/pitch": {
- "name": "体育场",
- "terms": "运动场,运动场所"
+ "name": "运动场",
+ "terms": "体育场,运动场所,运动场地,操场"
},
"leisure/pitch/american_football": {
"name": "美式足球场",
"name": "儿童游乐场",
"terms": "游乐场"
},
+ "leisure/running_track": {
+ "name": "跑道",
+ "terms": "操场跑道"
+ },
"leisure/slipway": {
"name": "船台",
"terms": "船台"
"name": "游泳池",
"terms": "游泳池"
},
+ "leisure/track": {
+ "name": "赛道(非机动竞赛)"
+ },
"line": {
"name": "线",
"terms": "线"
"name": "水塔",
"terms": "水塔"
},
+ "man_made/water_well": {
+ "name": "水井"
+ },
"man_made/water_works": {
"name": "供水厂",
"terms": "供水厂"
"name": "海滩",
"terms": "海滩"
},
+ "natural/cave_entrance": {
+ "name": "洞口"
+ },
"natural/cliff": {
"name": "峭壁",
"terms": "悬崖"
"terms": "城市"
},
"place/hamlet": {
- "name": "村庄",
- "terms": "村庄"
+ "name": "小村庄",
+ "terms": "村庄,村落"
},
"place/island": {
"name": "岛屿",
"name": "变电站",
"terms": "变电站"
},
+ "power/substation": {
+ "name": "变电所",
+ "terms": "变电站,配电所"
+ },
"power/tower": {
"name": "高压电塔",
"terms": "高压电塔"
"terms": "变电所"
},
"public_transport/platform": {
- "name": "站台",
+ "name": "公交站台",
"terms": "平台,月台"
},
"public_transport/stop_position": {
"terms": "废弃的铁路"
},
"railway/funicular": {
- "name": "缆车",
+ "name": "缆索铁路",
"terms": "缆车"
},
"railway/halt": {
"terms": "窄轨铁路,铁路"
},
"railway/platform": {
- "name": "站台",
+ "name": "铁路站台",
"terms": "站台"
},
"railway/rail": {
"name": "酒水店",
"terms": "酒庄"
},
+ "shop/anime": {
+ "name": "动漫店"
+ },
+ "shop/antiques": {
+ "name": "古董店"
+ },
+ "shop/art": {
+ "name": "画廊",
+ "terms": "美术馆,艺术馆"
+ },
+ "shop/baby_goods": {
+ "name": "婴儿用品店"
+ },
+ "shop/bag": {
+ "name": "箱包店"
+ },
"shop/bakery": {
"name": "面包店",
"terms": "面包店"
},
+ "shop/bathroom_furnishing": {
+ "name": "浴室家具店",
+ "terms": "水暖店"
+ },
"shop/beauty": {
"name": "美容店",
"terms": "美容院"
},
+ "shop/bed": {
+ "name": "床上用品店"
+ },
"shop/beverages": {
"name": "饮料店",
"terms": "饮品店"
"shop/bookmaker": {
"name": "书商"
},
+ "shop/books": {
+ "name": "书店"
+ },
"shop/boutique": {
"name": "精品店",
"terms": "精品店"
"name": "肉店",
"terms": "肉铺"
},
+ "shop/candles": {
+ "name": "蜡烛店"
+ },
"shop/car": {
"name": "汽车店",
"terms": "车行"
"name": "汽车修理店",
"terms": "汽车修理店"
},
+ "shop/carpet": {
+ "name": "地毯店"
+ },
+ "shop/cheese": {
+ "name": "奶酪店"
+ },
"shop/chemist": {
"name": "日化用品店",
"terms": "药房"
},
+ "shop/chocolate": {
+ "name": "巧克力店"
+ },
"shop/clothes": {
"name": "服装店",
"terms": "服装店"
"name": "电脑店",
"terms": "电脑店"
},
+ "shop/confectionery": {
+ "name": "糖果店"
+ },
"shop/convenience": {
"name": "便利店",
"terms": "便利店"
},
+ "shop/copyshop": {
+ "name": "打印店",
+ "terms": "打印社,复印店"
+ },
+ "shop/cosmetics": {
+ "name": "化妆品店",
+ "terms": "日化店"
+ },
+ "shop/craft": {
+ "name": "艺术/手工艺品店"
+ },
+ "shop/curtain": {
+ "name": "窗帘店"
+ },
+ "shop/dairy": {
+ "name": "牛奶店"
+ },
"shop/deli": {
"name": "熟食店",
"terms": "熟食店"
"name": "DIY店",
"terms": "DIY商店"
},
+ "shop/dry_cleaning": {
+ "name": "干洗店"
+ },
"shop/electronics": {
"name": "电器店",
"terms": "电器店"
},
+ "shop/fabric": {
+ "name": "布店"
+ },
"shop/farm": {
"name": "农场",
"terms": "农场"
},
+ "shop/fashion": {
+ "name": "服装店"
+ },
"shop/fishmonger": {
"name": "海产店",
"terms": "海产店"
"name": "珠宝店",
"terms": "珠宝店"
},
+ "shop/kiosk": {
+ "name": "报刊亭",
+ "terms": "书报亭"
+ },
"shop/laundry": {
"name": "洗衣店",
"terms": "洗衣店"
},
+ "shop/leather": {
+ "name": "皮具店"
+ },
"shop/locksmith": {
"name": "锁匠铺",
"terms": "锁匠铺"
"name": "商场",
"terms": "商场"
},
+ "shop/massage": {
+ "name": "按摩店"
+ },
"shop/mobile_phone": {
"name": "手机店",
"terms": "手机店"
"name": "音乐店",
"terms": "音乐店"
},
+ "shop/musical_instrument": {
+ "name": "乐器店"
+ },
"shop/optician": {
"name": "眼镜店",
"terms": "眼镜店"
"name": "照相馆",
"terms": "照相馆"
},
+ "shop/radiotechnics": {
+ "name": "音像制品店"
+ },
"shop/seafood": {
"name": "海鲜店"
},
"shop/tailor": {
"name": "裁缝"
},
+ "shop/tobacco": {
+ "name": "烟草店"
+ },
"shop/toys": {
"name": "玩具店",
"terms": "玩具店"
"terms": "水坝"
},
"waterway/ditch": {
- "name": "沟",
- "terms": "沟渠"
+ "name": "æ°´æ²\9f",
+ "terms": "沟,沟渠,涧"
},
"waterway/drain": {
"name": "渠",
"commit": {
"title": "記低修改",
"description_placeholder": "簡述你爾則稿件",
- "message_label": "遞交片語",
"upload_explanation": "你嘅修改,傳咗上去公家街圖。凢用公家街圖資料,地圖都會見到。",
"upload_explanation_with_user": "你以{user}名義,修改傳咗上去公家街圖。凢用公家街圖資料,地圖都會見到。",
"save": "記",
"title": "記低",
"help": "修改放上公家街圖,等其他用者都睇到。",
"no_changes": "無修改可記",
- "error": "記上去時出錯",
"uploading": "修改傳上公家街圖。",
"unsaved_changes": "你有修改未記妥"
},
"fields": {
"access": {
"label": "通",
- "placeholder": "未知",
- "types": {
- "access": "總體",
- "foot": "行",
- "motor_vehicle": "車",
- "bicycle": "單車",
- "horse": "馬"
- },
"options": {
- "yes": {
- "title": "准許",
- "description": "按法例可通,通路之權。"
+ "designated": {
+ "description": "通行與否,按法例或路牌指定",
+ "title": "指名"
+ },
+ "destination": {
+ "description": "限往目的地",
+ "title": "目的地"
},
"no": {
- "title": "禁入",
- "description": "公眾不通"
+ "description": "公眾不通",
+ "title": "禁入"
},
"permissive": {
- "title": "放任",
- "description": "可通,直至地主唔畀。"
+ "description": "可通,直至地主唔畀。",
+ "title": "放任"
},
"private": {
- "title": "私家",
- "description": "要地主批准"
- },
- "designated": {
- "title": "指名",
- "description": "通行與否,按法例或路牌指定"
+ "description": "要地主批准",
+ "title": "私家"
},
- "destination": {
- "title": "目的地",
- "description": "限往目的地"
+ "yes": {
+ "description": "按法例可通,通路之權。",
+ "title": "准許"
}
+ },
+ "placeholder": "未知",
+ "types": {
+ "access": "總體",
+ "bicycle": "單車",
+ "foot": "行",
+ "horse": "馬",
+ "motor_vehicle": "車"
}
},
"access_simple": {
"address": {
"label": "地埗",
"placeholders": {
- "street": "街",
- "city": "城"
+ "city": "城",
+ "street": "街"
}
},
"admin_level": {
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "é \86æ\99\82é\87\9d",
- "anticlockwise": "é\80\86æ\99\82é\87\9d"
+ "anticlockwise": "é\80\86æ\99\82é\87\9d",
+ "clockwise": "é \86æ\99\82é\87\9d"
}
},
"collection_times": {
"internet_access": {
"label": "用到互聯網",
"options": {
- "wlan": "無綫上網",
+ "terminal": "終端機",
"wired": "揷綫上網",
- "terminal": "終端機"
+ "wlan": "無綫上網"
}
},
"landuse": {
},
"structure": {
"label": "結構",
- "placeholder": "未知",
"options": {
"bridge": "橋",
- "tunnel": "隧道",
+ "cutting": "開山",
"embankment": "基堤",
- "cutting": "開山"
- }
+ "tunnel": "隧道"
+ },
+ "placeholder": "未知"
},
"supervised": {
"label": "有人睇"
"modes": {
"add_area": {
"title": "區域",
- "description": "在地圖上添加公園、建築物、湖泊或其他區域。",
- "tail": "按一下地圖來開始繪製一塊區域,如公園、湖泊或建築物。"
+ "description": "新增公園、建築物、湖泊或其它區域至地圖上。",
+ "tail": "點擊地圖以繪製一塊區域,如公園、湖泊或建築物。"
},
"add_line": {
"title": "線",
- "description": "在地圖上添加公路、街道、行人徑、運河或其他線段。",
- "tail": "é»\9eæ\93\8aå\9c°å\9c\96ä¾\86é\96\8bå§\8b繪製道路、路徑或路綫。"
+ "description": "新增公路、街道、行人道、運河或其他線段至地圖上。",
+ "tail": "é»\9eæ\93\8aå\9c°å\9c\96以繪製道路、路徑或路綫。"
},
"add_point": {
"title": "點",
- "description": "在地圖上添加餐廳、古蹪、郵箱或其他事物。",
- "tail": "按一下地圖來添加一個點。"
+ "description": "新增餐廳、古蹪、郵箱或其他事物至地圖上。",
+ "tail": "點擊地圖以新增一個點。"
},
"browse": {
"title": "瀏覽",
"description": "平移及縮放地圖。"
},
"draw_area": {
- "tail": "點擊以為這個區域添加節點。點擊第一點來完成繪製區域。"
+ "tail": "點擊地圖以添加區域的其它節點。點擊第一點以完成區域的繪製。"
},
"draw_line": {
- "tail": "點擊以為這線段添加更多節點。點擊其他線段以連接它們,點擊兩下以完成繒製線段。"
+ "tail": "點擊地圖以添加線段的其它節點。點擊其他線段以連接它們,點擊兩下以完成線段的繪製。"
}
},
"operations": {
"add": {
"annotation": {
- "point": "已添å\8a 一點。",
- "vertex": "給路徑添加了一節點。",
- "relation": "å¢\9eå\8a 一項關係。"
+ "point": "å·²æ\96°å¢\9e一點。",
+ "vertex": "已新增一節點至路徑上。",
+ "relation": "å·²æ\96°å¢\9e一項關係。"
}
},
"start": {
},
"continue": {
"key": "A",
- "title": "繼續繪製",
+ "title": "繼續",
"description": "繼續繪製此線段",
"not_eligible": "無法在此繼續繪製線段",
"multiple": "有多條線段可在此延續。要選擇其中一條,請按 Shift 鍵並點擊它。",
"area": "將一區域製成環形。"
},
"not_closed": "非圈狀物件,不能環形化。",
- "too_large": "因物件尚未有足夠部份正在顯示,不能環形化。"
+ "too_large": "因物件尚未有足夠部份正在顯示,不能環形化。",
+ "connected_to_hidden": "這個沒辦法圓形化,因為與其他隱藏的圖徵相連"
},
"orthogonalize": {
"title": "方角化",
"area": "已將區域的彎角換成直角。"
},
"not_squarish": "物件無法被方角化,因為它並非近似方形。",
- "too_large": "因物件尚未有足夠部份正在顯示,不能被方角化。"
+ "too_large": "因物件尚未有足夠部份正在顯示,不能被方角化。",
+ "connected_to_hidden": "這個沒辦法方形化,因為與其他隱藏的圖徵相連"
},
"straighten": {
"title": "拉直",
"description": "拉直此線段",
"key": "S",
"annotation": "拉直一條線段。",
- "too_bendy": "這條線段無法被拉直,因為有過多彎折。"
+ "too_bendy": "這條線段無法被拉直,因為有過多彎折。",
+ "connected_to_hidden": "這個沒辦法直線化,因為與其他隱藏的圖徵相連"
},
"delete": {
"title": "刪除",
"relation": "刪除了一關係",
"multiple": "刪除了 {n} 個物件。"
},
- "incomplete_relation": "物件未完全下載,不能刪除。"
+ "incomplete_relation": "物件未完全下載,不能刪除。",
+ "part_of_relation": "這個圖徵沒辦法刪除,因為是屬於比較大關係的一部分。你必須從關係裡移除。",
+ "connected_to_hidden": "這個沒辦法刪除,因為與其他隱藏的圖徵相連"
},
"add_member": {
"annotation": "給關係添加了一成員。"
"description": "將這些路徑/區域斷開。",
"key": "D",
"annotation": "斷開了路徑。",
- "not_connected": "未有足夠的路徑/區域來斷開。"
+ "not_connected": "未有足夠的路徑/區域來斷開。",
+ "connected_to_hidden": "無法斷開,因為其連接著隱藏的特徵。"
},
"merge": {
"title": "合併",
"multiple": "移動了數個物件。"
},
"incomplete_relation": "物件未完全下載,不能移動。",
- "too_large": "由於目前可視部分太少了,所以無法移動該物件。"
+ "too_large": "由於目前可視部分太少了,所以無法移動該物件。",
+ "connected_to_hidden": "這個沒辦法移動,因為與其他隱藏的圖徵相連."
},
"rotate": {
"title": "旋轉",
"line": "旋轉了一線段。",
"area": "旋轉了一區域。"
},
- "too_large": "由於目前可視部分太少,所以無法旋轉該物件。"
+ "too_large": "由於目前可視部分太少,所以無法旋轉該物件。",
+ "connected_to_hidden": "這個沒辦法旋轉,因為與其他隱藏的圖徵相連."
},
"reverse": {
"title": "反轉",
"multiple": "分割{n}項線段/區域的邊界。"
},
"not_eligible": "不能於線段的首尾進行分割。",
- "multiple_ways": "太多線段,未能進行分割。"
+ "multiple_ways": "太多線段,未能進行分割。",
+ "connected_to_hidden": "這個沒辦法切割,因為與其他隱藏的圖徵相連."
},
"restriction": {
"help": {
"logout": "登出",
"loading_auth": "正在連接 OpenStreetMap...",
"report_a_bug": "回報編輯器問題",
+ "feature_info": {
+ "hidden_warning": "{count} 隱藏的圖徵",
+ "hidden_details": "這些圖徵現在被隱藏.: {details}"
+ },
"status": {
"error": "未能連接至伺服器介面。",
"offline": "伺服器介面離線,請稍後再嘗試編輯。",
"commit": {
"title": "儲存修改",
"description_placeholder": "簡要描述你的貢獻",
- "message_label": "有關此編輯的訊息",
"upload_explanation": "你的修改將會在所有使用OpenStreetMap資料的地圖上看到。",
"upload_explanation_with_user": "你以 {user} 具名的修改將會在所有使用OpenStreetMap資料的地圖上看到。",
"save": "儲存",
"warnings": "警告",
"modified": "已修改",
"deleted": "已刪除",
- "created": "å·²å\89µå»º"
+ "created": "已建ç«\8b"
},
"contributors": {
"list": "正顯示 {users} 的編輯",
- "truncated_list": "正顯示 {users} 和另外 {count} 位用戶的編輯"
+ "truncated_list": "由 {users} 與另外 {count} 人編輯"
+ },
+ "infobox": {
+ "selected": "{n} 被選擇",
+ "geometry": "幾何",
+ "closed": "已關閉",
+ "center": "中心",
+ "perimeter": "周長",
+ "length": "長度",
+ "area": "區域",
+ "location": "地點",
+ "metric": "公制",
+ "imperial": "英制"
+ },
+ "geometry": {
+ "point": "點",
+ "vertex": "頂點",
+ "line": "線",
+ "area": "區域",
+ "relation": "關係"
},
"geocoder": {
"search": "搜尋全世界...",
"incomplete": "<未下載>",
"feature_list": "搜尋物件",
"edit": "編輯特徵",
+ "check": {
+ "yes": "是",
+ "no": "否"
+ },
"none": "無",
"node": "節點",
"way": "路徑",
"title": "地圖圖資",
"description": "地圖圖資",
"data_layers": "資料圖層",
- "fill_area": "填土區",
- "map_features": "地圖圖徵"
+ "fill_area": "填充選項",
+ "map_features": "地圖圖徵",
+ "autohidden": "因為螢幕中的特徵太多,這些特徵已被自動隱藏。請放大再修編。"
},
"feature": {
"points": {
"description": "主要道路",
"tooltip": "公路、街道等"
},
+ "minor_roads": {
+ "description": "非主要道路",
+ "tooltip": "服務道路、停車場通道、路徑等"
+ },
+ "paths": {
+ "description": "通道",
+ "tooltip": "人行道、步行徑、單車道等。"
+ },
"buildings": {
- "description": "建築物"
+ "description": "建築物",
+ "tooltip": "建築、亭子、倉庫等。"
+ },
+ "landuse": {
+ "description": "土地利用圖徵",
+ "tooltip": "森林、農莊、公園、住宅區、商業區等。"
+ },
+ "boundaries": {
+ "description": "邊界",
+ "tooltip": "行政邊界"
},
"water": {
"description": "水域圖徵",
"description": "鐵路圖徵",
"tooltip": "鐵路"
},
+ "power": {
+ "description": "電力設施",
+ "tooltip": "輸電線、發電廠、變電所等。"
+ },
"past_future": {
- "description": "過去/未來"
+ "description": "過去/未來",
+ "tooltip": "預定地,施工中,廢棄,拆除等。"
},
"others": {
- "description": "其他"
+ "description": "其他",
+ "tooltip": "其他東西"
+ }
+ },
+ "area_fill": {
+ "wireframe": {
+ "description": "不填充 (線條顯示)",
+ "tooltip": "啟用線框模式,可以很容易地看到背景圖像。"
+ },
+ "partial": {
+ "description": "部分填充",
+ "tooltip": "區域只有外框部分有顏色填充。(新手畫圖者推薦選項)"
+ },
+ "full": {
+ "description": "全部填充",
+ "tooltip": "區域全部用顏色填充"
}
},
"restore": {
"title": "儲存",
"help": "儲存修改至OpenStreetMap,讓其他用戶看見。",
"no_changes": "沒有修改需要儲存。",
- "error": "儲存編輯時發生錯誤",
+ "error": "嘗試儲存時發生了故障",
+ "status_code": "伺服器傳回的狀態碼{code}",
"unknown_error_details": "請確定你已經連上網路。",
"uploading": "正在上載修改至OpenStreetMap。",
- "unsaved_changes": "你有未儲存的編輯"
+ "unsaved_changes": "你有未儲存的編輯",
+ "conflict": {
+ "header": "解決編輯衝突",
+ "count": "在{total}中有{num}個衝突 ",
+ "previous": "< 上一個",
+ "next": "下一個 >",
+ "keep_local": "保留我的",
+ "keep_remote": "使用他們的",
+ "restore": "復原",
+ "delete": "放棄資料",
+ "download_changes": "下載你做的變動",
+ "done": "所有衝突已解決!",
+ "help": "其它使用者修改了一些你修改過的圖徵。\n點擊下面每個項目去顯示衝突的詳細信息,並選擇是否保持\n你的修改或其他用戶的修改。\n"
+ }
+ },
+ "merge_remote_changes": {
+ "conflict": {
+ "deleted": "這個物件已被 {user} 刪除.",
+ "location": "這個物件被你和{user}移動了.",
+ "nodelist": "節點已被你和{user}改變了.",
+ "memberlist": "關係成員已被你和{user}改變了。",
+ "tags": "你改變了 <b>{tag}</b> 標籤為 \"{local}\" 並且 {user} 更改它為 \"{remote}\"。"
+ }
},
"success": {
"edited_osm": "已編輯了OSM!",
"just_edited": "您剛剛編輯了OpenStreetMap!",
"view_on_osm": "於OSM上顯示",
- "facebook": "分享到 Facebook",
- "twitter": "分享到 Twitter",
- "google": "分享到 Google+",
- "help_html": "您的修改應會在數分鐘內在\"標準\"圖層中出現。其他圖層和某些物件則可能會花較長時間。\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
+ "facebook": "分享至 Facebook",
+ "twitter": "分享至 Twitter",
+ "google": "分享至 Google+",
+ "help_html": "您的修改應會在數分鐘內在「標準」圖層中出現。其他圖層和某些物件則可能會花較長時間。\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>詳細資料</a>)。\n"
},
"confirm": {
- "okay": "確定"
+ "okay": "確定",
+ "cancel": "取消"
},
"splash": {
"welcome": "歡迎使用iD OpenStreetMap編輯器",
},
"help": {
"title": "說明文件",
- "help": "# 幫助\n\n這是[開放街圖](http://www.openstreetmap.org/)的編輯器。\n開放街圖是自由及可編輯的世界地圖。您可以用這個編輯器來添加和更新您所在區域的地圖資料,令這個開源和開放資料的世界地圖變得更好。\n\n您在地圖上所做的編輯,將會讓所有使用開放街圖的人看到。為了進行編輯,您需要一個[免費的開放街圖帳戶](https://www.openstreetmap.org/user/new)。\n\n[iD編輯器](http://ideditor.com/) 是採用開源方式合作開發的專案, [原始碼可在GitHub找到](https://github.com/openstreetmap/iD)。\n",
+ "help": "# 說明\n\n這是[開放街圖](http://www.openstreetmap.org/)的編輯器。\n開放街圖是自由及可編輯的世界地圖。您可以用這個編輯器來添加和更新您所在區域的地圖資料,令這個開源和開放資料的世界地圖變得更好。\n\n您在地圖上所做的編輯,將會讓所有使用開放街圖的人看到。為了編輯,您需要先[登入](https://www.openstreetmap.org/login)。\n\n[iD編輯器](http://ideditor.com/) 採用開源方式合作開發的專案, [原始碼可在GitHub找到](https://github.com/openstreetmap/iD)。\n",
"editing_saving": "# 編輯和儲存\n\n這個編輯器主要為線上編輯而設計,而你現在透過網站使用它。\n\n### 選擇物件\n\n要選擇地圖上一個物件,如道路或興趣點,可於地圖上按該物件。這將令所選取的物件以高亮顯示,並開啟詳情的側邊欄,以及顯示可進行操作的功能選單。\n\n要選擇多個物件,可以按住'Shift'鍵,在地圖上按下並拖曳。這將選擇所顯示的方框內的所有物件,讓您可同時操作多個物件。\n\n### 儲存編輯\n\n當您修改地圖,如編輯道路,建築物和場所,這些修改都會先儲存在本機上而未被上傳,直到您將它們上傳到伺服器為止。如果您在這段時間做出錯誤的修改,也不用擔心,您可以按下“撤消”按鈕修改,亦可按下“重做”按鈕,重做經撤消的修改。\n\n按下“儲存”按鈕以完成編輯 - 例如,如果您已經完成了某市鎮的一個區域,而想開始一個新區域。您將有機會覆核你做了什麼編輯,而如果看起來您作出了一些不適當的改變,編輯器將會提供有用的建議及警告。\n\n如果一切看起來不錯,您可以輸入簡短的註釋,解釋您作出的修改,並再按下“儲存”以向[OpenStreetMap.org](http://www.openstreetmap.org/)發布這些修改。這些修改將可被其他OpenStreetMap用戶看見,並可供其他用戶在其上作進一步修訂及完善。\n\n如果您不能一次就完成您的編輯,您可以離開編輯器視窗,日後(在相同的瀏覽器和電腦上)回來,編輯器將讓你選擇是否希望恢復上一次未完成的編輯。\n",
"roads": "# 道路\n\n您可以利用這個編輯器創建,修復,及刪除道路。道路可以有很多種:行人路徑,公路,步道,單車路線等等 - 任何經常使用的路段都可製圖。\n\n### 選擇道路\n\n按圖上的道路以選擇該道路。道路的輪廓會以高亮度顯示,而同時地圖上會出現小工具選單,旁邊亦會彈出面板,顯示有關該道路的資訊。\n\n### 修改道路\n\n您或會經常注意到,道路並非對齊在背景中顯示的衛星圖像或GPS軌跡。您可以調整這些道路,讓他們位於正確的位置。\n\n首先,按您想修訂的道路。這會將道路以高亮度顯示,並顯示沿著這道路的節點,你可以拖曳這些節點到更好的位置。如果您想增加細節,可以為道路添加新的節點,點擊兩下道路上沒有節點的部分,便可在該處増加節點。\n\n如果道路連接到另一條道路,但在地圖上並未妥善連接,你可以拖曳道路的其中一個節點到另一條道路上,以連接兩條道路。連接好道路,對地圖非常重要,特別是對提供駕駛指示的應用程序而言,是必要的。\n\n您也可以按下'移動'工具或按`M`快速鍵,來移動整條道路,然後按一下以完成移動的動作。\n\n### 刪除道路\n\n如果一條道路完全不正確 - 您看到它在衛星圖像上不存在,並最好實地證實它根本不存在 - 您可以將道路刪除,這會從地圖中將之移除。刪除物件時務必要小心 - 像任何其他的編輯,結果會被大家看見,而衛星圖像往往會過時,因此該道路或許只是新建的。\n\n要刪除道路,您可以按住它以選擇,然後按下垃圾桶圖標,或按 ’Delete’ 鍵。\n\n### 繪製新道路\n\n發現某處應有一條道路,但地圖上沒有?按編輯器左上方的'線'按鈕,或按下`2`快速鍵,以開始繪製線段。\n\n在地圖上點擊道路的開端,以開始繪製道路。如果道路從一條現有的道路分支出來,應點擊兩者連接的地方,以開始繪製。\n\n然後按住沿著道路的點,以根據衛星影像或GPS軌跡,正確地繪製道路。如果您繪製的道路如果與另一條道路交匯,請點擊相交點以將它們連接起來。當您完成繪製後,可按兩下滑鼠或按鍵盤上的 'Return' 或 ’Enter’ 鍵。\n",
+ "gps": "# GPS\n\nGPS 資料是 OpenStreetMap 最可靠的資料來源. 這個編輯器支援 `.gpx` 的軌跡檔。 你可以使用智慧型手機的程式或個人 GPS 硬體去搜集。\n\n關於如何進行 GPS 資料搜集, 可參考\n[Surveying with a GPS](http://learnosm.org/en/beginner/using-gps/)。\n\n當要使用 GPX 軌跡檔去繪圖時,你可以直接拖拉 GPX 檔案至地圖編輯器上,如果編輯器識別到軌跡檔時,它將用亮紫色把軌跡顯示在地圖上。你可以點擊右側的 'Map Data' 選單去顯示、隱藏或縮放這個軌跡所產生的圖層。\n\n這個 GPX 軌跡並沒有上傳至 OpenStreetMap,但這種方式適合於當你想把軌跡當成參考資料去繪製新的地圖時,當然你也可以[上傳軌跡至 OpenStreetMap](http://www.openstreetmap.org/trace/create)\n供其它人使用。\n",
"imagery": "# 圖像\n\n空照圖是繪製地圖重要的資料來源。在畫面右方的'背景圖像設定'選單中,可選擇使用的圖像,\n他們分別為空照圖、衛星影像和其他可自由編輯的圖像資源。\n\n編輯器預設使用[Bing Maps](http://www.bing.com/maps/)的衛星圖層,\n但當您平移或縮放地圖至一個新的地理區域,或可使用新的資源。\n在一些國家,像美國、法國和丹麥,部分區域有非常高品質的圖像。\n\n圖像會與地圖數據有所偏移。如果你看見很多的道路與背景有偏移,請不要立刻將它們全部搬移以與背景刎合。相反,你可以在「背景設定」選單中,點擊下方的「校準底圖」,以調整圖像以配合現有地圖數據。 \n\n圖像有時候或會因為圖像提供者方面的誤差,與地圖資料有所偏移。\n如果您看到有很多路與背景是平移錯位的,請不要立刻將它們全部搬移以與背景刎合。\n您只需要點擊圖像設定介面底部的'校準'來調整圖像,讓它符合現有資料。\n",
"addresses": "# 地址 \n\n地址是地圖中最有用的訊息之一。 \n\n雖然地址通常被視為街道的一部分,在 OpenStreetMap 中,它們是沿相關街道的建築物和地方的屬性。 \n\n您可以將地址訊息,添加到以建築物輪廓為代表、或以點為代表的地方之上。地址資料的最佳來源,是實地調查或個人知識 - 與任何其他物件一樣,嚴格禁止抄襲商業來源(如Google 地圖)的地圖資料。\n",
"inspector": "# 使用檢視面板\n\n檢視面板是畫面右面的用戶界面元素,當您選擇一個物件時便會出現,讓您可編輯物件的詳細資料。\n\n### 選擇物件類型\n\n在您添加一個點、線段或區域後,您可以選擇物件的類型,例如該物件應是高速公路還是住宅區道路,是超級市場還是咖啡廳。檢視面板將顯示常用物件類型的按鈕,要找出其他物件類型,您可以在搜尋框中輸入您所要的物件類型。\n\n點選物件類型按鈕右下角的'i'字,可顯示物件類型的更多資訊。點選按鈕以選擇該類型。\n\n### 使用表格和編輯標籤\n\n在您選擇物件類型後,或選擇已經被編配類型的物件時,檢查面板會顯示該物件詳細資料的欄位,\n如名稱和地址。\n\n在欄位下方,您可以點選按鈕,以添加其他詳細資料,如[維基百科](http://www.wikipedia.org/)的條目資料,輪椅可否到達,以及其他更多資料。\n\n在面板的底部,點擊'增加標籤'以添加其他任意的標籤到該物件。您可透過[Taginfo](http://taginfo.openstreetmap.org/),了解有關常用的標籤組合的更多資料。\n\n您在檢查面板所做的更改,會自動應用到地圖上。您可以隨時點選'撤消'按鈕,撤消這些更改。\n\n### 關閉檢查面板\n\n您可以點選檢查面板右上角的關閉按鈕、按’Escape'鍵,或在地圖上點一下,以關閉檢查面板。\n",
"add": "點可以用來表示像是商店、餐廳與古蹟之類的物件,它們標示一個特定位置,並且描述那裡有什麼。 **點擊「點」按鈕以新增一點**",
"place": "在地圖上按一下,可以地圖上放上新增的一點。 **將該點放到建築物上方**",
"search": "很多不同的物件,可以用點來代表。您剛新增的點,是一間咖啡廳。**搜尋'{name}'**",
- "choose": "**從列表中選擇咖啡廳。**",
+ "choose": "**從清單中選擇咖啡廳。**",
"describe": "這個點現在標示為咖啡廳,透過物件編輯器,我們可以加入更多相關資訊。 **新增一個名稱**",
"close": "點選關閉按鈕就可以關閉物件編輯器。 **關閉物件編輯器**",
"reselect": "很多時候,所需的點已經存在,但會錯誤或者描述不完整。我們可以編輯現有的點。**選擇您剛創建的點**",
"corner": "透過將節點放到區域的界線上,可繪製區域。**將起始節點置於遊樂場的其中一角**",
"place": "放置更多節點,以勾畫該區域。按起始節點以完成繪製區域。**繪製一區域以代表遊樂場**",
"search": "**搜尋'{name}'。**",
- "choose": "**從列表中選擇遊樂場。**",
- "describe": "**æ·»å\8a 名稱,並關閉物件編輯器。**"
+ "choose": "**從清單中選擇遊樂場。**",
+ "describe": "**æ\96°å¢\9e名稱,並關閉物件編輯器。**"
},
"lines": {
"title": "線",
"add": "線後可用於表示如道路、鐵路以及河流。 **按下線按鈕來新增一條線段。**",
"start": "**按道路末端,以開始繪製線段。**",
- "intersect": "點擊以為線段添加更多的節點。在繪圖是,如有需要,您可以拖曳地圖。道路和許多其他類型的線段,是整個體系的一部分。這些線段正確地連接起來,對導航的應用程序的運作相當重要。**點擊Flower Street,建立連接這兩條線段的相交點。**",
+ "intersect": "點擊地圖以新增線段的其它節點。在繪圖時如有需要您可以拖曳地圖。道路和許多其他類型的線段是整個路網的一部分,這些線段正確地連接對導航程式的運作相當重要。**點擊Flower Street以建立這兩條線段的相交點。**",
"finish": "再次按最後的節點,可完成繪製線段。**完成繪製此道路**",
- "road": "**從列表中選擇道路。**",
+ "road": "**從清單中選擇道路。**",
"residential": "道路有不同種類,最常見的為住宅區道路。**選擇住宅區道路**",
"describe": "**命名道路,並關閉物件編輯器。**",
"restart": "這道路須與Flower Street相交。",
"fields": {
"access": {
"label": "通行限制",
- "placeholder": "未知種類",
- "types": {
- "access": "一般",
- "foot": "步行",
- "motor_vehicle": "汽機車",
- "bicycle": "單車",
- "horse": "馬匹"
- },
"options": {
- "yes": {
- "title": "可使用",
- "description": "按法律及路權; 有權使用"
+ "designated": {
+ "description": "只限標誌指定或特定本地法律容許人士進入",
+ "title": "指定"
+ },
+ "destination": {
+ "description": "只限前往目的地人士進入",
+ "title": "目的地"
},
"no": {
- "title": "禁止進入",
- "description": "禁止一般公眾進入"
+ "description": "禁止一般公眾進入",
+ "title": "禁止進入"
},
"permissive": {
- "title": "獲許可進入",
- "description": "容許進入,直至擁有者撇回許可"
+ "description": "容許進入,直至擁有者撇回許可",
+ "title": "獲許可進入"
},
"private": {
- "title": "私人",
- "description": "須擁有者個別批准,方可進入"
- },
- "designated": {
- "title": "指定",
- "description": "只限標誌指定或特定本地法律容許人士進入"
+ "description": "須擁有者個別批准,方可進入",
+ "title": "私人"
},
- "destination": {
- "title": "目的地",
- "description": "只限前往目的地人士進入"
+ "yes": {
+ "description": "按法律及路權; 有權使用",
+ "title": "可使用"
}
+ },
+ "placeholder": "未知種類",
+ "types": {
+ "access": "一般",
+ "bicycle": "腳踏車",
+ "foot": "步行",
+ "horse": "馬匹",
+ "motor_vehicle": "汽機車"
}
},
"access_simple": {
"address": {
"label": "地址",
"placeholders": {
+ "city": "城市",
+ "country": "國家",
+ "district": "區",
+ "hamlet": "村莊",
"housename": "房屋名稱",
"housenumber": "123",
- "street": "街道",
- "city": "城市",
- "postcode": "郵遞區號",
"place": "地方",
- "hamlet": "村莊",
- "suburb": "細區",
- "subdistrict": "分區",
- "district": "區",
+ "postcode": "郵遞區號",
"province": "省",
"state": "州",
- "country": "國家"
+ "street": "街道",
+ "subdistrict": "分區",
+ "suburb": "細區"
}
},
"admin_level": {
"aerialway/access": {
"label": "通行方向",
"options": {
+ "both": "雙向",
"entry": "進入",
- "exit": "離開",
- "both": "雙向"
+ "exit": "離開"
}
},
"aerialway/bubble": {
"aerialway/summer/access": {
"label": "通行方向(夏季)",
"options": {
+ "both": "雙向",
"entry": "進入",
- "exit": "離開",
- "both": "雙向"
+ "exit": "離開"
}
},
"aeroway": {
"cardinal_direction": {
"label": "方向",
"options": {
- "N": "北",
"E": "東",
- "S": "南",
- "W": "西",
- "NE": "東北",
- "SE": "東南",
- "SW": "西南",
- "NW": "西北",
- "NNE": "東北偏北",
"ENE": "東北偏東",
"ESE": "東南偏東",
+ "N": "北",
+ "NE": "東北",
+ "NNE": "東北偏北",
+ "NNW": "西北偏北",
+ "NW": "西北",
+ "S": "南",
+ "SE": "東南",
"SSE": "東南偏南",
"SSW": "西南偏南",
- "WSW": "西南偏西",
+ "SW": "西南",
+ "W": "西",
"WNW": "西北偏西",
- "NNW": "西北偏北"
+ "WSW": "西南偏西"
}
},
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "順時針",
- "anticlockwise": "反時針"
+ "anticlockwise": "反時針",
+ "clockwise": "順時針"
}
},
"collection_times": {
"construction": {
"label": "種類"
},
+ "content": {
+ "label": "內容"
+ },
"country": {
"label": "國家"
},
"cuisine": {
"label": "食物種類"
},
+ "delivery": {
+ "label": "外送"
+ },
"denomination": {
"label": "教派"
},
"description": {
"label": "描述"
},
+ "drive_through": {
+ "label": "得來速"
+ },
"electrified": {
"label": "電氣化",
- "placeholder": "架空電車線, 第三軌供電",
"options": {
"contact_line": "架空電車線",
+ "no": "否",
"rail": "第三軌供電",
- "yes": "是 (未指名)",
- "no": "否"
- }
+ "yes": "是 (未指名)"
+ },
+ "placeholder": "架空電車線, 第三軌供電"
},
"elevation": {
"label": "海拔"
"label": "種類",
"options": {
"pillar": "支柱式/地面式",
+ "pond": "池塘",
"underground": "地下式",
- "wall": "牆",
- "pond": "池塘"
+ "wall": "牆"
}
},
"fixme": {
- "label": "Fix Me"
+ "label": "修復我"
},
"fuel": {
"label": "加油站"
"gauge": {
"label": "軌距"
},
+ "gender": {
+ "label": "性別",
+ "options": {
+ "female": "女性",
+ "male": "男性",
+ "unisex": "男女通用"
+ },
+ "placeholder": "未知"
+ },
"generator/method": {
"label": "方法"
},
"incline": {
"label": "斜度"
},
+ "incline_steps": {
+ "label": "斜坡",
+ "options": {
+ "down": "下坡",
+ "up": "上坡"
+ }
+ },
"information": {
"label": "種類"
},
"internet_access": {
- "label": "網際網絡連接",
+ "label": "網際網絡存取",
"options": {
- "yes": "有",
"no": "無",
- "wlan": "無線網絡",
+ "terminal": "終端",
"wired": "有線網絡",
- "terminal": "終端"
+ "wlan": "無線網絡",
+ "yes": "有"
}
},
"lamp_type": {
"label": "層"
},
"leaf_cycle": {
- "label": "落葉期"
+ "label": "落葉期",
+ "options": {
+ "deciduous": "落葉林",
+ "evergreen": "長青樹",
+ "mixed": "混合林",
+ "semi_deciduous": "半落葉林",
+ "semi_evergreen": "半長青林"
+ }
+ },
+ "leaf_type": {
+ "label": "葉子種類",
+ "options": {
+ "broadleaved": "闊葉林",
+ "leafless": "落葉林",
+ "mixed": "混合林",
+ "needleleaved": "針葉林"
+ }
},
"leisure": {
"label": "種類"
},
"mtb/scale": {
"label": "越越單車難度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: 堅實的碩石土路,沒有障礙物,大灣曲",
"1": "1: 鋪面部分鬆散,有小的障礙物,大彎曲",
"4": "4: 路面鬆散或是充滿石頭,有危險的髮夾彎",
"5": "5: 騎乘等級最困難,路面充滿石頭,或者是路面坍方",
"6": "6: 除非是技巧極好的越野車手,否則並不適合騎乘"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"mtb/scale/imba": {
"label": "國際登山車協會路徑難度",
- "placeholder": "容易, 中等, 困難...",
"options": {
"0": "最簡單 (白圈)",
"1": "容易 (綠圈)",
"2": "中等 (藍方塊)",
"3": "困難 (黑色鑽石型)",
"4": "極端困難 (雙重黑色鑽石型)"
- }
+ },
+ "placeholder": "容易, 中等, 困難..."
},
"mtb/scale/uphill": {
"label": "登山車上坡難度",
- "placeholder": "0, 1, 2, 3...",
"options": {
"0": "0: 平均坡度小於 10%,有碎石/夯實的地面,沒有障礙物",
"1": "1: 平均坡度小於15%,有碎石/夯實的地面,有些許障礙物",
"3": "3: 平均坡度25%,多變的平面,拳頭大的石頭/樹牆",
"4": "4: 平均坡度小於30%,很糟的路面狀況,大石頭/樹牆",
"5": "5: 很陡,單車得牽行或扛車"
- }
+ },
+ "placeholder": "0, 1, 2, 3..."
},
"name": {
"label": "名稱",
"oneway": {
"label": "單行道",
"options": {
+ "no": "否",
"undefined": "假設為否",
- "yes": "是",
- "no": "否"
+ "yes": "是"
}
},
"oneway_yes": {
"label": "單程路",
"options": {
+ "no": "否",
"undefined": "假設為是",
- "yes": "是",
- "no": "否"
+ "yes": "是"
}
},
"opening_hours": {
"parking": {
"label": "種類",
"options": {
- "surface": "平面",
- "multi-storey": "立體",
- "underground": "地下",
- "sheds": "有覆蓋",
"carports": "車棚",
"garage_boxes": "垃圾桶",
- "lane": "路邊"
+ "lane": "路邊",
+ "multi-storey": "立體",
+ "sheds": "有覆蓋",
+ "surface": "平面",
+ "underground": "地下"
}
},
"phone": {
},
"piste/difficulty": {
"label": "難度",
- "placeholder": "容易, 中階, 進階",
"options": {
- "novice": "新手 (教學)",
- "easy": "容易 (綠圈)",
- "intermediate": "中階 (藍方塊)",
"advanced": "進階 (黑色鑽石型)",
+ "easy": "容易 (綠圈)",
"expert": "專家 (雙重黑色鑽石型)",
+ "extreme": "極端困難 (需要攀登工具)",
"freeride": "自由滑行 (場地外)",
- "extreme": "極端困難 (需要攀登工具)"
- }
+ "intermediate": "中階 (藍方塊)",
+ "novice": "新手 (教學)"
+ },
+ "placeholder": "容易, 中階, 進階"
},
"piste/grooming": {
"label": "雪道種類",
"options": {
- "classic": "經典",
- "mogul": "蒙古人",
"backcountry": "偏遠地區",
+ "classic": "經典",
"classic+skating": "經典和滑行",
+ "mogul": "蒙古人",
"scooter": "滑行艇/雪車",
"skating": "滑行"
}
"label": "種類",
"options": {
"downhill": "滑降",
+ "hike": "徒步旅行",
+ "ice_skate": "冰刀",
"nordic": "北歐人",
+ "playground": "練習場",
"skitour": "滑雪旅行",
"sled": "雪橇",
- "hike": "徒步旅行",
"sleigh": "簡易雪橇",
- "ice_skate": "冰刀",
- "snow_park": "滑雪場",
- "playground": "練習場"
+ "snow_park": "滑雪場"
}
},
"place": {
"power": {
"label": "種類"
},
+ "power_supply": {
+ "label": "電源供應器"
+ },
"railway": {
"label": "種類"
},
},
"sac_scale": {
"label": "旅行難度",
- "placeholder": "登山旅行、越嶺縱走...",
"options": {
- "hiking": "T1:徒步旅行",
- "mountain_hiking": "T2:登山旅行",
- "demanding_mountain_hiking": "T3:進階登山旅行",
"alpine_hiking": "T4:高山旅行",
"demanding_alpine_hiking": "T5:進階高山旅行",
- "difficult_alpine_hiking": "T6:艱困高山旅行"
- }
+ "demanding_mountain_hiking": "T3:進階登山旅行",
+ "difficult_alpine_hiking": "T6:艱困高山旅行",
+ "hiking": "T1:徒步旅行",
+ "mountain_hiking": "T2:登山旅行"
+ },
+ "placeholder": "登山旅行、越嶺縱走..."
+ },
+ "sanitary_dump_station": {
+ "label": "廁所處理方式"
},
"seasonal": {
"label": "季節性"
"service": {
"label": "種類"
},
+ "service/bicycle/chain_tool": {
+ "label": "固定架",
+ "options": {
+ "no": "否",
+ "undefined": "預設為否",
+ "yes": "是"
+ }
+ },
"service/bicycle/pump": {
"label": "打氣設備",
"options": {
+ "no": "沒有",
"undefined": "預設沒有",
- "yes": "有",
- "no": "沒有"
+ "yes": "有"
+ }
+ },
+ "service_rail": {
+ "label": "服務類型",
+ "options": {
+ "crossover": "橫渡線",
+ "siding": "側線",
+ "spur": "支線",
+ "yard": "調度軌"
}
},
"shelter": {
},
"smoking": {
"label": "吸煙",
- "placeholder": "禁止, 分離空間, 允許",
"options": {
- "no": "禁止吸煙",
- "separated": "無隔離空間的吸煙區",
+ "dedicated": "吸煙者專屬 (例如吸煙者酒吧)",
"isolated": "有隔離空間的吸煙區",
+ "no": "禁止吸煙",
"outside": "室外允許吸煙",
- "yes": "允許吸煙",
- "dedicated": "吸煙者專屬 (例如吸煙者酒吧)"
- }
+ "separated": "無隔離空間的吸煙區",
+ "yes": "允許吸煙"
+ },
+ "placeholder": "禁止, 分離空間, 允許"
},
"smoothness": {
"label": "平順度",
- "placeholder": "軸承、輪胎、越野",
"options": {
+ "bad": "強化輪胎:休旅自行車、汽車、人力車",
"excellent": "軸承:溜冰、滑板",
"good": "細輪:競速自行車",
+ "horrible": "越野:高負重越野車輛",
+ "impassable": "無法通行 / 輪車無法通行",
"intermediate": "輪胎:通勤腳踏車、輪椅、滑板車",
- "bad": "強化輪胎:休旅自行車、汽車、人力車",
"very_bad": "輕量化:低負重越野車輛",
- "horrible": "越野:高負重越野車輛",
"very_horrible": "越野專用:拖拉機、全地形越野車"
- }
+ },
+ "placeholder": "軸承、輪胎、越野"
},
"social_facility_for": {
"label": "服務對象",
},
"structure": {
"label": "人造結構物",
- "placeholder": "未知種類",
"options": {
"bridge": "橋樑",
- "tunnel": "隧道",
- "embankment": "堤",
"cutting": "挖土",
- "ford": "淺灘"
- }
+ "embankment": "堤",
+ "ford": "淺灘",
+ "tunnel": "隧道"
+ },
+ "placeholder": "未知種類"
},
"studio_type": {
"label": "種類"
},
"takeaway": {
"label": "外帶",
- "placeholder": "可以, 不行, 只能外帶 ...",
"options": {
- "yes": "可以",
"no": "不行",
- "only": "只能外帶"
- }
+ "only": "只能外帶",
+ "yes": "可以"
+ },
+ "placeholder": "可以, 不行, 只能外帶 ..."
},
"toilets/disposal": {
"label": "處置方式",
"options": {
- "flush": "沖水式",
- "pitlatrine": "旱廁/翼坑",
+ "bucket": "尿筒",
"chemical": "化工",
- "bucket": "尿筒"
+ "flush": "沖水式",
+ "pitlatrine": "旱廁/翼坑"
}
},
"tourism": {
},
"tracktype": {
"label": "產業道路種類",
- "placeholder": "堅硬地面、硬物鋪面、軟鋪面",
"options": {
"grade1": "剛性鋪面:鋪面為柏油、水泥或由剛性材質密實組成",
"grade2": "近剛性鋪面:礫石與石塊混合柔性材質",
"grade3": "混合剛性與柔性材質",
"grade4": "近柔性鋪面:土壤、砂土與草地混合其他剛性材質",
"grade5": "柔性鋪面:只有土壤、砂土與草地"
- }
+ },
+ "placeholder": "堅硬地面、硬物鋪面、軟鋪面"
},
"trail_visibility": {
"label": "路徑可見度",
- "placeholder": "良好、尚可、稍差...",
"options": {
+ "bad": "差勁:沒有標示、路徑有時候消失",
"excellent": "良好:路徑明顯或標示充分",
"good": "尚可:有標示但可能不明顯",
- "intermediate": "略差:標示稀少、路徑大致可見",
- "bad": "差勁:沒有標示、路徑有時候消失",
"horrible": "可怕:路徑常消失、需要部分定向能力",
+ "intermediate": "略差:標示稀少、路徑大致可見",
"no": "無:沒有路徑、需具備完整的定向能力"
- }
+ },
+ "placeholder": "良好、尚可、稍差..."
},
"trees": {
"label": "樹"
"water": {
"label": "種類"
},
+ "water_point": {
+ "label": "取水點"
+ },
"waterway": {
"label": "種類"
},
"name": "自行車維修站",
"terms": "提供自行車維修服務的地方"
},
+ "amenity/biergarten": {
+ "name": "啤酒花園"
+ },
"amenity/boat_rental": {
"name": "小艇出租",
"terms": "租船處,小艇租賃"
"terms": "便所,公廁,洗手間,盥洗室"
},
"amenity/townhall": {
- "name": "區公所",
- "terms": "鄉公所,鎮公所,市公所"
+ "name": "政府辦公大樓",
+ "terms": "市政廳,市政府,縣政府,區公所,鄉公所,鎮公所,市公所"
},
"amenity/university": {
"name": "大學用地",
"name": "路邊神祠",
"terms": "路邊小廟"
},
+ "junction": {
+ "name": "路口",
+ "terms": "槽化車道,道路交叉,十字路口,丁字路,路"
+ },
"landuse": {
"name": "土地用途",
"terms": "土地使用"
"name": "教堂院落",
"terms": "教堂用地"
},
+ "landuse/commercial": {
+ "name": "商業區",
+ "terms": "商業區"
+ },
"landuse/construction": {
"name": "建築工地",
"terms": "建築工程"
},
+ "landuse/farm": {
+ "name": "農田",
+ "terms": "農田,稻田,農地,田,耕地"
+ },
+ "landuse/farmland": {
+ "name": "農田",
+ "terms": "農田,稻田,農地,田,耕地"
+ },
"landuse/farmyard": {
"name": "農莊",
"terms": "莊園"
"name": "草地",
"terms": "草地"
},
+ "landuse/industrial": {
+ "name": "工業區",
+ "terms": "工業區"
+ },
"landuse/landfill": {
"name": "埯埋場",
"terms": "堆填區"
"name": "牧場",
"terms": "牧場"
},
+ "landuse/military": {
+ "name": "軍事用地",
+ "terms": "營區,軍營"
+ },
"landuse/orchard": {
"name": "果園",
"terms": "果園"
"name": "礦區",
"terms": "礦場"
},
+ "landuse/residential": {
+ "name": "住宅區",
+ "terms": "住宅用地"
+ },
+ "landuse/retail": {
+ "name": "零售",
+ "terms": "零售區域"
+ },
"landuse/vineyard": {
"name": "酒莊",
"terms": "酒莊"
"name": "遊艇碼頭",
"terms": "遊艇碼頭"
},
+ "leisure/nature_reserve": {
+ "name": "自然保留區",
+ "terms": "自然保護區"
+ },
"leisure/park": {
"name": "公園",
"terms": "綠地,遊樂場"
"terms": "遊樂場"
},
"leisure/running_track": {
- "name": "賽跑跑道",
- "terms": "跑道,跑步跑道"
+ "name": "操場",
+ "terms": "跑道,跑步跑道,賽跑跑道"
},
"leisure/slipway": {
"name": "船架滑道",
"terms": "泳池"
},
"leisure/track": {
- "name": "賽道(非摩托賽道)",
- "terms": "賽道(非摩托賽道),操場"
+ "name": "操場(非摩托賽道)",
+ "terms": "賽道(非摩托賽道)"
},
"line": {
"name": "線",
"name": "燈塔",
"terms": "燈塔"
},
+ "man_made/mast": {
+ "name": "天線桿"
+ },
"man_made/observation": {
"name": "瞭望塔",
"terms": "瞭望塔"
},
+ "man_made/petroleum_well": {
+ "name": "油井"
+ },
"man_made/pier": {
"name": "碼頭",
"terms": "碼頭"
"name": "管道",
"terms": "管線"
},
+ "man_made/silo": {
+ "name": "地窖"
+ },
+ "man_made/storage_tank": {
+ "name": "存放槽"
+ },
"man_made/survey_point": {
"name": "測量點",
"terms": "三角點,土地測量點"
"name": "城市",
"terms": "城市"
},
+ "place/farm": {
+ "name": "農場"
+ },
"place/hamlet": {
"name": "村莊",
"terms": "村鎮"
"name": "關係",
"terms": "關係"
},
+ "roundabout": {
+ "name": "圓環",
+ "terms": "圓環"
+ },
"route/ferry": {
"name": "渡輪航線",
"terms": "渡輪航線"
"name": "音響店",
"terms": "音響店"
},
+ "shop/houseware": {
+ "name": "家庭用品店",
+ "terms": "家居用品店"
+ },
"shop/interior_decoration": {
"name": "室內設計店",
"terms": "室內設計店"
"name": "渠",
"terms": "灌溉水圳"
},
+ "waterway/fuel": {
+ "name": "船用加油站"
+ },
"waterway/river": {
"name": "河流",
"terms": "河川"
"commit": {
"title": "保存更改",
"description_placeholder": "简要说明你的贡献",
- "message_label": "提交说明",
"upload_explanation": "你上传的更新将会显示在所有使用 OpenStreetMap 数据的地图上。",
"upload_explanation_with_user": "你 {user} 上传的更新将会显示在所有使用 OpenStreetMap 数据的地图上。",
"save": "保存",
"title": "保存",
"help": "保存更改到OpenStreetMap上,使其他用户可以看见。",
"no_changes": "没有可以保存的更改。",
- "error": "保存发生错误",
"uploading": "正在向OpenStreetMap上传更改。",
"unsaved_changes": "您有未保存的更改"
},
"fields": {
"access": {
"label": "通行限制",
- "placeholder": "未知种类",
- "types": {
- "access": "普通",
- "foot": "步行",
- "motor_vehicle": "汽车",
- "bicycle": "自行车",
- "horse": "马匹"
- },
"options": {
- "yes": {
- "title": "允许的",
- "description": "按法律及路权,有权使用"
+ "designated": {
+ "description": "只限标志指定或特定本地法律容许人士进入",
+ "title": "特定的"
+ },
+ "destination": {
+ "description": "只限前往目的地人士进入",
+ "title": "目的地"
},
"no": {
- "title": "禁止的",
- "description": "禁止一般公众进入"
+ "description": "禁止一般公众进入",
+ "title": "禁止的"
},
"permissive": {
- "title": "获许可进入",
- "description": "容许进入,直至拥有者撇回许可"
+ "description": "容许进入,直至拥有者撇回许可",
+ "title": "获许可进入"
},
"private": {
- "title": "私人",
- "description": "须拥有者个别批准,方可进入"
- },
- "designated": {
- "title": "特定的",
- "description": "只限标志指定或特定本地法律容许人士进入"
+ "description": "须拥有者个别批准,方可进入",
+ "title": "私人"
},
- "destination": {
- "title": "目的地",
- "description": "只限前往目的地人士进入"
+ "yes": {
+ "description": "按法律及路权,有权使用",
+ "title": "允许的"
}
+ },
+ "placeholder": "未知种类",
+ "types": {
+ "access": "普通",
+ "bicycle": "自行车",
+ "foot": "步行",
+ "horse": "马匹",
+ "motor_vehicle": "汽车"
}
},
"address": {
"label": "地址",
"placeholders": {
- "street": "街道",
- "city": "城市"
+ "city": "城市",
+ "street": "街道"
}
},
"admin_level": {
"clock_direction": {
"label": "方向",
"options": {
- "clockwise": "顺时针",
- "anticlockwise": "逆时针"
+ "anticlockwise": "逆时针",
+ "clockwise": "顺时针"
}
},
"collection_times": {
"internet_access": {
"label": "互联网接入",
"options": {
- "wlan": "无线网络",
+ "terminal": "终端",
"wired": "有线网络",
- "terminal": "终端"
+ "wlan": "无线网络"
}
},
"landuse": {
},
"structure": {
"label": "结构",
- "placeholder": "未知种类",
"options": {
"bridge": "桥",
- "tunnel": "隧道",
+ "cutting": "开凿",
"embankment": "堤岸",
- "cutting": "开凿"
- }
+ "tunnel": "隧道"
+ },
+ "placeholder": "未知种类"
},
"supervised": {
"label": "监督"
"terms_text": "© osm-tools.org & OpenStreetMap contributors, CC-BY-SA"
},
{
- "name": "Freemap.sk Car",
+ "name": "Czech CUZK:KM tiles proxy",
"type": "tms",
- "template": "http://t{switch:1,2,3,4}.freemap.sk/A/{zoom}/{x}/{y}.jpeg",
+ "template": "http://osm-{switch:a,b,c}.zby.cz/tiles_cuzk.php/{zoom}/{x}/{y}.png",
"scaleExtent": [
- 8,
- 16
+ 13,
+ 18
],
"polygon": [
[
[
- 19.83682,
- 49.25529
+ 15.0063684,
+ 49.0177392
],
[
- 19.80075,
- 49.42385
+ 15.1559854,
+ 49.0013828
],
[
- 19.60437,
- 49.48058
+ 15.190896,
+ 48.9424551
],
[
- 19.49179,
- 49.63961
+ 15.3105895,
+ 48.9882938
],
[
- 19.21831,
- 49.52604
+ 15.4053469,
+ 48.9752013
],
[
- 19.16778,
- 49.42521
+ 15.5400022,
+ 48.9162426
],
[
- 19.00308,
- 49.42236
+ 15.7145553,
+ 48.8670572
],
[
- 18.97611,
- 49.5308
+ 15.8342488,
+ 48.880178
],
[
- 18.54685,
- 49.51425
+ 15.968904,
+ 48.8178233
],
[
- 18.31432,
- 49.33818
+ 16.0885976,
+ 48.7455261
],
[
- 18.15913,
- 49.2961
+ 16.3978059,
+ 48.7455261
],
[
- 18.05564,
- 49.11134
+ 16.4875761,
+ 48.8145394
],
[
- 17.56396,
- 48.84938
+ 16.6721036,
+ 48.7784014
],
[
- 17.17929,
- 48.88816
+ 16.6820781,
+ 48.7356594
],
[
- 17.058,
- 48.81105
+ 16.9015163,
+ 48.7126294
],
[
- 16.90426,
- 48.61947
+ 16.9464014,
+ 48.6237005
],
[
- 16.79685,
- 48.38561
+ 17.1159672,
+ 48.8375227
],
[
- 17.06762,
- 48.01116
+ 17.2107246,
+ 48.880178
],
[
- 17.32787,
- 47.97749
+ 17.4052266,
+ 48.8178233
],
[
- 17.51699,
- 47.82535
+ 17.4800351,
+ 48.8539329
],
[
- 17.74776,
- 47.73093
+ 17.5299074,
+ 48.8178233
],
[
- 18.29515,
- 47.72075
+ 17.7044605,
+ 48.8670572
],
[
- 18.67959,
- 47.75541
+ 17.8141796,
+ 48.9359033
],
[
- 18.89755,
- 47.81203
+ 17.8840008,
+ 48.9359033
],
[
- 18.79463,
- 47.88245
+ 17.9438476,
+ 49.0210099
],
[
- 18.84318,
- 48.04046
+ 18.0635412,
+ 49.0340903
],
[
- 19.46212,
- 48.05333
+ 18.1184007,
+ 49.0994409
],
[
- 19.62064,
- 48.22938
+ 18.1981964,
+ 49.3047337
],
[
- 19.89585,
- 48.09387
+ 18.3877112,
+ 49.3339917
],
[
- 20.33766,
- 48.2643
+ 18.577226,
+ 49.5091747
],
[
- 20.55395,
- 48.52358
+ 18.7567663,
+ 49.4994587
],
[
- 20.82335,
- 48.55714
+ 18.8465365,
+ 49.5253637
],
[
- 21.10271,
- 48.47096
+ 18.8764598,
+ 49.5706645
],
[
- 21.45863,
- 48.55513
+ 18.7966641,
+ 49.693412
],
[
- 21.74536,
- 48.31435
+ 18.64206,
+ 49.7095399
],
[
- 22.15293,
- 48.37179
+ 18.5872004,
+ 49.8351543
],
[
- 22.61255,
- 49.08914
+ 18.6121366,
+ 49.8833809
],
[
- 22.09997,
- 49.23814
+ 18.5622643,
+ 49.9347695
],
[
- 21.9686,
- 49.36363
+ 18.512392,
+ 49.9058702
],
[
- 21.6244,
- 49.46989
+ 18.362775,
+ 49.9540261
],
[
- 21.06873,
- 49.46402
+ 18.3278644,
+ 49.9219275
],
[
- 20.94336,
- 49.31088
+ 18.2630304,
+ 49.9732751
],
[
- 20.73052,
- 49.44006
+ 18.1184007,
+ 50.0053395
],
[
- 20.22804,
- 49.41714
+ 18.0635412,
+ 50.075806
],
[
- 20.05234,
- 49.23052
+ 17.9139242,
+ 49.9796897
],
[
- 19.83682,
- 49.25529
- ]
- ]
- ],
- "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
- },
- {
- "name": "Freemap.sk Cyclo",
- "type": "tms",
- "template": "http://t{switch:1,2,3,4}.freemap.sk/C/{zoom}/{x}/{y}.jpeg",
- "scaleExtent": [
- 8,
- 16
- ],
- "polygon": [
- [
+ 17.779269,
+ 50.0309757
+ ],
[
- 19.83682,
- 49.25529
+ 17.714435,
+ 50.1237921
],
[
- 19.80075,
- 49.42385
+ 17.6047159,
+ 50.1653411
],
[
- 19.60437,
- 49.48058
+ 17.7593201,
+ 50.21962
],
[
- 19.49179,
- 49.63961
+ 17.7343839,
+ 50.3439092
],
[
- 19.21831,
- 49.52604
+ 17.6396265,
+ 50.2802117
],
[
- 19.16778,
- 49.42521
+ 17.3802905,
+ 50.2802117
],
[
- 19.00308,
- 49.42236
+ 17.3503671,
+ 50.3439092
],
[
- 18.97611,
- 49.5308
+ 17.2805459,
+ 50.3375433
],
[
- 18.54685,
- 49.51425
+ 17.1857885,
+ 50.4075214
],
[
- 18.31432,
- 49.33818
+ 16.9015163,
+ 50.4615247
],
[
- 18.15913,
- 49.2961
+ 16.8666057,
+ 50.4138779
],
[
- 18.05564,
- 49.11134
+ 16.9663503,
+ 50.3184404
],
[
- 17.56396,
- 48.84938
+ 17.0361715,
+ 50.2323826
],
[
- 17.17929,
- 48.88816
+ 16.8366823,
+ 50.21962
],
[
- 17.058,
- 48.81105
+ 16.7120015,
+ 50.1046034
],
[
- 16.90426,
- 48.61947
+ 16.5823335,
+ 50.1589513
],
[
- 16.79685,
- 48.38561
+ 16.5623846,
+ 50.2387626
],
[
- 17.06762,
- 48.01116
+ 16.4327166,
+ 50.3375433
],
[
- 17.32787,
- 47.97749
+ 16.3529209,
+ 50.3916263
],
[
- 17.51699,
- 47.82535
+ 16.2781124,
+ 50.3916263
],
[
- 17.74776,
- 47.73093
+ 16.2082911,
+ 50.4456477
],
[
- 18.29515,
- 47.72075
+ 16.3978059,
+ 50.5344899
],
[
- 18.67959,
- 47.75541
+ 16.4476782,
+ 50.5978464
],
[
- 18.89755,
- 47.81203
+ 16.3529209,
+ 50.670601
],
[
- 18.79463,
- 47.88245
+ 16.2382145,
+ 50.6769221
],
[
- 18.84318,
- 48.04046
+ 16.2182656,
+ 50.6326561
],
[
- 19.46212,
- 48.05333
+ 16.1284954,
+ 50.6832425
],
[
- 19.62064,
- 48.22938
+ 16.0486997,
+ 50.6073425
],
[
- 19.89585,
- 48.09387
+ 15.988853,
+ 50.7021983
],
[
- 20.33766,
- 48.2643
+ 15.8741467,
+ 50.6832425
],
[
- 20.55395,
- 48.52358
+ 15.8292616,
+ 50.7653291
],
[
- 20.82335,
- 48.55714
+ 15.729517,
+ 50.743243
],
[
- 21.10271,
- 48.47096
+ 15.450232,
+ 50.8157725
],
[
- 21.45863,
- 48.55513
+ 15.3903852,
+ 50.7747914
],
[
- 21.74536,
- 48.31435
+ 15.3804108,
+ 50.8598659
],
[
- 22.15293,
- 48.37179
+ 15.2956278,
+ 50.8850434
],
[
- 22.61255,
- 49.08914
+ 15.2956278,
+ 50.9887568
],
[
- 22.09997,
- 49.23814
+ 15.1709471,
+ 51.0201394
],
[
- 21.9686,
- 49.36363
+ 14.9914067,
+ 51.0013124
],
[
- 21.6244,
- 49.46989
+ 15.0063684,
+ 50.8881896
],
[
- 21.06873,
- 49.46402
+ 14.8417898,
+ 50.8756034
],
[
- 20.94336,
- 49.31088
+ 14.7969047,
+ 50.8252246
],
[
- 20.73052,
- 49.44006
+ 14.6323261,
+ 50.8567177
],
[
- 20.22804,
- 49.41714
+ 14.6622495,
+ 50.9353576
],
[
- 20.05234,
- 49.23052
+ 14.5724793,
+ 50.9227841
],
[
- 19.83682,
- 49.25529
- ]
- ]
- ],
- "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
- },
- {
- "name": "Freemap.sk Hiking",
- "type": "tms",
- "template": "http://t{switch:1,2,3,4}.freemap.sk/T/{zoom}/{x}/{y}.jpeg",
- "scaleExtent": [
- 8,
- 16
- ],
- "polygon": [
- [
+ 14.6123772,
+ 50.9856174
+ ],
[
- 19.83682,
- 49.25529
+ 14.4976708,
+ 51.0483657
],
[
- 19.80075,
- 49.42385
+ 14.4178751,
+ 51.0232765
],
[
- 19.60437,
- 49.48058
+ 14.3081561,
+ 51.0671736
],
[
- 19.49179,
- 49.63961
+ 14.2532965,
+ 51.0044508
],
[
- 19.21831,
- 49.52604
+ 14.4029134,
+ 50.9322145
],
[
- 19.16778,
- 49.42521
+ 14.3729901,
+ 50.897627
],
[
- 19.00308,
- 49.42236
+ 14.2433221,
+ 50.9070625
],
[
- 18.97611,
- 49.5308
+ 14.2084114,
+ 50.844123
],
[
- 18.54685,
- 49.51425
+ 14.0338583,
+ 50.8126214
],
[
- 18.31432,
- 49.33818
+ 13.9789988,
+ 50.8252246
],
[
- 18.15913,
- 49.2961
+ 13.9041903,
+ 50.7968626
],
[
- 18.05564,
- 49.11134
+ 13.8742669,
+ 50.740087
],
[
- 17.56396,
- 48.84938
+ 13.5351352,
+ 50.7243038
],
[
- 17.17929,
- 48.88816
+ 13.530148,
+ 50.6579561
],
[
- 17.058,
- 48.81105
+ 13.4703012,
+ 50.6136722
],
[
- 16.90426,
- 48.61947
+ 13.3905055,
+ 50.664279
],
[
- 16.79685,
- 48.38561
+ 13.3256715,
+ 50.5883483
],
[
- 17.06762,
- 48.01116
+ 13.250863,
+ 50.6105074
],
[
- 17.32787,
- 47.97749
+ 13.1960035,
+ 50.5059517
],
[
- 17.51699,
- 47.82535
+ 13.0513738,
+ 50.5218084
],
[
- 17.74776,
- 47.73093
+ 12.9665909,
+ 50.4106997
],
[
- 18.29515,
- 47.72075
+ 12.8269484,
+ 50.4710483
],
[
- 18.67959,
- 47.75541
+ 12.7022676,
+ 50.4138779
],
[
- 18.89755,
- 47.81203
+ 12.5077656,
+ 50.401164
],
[
- 18.79463,
- 47.88245
+ 12.343187,
+ 50.2547088
],
[
- 18.84318,
- 48.04046
+ 12.323238,
+ 50.1845054
],
[
- 19.46212,
- 48.05333
+ 12.2484296,
+ 50.2738373
],
[
- 19.62064,
- 48.22938
+ 12.1736211,
+ 50.3311765
],
[
- 19.89585,
- 48.09387
+ 12.0988126,
+ 50.33436
],
[
- 20.33766,
- 48.2643
+ 12.1187616,
+ 50.25152
],
[
- 20.55395,
- 48.52358
+ 12.2234934,
+ 50.1653411
],
[
- 20.82335,
- 48.55714
+ 12.2035445,
+ 50.1237921
],
[
- 21.10271,
- 48.47096
+ 12.5027784,
+ 49.9732751
],
[
- 21.45863,
- 48.55513
+ 12.4778422,
+ 49.9379795
],
[
- 21.74536,
- 48.31435
+ 12.5476634,
+ 49.9155052
],
[
- 22.15293,
- 48.37179
+ 12.4678677,
+ 49.8029766
],
[
- 22.61255,
- 49.08914
+ 12.408021,
+ 49.7611134
],
[
- 22.09997,
- 49.23814
+ 12.4828294,
+ 49.6869593
],
[
- 21.9686,
- 49.36363
+ 12.5327017,
+ 49.6869593
],
[
- 21.6244,
- 49.46989
+ 12.5177401,
+ 49.6288466
],
[
- 21.06873,
- 49.46402
+ 12.6075102,
+ 49.5415474
],
[
- 20.94336,
- 49.31088
+ 12.6723442,
+ 49.4378793
],
[
- 20.73052,
- 49.44006
+ 12.8119867,
+ 49.3469896
],
[
- 20.22804,
- 49.41714
+ 12.9466419,
+ 49.3437405
],
[
- 20.05234,
- 49.23052
+ 13.2309141,
+ 49.1288206
],
[
- 19.83682,
- 49.25529
- ]
- ]
- ],
- "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
- },
- {
- "name": "Freemap.sk Ski",
- "type": "tms",
- "template": "http://t{switch:1,2,3,4}.freemap.sk/K/{zoom}/{x}/{y}.jpeg",
- "scaleExtent": [
- 8,
- 16
- ],
- "polygon": [
- [
+ 13.3256715,
+ 49.1059712
+ ],
[
- 19.83682,
- 49.25529
+ 13.4353906,
+ 49.0438984
],
[
- 19.80075,
- 49.42385
+ 13.4154417,
+ 48.9948387
],
[
- 19.60437,
- 49.48058
+ 13.5002246,
+ 48.949006
],
[
- 19.49179,
- 49.63961
+ 13.5650586,
+ 48.9882938
],
[
- 19.21831,
- 49.52604
+ 13.6847522,
+ 48.8834577
],
[
- 19.16778,
- 49.42521
+ 13.7445989,
+ 48.9031312
],
[
- 19.00308,
- 49.42236
+ 13.8243946,
+ 48.7751149
],
[
- 18.97611,
- 49.5308
+ 13.8992031,
+ 48.7751149
],
[
- 18.54685,
- 49.51425
+ 14.0587945,
+ 48.676418
],
[
- 18.31432,
- 49.33818
+ 14.0438328,
+ 48.6302932
],
[
- 18.15913,
- 49.2961
+ 14.1435774,
+ 48.5907241
],
[
- 18.05564,
- 49.11134
+ 14.3729901,
+ 48.5610269
],
[
- 17.56396,
- 48.84938
+ 14.4827091,
+ 48.6500662
],
[
- 17.17929,
- 48.88816
+ 14.5774665,
+ 48.607215
],
[
- 17.058,
- 48.81105
+ 14.6273389,
+ 48.6335892
],
[
- 16.90426,
- 48.61947
+ 14.7071346,
+ 48.5808269
],
[
- 16.79685,
- 48.38561
+ 14.7470324,
+ 48.7027561
],
[
- 17.06762,
- 48.01116
+ 14.8118664,
+ 48.7389485
],
[
- 17.32787,
- 47.97749
+ 14.8168536,
+ 48.794831
],
[
- 17.51699,
- 47.82535
+ 14.9864195,
+ 48.7652539
+ ]
+ ]
+ ],
+ "overlay": true
+ },
+ {
+ "name": "Czech ÚHUL:ORTOFOTO tiles proxy",
+ "type": "tms",
+ "template": "http://osm-{switch:a,b,c}.zby.cz/tiles_uhul.php/{zoom}/{x}/{y}.jpg",
+ "scaleExtent": [
+ 13,
+ 18
+ ],
+ "polygon": [
+ [
+ [
+ 15.0063684,
+ 49.0177392
],
[
- 17.74776,
- 47.73093
+ 15.1559854,
+ 49.0013828
],
[
- 18.29515,
- 47.72075
+ 15.190896,
+ 48.9424551
],
[
- 18.67959,
- 47.75541
+ 15.3105895,
+ 48.9882938
],
[
- 18.89755,
- 47.81203
+ 15.4053469,
+ 48.9752013
],
[
- 18.79463,
- 47.88245
+ 15.5400022,
+ 48.9162426
],
[
- 18.84318,
- 48.04046
+ 15.7145553,
+ 48.8670572
],
[
- 19.46212,
- 48.05333
+ 15.8342488,
+ 48.880178
],
[
- 19.62064,
- 48.22938
+ 15.968904,
+ 48.8178233
],
[
- 19.89585,
- 48.09387
+ 16.0885976,
+ 48.7455261
],
[
- 20.33766,
- 48.2643
+ 16.3978059,
+ 48.7455261
],
[
- 20.55395,
- 48.52358
+ 16.4875761,
+ 48.8145394
],
[
- 20.82335,
- 48.55714
+ 16.6721036,
+ 48.7784014
],
[
- 21.10271,
- 48.47096
+ 16.6820781,
+ 48.7356594
],
[
- 21.45863,
- 48.55513
+ 16.9015163,
+ 48.7126294
],
[
- 21.74536,
- 48.31435
+ 16.9464014,
+ 48.6237005
],
[
- 22.15293,
- 48.37179
+ 17.1159672,
+ 48.8375227
],
[
- 22.61255,
- 49.08914
+ 17.2107246,
+ 48.880178
],
[
- 22.09997,
- 49.23814
+ 17.4052266,
+ 48.8178233
],
[
- 21.9686,
- 49.36363
+ 17.4800351,
+ 48.8539329
],
[
- 21.6244,
- 49.46989
+ 17.5299074,
+ 48.8178233
],
[
- 21.06873,
- 49.46402
+ 17.7044605,
+ 48.8670572
],
[
- 20.94336,
- 49.31088
+ 17.8141796,
+ 48.9359033
],
[
- 20.73052,
- 49.44006
+ 17.8840008,
+ 48.9359033
],
[
- 20.22804,
- 49.41714
+ 17.9438476,
+ 49.0210099
],
[
- 20.05234,
- 49.23052
+ 18.0635412,
+ 49.0340903
],
[
- 19.83682,
- 49.25529
- ]
- ]
- ],
- "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
- },
- {
- "name": "Fugro (Denmark)",
- "type": "tms",
- "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/fugro2005/{zoom}/{x}/{y}.png",
- "scaleExtent": [
- 0,
- 19
- ],
- "polygon": [
- [
+ 18.1184007,
+ 49.0994409
+ ],
[
- 8.3743941,
- 54.9551655
+ 18.1981964,
+ 49.3047337
],
[
- 8.3683809,
- 55.4042149
+ 18.3877112,
+ 49.3339917
],
[
- 8.2103997,
- 55.4039795
+ 18.577226,
+ 49.5091747
],
[
- 8.2087314,
- 55.4937345
+ 18.7567663,
+ 49.4994587
],
[
- 8.0502655,
- 55.4924731
+ 18.8465365,
+ 49.5253637
],
[
- 8.0185123,
- 56.7501399
+ 18.8764598,
+ 49.5706645
],
[
- 8.1819161,
- 56.7509948
+ 18.7966641,
+ 49.693412
],
[
- 8.1763274,
- 57.0208898
+ 18.64206,
+ 49.7095399
],
[
- 8.3413329,
- 57.0219872
+ 18.5872004,
+ 49.8351543
],
[
- 8.3392467,
- 57.1119574
+ 18.6121366,
+ 49.8833809
],
[
- 8.5054433,
- 57.1123212
+ 18.5622643,
+ 49.9347695
],
[
- 8.5033923,
- 57.2020499
+ 18.512392,
+ 49.9058702
],
[
- 9.3316304,
- 57.2027636
+ 18.362775,
+ 49.9540261
],
[
- 9.3319079,
- 57.2924835
+ 18.3278644,
+ 49.9219275
],
[
- 9.4978864,
- 57.2919578
+ 18.2630304,
+ 49.9732751
],
[
- 9.4988593,
- 57.3820608
+ 18.1184007,
+ 50.0053395
],
[
- 9.6649749,
- 57.3811615
+ 18.0635412,
+ 50.075806
],
[
- 9.6687295,
- 57.5605591
+ 17.9139242,
+ 49.9796897
],
[
- 9.8351961,
- 57.5596265
+ 17.779269,
+ 50.0309757
],
[
- 9.8374896,
- 57.6493322
+ 17.714435,
+ 50.1237921
],
[
- 10.1725726,
- 57.6462818
+ 17.6047159,
+ 50.1653411
],
[
- 10.1754245,
- 57.7367768
+ 17.7593201,
+ 50.21962
],
[
- 10.5118282,
- 57.7330269
+ 17.7343839,
+ 50.3439092
],
[
- 10.5152095,
- 57.8228945
+ 17.6396265,
+ 50.2802117
],
[
- 10.6834853,
- 57.8207722
+ 17.3802905,
+ 50.2802117
],
[
- 10.6751613,
- 57.6412021
+ 17.3503671,
+ 50.3439092
],
[
- 10.5077045,
- 57.6433097
+ 17.2805459,
+ 50.3375433
],
[
- 10.5039992,
- 57.5535088
+ 17.1857885,
+ 50.4075214
],
[
- 10.671038,
- 57.5514113
+ 16.9015163,
+ 50.4615247
],
[
- 10.6507805,
- 57.1024538
+ 16.8666057,
+ 50.4138779
],
[
- 10.4857673,
- 57.1045138
- ],
- [
- 10.4786236,
- 56.9249051
+ 16.9663503,
+ 50.3184404
],
[
- 10.3143981,
- 56.9267573
+ 17.0361715,
+ 50.2323826
],
[
- 10.3112341,
- 56.8369269
+ 16.8366823,
+ 50.21962
],
[
- 10.4750295,
- 56.83509
+ 16.7120015,
+ 50.1046034
],
[
- 10.4649016,
- 56.5656681
+ 16.5823335,
+ 50.1589513
],
[
- 10.9524239,
- 56.5589761
+ 16.5623846,
+ 50.2387626
],
[
- 10.9479249,
- 56.4692243
+ 16.4327166,
+ 50.3375433
],
[
- 11.1099335,
- 56.4664675
+ 16.3529209,
+ 50.3916263
],
[
- 11.1052639,
- 56.376833
+ 16.2781124,
+ 50.3916263
],
[
- 10.9429901,
- 56.3795284
+ 16.2082911,
+ 50.4456477
],
[
- 10.9341235,
- 56.1994768
+ 16.3978059,
+ 50.5344899
],
[
- 10.7719685,
- 56.2020244
+ 16.4476782,
+ 50.5978464
],
[
- 10.7694751,
- 56.1120103
+ 16.3529209,
+ 50.670601
],
[
- 10.6079695,
- 56.1150259
+ 16.2382145,
+ 50.6769221
],
[
- 10.4466742,
- 56.116717
+ 16.2182656,
+ 50.6326561
],
[
- 10.2865948,
- 56.118675
+ 16.1284954,
+ 50.6832425
],
[
- 10.2831527,
- 56.0281851
+ 16.0486997,
+ 50.6073425
],
[
- 10.4439274,
- 56.0270388
+ 15.988853,
+ 50.7021983
],
[
- 10.4417713,
- 55.7579243
+ 15.8741467,
+ 50.6832425
],
[
- 10.4334961,
- 55.6693533
+ 15.8292616,
+ 50.7653291
],
[
- 10.743814,
- 55.6646861
+ 15.729517,
+ 50.743243
],
[
- 10.743814,
- 55.5712253
+ 15.450232,
+ 50.8157725
],
[
- 10.8969041,
- 55.5712253
+ 15.3903852,
+ 50.7747914
],
[
- 10.9051793,
- 55.3953852
+ 15.3804108,
+ 50.8598659
],
[
- 11.0613726,
- 55.3812841
+ 15.2956278,
+ 50.8850434
],
[
- 11.0593038,
- 55.1124061
+ 15.2956278,
+ 50.9887568
],
[
- 11.0458567,
- 55.0318621
+ 15.1709471,
+ 51.0201394
],
[
- 11.2030844,
- 55.0247474
+ 14.9914067,
+ 51.0013124
],
[
- 11.2030844,
- 55.117139
+ 15.0063684,
+ 50.8881896
],
[
- 11.0593038,
- 55.1124061
+ 14.8417898,
+ 50.8756034
],
[
- 11.0613726,
- 55.3812841
+ 14.7969047,
+ 50.8252246
],
[
- 11.0789572,
- 55.5712253
+ 14.6323261,
+ 50.8567177
],
[
- 10.8969041,
- 55.5712253
+ 14.6622495,
+ 50.9353576
],
[
- 10.9258671,
- 55.6670198
+ 14.5724793,
+ 50.9227841
],
[
- 10.743814,
- 55.6646861
+ 14.6123772,
+ 50.9856174
],
[
- 10.7562267,
- 55.7579243
+ 14.4976708,
+ 51.0483657
],
[
- 10.4417713,
- 55.7579243
+ 14.4178751,
+ 51.0232765
],
[
- 10.4439274,
- 56.0270388
+ 14.3081561,
+ 51.0671736
],
[
- 10.4466742,
- 56.116717
+ 14.2532965,
+ 51.0044508
],
[
- 10.6079695,
- 56.1150259
+ 14.4029134,
+ 50.9322145
],
[
- 10.6052053,
- 56.0247462
+ 14.3729901,
+ 50.897627
],
[
- 10.9258671,
- 56.0201215
+ 14.2433221,
+ 50.9070625
],
[
- 10.9197132,
- 55.9309388
+ 14.2084114,
+ 50.844123
],
[
- 11.0802782,
- 55.92792
+ 14.0338583,
+ 50.8126214
],
[
- 11.0858066,
- 56.0178284
+ 13.9789988,
+ 50.8252246
],
[
- 11.7265047,
- 56.005058
+ 13.9041903,
+ 50.7968626
],
[
- 11.7319981,
- 56.0952142
+ 13.8742669,
+ 50.740087
],
[
- 12.0540333,
- 56.0871256
+ 13.5351352,
+ 50.7243038
],
[
- 12.0608477,
- 56.1762576
+ 13.530148,
+ 50.6579561
],
[
- 12.7023469,
- 56.1594405
+ 13.4703012,
+ 50.6136722
],
[
- 12.6611131,
- 55.7114318
+ 13.3905055,
+ 50.664279
],
[
- 12.9792318,
- 55.7014026
+ 13.3256715,
+ 50.5883483
],
[
- 12.9612912,
- 55.5217294
+ 13.250863,
+ 50.6105074
],
[
- 12.3268659,
- 55.5412096
+ 13.1960035,
+ 50.5059517
],
[
- 12.3206071,
- 55.4513655
+ 13.0513738,
+ 50.5218084
],
[
- 12.4778226,
- 55.447067
+ 12.9665909,
+ 50.4106997
],
[
- 12.4702432,
- 55.3570479
+ 12.8269484,
+ 50.4710483
],
[
- 12.6269738,
- 55.3523837
+ 12.7022676,
+ 50.4138779
],
[
- 12.6200898,
- 55.2632576
+ 12.5077656,
+ 50.401164
],
[
- 12.4627339,
- 55.26722
+ 12.343187,
+ 50.2547088
],
[
- 12.4552949,
- 55.1778223
+ 12.323238,
+ 50.1845054
],
[
- 12.2987046,
- 55.1822303
+ 12.2484296,
+ 50.2738373
],
[
- 12.2897344,
- 55.0923641
+ 12.1736211,
+ 50.3311765
],
[
- 12.6048608,
- 55.0832904
+ 12.0988126,
+ 50.33436
],
[
- 12.5872011,
- 54.9036285
+ 12.1187616,
+ 50.25152
],
[
- 12.2766618,
- 54.9119031
+ 12.2234934,
+ 50.1653411
],
[
- 12.2610181,
- 54.7331602
+ 12.2035445,
+ 50.1237921
],
[
- 12.1070691,
- 54.7378161
+ 12.5027784,
+ 49.9732751
],
[
- 12.0858621,
- 54.4681655
+ 12.4778422,
+ 49.9379795
],
[
- 11.7794953,
- 54.4753579
+ 12.5476634,
+ 49.9155052
],
[
- 11.7837381,
- 54.5654783
+ 12.4678677,
+ 49.8029766
],
[
- 11.1658525,
- 54.5782155
+ 12.408021,
+ 49.7611134
],
[
- 11.1706443,
- 54.6686508
+ 12.4828294,
+ 49.6869593
],
[
- 10.8617173,
- 54.6733956
+ 12.5327017,
+ 49.6869593
],
[
- 10.8651245,
- 54.7634667
+ 12.5177401,
+ 49.6288466
],
[
- 10.7713646,
- 54.7643888
+ 12.6075102,
+ 49.5415474
],
[
- 10.7707276,
- 54.7372807
+ 12.6723442,
+ 49.4378793
],
[
- 10.7551428,
- 54.7375776
+ 12.8119867,
+ 49.3469896
],
[
- 10.7544039,
- 54.7195666
+ 12.9466419,
+ 49.3437405
],
[
- 10.7389074,
- 54.7197588
+ 13.2309141,
+ 49.1288206
],
[
- 10.7384368,
- 54.7108482
+ 13.3256715,
+ 49.1059712
],
[
- 10.7074486,
- 54.7113045
+ 13.4353906,
+ 49.0438984
],
[
- 10.7041094,
- 54.6756741
+ 13.4154417,
+ 48.9948387
],
[
- 10.5510973,
- 54.6781698
+ 13.5002246,
+ 48.949006
],
[
- 10.5547184,
- 54.7670245
+ 13.5650586,
+ 48.9882938
],
[
- 10.2423994,
- 54.7705935
+ 13.6847522,
+ 48.8834577
],
[
- 10.2459845,
- 54.8604673
+ 13.7445989,
+ 48.9031312
],
[
- 10.0902268,
- 54.8622134
+ 13.8243946,
+ 48.7751149
],
[
- 10.0873731,
- 54.7723851
+ 13.8992031,
+ 48.7751149
],
[
- 9.1555798,
- 54.7769557
+ 14.0587945,
+ 48.676418
],
[
- 9.1562752,
- 54.8675369
+ 14.0438328,
+ 48.6302932
],
[
- 8.5321973,
- 54.8663765
+ 14.1435774,
+ 48.5907241
],
[
- 8.531432,
- 54.95516
- ]
- ],
- [
- [
- 11.4577738,
- 56.819554
+ 14.3729901,
+ 48.5610269
],
[
- 11.7849181,
- 56.8127385
+ 14.4827091,
+ 48.6500662
],
[
- 11.7716715,
- 56.6332796
+ 14.5774665,
+ 48.607215
],
[
- 11.4459621,
- 56.6401087
- ]
- ],
- [
- [
- 11.3274736,
- 57.3612962
+ 14.6273389,
+ 48.6335892
],
[
- 11.3161808,
- 57.1818004
+ 14.7071346,
+ 48.5808269
],
[
- 11.1508692,
- 57.1847276
+ 14.7470324,
+ 48.7027561
],
[
- 11.1456628,
- 57.094962
+ 14.8118664,
+ 48.7389485
],
[
- 10.8157703,
- 57.1001693
+ 14.8168536,
+ 48.794831
],
[
- 10.8290599,
- 57.3695272
+ 14.9864195,
+ 48.7652539
]
- ],
+ ]
+ ],
+ "terms_text": "Ortofoto public domain ÚHUL, year 2000"
+ },
+ {
+ "name": "Freemap.sk Car",
+ "type": "tms",
+ "template": "http://t{switch:1,2,3,4}.freemap.sk/A/{zoom}/{x}/{y}.jpeg",
+ "scaleExtent": [
+ 8,
+ 16
+ ],
+ "polygon": [
[
[
- 11.5843266,
- 56.2777928
+ 19.83682,
+ 49.25529
],
[
- 11.5782882,
- 56.1880397
+ 19.80075,
+ 49.42385
],
[
- 11.7392309,
- 56.1845765
+ 19.60437,
+ 49.48058
],
[
- 11.7456428,
- 56.2743186
- ]
- ],
- [
+ 19.49179,
+ 49.63961
+ ],
[
- 14.6825922,
- 55.3639405
+ 19.21831,
+ 49.52604
],
[
- 14.8395247,
+ 19.16778,
+ 49.42521
+ ],
+ [
+ 19.00308,
+ 49.42236
+ ],
+ [
+ 18.97611,
+ 49.5308
+ ],
+ [
+ 18.54685,
+ 49.51425
+ ],
+ [
+ 18.31432,
+ 49.33818
+ ],
+ [
+ 18.15913,
+ 49.2961
+ ],
+ [
+ 18.05564,
+ 49.11134
+ ],
+ [
+ 17.56396,
+ 48.84938
+ ],
+ [
+ 17.17929,
+ 48.88816
+ ],
+ [
+ 17.058,
+ 48.81105
+ ],
+ [
+ 16.90426,
+ 48.61947
+ ],
+ [
+ 16.79685,
+ 48.38561
+ ],
+ [
+ 17.06762,
+ 48.01116
+ ],
+ [
+ 17.32787,
+ 47.97749
+ ],
+ [
+ 17.51699,
+ 47.82535
+ ],
+ [
+ 17.74776,
+ 47.73093
+ ],
+ [
+ 18.29515,
+ 47.72075
+ ],
+ [
+ 18.67959,
+ 47.75541
+ ],
+ [
+ 18.89755,
+ 47.81203
+ ],
+ [
+ 18.79463,
+ 47.88245
+ ],
+ [
+ 18.84318,
+ 48.04046
+ ],
+ [
+ 19.46212,
+ 48.05333
+ ],
+ [
+ 19.62064,
+ 48.22938
+ ],
+ [
+ 19.89585,
+ 48.09387
+ ],
+ [
+ 20.33766,
+ 48.2643
+ ],
+ [
+ 20.55395,
+ 48.52358
+ ],
+ [
+ 20.82335,
+ 48.55714
+ ],
+ [
+ 21.10271,
+ 48.47096
+ ],
+ [
+ 21.45863,
+ 48.55513
+ ],
+ [
+ 21.74536,
+ 48.31435
+ ],
+ [
+ 22.15293,
+ 48.37179
+ ],
+ [
+ 22.61255,
+ 49.08914
+ ],
+ [
+ 22.09997,
+ 49.23814
+ ],
+ [
+ 21.9686,
+ 49.36363
+ ],
+ [
+ 21.6244,
+ 49.46989
+ ],
+ [
+ 21.06873,
+ 49.46402
+ ],
+ [
+ 20.94336,
+ 49.31088
+ ],
+ [
+ 20.73052,
+ 49.44006
+ ],
+ [
+ 20.22804,
+ 49.41714
+ ],
+ [
+ 20.05234,
+ 49.23052
+ ],
+ [
+ 19.83682,
+ 49.25529
+ ]
+ ]
+ ],
+ "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
+ },
+ {
+ "name": "Freemap.sk Cyclo",
+ "type": "tms",
+ "template": "http://t{switch:1,2,3,4}.freemap.sk/C/{zoom}/{x}/{y}.jpeg",
+ "scaleExtent": [
+ 8,
+ 16
+ ],
+ "polygon": [
+ [
+ [
+ 19.83682,
+ 49.25529
+ ],
+ [
+ 19.80075,
+ 49.42385
+ ],
+ [
+ 19.60437,
+ 49.48058
+ ],
+ [
+ 19.49179,
+ 49.63961
+ ],
+ [
+ 19.21831,
+ 49.52604
+ ],
+ [
+ 19.16778,
+ 49.42521
+ ],
+ [
+ 19.00308,
+ 49.42236
+ ],
+ [
+ 18.97611,
+ 49.5308
+ ],
+ [
+ 18.54685,
+ 49.51425
+ ],
+ [
+ 18.31432,
+ 49.33818
+ ],
+ [
+ 18.15913,
+ 49.2961
+ ],
+ [
+ 18.05564,
+ 49.11134
+ ],
+ [
+ 17.56396,
+ 48.84938
+ ],
+ [
+ 17.17929,
+ 48.88816
+ ],
+ [
+ 17.058,
+ 48.81105
+ ],
+ [
+ 16.90426,
+ 48.61947
+ ],
+ [
+ 16.79685,
+ 48.38561
+ ],
+ [
+ 17.06762,
+ 48.01116
+ ],
+ [
+ 17.32787,
+ 47.97749
+ ],
+ [
+ 17.51699,
+ 47.82535
+ ],
+ [
+ 17.74776,
+ 47.73093
+ ],
+ [
+ 18.29515,
+ 47.72075
+ ],
+ [
+ 18.67959,
+ 47.75541
+ ],
+ [
+ 18.89755,
+ 47.81203
+ ],
+ [
+ 18.79463,
+ 47.88245
+ ],
+ [
+ 18.84318,
+ 48.04046
+ ],
+ [
+ 19.46212,
+ 48.05333
+ ],
+ [
+ 19.62064,
+ 48.22938
+ ],
+ [
+ 19.89585,
+ 48.09387
+ ],
+ [
+ 20.33766,
+ 48.2643
+ ],
+ [
+ 20.55395,
+ 48.52358
+ ],
+ [
+ 20.82335,
+ 48.55714
+ ],
+ [
+ 21.10271,
+ 48.47096
+ ],
+ [
+ 21.45863,
+ 48.55513
+ ],
+ [
+ 21.74536,
+ 48.31435
+ ],
+ [
+ 22.15293,
+ 48.37179
+ ],
+ [
+ 22.61255,
+ 49.08914
+ ],
+ [
+ 22.09997,
+ 49.23814
+ ],
+ [
+ 21.9686,
+ 49.36363
+ ],
+ [
+ 21.6244,
+ 49.46989
+ ],
+ [
+ 21.06873,
+ 49.46402
+ ],
+ [
+ 20.94336,
+ 49.31088
+ ],
+ [
+ 20.73052,
+ 49.44006
+ ],
+ [
+ 20.22804,
+ 49.41714
+ ],
+ [
+ 20.05234,
+ 49.23052
+ ],
+ [
+ 19.83682,
+ 49.25529
+ ]
+ ]
+ ],
+ "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
+ },
+ {
+ "name": "Freemap.sk Hiking",
+ "type": "tms",
+ "template": "http://t{switch:1,2,3,4}.freemap.sk/T/{zoom}/{x}/{y}.jpeg",
+ "scaleExtent": [
+ 8,
+ 16
+ ],
+ "polygon": [
+ [
+ [
+ 19.83682,
+ 49.25529
+ ],
+ [
+ 19.80075,
+ 49.42385
+ ],
+ [
+ 19.60437,
+ 49.48058
+ ],
+ [
+ 19.49179,
+ 49.63961
+ ],
+ [
+ 19.21831,
+ 49.52604
+ ],
+ [
+ 19.16778,
+ 49.42521
+ ],
+ [
+ 19.00308,
+ 49.42236
+ ],
+ [
+ 18.97611,
+ 49.5308
+ ],
+ [
+ 18.54685,
+ 49.51425
+ ],
+ [
+ 18.31432,
+ 49.33818
+ ],
+ [
+ 18.15913,
+ 49.2961
+ ],
+ [
+ 18.05564,
+ 49.11134
+ ],
+ [
+ 17.56396,
+ 48.84938
+ ],
+ [
+ 17.17929,
+ 48.88816
+ ],
+ [
+ 17.058,
+ 48.81105
+ ],
+ [
+ 16.90426,
+ 48.61947
+ ],
+ [
+ 16.79685,
+ 48.38561
+ ],
+ [
+ 17.06762,
+ 48.01116
+ ],
+ [
+ 17.32787,
+ 47.97749
+ ],
+ [
+ 17.51699,
+ 47.82535
+ ],
+ [
+ 17.74776,
+ 47.73093
+ ],
+ [
+ 18.29515,
+ 47.72075
+ ],
+ [
+ 18.67959,
+ 47.75541
+ ],
+ [
+ 18.89755,
+ 47.81203
+ ],
+ [
+ 18.79463,
+ 47.88245
+ ],
+ [
+ 18.84318,
+ 48.04046
+ ],
+ [
+ 19.46212,
+ 48.05333
+ ],
+ [
+ 19.62064,
+ 48.22938
+ ],
+ [
+ 19.89585,
+ 48.09387
+ ],
+ [
+ 20.33766,
+ 48.2643
+ ],
+ [
+ 20.55395,
+ 48.52358
+ ],
+ [
+ 20.82335,
+ 48.55714
+ ],
+ [
+ 21.10271,
+ 48.47096
+ ],
+ [
+ 21.45863,
+ 48.55513
+ ],
+ [
+ 21.74536,
+ 48.31435
+ ],
+ [
+ 22.15293,
+ 48.37179
+ ],
+ [
+ 22.61255,
+ 49.08914
+ ],
+ [
+ 22.09997,
+ 49.23814
+ ],
+ [
+ 21.9686,
+ 49.36363
+ ],
+ [
+ 21.6244,
+ 49.46989
+ ],
+ [
+ 21.06873,
+ 49.46402
+ ],
+ [
+ 20.94336,
+ 49.31088
+ ],
+ [
+ 20.73052,
+ 49.44006
+ ],
+ [
+ 20.22804,
+ 49.41714
+ ],
+ [
+ 20.05234,
+ 49.23052
+ ],
+ [
+ 19.83682,
+ 49.25529
+ ]
+ ]
+ ],
+ "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
+ },
+ {
+ "name": "Freemap.sk Ski",
+ "type": "tms",
+ "template": "http://t{switch:1,2,3,4}.freemap.sk/K/{zoom}/{x}/{y}.jpeg",
+ "scaleExtent": [
+ 8,
+ 16
+ ],
+ "polygon": [
+ [
+ [
+ 19.83682,
+ 49.25529
+ ],
+ [
+ 19.80075,
+ 49.42385
+ ],
+ [
+ 19.60437,
+ 49.48058
+ ],
+ [
+ 19.49179,
+ 49.63961
+ ],
+ [
+ 19.21831,
+ 49.52604
+ ],
+ [
+ 19.16778,
+ 49.42521
+ ],
+ [
+ 19.00308,
+ 49.42236
+ ],
+ [
+ 18.97611,
+ 49.5308
+ ],
+ [
+ 18.54685,
+ 49.51425
+ ],
+ [
+ 18.31432,
+ 49.33818
+ ],
+ [
+ 18.15913,
+ 49.2961
+ ],
+ [
+ 18.05564,
+ 49.11134
+ ],
+ [
+ 17.56396,
+ 48.84938
+ ],
+ [
+ 17.17929,
+ 48.88816
+ ],
+ [
+ 17.058,
+ 48.81105
+ ],
+ [
+ 16.90426,
+ 48.61947
+ ],
+ [
+ 16.79685,
+ 48.38561
+ ],
+ [
+ 17.06762,
+ 48.01116
+ ],
+ [
+ 17.32787,
+ 47.97749
+ ],
+ [
+ 17.51699,
+ 47.82535
+ ],
+ [
+ 17.74776,
+ 47.73093
+ ],
+ [
+ 18.29515,
+ 47.72075
+ ],
+ [
+ 18.67959,
+ 47.75541
+ ],
+ [
+ 18.89755,
+ 47.81203
+ ],
+ [
+ 18.79463,
+ 47.88245
+ ],
+ [
+ 18.84318,
+ 48.04046
+ ],
+ [
+ 19.46212,
+ 48.05333
+ ],
+ [
+ 19.62064,
+ 48.22938
+ ],
+ [
+ 19.89585,
+ 48.09387
+ ],
+ [
+ 20.33766,
+ 48.2643
+ ],
+ [
+ 20.55395,
+ 48.52358
+ ],
+ [
+ 20.82335,
+ 48.55714
+ ],
+ [
+ 21.10271,
+ 48.47096
+ ],
+ [
+ 21.45863,
+ 48.55513
+ ],
+ [
+ 21.74536,
+ 48.31435
+ ],
+ [
+ 22.15293,
+ 48.37179
+ ],
+ [
+ 22.61255,
+ 49.08914
+ ],
+ [
+ 22.09997,
+ 49.23814
+ ],
+ [
+ 21.9686,
+ 49.36363
+ ],
+ [
+ 21.6244,
+ 49.46989
+ ],
+ [
+ 21.06873,
+ 49.46402
+ ],
+ [
+ 20.94336,
+ 49.31088
+ ],
+ [
+ 20.73052,
+ 49.44006
+ ],
+ [
+ 20.22804,
+ 49.41714
+ ],
+ [
+ 20.05234,
+ 49.23052
+ ],
+ [
+ 19.83682,
+ 49.25529
+ ]
+ ]
+ ],
+ "terms_text": "Copyright ©2007-2012 Freemap Slovakia (www.freemap.sk). Some rights reserved."
+ },
+ {
+ "name": "Fugro (Denmark)",
+ "type": "tms",
+ "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/fugro2005/{zoom}/{x}/{y}.png",
+ "scaleExtent": [
+ 0,
+ 19
+ ],
+ "polygon": [
+ [
+ [
+ 8.3743941,
+ 54.9551655
+ ],
+ [
+ 8.3683809,
+ 55.4042149
+ ],
+ [
+ 8.2103997,
+ 55.4039795
+ ],
+ [
+ 8.2087314,
+ 55.4937345
+ ],
+ [
+ 8.0502655,
+ 55.4924731
+ ],
+ [
+ 8.0185123,
+ 56.7501399
+ ],
+ [
+ 8.1819161,
+ 56.7509948
+ ],
+ [
+ 8.1763274,
+ 57.0208898
+ ],
+ [
+ 8.3413329,
+ 57.0219872
+ ],
+ [
+ 8.3392467,
+ 57.1119574
+ ],
+ [
+ 8.5054433,
+ 57.1123212
+ ],
+ [
+ 8.5033923,
+ 57.2020499
+ ],
+ [
+ 9.3316304,
+ 57.2027636
+ ],
+ [
+ 9.3319079,
+ 57.2924835
+ ],
+ [
+ 9.4978864,
+ 57.2919578
+ ],
+ [
+ 9.4988593,
+ 57.3820608
+ ],
+ [
+ 9.6649749,
+ 57.3811615
+ ],
+ [
+ 9.6687295,
+ 57.5605591
+ ],
+ [
+ 9.8351961,
+ 57.5596265
+ ],
+ [
+ 9.8374896,
+ 57.6493322
+ ],
+ [
+ 10.1725726,
+ 57.6462818
+ ],
+ [
+ 10.1754245,
+ 57.7367768
+ ],
+ [
+ 10.5118282,
+ 57.7330269
+ ],
+ [
+ 10.5152095,
+ 57.8228945
+ ],
+ [
+ 10.6834853,
+ 57.8207722
+ ],
+ [
+ 10.6751613,
+ 57.6412021
+ ],
+ [
+ 10.5077045,
+ 57.6433097
+ ],
+ [
+ 10.5039992,
+ 57.5535088
+ ],
+ [
+ 10.671038,
+ 57.5514113
+ ],
+ [
+ 10.6507805,
+ 57.1024538
+ ],
+ [
+ 10.4857673,
+ 57.1045138
+ ],
+ [
+ 10.4786236,
+ 56.9249051
+ ],
+ [
+ 10.3143981,
+ 56.9267573
+ ],
+ [
+ 10.3112341,
+ 56.8369269
+ ],
+ [
+ 10.4750295,
+ 56.83509
+ ],
+ [
+ 10.4649016,
+ 56.5656681
+ ],
+ [
+ 10.9524239,
+ 56.5589761
+ ],
+ [
+ 10.9479249,
+ 56.4692243
+ ],
+ [
+ 11.1099335,
+ 56.4664675
+ ],
+ [
+ 11.1052639,
+ 56.376833
+ ],
+ [
+ 10.9429901,
+ 56.3795284
+ ],
+ [
+ 10.9341235,
+ 56.1994768
+ ],
+ [
+ 10.7719685,
+ 56.2020244
+ ],
+ [
+ 10.7694751,
+ 56.1120103
+ ],
+ [
+ 10.6079695,
+ 56.1150259
+ ],
+ [
+ 10.4466742,
+ 56.116717
+ ],
+ [
+ 10.2865948,
+ 56.118675
+ ],
+ [
+ 10.2831527,
+ 56.0281851
+ ],
+ [
+ 10.4439274,
+ 56.0270388
+ ],
+ [
+ 10.4417713,
+ 55.7579243
+ ],
+ [
+ 10.4334961,
+ 55.6693533
+ ],
+ [
+ 10.743814,
+ 55.6646861
+ ],
+ [
+ 10.743814,
+ 55.5712253
+ ],
+ [
+ 10.8969041,
+ 55.5712253
+ ],
+ [
+ 10.9051793,
+ 55.3953852
+ ],
+ [
+ 11.0613726,
+ 55.3812841
+ ],
+ [
+ 11.0593038,
+ 55.1124061
+ ],
+ [
+ 11.0458567,
+ 55.0318621
+ ],
+ [
+ 11.2030844,
+ 55.0247474
+ ],
+ [
+ 11.2030844,
+ 55.117139
+ ],
+ [
+ 11.0593038,
+ 55.1124061
+ ],
+ [
+ 11.0613726,
+ 55.3812841
+ ],
+ [
+ 11.0789572,
+ 55.5712253
+ ],
+ [
+ 10.8969041,
+ 55.5712253
+ ],
+ [
+ 10.9258671,
+ 55.6670198
+ ],
+ [
+ 10.743814,
+ 55.6646861
+ ],
+ [
+ 10.7562267,
+ 55.7579243
+ ],
+ [
+ 10.4417713,
+ 55.7579243
+ ],
+ [
+ 10.4439274,
+ 56.0270388
+ ],
+ [
+ 10.4466742,
+ 56.116717
+ ],
+ [
+ 10.6079695,
+ 56.1150259
+ ],
+ [
+ 10.6052053,
+ 56.0247462
+ ],
+ [
+ 10.9258671,
+ 56.0201215
+ ],
+ [
+ 10.9197132,
+ 55.9309388
+ ],
+ [
+ 11.0802782,
+ 55.92792
+ ],
+ [
+ 11.0858066,
+ 56.0178284
+ ],
+ [
+ 11.7265047,
+ 56.005058
+ ],
+ [
+ 11.7319981,
+ 56.0952142
+ ],
+ [
+ 12.0540333,
+ 56.0871256
+ ],
+ [
+ 12.0608477,
+ 56.1762576
+ ],
+ [
+ 12.7023469,
+ 56.1594405
+ ],
+ [
+ 12.6611131,
+ 55.7114318
+ ],
+ [
+ 12.9792318,
+ 55.7014026
+ ],
+ [
+ 12.9612912,
+ 55.5217294
+ ],
+ [
+ 12.3268659,
+ 55.5412096
+ ],
+ [
+ 12.3206071,
+ 55.4513655
+ ],
+ [
+ 12.4778226,
+ 55.447067
+ ],
+ [
+ 12.4702432,
+ 55.3570479
+ ],
+ [
+ 12.6269738,
+ 55.3523837
+ ],
+ [
+ 12.6200898,
+ 55.2632576
+ ],
+ [
+ 12.4627339,
+ 55.26722
+ ],
+ [
+ 12.4552949,
+ 55.1778223
+ ],
+ [
+ 12.2987046,
+ 55.1822303
+ ],
+ [
+ 12.2897344,
+ 55.0923641
+ ],
+ [
+ 12.6048608,
+ 55.0832904
+ ],
+ [
+ 12.5872011,
+ 54.9036285
+ ],
+ [
+ 12.2766618,
+ 54.9119031
+ ],
+ [
+ 12.2610181,
+ 54.7331602
+ ],
+ [
+ 12.1070691,
+ 54.7378161
+ ],
+ [
+ 12.0858621,
+ 54.4681655
+ ],
+ [
+ 11.7794953,
+ 54.4753579
+ ],
+ [
+ 11.7837381,
+ 54.5654783
+ ],
+ [
+ 11.1658525,
+ 54.5782155
+ ],
+ [
+ 11.1706443,
+ 54.6686508
+ ],
+ [
+ 10.8617173,
+ 54.6733956
+ ],
+ [
+ 10.8651245,
+ 54.7634667
+ ],
+ [
+ 10.7713646,
+ 54.7643888
+ ],
+ [
+ 10.7707276,
+ 54.7372807
+ ],
+ [
+ 10.7551428,
+ 54.7375776
+ ],
+ [
+ 10.7544039,
+ 54.7195666
+ ],
+ [
+ 10.7389074,
+ 54.7197588
+ ],
+ [
+ 10.7384368,
+ 54.7108482
+ ],
+ [
+ 10.7074486,
+ 54.7113045
+ ],
+ [
+ 10.7041094,
+ 54.6756741
+ ],
+ [
+ 10.5510973,
+ 54.6781698
+ ],
+ [
+ 10.5547184,
+ 54.7670245
+ ],
+ [
+ 10.2423994,
+ 54.7705935
+ ],
+ [
+ 10.2459845,
+ 54.8604673
+ ],
+ [
+ 10.0902268,
+ 54.8622134
+ ],
+ [
+ 10.0873731,
+ 54.7723851
+ ],
+ [
+ 9.1555798,
+ 54.7769557
+ ],
+ [
+ 9.1562752,
+ 54.8675369
+ ],
+ [
+ 8.5321973,
+ 54.8663765
+ ],
+ [
+ 8.531432,
+ 54.95516
+ ]
+ ],
+ [
+ [
+ 11.4577738,
+ 56.819554
+ ],
+ [
+ 11.7849181,
+ 56.8127385
+ ],
+ [
+ 11.7716715,
+ 56.6332796
+ ],
+ [
+ 11.4459621,
+ 56.6401087
+ ]
+ ],
+ [
+ [
+ 11.3274736,
+ 57.3612962
+ ],
+ [
+ 11.3161808,
+ 57.1818004
+ ],
+ [
+ 11.1508692,
+ 57.1847276
+ ],
+ [
+ 11.1456628,
+ 57.094962
+ ],
+ [
+ 10.8157703,
+ 57.1001693
+ ],
+ [
+ 10.8290599,
+ 57.3695272
+ ]
+ ],
+ [
+ [
+ 11.5843266,
+ 56.2777928
+ ],
+ [
+ 11.5782882,
+ 56.1880397
+ ],
+ [
+ 11.7392309,
+ 56.1845765
+ ],
+ [
+ 11.7456428,
+ 56.2743186
+ ]
+ ],
+ [
+ [
+ 14.6825922,
+ 55.3639405
+ ],
+ [
+ 14.8395247,
+ 55.3565231
+ ],
+ [
+ 14.8263755,
+ 55.2671261
+ ],
+ [
+ 15.1393406,
+ 55.2517359
+ ],
+ [
+ 15.1532015,
+ 55.3410836
+ ],
+ [
+ 15.309925,
+ 55.3330556
+ ],
+ [
+ 15.295719,
+ 55.2437356
+ ],
+ [
+ 15.1393406,
+ 55.2517359
+ ],
+ [
+ 15.1255631,
+ 55.1623802
+ ],
+ [
+ 15.2815819,
+ 55.1544167
+ ],
+ [
+ 15.2535578,
+ 54.9757646
+ ],
+ [
+ 14.6317464,
+ 55.0062496
+ ]
+ ]
+ ],
+ "terms_url": "http://wiki.openstreetmap.org/wiki/Fugro",
+ "terms_text": "Fugro Aerial Mapping"
+ },
+ {
+ "name": "FÖMI ortofotó 2000",
+ "type": "tms",
+ "description": "Hungary",
+ "template": "http://e.tile.openstreetmap.hu/ortofoto2000/{zoom}/{x}/{y}.jpg",
+ "scaleExtent": [
+ 0,
+ 17
+ ],
+ "polygon": [
+ [
+ [
+ 16.1139147,
+ 46.8691038
+ ],
+ [
+ 16.1789749,
+ 46.90662
+ ],
+ [
+ 16.2000429,
+ 46.9415079
+ ],
+ [
+ 16.2217547,
+ 46.9355441
+ ],
+ [
+ 16.2462784,
+ 46.9463851
+ ],
+ [
+ 16.2553226,
+ 46.9642125
+ ],
+ [
+ 16.2764694,
+ 46.9626082
+ ],
+ [
+ 16.290583,
+ 47.0139849
+ ],
+ [
+ 16.3016199,
+ 46.9992329
+ ],
+ [
+ 16.3414618,
+ 46.9965225
+ ],
+ [
+ 16.3505162,
+ 47.0106313
+ ],
+ [
+ 16.3734016,
+ 46.9985929
+ ],
+ [
+ 16.412765,
+ 47.00475
+ ],
+ [
+ 16.4332705,
+ 46.9927417
+ ],
+ [
+ 16.4478119,
+ 47.003893
+ ],
+ [
+ 16.479997,
+ 46.9941169
+ ],
+ [
+ 16.5121988,
+ 47.0011695
+ ],
+ [
+ 16.4635584,
+ 47.0322699
+ ],
+ [
+ 16.4478586,
+ 47.0227481
+ ],
+ [
+ 16.439123,
+ 47.029663
+ ],
+ [
+ 16.445673,
+ 47.038872
+ ],
+ [
+ 16.520323,
+ 47.056103
+ ],
+ [
+ 16.473213,
+ 47.0736169
+ ],
+ [
+ 16.4637199,
+ 47.09392
+ ],
+ [
+ 16.500798,
+ 47.110058
+ ],
+ [
+ 16.500035,
+ 47.123295
+ ],
+ [
+ 16.5295349,
+ 47.1287419
+ ],
+ [
+ 16.5171609,
+ 47.1496938
+ ],
+ [
+ 16.454951,
+ 47.1425878
+ ],
+ [
+ 16.4648728,
+ 47.1683349
+ ],
+ [
+ 16.4555643,
+ 47.1875584
+ ],
+ [
+ 16.4305559,
+ 47.1847022
+ ],
+ [
+ 16.4195013,
+ 47.1949147
+ ],
+ [
+ 16.4189215,
+ 47.2107114
+ ],
+ [
+ 16.4371293,
+ 47.2097043
+ ],
+ [
+ 16.4426335,
+ 47.2337117
+ ],
+ [
+ 16.4313127,
+ 47.2527554
+ ],
+ [
+ 16.4671512,
+ 47.2531652
+ ],
+ [
+ 16.4892319,
+ 47.2798885
+ ],
+ [
+ 16.4646338,
+ 47.3338455
+ ],
+ [
+ 16.4337002,
+ 47.3528101
+ ],
+ [
+ 16.458513,
+ 47.3670496
+ ],
+ [
+ 16.4454619,
+ 47.4070195
+ ],
+ [
+ 16.4831657,
+ 47.4093628
+ ],
+ [
+ 16.4963821,
+ 47.3892659
+ ],
+ [
+ 16.5170941,
+ 47.4100218
+ ],
+ [
+ 16.5749054,
+ 47.4054243
+ ],
+ [
+ 16.5807291,
+ 47.4191699
+ ],
+ [
+ 16.661847,
+ 47.455595
+ ],
+ [
+ 16.6706419,
+ 47.47422
+ ],
+ [
+ 16.6523395,
+ 47.500342
+ ],
+ [
+ 16.6895619,
+ 47.510161
+ ],
+ [
+ 16.7147797,
+ 47.540199
+ ],
+ [
+ 16.663545,
+ 47.567733
+ ],
+ [
+ 16.673199,
+ 47.6049544
+ ],
+ [
+ 16.6595343,
+ 47.6061018
+ ],
+ [
+ 16.652758,
+ 47.622852
+ ],
+ [
+ 16.6314207,
+ 47.6283176
+ ],
+ [
+ 16.5739108,
+ 47.619667
+ ],
+ [
+ 16.5147382,
+ 47.6461964
+ ],
+ [
+ 16.4967504,
+ 47.6393149
+ ],
+ [
+ 16.425464,
+ 47.6621679
+ ],
+ [
+ 16.4437449,
+ 47.674205
+ ],
+ [
+ 16.4480507,
+ 47.6964725
+ ],
+ [
+ 16.4746984,
+ 47.6811576
+ ],
+ [
+ 16.4872245,
+ 47.6979767
+ ],
+ [
+ 16.5521729,
+ 47.7225519
+ ],
+ [
+ 16.5363779,
+ 47.736785
+ ],
+ [
+ 16.5479799,
+ 47.751544
+ ],
+ [
+ 16.6095193,
+ 47.7603722
+ ],
+ [
+ 16.6344148,
+ 47.7590843
+ ],
+ [
+ 16.65729,
+ 47.7414879
+ ],
+ [
+ 16.7209405,
+ 47.7353565
+ ],
+ [
+ 16.7534062,
+ 47.6828165
+ ],
+ [
+ 16.8301587,
+ 47.681058
+ ],
+ [
+ 16.8394284,
+ 47.7045139
+ ],
+ [
+ 16.8668943,
+ 47.7211462
+ ],
+ [
+ 16.876679,
+ 47.6876452
+ ],
+ [
+ 17.0937421,
+ 47.7077706
+ ],
+ [
+ 17.0706562,
+ 47.7285366
+ ],
+ [
+ 17.0516019,
+ 47.7938499
+ ],
+ [
+ 17.0749479,
+ 47.8084997
+ ],
+ [
+ 17.047139,
+ 47.8285635
+ ],
+ [
+ 17.0519452,
+ 47.8377691
+ ],
+ [
+ 17.0105513,
+ 47.8581765
+ ],
+ [
+ 17.0163878,
+ 47.8673325
+ ],
+ [
+ 17.0857537,
+ 47.8746239
+ ],
+ [
+ 17.113171,
+ 47.9271605
+ ],
+ [
+ 17.0917133,
+ 47.9342916
+ ],
+ [
+ 17.1183782,
+ 47.9601083
+ ],
+ [
+ 17.094657,
+ 47.9708775
+ ],
+ [
+ 17.2010289,
+ 48.019992
+ ],
+ [
+ 17.241769,
+ 48.0224651
+ ],
+ [
+ 17.257955,
+ 47.998655
+ ],
+ [
+ 17.334651,
+ 47.993125
+ ],
+ [
+ 17.4029929,
+ 47.947849
+ ],
+ [
+ 17.4539199,
+ 47.8852579
+ ],
+ [
+ 17.5267369,
+ 47.865509
+ ],
+ [
+ 17.5675779,
+ 47.8151289
+ ],
+ [
+ 17.608402,
+ 47.8218859
+ ],
+ [
+ 17.7085789,
+ 47.756678
+ ],
+ [
+ 17.7798739,
+ 47.739487
+ ],
+ [
+ 17.8660959,
+ 47.74575
+ ],
+ [
+ 17.9001292,
+ 47.7392633
+ ],
+ [
+ 17.946867,
+ 47.744668
+ ],
+ [
+ 17.9708709,
+ 47.7578392
+ ],
+ [
+ 18.0044103,
+ 47.7463402
+ ],
+ [
+ 18.0380583,
+ 47.7576812
+ ],
+ [
+ 18.2958774,
+ 47.7314616
+ ],
+ [
+ 18.4540681,
+ 47.7651226
+ ],
+ [
+ 18.4931553,
+ 47.7527552
+ ],
+ [
+ 18.5590761,
+ 47.7659963
+ ],
+ [
+ 18.6460866,
+ 47.7590921
+ ],
+ [
+ 18.7260691,
+ 47.7890411
+ ],
+ [
+ 18.7411784,
+ 47.8138245
+ ],
+ [
+ 18.7920013,
+ 47.8230869
+ ],
+ [
+ 18.8485417,
+ 47.8167221
+ ],
+ [
+ 18.855876,
+ 47.826077
+ ],
+ [
+ 18.828014,
+ 47.834291
+ ],
+ [
+ 18.8135749,
+ 47.85555
+ ],
+ [
+ 18.76353,
+ 47.8716049
+ ],
+ [
+ 18.756858,
+ 47.896838
+ ],
+ [
+ 18.776746,
+ 47.955092
+ ],
+ [
+ 18.7552499,
+ 47.9763469
+ ],
+ [
+ 18.8157429,
+ 47.993442
+ ],
+ [
+ 18.819998,
+ 48.039676
+ ],
+ [
+ 18.833268,
+ 48.048239
+ ],
+ [
+ 18.8749364,
+ 48.0470707
+ ],
+ [
+ 18.886674,
+ 48.058682
+ ],
+ [
+ 18.9089819,
+ 48.051139
+ ],
+ [
+ 18.9439039,
+ 48.058865
+ ],
+ [
+ 18.9816099,
+ 48.0536009
+ ],
+ [
+ 19.0148639,
+ 48.078179
+ ],
+ [
+ 19.0585249,
+ 48.0573529
+ ],
+ [
+ 19.0843619,
+ 48.072781
+ ],
+ [
+ 19.107402,
+ 48.065596
+ ],
+ [
+ 19.1352889,
+ 48.074146
+ ],
+ [
+ 19.2413679,
+ 48.0536529
+ ],
+ [
+ 19.2557819,
+ 48.0715559
+ ],
+ [
+ 19.3031119,
+ 48.088711
+ ],
+ [
+ 19.3865969,
+ 48.091914
+ ],
+ [
+ 19.400018,
+ 48.082304
+ ],
+ [
+ 19.454053,
+ 48.101436
+ ],
+ [
+ 19.467354,
+ 48.083933
+ ],
+ [
+ 19.4944199,
+ 48.109906
+ ],
+ [
+ 19.492377,
+ 48.1396639
+ ],
+ [
+ 19.5128219,
+ 48.154663
+ ],
+ [
+ 19.504518,
+ 48.173443
+ ],
+ [
+ 19.528967,
+ 48.190358
+ ],
+ [
+ 19.526044,
+ 48.20313
+ ],
+ [
+ 19.577502,
+ 48.2160149
+ ],
+ [
+ 19.6308263,
+ 48.2500725
+ ],
+ [
+ 19.6445239,
+ 48.2391719
+ ],
+ [
+ 19.669857,
+ 48.239212
+ ],
+ [
+ 19.691219,
+ 48.203894
+ ],
+ [
+ 19.721125,
+ 48.201473
+ ],
+ [
+ 19.74618,
+ 48.2165119
+ ],
+ [
+ 19.7871629,
+ 48.19253
+ ],
+ [
+ 19.7987329,
+ 48.19482
+ ],
+ [
+ 19.8052829,
+ 48.183733
+ ],
+ [
+ 19.782415,
+ 48.165039
+ ],
+ [
+ 19.794812,
+ 48.153529
+ ],
+ [
+ 19.821331,
+ 48.169081
+ ],
+ [
+ 19.8452819,
+ 48.162742
+ ],
+ [
+ 19.8551729,
+ 48.178431
+ ],
+ [
+ 19.8601309,
+ 48.169409
+ ],
+ [
+ 19.898745,
+ 48.1663119
+ ],
+ [
+ 19.9145359,
+ 48.146863
+ ],
+ [
+ 19.898298,
+ 48.1249019
+ ],
+ [
+ 19.937383,
+ 48.131118
+ ],
+ [
+ 19.9743939,
+ 48.1660049
+ ],
+ [
+ 19.988706,
+ 48.1621679
+ ],
+ [
+ 20.029038,
+ 48.1776849
+ ],
+ [
+ 20.049449,
+ 48.1671999
+ ],
+ [
+ 20.0729859,
+ 48.179606
+ ],
+ [
+ 20.0700369,
+ 48.1917019
+ ],
+ [
+ 20.1340909,
+ 48.225182
+ ],
+ [
+ 20.1331879,
+ 48.253982
+ ],
+ [
+ 20.206162,
+ 48.250979
+ ],
+ [
+ 20.2038299,
+ 48.261906
+ ],
+ [
+ 20.228466,
+ 48.262779
+ ],
+ [
+ 20.2349469,
+ 48.279933
+ ],
+ [
+ 20.286858,
+ 48.26164
+ ],
+ [
+ 20.3257109,
+ 48.272794
+ ],
+ [
+ 20.3374649,
+ 48.301667
+ ],
+ [
+ 20.3656579,
+ 48.316606
+ ],
+ [
+ 20.384077,
+ 48.3511809
+ ],
+ [
+ 20.4098349,
+ 48.365857
+ ],
+ [
+ 20.402532,
+ 48.382565
+ ],
+ [
+ 20.4205349,
+ 48.403858
+ ],
+ [
+ 20.416228,
+ 48.418536
+ ],
+ [
+ 20.507929,
+ 48.489363
+ ],
+ [
+ 20.5065069,
+ 48.534415
+ ],
+ [
+ 20.537471,
+ 48.527878
+ ],
+ [
+ 20.5464939,
+ 48.544292
+ ],
+ [
+ 20.586595,
+ 48.535759
+ ],
+ [
+ 20.6538739,
+ 48.561413
+ ],
+ [
+ 20.836359,
+ 48.58284
+ ],
+ [
+ 20.8378,
+ 48.57421
+ ],
+ [
+ 20.8504359,
+ 48.5816329
+ ],
+ [
+ 20.8453301,
+ 48.5665046
+ ],
+ [
+ 20.8681549,
+ 48.551818
+ ],
+ [
+ 20.922323,
+ 48.559453
+ ],
+ [
+ 20.9346349,
+ 48.538341
+ ],
+ [
+ 20.955882,
+ 48.533963
+ ],
+ [
+ 20.9561979,
+ 48.521666
+ ],
+ [
+ 20.9815849,
+ 48.5177669
+ ],
+ [
+ 21.0151139,
+ 48.532313
+ ],
+ [
+ 21.0663209,
+ 48.525894
+ ],
+ [
+ 21.1174479,
+ 48.4910549
+ ],
+ [
+ 21.1608749,
+ 48.521499
+ ],
+ [
+ 21.179634,
+ 48.518232
+ ],
+ [
+ 21.221061,
+ 48.537497
+ ],
+ [
+ 21.305488,
+ 48.5222489
+ ],
+ [
+ 21.313377,
+ 48.550841
+ ],
+ [
+ 21.326875,
+ 48.554129
+ ],
+ [
+ 21.319384,
+ 48.561201
+ ],
+ [
+ 21.4154499,
+ 48.558951
+ ],
+ [
+ 21.4226649,
+ 48.578821
+ ],
+ [
+ 21.4406099,
+ 48.585104
+ ],
+ [
+ 21.514091,
+ 48.551065
+ ],
+ [
+ 21.5420199,
+ 48.508395
+ ],
+ [
+ 21.6139329,
+ 48.509416
+ ],
+ [
+ 21.6201879,
+ 48.469826
+ ],
+ [
+ 21.663549,
+ 48.417961
+ ],
+ [
+ 21.6645609,
+ 48.392164
+ ],
+ [
+ 21.7017409,
+ 48.380695
+ ],
+ [
+ 21.711871,
+ 48.357617
+ ],
+ [
+ 21.8174139,
+ 48.332787
+ ],
+ [
+ 21.8352029,
+ 48.3346409
+ ],
+ [
+ 21.837213,
+ 48.363253
+ ],
+ [
+ 21.8842979,
+ 48.356047
+ ],
+ [
+ 21.8848429,
+ 48.367539
+ ],
+ [
+ 21.897883,
+ 48.36256
+ ],
+ [
+ 21.8997959,
+ 48.3702229
+ ],
+ [
+ 21.9281859,
+ 48.3615969
+ ],
+ [
+ 21.9268059,
+ 48.370899
+ ],
+ [
+ 21.949198,
+ 48.378728
+ ],
+ [
+ 21.994463,
+ 48.377323
+ ],
+ [
+ 22.0213259,
+ 48.392749
+ ],
+ [
+ 22.0546049,
+ 48.377528
+ ],
+ [
+ 22.0764859,
+ 48.387241
+ ],
+ [
+ 22.086743,
+ 48.371564
+ ],
+ [
+ 22.1359089,
+ 48.380519
+ ],
+ [
+ 22.131056,
+ 48.3912329
+ ],
+ [
+ 22.152768,
+ 48.3962409
+ ],
+ [
+ 22.1561913,
+ 48.4093076
+ ],
+ [
+ 22.2125722,
+ 48.4256468
+ ],
+ [
+ 22.2371405,
+ 48.4100396
+ ],
+ [
+ 22.2654858,
+ 48.4098675
+ ],
+ [
+ 22.2398761,
+ 48.3870055
+ ],
+ [
+ 22.2675722,
+ 48.3611612
+ ],
+ [
+ 22.3178106,
+ 48.3545437
+ ],
+ [
+ 22.3132861,
+ 48.3250712
+ ],
+ [
+ 22.3372944,
+ 48.3079113
+ ],
+ [
+ 22.3384267,
+ 48.2792074
+ ],
+ [
+ 22.3847547,
+ 48.2339632
+ ],
+ [
+ 22.4006407,
+ 48.249198
+ ],
+ [
+ 22.4328384,
+ 48.2525166
+ ],
+ [
+ 22.456386,
+ 48.2423109
+ ],
+ [
+ 22.4899029,
+ 48.2534237
+ ],
+ [
+ 22.4972201,
+ 48.2395546
+ ],
+ [
+ 22.5161491,
+ 48.237965
+ ],
+ [
+ 22.5311088,
+ 48.2094282
+ ],
+ [
+ 22.5711442,
+ 48.1961428
+ ],
+ [
+ 22.5616362,
+ 48.1816066
+ ],
+ [
+ 22.5982449,
+ 48.144756
+ ],
+ [
+ 22.5902763,
+ 48.1073414
+ ],
+ [
+ 22.6754492,
+ 48.091997
+ ],
+ [
+ 22.7347192,
+ 48.119848
+ ],
+ [
+ 22.7576242,
+ 48.1200599
+ ],
+ [
+ 22.7703914,
+ 48.1090162
+ ],
+ [
+ 22.772319,
+ 48.1218742
+ ],
+ [
+ 22.8027688,
+ 48.1221112
+ ],
+ [
+ 22.8025285,
+ 48.1070813
+ ],
+ [
+ 22.8254256,
+ 48.1175119
+ ],
+ [
+ 22.8364365,
+ 48.080249
+ ],
+ [
+ 22.8611284,
+ 48.0750312
+ ],
+ [
+ 22.8677955,
+ 48.0524256
+ ],
+ [
+ 22.8820424,
+ 48.0548053
+ ],
+ [
+ 22.8659692,
+ 48.0113165
+ ],
+ [
+ 22.835562,
+ 47.9905988
+ ],
+ [
+ 22.8407599,
+ 47.9813636
+ ],
+ [
+ 22.8725729,
+ 47.9752683
+ ],
+ [
+ 22.8697274,
+ 47.9659593
+ ],
+ [
+ 22.8915652,
+ 47.9672446
+ ],
+ [
+ 22.897435,
+ 47.9540629
+ ],
+ [
+ 22.8473299,
+ 47.9077579
+ ],
+ [
+ 22.7928135,
+ 47.8908586
+ ],
+ [
+ 22.7586924,
+ 47.8941446
+ ],
+ [
+ 22.77775,
+ 47.8422508
+ ],
+ [
+ 22.7136344,
+ 47.8360928
+ ],
+ [
+ 22.6801938,
+ 47.7877527
+ ],
+ [
+ 22.6111171,
+ 47.7717455
+ ],
+ [
+ 22.5490018,
+ 47.7722246
+ ],
+ [
+ 22.4812121,
+ 47.8108886
+ ],
+ [
+ 22.4513078,
+ 47.803389
+ ],
+ [
+ 22.4313319,
+ 47.7398119
+ ],
+ [
+ 22.3566167,
+ 47.7486206
+ ],
+ [
+ 22.3177714,
+ 47.7660887
+ ],
+ [
+ 22.3176236,
+ 47.7433657
+ ],
+ [
+ 22.2851369,
+ 47.7292757
+ ],
+ [
+ 22.264325,
+ 47.7310675
+ ],
+ [
+ 22.2589955,
+ 47.6979057
+ ],
+ [
+ 22.2306796,
+ 47.693196
+ ],
+ [
+ 22.1796501,
+ 47.5916115
+ ],
+ [
+ 22.1289245,
+ 47.5978984
+ ],
+ [
+ 22.0942787,
+ 47.5583628
+ ],
+ [
+ 22.0782587,
+ 47.5621299
+ ],
+ [
+ 22.0534529,
+ 47.5474795
+ ],
+ [
+ 22.0712176,
+ 47.5380742
+ ],
+ [
+ 22.0617872,
+ 47.5288029
+ ],
+ [
+ 22.0451278,
+ 47.5398919
+ ],
+ [
+ 22.0367222,
+ 47.5326653
+ ],
+ [
+ 22.0071886,
+ 47.48362
+ ],
+ [
+ 22.0327909,
+ 47.4508372
+ ],
+ [
+ 22.0238835,
+ 47.3908631
+ ],
+ [
+ 22.0119849,
+ 47.3758016
+ ],
+ [
+ 21.9627373,
+ 47.381053
+ ],
+ [
+ 21.9382461,
+ 47.3725317
+ ],
+ [
+ 21.8777922,
+ 47.2857763
+ ],
+ [
+ 21.8872845,
+ 47.2730473
+ ],
+ [
+ 21.8534909,
+ 47.2397622
+ ],
+ [
+ 21.8580662,
+ 47.1873597
+ ],
+ [
+ 21.8124804,
+ 47.1667511
+ ],
+ [
+ 21.7924092,
+ 47.1059751
+ ],
+ [
+ 21.7268258,
+ 47.0983882
+ ],
+ [
+ 21.6976037,
+ 47.057915
+ ],
+ [
+ 21.6504151,
+ 47.0408303
+ ],
+ [
+ 21.6888701,
+ 47.0019977
+ ],
+ [
+ 21.6678744,
+ 46.9712337
+ ],
+ [
+ 21.6814917,
+ 46.9652089
+ ],
+ [
+ 21.6381964,
+ 46.9330487
+ ],
+ [
+ 21.5984455,
+ 46.9274708
+ ],
+ [
+ 21.6142857,
+ 46.8867275
+ ],
+ [
+ 21.6016694,
+ 46.8668202
+ ],
+ [
+ 21.520328,
+ 46.8373749
+ ],
+ [
+ 21.5186086,
+ 46.8000703
+ ],
+ [
+ 21.4831761,
+ 46.7650246
+ ],
+ [
+ 21.5263389,
+ 46.7393249
+ ],
+ [
+ 21.529369,
+ 46.7209721
+ ],
+ [
+ 21.4923253,
+ 46.6859652
+ ],
+ [
+ 21.4728438,
+ 46.6959075
+ ],
+ [
+ 21.4299047,
+ 46.693937
+ ],
+ [
+ 21.4309553,
+ 46.6781367
+ ],
+ [
+ 21.4546661,
+ 46.660863
+ ],
+ [
+ 21.4162375,
+ 46.6426231
+ ],
+ [
+ 21.4097959,
+ 46.6218052
+ ],
+ [
+ 21.3657038,
+ 46.6379501
+ ],
+ [
+ 21.3300499,
+ 46.6318155
+ ],
+ [
+ 21.3139733,
+ 46.617666
+ ],
+ [
+ 21.3012351,
+ 46.5908672
+ ],
+ [
+ 21.3207905,
+ 46.5828562
+ ],
+ [
+ 21.2743045,
+ 46.5407362
+ ],
+ [
+ 21.2600254,
+ 46.5021583
+ ],
+ [
+ 21.2744188,
+ 46.4767333
+ ],
+ [
+ 21.2964506,
+ 46.4762973
+ ],
+ [
+ 21.3174343,
+ 46.4507288
+ ],
+ [
+ 21.2895176,
+ 46.4154784
+ ],
+ [
+ 21.2963256,
+ 46.4069601
+ ],
+ [
+ 21.2250116,
+ 46.4136899
+ ],
+ [
+ 21.2064214,
+ 46.4033825
+ ],
+ [
+ 21.1992563,
+ 46.3479034
+ ],
+ [
+ 21.1762269,
+ 46.3357664
+ ],
+ [
+ 21.180497,
+ 46.3044494
+ ],
+ [
+ 21.1155437,
+ 46.3018529
+ ],
+ [
+ 21.1030549,
+ 46.2624637
+ ],
+ [
+ 21.0708792,
+ 46.2539014
+ ],
+ [
+ 21.0660827,
+ 46.2429394
+ ],
+ [
+ 21.0366237,
+ 46.2480392
+ ],
+ [
+ 21.0246723,
+ 46.2665329
+ ],
+ [
+ 20.960817,
+ 46.2623039
+ ],
+ [
+ 20.9465849,
+ 46.2793024
+ ],
+ [
+ 20.9250701,
+ 46.2766191
+ ],
+ [
+ 20.9218133,
+ 46.2618129
+ ],
+ [
+ 20.8732713,
+ 46.2877555
+ ],
+ [
+ 20.7756538,
+ 46.2759602
+ ],
+ [
+ 20.7490474,
+ 46.2508489
+ ],
+ [
+ 20.7618619,
+ 46.204563
+ ],
+ [
+ 20.727401,
+ 46.2077485
+ ],
+ [
+ 20.7341052,
+ 46.1939355
+ ],
+ [
+ 20.7140487,
+ 46.1660531
+ ],
+ [
+ 20.6843592,
+ 46.1447802
+ ],
+ [
+ 20.6549178,
+ 46.1497739
+ ],
+ [
+ 20.6394471,
+ 46.1267602
+ ],
+ [
+ 20.5450486,
+ 46.1790935
+ ],
+ [
+ 20.5014839,
+ 46.190334
+ ],
+ [
+ 20.4949436,
+ 46.1709908
+ ],
+ [
+ 20.4592293,
+ 46.1428837
+ ],
+ [
+ 20.3975133,
+ 46.1574709
+ ],
+ [
+ 20.3685325,
+ 46.1528554
+ ],
+ [
+ 20.3557074,
+ 46.1696256
+ ],
+ [
+ 20.2968136,
+ 46.1521542
+ ],
+ [
+ 20.2549024,
+ 46.1158522
+ ],
+ [
+ 20.2484757,
+ 46.1300956
+ ],
+ [
+ 20.2330132,
+ 46.1241668
+ ],
+ [
+ 20.1817362,
+ 46.1601137
+ ],
+ [
+ 20.1364966,
+ 46.1449476
+ ],
+ [
+ 20.1009667,
+ 46.1772756
+ ],
+ [
+ 20.0636156,
+ 46.1437275
+ ],
+ [
+ 20.0346142,
+ 46.1458888
+ ],
+ [
+ 20.0158072,
+ 46.1768354
+ ],
+ [
+ 19.9354075,
+ 46.1764243
+ ],
+ [
+ 19.8533469,
+ 46.1500005
+ ],
+ [
+ 19.8179747,
+ 46.1281652
+ ],
+ [
+ 19.7585403,
+ 46.1479754
+ ],
+ [
+ 19.6982054,
+ 46.1879317
+ ],
+ [
+ 19.6827672,
+ 46.1800388
+ ],
+ [
+ 19.661508,
+ 46.1904394
+ ],
+ [
+ 19.6317396,
+ 46.1692993
+ ],
+ [
+ 19.5676482,
+ 46.179106
+ ],
+ [
+ 19.5604013,
+ 46.1665762
+ ],
+ [
+ 19.5026585,
+ 46.1424492
+ ],
+ [
+ 19.5271208,
+ 46.1210269
+ ],
+ [
+ 19.4645033,
+ 46.0953827
+ ],
+ [
+ 19.4665828,
+ 46.0820437
+ ],
+ [
+ 19.4160037,
+ 46.0460453
+ ],
+ [
+ 19.3803957,
+ 46.0358749
+ ],
+ [
+ 19.3640923,
+ 46.0522965
+ ],
+ [
+ 19.2819012,
+ 46.0148048
+ ],
+ [
+ 19.2965348,
+ 45.9881173
+ ],
+ [
+ 19.2856472,
+ 45.9968981
+ ],
+ [
+ 19.1479857,
+ 45.9963445
+ ],
+ [
+ 19.1338422,
+ 46.0370993
+ ],
+ [
+ 19.104873,
+ 46.0401673
+ ],
+ [
+ 19.0660427,
+ 46.0001999
+ ],
+ [
+ 19.0796791,
+ 45.9636376
+ ],
+ [
+ 19.0059803,
+ 45.9590674
+ ],
+ [
+ 19.0092745,
+ 45.9236559
+ ],
+ [
+ 18.9061334,
+ 45.9353801
+ ],
+ [
+ 18.8794572,
+ 45.9166827
+ ],
+ [
+ 18.8647137,
+ 45.9208493
+ ],
+ [
+ 18.8685629,
+ 45.9113361
+ ],
+ [
+ 18.8276792,
+ 45.9051714
+ ],
+ [
+ 18.8220041,
+ 45.9145893
+ ],
+ [
+ 18.8075092,
+ 45.9036055
+ ],
+ [
+ 18.809247,
+ 45.8796189
+ ],
+ [
+ 18.7956242,
+ 45.8784488
+ ],
+ [
+ 18.7048857,
+ 45.9181883
+ ],
+ [
+ 18.6700246,
+ 45.9108439
+ ],
+ [
+ 18.6596602,
+ 45.9168934
+ ],
+ [
+ 18.6651348,
+ 45.899279
+ ],
+ [
+ 18.6412808,
+ 45.8890396
+ ],
+ [
+ 18.6550179,
+ 45.8742393
+ ],
+ [
+ 18.6277704,
+ 45.8733782
+ ],
+ [
+ 18.6148449,
+ 45.8531438
+ ],
+ [
+ 18.6236656,
+ 45.8398531
+ ],
+ [
+ 18.5732391,
+ 45.8137578
+ ],
+ [
+ 18.5749849,
+ 45.8004344
+ ],
+ [
+ 18.559716,
+ 45.8037961
+ ],
+ [
+ 18.5223504,
+ 45.7826858
+ ],
+ [
+ 18.4906706,
+ 45.7947167
+ ],
+ [
+ 18.4821905,
+ 45.7655032
+ ],
+ [
+ 18.4562828,
+ 45.7695229
+ ],
+ [
+ 18.4450763,
+ 45.7605195
+ ],
+ [
+ 18.446853,
+ 45.737128
+ ],
+ [
+ 18.40763,
+ 45.7397119
+ ],
+ [
+ 18.3918949,
+ 45.7616983
+ ],
+ [
+ 18.3642257,
+ 45.7729364
+ ],
+ [
+ 18.3394214,
+ 45.7471605
+ ],
+ [
+ 18.2968157,
+ 45.7612196
+ ],
+ [
+ 18.2440473,
+ 45.7612305
+ ],
+ [
+ 18.2307311,
+ 45.7790328
+ ],
+ [
+ 18.1908702,
+ 45.7878759
+ ],
+ [
+ 18.1681939,
+ 45.7762712
+ ],
+ [
+ 18.1246514,
+ 45.7896277
+ ],
+ [
+ 18.1068067,
+ 45.7708256
+ ],
+ [
+ 18.0818922,
+ 45.7645205
+ ],
+ [
+ 17.9958808,
+ 45.7957311
+ ],
+ [
+ 17.9302095,
+ 45.7863301
+ ],
+ [
+ 17.9066757,
+ 45.7925692
+ ],
+ [
+ 17.8653145,
+ 45.7670064
+ ],
+ [
+ 17.8262748,
+ 45.8099957
+ ],
+ [
+ 17.8089784,
+ 45.8040989
+ ],
+ [
+ 17.7809054,
+ 45.8174884
+ ],
+ [
+ 17.7603399,
+ 45.811923
+ ],
+ [
+ 17.7408624,
+ 45.8295975
+ ],
+ [
+ 17.6632915,
+ 45.8381849
+ ],
+ [
+ 17.6276211,
+ 45.8979446
+ ],
+ [
+ 17.5700676,
+ 45.9358204
+ ],
+ [
+ 17.4378254,
+ 45.9503823
+ ],
+ [
+ 17.4258964,
+ 45.9272681
+ ],
+ [
+ 17.4108059,
+ 45.9399665
+ ],
+ [
+ 17.392149,
+ 45.9302149
+ ],
+ [
+ 17.3828713,
+ 45.9475733
+ ],
+ [
+ 17.3476208,
+ 45.9423413
+ ],
+ [
+ 17.3438769,
+ 45.9605329
+ ],
+ [
+ 17.3537711,
+ 45.9525011
+ ],
+ [
+ 17.3905375,
+ 45.9581914
+ ],
+ [
+ 17.387423,
+ 45.9661823
+ ],
+ [
+ 17.3583539,
+ 45.9642737
+ ],
+ [
+ 17.3754852,
+ 45.9686921
+ ],
+ [
+ 17.3751895,
+ 45.9881054
+ ],
+ [
+ 17.3635685,
+ 45.9915442
+ ],
+ [
+ 17.3567202,
+ 45.9735836
+ ],
+ [
+ 17.3339583,
+ 45.9960781
+ ],
+ [
+ 17.3319847,
+ 45.9728948
+ ],
+ [
+ 17.3129974,
+ 45.9665347
+ ],
+ [
+ 17.323647,
+ 45.9887776
+ ],
+ [
+ 17.2987653,
+ 45.9838652
+ ],
+ [
+ 17.3041996,
+ 46.0021128
+ ],
+ [
+ 17.2579726,
+ 46.0110256
+ ],
+ [
+ 17.29632,
+ 46.0285169
+ ],
+ [
+ 17.2541514,
+ 46.030005
+ ],
+ [
+ 17.270955,
+ 46.0567055
+ ],
+ [
+ 17.2324767,
+ 46.0592034
+ ],
+ [
+ 17.2525145,
+ 46.0664725
+ ],
+ [
+ 17.2313144,
+ 46.0790345
+ ],
+ [
+ 17.2019916,
+ 46.0765488
+ ],
+ [
+ 17.2331299,
+ 46.0989644
+ ],
+ [
+ 17.2104017,
+ 46.1001693
+ ],
+ [
+ 17.2129734,
+ 46.113855
+ ],
+ [
+ 17.175927,
+ 46.1084583
+ ],
+ [
+ 17.1743424,
+ 46.1287608
+ ],
+ [
+ 17.1865197,
+ 46.1332308
+ ],
+ [
+ 17.1810983,
+ 46.1505485
+ ],
+ [
+ 17.1562307,
+ 46.1585819
+ ],
+ [
+ 17.1592857,
+ 46.1696818
+ ],
+ [
+ 17.1261012,
+ 46.1684495
+ ],
+ [
+ 17.1227409,
+ 46.1789791
+ ],
+ [
+ 17.0752482,
+ 46.1889531
+ ],
+ [
+ 17.0661614,
+ 46.2022984
+ ],
+ [
+ 16.9735401,
+ 46.2251982
+ ],
+ [
+ 16.973954,
+ 46.2431113
+ ],
+ [
+ 16.9504085,
+ 46.2415285
+ ],
+ [
+ 16.8862356,
+ 46.2814598
+ ],
+ [
+ 16.8713682,
+ 46.3252767
+ ],
+ [
+ 16.8802109,
+ 46.3356966
+ ],
+ [
+ 16.8615374,
+ 46.3452401
+ ],
+ [
+ 16.8656232,
+ 46.3556489
+ ],
+ [
+ 16.8521959,
+ 46.3517189
+ ],
+ [
+ 16.8498589,
+ 46.3626245
+ ],
+ [
+ 16.8352859,
+ 46.3638195
+ ],
+ [
+ 16.8376499,
+ 46.3748032
+ ],
+ [
+ 16.8261732,
+ 46.3670994
+ ],
+ [
+ 16.7933444,
+ 46.387385
+ ],
+ [
+ 16.7592072,
+ 46.3776563
+ ],
+ [
+ 16.7298672,
+ 46.40149
+ ],
+ [
+ 16.7182119,
+ 46.3898704
+ ],
+ [
+ 16.6772872,
+ 46.4494536
+ ],
+ [
+ 16.6631785,
+ 46.4486958
+ ],
+ [
+ 16.6663732,
+ 46.4582995
+ ],
+ [
+ 16.6187915,
+ 46.4619875
+ ],
+ [
+ 16.604468,
+ 46.4760773
+ ],
+ [
+ 16.5235997,
+ 46.5053761
+ ],
+ [
+ 16.5325768,
+ 46.5314027
+ ],
+ [
+ 16.5176728,
+ 46.5363516
+ ],
+ [
+ 16.5084107,
+ 46.5652692
+ ],
+ [
+ 16.4829969,
+ 46.5660383
+ ],
+ [
+ 16.4834008,
+ 46.5786011
+ ],
+ [
+ 16.4455713,
+ 46.610952
+ ],
+ [
+ 16.4248583,
+ 46.6131645
+ ],
+ [
+ 16.385941,
+ 46.6442485
+ ],
+ [
+ 16.3915424,
+ 46.6637257
+ ],
+ [
+ 16.4198454,
+ 46.6584771
+ ],
+ [
+ 16.4286335,
+ 46.6939737
+ ],
+ [
+ 16.3689211,
+ 46.7040082
+ ],
+ [
+ 16.3798266,
+ 46.7153869
+ ],
+ [
+ 16.3710856,
+ 46.7222945
+ ],
+ [
+ 16.3570587,
+ 46.7142387
+ ],
+ [
+ 16.3185954,
+ 46.7541449
+ ],
+ [
+ 16.3305417,
+ 46.7752119
+ ],
+ [
+ 16.3121626,
+ 46.7780033
+ ],
+ [
+ 16.3127666,
+ 46.797314
+ ],
+ [
+ 16.3406373,
+ 46.8051851
+ ],
+ [
+ 16.3508404,
+ 46.8300552
+ ],
+ [
+ 16.3403309,
+ 46.8468762
+ ],
+ [
+ 16.3015007,
+ 46.8595142
+ ],
+ [
+ 16.2913867,
+ 46.8728341
+ ],
+ [
+ 16.2332296,
+ 46.8766702
+ ],
+ [
+ 16.1560866,
+ 46.8537074
+ ],
+ [
+ 16.126571,
+ 46.8569079
+ ],
+ [
+ 16.1139147,
+ 46.8691038
+ ]
+ ]
+ ],
+ "terms_url": "http://www.fomi.hu/",
+ "terms_text": "Földmérési és Távérzékelési Intézet"
+ },
+ {
+ "name": "Geodatastyrelsen (Denmark)",
+ "type": "tms",
+ "template": "http://mapproxy.gpweb.dk/tiles/1.0.0/kortforsyningen_ortoforaar/EPSG3857/{zoom}/{x}/{y}.jpeg",
+ "scaleExtent": [
+ 0,
+ 21
+ ],
+ "polygon": [
+ [
+ [
+ 8.3743941,
+ 54.9551655
+ ],
+ [
+ 8.3683809,
+ 55.4042149
+ ],
+ [
+ 8.2103997,
+ 55.4039795
+ ],
+ [
+ 8.2087314,
+ 55.4937345
+ ],
+ [
+ 8.0502655,
+ 55.4924731
+ ],
+ [
+ 8.0185123,
+ 56.7501399
+ ],
+ [
+ 8.1819161,
+ 56.7509948
+ ],
+ [
+ 8.1763274,
+ 57.0208898
+ ],
+ [
+ 8.3413329,
+ 57.0219872
+ ],
+ [
+ 8.3392467,
+ 57.1119574
+ ],
+ [
+ 8.5054433,
+ 57.1123212
+ ],
+ [
+ 8.5033923,
+ 57.2020499
+ ],
+ [
+ 9.3316304,
+ 57.2027636
+ ],
+ [
+ 9.3319079,
+ 57.2924835
+ ],
+ [
+ 9.4978864,
+ 57.2919578
+ ],
+ [
+ 9.4988593,
+ 57.3820608
+ ],
+ [
+ 9.6649749,
+ 57.3811615
+ ],
+ [
+ 9.6687295,
+ 57.5605591
+ ],
+ [
+ 9.8351961,
+ 57.5596265
+ ],
+ [
+ 9.8374896,
+ 57.6493322
+ ],
+ [
+ 10.1725726,
+ 57.6462818
+ ],
+ [
+ 10.1754245,
+ 57.7367768
+ ],
+ [
+ 10.5118282,
+ 57.7330269
+ ],
+ [
+ 10.5152095,
+ 57.8228945
+ ],
+ [
+ 10.6834853,
+ 57.8207722
+ ],
+ [
+ 10.6751613,
+ 57.6412021
+ ],
+ [
+ 10.5077045,
+ 57.6433097
+ ],
+ [
+ 10.5039992,
+ 57.5535088
+ ],
+ [
+ 10.671038,
+ 57.5514113
+ ],
+ [
+ 10.6507805,
+ 57.1024538
+ ],
+ [
+ 10.4857673,
+ 57.1045138
+ ],
+ [
+ 10.4786236,
+ 56.9249051
+ ],
+ [
+ 10.3143981,
+ 56.9267573
+ ],
+ [
+ 10.3112341,
+ 56.8369269
+ ],
+ [
+ 10.4750295,
+ 56.83509
+ ],
+ [
+ 10.4649016,
+ 56.5656681
+ ],
+ [
+ 10.9524239,
+ 56.5589761
+ ],
+ [
+ 10.9479249,
+ 56.4692243
+ ],
+ [
+ 11.1099335,
+ 56.4664675
+ ],
+ [
+ 11.1052639,
+ 56.376833
+ ],
+ [
+ 10.9429901,
+ 56.3795284
+ ],
+ [
+ 10.9341235,
+ 56.1994768
+ ],
+ [
+ 10.7719685,
+ 56.2020244
+ ],
+ [
+ 10.7694751,
+ 56.1120103
+ ],
+ [
+ 10.6079695,
+ 56.1150259
+ ],
+ [
+ 10.4466742,
+ 56.116717
+ ],
+ [
+ 10.2865948,
+ 56.118675
+ ],
+ [
+ 10.2831527,
+ 56.0281851
+ ],
+ [
+ 10.4439274,
+ 56.0270388
+ ],
+ [
+ 10.4417713,
+ 55.7579243
+ ],
+ [
+ 10.4334961,
+ 55.6693533
+ ],
+ [
+ 10.743814,
+ 55.6646861
+ ],
+ [
+ 10.743814,
+ 55.5712253
+ ],
+ [
+ 10.8969041,
+ 55.5712253
+ ],
+ [
+ 10.9051793,
+ 55.3953852
+ ],
+ [
+ 11.0613726,
+ 55.3812841
+ ],
+ [
+ 11.0593038,
+ 55.1124061
+ ],
+ [
+ 11.0458567,
+ 55.0318621
+ ],
+ [
+ 11.2030844,
+ 55.0247474
+ ],
+ [
+ 11.2030844,
+ 55.117139
+ ],
+ [
+ 11.0593038,
+ 55.1124061
+ ],
+ [
+ 11.0613726,
+ 55.3812841
+ ],
+ [
+ 11.0789572,
+ 55.5712253
+ ],
+ [
+ 10.8969041,
+ 55.5712253
+ ],
+ [
+ 10.9258671,
+ 55.6670198
+ ],
+ [
+ 10.743814,
+ 55.6646861
+ ],
+ [
+ 10.7562267,
+ 55.7579243
+ ],
+ [
+ 10.4417713,
+ 55.7579243
+ ],
+ [
+ 10.4439274,
+ 56.0270388
+ ],
+ [
+ 10.4466742,
+ 56.116717
+ ],
+ [
+ 10.6079695,
+ 56.1150259
+ ],
+ [
+ 10.6052053,
+ 56.0247462
+ ],
+ [
+ 10.9258671,
+ 56.0201215
+ ],
+ [
+ 10.9197132,
+ 55.9309388
+ ],
+ [
+ 11.0802782,
+ 55.92792
+ ],
+ [
+ 11.0858066,
+ 56.0178284
+ ],
+ [
+ 11.7265047,
+ 56.005058
+ ],
+ [
+ 11.7319981,
+ 56.0952142
+ ],
+ [
+ 12.0540333,
+ 56.0871256
+ ],
+ [
+ 12.0608477,
+ 56.1762576
+ ],
+ [
+ 12.7023469,
+ 56.1594405
+ ],
+ [
+ 12.6611131,
+ 55.7114318
+ ],
+ [
+ 12.9792318,
+ 55.7014026
+ ],
+ [
+ 12.9612912,
+ 55.5217294
+ ],
+ [
+ 12.3268659,
+ 55.5412096
+ ],
+ [
+ 12.3206071,
+ 55.4513655
+ ],
+ [
+ 12.4778226,
+ 55.447067
+ ],
+ [
+ 12.4702432,
+ 55.3570479
+ ],
+ [
+ 12.6269738,
+ 55.3523837
+ ],
+ [
+ 12.6200898,
+ 55.2632576
+ ],
+ [
+ 12.4627339,
+ 55.26722
+ ],
+ [
+ 12.4552949,
+ 55.1778223
+ ],
+ [
+ 12.2987046,
+ 55.1822303
+ ],
+ [
+ 12.2897344,
+ 55.0923641
+ ],
+ [
+ 12.6048608,
+ 55.0832904
+ ],
+ [
+ 12.5872011,
+ 54.9036285
+ ],
+ [
+ 12.2766618,
+ 54.9119031
+ ],
+ [
+ 12.2610181,
+ 54.7331602
+ ],
+ [
+ 12.1070691,
+ 54.7378161
+ ],
+ [
+ 12.0858621,
+ 54.4681655
+ ],
+ [
+ 11.7794953,
+ 54.4753579
+ ],
+ [
+ 11.7837381,
+ 54.5654783
+ ],
+ [
+ 11.1658525,
+ 54.5782155
+ ],
+ [
+ 11.1706443,
+ 54.6686508
+ ],
+ [
+ 10.8617173,
+ 54.6733956
+ ],
+ [
+ 10.8651245,
+ 54.7634667
+ ],
+ [
+ 10.7713646,
+ 54.7643888
+ ],
+ [
+ 10.7707276,
+ 54.7372807
+ ],
+ [
+ 10.7551428,
+ 54.7375776
+ ],
+ [
+ 10.7544039,
+ 54.7195666
+ ],
+ [
+ 10.7389074,
+ 54.7197588
+ ],
+ [
+ 10.7384368,
+ 54.7108482
+ ],
+ [
+ 10.7074486,
+ 54.7113045
+ ],
+ [
+ 10.7041094,
+ 54.6756741
+ ],
+ [
+ 10.5510973,
+ 54.6781698
+ ],
+ [
+ 10.5547184,
+ 54.7670245
+ ],
+ [
+ 10.2423994,
+ 54.7705935
+ ],
+ [
+ 10.2459845,
+ 54.8604673
+ ],
+ [
+ 10.0902268,
+ 54.8622134
+ ],
+ [
+ 10.0873731,
+ 54.7723851
+ ],
+ [
+ 9.1555798,
+ 54.7769557
+ ],
+ [
+ 9.1562752,
+ 54.8675369
+ ],
+ [
+ 8.5321973,
+ 54.8663765
+ ],
+ [
+ 8.531432,
+ 54.95516
+ ]
+ ],
+ [
+ [
+ 11.4577738,
+ 56.819554
+ ],
+ [
+ 11.7849181,
+ 56.8127385
+ ],
+ [
+ 11.7716715,
+ 56.6332796
+ ],
+ [
+ 11.4459621,
+ 56.6401087
+ ]
+ ],
+ [
+ [
+ 11.3274736,
+ 57.3612962
+ ],
+ [
+ 11.3161808,
+ 57.1818004
+ ],
+ [
+ 11.1508692,
+ 57.1847276
+ ],
+ [
+ 11.1456628,
+ 57.094962
+ ],
+ [
+ 10.8157703,
+ 57.1001693
+ ],
+ [
+ 10.8290599,
+ 57.3695272
+ ]
+ ],
+ [
+ [
+ 11.5843266,
+ 56.2777928
+ ],
+ [
+ 11.5782882,
+ 56.1880397
+ ],
+ [
+ 11.7392309,
+ 56.1845765
+ ],
+ [
+ 11.7456428,
+ 56.2743186
+ ]
+ ],
+ [
+ [
+ 14.6825922,
+ 55.3639405
+ ],
+ [
+ 14.8395247,
55.3565231
],
[
- 14.8263755,
- 55.2671261
+ 14.8263755,
+ 55.2671261
+ ],
+ [
+ 15.1393406,
+ 55.2517359
+ ],
+ [
+ 15.1532015,
+ 55.3410836
+ ],
+ [
+ 15.309925,
+ 55.3330556
+ ],
+ [
+ 15.295719,
+ 55.2437356
+ ],
+ [
+ 15.1393406,
+ 55.2517359
+ ],
+ [
+ 15.1255631,
+ 55.1623802
+ ],
+ [
+ 15.2815819,
+ 55.1544167
+ ],
+ [
+ 15.2535578,
+ 54.9757646
+ ],
+ [
+ 14.6317464,
+ 55.0062496
+ ]
+ ]
+ ],
+ "terms_url": "http://download.kortforsyningen.dk/content/vilkaar-og-betingelser",
+ "terms_text": "Geodatastyrelsen og Danske Kommuner"
+ },
+ {
+ "name": "Geoimage.at MaxRes",
+ "type": "tms",
+ "template": "http://geoimage.openstreetmap.at/4d80de696cd562a63ce463a58a61488d/{zoom}/{x}/{y}.jpg",
+ "polygon": [
+ [
+ [
+ 16.5073284,
+ 46.9929304
+ ],
+ [
+ 16.283417,
+ 46.9929304
+ ],
+ [
+ 16.135839,
+ 46.8713046
+ ],
+ [
+ 15.9831722,
+ 46.8190947
+ ],
+ [
+ 16.0493278,
+ 46.655175
+ ],
+ [
+ 15.8610387,
+ 46.7180116
+ ],
+ [
+ 15.7592608,
+ 46.6900933
+ ],
+ [
+ 15.5607938,
+ 46.6796202
+ ],
+ [
+ 15.5760605,
+ 46.6342132
+ ],
+ [
+ 15.4793715,
+ 46.6027553
+ ],
+ [
+ 15.4335715,
+ 46.6516819
+ ],
+ [
+ 15.2249267,
+ 46.6342132
+ ],
+ [
+ 15.0468154,
+ 46.6481886
+ ],
+ [
+ 14.9908376,
+ 46.5887681
+ ],
+ [
+ 14.9603042,
+ 46.6237293
+ ],
+ [
+ 14.8534374,
+ 46.6027553
+ ],
+ [
+ 14.8330818,
+ 46.5012666
+ ],
+ [
+ 14.7516595,
+ 46.4977636
+ ],
+ [
+ 14.6804149,
+ 46.4381781
+ ],
+ [
+ 14.6142593,
+ 46.4381781
+ ],
+ [
+ 14.578637,
+ 46.3785275
+ ],
+ [
+ 14.4412369,
+ 46.4311638
+ ],
+ [
+ 14.1613476,
+ 46.4276563
+ ],
+ [
+ 14.1257253,
+ 46.4767409
+ ],
+ [
+ 14.0188585,
+ 46.4767409
+ ],
+ [
+ 13.9119917,
+ 46.5257813
+ ],
+ [
+ 13.8254805,
+ 46.5047694
+ ],
+ [
+ 13.4438134,
+ 46.560783
+ ],
+ [
+ 13.3064132,
+ 46.5502848
+ ],
+ [
+ 13.1283019,
+ 46.5887681
+ ],
+ [
+ 12.8433237,
+ 46.6132433
+ ],
+ [
+ 12.7262791,
+ 46.6412014
+ ],
+ [
+ 12.5125455,
+ 46.6656529
+ ],
+ [
+ 12.3598787,
+ 46.7040543
+ ],
+ [
+ 12.3649676,
+ 46.7703197
+ ],
+ [
+ 12.2886341,
+ 46.7772902
+ ],
+ [
+ 12.2733674,
+ 46.8852187
+ ],
+ [
+ 12.2072118,
+ 46.8747835
+ ],
+ [
+ 12.1308784,
+ 46.9026062
+ ],
+ [
+ 12.1156117,
+ 46.9998721
+ ],
+ [
+ 12.2530119,
+ 47.0657733
+ ],
+ [
+ 12.2123007,
+ 47.0934969
+ ],
+ [
+ 11.9833004,
+ 47.0449712
+ ],
+ [
+ 11.7339445,
+ 46.9616816
+ ],
+ [
+ 11.6321666,
+ 47.010283
+ ],
+ [
+ 11.5405665,
+ 46.9755722
+ ],
+ [
+ 11.4998553,
+ 47.0068129
+ ],
+ [
+ 11.418433,
+ 46.9651546
+ ],
+ [
+ 11.2555884,
+ 46.9755722
+ ],
+ [
+ 11.1130993,
+ 46.913036
+ ],
+ [
+ 11.0418548,
+ 46.7633482
+ ],
+ [
+ 10.8891879,
+ 46.7598621
+ ],
+ [
+ 10.7416099,
+ 46.7842599
+ ],
+ [
+ 10.7059877,
+ 46.8643462
+ ],
+ [
+ 10.5787653,
+ 46.8399847
+ ],
+ [
+ 10.4566318,
+ 46.8504267
+ ],
+ [
+ 10.4769874,
+ 46.9269392
+ ],
+ [
+ 10.3853873,
+ 46.9894592
+ ],
+ [
+ 10.2327204,
+ 46.8643462
+ ],
+ [
+ 10.1207647,
+ 46.8330223
+ ],
+ [
+ 9.8663199,
+ 46.9408389
+ ],
+ [
+ 9.9019422,
+ 47.0033426
+ ],
+ [
+ 9.6831197,
+ 47.0588402
+ ],
+ [
+ 9.6118752,
+ 47.0380354
+ ],
+ [
+ 9.6322307,
+ 47.128131
+ ],
+ [
+ 9.5813418,
+ 47.1662025
+ ],
+ [
+ 9.5406306,
+ 47.2664422
+ ],
+ [
+ 9.6067863,
+ 47.3492559
+ ],
+ [
+ 9.6729419,
+ 47.369939
+ ],
+ [
+ 9.6424085,
+ 47.4457079
+ ],
+ [
+ 9.5660751,
+ 47.4801122
+ ],
+ [
+ 9.7136531,
+ 47.5282405
+ ],
+ [
+ 9.7848976,
+ 47.5969187
+ ],
+ [
+ 9.8357866,
+ 47.5454185
+ ],
+ [
+ 9.9477423,
+ 47.538548
+ ],
+ [
+ 10.0902313,
+ 47.4491493
+ ],
+ [
+ 10.1105869,
+ 47.3664924
+ ],
+ [
+ 10.2428982,
+ 47.3871688
+ ],
+ [
+ 10.1869203,
+ 47.2698953
+ ],
+ [
+ 10.3243205,
+ 47.2975125
+ ],
+ [
+ 10.4820763,
+ 47.4491493
+ ],
+ [
+ 10.4311873,
+ 47.4869904
+ ],
+ [
+ 10.4413651,
+ 47.5900549
+ ],
+ [
+ 10.4871652,
+ 47.5522881
+ ],
+ [
+ 10.5482319,
+ 47.5351124
+ ],
+ [
+ 10.5991209,
+ 47.5660246
+ ],
+ [
+ 10.7568766,
+ 47.5316766
+ ],
+ [
+ 10.8891879,
+ 47.5454185
+ ],
+ [
+ 10.9400769,
+ 47.4869904
+ ],
+ [
+ 10.9960547,
+ 47.3906141
+ ],
+ [
+ 11.2352328,
+ 47.4422662
+ ],
+ [
+ 11.2810328,
+ 47.3975039
+ ],
+ [
+ 11.4235219,
+ 47.5144941
+ ],
+ [
+ 11.5761888,
+ 47.5076195
+ ],
+ [
+ 11.6067221,
+ 47.5900549
+ ],
+ [
+ 11.8357224,
+ 47.5866227
+ ],
+ [
+ 12.003656,
+ 47.6243647
+ ],
+ [
+ 12.2072118,
+ 47.6037815
+ ],
+ [
+ 12.1614117,
+ 47.6963421
+ ],
+ [
+ 12.2581008,
+ 47.7442718
+ ],
+ [
+ 12.2530119,
+ 47.6792136
+ ],
+ [
+ 12.4311232,
+ 47.7100408
+ ],
+ [
+ 12.4921899,
+ 47.631224
+ ],
+ [
+ 12.5685234,
+ 47.6277944
+ ],
+ [
+ 12.6295901,
+ 47.6894913
+ ],
+ [
+ 12.7720792,
+ 47.6689338
+ ],
+ [
+ 12.8331459,
+ 47.5419833
+ ],
+ [
+ 12.975635,
+ 47.4732332
+ ],
+ [
+ 13.0417906,
+ 47.4938677
+ ],
+ [
+ 13.0367017,
+ 47.5557226
+ ],
+ [
+ 13.0977685,
+ 47.6415112
+ ],
+ [
+ 13.0316128,
+ 47.7100408
+ ],
+ [
+ 12.9043905,
+ 47.7203125
+ ],
+ [
+ 13.0061684,
+ 47.84683
+ ],
+ [
+ 12.9451016,
+ 47.9355501
+ ],
+ [
+ 12.8636793,
+ 47.9594103
+ ],
+ [
+ 12.8636793,
+ 48.0036929
+ ],
+ [
+ 12.7517236,
+ 48.0989418
+ ],
+ [
+ 12.8738571,
+ 48.2109733
+ ],
+ [
+ 12.9603683,
+ 48.2109733
+ ],
+ [
+ 13.0417906,
+ 48.2652035
+ ],
+ [
+ 13.1842797,
+ 48.2990682
+ ],
+ [
+ 13.2606131,
+ 48.2922971
+ ],
+ [
+ 13.3980133,
+ 48.3565867
+ ],
+ [
+ 13.4438134,
+ 48.417418
+ ],
+ [
+ 13.4387245,
+ 48.5523383
+ ],
+ [
+ 13.509969,
+ 48.5860123
+ ],
+ [
+ 13.6117469,
+ 48.5725454
+ ],
+ [
+ 13.7287915,
+ 48.5118999
+ ],
+ [
+ 13.7847694,
+ 48.5725454
+ ],
+ [
+ 13.8203916,
+ 48.6263915
+ ],
+ [
+ 13.7949471,
+ 48.7171267
+ ],
+ [
+ 13.850925,
+ 48.7741724
+ ],
+ [
+ 14.0595697,
+ 48.6633774
+ ],
+ [
+ 14.0137696,
+ 48.6331182
+ ],
+ [
+ 14.0748364,
+ 48.5927444
+ ],
+ [
+ 14.2173255,
+ 48.5961101
+ ],
+ [
+ 14.3649034,
+ 48.5489696
+ ],
+ [
+ 14.4666813,
+ 48.6499311
+ ],
+ [
+ 14.5582815,
+ 48.5961101
+ ],
+ [
+ 14.5989926,
+ 48.6263915
+ ],
+ [
+ 14.7211261,
+ 48.5759124
+ ],
+ [
+ 14.7211261,
+ 48.6868997
+ ],
+ [
+ 14.822904,
+ 48.7271983
+ ],
+ [
+ 14.8178151,
+ 48.777526
+ ],
+ [
+ 14.9647227,
+ 48.7851754
+ ],
+ [
+ 14.9893637,
+ 49.0126611
+ ],
+ [
+ 15.1485933,
+ 48.9950306
+ ],
+ [
+ 15.1943934,
+ 48.9315502
+ ],
+ [
+ 15.3063491,
+ 48.9850128
+ ],
+ [
+ 15.3928603,
+ 48.9850128
+ ],
+ [
+ 15.4844604,
+ 48.9282069
+ ],
+ [
+ 15.749083,
+ 48.8545973
+ ],
+ [
+ 15.8406831,
+ 48.8880697
+ ],
+ [
+ 16.0086166,
+ 48.7808794
+ ],
+ [
+ 16.2070835,
+ 48.7339115
+ ],
+ [
+ 16.3953727,
+ 48.7372678
+ ],
+ [
+ 16.4920617,
+ 48.8110498
+ ],
+ [
+ 16.6905286,
+ 48.7741724
+ ],
+ [
+ 16.7057953,
+ 48.7339115
+ ],
+ [
+ 16.8991733,
+ 48.713769
+ ],
+ [
+ 16.9755067,
+ 48.515271
+ ],
+ [
+ 16.8482844,
+ 48.4511817
+ ],
+ [
+ 16.8533733,
+ 48.3464411
+ ],
+ [
+ 16.9551512,
+ 48.2516513
+ ],
+ [
+ 16.9907734,
+ 48.1498955
+ ],
+ [
+ 17.0925513,
+ 48.1397088
+ ],
+ [
+ 17.0823736,
+ 48.0241182
+ ],
+ [
+ 17.1739737,
+ 48.0207146
+ ],
+ [
+ 17.0823736,
+ 47.8741447
+ ],
+ [
+ 16.9856845,
+ 47.8673174
+ ],
+ [
+ 17.0823736,
+ 47.8092489
+ ],
+ [
+ 17.0925513,
+ 47.7031919
+ ],
+ [
+ 16.7414176,
+ 47.6792136
+ ],
+ [
+ 16.7057953,
+ 47.7511153
+ ],
+ [
+ 16.5378617,
+ 47.7545368
+ ],
+ [
+ 16.5480395,
+ 47.7066164
+ ],
+ [
+ 16.4208172,
+ 47.6689338
+ ],
+ [
+ 16.573484,
+ 47.6175045
+ ],
+ [
+ 16.670173,
+ 47.631224
+ ],
+ [
+ 16.7108842,
+ 47.538548
+ ],
+ [
+ 16.6599952,
+ 47.4491493
+ ],
+ [
+ 16.5429506,
+ 47.3940591
+ ],
+ [
+ 16.4615283,
+ 47.3940591
+ ],
+ [
+ 16.4920617,
+ 47.276801
+ ],
+ [
+ 16.425906,
+ 47.1973317
+ ],
+ [
+ 16.4717061,
+ 47.1489007
+ ],
+ [
+ 16.5480395,
+ 47.1489007
+ ],
+ [
+ 16.476795,
+ 47.0796369
+ ],
+ [
+ 16.527684,
+ 47.0588402
+ ]
+ ]
+ ],
+ "terms_text": "geoimage.at",
+ "id": "geoimage.at"
+ },
+ {
+ "name": "Geoportal.gov.pl (Orthophotomap)",
+ "type": "tms",
+ "template": "http://wms.misek.pl/geoportal.orto/tms/{zoom}/{x}/{y}",
+ "scaleExtent": [
+ 6,
+ 24
+ ],
+ "polygon": [
+ [
+ [
+ 15.9751041,
+ 54.3709213
+ ],
+ [
+ 16.311164,
+ 54.5561775
+ ],
+ [
+ 17.1391878,
+ 54.7845723
+ ],
+ [
+ 18.3448458,
+ 54.9022727
+ ],
+ [
+ 19.6613689,
+ 54.4737213
+ ],
+ [
+ 20.2815206,
+ 54.4213456
+ ],
+ [
+ 21.4663914,
+ 54.3406369
+ ],
+ [
+ 22.7759855,
+ 54.3769755
+ ],
+ [
+ 22.8625989,
+ 54.4233613
+ ],
+ [
+ 23.2956657,
+ 54.2678633
+ ],
+ [
+ 23.5347186,
+ 54.0955258
+ ],
+ [
+ 23.5208604,
+ 53.9775182
+ ],
+ [
+ 23.7183389,
+ 53.4629603
+ ],
+ [
+ 23.9296755,
+ 53.1856735
+ ],
+ [
+ 23.9296755,
+ 52.6887269
+ ],
+ [
+ 23.732197,
+ 52.6067497
+ ],
+ [
+ 23.5658994,
+ 52.5878101
+ ],
+ [
+ 23.2090523,
+ 52.3302642
+ ],
+ [
+ 23.1951942,
+ 52.2370089
+ ],
+ [
+ 23.5035377,
+ 52.1860596
+ ],
+ [
+ 23.6906226,
+ 52.0030113
+ ],
+ [
+ 23.5970802,
+ 51.739903
+ ],
+ [
+ 23.6629063,
+ 51.3888562
+ ],
+ [
+ 23.9366046,
+ 50.9827781
+ ],
+ [
+ 24.1687284,
+ 50.8604752
+ ],
+ [
+ 24.0197534,
+ 50.8035823
+ ],
+ [
+ 24.1098313,
+ 50.6610467
+ ],
+ [
+ 24.0578633,
+ 50.4188439
+ ],
+ [
+ 23.6178674,
+ 50.3083403
+ ],
+ [
+ 22.6824431,
+ 49.5163532
+ ],
+ [
+ 22.7378756,
+ 49.2094935
+ ],
+ [
+ 22.9041733,
+ 49.0780441
+ ],
+ [
+ 22.8625989,
+ 48.9940062
+ ],
+ [
+ 22.6096878,
+ 49.0371785
+ ],
+ [
+ 22.0761495,
+ 49.2004392
+ ],
+ [
+ 21.8474902,
+ 49.3721872
+ ],
+ [
+ 21.3763135,
+ 49.4488281
+ ],
+ [
+ 21.1026153,
+ 49.3721872
+ ],
+ [
+ 20.9120659,
+ 49.3022043
+ ],
+ [
+ 20.6452967,
+ 49.3902311
+ ],
+ [
+ 20.1845136,
+ 49.3315641
+ ],
+ [
+ 20.1186875,
+ 49.2004392
+ ],
+ [
+ 19.9419962,
+ 49.1302123
+ ],
+ [
+ 19.765305,
+ 49.2117568
+ ],
+ [
+ 19.7479823,
+ 49.3992506
+ ],
+ [
+ 19.6024718,
+ 49.4150307
+ ],
+ [
+ 19.5089294,
+ 49.5815389
+ ],
+ [
+ 19.4292451,
+ 49.5905232
+ ],
+ [
+ 19.2317666,
+ 49.4150307
+ ],
+ [
+ 18.9961783,
+ 49.387976
+ ],
+ [
+ 18.9338167,
+ 49.4916048
+ ],
+ [
+ 18.8368097,
+ 49.4938552
+ ],
+ [
+ 18.8021643,
+ 49.6623381
+ ],
+ [
+ 18.6427958,
+ 49.7094091
+ ],
+ [
+ 18.521537,
+ 49.8994693
+ ],
+ [
+ 18.0815412,
+ 50.0109209
+ ],
+ [
+ 17.8875272,
+ 49.9886512
+ ],
+ [
+ 17.7385522,
+ 50.0687739
+ ],
+ [
+ 17.6068999,
+ 50.1709584
+ ],
+ [
+ 17.7454813,
+ 50.2153184
+ ],
+ [
+ 17.710836,
+ 50.3017019
+ ],
+ [
+ 17.4163505,
+ 50.2640668
+ ],
+ [
+ 16.9486384,
+ 50.4453265
+ ],
+ [
+ 16.8932058,
+ 50.4033889
+ ],
+ [
+ 17.0006064,
+ 50.3105529
+ ],
+ [
+ 17.017929,
+ 50.2241854
+ ],
+ [
+ 16.8135215,
+ 50.186489
+ ],
+ [
+ 16.6402948,
+ 50.0976742
+ ],
+ [
+ 16.4324227,
+ 50.2862087
+ ],
+ [
+ 16.1968344,
+ 50.4276731
+ ],
+ [
+ 16.4220291,
+ 50.5885165
+ ],
+ [
+ 16.3388803,
+ 50.6632429
+ ],
+ [
+ 16.2280152,
+ 50.6368824
+ ],
+ [
+ 16.0547884,
+ 50.6127057
+ ],
+ [
+ 15.5732181,
+ 50.7641544
+ ],
+ [
+ 15.2683391,
+ 50.8976368
+ ],
+ [
+ 15.2440873,
+ 50.980597
+ ],
+ [
+ 15.0292862,
+ 51.0133036
+ ],
+ [
+ 15.0015699,
+ 50.8582883
+ ],
+ [
+ 14.8110205,
+ 50.8735944
+ ],
+ [
+ 14.956531,
+ 51.0721176
+ ],
+ [
+ 15.0188926,
+ 51.2914636
+ ],
+ [
+ 14.9392083,
+ 51.4601459
+ ],
+ [
+ 14.7209426,
+ 51.5571799
+ ],
+ [
+ 14.7521234,
+ 51.6260562
+ ],
+ [
+ 14.5996839,
+ 51.8427626
+ ],
+ [
+ 14.70362,
+ 52.0733396
+ ],
+ [
+ 14.5581095,
+ 52.2497371
+ ],
+ [
+ 14.5165351,
+ 52.425436
+ ],
+ [
+ 14.6031485,
+ 52.5878101
+ ],
+ [
+ 14.1146491,
+ 52.8208272
+ ],
+ [
+ 14.152759,
+ 52.9733951
+ ],
+ [
+ 14.3502374,
+ 53.0734212
+ ],
+ [
+ 14.4229927,
+ 53.2665624
+ ],
+ [
+ 14.1977979,
+ 53.8734759
+ ],
+ [
+ 14.2220497,
+ 53.9958517
+ ]
+ ]
+ ],
+ "terms_text": "Copyright © Główny Urząd Geodezji i Kartografii."
+ },
+ {
+ "name": "IBGE Mapa de Setores Rurais",
+ "type": "tms",
+ "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/tmpsantos.i00mo1kj/{zoom}/{x}/{y}.png",
+ "scaleExtent": [
+ 0,
+ 14
+ ],
+ "polygon": [
+ [
+ [
+ -29.3325,
+ 2.335959
+ ],
+ [
+ -28.72472,
+ 2.031551
],
[
- 15.1393406,
- 55.2517359
+ -27.76041,
+ -8.937033
],
[
- 15.1532015,
- 55.3410836
+ -27.67249,
+ -22.20839
],
[
- 15.309925,
- 55.3330556
+ -51.11495,
+ -35.46552
],
[
- 15.295719,
- 55.2437356
+ -53.39394,
+ -33.85064
],
[
- 15.1393406,
- 55.2517359
+ -53.62553,
+ -33.72493
],
[
- 15.1255631,
- 55.1623802
+ -53.62503,
+ -33.15428
],
[
- 15.2815819,
- 55.1544167
+ -53.24498,
+ -32.73392
],
[
- 15.2535578,
- 54.9757646
+ -53.65747,
+ -32.51873
],
[
- 14.6317464,
- 55.0062496
- ]
- ]
- ],
- "terms_url": "http://wiki.openstreetmap.org/wiki/Fugro",
- "terms_text": "Fugro Aerial Mapping"
- },
- {
- "name": "Geodatastyrelsen (Denmark)",
- "type": "tms",
- "template": "http://mapproxy.gpweb.dk/tiles/1.0.0/kortforsyningen_ortoforaar/EPSG3857/{zoom}/{x}/{y}.jpeg",
- "scaleExtent": [
- 0,
- 21
- ],
- "polygon": [
- [
+ -53.8329,
+ -32.16592
+ ],
[
- 8.3743941,
- 54.9551655
+ -54.64174,
+ -31.55507
],
[
- 8.3683809,
- 55.4042149
+ -55.29638,
+ -31.3429
],
[
- 8.2103997,
- 55.4039795
+ -55.57371,
+ -30.99691
],
[
- 8.2087314,
- 55.4937345
+ -56.06384,
+ -31.16749
],
[
- 8.0502655,
- 55.4924731
+ -56.10468,
+ -30.86436
],
[
- 8.0185123,
- 56.7501399
+ -56.86862,
+ -30.20752
],
[
- 8.1819161,
- 56.7509948
+ -57.39671,
+ -30.40464
],
[
- 8.1763274,
- 57.0208898
+ -57.74384,
+ -30.22142
],
[
- 8.3413329,
- 57.0219872
+ -55.83724,
+ -28.16598
],
[
- 8.3392467,
- 57.1119574
+ -54.86969,
+ -27.44994
],
[
- 8.5054433,
- 57.1123212
+ -53.9016,
+ -27.02998
],
[
- 8.5033923,
- 57.2020499
+ -53.74972,
+ -26.25781
],
[
- 9.3316304,
- 57.2027636
+ -53.97158,
+ -25.74513
],
[
- 9.3319079,
- 57.2924835
+ -54.44723,
+ -25.79609
],
[
- 9.4978864,
- 57.2919578
+ -54.67802,
+ -25.64668
],
[
- 9.4988593,
- 57.3820608
+ -54.36097,
+ -24.35145
],
[
- 9.6649749,
- 57.3811615
+ -54.41679,
+ -24.06527
],
[
- 9.6687295,
- 57.5605591
+ -54.64355,
+ -23.94107
],
[
- 9.8351961,
- 57.5596265
+ -55.22163,
+ -24.11355
],
[
- 9.8374896,
- 57.6493322
+ -55.49138,
+ -24.02797
],
[
- 10.1725726,
- 57.6462818
+ -55.71734,
+ -22.68488
],
[
- 10.1754245,
- 57.7367768
+ -55.90555,
+ -22.39886
],
[
- 10.5118282,
- 57.7330269
+ -56.45255,
+ -22.21731
],
[
- 10.5152095,
- 57.8228945
+ -56.8256,
+ -22.4002
],
[
- 10.6834853,
- 57.8207722
+ -57.34109,
+ -22.34351
],
[
- 10.6751613,
- 57.6412021
+ -58.08472,
+ -22.13075
],
[
- 10.5077045,
- 57.6433097
+ -57.95766,
+ -20.99818
],
[
- 10.5039992,
- 57.5535088
+ -58.26551,
+ -20.24147
],
[
- 10.671038,
- 57.5514113
+ -58.03577,
+ -19.95871
],
[
- 10.6507805,
- 57.1024538
+ -58.23083,
+ -19.75211
],
[
- 10.4857673,
- 57.1045138
+ -57.64739,
+ -18.19828
],
[
- 10.4786236,
- 56.9249051
+ -57.89356,
+ -17.57377
],
[
- 10.3143981,
- 56.9267573
+ -58.16997,
+ -17.53519
],
[
- 10.3112341,
- 56.8369269
+ -58.48825,
+ -17.21961
],
[
- 10.4750295,
- 56.83509
+ -58.57691,
+ -16.81466
],
[
- 10.4649016,
- 56.5656681
+ -58.45563,
+ -16.42158
],
[
- 10.9524239,
- 56.5589761
+ -60.2541,
+ -16.32571
],
[
- 10.9479249,
- 56.4692243
+ -60.33481,
+ -15.51483
],
[
- 11.1099335,
- 56.4664675
+ -60.67423,
+ -15.1122
],
[
- 11.1052639,
- 56.376833
+ -60.34999,
+ -14.99707
],
[
- 10.9429901,
- 56.3795284
+ -60.63603,
+ -13.84119
],
[
- 10.9341235,
- 56.1994768
+ -61.07283,
+ -13.62569
],
[
- 10.7719685,
- 56.2020244
+ -61.9025,
+ -13.62647
],
[
- 10.7694751,
- 56.1120103
+ -62.21395,
+ -13.25048
],
[
- 10.6079695,
- 56.1150259
+ -62.80185,
+ -13.10905
],
[
- 10.4466742,
- 56.116717
+ -63.17194,
+ -12.76568
],
[
- 10.2865948,
- 56.118675
+ -63.74229,
+ -12.54071
],
[
- 10.2831527,
- 56.0281851
+ -64.32845,
+ -12.59578
],
[
- 10.4439274,
- 56.0270388
+ -65.10261,
+ -12.0682
],
[
- 10.4417713,
- 55.7579243
+ -65.45781,
+ -11.27865
],
[
- 10.4334961,
- 55.6693533
+ -65.41641,
+ -9.838943
],
[
- 10.743814,
- 55.6646861
+ -66.52331,
+ -9.985873
],
[
- 10.743814,
- 55.5712253
+ -67.66452,
+ -10.80093
],
[
- 10.8969041,
- 55.5712253
+ -67.99778,
+ -10.75991
],
[
- 10.9051793,
- 55.3953852
+ -68.52286,
+ -11.20807
],
[
- 11.0613726,
- 55.3812841
+ -69.88988,
+ -11.02776
],
[
- 11.0593038,
- 55.1124061
+ -70.30957,
+ -11.1699
],
[
- 11.0458567,
- 55.0318621
+ -70.71896,
+ -11.02003
],
[
- 11.2030844,
- 55.0247474
+ -70.68128,
+ -9.669083
],
[
- 11.2030844,
- 55.117139
+ -71.27536,
+ -10.08971
],
[
- 11.0593038,
- 55.1124061
+ -72.18053,
+ -10.09967
],
[
- 11.0613726,
- 55.3812841
+ -72.41623,
+ -9.587397
],
[
- 11.0789572,
- 55.5712253
+ -73.29207,
+ -9.454149
],
[
- 10.8969041,
- 55.5712253
+ -73.0625,
+ -9.017267
],
[
- 10.9258671,
- 55.6670198
+ -73.61432,
+ -8.40982
],
[
- 10.743814,
- 55.6646861
+ -74.09056,
+ -7.527548
],
[
- 10.7562267,
- 55.7579243
+ -74.03652,
+ -7.27885
],
[
- 10.4417713,
- 55.7579243
+ -73.84718,
+ -7.238285
],
[
- 10.4439274,
- 56.0270388
+ -73.78618,
+ -6.774872
],
[
- 10.4466742,
- 56.116717
+ -73.22362,
+ -6.430106
],
[
- 10.6079695,
- 56.1150259
+ -73.33719,
+ -6.029736
],
[
- 10.6052053,
- 56.0247462
+ -72.93016,
+ -5.038711
],
[
- 10.9258671,
- 56.0201215
+ -71.93973,
+ -4.425027
],
[
- 10.9197132,
- 55.9309388
+ -70.96802,
+ -4.248294
],
[
- 11.0802782,
- 55.92792
+ -70.79598,
+ -4.064931
],
[
- 11.0858066,
- 56.0178284
+ -70.02393,
+ -4.167345
],
[
- 11.7265047,
- 56.005058
+ -69.51025,
+ -1.134089
],
[
- 11.7319981,
- 56.0952142
+ -69.70776,
+ -0.567619
],
[
- 12.0540333,
- 56.0871256
+ -70.13645,
+ -0.226161
],
[
- 12.0608477,
- 56.1762576
+ -70.14083,
+ 0.5844
],
[
- 12.7023469,
- 56.1594405
+ -69.26594,
+ 0.806502
+ ],
+ [
+ -69.34226,
+ 0.968924
+ ],
+ [
+ -69.92481,
+ 1.015705
+ ],
+ [
+ -69.92343,
+ 1.773851
+ ],
+ [
+ -68.38511,
+ 1.82943
+ ],
+ [
+ -68.24848,
+ 2.119808
+ ],
+ [
+ -67.94571,
+ 1.948424
+ ],
+ [
+ -67.37696,
+ 2.327468
+ ],
+ [
+ -67.05751,
+ 1.858336
+ ],
+ [
+ -67.00579,
+ 1.291603
+ ],
+ [
+ -66.79967,
+ 1.314684
+ ],
+ [
+ -66.28683,
+ 0.857709
+ ],
+ [
+ -65.67671,
+ 1.111146
+ ],
+ [
+ -65.42494,
+ 0.966549
+ ],
+ [
+ -65.15671,
+ 1.24203
+ ],
+ [
+ -64.27483,
+ 1.601591
+ ],
+ [
+ -64.0486,
+ 2.065137
+ ],
+ [
+ -63.47236,
+ 2.279358
+ ],
+ [
+ -64.13446,
+ 2.433909
+ ],
+ [
+ -64.10005,
+ 2.723778
+ ],
+ [
+ -64.32628,
+ 3.118275
+ ],
+ [
+ -64.28142,
+ 3.541983
+ ],
+ [
+ -64.88451,
+ 4.117671
+ ],
+ [
+ -64.88064,
+ 4.342461
+ ],
+ [
+ -64.13653,
+ 4.223152
+ ],
+ [
+ -63.95465,
+ 4.021316
],
[
- 12.6611131,
- 55.7114318
+ -63.17706,
+ 4.048301
],
[
- 12.9792318,
- 55.7014026
+ -62.96093,
+ 3.763658
],
[
- 12.9612912,
- 55.5217294
+ -62.82024,
+ 4.106019
],
[
- 12.3268659,
- 55.5412096
+ -62.49922,
+ 4.270815
],
[
- 12.3206071,
- 55.4513655
+ -61.91181,
+ 4.26284
],
[
- 12.4778226,
- 55.447067
+ -61.35393,
+ 4.630097
],
[
- 12.4702432,
- 55.3570479
+ -61.04904,
+ 4.623115
],
[
- 12.6269738,
- 55.3523837
+ -60.70452,
+ 4.969851
],
[
- 12.6200898,
- 55.2632576
+ -60.78709,
+ 5.296764
],
[
- 12.4627339,
- 55.26722
+ -60.22457,
+ 5.371207
],
[
- 12.4552949,
- 55.1778223
+ -59.89857,
+ 5.107541
],
[
- 12.2987046,
- 55.1822303
+ -59.97549,
+ 4.603025
],
[
- 12.2897344,
- 55.0923641
+ -59.59676,
+ 4.439875
],
[
- 12.6048608,
- 55.0832904
+ -59.41942,
+ 3.96994
],
[
- 12.5872011,
- 54.9036285
+ -59.71017,
+ 3.542008
],
[
- 12.2766618,
- 54.9119031
+ -59.88955,
+ 2.72301
],
[
- 12.2610181,
- 54.7331602
+ -59.63006,
+ 2.316332
],
[
- 12.1070691,
- 54.7378161
+ -59.63382,
+ 1.966581
],
[
- 12.0858621,
- 54.4681655
+ -59.18812,
+ 1.478079
],
[
- 11.7794953,
- 54.4753579
+ -58.80545,
+ 1.320732
],
[
- 11.7837381,
- 54.5654783
+ -58.35933,
+ 1.689932
],
[
- 11.1658525,
- 54.5782155
+ -57.6,
+ 1.803907
],
[
- 11.1706443,
- 54.6686508
+ -57.39854,
+ 2.065119
],
[
- 10.8617173,
- 54.6733956
+ -57.12392,
+ 2.128758
],
[
- 10.8651245,
- 54.7634667
+ -56.02925,
+ 1.949445
],
[
- 10.7713646,
- 54.7643888
+ -56.23884,
+ 2.263348
],
[
- 10.7707276,
- 54.7372807
+ -55.98195,
+ 2.628657
],
[
- 10.7551428,
- 54.7375776
+ -55.64816,
+ 2.519953
],
[
- 10.7544039,
- 54.7195666
+ -54.93958,
+ 2.682515
],
[
- 10.7389074,
- 54.7197588
+ -54.24988,
+ 2.25056
],
[
- 10.7384368,
- 54.7108482
+ -53.73937,
+ 2.473731
],
[
- 10.7074486,
- 54.7113045
+ -52.98578,
+ 2.280494
],
[
- 10.7041094,
- 54.6756741
+ -52.65712,
+ 2.564069
],
[
- 10.5510973,
- 54.6781698
+ -52.41739,
+ 3.22121
],
[
- 10.5547184,
- 54.7670245
+ -51.73983,
+ 4.119158
],
[
- 10.2423994,
- 54.7705935
+ -51.7246,
+ 4.556867
],
[
- 10.2459845,
- 54.8604673
+ -51.0112,
+ 5.522895
],
[
- 10.0902268,
- 54.8622134
+ -43.48209,
+ 5.335832
],
[
- 10.0873731,
- 54.7723851
+ -29.3325,
+ 2.335959
+ ]
+ ]
+ ]
+ },
+ {
+ "name": "IBGE Mapa de Setores Urbanos",
+ "type": "tms",
+ "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/tmpsantos.hgda0m6h/{zoom}/{x}/{y}.png",
+ "scaleExtent": [
+ 0,
+ 19
+ ],
+ "polygon": [
+ [
+ [
+ -29.3325,
+ 2.335959
],
[
- 9.1555798,
- 54.7769557
+ -28.72472,
+ 2.031551
],
[
- 9.1562752,
- 54.8675369
+ -27.76041,
+ -8.937033
],
[
- 8.5321973,
- 54.8663765
+ -27.67249,
+ -22.20839
],
[
- 8.531432,
- 54.95516
- ]
- ],
- [
+ -51.11495,
+ -35.46552
+ ],
[
- 11.4577738,
- 56.819554
+ -53.39394,
+ -33.85064
],
[
- 11.7849181,
- 56.8127385
+ -53.62553,
+ -33.72493
],
[
- 11.7716715,
- 56.6332796
+ -53.62503,
+ -33.15428
],
[
- 11.4459621,
- 56.6401087
- ]
- ],
- [
+ -53.24498,
+ -32.73392
+ ],
[
- 11.3274736,
- 57.3612962
+ -53.65747,
+ -32.51873
],
[
- 11.3161808,
- 57.1818004
+ -53.8329,
+ -32.16592
],
[
- 11.1508692,
- 57.1847276
+ -54.64174,
+ -31.55507
],
[
- 11.1456628,
- 57.094962
+ -55.29638,
+ -31.3429
],
[
- 10.8157703,
- 57.1001693
+ -55.57371,
+ -30.99691
],
[
- 10.8290599,
- 57.3695272
- ]
- ],
- [
+ -56.06384,
+ -31.16749
+ ],
[
- 11.5843266,
- 56.2777928
+ -56.10468,
+ -30.86436
],
[
- 11.5782882,
- 56.1880397
+ -56.86862,
+ -30.20752
],
[
- 11.7392309,
- 56.1845765
+ -57.39671,
+ -30.40464
],
[
- 11.7456428,
- 56.2743186
- ]
- ],
- [
+ -57.74384,
+ -30.22142
+ ],
[
- 14.6825922,
- 55.3639405
+ -55.83724,
+ -28.16598
],
[
- 14.8395247,
- 55.3565231
+ -54.86969,
+ -27.44994
],
[
- 14.8263755,
- 55.2671261
+ -53.9016,
+ -27.02998
],
[
- 15.1393406,
- 55.2517359
+ -53.74972,
+ -26.25781
],
[
- 15.1532015,
- 55.3410836
+ -53.97158,
+ -25.74513
],
[
- 15.309925,
- 55.3330556
+ -54.44723,
+ -25.79609
],
[
- 15.295719,
- 55.2437356
+ -54.67802,
+ -25.64668
],
[
- 15.1393406,
- 55.2517359
+ -54.36097,
+ -24.35145
],
[
- 15.1255631,
- 55.1623802
+ -54.41679,
+ -24.06527
],
[
- 15.2815819,
- 55.1544167
+ -54.64355,
+ -23.94107
],
[
- 15.2535578,
- 54.9757646
+ -55.22163,
+ -24.11355
],
[
- 14.6317464,
- 55.0062496
- ]
- ]
- ],
- "terms_url": "http://download.kortforsyningen.dk/content/vilkaar-og-betingelser",
- "terms_text": "Geodatastyrelsen og Danske Kommuner"
- },
- {
- "name": "Geoimage.at MaxRes",
- "type": "tms",
- "template": "http://geoimage.openstreetmap.at/4d80de696cd562a63ce463a58a61488d/{zoom}/{x}/{y}.jpg",
- "polygon": [
- [
+ -55.49138,
+ -24.02797
+ ],
[
- 16.5073284,
- 46.9929304
+ -55.71734,
+ -22.68488
],
[
- 16.283417,
- 46.9929304
+ -55.90555,
+ -22.39886
],
[
- 16.135839,
- 46.8713046
+ -56.45255,
+ -22.21731
],
[
- 15.9831722,
- 46.8190947
+ -56.8256,
+ -22.4002
],
[
- 16.0493278,
- 46.655175
+ -57.34109,
+ -22.34351
],
[
- 15.8610387,
- 46.7180116
+ -58.08472,
+ -22.13075
],
[
- 15.7592608,
- 46.6900933
+ -57.95766,
+ -20.99818
],
[
- 15.5607938,
- 46.6796202
+ -58.26551,
+ -20.24147
],
[
- 15.5760605,
- 46.6342132
+ -58.03577,
+ -19.95871
],
[
- 15.4793715,
- 46.6027553
+ -58.23083,
+ -19.75211
],
[
- 15.4335715,
- 46.6516819
+ -57.64739,
+ -18.19828
],
[
- 15.2249267,
- 46.6342132
+ -57.89356,
+ -17.57377
],
[
- 15.0468154,
- 46.6481886
+ -58.16997,
+ -17.53519
],
[
- 14.9908376,
- 46.5887681
+ -58.48825,
+ -17.21961
],
[
- 14.9603042,
- 46.6237293
+ -58.57691,
+ -16.81466
],
[
- 14.8534374,
- 46.6027553
+ -58.45563,
+ -16.42158
],
[
- 14.8330818,
- 46.5012666
+ -60.2541,
+ -16.32571
],
[
- 14.7516595,
- 46.4977636
+ -60.33481,
+ -15.51483
],
[
- 14.6804149,
- 46.4381781
+ -60.67423,
+ -15.1122
],
[
- 14.6142593,
- 46.4381781
+ -60.34999,
+ -14.99707
],
[
- 14.578637,
- 46.3785275
+ -60.63603,
+ -13.84119
],
[
- 14.4412369,
- 46.4311638
+ -61.07283,
+ -13.62569
],
[
- 14.1613476,
- 46.4276563
+ -61.9025,
+ -13.62647
],
[
- 14.1257253,
- 46.4767409
+ -62.21395,
+ -13.25048
],
[
- 14.0188585,
- 46.4767409
+ -62.80185,
+ -13.10905
],
[
- 13.9119917,
- 46.5257813
+ -63.17194,
+ -12.76568
],
[
- 13.8254805,
- 46.5047694
+ -63.74229,
+ -12.54071
],
[
- 13.4438134,
- 46.560783
+ -64.32845,
+ -12.59578
],
[
- 13.3064132,
- 46.5502848
+ -65.10261,
+ -12.0682
],
[
- 13.1283019,
- 46.5887681
+ -65.45781,
+ -11.27865
],
[
- 12.8433237,
- 46.6132433
+ -65.41641,
+ -9.838943
],
[
- 12.7262791,
- 46.6412014
+ -66.52331,
+ -9.985873
],
[
- 12.5125455,
- 46.6656529
+ -67.66452,
+ -10.80093
],
[
- 12.3598787,
- 46.7040543
+ -67.99778,
+ -10.75991
],
[
- 12.3649676,
- 46.7703197
+ -68.52286,
+ -11.20807
],
[
- 12.2886341,
- 46.7772902
+ -69.88988,
+ -11.02776
],
[
- 12.2733674,
- 46.8852187
+ -70.30957,
+ -11.1699
+ ],
+ [
+ -70.71896,
+ -11.02003
],
[
- 12.2072118,
- 46.8747835
+ -70.68128,
+ -9.669083
],
[
- 12.1308784,
- 46.9026062
+ -71.27536,
+ -10.08971
],
[
- 12.1156117,
- 46.9998721
+ -72.18053,
+ -10.09967
],
[
- 12.2530119,
- 47.0657733
+ -72.41623,
+ -9.587397
],
[
- 12.2123007,
- 47.0934969
+ -73.29207,
+ -9.454149
],
[
- 11.9833004,
- 47.0449712
+ -73.0625,
+ -9.017267
],
[
- 11.7339445,
- 46.9616816
+ -73.61432,
+ -8.40982
],
[
- 11.6321666,
- 47.010283
+ -74.09056,
+ -7.527548
],
[
- 11.5405665,
- 46.9755722
+ -74.03652,
+ -7.27885
],
[
- 11.4998553,
- 47.0068129
+ -73.84718,
+ -7.238285
],
[
- 11.418433,
- 46.9651546
+ -73.78618,
+ -6.774872
],
[
- 11.2555884,
- 46.9755722
+ -73.22362,
+ -6.430106
],
[
- 11.1130993,
- 46.913036
+ -73.33719,
+ -6.029736
],
[
- 11.0418548,
- 46.7633482
+ -72.93016,
+ -5.038711
],
[
- 10.8891879,
- 46.7598621
+ -71.93973,
+ -4.425027
],
[
- 10.7416099,
- 46.7842599
+ -70.96802,
+ -4.248294
],
[
- 10.7059877,
- 46.8643462
+ -70.79598,
+ -4.064931
],
[
- 10.5787653,
- 46.8399847
+ -70.02393,
+ -4.167345
],
[
- 10.4566318,
- 46.8504267
+ -69.51025,
+ -1.134089
],
[
- 10.4769874,
- 46.9269392
+ -69.70776,
+ -0.567619
],
[
- 10.3853873,
- 46.9894592
+ -70.13645,
+ -0.226161
],
[
- 10.2327204,
- 46.8643462
+ -70.14083,
+ 0.5844
],
[
- 10.1207647,
- 46.8330223
+ -69.26594,
+ 0.806502
],
[
- 9.8663199,
- 46.9408389
+ -69.34226,
+ 0.968924
],
[
- 9.9019422,
- 47.0033426
+ -69.92481,
+ 1.015705
],
[
- 9.6831197,
- 47.0588402
+ -69.92343,
+ 1.773851
],
[
- 9.6118752,
- 47.0380354
+ -68.38511,
+ 1.82943
],
[
- 9.6322307,
- 47.128131
+ -68.24848,
+ 2.119808
],
[
- 9.5813418,
- 47.1662025
+ -67.94571,
+ 1.948424
],
[
- 9.5406306,
- 47.2664422
+ -67.37696,
+ 2.327468
],
[
- 9.6067863,
- 47.3492559
+ -67.05751,
+ 1.858336
],
[
- 9.6729419,
- 47.369939
+ -67.00579,
+ 1.291603
],
[
- 9.6424085,
- 47.4457079
+ -66.79967,
+ 1.314684
],
[
- 9.5660751,
- 47.4801122
+ -66.28683,
+ 0.857709
],
[
- 9.7136531,
- 47.5282405
+ -65.67671,
+ 1.111146
],
[
- 9.7848976,
- 47.5969187
+ -65.42494,
+ 0.966549
],
[
- 9.8357866,
- 47.5454185
+ -65.15671,
+ 1.24203
],
[
- 9.9477423,
- 47.538548
+ -64.27483,
+ 1.601591
],
[
- 10.0902313,
- 47.4491493
+ -64.0486,
+ 2.065137
],
[
- 10.1105869,
- 47.3664924
+ -63.47236,
+ 2.279358
],
[
- 10.2428982,
- 47.3871688
+ -64.13446,
+ 2.433909
],
[
- 10.1869203,
- 47.2698953
+ -64.10005,
+ 2.723778
],
[
- 10.3243205,
- 47.2975125
+ -64.32628,
+ 3.118275
],
[
- 10.4820763,
- 47.4491493
+ -64.28142,
+ 3.541983
],
[
- 10.4311873,
- 47.4869904
+ -64.88451,
+ 4.117671
],
[
- 10.4413651,
- 47.5900549
+ -64.88064,
+ 4.342461
],
[
- 10.4871652,
- 47.5522881
+ -64.13653,
+ 4.223152
],
[
- 10.5482319,
- 47.5351124
+ -63.95465,
+ 4.021316
],
[
- 10.5991209,
- 47.5660246
+ -63.17706,
+ 4.048301
],
[
- 10.7568766,
- 47.5316766
+ -62.96093,
+ 3.763658
],
[
- 10.8891879,
- 47.5454185
+ -62.82024,
+ 4.106019
],
[
- 10.9400769,
- 47.4869904
+ -62.49922,
+ 4.270815
],
[
- 10.9960547,
- 47.3906141
+ -61.91181,
+ 4.26284
],
[
- 11.2352328,
- 47.4422662
+ -61.35393,
+ 4.630097
],
[
- 11.2810328,
- 47.3975039
+ -61.04904,
+ 4.623115
],
[
- 11.4235219,
- 47.5144941
+ -60.70452,
+ 4.969851
],
[
- 11.5761888,
- 47.5076195
+ -60.78709,
+ 5.296764
],
[
- 11.6067221,
- 47.5900549
+ -60.22457,
+ 5.371207
],
[
- 11.8357224,
- 47.5866227
+ -59.89857,
+ 5.107541
],
[
- 12.003656,
- 47.6243647
+ -59.97549,
+ 4.603025
],
[
- 12.2072118,
- 47.6037815
+ -59.59676,
+ 4.439875
],
[
- 12.1614117,
- 47.6963421
+ -59.41942,
+ 3.96994
],
[
- 12.2581008,
- 47.7442718
+ -59.71017,
+ 3.542008
],
[
- 12.2530119,
- 47.6792136
+ -59.88955,
+ 2.72301
],
[
- 12.4311232,
- 47.7100408
+ -59.63006,
+ 2.316332
],
[
- 12.4921899,
- 47.631224
+ -59.63382,
+ 1.966581
],
[
- 12.5685234,
- 47.6277944
+ -59.18812,
+ 1.478079
],
[
- 12.6295901,
- 47.6894913
+ -58.80545,
+ 1.320732
],
[
- 12.7720792,
- 47.6689338
+ -58.35933,
+ 1.689932
],
[
- 12.8331459,
- 47.5419833
+ -57.6,
+ 1.803907
],
[
- 12.975635,
- 47.4732332
+ -57.39854,
+ 2.065119
],
[
- 13.0417906,
- 47.4938677
+ -57.12392,
+ 2.128758
],
[
- 13.0367017,
- 47.5557226
+ -56.02925,
+ 1.949445
],
[
- 13.0977685,
- 47.6415112
+ -56.23884,
+ 2.263348
],
[
- 13.0316128,
- 47.7100408
+ -55.98195,
+ 2.628657
],
[
- 12.9043905,
- 47.7203125
+ -55.64816,
+ 2.519953
],
[
- 13.0061684,
- 47.84683
+ -54.93958,
+ 2.682515
],
[
- 12.9451016,
- 47.9355501
+ -54.24988,
+ 2.25056
],
[
- 12.8636793,
- 47.9594103
+ -53.73937,
+ 2.473731
],
[
- 12.8636793,
- 48.0036929
+ -52.98578,
+ 2.280494
],
[
- 12.7517236,
- 48.0989418
+ -52.65712,
+ 2.564069
],
[
- 12.8738571,
- 48.2109733
+ -52.41739,
+ 3.22121
],
[
- 12.9603683,
- 48.2109733
+ -51.73983,
+ 4.119158
],
[
- 13.0417906,
- 48.2652035
+ -51.7246,
+ 4.556867
],
[
- 13.1842797,
- 48.2990682
+ -51.0112,
+ 5.522895
],
[
- 13.2606131,
- 48.2922971
+ -43.48209,
+ 5.335832
],
[
- 13.3980133,
- 48.3565867
+ -29.3325,
+ 2.335959
+ ]
+ ]
+ ]
+ },
+ {
+ "name": "Imagerie Drone (Haiti)",
+ "type": "tms",
+ "template": "http://wms.openstreetmap.fr/tms/1.0.0/iomhaiti/{zoom}/{x}/{y}",
+ "polygon": [
+ [
+ [
+ -72.1547401,
+ 19.6878969
],
[
- 13.4438134,
- 48.417418
+ -72.162234,
+ 19.689011
],
[
- 13.4387245,
- 48.5523383
+ -72.164995,
+ 19.6932445
],
[
- 13.509969,
- 48.5860123
+ -72.1657838,
+ 19.6979977
],
[
- 13.6117469,
- 48.5725454
+ -72.161603,
+ 19.7035677
],
[
- 13.7287915,
- 48.5118999
+ -72.1487449,
+ 19.7028993
],
[
- 13.7847694,
- 48.5725454
+ -72.1477194,
+ 19.7026765
],
[
- 13.8203916,
- 48.6263915
+ -72.1485082,
+ 19.7001514
],
[
- 13.7949471,
- 48.7171267
+ -72.1436963,
+ 19.7011169
],
[
- 13.850925,
- 48.7741724
+ -72.1410143,
+ 19.7000029
],
[
- 14.0595697,
- 48.6633774
+ -72.139476,
+ 19.6973664
],
[
- 14.0137696,
- 48.6331182
+ -72.1382533,
+ 19.6927617
],
[
- 14.0748364,
- 48.5927444
+ -72.1386872,
+ 19.6923161
],
[
- 14.2173255,
- 48.5961101
+ -72.1380561,
+ 19.6896423
],
[
- 14.3649034,
- 48.5489696
+ -72.1385294,
+ 19.6894938
],
[
- 14.4666813,
- 48.6499311
+ -72.1388055,
+ 19.6901251
],
[
- 14.5582815,
- 48.5961101
+ -72.1388844,
+ 19.6876741
],
[
- 14.5989926,
- 48.6263915
+ -72.1378195,
+ 19.6872656
],
[
- 14.7211261,
- 48.5759124
+ -72.13778,
+ 19.6850003
],
[
- 14.7211261,
- 48.6868997
+ -72.1369517,
+ 19.6855945
],
[
- 14.822904,
- 48.7271983
+ -72.136794,
+ 19.6840719
],
[
- 14.8178151,
- 48.777526
+ -72.135729,
+ 19.6835148
],
[
- 14.9647227,
- 48.7851754
+ -72.1355713,
+ 19.6740817
],
[
- 14.9893637,
- 49.0126611
+ -72.1366362,
+ 19.6708133
],
[
- 15.1485933,
- 48.9950306
+ -72.1487843,
+ 19.6710733
],
[
- 15.1943934,
- 48.9315502
+ -72.1534779,
+ 19.6763843
],
[
- 15.3063491,
- 48.9850128
+ -72.1530835,
+ 19.6769414
],
[
- 15.3928603,
- 48.9850128
+ -72.1533251,
+ 19.6769768
],
[
- 15.4844604,
- 48.9282069
+ -72.1532807,
+ 19.6796525
],
[
- 15.749083,
- 48.8545973
+ -72.1523834,
+ 19.6797175
],
[
- 15.8406831,
- 48.8880697
+ -72.1522749,
+ 19.6803488
],
[
- 16.0086166,
- 48.7808794
+ -72.1519101,
+ 19.6803395
],
[
- 16.2070835,
- 48.7339115
+ -72.1518608,
+ 19.6805067
],
[
- 16.3953727,
- 48.7372678
+ -72.1528173,
+ 19.6806552
],
[
- 16.4920617,
- 48.8110498
+ -72.1522299,
+ 19.6833011
],
[
- 16.6905286,
- 48.7741724
+ -72.1507801,
+ 19.6831499
],
[
- 16.7057953,
- 48.7339115
+ -72.1504457,
+ 19.6847862
],
[
- 16.8991733,
- 48.713769
+ -72.1508591,
+ 19.6843492
],
[
- 16.9755067,
- 48.515271
+ -72.1530087,
+ 19.6849898
],
[
- 16.8482844,
- 48.4511817
+ -72.1546258,
+ 19.6854354
],
[
- 16.8533733,
- 48.3464411
+ -72.1543103,
+ 19.6870694
],
[
- 16.9551512,
- 48.2516513
+ -72.1547244,
+ 19.6868466
],
[
- 16.9907734,
- 48.1498955
+ -72.1548501,
+ 19.6877564
],
[
- 17.0925513,
- 48.1397088
+ -72.1545814,
+ 19.6877982
+ ]
+ ],
+ [
+ [
+ -72.1310601,
+ 19.6718929
],
[
- 17.0823736,
- 48.0241182
+ -72.1259842,
+ 19.6772765
],
[
- 17.1739737,
- 48.0207146
+ -72.1255379,
+ 19.6776179
],
[
- 17.0823736,
- 47.8741447
+ -72.1216891,
+ 19.6776442
],
[
- 16.9856845,
- 47.8673174
+ -72.1149677,
+ 19.672602
],
[
- 17.0823736,
- 47.8092489
+ -72.1152745,
+ 19.6687152
],
[
- 17.0925513,
- 47.7031919
+ -72.1198205,
+ 19.6627535
],
[
- 16.7414176,
- 47.6792136
+ -72.1227768,
+ 19.6625696
],
[
- 16.7057953,
- 47.7511153
+ -72.1248965,
+ 19.662701
],
[
- 16.5378617,
- 47.7545368
+ -72.1285779,
+ 19.6645394
],
[
- 16.5480395,
- 47.7066164
+ -72.1308091,
+ 19.6661677
],
[
- 16.4208172,
- 47.6689338
+ -72.1316737,
+ 19.668794
],
[
- 16.573484,
- 47.6175045
+ -72.1315621,
+ 19.671
+ ]
+ ],
+ [
+ [
+ -71.845795,
+ 19.6709758
],
[
- 16.670173,
- 47.631224
+ -71.8429354,
+ 19.6759525
],
[
- 16.7108842,
- 47.538548
+ -71.8410027,
+ 19.6759525
],
[
- 16.6599952,
- 47.4491493
+ -71.8380249,
+ 19.6755254
],
[
- 16.5429506,
- 47.3940591
+ -71.8378671,
+ 19.6745041
],
[
- 16.4615283,
- 47.3940591
+ -71.8390504,
+ 19.6743927
],
[
- 16.4920617,
- 47.276801
+ -71.8390109,
+ 19.6741141
],
[
- 16.425906,
- 47.1973317
+ -71.8398392,
+ 19.673947
],
[
- 16.4717061,
- 47.1489007
+ -71.8389123,
+ 19.6736127
],
[
- 16.5480395,
- 47.1489007
+ -71.8380249,
+ 19.67209
],
[
- 16.476795,
- 47.0796369
+ -71.8380052,
+ 19.6726285
],
[
- 16.527684,
- 47.0588402
- ]
- ]
- ],
- "terms_text": "geoimage.at",
- "id": "geoimage.at"
- },
- {
- "name": "Geoportal.gov.pl (Orthophotomap)",
- "type": "tms",
- "template": "http://wms.misek.pl/geoportal.orto/tms/{zoom}/{x}/{y}",
- "scaleExtent": [
- 6,
- 24
- ],
- "polygon": [
- [
+ -71.8376699,
+ 19.6727214
+ ],
[
- 15.9751041,
- 54.3709213
+ -71.8376305,
+ 19.672545
],
[
- 16.311164,
- 54.5561775
+ -71.8354414,
+ 19.6732135
],
[
- 17.1391878,
- 54.7845723
+ -71.835333,
+ 19.6729999
],
[
- 18.3448458,
- 54.9022727
+ -71.8331242,
+ 19.6734642
],
[
- 19.6613689,
- 54.4737213
+ -71.8326706,
+ 19.6716815
],
[
- 20.2815206,
- 54.4213456
+ -71.8321579,
+ 19.67209
],
[
- 21.4663914,
- 54.3406369
+ -71.8307183,
+ 19.6694902
],
[
- 22.7759855,
- 54.3769755
+ -71.8306009,
+ 19.6697594
],
[
- 22.8625989,
- 54.4233613
+ -71.8302174,
+ 19.6698907
],
[
- 23.2956657,
- 54.2678633
+ -71.8291833,
+ 19.6672095
],
[
- 23.5347186,
- 54.0955258
+ -71.8290749,
+ 19.6672095
],
[
- 23.5208604,
- 53.9775182
+ -71.8289122,
+ 19.6667916
],
[
- 23.7183389,
- 53.4629603
+ -71.8289516,
+ 19.6666199
],
[
- 23.9296755,
- 53.1856735
+ -71.8288333,
+ 19.6663506
],
[
- 23.9296755,
- 52.6887269
+ -71.8285572,
+ 19.6664759
],
[
- 23.732197,
- 52.6067497
+ -71.8288678,
+ 19.6672466
],
[
- 23.5658994,
- 52.5878101
+ -71.8287593,
+ 19.6674138
],
[
- 23.2090523,
- 52.3302642
+ -71.8277979,
+ 19.6678177
],
[
- 23.1951942,
- 52.2370089
+ -71.8277112,
+ 19.6678586
],
[
- 23.5035377,
- 52.1860596
+ -71.8278263,
+ 19.6679637
],
[
- 23.6906226,
- 52.0030113
+ -71.8271831,
+ 19.6681212
],
[
- 23.5970802,
- 51.739903
+ -71.8271761,
+ 19.6680917
],
[
- 23.6629063,
- 51.3888562
+ -71.8264405,
+ 19.6683921
],
[
- 23.9366046,
- 50.9827781
+ -71.8264074,
+ 19.6683231
],
[
- 24.1687284,
- 50.8604752
+ -71.8261954,
+ 19.6684253
],
[
- 24.0197534,
- 50.8035823
+ -71.8261806,
+ 19.6683556
],
[
- 24.1098313,
- 50.6610467
+ -71.8258946,
+ 19.6684206
],
[
- 24.0578633,
- 50.4188439
+ -71.8258897,
+ 19.6686574
],
[
- 23.6178674,
- 50.3083403
+ -71.8251551,
+ 19.6687549
],
[
- 22.6824431,
- 49.5163532
+ -71.8254509,
+ 19.6691588
],
[
- 22.7378756,
- 49.2094935
+ -71.8229332,
+ 19.6695739
],
[
- 22.9041733,
- 49.0780441
+ -71.822713,
+ 19.6696658
],
[
- 22.8625989,
- 48.9940062
+ -71.8227688,
+ 19.6697577
],
[
- 22.6096878,
- 49.0371785
+ -71.8201751,
+ 19.6709855
],
[
- 22.0761495,
- 49.2004392
+ -71.8198474,
+ 19.6704537
],
[
- 21.8474902,
- 49.3721872
+ -71.8197985,
+ 19.6706014
],
[
- 21.3763135,
- 49.4488281
+ -71.8194674,
+ 19.6707557
],
[
- 21.1026153,
- 49.3721872
+ -71.8182472,
+ 19.6713433
],
[
- 20.9120659,
- 49.3022043
+ -71.8181426,
+ 19.6711431
],
[
- 20.6452967,
- 49.3902311
+ -71.8175813,
+ 19.6714254
],
[
- 20.1845136,
- 49.3315641
+ -71.816959,
+ 19.6707672
],
[
- 20.1186875,
- 49.2004392
+ -71.8176388,
+ 19.6718965
],
[
- 19.9419962,
- 49.1302123
+ -71.8171403,
+ 19.6720376
],
[
- 19.765305,
- 49.2117568
+ -71.8158225,
+ 19.6718045
],
[
- 19.7479823,
- 49.3992506
+ -71.8138354,
+ 19.6711874
],
[
- 19.6024718,
- 49.4150307
+ -71.8123259,
+ 19.6706982
],
[
- 19.5089294,
- 49.5815389
+ -71.8121759,
+ 19.6704258
],
[
- 19.4292451,
- 49.5905232
+ -71.8124304,
+ 19.6701467
],
[
- 19.2317666,
- 49.4150307
+ -71.8119184,
+ 19.6700141
],
[
- 18.9961783,
- 49.387976
+ -71.8118765,
+ 19.6705828
],
[
- 18.9338167,
- 49.4916048
+ -71.811169,
+ 19.6703483
],
[
- 18.8368097,
- 49.4938552
+ -71.8095938,
+ 19.6698516
],
[
- 18.8021643,
- 49.6623381
+ -71.8077992,
+ 19.6692829
],
[
- 18.6427958,
- 49.7094091
+ -71.8056028,
+ 19.668612
],
[
- 18.521537,
- 49.8994693
+ -71.8051443,
+ 19.6668942
],
[
- 18.0815412,
- 50.0109209
+ -71.8051196,
+ 19.6652322
],
[
- 17.8875272,
- 49.9886512
+ -71.8052315,
+ 19.661979
],
[
- 17.7385522,
- 50.0687739
+ -71.8065603,
+ 19.6523921
],
[
- 17.6068999,
- 50.1709584
+ -71.8073412,
+ 19.6482946
],
[
- 17.7454813,
- 50.2153184
+ -71.8099686,
+ 19.6468292
],
[
- 17.710836,
- 50.3017019
+ -71.8147517,
+ 19.6454502
],
[
- 17.4163505,
- 50.2640668
+ -71.8147726,
+ 19.6455619
],
[
- 16.9486384,
- 50.4453265
+ -71.8150027,
+ 19.6455093
],
[
- 16.8932058,
- 50.4033889
+ -71.8149469,
+ 19.6453846
],
[
- 17.0006064,
- 50.3105529
+ -71.8159928,
+ 19.6450234
],
[
- 17.017929,
- 50.2241854
+ -71.8158882,
+ 19.6448855
],
[
- 16.8135215,
- 50.186489
+ -71.8165854,
+ 19.6446097
],
[
- 16.6402948,
- 50.0976742
+ -71.8190119,
+ 19.643802
],
[
- 16.4324227,
- 50.2862087
+ -71.8211524,
+ 19.643454
],
[
- 16.1968344,
- 50.4276731
+ -71.8221564,
+ 19.6433292
],
[
- 16.4220291,
- 50.5885165
+ -71.8269046,
+ 19.643211
],
[
- 16.3388803,
- 50.6632429
+ -71.8280481,
+ 19.6432241
],
[
- 16.2280152,
- 50.6368824
+ -71.8304466,
+ 19.6440778
],
[
- 16.0547884,
- 50.6127057
+ -71.8306419,
+ 19.6448592
],
[
- 15.5732181,
- 50.7641544
+ -71.8295263,
+ 19.6450365
],
[
- 15.2683391,
- 50.8976368
+ -71.8296064,
+ 19.6456111
],
[
- 15.2440873,
- 50.980597
+ -71.8299411,
+ 19.6455651
],
[
- 15.0292862,
- 51.0133036
+ -71.8303699,
+ 19.6451744
],
[
- 15.0015699,
- 50.8582883
+ -71.830471,
+ 19.6453452
],
[
- 14.8110205,
- 50.8735944
+ -71.8308092,
+ 19.6451974
],
[
- 14.956531,
- 51.0721176
+ -71.8310184,
+ 19.6451088
],
[
- 15.0188926,
- 51.2914636
+ -71.8312519,
+ 19.6458541
],
[
- 14.9392083,
- 51.4601459
+ -71.8311125,
+ 19.6458245
],
[
- 14.7209426,
- 51.5571799
+ -71.831367,
+ 19.6465862
],
[
- 14.7521234,
- 51.6260562
+ -71.8328939,
+ 19.646189
],
[
- 14.5996839,
- 51.8427626
+ -71.8344566,
+ 19.6457062
],
[
- 14.70362,
- 52.0733396
+ -71.8344664,
+ 19.6463052
],
[
- 14.5581095,
- 52.2497371
+ -71.834215,
+ 19.6461938
],
[
- 14.5165351,
- 52.425436
+ -71.8342002,
+ 19.6465513
],
[
- 14.6031485,
- 52.5878101
+ -71.8346702,
+ 19.6463
],
[
- 14.1146491,
- 52.8208272
+ -71.8349118,
+ 19.6463905
],
[
- 14.152759,
- 52.9733951
+ -71.8347984,
+ 19.6462187
],
[
- 14.3502374,
- 53.0734212
+ -71.8354393,
+ 19.6458496
],
[
- 14.4229927,
- 53.2665624
+ -71.8355034,
+ 19.6458032
],
[
- 14.1977979,
- 53.8734759
+ -71.8364747,
+ 19.6461328
],
[
- 14.2220497,
- 53.9958517
- ]
- ]
- ],
- "terms_text": "Copyright © Główny Urząd Geodezji i Kartografii."
- },
- {
- "name": "Imagerie Drone (Haiti)",
- "type": "tms",
- "template": "http://wms.openstreetmap.fr/tms/1.0.0/iomhaiti/{zoom}/{x}/{y}",
- "polygon": [
- [
- [
- -72.1547401,
- 19.6878969
+ -71.8376382,
+ 19.6472658
],
[
- -72.162234,
- 19.689011
+ -71.8379143,
+ 19.647888
],
[
- -72.164995,
- 19.6932445
+ -71.8390483,
+ 19.6508039
],
[
- -72.1657838,
- 19.6979977
+ -71.8456942,
+ 19.6696203
+ ]
+ ],
+ [
+ [
+ -72.098878,
+ 18.54843
],
[
- -72.161603,
- 19.7035677
+ -72.096993,
+ 18.5501994
],
[
- -72.1487449,
- 19.7028993
+ -72.0972888,
+ 18.5503209
],
[
- -72.1477194,
- 19.7026765
+ -72.0968451,
+ 18.5503489
],
[
- -72.1485082,
- 19.7001514
+ -72.0955632,
+ 18.551854
],
[
- -72.1436963,
- 19.7011169
+ -72.0956428,
+ 18.5526742
],
[
- -72.1410143,
- 19.7000029
+ -72.0959914,
+ 18.5533748
],
[
- -72.139476,
- 19.6973664
+ -72.0962145,
+ 18.553203
],
[
- -72.1382533,
- 19.6927617
+ -72.0962842,
+ 18.5535665
],
[
- -72.1386872,
- 19.6923161
+ -72.0964446,
+ 18.5535533
],
[
- -72.1380561,
- 19.6896423
+ -72.0965352,
+ 18.5539764
],
[
- -72.1385294,
- 19.6894938
+ -72.0965056,
+ 18.554173
],
[
- -72.1388055,
- 19.6901251
+ -72.0966085,
+ 18.5541747
],
[
- -72.1388844,
- 19.6876741
+ -72.0965178,
+ 18.5542127
],
[
- -72.1378195,
- 19.6872656
+ -72.0968769,
+ 18.5546588
],
[
- -72.13778,
- 19.6850003
+ -72.0979018,
+ 18.5552141
],
[
- -72.1369517,
- 19.6855945
+ -72.1006211,
+ 18.5555875
],
[
- -72.136794,
- 19.6840719
+ -72.1014926,
+ 18.5556206
],
[
- -72.135729,
- 19.6835148
+ -72.1024339,
+ 18.5555016
],
[
- -72.1355713,
- 19.6740817
+ -72.103417,
+ 18.5543515
],
[
- -72.1366362,
- 19.6708133
+ -72.1034798,
+ 18.5516215
],
[
- -72.1487843,
- 19.6710733
+ -72.1030789,
+ 18.5516149
],
[
- -72.1534779,
- 19.6763843
+ -72.1033752,
+ 18.5515224
],
[
- -72.1530835,
- 19.6769414
+ -72.1035042,
+ 18.5515224
],
[
- -72.1533251,
- 19.6769768
+ -72.1035239,
+ 18.5502417
],
[
- -72.1532807,
- 19.6796525
+ -72.1028701,
+ 18.5503062
],
[
- -72.1523834,
- 19.6797175
+ -72.1029015,
+ 18.55025
],
[
- -72.1522749,
- 19.6803488
+ -72.1028457,
+ 18.5501773
],
[
- -72.1519101,
- 19.6803395
+ -72.1035081,
+ 18.5500252
],
[
- -72.1518608,
- 19.6805067
+ -72.103491,
+ 18.5497396
],
[
- -72.1528173,
- 19.6806552
+ -72.1035181,
+ 18.5497361
],
[
- -72.1522299,
- 19.6833011
+ -72.1035398,
+ 18.5489039
],
[
- -72.1507801,
- 19.6831499
+ -72.1034317,
+ 18.5487056
],
[
- -72.1504457,
- 19.6847862
+ -72.102717,
+ 18.5481437
],
[
- -72.1508591,
- 19.6843492
+ -72.1025601,
+ 18.5481536
],
[
- -72.1530087,
- 19.6849898
+ -72.10229,
+ 18.5482751
],
[
- -72.1546258,
- 19.6854354
+ -72.1022891,
+ 18.5482569
],
[
- -72.1543103,
- 19.6870694
+ -72.1025201,
+ 18.5481396
],
[
- -72.1547244,
- 19.6868466
+ -72.1023388,
+ 18.5481321
],
[
- -72.1548501,
- 19.6877564
+ -72.0999082,
+ 18.5480901
],
[
- -72.1545814,
- 19.6877982
+ -72.09907,
+ 18.5483799
]
],
[
[
- -72.1310601,
- 19.6718929
- ],
- [
- -72.1259842,
- 19.6772765
+ -72.2542503,
+ 18.568262
],
[
- -72.1255379,
- 19.6776179
+ -72.2560252,
+ 18.5717765
],
[
- -72.1216891,
- 19.6776442
+ -72.2557886,
+ 18.5748049
],
[
- -72.1149677,
- 19.672602
+ -72.2535009,
+ 18.5755526
],
[
- -72.1152745,
- 19.6687152
+ -72.2522782,
+ 18.5755526
],
[
- -72.1198205,
- 19.6627535
+ -72.2499906,
+ 18.5740945
],
[
- -72.1227768,
- 19.6625696
+ -72.2473874,
+ 18.5698323
],
[
- -72.1248965,
- 19.662701
+ -72.2460069,
+ 18.566729
],
[
- -72.1285779,
- 19.6645394
+ -72.2458492,
+ 18.5629527
],
[
- -72.1308091,
- 19.6661677
+ -72.2479396,
+ 18.5625414
],
[
- -72.1316737,
- 19.668794
+ -72.2501483,
+ 18.5628031
],
[
- -72.1315621,
- 19.671
+ -72.2519232,
+ 18.5650839
]
],
[
[
- -71.845795,
- 19.6709758
- ],
- [
- -71.8429354,
- 19.6759525
- ],
- [
- -71.8410027,
- 19.6759525
+ -72.303145,
+ 18.5332749
],
[
- -71.8380249,
- 19.6755254
+ -72.3031275,
+ 18.5331799
],
[
- -71.8378671,
- 19.6745041
+ -72.3048311,
+ 18.5311081
],
[
- -71.8390504,
- 19.6743927
+ -72.3097397,
+ 18.5311081
],
[
- -71.8390109,
- 19.6741141
+ -72.3164332,
+ 18.5324302
],
[
- -71.8398392,
- 19.673947
+ -72.3234056,
+ 18.5366083
],
[
- -71.8389123,
- 19.6736127
+ -72.3261388,
+ 18.5387765
],
[
- -71.8380249,
- 19.67209
+ -72.3261946,
+ 18.5426371
],
[
- -71.8380052,
- 19.6726285
+ -72.3170468,
+ 18.5540596
],
[
- -71.8376699,
- 19.6727214
+ -72.3130864,
+ 18.5540596
],
[
- -71.8376305,
- 19.672545
+ -72.2987511,
+ 18.5453342
],
[
- -71.8354414,
- 19.6732135
+ -72.2988627,
+ 18.5407333
],
[
- -71.835333,
- 19.6729999
+ -72.2962969,
+ 18.5404689
],
[
- -71.8331242,
- 19.6734642
+ -72.2954602,
+ 18.5395169
],
[
- -71.8326706,
- 19.6716815
+ -72.2961853,
+ 18.5338582
],
[
- -71.8321579,
- 19.67209
+ -72.2971893,
+ 18.5332235
],
[
- -71.8307183,
- 19.6694902
+ -72.3007034,
+ 18.5332764
],
[
- -71.8306009,
- 19.6697594
+ -72.3022652,
+ 18.5342284
],
[
- -71.8302174,
- 19.6698907
+ -72.3028486,
+ 18.5335189
],
[
- -71.8291833,
- 19.6672095
+ -72.303104,
+ 18.5333361
],
[
- -71.8290749,
- 19.6672095
+ -72.303181,
+ 18.5334007
],
[
- -71.8289122,
- 19.6667916
+ -72.3035793,
+ 18.5335614
],
[
- -71.8289516,
- 19.6666199
+ -72.3030793,
+ 18.5346463
],
[
- -71.8288333,
- 19.6663506
+ -72.303715,
+ 18.5339873
],
[
- -71.8285572,
- 19.6664759
+ -72.3045286,
+ 18.5344052
],
[
- -71.8288678,
- 19.6672466
+ -72.3044015,
+ 18.5345097
],
[
- -71.8287593,
- 19.6674138
+ -72.3062747,
+ 18.5352571
],
[
- -71.8277979,
- 19.6678177
+ -72.3063107,
+ 18.5352741
],
[
- -71.8277112,
- 19.6678586
+ -72.3061219,
+ 18.5357628
],
[
- -71.8278263,
- 19.6679637
+ -72.3061219,
+ 18.5358196
],
[
- -71.8271831,
- 19.6681212
+ -72.30637,
+ 18.5358928
],
[
- -71.8271761,
- 19.6680917
+ -72.3062726,
+ 18.5354869
],
[
- -71.8264405,
- 19.6683921
+ -72.3066688,
+ 18.5350891
],
[
- -71.8264074,
- 19.6683231
+ -72.3061963,
+ 18.5349706
],
[
- -71.8261954,
- 19.6684253
+ -72.3058869,
+ 18.5349385
],
[
- -71.8261806,
- 19.6683556
+ -72.3055373,
+ 18.5346833
],
[
- -71.8258946,
- 19.6684206
+ -72.3054864,
+ 18.534613
],
[
- -71.8258897,
- 19.6686574
+ -72.3055585,
+ 18.5345065
],
[
- -71.8251551,
- 19.6687549
+ -72.3046749,
+ 18.5342293
],
[
- -71.8254509,
- 19.6691588
+ -72.3047617,
+ 18.5338817
],
[
- -71.8229332,
- 19.6695739
+ -72.3043252,
+ 18.5337511
],
[
- -71.822713,
- 19.6696658
- ],
+ -72.3042595,
+ 18.5336346
+ ]
+ ],
+ [
[
- -71.8227688,
- 19.6697577
+ -72.2981405,
+ 18.477502
],
[
- -71.8201751,
- 19.6709855
+ -72.2935652,
+ 18.4948587
],
[
- -71.8198474,
- 19.6704537
+ -72.2922242,
+ 18.4964297
],
[
- -71.8197985,
- 19.6706014
+ -72.2931708,
+ 18.4972526
],
[
- -71.8194674,
- 19.6707557
+ -72.2892266,
+ 18.5057058
],
[
- -71.8182472,
- 19.6713433
+ -72.2878067,
+ 18.5080996
],
[
- -71.8181426,
- 19.6711431
+ -72.2850458,
+ 18.5119893
],
[
- -71.8175813,
- 19.6714254
+ -72.2840203,
+ 18.5113161
],
[
- -71.816959,
- 19.6707672
+ -72.2808649,
+ 18.515879
],
[
- -71.8176388,
- 19.6718965
+ -72.2773151,
+ 18.5175994
],
[
- -71.8171403,
- 19.6720376
+ -72.2723454,
+ 18.5175246
],
[
- -71.8158225,
- 19.6718045
+ -72.2662714,
+ 18.5144578
],
[
- -71.8138354,
- 19.6711874
+ -72.2665869,
+ 18.5066783
],
[
- -71.8123259,
- 19.6706982
+ -72.2692643,
+ 18.5046154
],
[
- -71.8121759,
- 19.6704258
+ -72.2661965,
+ 18.5029756
],
[
- -71.8124304,
- 19.6701467
+ -72.2688181,
+ 18.4965222
],
[
- -71.8119184,
- 19.6700141
+ -72.2691528,
+ 18.4959403
],
[
- -71.8118765,
- 19.6705828
+ -72.2702684,
+ 18.4961519
],
[
- -71.811169,
- 19.6703483
+ -72.2702684,
+ 18.4955964
],
[
- -71.8095938,
- 19.6698516
+ -72.2690691,
+ 18.49557
],
[
- -71.8077992,
- 19.6692829
+ -72.2692922,
+ 18.4937714
],
[
- -71.8056028,
- 19.668612
+ -72.2736988,
+ 18.4859951
],
[
- -71.8051443,
- 19.6668942
+ -72.2746749,
+ 18.4850429
],
[
- -71.8051196,
- 19.6652322
+ -72.2751769,
+ 18.483403
],
[
- -71.8052315,
- 19.661979
+ -72.2765435,
+ 18.4813398
],
[
- -71.8065603,
- 19.6523921
+ -72.2773523,
+ 18.4814985
],
[
- -71.8073412,
- 19.6482946
+ -72.2783006,
+ 18.4809694
],
[
- -71.8099686,
- 19.6468292
+ -72.2778544,
+ 18.4807049
],
[
- -71.8147517,
- 19.6454502
+ -72.2771013,
+ 18.480123
],
[
- -71.8147726,
- 19.6455619
+ -72.2789978,
+ 18.4775836
],
[
- -71.8150027,
- 19.6455093
+ -72.279723,
+ 18.4772927
],
[
- -71.8149469,
- 19.6453846
+ -72.2806433,
+ 18.4776365
],
[
- -71.8159928,
- 19.6450234
+ -72.2813685,
+ 18.4771604
],
[
- -71.8158882,
- 19.6448855
+ -72.2808386,
+ 18.4769752
],
[
- -71.8165854,
- 19.6446097
+ -72.2812848,
+ 18.4758378
],
[
- -71.8190119,
- 19.643802
+ -72.2823167,
+ 18.4751765
],
[
- -71.8211524,
- 19.643454
+ -72.2851615,
+ 18.4750971
],
[
- -71.8221564,
- 19.6433292
+ -72.2849941,
+ 18.4763668
],
[
- -71.8269046,
- 19.643211
+ -72.2854404,
+ 18.4769752
],
[
- -71.8280481,
- 19.6432241
+ -72.286277,
+ 18.4756262
],
[
- -71.8304466,
- 19.6440778
+ -72.2869325,
+ 18.4754675
],
[
- -71.8306419,
- 19.6448592
+ -72.2865978,
+ 18.4751897
],
[
- -71.8295263,
- 19.6450365
+ -72.2865978,
+ 18.4750046
],
[
- -71.8296064,
- 19.6456111
+ -72.2909765,
+ 18.4747268
],
[
- -71.8299411,
- 19.6455651
+ -72.2946579,
+ 18.4749384
],
[
- -71.8303699,
- 19.6451744
+ -72.2973911,
+ 18.476843
+ ]
+ ],
+ [
+ [
+ -72.3466657,
+ 18.5222375
],
[
- -71.830471,
- 19.6453452
+ -72.346833,
+ 18.5244325
],
[
- -71.8308092,
- 19.6451974
+ -72.3475303,
+ 18.5277645
],
[
- -71.8310184,
- 19.6451088
+ -72.3455501,
+ 18.5291131
],
[
- -71.8312519,
- 19.6458541
+ -72.3403069,
+ 18.5292189
],
[
- -71.8311125,
- 19.6458245
+ -72.3383267,
+ 18.5280289
],
[
- -71.831367,
- 19.6465862
+ -72.3369043,
+ 18.530118
],
[
- -71.8328939,
- 19.646189
+ -72.3338086,
+ 18.5296684
],
[
- -71.8344566,
- 19.6457062
+ -72.3289279,
+ 18.5270769
],
[
- -71.8344664,
- 19.6463052
+ -72.328649,
+ 18.5253316
],
[
- -71.834215,
- 19.6461938
+ -72.3292068,
+ 18.5232689
],
[
- -71.8342002,
- 19.6465513
+ -72.330406,
+ 18.5220524
],
[
- -71.8346702,
- 19.6463
+ -72.3321631,
+ 18.5221847
],
[
- -71.8349118,
- 19.6463905
+ -72.3322467,
+ 18.5191963
],
[
- -71.8347984,
- 19.6462187
+ -72.3369183,
+ 18.5183633
+ ],
+ [
+ -72.3382012,
+ 18.5184691
],
[
- -71.8354393,
- 19.6458496
+ -72.3381454,
+ 18.5181782
],
[
- -71.8355034,
- 19.6458032
+ -72.3411993,
+ 18.5177947
],
[
- -71.8364747,
- 19.6461328
+ -72.3454943,
+ 18.5171997
],
[
- -71.8376382,
- 19.6472658
+ -72.3492595,
+ 18.517279
],
[
- -71.8379143,
- 19.647888
+ -72.3504308,
+ 18.5188922
],
[
- -71.8390483,
- 19.6508039
+ -72.3503472,
+ 18.5206112
],
[
- -71.8456942,
- 19.6696203
+ -72.3496778,
+ 18.5220392
]
],
[
[
- -72.098878,
- 18.54843
+ -72.3303078,
+ 18.5486462
],
[
- -72.096993,
- 18.5501994
+ -72.3429687,
+ 18.5508149
],
[
- -72.0972888,
- 18.5503209
+ -72.3433236,
+ 18.5530585
],
[
- -72.0968451,
- 18.5503489
+ -72.3413121,
+ 18.5614341
],
[
- -72.0955632,
- 18.551854
+ -72.3390639,
+ 18.5613593
],
[
- -72.0956428,
- 18.5526742
+ -72.3384723,
+ 18.5638271
],
[
- -72.0959914,
- 18.5533748
+ -72.3375257,
+ 18.5654348
],
[
- -72.0962145,
- 18.553203
+ -72.3348436,
+ 18.5650609
],
[
- -72.0962842,
- 18.5535665
+ -72.3311755,
+ 18.5638271
],
[
- -72.0964446,
- 18.5535533
+ -72.3312149,
+ 18.5616211
],
[
- -72.0965352,
- 18.5539764
+ -72.3232082,
+ 18.5606863
],
[
- -72.0965056,
- 18.554173
+ -72.3212361,
+ 18.559602
],
[
- -72.0966085,
- 18.5541747
+ -72.3208023,
+ 18.5587046
],
[
- -72.0965178,
- 18.5542127
+ -72.3208811,
+ 18.557882
],
[
- -72.0968769,
- 18.5546588
+ -72.3259493,
+ 18.5580274
],
[
- -72.0979018,
- 18.5552141
+ -72.3266186,
+ 18.5581993
],
[
- -72.1006211,
- 18.5555875
+ -72.3259214,
+ 18.5577498
],
[
- -72.1014926,
- 18.5556206
+ -72.3250986,
+ 18.5573797
],
[
- -72.1024339,
- 18.5555016
+ -72.3233767,
+ 18.552263
],
[
- -72.103417,
- 18.5543515
+ -72.3245994,
+ 18.5478507
],
[
- -72.1034798,
- 18.5516215
+ -72.3288986,
+ 18.5483742
],
[
- -72.1030789,
- 18.5516149
- ],
+ -72.329979,
+ 18.5489548
+ ]
+ ],
+ [
[
- -72.1033752,
- 18.5515224
+ -72.3231383,
+ 18.5269828
],
[
- -72.1035042,
- 18.5515224
+ -72.3223434,
+ 18.528067
],
[
- -72.1035239,
- 18.5502417
+ -72.3209629,
+ 18.5279745
],
[
- -72.1028701,
- 18.5503062
+ -72.3207816,
+ 18.5271282
],
[
- -72.1029015,
- 18.55025
+ -72.3208513,
+ 18.5253697
],
[
- -72.1028457,
- 18.5501773
+ -72.3214649,
+ 18.5249598
],
[
- -72.1035081,
- 18.5500252
+ -72.3225666,
+ 18.5248937
],
[
- -72.103491,
- 18.5497396
+ -72.3228454,
+ 18.52533
],
[
- -72.1035181,
- 18.5497361
- ],
+ -72.3232359,
+ 18.5264804
+ ]
+ ],
+ [
[
- -72.1035398,
- 18.5489039
+ -72.2160832,
+ 18.6457752
],
[
- -72.1034317,
- 18.5487056
+ -72.2159649,
+ 18.6553795
],
[
- -72.102717,
- 18.5481437
+ -72.2030279,
+ 18.6558279
],
[
- -72.1025601,
- 18.5481536
+ -72.1947057,
+ 18.6553421
],
[
- -72.10229,
- 18.5482751
+ -72.1922208,
+ 18.6545573
],
[
- -72.1022891,
- 18.5482569
+ -72.1920631,
+ 18.6521283
],
[
- -72.1025201,
- 18.5481396
+ -72.193483,
+ 18.6477559
],
[
- -72.1023388,
- 18.5481321
+ -72.201253,
+ 18.6385249
],
[
- -72.0999082,
- 18.5480901
+ -72.2069327,
+ 18.6388239
],
[
- -72.09907,
- 18.5483799
- ]
- ],
- [
+ -72.2120996,
+ 18.6424117
+ ],
[
- -72.2542503,
- 18.568262
+ -72.2118068,
+ 18.6430591
],
[
- -72.2560252,
- 18.5717765
+ -72.2121693,
+ 18.6426892
],
[
- -72.2557886,
- 18.5748049
+ -72.2127968,
+ 18.6427552
],
[
- -72.2535009,
- 18.5755526
+ -72.2134662,
+ 18.6431252
],
[
- -72.2522782,
- 18.5755526
+ -72.2135638,
+ 18.6437462
],
[
- -72.2499906,
- 18.5740945
+ -72.2154176,
+ 18.6443947
],
[
- -72.2473874,
- 18.5698323
+ -72.2158909,
+ 18.6450301
+ ]
+ ],
+ [
+ [
+ -72.2867654,
+ 18.6482017
],
[
- -72.2460069,
- 18.566729
+ -72.2900977,
+ 18.6527446
],
[
- -72.2458492,
- 18.5629527
+ -72.28981,
+ 18.6536532
],
[
- -72.2479396,
- 18.5625414
+ -72.2900738,
+ 18.6542664
],
[
- -72.2501483,
- 18.5628031
+ -72.290721,
+ 18.6537667
],
[
- -72.2519232,
- 18.5650839
- ]
- ],
- [
+ -72.2910327,
+ 18.6544709
+ ],
[
- -72.303145,
- 18.5332749
+ -72.2912485,
+ 18.654221
],
[
- -72.3031275,
- 18.5331799
+ -72.29168,
+ 18.6558905
],
[
- -72.3048311,
- 18.5311081
+ -72.2912245,
+ 18.656606
],
[
- -72.3097397,
- 18.5311081
+ -72.2922673,
+ 18.65597
],
[
- -72.3164332,
- 18.5324302
+ -72.2926869,
+ 18.6567536
],
[
- -72.3234056,
- 18.5366083
+ -72.2930705,
+ 18.6567309
],
[
- -72.3261388,
- 18.5387765
+ -72.2941253,
+ 18.6581846
],
[
- -72.3261946,
- 18.5426371
+ -72.2960192,
+ 18.6608421
],
[
- -72.3170468,
- 18.5540596
+ -72.2959713,
+ 18.6619096
],
[
- -72.3130864,
- 18.5540596
+ -72.2932862,
+ 18.664567
],
[
- -72.2987511,
- 18.5453342
+ -72.2906731,
+ 18.6659979
],
[
- -72.2988627,
- 18.5407333
+ -72.2895943,
+ 18.6661342
],
[
- -72.2962969,
- 18.5404689
+ -72.2895943,
+ 18.6665657
],
[
- -72.2954602,
- 18.5395169
+ -72.2877004,
+ 18.6664749
],
[
- -72.2961853,
- 18.5338582
+ -72.2875805,
+ 18.6676559
],
[
- -72.2971893,
- 18.5332235
+ -72.2831214,
+ 18.6697227
],
[
- -72.3007034,
- 18.5332764
+ -72.2796453,
+ 18.6696546
],
[
- -72.3022652,
- 18.5342284
+ -72.2784311,
+ 18.6690787
],
[
- -72.3028486,
- 18.5335189
+ -72.2783972,
+ 18.6687736
],
[
- -72.303104,
- 18.5333361
+ -72.277736,
+ 18.6691671
],
[
- -72.303181,
- 18.5334007
+ -72.2774394,
+ 18.669143
],
[
- -72.3035793,
- 18.5335614
+ -72.2770071,
+ 18.6683159
],
[
- -72.3030793,
- 18.5346463
+ -72.2765575,
+ 18.6681125
],
[
- -72.303715,
- 18.5339873
+ -72.2765385,
+ 18.6680583
],
[
- -72.3045286,
- 18.5344052
+ -72.2752319,
+ 18.6685239
],
[
- -72.3044015,
- 18.5345097
+ -72.2749292,
+ 18.6674649
],
[
- -72.3062747,
- 18.5352571
+ -72.2746416,
+ 18.6674309
],
[
- -72.3063107,
- 18.5352741
+ -72.2734668,
+ 18.6682145
],
[
- -72.3061219,
- 18.5357628
+ -72.2732271,
+ 18.6682712
],
[
- -72.3061219,
- 18.5358196
+ -72.2726757,
+ 18.6671583
],
[
- -72.30637,
- 18.5358928
+ -72.2719147,
+ 18.6674288
],
[
- -72.3062726,
- 18.5354869
+ -72.2718808,
+ 18.6673405
],
[
- -72.3066688,
- 18.5350891
+ -72.2688149,
+ 18.6681868
],
[
- -72.3061963,
- 18.5349706
+ -72.2688269,
+ 18.6671761
],
[
- -72.3058869,
- 18.5349385
+ -72.2690786,
+ 18.6668241
],
[
- -72.3055373,
- 18.5346833
+ -72.2688149,
+ 18.66679
],
[
- -72.3054864,
- 18.534613
+ -72.2681077,
+ 18.6670739
],
[
- -72.3055585,
- 18.5345065
+ -72.2676282,
+ 18.6673805
],
[
- -72.3046749,
- 18.5342293
+ -72.2675563,
+ 18.6666878
],
[
- -72.3047617,
- 18.5338817
+ -72.266861,
+ 18.666949
],
[
- -72.3043252,
- 18.5337511
+ -72.2655904,
+ 18.6673578
],
[
- -72.3042595,
- 18.5336346
- ]
- ],
- [
+ -72.2654466,
+ 18.6670058
+ ],
[
- -72.2981405,
- 18.477502
+ -72.2647514,
+ 18.6674146
],
[
- -72.2935652,
- 18.4948587
+ -72.2629893,
+ 18.6681868
],
[
- -72.2922242,
- 18.4964297
+ -72.2628455,
+ 18.6681754
],
[
- -72.2931708,
- 18.4972526
+ -72.2626537,
+ 18.6676076
],
[
- -72.2892266,
- 18.5057058
+ -72.2623001,
+ 18.6677098
],
[
- -72.2878067,
- 18.5080996
+ -72.2624799,
+ 18.6679199
],
[
- -72.2850458,
- 18.5119893
+ -72.2624799,
+ 18.6682322
],
[
- -72.2840203,
- 18.5113161
+ -72.262306,
+ 18.6682606
],
[
- -72.2808649,
- 18.515879
+ -72.2620963,
+ 18.6679654
],
[
- -72.2773151,
- 18.5175994
+ -72.2622761,
+ 18.6689193
],
[
- -72.2723454,
- 18.5175246
+ -72.2601484,
+ 18.6688966
],
[
- -72.2662714,
- 18.5144578
+ -72.2542749,
+ 18.6687944
],
[
- -72.2665869,
- 18.5066783
+ -72.2505388,
+ 18.6683476
],
[
- -72.2692643,
- 18.5046154
+ -72.2504371,
+ 18.669536
],
[
- -72.2661965,
- 18.5029756
+ -72.2477926,
+ 18.6698893
],
[
- -72.2688181,
- 18.4965222
+ -72.2415204,
+ 18.669793
],
[
- -72.2691528,
- 18.4959403
+ -72.2414187,
+ 18.6741933
],
[
- -72.2702684,
- 18.4961519
+ -72.2389167,
+ 18.6739759
],
[
- -72.2702684,
- 18.4955964
+ -72.2387249,
+ 18.6734649
],
[
- -72.2690691,
- 18.49557
+ -72.2383653,
+ 18.6733059
],
[
- -72.2692922,
- 18.4937714
+ -72.2387009,
+ 18.6739532
],
[
- -72.2736988,
- 18.4859951
+ -72.2375502,
+ 18.6738964
],
[
- -72.2746749,
- 18.4850429
+ -72.2374183,
+ 18.6735103
],
[
- -72.2751769,
- 18.483403
+ -72.237742,
+ 18.67334
],
[
- -72.2765435,
- 18.4813398
+ -72.2375142,
+ 18.6732605
],
[
- -72.2773523,
- 18.4814985
+ -72.236843,
+ 18.6734876
],
[
- -72.2783006,
- 18.4809694
+ -72.2364354,
+ 18.6724088
],
[
- -72.2778544,
- 18.4807049
+ -72.2355124,
+ 18.6726019
],
[
- -72.2771013,
- 18.480123
+ -72.2354045,
+ 18.6724202
],
[
- -72.2789978,
- 18.4775836
+ -72.2353027,
+ 18.6729028
],
[
- -72.279723,
- 18.4772927
+ -72.2345475,
+ 18.6726871
],
[
- -72.2806433,
- 18.4776365
+ -72.2343077,
+ 18.6724599
],
[
- -72.2813685,
- 18.4771604
+ -72.2342358,
+ 18.6734706
],
[
- -72.2808386,
- 18.4769752
+ -72.2334087,
+ 18.6734592
],
[
- -72.2812848,
- 18.4758378
+ -72.2332889,
+ 18.6733003
],
[
- -72.2823167,
- 18.4751765
+ -72.2327375,
+ 18.6732889
],
[
- -72.2851615,
- 18.4750971
+ -72.2327135,
+ 18.6735047
],
[
- -72.2849941,
- 18.4763668
+ -72.227703,
+ 18.6725281
],
[
- -72.2854404,
- 18.4769752
+ -72.2265283,
+ 18.6716537
],
[
- -72.286277,
- 18.4756262
+ -72.226804,
+ 18.6715742
],
[
- -72.2869325,
- 18.4754675
+ -72.2274993,
+ 18.6715855
],
[
- -72.2865978,
- 18.4751897
+ -72.2274873,
+ 18.6714493
],
[
- -72.2865978,
- 18.4750046
+ -72.2272899,
+ 18.6714623
],
[
- -72.2909765,
- 18.4747268
+ -72.2272814,
+ 18.6712977
],
[
- -72.2946579,
- 18.4749384
+ -72.2272094,
+ 18.671358
],
[
- -72.2973911,
- 18.476843
- ]
- ],
- [
+ -72.2261785,
+ 18.6713693
+ ],
[
- -72.3466657,
- 18.5222375
+ -72.2256032,
+ 18.670881
],
[
- -72.346833,
- 18.5244325
+ -72.2255073,
+ 18.6694502
],
[
- -72.3475303,
- 18.5277645
+ -72.2261066,
+ 18.6696886
],
[
- -72.3455501,
- 18.5291131
+ -72.2261785,
+ 18.6695949
],
[
- -72.3403069,
- 18.5292189
+ -72.2259837,
+ 18.6695495
],
[
- -72.3383267,
- 18.5280289
+ -72.225777,
+ 18.6691379
],
[
- -72.3369043,
- 18.530118
+ -72.2253335,
+ 18.6694643
],
[
- -72.3338086,
- 18.5296684
+ -72.2249739,
+ 18.66947
],
[
- -72.3289279,
- 18.5270769
+ -72.2245783,
+ 18.6678802
],
[
- -72.328649,
- 18.5253316
+ -72.2235525,
+ 18.6677046
],
[
- -72.3292068,
- 18.5232689
+ -72.2235907,
+ 18.6675921
],
[
- -72.330406,
- 18.5220524
+ -72.2224634,
+ 18.6676283
],
[
- -72.3321631,
- 18.5221847
+ -72.2223659,
+ 18.667022
],
[
- -72.3322467,
- 18.5191963
+ -72.2223277,
+ 18.6670943
],
[
- -72.3369183,
- 18.5183633
+ -72.2219209,
+ 18.667026
],
[
- -72.3382012,
- 18.5184691
+ -72.2208105,
+ 18.6669015
],
[
- -72.3381454,
- 18.5181782
+ -72.220809,
+ 18.6665325
],
[
- -72.3411993,
- 18.5177947
+ -72.2208705,
+ 18.6663593
],
[
- -72.3454943,
- 18.5171997
+ -72.2206023,
+ 18.6668107
],
[
- -72.3492595,
- 18.517279
+ -72.2203895,
+ 18.6666361
],
[
- -72.3504308,
- 18.5188922
+ -72.2184341,
+ 18.6650535
],
[
- -72.3503472,
- 18.5206112
+ -72.21829,
+ 18.6640979
],
[
- -72.3496778,
- 18.5220392
- ]
- ],
- [
+ -72.2183493,
+ 18.6608376
+ ],
[
- -72.3303078,
- 18.5486462
+ -72.2187223,
+ 18.6606541
],
[
- -72.3429687,
- 18.5508149
+ -72.2186894,
+ 18.660603
],
[
- -72.3433236,
- 18.5530585
+ -72.2187253,
+ 18.6604525
],
[
- -72.3413121,
- 18.5614341
+ -72.2189771,
+ 18.6603247
],
[
- -72.3390639,
- 18.5613593
+ -72.2187823,
+ 18.6601998
],
[
- -72.3384723,
- 18.5638271
+ -72.2186984,
+ 18.6602367
],
[
- -72.3375257,
- 18.5654348
+ -72.2185815,
+ 18.6600352
],
[
- -72.3348436,
- 18.5650609
+ -72.2186085,
+ 18.6600039
],
[
- -72.3311755,
- 18.5638271
+ -72.2187823,
+ 18.6601345
],
[
- -72.3312149,
- 18.5616211
+ -72.218995,
+ 18.6600181
],
[
- -72.3232082,
- 18.5606863
+ -72.2189111,
+ 18.6599131
],
[
- -72.3212361,
- 18.559602
+ -72.2189681,
+ 18.6597938
],
[
- -72.3208023,
- 18.5587046
+ -72.2183807,
+ 18.6595837
],
[
- -72.3208811,
- 18.557882
+ -72.2184728,
+ 18.6539662
],
[
- -72.3259493,
- 18.5580274
+ -72.2201001,
+ 18.6511554
],
[
- -72.3266186,
- 18.5581993
+ -72.225796,
+ 18.6469472
],
[
- -72.3259214,
- 18.5577498
+ -72.2283048,
+ 18.6457265
],
[
- -72.3250986,
- 18.5573797
+ -72.2379335,
+ 18.645855
],
[
- -72.3233767,
- 18.552263
+ -72.237764,
+ 18.6446985
],
[
- -72.3245994,
- 18.5478507
+ -72.2400355,
+ 18.6432529
],
[
- -72.3288986,
- 18.5483742
+ -72.2455958,
+ 18.6433493
],
[
- -72.329979,
- 18.5489548
- ]
- ],
- [
- [
- -72.3231383,
- 18.5269828
+ -72.2482742,
+ 18.6450358
],
[
- -72.3223434,
- 18.528067
+ -72.2487488,
+ 18.6436705
],
[
- -72.3209629,
- 18.5279745
+ -72.2511067,
+ 18.6429775
],
[
- -72.3207816,
- 18.5271282
+ -72.2512385,
+ 18.6433409
],
[
- -72.3208513,
- 18.5253697
+ -72.2512625,
+ 18.6431592
],
[
- -72.3214649,
- 18.5249598
+ -72.2514843,
+ 18.6431365
],
[
- -72.3225666,
- 18.5248937
+ -72.2513284,
+ 18.6429718
],
[
- -72.3228454,
- 18.52533
+ -72.2533602,
+ 18.6423471
],
[
- -72.3232359,
- 18.5264804
- ]
- ],
- [
+ -72.253516,
+ 18.6426765
+ ],
[
- -72.2160832,
- 18.6457752
+ -72.2539535,
+ 18.6425402
],
[
- -72.2159649,
- 18.6553795
+ -72.2541453,
+ 18.642932
],
[
- -72.2030279,
- 18.6558279
+ -72.2543851,
+ 18.6428696
],
[
- -72.1947057,
- 18.6553421
+ -72.2543791,
+ 18.6427503
],
[
- -72.1922208,
- 18.6545573
+ -72.2564168,
+ 18.6423244
],
[
- -72.1920631,
- 18.6521283
+ -72.2566925,
+ 18.6431365
],
[
- -72.193483,
- 18.6477559
+ -72.2568783,
+ 18.6428582
],
[
- -72.201253,
- 18.6385249
+ -72.2568184,
+ 18.6425288
],
[
- -72.2069327,
- 18.6388239
+ -72.258843,
+ 18.6420991
],
[
- -72.2120996,
- 18.6424117
+ -72.258885,
+ 18.6422467
],
[
- -72.2118068,
- 18.6430591
+ -72.2592626,
+ 18.6422297
],
[
- -72.2121693,
- 18.6426892
+ -72.2596461,
+ 18.6424057
],
[
- -72.2127968,
- 18.6427552
+ -72.2592206,
+ 18.6406907
],
[
- -72.2134662,
- 18.6431252
+ -72.2599545,
+ 18.6404815
],
[
- -72.2135638,
- 18.6437462
+ -72.2601156,
+ 18.6406341
],
[
- -72.2154176,
- 18.6443947
+ -72.2601156,
+ 18.6399393
],
[
- -72.2158909,
- 18.6450301
- ]
- ],
- [
+ -72.2615268,
+ 18.6394669
+ ],
[
- -72.2867654,
- 18.6482017
+ -72.2626056,
+ 18.6391034
],
[
- -72.2900977,
- 18.6527446
+ -72.2654465,
+ 18.6387286
],
[
- -72.28981,
- 18.6536532
+ -72.2719433,
+ 18.6386832
],
[
- -72.2900738,
- 18.6542664
+ -72.272201,
+ 18.6388649
],
[
- -72.290721,
- 18.6537667
+ -72.2730341,
+ 18.6394158
],
[
- -72.2910327,
- 18.6544709
+ -72.273166,
+ 18.6412558
],
[
- -72.2912485,
- 18.654221
+ -72.2738732,
+ 18.6410286
],
[
- -72.29168,
- 18.6558905
+ -72.2742208,
+ 18.6416079
],
[
- -72.2912245,
- 18.656606
+ -72.2752187,
+ 18.6416987
],
[
- -72.2922673,
- 18.65597
+ -72.2754524,
+ 18.6415738
],
[
- -72.2926869,
- 18.6567536
+ -72.2755513,
+ 18.6416874
],
[
- -72.2930705,
- 18.6567309
+ -72.2755394,
+ 18.6417527
],
[
- -72.2941253,
- 18.6581846
+ -72.2764713,
+ 18.6418634
],
[
- -72.2960192,
- 18.6608421
+ -72.276753,
+ 18.6418975
],
[
- -72.2959713,
- 18.6619096
+ -72.2762953,
+ 18.6426002
],
[
- -72.2932862,
- 18.664567
+ -72.2774226,
+ 18.6429978
],
[
- -72.2906731,
- 18.6659979
+ -72.277982,
+ 18.6427247
],
[
- -72.2895943,
- 18.6661342
+ -72.2785796,
+ 18.6431303
],
[
- -72.2895943,
- 18.6665657
+ -72.2785669,
+ 18.6432307
],
[
- -72.2877004,
- 18.6664749
+ -72.2789017,
+ 18.6433471
],
[
- -72.2875805,
- 18.6676559
+ -72.279851,
+ 18.6439655
],
[
- -72.2831214,
- 18.6697227
+ -72.2858703,
+ 18.6469651
+ ]
+ ],
+ [
+ [
+ -72.5557247,
+ 18.5305893
],
[
- -72.2796453,
- 18.6696546
+ -72.5555866,
+ 18.5367036
],
[
- -72.2784311,
- 18.6690787
+ -72.554995,
+ 18.537975
],
[
- -72.2783972,
- 18.6687736
+ -72.5488026,
+ 18.537919
],
[
- -72.277736,
- 18.6691671
+ -72.5486646,
+ 18.5372832
],
[
- -72.2774394,
- 18.669143
+ -72.548842,
+ 18.5306267
],
[
- -72.2770071,
- 18.6683159
+ -72.5493745,
+ 18.5301031
],
[
- -72.2765575,
- 18.6681125
+ -72.555133,
+ 18.5301218
+ ]
+ ],
+ [
+ [
+ -72.6235278,
+ 18.5079877
],
[
- -72.2765385,
- 18.6680583
+ -72.6234441,
+ 18.5095217
],
[
- -72.2752319,
- 18.6685239
+ -72.6226074,
+ 18.5104341
],
[
- -72.2749292,
- 18.6674649
+ -72.6204878,
+ 18.511849
],
[
- -72.2746416,
- 18.6674309
+ -72.6183403,
+ 18.5107514
],
[
- -72.2734668,
- 18.6682145
+ -72.6162207,
+ 18.5083183
],
[
- -72.2732271,
- 18.6682712
+ -72.6162625,
+ 18.506467
],
[
- -72.2726757,
- 18.6671583
+ -72.618661,
+ 18.5044438
],
[
- -72.2719147,
- 18.6674288
+ -72.6204041,
+ 18.5044967
],
[
- -72.2718808,
- 18.6673405
+ -72.6228305,
+ 18.506996
+ ]
+ ]
+ ]
+ },
+ {
+ "name": "Interspect ortofotó 2014",
+ "type": "tms",
+ "description": "Four districts of Budapest: III, XIII, XIV, XV",
+ "template": "http://geoserver.infobex.hu/Budapest2014/IST/{zoom}/{x}/{y}.jpg",
+ "scaleExtent": [
+ 10,
+ 21
+ ],
+ "polygon": [
+ [
+ [
+ 19.04642,
+ 47.61098
],
[
- -72.2688149,
- 18.6681868
+ 19.05375,
+ 47.60995
],
[
- -72.2688269,
- 18.6671761
+ 19.06033,
+ 47.61037
],
[
- -72.2690786,
- 18.6668241
+ 19.06022,
+ 47.61009
],
[
- -72.2688149,
- 18.66679
+ 19.06091,
+ 47.61023
],
[
- -72.2681077,
- 18.6670739
+ 19.0755,
+ 47.60835
],
[
- -72.2676282,
- 18.6673805
+ 19.07796,
+ 47.60718
],
[
- -72.2675563,
- 18.6666878
+ 19.07773,
+ 47.60627
],
[
- -72.266861,
- 18.666949
+ 19.07599,
+ 47.60433
],
[
- -72.2655904,
- 18.6673578
+ 19.07337,
+ 47.59906
],
[
- -72.2654466,
- 18.6670058
+ 19.07232,
+ 47.59332
],
[
- -72.2647514,
- 18.6674146
+ 19.0723,
+ 47.58865
],
[
- -72.2629893,
- 18.6681868
+ 19.0693,
+ 47.5798
],
[
- -72.2628455,
- 18.6681754
+ 19.06891,
+ 47.57742
],
[
- -72.2626537,
- 18.6676076
+ 19.06949,
+ 47.57211
],
[
- -72.2623001,
- 18.6677098
+ 19.06623,
+ 47.56375
],
[
- -72.2624799,
- 18.6679199
+ 19.06717,
+ 47.56427
],
[
- -72.2624799,
- 18.6682322
+ 19.0692,
+ 47.56456
],
[
- -72.262306,
- 18.6682606
+ 19.06992,
+ 47.56418
],
[
- -72.2620963,
- 18.6679654
+ 19.07011,
+ 47.56363
],
[
- -72.2622761,
- 18.6689193
+ 19.07785,
+ 47.56148
],
[
- -72.2601484,
- 18.6688966
+ 19.07986,
+ 47.56053
],
[
- -72.2542749,
- 18.6687944
+ 19.08359,
+ 47.55604
],
[
- -72.2505388,
- 18.6683476
+ 19.08516,
+ 47.5548
],
[
- -72.2504371,
- 18.669536
+ 19.08601,
+ 47.5551
],
[
- -72.2477926,
- 18.6698893
+ 19.08703,
+ 47.55488
],
[
- -72.2415204,
- 18.669793
+ 19.0984,
+ 47.54666
],
[
- -72.2414187,
- 18.6741933
+ 19.09974,
+ 47.54692
],
[
- -72.2389167,
- 18.6739759
+ 19.10094,
+ 47.54656
],
[
- -72.2387249,
- 18.6734649
+ 19.1015,
+ 47.54593
],
[
- -72.2383653,
- 18.6733059
+ 19.1015,
+ 47.54523
],
[
- -72.2387009,
- 18.6739532
+ 19.10255,
+ 47.54458
],
[
- -72.2375502,
- 18.6738964
+ 19.10939,
+ 47.56255
],
[
- -72.2374183,
- 18.6735103
+ 19.10917,
+ 47.56324
],
[
- -72.237742,
- 18.67334
+ 19.11193,
+ 47.57058
],
[
- -72.2375142,
- 18.6732605
+ 19.11235,
+ 47.57087
],
[
- -72.236843,
- 18.6734876
+ 19.11271,
+ 47.57297
],
[
- -72.2364354,
- 18.6724088
+ 19.11382,
+ 47.57379
],
[
- -72.2355124,
- 18.6726019
+ 19.1144,
+ 47.57504
],
[
- -72.2354045,
- 18.6724202
+ 19.11779,
+ 47.58375
],
[
- -72.2353027,
- 18.6729028
+ 19.11774,
+ 47.5844
],
[
- -72.2345475,
- 18.6726871
+ 19.11844,
+ 47.58512
],
[
- -72.2343077,
- 18.6724599
+ 19.12,
+ 47.58924
],
[
- -72.2342358,
- 18.6734706
+ 19.12008,
+ 47.59563
],
[
- -72.2334087,
- 18.6734592
+ 19.1206,
+ 47.59856
],
[
- -72.2332889,
- 18.6733003
+ 19.12127,
+ 47.59952
],
[
- -72.2327375,
- 18.6732889
+ 19.12266,
+ 47.6004
],
[
- -72.2327135,
- 18.6735047
+ 19.12436,
+ 47.6008
],
[
- -72.227703,
- 18.6725281
+ 19.1255,
+ 47.60048
],
[
- -72.2265283,
- 18.6716537
+ 19.12577,
+ 47.5997
],
[
- -72.226804,
- 18.6715742
+ 19.128,
+ 47.59885
],
[
- -72.2274993,
- 18.6715855
+ 19.13058,
+ 47.59898
],
[
- -72.2274873,
- 18.6714493
+ 19.13768,
+ 47.60057
],
[
- -72.2272899,
- 18.6714623
+ 19.13874,
+ 47.60043
],
[
- -72.2272814,
- 18.6712977
+ 19.14144,
+ 47.59639
],
[
- -72.2272094,
- 18.671358
+ 19.14122,
+ 47.59568
],
[
- -72.2261785,
- 18.6713693
+ 19.14023,
+ 47.59527
],
[
- -72.2256032,
- 18.670881
+ 19.15557,
+ 47.58499
],
[
- -72.2255073,
- 18.6694502
+ 19.15413,
+ 47.58389
],
[
- -72.2261066,
- 18.6696886
+ 19.15329,
+ 47.58013
],
[
- -72.2261785,
- 18.6695949
+ 19.15344,
+ 47.57918
],
[
- -72.2259837,
- 18.6695495
+ 19.15499,
+ 47.57884
],
[
- -72.225777,
- 18.6691379
+ 19.16043,
+ 47.57871
],
[
- -72.2253335,
- 18.6694643
+ 19.16043,
+ 47.57583
],
[
- -72.2249739,
- 18.66947
+ 19.16213,
+ 47.57583
],
[
- -72.2245783,
- 18.6678802
+ 19.16196,
+ 47.57383
],
[
- -72.2235525,
- 18.6677046
+ 19.17573,
+ 47.56442
],
[
- -72.2235907,
- 18.6675921
+ 19.17511,
+ 47.56345
],
[
- -72.2224634,
- 18.6676283
+ 19.16356,
+ 47.55986
],
[
- -72.2223659,
- 18.667022
+ 19.16295,
+ 47.5594
],
[
- -72.2223277,
- 18.6670943
+ 19.17589,
+ 47.55134
],
[
- -72.2219209,
- 18.667026
+ 19.18156,
+ 47.54896
],
[
- -72.2208105,
- 18.6669015
+ 19.18205,
+ 47.5483
],
[
- -72.220809,
- 18.6665325
+ 19.18165,
+ 47.54762
],
[
- -72.2208705,
- 18.6663593
+ 19.16905,
+ 47.53994
],
[
- -72.2206023,
- 18.6668107
+ 19.15316,
+ 47.52885
],
[
- -72.2203895,
- 18.6666361
+ 19.14747,
+ 47.52584
],
[
- -72.2184341,
- 18.6650535
+ 19.14691,
+ 47.52332
],
[
- -72.21829,
- 18.6640979
+ 19.14947,
+ 47.52059
],
[
- -72.2183493,
- 18.6608376
+ 19.15581,
+ 47.51256
],
[
- -72.2187223,
- 18.6606541
+ 19.1572,
+ 47.51155
],
[
- -72.2186894,
- 18.660603
+ 19.15697,
+ 47.51051
],
[
- -72.2187253,
- 18.6604525
+ 19.15885,
+ 47.50566
],
[
- -72.2189771,
- 18.6603247
+ 19.15866,
+ 47.50493
],
[
- -72.2187823,
- 18.6601998
+ 19.15793,
+ 47.50438
],
[
- -72.2186984,
- 18.6602367
+ 19.10292,
+ 47.49828
],
[
- -72.2185815,
- 18.6600352
+ 19.1016,
+ 47.49846
],
[
- -72.2186085,
- 18.6600039
+ 19.10057,
+ 47.49914
],
[
- -72.2187823,
- 18.6601345
+ 19.09185,
+ 47.5003
],
[
- -72.218995,
- 18.6600181
+ 19.08953,
+ 47.50117
],
[
- -72.2189111,
- 18.6599131
+ 19.07138,
+ 47.51722
+ ],
+ [
+ 19.06794,
+ 47.51558
],
[
- -72.2189681,
- 18.6597938
+ 19.06631,
+ 47.51529
],
[
- -72.2183807,
- 18.6595837
+ 19.06522,
+ 47.51545
],
[
- -72.2184728,
- 18.6539662
+ 19.06347,
+ 47.51668
],
[
- -72.2201001,
- 18.6511554
+ 19.06072,
+ 47.51512
],
[
- -72.225796,
- 18.6469472
+ 19.05709,
+ 47.51044
],
[
- -72.2283048,
- 18.6457265
+ 19.05567,
+ 47.50992
],
[
- -72.2379335,
- 18.645855
+ 19.05417,
+ 47.50997
],
[
- -72.237764,
- 18.6446985
+ 19.04318,
+ 47.51383
],
[
- -72.2400355,
- 18.6432529
+ 19.04093,
+ 47.51397
],
[
- -72.2455958,
- 18.6433493
+ 19.04045,
+ 47.51449
],
[
- -72.2482742,
- 18.6450358
+ 19.03916,
+ 47.51909
],
[
- -72.2487488,
- 18.6436705
+ 19.03898,
+ 47.52143
],
[
- -72.2511067,
- 18.6429775
+ 19.03938,
+ 47.52358
],
[
- -72.2512385,
- 18.6433409
+ 19.04081,
+ 47.52649
],
[
- -72.2512625,
- 18.6431592
+ 19.0408,
+ 47.53092
],
[
- -72.2514843,
- 18.6431365
+ 19.02088,
+ 47.53091
],
[
- -72.2513284,
- 18.6429718
+ 19.02088,
+ 47.529
],
[
- -72.2533602,
- 18.6423471
+ 19.0172,
+ 47.52866
],
[
- -72.253516,
- 18.6426765
+ 19.01684,
+ 47.52876
],
[
- -72.2539535,
- 18.6425402
+ 19.01453,
+ 47.53356
],
[
- -72.2541453,
- 18.642932
+ 19.01459,
+ 47.5347
],
[
- -72.2543851,
- 18.6428696
+ 19.01373,
+ 47.5348
],
[
- -72.2543791,
- 18.6427503
+ 19.01167,
+ 47.53786
],
[
- -72.2564168,
- 18.6423244
+ 19.01055,
+ 47.53839
],
[
- -72.2566925,
- 18.6431365
+ 19.0051,
+ 47.53978
],
[
- -72.2568783,
- 18.6428582
+ 19.00501,
+ 47.54075
],
[
- -72.2568184,
- 18.6425288
+ 19.00761,
+ 47.54245
],
[
- -72.258843,
- 18.6420991
+ 19.00684,
+ 47.54297
],
[
- -72.258885,
- 18.6422467
+ 19.00684,
+ 47.54385
],
[
- -72.2592626,
- 18.6422297
+ 19.00525,
+ 47.54499
],
[
- -72.2596461,
- 18.6424057
+ 19.0053,
+ 47.5455
],
[
- -72.2592206,
- 18.6406907
+ 19.00462,
+ 47.54557
],
[
- -72.2599545,
- 18.6404815
+ 19.00434,
+ 47.54599
],
[
- -72.2601156,
- 18.6406341
+ 19.00261,
+ 47.55075
],
[
- -72.2601156,
- 18.6399393
+ 18.99714,
+ 47.55468
],
[
- -72.2615268,
- 18.6394669
+ 18.99466,
+ 47.55877
],
[
- -72.2626056,
- 18.6391034
+ 18.99244,
+ 47.5605
],
[
- -72.2654465,
- 18.6387286
+ 18.99173,
+ 47.56266
],
[
- -72.2719433,
- 18.6386832
+ 18.99105,
+ 47.56278
],
[
- -72.272201,
- 18.6388649
+ 18.986,
+ 47.56863
],
[
- -72.2730341,
- 18.6394158
+ 18.97914,
+ 47.57257
],
[
- -72.273166,
- 18.6412558
+ 18.97675,
+ 47.57301
],
[
- -72.2738732,
- 18.6410286
+ 18.97622,
+ 47.57444
],
[
- -72.2742208,
- 18.6416079
+ 18.97677,
+ 47.57463
],
[
- -72.2752187,
- 18.6416987
+ 18.97641,
+ 47.57596
],
[
- -72.2754524,
- 18.6415738
+ 18.98247,
+ 47.58127
],
[
- -72.2755513,
- 18.6416874
+ 18.98227,
+ 47.58198
],
[
- -72.2755394,
- 18.6417527
+ 18.98276,
+ 47.58283
],
[
- -72.2764713,
- 18.6418634
+ 18.97695,
+ 47.58448
],
[
- -72.276753,
- 18.6418975
+ 18.97645,
+ 47.58485
],
[
- -72.2762953,
- 18.6426002
+ 18.97639,
+ 47.58555
],
[
- -72.2774226,
- 18.6429978
+ 18.98285,
+ 47.58936
],
[
- -72.277982,
- 18.6427247
+ 18.9841,
+ 47.58929
],
[
- -72.2785796,
- 18.6431303
+ 18.99076,
+ 47.58612
],
[
- -72.2785669,
- 18.6432307
+ 18.99375,
+ 47.58507
],
[
- -72.2789017,
- 18.6433471
+ 18.99618,
+ 47.58645
],
[
- -72.279851,
- 18.6439655
+ 18.99727,
+ 47.58664
],
[
- -72.2858703,
- 18.6469651
- ]
- ],
- [
+ 19.00068,
+ 47.58457
+ ],
[
- -72.5557247,
- 18.5305893
+ 19.0016,
+ 47.58438
],
[
- -72.5555866,
- 18.5367036
+ 19.00892,
+ 47.58637
],
[
- -72.554995,
- 18.537975
+ 19.01088,
+ 47.58637
],
[
- -72.5488026,
- 18.537919
+ 19.01088,
+ 47.5869
],
[
- -72.5486646,
- 18.5372832
+ 19.01264,
+ 47.58738
],
[
- -72.548842,
- 18.5306267
+ 19.02151,
+ 47.58876
],
[
- -72.5493745,
- 18.5301031
+ 19.02593,
+ 47.58914
],
[
- -72.555133,
- 18.5301218
- ]
- ],
- [
+ 19.03271,
+ 47.5883
+ ],
[
- -72.6235278,
- 18.5079877
+ 19.03199,
+ 47.59087
],
[
- -72.6234441,
- 18.5095217
+ 19.03113,
+ 47.59163
],
[
- -72.6226074,
- 18.5104341
+ 19.03125,
+ 47.59276
],
[
- -72.6204878,
- 18.511849
+ 19.02883,
+ 47.59838
],
[
- -72.6183403,
- 18.5107514
+ 19.02808,
+ 47.59978
],
[
- -72.6162207,
- 18.5083183
+ 19.0239,
+ 47.60425
],
[
- -72.6162625,
- 18.506467
+ 19.02393,
+ 47.60498
],
[
- -72.618661,
- 18.5044438
+ 19.02531,
+ 47.60575
],
[
- -72.6204041,
- 18.5044967
+ 19.03768,
+ 47.6104
],
[
- -72.6228305,
- 18.506996
+ 19.04642,
+ 47.61098
]
]
- ]
+ ],
+ "terms_url": "http://interspect.hu/",
+ "terms_text": "Interspect Kft."
},
{
"name": "Ireland Bartholomew Quarter-Inch 1940",
],
"terms_text": "AGIS OF2011"
},
+ {
+ "name": "Kanton Aargau 25cm (AGIS 2014)",
+ "type": "tms",
+ "template": "http://mapproxy.osm.ch:8080/tiles/AGIS2014/EPSG900913/{z}/{x}/{y}.png?origin=nw",
+ "scaleExtent": [
+ 8,
+ 19
+ ],
+ "polygon": [
+ [
+ [
+ 7.7,
+ 47.12
+ ],
+ [
+ 7.7,
+ 47.63
+ ],
+ [
+ 8.5,
+ 47.63
+ ],
+ [
+ 8.5,
+ 47.12
+ ],
+ [
+ 7.7,
+ 47.12
+ ]
+ ]
+ ],
+ "terms_text": "AGIS OF2014"
+ },
+ {
+ "name": "Kanton Solothurn 25cm (SOGIS 2011-2014)",
+ "type": "tms",
+ "template": "http://mapproxy.osm.ch:8080/tiles/sogis2014/EPSG900913/{z}/{x}/{y}.png?origin=nw",
+ "scaleExtent": [
+ 12,
+ 19
+ ],
+ "polygon": [
+ [
+ [
+ 7.08,
+ 47.03
+ ],
+ [
+ 7.08,
+ 47.54
+ ],
+ [
+ 8.04,
+ 47.54
+ ],
+ [
+ 8.04,
+ 47.03
+ ],
+ [
+ 7.08,
+ 47.03
+ ]
+ ]
+ ],
+ "terms_text": "Orthofoto WMS Solothurn"
+ },
{
"name": "Katastrálna mapa Slovenska (KaPor, 2010-04)",
"type": "tms",
0,
16
],
+ "overzoom": false,
"terms_url": "http://www.mapbox.com/about/maps/",
"terms_text": "Terms & Feedback",
"default": true,
]
]
},
+ {
+ "name": "Szeged ortophoto 2011",
+ "type": "tms",
+ "template": "http://e.tile.openstreetmap.hu/szeged-2011-10cm/{zoom}/{x}/{y}.png",
+ "scaleExtent": [
+ 10,
+ 22
+ ],
+ "polygon": [
+ [
+ [
+ 20.1103390994,
+ 46.226038352
+ ],
+ [
+ 20.1103390994,
+ 46.2791486357
+ ],
+ [
+ 20.1989636982,
+ 46.2791486357
+ ],
+ [
+ 20.1989636982,
+ 46.226038352
+ ],
+ [
+ 20.1103390994,
+ 46.226038352
+ ]
+ ]
+ ],
+ "terms_url": "http://www.geo.u-szeged.hu",
+ "terms_text": "SZTE TFGT - University of Szeged"
+ },
{
"name": "Toulouse - Orthophotoplan 2007",
"type": "tms",
"name": "basemap.at",
"type": "tms",
"description": "Basemap of Austria, based on goverment data.",
- "template": "http://maps.wien.gv.at/basemap/geolandbasemap/normal/google3857/{zoom}/{y}/{x}.jpeg",
+ "template": "http://maps.wien.gv.at/basemap/geolandbasemap/normal/google3857/{zoom}/{y}/{x}.png",
"polygon": [
[
[
],
"terms_text": "basemap.at",
"id": "basemap.at"
+ },
+ {
+ "name": "Übersichtsplan Zürich",
+ "type": "tms",
+ "template": "http://mapproxy.sosm.ch:8080/tiles/zh_uebersichtsplan/EPSG900913/{zoom}/{x}/{y}.png?origin=nw",
+ "scaleExtent": [
+ 0,
+ 21
+ ],
+ "polygon": [
+ [
+ [
+ 8.4482,
+ 47.321
+ ],
+ [
+ 8.4482,
+ 47.4339
+ ],
+ [
+ 8.6248,
+ 47.4339
+ ],
+ [
+ 8.6248,
+ 47.321
+ ],
+ [
+ 8.4482,
+ 47.321
+ ]
+ ]
+ ],
+ "terms_text": "Stadt Zürich Open Government Data"
}
];
\ No newline at end of file
"amenity/atm": {
"icon": "bank",
"fields": [
- "operator"
+ "operator",
+ "drive_through"
],
"geometry": [
"point",
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"geometry": [
"point",
"brand",
"opening_hours",
"fee",
- "service/bicycle/chaintool",
+ "service/bicycle/chain_tool",
"service/bicycle/pump"
],
"geometry": [
},
"name": "Bicycle Repair Station"
},
+ "amenity/biergarten": {
+ "icon": "beer",
+ "fields": [
+ "address",
+ "building_area",
+ "opening_hours",
+ "smoking"
+ ],
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "tags": {
+ "amenity": "biergarten"
+ },
+ "terms": [
+ "beer",
+ "bier",
+ "booze"
+ ],
+ "name": "Beer Garden"
+ },
"amenity/boat_rental": {
"fields": [
"operator"
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"geometry": [
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"geometry": [
"point",
"icon": "post",
"fields": [
"operator",
- "collection_times"
+ "collection_times",
+ "drive_through"
],
"geometry": [
"point",
},
"name": "Restaurant"
},
+ "amenity/sanitary_dump_station": {
+ "fields": [
+ "operator",
+ "access_toilets",
+ "fee",
+ "water_point"
+ ],
+ "geometry": [
+ "point",
+ "vertex",
+ "area"
+ ],
+ "terms": [
+ "Motor Home",
+ "Camper",
+ "Sanitary",
+ "Dump Station",
+ "Elsan",
+ "CDP",
+ "CTDP",
+ "Chemical Toilet"
+ ],
+ "tags": {
+ "amenity": "sanitary_dump_station"
+ },
+ "name": "RV Toilet Disposal"
+ },
"amenity/school": {
"icon": "school",
"fields": [
"operator",
"building_area",
"access_toilets",
- "gender"
+ "gender",
+ "fee"
],
"geometry": [
"point",
"highway/bus_stop": {
"icon": "bus",
"fields": [
+ "network",
"operator",
"bench",
"shelter",
"tags": {
"highway": "motorway_link"
},
+ "addTags": {
+ "highway": "motorway_link",
+ "oneway": "yes"
+ },
+ "removeTags": {
+ "highway": "motorway_link",
+ "oneway": "yes"
+ },
"terms": [
"ramp",
"on ramp",
"surface",
"lit",
"width",
+ "incline_steps",
"access"
],
"icon": "highway-steps",
"landuse"
],
"geometry": [
- "point",
- "vertex",
"area"
],
"tags": {
},
"leisure/marina": {
"icon": "harbor",
+ "fields": [
+ "operator",
+ "address",
+ "capacity",
+ "fee",
+ "sanitary_dump_station",
+ "power_supply",
+ "internet_access"
+ ],
"geometry": [
"point",
"vertex",
},
"man_made/lighthouse": {
"icon": "lighthouse",
+ "fields": [
+ "building_area"
+ ],
"geometry": [
"point",
"area"
},
"name": "Lighthouse"
},
+ "man_made/mast": {
+ "geometry": [
+ "point"
+ ],
+ "terms": [
+ "broadcast tower",
+ "cell phone tower",
+ "cell tower",
+ "guyed tower",
+ "mobile phone tower",
+ "radio tower",
+ "television tower",
+ "transmission mast",
+ "transmission tower",
+ "tv tower"
+ ],
+ "tags": {
+ "man_made": "mast"
+ },
+ "name": "Radio Mast"
+ },
"man_made/observation": {
"geometry": [
"point",
},
"name": "Observation Tower"
},
+ "man_made/petroleum_well": {
+ "geometry": [
+ "point"
+ ],
+ "terms": [
+ "drilling rig",
+ "oil derrick",
+ "oil drill",
+ "oil horse",
+ "oil rig",
+ "oil pump",
+ "petroleum well",
+ "pumpjack"
+ ],
+ "tags": {
+ "man_made": "petroleum_well"
+ },
+ "name": "Oil Well"
+ },
"man_made/pier": {
"geometry": [
"line",
},
"name": "Pipeline"
},
+ "man_made/silo": {
+ "fields": [
+ "building_area",
+ "crop"
+ ],
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "terms": [
+ "grain",
+ "corn",
+ "wheat"
+ ],
+ "tags": {
+ "man_made": "silo"
+ },
+ "name": "Silo"
+ },
+ "man_made/storage_tank": {
+ "fields": [
+ "building_area",
+ "content"
+ ],
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "terms": [
+ "water",
+ "oil",
+ "gas",
+ "petrol"
+ ],
+ "tags": {
+ "man_made": "storage_tank"
+ },
+ "name": "Storage Tank"
+ },
"man_made/survey_point": {
"icon": "monument",
"fields": [
},
"name": "City"
},
+ "place/farm": {
+ "icon": "farm",
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "tags": {
+ "place": "farm"
+ },
+ "name": "Farm"
+ },
"place/hamlet": {
"icon": "triangle-stroked",
"fields": [
"public_transport/platform": {
"fields": [
"ref",
- "operator",
"network",
+ "operator",
"shelter"
],
"geometry": [
"icon": "bus",
"fields": [
"ref",
- "operator",
- "network"
+ "network",
+ "operator"
],
"geometry": [
"vertex"
"railway": "abandoned"
},
"fields": [
- "structure"
+ "structure",
+ "service_rail"
],
"terms": [],
"name": "Abandoned Railway"
"railway": "disused"
},
"fields": [
- "structure"
+ "structure",
+ "service_rail"
],
"terms": [],
"name": "Disused Railway"
],
"fields": [
"structure",
- "gauge"
+ "gauge",
+ "service_rail"
],
"tags": {
"railway": "funicular"
},
"fields": [
"structure",
- "electrified"
+ "electrified",
+ "service_rail"
],
"terms": [],
"name": "Monorail"
"fields": [
"structure",
"gauge",
- "electrified"
+ "electrified",
+ "service_rail"
],
"terms": [
"narrow gauge railway",
"fields": [
"structure",
"gauge",
- "electrified"
+ "electrified",
+ "service_rail"
],
"terms": [],
"name": "Rail"
"railway/station": {
"icon": "rail",
"fields": [
+ "network",
"operator",
"address",
"building_area"
},
"railway/subway": {
"icon": "railway-subway",
- "fields": [
- "structure",
- "gauge",
- "electrified"
- ],
"geometry": [
"line"
],
"tags": {
"railway": "subway"
},
+ "fields": [
+ "structure",
+ "gauge",
+ "electrified",
+ "service_rail"
+ ],
"terms": [],
"name": "Subway"
},
"fields": [
"structure",
"gauge",
- "electrified"
+ "electrified",
+ "service_rail"
],
"terms": [
"streetcar"
"relation"
]
},
+ "roundabout": {
+ "geometry": [
+ "vertex",
+ "line"
+ ],
+ "tags": {
+ "junction": "roundabout"
+ },
+ "name": "Roundabout",
+ "searchable": false
+ },
"route/ferry": {
"icon": "ferry",
"geometry": [
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"geometry": [
"point",
"icon": "campsite",
"fields": [
"operator",
- "address"
+ "address",
+ "capacity",
+ "fee"
],
"geometry": [
"point",
"vertex",
"area"
],
+ "terms": [
+ "Tent"
+ ],
"tags": {
"tourism": "camp_site"
},
"name": "Camp Site"
},
"tourism/caravan_site": {
+ "icon": "bus",
"fields": [
"operator",
"address",
- "smoking"
+ "capacity",
+ "fee",
+ "sanitary_dump_station",
+ "power_supply",
+ "internet_access"
],
"geometry": [
"point",
"vertex",
"area"
],
+ "terms": [
+ "Motor Home",
+ "Camper"
+ ],
"tags": {
"tourism": "caravan_site"
},
},
"name": "Drain"
},
+ "waterway/fuel": {
+ "icon": "fuel",
+ "fields": [
+ "operator",
+ "address",
+ "building_area",
+ "opening_hours"
+ ],
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "terms": [
+ "petrol",
+ "gas",
+ "diesel",
+ "boat"
+ ],
+ "tags": {
+ "waterway": "fuel"
+ },
+ "name": "Marine Fuel Station"
+ },
"waterway/river": {
"icon": "waterway-river",
"fields": [
},
"name": "Riverbank"
},
+ "waterway/sanitary_dump_station": {
+ "fields": [
+ "operator",
+ "access_toilets",
+ "fee",
+ "water_point"
+ ],
+ "geometry": [
+ "point",
+ "vertex",
+ "area"
+ ],
+ "terms": [
+ "Boat",
+ "Watercraft",
+ "Sanitary",
+ "Dump Station",
+ "Pumpout",
+ "Pump out",
+ "Elsan",
+ "CDP",
+ "CTDP",
+ "Chemical Toilet"
+ ],
+ "tags": {
+ "waterway": "sanitary_dump_station"
+ },
+ "name": "Marine Toilet Disposal"
+ },
"waterway/stream": {
"icon": "waterway-stream",
"fields": [
],
"suggestion": true
},
- "amenity/fuel/Stacja paliw": {
- "tags": {
- "name": "Stacja paliw",
- "amenity": "fuel"
- },
- "name": "Stacja paliw",
- "icon": "fuel",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"amenity/fuel/Bharat Petroleum": {
"tags": {
"name": "Bharat Petroleum",
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"amenity/fast_food/Taco Bell": {
"tags": {
"name": "Taco Bell",
+ "cuisine": "mexican",
"amenity": "fast_food"
},
"name": "Taco Bell",
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
- "smoking"
- ],
- "suggestion": true
- },
- "amenity/fast_food/Kebab": {
- "tags": {
- "name": "Kebab",
- "amenity": "fast_food"
- },
- "name": "Kebab",
- "icon": "fast-food",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "cuisine",
- "operator",
- "address",
- "building_area",
- "opening_hours",
- "takeaway",
- "delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
- "smoking"
- ],
- "suggestion": true
- },
- "amenity/fast_food/Imbiss": {
- "tags": {
- "name": "Imbiss",
- "amenity": "fast_food"
- },
- "name": "Imbiss",
- "icon": "fast-food",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "cuisine",
- "operator",
- "address",
- "building_area",
- "opening_hours",
- "takeaway",
- "delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"amenity/fast_food/Panda Express": {
"tags": {
"name": "Panda Express",
+ "cuisine": "chinese",
"amenity": "fast_food"
},
"name": "Panda Express",
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"opening_hours",
"takeaway",
"delivery",
+ "drive_through",
"smoking"
],
"suggestion": true
"amenity/restaurant/Pizza Hut": {
"tags": {
"name": "Pizza Hut",
+ "cuisine": "pizza",
"amenity": "restaurant"
},
"name": "Pizza Hut",
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
- "amenity/bank/Millenium Bank": {
+ "amenity/bank/Millenium": {
"tags": {
- "name": "Millenium Bank",
+ "name": "Millenium",
"amenity": "bank"
},
- "name": "Millenium Bank",
+ "name": "Millenium",
"icon": "bank",
"geometry": [
"point",
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
],
"suggestion": true
},
- "amenity/cafe/Eisdiele": {
- "tags": {
- "name": "Eisdiele",
- "amenity": "cafe"
- },
- "name": "Eisdiele",
- "icon": "cafe",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "cuisine",
- "internet_access",
- "address",
- "building_area",
- "opening_hours",
- "smoking"
- ],
- "suggestion": true
- },
"amenity/cafe/Dunkin Donuts": {
"tags": {
"name": "Dunkin Donuts",
],
"suggestion": true
},
- "shop/supermarket/EDEKA": {
+ "shop/supermarket/Edeka": {
"tags": {
- "name": "EDEKA",
+ "name": "Edeka",
"shop": "supermarket"
},
- "name": "EDEKA",
+ "name": "Edeka",
"icon": "grocery",
"geometry": [
"point",
],
"suggestion": true
},
- "shop/supermarket/REWE": {
- "tags": {
- "name": "REWE",
- "shop": "supermarket"
- },
- "name": "REWE",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/Rewe": {
"tags": {
"name": "Rewe",
],
"suggestion": true
},
- "shop/supermarket/Edeka": {
- "tags": {
- "name": "Edeka",
- "shop": "supermarket"
- },
- "name": "Edeka",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/Pick n Pay": {
"tags": {
"name": "Pick n Pay",
],
"suggestion": true
},
- "shop/supermarket/LIDL": {
- "tags": {
- "name": "LIDL",
- "shop": "supermarket"
- },
- "name": "LIDL",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/tegut": {
"tags": {
"name": "tegut",
],
"suggestion": true
},
- "shop/supermarket/COOP": {
- "tags": {
- "name": "COOP",
- "shop": "supermarket"
- },
- "name": "COOP",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/Food Basics": {
"tags": {
"name": "Food Basics",
],
"suggestion": true
},
- "shop/supermarket/Co-operative Food": {
+ "shop/supermarket/The Co-operative Food": {
"tags": {
- "name": "Co-operative Food",
+ "name": "The Co-operative Food",
"shop": "supermarket"
},
- "name": "Co-operative Food",
+ "name": "The Co-operative Food",
"icon": "grocery",
"geometry": [
"point",
],
"suggestion": true
},
- "shop/supermarket/SPAR": {
- "tags": {
- "name": "SPAR",
- "shop": "supermarket"
- },
- "name": "SPAR",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/No Frills": {
"tags": {
"name": "No Frills",
],
"suggestion": true
},
- "shop/supermarket/The Co-operative Food": {
- "tags": {
- "name": "The Co-operative Food",
- "shop": "supermarket"
- },
- "name": "The Co-operative Food",
- "icon": "grocery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/supermarket/Eurospin": {
"tags": {
"name": "Eurospin",
],
"suggestion": true
},
- "shop/convenience/Sklep spożywczy": {
- "tags": {
- "name": "Sklep spożywczy",
- "shop": "convenience"
- },
- "name": "Sklep spożywczy",
- "icon": "shop",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/convenience/Centra": {
"tags": {
"name": "Centra",
],
"suggestion": true
},
+ "shop/convenience/Sklep spożywczy": {
+ "tags": {
+ "name": "Sklep spożywczy",
+ "shop": "convenience"
+ },
+ "name": "Sklep spożywczy",
+ "icon": "shop",
+ "geometry": [
+ "point",
+ "area"
+ ],
+ "fields": [
+ "operator",
+ "address",
+ "building_area",
+ "opening_hours"
+ ],
+ "suggestion": true
+ },
"shop/convenience/24 часа": {
"tags": {
"name": "24 часа",
],
"suggestion": true
},
- "shop/convenience/Spożywczy": {
- "tags": {
- "name": "Spożywczy",
- "shop": "convenience"
- },
- "name": "Spożywczy",
- "icon": "shop",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/convenience/Фортуна": {
"tags": {
"name": "Фортуна",
],
"suggestion": true
},
- "shop/car_repair/Kwik-Fit": {
- "tags": {
- "name": "Kwik-Fit",
- "shop": "car_repair"
- },
- "name": "Kwik-Fit",
- "icon": "car",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/car_repair/Midas": {
"tags": {
"name": "Midas",
],
"suggestion": true
},
- "shop/car_repair/AutoZone": {
- "tags": {
- "name": "AutoZone",
- "shop": "car_repair"
- },
- "name": "AutoZone",
- "icon": "car",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/car_repair/Автосервис": {
"tags": {
"name": "Автосервис",
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
"operator",
"address",
"building_area",
- "opening_hours"
+ "opening_hours",
+ "drive_through"
],
"suggestion": true
},
],
"suggestion": true
},
- "shop/bakery/Bäcker": {
- "tags": {
- "name": "Bäcker",
- "shop": "bakery"
- },
- "name": "Bäcker",
- "icon": "bakery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/bakery/Schäfer's": {
"tags": {
"name": "Schäfer's",
],
"suggestion": true
},
- "shop/bakery/Piekarnia": {
- "tags": {
- "name": "Piekarnia",
- "shop": "bakery"
- },
- "name": "Piekarnia",
- "icon": "bakery",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/bakery/Пекарня": {
"tags": {
"name": "Пекарня",
],
"suggestion": true
},
- "shop/hairdresser/Fryzjer": {
- "tags": {
- "name": "Fryzjer",
- "shop": "hairdresser"
- },
- "name": "Fryzjer",
- "icon": "hairdresser",
- "geometry": [
- "point",
- "area"
- ],
- "fields": [
- "operator",
- "address",
- "building_area",
- "opening_hours"
- ],
- "suggestion": true
- },
"shop/hairdresser/Franck Provost": {
"tags": {
"name": "Franck Provost",
"landuse/industrial",
"landuse/commercial",
"landuse/retail",
- "landuse/farm",
+ "landuse/farmland",
"landuse/farmyard",
"landuse/forest",
"landuse/meadow",
},
"building_area": {
"key": "building",
- "type": "defaultcheck",
+ "type": "combo",
"default": "yes",
"geometry": "area",
"label": "Building"
"type": "combo",
"label": "Type"
},
+ "content": {
+ "key": "content",
+ "type": "combo",
+ "label": "Contents"
+ },
"country": {
"key": "country",
"type": "combo",
"type": "textarea",
"label": "Description"
},
+ "drive_through": {
+ "key": "drive_through",
+ "type": "check",
+ "label": "Drive-Through"
+ },
"electrified": {
"key": "electrified",
"type": "combo",
"type": "combo",
"label": "Incline"
},
+ "incline_steps": {
+ "key": "incline",
+ "type": "combo",
+ "label": "Incline",
+ "strings": {
+ "options": {
+ "up": "Up",
+ "down": "Down"
+ }
+ }
+ },
"information": {
"key": "information",
"type": "typeCombo",
"type": "typeCombo",
"label": "Type"
},
+ "power_supply": {
+ "key": "power_supply",
+ "type": "check",
+ "label": "Power Supply"
+ },
"railway": {
"key": "railway",
"type": "typeCombo",
}
}
},
+ "sanitary_dump_station": {
+ "key": "sanitary_dump_station",
+ "type": "check",
+ "label": "Toilet Disposal"
+ },
"seasonal": {
"key": "seasonal",
"type": "check",
"drive-through"
]
},
- "service/bicycle/chaintool": {
- "key": "service:bicycle:chaintool",
+ "service/bicycle/chain_tool": {
+ "key": "service:bicycle:chain_tool",
"type": "check",
"label": "Chain Tool",
"strings": {
}
}
},
+ "service_rail": {
+ "key": "service",
+ "type": "combo",
+ "label": "Service Type",
+ "strings": {
+ "options": {
+ "spur": "Spur",
+ "yard": "Yard",
+ "siding": "Siding",
+ "crossover": "Crossover"
+ }
+ }
+ },
"shelter": {
"key": "shelter",
"type": "check",
"type": "combo",
"label": "Type"
},
+ "water_point": {
+ "key": "water_point",
+ "type": "check",
+ "label": "Water Point"
+ },
"waterway": {
"key": "waterway",
"type": "typeCombo",
/**
-* @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
;(function(window, document) {
/*jshint evil:true */
/** version */
- var version = '3.7.2';
+ var version = '3.7.3';
/** Preset options */
var options = window.html5 || {};
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
- * @param {Document} ownerDocument The context document.
+ * @param {Document|DocumentFragment} ownerDocument The context document.
* @returns {Object} The shived element.
*/
function createElement(nodeName, ownerDocument, data){
// shiv the document
shivDocument(document);
-}(this, document));
+ if(typeof module == 'object' && module.exports){
+ module.exports = html5;
+ }
+
+}(typeof window !== "undefined" ? window : this, document));
*/
exports.parse = function(str){
- if ('string' != typeof str) return {};
+ if ('string' !== typeof str) return {};
str = trim(str);
- if ('' == str) return {};
+ if ('' === str) return {};
var obj = {};
var pairs = str.split('&');
for (var i = 0; i < pairs.length; i++) {
var parts = pairs[i].split('=');
- obj[parts[0]] = null == parts[1]
+ obj[parts[0]] = null === parts[1]
? ''
: decodeURIComponent(parts[1]);
}
};
},{}]},{},[])
-;
\ No newline at end of file
+;
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
- // AMD
+ // AMD (Register as an anonymous module)
define(['jquery'], factory);
} else if (typeof exports === 'object') {
- // CommonJS
- factory(require('jquery'));
+ // Node/CommonJS
+ module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
- t.setTime(+t + days * 864e+5);
+ t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
}
return (document.cookie = [
// Read
- var result = key ? undefined : {};
+ var result = key ? undefined : {},
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all. Also prevents odd result when
+ // calling $.cookie().
+ cookies = document.cookie ? document.cookie.split('; ') : [],
+ i = 0,
+ l = cookies.length;
- // To prevent the for loop in the first place assign an empty array
- // in case there are no cookies at all. Also prevents odd result when
- // calling $.cookie().
- var cookies = document.cookie ? document.cookie.split('; ') : [];
+ for (; i < l; i++) {
+ var parts = cookies[i].split('='),
+ name = decode(parts.shift()),
+ cookie = parts.join('=');
- for (var i = 0, l = cookies.length; i < l; i++) {
- var parts = cookies[i].split('=');
- var name = decode(parts.shift());
- var cookie = parts.join('=');
-
- if (key && key === name) {
+ if (key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
config.defaults = {};
$.removeCookie = function (key, options) {
- if ($.cookie(key) === undefined) {
- return false;
- }
-
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
L.OSM.CycleMap = L.OSM.TileLayer.extend({
options: {
- url: 'http://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png',
+ url: document.location.protocol === 'https:' ?
+ 'https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png' :
+ 'http://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png',
attribution: '© <a href="http://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors. Tiles courtesy of <a href="http://www.thunderforest.com/" target="_blank">Andy Allan</a>'
}
});
L.OSM.TransportMap = L.OSM.TileLayer.extend({
options: {
- url: 'http://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png',
+ url: document.location.protocol === 'https:' ?
+ 'https://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png' :
+ 'http://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png',
attribution: '© <a href="http://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors. Tiles courtesy of <a href="http://www.thunderforest.com/" target="_blank">Andy Allan</a>'
}
});
var defaultOptions = function (options) {
if (typeof options === 'number') {
// Legacy
- options = { precision: options };
+ options = {
+ precision: options
+ };
} else {
options = options || {};
}
var numbers = this.decodeFloats(encoded, options);
for (var i = 0, len = numbers.length; i < len;) {
for (var d = 0; d < options.dimension; ++d, ++i) {
- numbers[i] = lastNumbers[d] = numbers[i] + (lastNumbers[d] || 0);
+ numbers[i] = Math.round((lastNumbers[d] = numbers[i] + (lastNumbers[d] || 0)) * options.factor) / options.factor;
}
}
+++ /dev/null
---- !ruby/object:Gem::Specification
-name: rots
-version: !ruby/object:Gem::Version
- prerelease: false
- segments:
- - 0
- - 2
- - 1
- version: 0.2.1
-platform: ruby
-authors:
-- Roman Gonzalez
-autorequire:
-bindir: bin
-cert_chain: []
-
-date: 2010-05-11 00:00:00 +01:00
-default_executable: rots
-dependencies:
-- !ruby/object:Gem::Dependency
- name: rspec
- prerelease: false
- requirement: &id001 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id001
-- !ruby/object:Gem::Dependency
- name: rack
- prerelease: false
- requirement: &id002 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id002
-- !ruby/object:Gem::Dependency
- name: ruby-openid
- prerelease: false
- requirement: &id003 !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
- type: :development
- version_requirements: *id003
-description: |
- Ruby OpenID Test Server (ROST) provides a basic OpenID server made in top of the Rack gem.
- With this small server, you can make dummy OpenID request for testing purposes,
- the success of the response will depend on a parameter given on the url of the authentication request.
-
-email: romanandreg@gmail.com
-executables:
-- rots
-extensions: []
-
-extra_rdoc_files:
-- README
-files:
-- AUTHORS
-- README
-- Rakefile
-- bin/rots
-- lib/rots.rb
-- lib/rots/identity_page_app.rb
-- lib/rots/server_app.rb
-- lib/rots/test_helper.rb
-- rots.gemspec
-- spec/server_app_spec.rb
-- spec/spec_helper.rb
-has_rdoc: true
-homepage: http://github.com/roman
-licenses: []
-
-post_install_message:
-rdoc_options: []
-
-require_paths:
-- lib
-required_ruby_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
-required_rubygems_version: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- segments:
- - 0
- version: "0"
-requirements: []
-
-rubyforge_project: rots
-rubygems_version: 1.3.6
-signing_key:
-specification_version: 3
-summary: an OpenID server for making tests of OpenID clients implementations
-test_files:
-- spec/server_app_spec.rb
-- spec/spec_helper.rb
+++ /dev/null
-* Roman Gonzalez <romanandreg@gmail.com>
-* Anibal Rojas <anibal@rojas.net.ve>
\ No newline at end of file
+++ /dev/null
-= Ruby OpenID Test Server (ROTS), a dummy OpenID server that makes consumer tests dead easy.
-
-ROTS is a minimal implementation of an OpenID server, developed on top of the Rack middleware, this
-server provides an easy to use interface to make testing OpenID consumers really easy.
-
-== No more mocks
-
-Have you always wanted to test the authentication of an OpenID consumer implementation, but find your self
-in a point where is to hard to mock? A lot of people have been there.
-
-With ROTS, you only need to specify an identity url provided by the dummy server, passing with it a flag
-saying that you want the authentication to be successful. It handles SREG extensions as well.
-
-== How does it works
-
-When you install the ROTS gem, a binary called rots is provided for starting the server (for more
-info about what options you have when executing this file, check the -h option).
-
-By default, rots will have a test user called "John Doe", with an OpenID identity "john.doe".
-If you want to use your own test user name, you can specify a config file to rots. The
-default configuration file looks like this:
-
-# Default configuration file
-identity: john.doe
-sreg:
- nickname: jdoe
- fullname: John Doe
- email: jhon@doe.com
- dob: 1985-09-21
- gender: M
-
-You can specify a new config file using the option --config.
-
-== Getting Started
-
-The best way to get started, is running the rots server, and then starting to execute your OpenID consumer tests/specs. You just have to specify the identity url of your test user, if you want the OpenID response be successful just add the openid.success=true flag to the user identity url. If you don't specify the flag it
-will return a cancel response instead.
-
-Example:
-
-it "should authenticate with OpenID" do
- post("/consumer_openid_login", 'identity_url' => 'http://localhost:1132/john.doe?openid.success=true')
-end
-
-== Copyright
-
-Copyright (C) 2009 Roman Gonzalez <romanandreg@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+++ /dev/null
-# Rakefile for Rack. -*-ruby-*-
-require 'rake/rdoctask'
-require 'rake/testtask'
-require 'spec/rake/spectask'
-
-
-desc "Run all the tests"
-task :default => [:spec]
-
-desc "Do predistribution stuff"
-task :predist => [:changelog, :rdoc]
-
-
-desc "Make an archive as .tar.gz"
-task :dist => [:fulltest, :predist] do
- sh "git archive --format=tar --prefix=#{release}/ HEAD^{tree} >#{release}.tar"
- sh "pax -waf #{release}.tar -s ':^:#{release}/:' RDOX SPEC ChangeLog doc"
- sh "gzip -f -9 #{release}.tar"
-end
-
-# Helper to retrieve the "revision number" of the git tree.
-def git_tree_version
- #if File.directory?(".git")
- # @tree_version ||= `git describe`.strip.sub('-', '.')
- # @tree_version << ".0" unless @tree_version.count('.') == 2
- #else
- $: << "lib"
- require 'rots'
- @tree_version = Rots.release
- #end
- @tree_version
-end
-
-def gem_version
- git_tree_version.gsub(/-.*/, '')
-end
-
-def release
- "ruby-openid-tester-#{git_tree_version}"
-end
-
-def manifest
- `git ls-files`.split("\n")
-end
-
-desc "Generate a ChangeLog"
-task :changelog do
- File.open("ChangeLog", "w") do |out|
- `git log -z`.split("\0").map do |chunk|
- author = chunk[/Author: (.*)/, 1].strip
- date = chunk[/Date: (.*)/, 1].strip
- desc, detail = $'.strip.split("\n", 2)
- detail ||= ""
- detail.rstrip!
- out.puts "#{date} #{author}"
- out.puts " * #{desc.strip}"
- out.puts detail unless detail.empty?
- out.puts
- end
- end
-end
-
-
-begin
- require 'rubygems'
-
- require 'rake'
- require 'rake/clean'
- require 'rake/packagetask'
- require 'rake/gempackagetask'
- require 'fileutils'
-rescue LoadError
- # Too bad.
-else
- spec = Gem::Specification.new do |s|
- s.name = "rots"
- s.version = gem_version
- s.platform = Gem::Platform::RUBY
- s.summary = "an OpenID server for making tests of OpenID clients implementations"
-
- s.description = <<-EOF
-Ruby OpenID Test Server (ROST) provides a basic OpenID server made in top of the Rack gem.
-With this small server, you can make dummy OpenID request for testing purposes,
-the success of the response will depend on a parameter given on the url of the authentication request.
- EOF
-
- s.files = manifest
- s.bindir = 'bin'
- s.executables << 'rots'
- s.require_path = 'lib'
- s.has_rdoc = true
- s.extra_rdoc_files = ['README']
- s.test_files = Dir['spec/*_spec.rb']
-
- s.author = 'Roman Gonzalez'
- s.email = 'romanandreg@gmail.com'
- s.homepage = 'http://github.com/roman'
- s.rubyforge_project = 'rots'
-
- s.add_development_dependency 'rspec'
- s.add_development_dependency 'rack'
- s.add_development_dependency 'ruby-openid', '~> 2.0.0'
- end
-
- Rake::GemPackageTask.new(spec) do |p|
- p.gem_spec = spec
- p.need_tar = false
- p.need_zip = false
- end
-end
-
-Spec::Rake::SpecTask.new do |t|
-end
-
-desc "Generate RDoc documentation"
-Rake::RDocTask.new(:rdoc) do |rdoc|
- rdoc.options << '--line-numbers' << '--inline-source' <<
- '--main' << 'README' <<
- '--title' << 'ROTS Documentation' <<
- '--charset' << 'utf-8'
- rdoc.rdoc_dir = "doc"
- rdoc.rdoc_files.include 'README'
- rdoc.rdoc_files.include('lib/ruby_openid_test_server.rb')
- rdoc.rdoc_files.include('lib/ruby_openid_test_server/*.rb')
-end
+++ /dev/null
-#!/usr/bin/env ruby
-# -*- ruby -*-
-
-$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
-require "rubygems"
-require "optparse"
-require "rack"
-require "yaml"
-require "rots"
-
-server_options = {
- :debugger => false,
- :port => 1123,
- :verbose => true,
- :storage => File.join('.', 'tmp', 'rots'),
- :config => <<-DEFAULT_CONFIG
-# Default configuration file
-identity: john.doe
-sreg:
- nickname: jdoe
- fullname: John Doe
- email: jhon@doe.com
- dob: 1985-09-21
- gender: M
-
- DEFAULT_CONFIG
-}
-
-opts = OptionParser.new do |opts|
- opts.banner = "Usage: rots [options]"
-
- opts.separator ""
- opts.separator "Options:"
-
- opts.on("-p", "--port PORT",
- "use PORT (default: 1123)") do |port|
- server_options[:port] = port
- end
-
- opts.on("-s", "--storage PATH",
- "use PATH as the OpenID Server storage path (default: ./tmp/rots)") do |storage_path|
- server_options[:storage] = storage_path
- end
-
- opts.on("-c", "--config FILE.yaml",
- "server configuration YAML file") do |config_path|
- abort "\x1B[31mConfiguration file #{config_path} not found\x1B[0m" unless File.exists?(config_path)
- server_options[:config] = File.new(config_path)
- end
-
- opts.on("-s", "--silent",
- "If specified, the server will be in silent mode") do
- server_options[:verbose] = false
- end
-
- opts.on("-d", "--debugger") do
- server_options[:debugger] = true
- end
-
- opts.separator ""
- opts.separator "Common options:"
-
- opts.on_tail("-h", "--help", "Show this help message") do
- puts opts
- exit
- end
-
-end
-
-opts.parse!(ARGV)
-
-config = YAML.load(server_options[:config])
-
-require "ruby-debug" if server_options[:debugger]
-
-server = Rack::Builder.new do
- use Rack::Lint
- if server_options[:verbose]
- use Rack::CommonLogger, STDOUT
- use Rack::ShowExceptions
- end
- map ("/%s" % config['identity']) do
- run Rots::IdentityPageApp.new(config, server_options)
- end
- map "/server" do
- run Rots::ServerApp.new(config, server_options)
- end
-end
-
-puts "\x1B[32mRunning OpenID Test server on port 1123\x1B[0m" if server_options[:verbose]
-begin
- Rack::Handler::Mongrel.run server, :Port => server_options[:port]
-rescue LoadError
- if server_options[:verbose]
- Rack::Handler::WEBrick.run server, :Port => server_options[:port]
- else
- Rack::Handler::WEBrick.run server, :Port => server_options[:port], :AccessLog => [], :Logger => WEBrick::Log::new("/dev/null", 7)
- end
-end
+++ /dev/null
-module Rots
-
- def self.release
- "0.2.1"
- end
-
-end
-
-require "rots/server_app"
-require "rots/identity_page_app"
-require "rots/test_helper"
+++ /dev/null
-require 'rack/request'
-require 'rack/response'
-require 'rack/utils'
-require 'openid'
-
-class Rots::IdentityPageApp
-
- def initialize(config, server_options)
- @server_options = server_options
- @config = config
- end
-
- def call(env)
- @request = Rack::Request.new(env)
- Rack::Response.new do |response|
- response.write <<-HERE
-<html>
- <head>
- <link rel="openid2.provider" href="#{op_endpoint}" />
- <link rel="openid.server" href="#{op_endpoint}" />
- </head>
- <body>
- <h1>This is #{@config['identity']} identity page</h1>
- </body>
-</html>
- HERE
- end.finish
- end
-
- def op_endpoint
- "http://%s:%d/server/%s" % [@request.host,
- @request.port,
- (@request.params['openid.success'] ? '?openid.success=true' : '')]
- end
-
-end
\ No newline at end of file
+++ /dev/null
-require 'openid'
-require 'openid/extension'
-require 'openid/extensions/sreg'
-require 'openid/store/filesystem'
-require 'openid/util'
-require 'rack/request'
-require 'rack/utils'
-require 'fileutils'
-
-
-module Rots
-
- class ServerApp
-
- attr_accessor :request,:openid_request,
- :response, :openid_response,
- :server
-
- def initialize(config, server_options)
- @server_options = server_options
- @sreg_fields = config['sreg']
- end
-
- def call(env)
- on_openid_request(env) do
- if !is_checkid_request?
- @openid_response = @server.handle_request(@openid_request)
- reply_consumer
- elsif is_checkid_immediate?
- process_immediate_checkid_request
- else
- process_checkid_request
- end
- end
- end
-
- protected
-
- def on_openid_request(env)
- create_wrappers(env)
- if @openid_request.nil?
- [200, {'Content-Type' => 'text/html'},
- ["<html><body><h1>ROTS => This is an OpenID endpoint</h1></body></html>"] ]
- else
- yield
- end
- end
-
- def create_wrappers(env)
- @request = Rack::Request.new(env)
- @server = OpenID::Server::Server.new(storage, op_endpoint)
- @openid_request = @server.decode_request(@request.params)
- @openid_sreg_request = OpenID::SReg::Request.from_openid_request(@openid_request) unless @openid_request.nil?
- end
-
- def is_checkid_request?
- @openid_request.is_a?(OpenID::Server::CheckIDRequest)
- end
-
- def is_checkid_immediate?
- @openid_request && @openid_request.immediate
- end
-
- def process_immediate_checkid_request
- # TODO: We should enable the user to configure
- # if she wants immediate request support or not
- url = OpenID::Util.append_args(@openid_request.return_to,
- @request.params.merge('openid.mode' => 'setup_needed'))
- redirect(url)
- end
-
- def process_checkid_request
- if checkid_request_is_valid?
- return_successful_openid_response
- else
- return_cancel_openid_response
- end
- end
-
- def checkid_request_is_valid?
- @request.params['openid.success'] == 'true'
- end
-
- def return_successful_openid_response
- @openid_response = @openid_request.answer(true)
- process_sreg_extension
- # TODO: Add support for SREG extension
- @server.signatory.sign(@openid_response) if @openid_response.needs_signing
- reply_consumer
- end
-
- def process_sreg_extension
- return if @openid_sreg_request.nil?
- response = OpenID::SReg::Response.extract_response(@openid_sreg_request, @sreg_fields)
- @openid_response.add_extension(response)
- end
-
- def return_cancel_openid_response
- redirect(@openid_request.cancel_url)
- end
-
- def reply_consumer
- web_response = @server.encode_response(@openid_response)
- case web_response.code
- when OpenID::Server::HTTP_OK
- success(web_response.body)
- when OpenID::Server::HTTP_REDIRECT
- redirect(web_response.headers['location'])
- else
- bad_request
- end
- end
-
- def redirect(uri)
- [ 303, {'Content-Length'=>'0', 'Content-Type'=>'text/plain',
- 'Location' => uri},
- [] ]
- end
-
- def bad_request()
- [ 400, {'Content-Type'=>'text/plain', 'Content-Length'=>'0'},
- [] ]
- end
-
- def storage
- # create the folder if it doesn't exist
- FileUtils.mkdir_p(@server_options[:storage]) unless File.exist?(@server_options[:storage])
- OpenID::Store::Filesystem.new(@server_options[:storage])
- end
-
- def success(text="")
- Rack::Response.new(text).finish
- end
-
- def op_endpoint
- if @request.url =~ /(.*\?openid.success=true)/
- $1
- elsif @request.url =~ /([^?]*)/
- $1
- else
- nil
- end
- end
-
- end
-
-end
\ No newline at end of file
+++ /dev/null
-require "openid/consumer"
-require "openid/consumer/checkid_request.rb"
-require "net/http"
-
-module Rots::TestHelper
-
- def openid_request(openid_request_uri)
- openid_response = Net::HTTP.get_response(URI.parse(openid_request_uri))
- openid_response_uri = URI(openid_response['Location'])
- openid_response_qs = Rack::Utils.parse_query(openid_response_uri.query)
-
- { :url => openid_response_uri.to_s,
- :query_params => openid_response_qs }
- end
-
-end
\ No newline at end of file
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = "rots"
- s.version = '0.2.1'
- s.platform = Gem::Platform::RUBY
- s.summary = "an OpenID server for making tests of OpenID clients implementations"
-
- s.description = <<-EOF
-Ruby OpenID Test Server (ROST) provides a basic OpenID server made in top of the Rack gem.
-With this small server, you can make dummy OpenID request for testing purposes,
-the success of the response will depend on a parameter given on the url of the authentication request.
- EOF
-
- s.files = ["AUTHORS", "README", "Rakefile", "bin/rots", "lib/rots.rb", "lib/rots/identity_page_app.rb", "lib/rots/server_app.rb", "lib/rots/test_helper.rb","rots.gemspec", "spec/server_app_spec.rb", "spec/spec_helper.rb"]
- s.bindir = 'bin'
- s.executables << 'rots'
- s.require_path = 'lib'
- s.has_rdoc = true
- s.extra_rdoc_files = ['README']
- s.test_files = ['spec/server_app_spec.rb', 'spec/spec_helper.rb']
-
- s.author = 'Roman Gonzalez'
- s.email = 'romanandreg@gmail.com'
- s.homepage = 'http://github.com/roman'
- s.rubyforge_project = 'rots'
-
- s.add_development_dependency 'rspec'
- s.add_development_dependency 'rack'
- s.add_development_dependency 'ruby-openid'
-end
+++ /dev/null
-require File.join(File.dirname(__FILE__), 'spec_helper')
-
-# This is just a comment test
-
-describe Rots::ServerApp do
-
- describe "when the request is not an OpenID request" do
-
- it "should return a helpful message saying that is an OpenID endpoint" do
- request = Rack::MockRequest.new(Rots::ServerApp.new({'sreg' => {}},
- {:storage => File.join(*%w(. tmp rots)) }))
- response = request.get("/")
- response.should be_ok
- response.body.should == "<html><body><h1>ROTS => This is an OpenID endpoint</h1></body></html>"
- end
-
- end
-
- describe "when the request is an OpenID request" do
-
- before(:each) do
- @request = Rack::MockRequest.new(Rots::ServerApp.new({
- 'identity' => 'john.doe',
- 'sreg' => {
- 'email' => "john@doe.com",
- 'nickname' => 'johndoe',
- 'fullname' => "John Doe",
- 'dob' => "1985-09-21",
- 'gender' => "M"
- }},
- {:storage => File.join(*%w(. tmp rots))}
- ))
- end
-
-
- describe "and it is a check_id request" do
-
- describe "and is immediate" do
-
- it "should return an openid.mode equal to setup_needed" do
- response = checkid_immediate(@request)
- params = openid_params(response)
- params['openid.mode'].should == 'setup_needed'
- end
-
- end
-
- describe "and is not immediate" do
-
- describe "with a success flag" do
-
- it "should return an openid.mode equal to id_res" do
- response = checkid_setup(@request, 'openid.success' => 'true')
- params = openid_params(response)
- params['openid.mode'].should == 'id_res'
- end
-
- end
-
- describe "without a success flag" do
-
- it "should return an openid.mode equal to cancel" do
- response = checkid_setup(@request)
- params = openid_params(response)
- params['openid.mode'].should == 'cancel'
- end
-
- end
-
- describe "using SREG extension with a success flag" do
-
- it "should return an openid.mode equal to id_res" do
- response = checkid_setup(@request, 'openid.success' => 'true')
- params = openid_params(response)
- params['openid.mode'].should == 'id_res'
- end
-
- it "should return all the sreg fields" do
- response = checkid_setup(@request, {
- 'openid.success' => true,
- 'openid.ns.sreg' => OpenID::SReg::NS_URI,
- 'openid.sreg.required' => 'email,nickname,fullname',
- 'openid.sreg.optional' => 'dob,gender'
- })
- params = openid_params(response)
- params['openid.sreg.email'].should == "john@doe.com"
- params['openid.sreg.nickname'].should == 'johndoe'
- params['openid.sreg.fullname'].should == "John Doe"
- params['openid.sreg.dob'].should == "1985-09-21"
- params['openid.sreg.gender'].should == "M"
- end
-
- end
-
- end
- end
- end
-
-end
\ No newline at end of file
+++ /dev/null
-$:.unshift(File.dirname(__FILE__), '..', 'lib')
-require "rubygems"
-require "spec"
-require "rack"
-require "rots"
-
-module Rots::RequestHelper
-
- def checkid_setup(request, params={}, with_associate=true)
- assoc_handle = make_association(request) if with_associate
- send_checkid(request, :setup, params, assoc_handle)
- end
-
- def checkid_immediate(request, params={}, with_associate=true)
- assoc_handle = make_association(request) if with_associate
- send_checkid(request, :immediate, params, assoc_handle)
- end
-
- def openid_params(response)
- uri = URI(response.headers['Location'])
- Rack::Utils.parse_query(uri.query)
- end
-
- protected
-
- def send_checkid(request, mode, params={}, assoc_handle = nil)
- params = self.send(:"checkid_#{mode}_params", params)
- params.merge('openid.assoc_handle' => assoc_handle) if assoc_handle
- qs = "/?" + Rack::Utils.build_query(params)
- request.get(qs)
- end
-
- def make_association(request)
- associate_qs = Rack::Utils.build_query(associate_params)
- response = request.post('/', :input => associate_qs)
- parse_assoc_handle_from(response)
- end
-
- def parse_assoc_handle_from(response)
- response.body.split("\n")[0].match(/^assoc_handle:(.*)$/).captures[0]
- end
-
- def checkid_setup_params(params = {})
- {
- "openid.ns" => "http://specs.openid.net/auth/2.0",
- "openid.mode" => "checkid_setup",
- "openid.claimed_id" => 'john.doe',
- "openid.identity" => 'john.doe',
- "openid.return_to" => "http://www.google.com"
- # need to specify the openid_handle by hand
- }.merge!(params)
- end
-
- def checkid_immediate_params(params = {})
- checkid_setup_params({'openid.mode' => 'checkid_immediate'}.merge!(params))
- end
-
- def associate_params
- {
- "openid.ns" => "http://specs.openid.net/auth/2.0",
- "openid.mode" => "associate",
- "openid.session_type" => "DH-SHA1",
- "openid.assoc_type" => "HMAC-SHA1",
- "openid.dh_consumer_public" =>
- "U672/RsDUNxAFFAXA+ShVh5LMD2CRdsoqdqhDCPUzfCNy2f44uTWuid/MZuGfJmiVA7QmxqM3GSb8EVq3SGK8eGEwwyzUtatqHidx72rfwAav5AUrZTnwSPQJyiCFrKNGmNhXdRJzcfzSkgaC3hVz2kpADzEevIExG6agns1sYY="
- }
- end
-
-end
-
-Spec::Runner.configure do |config|
- config.include Rots::RequestHelper
-end
\ No newline at end of file