Merge branch 'master' into feature/add-communities-page

This commit is contained in:
Adam Hoyle 2021-12-14 10:42:42 +00:00 committed by GitHub
commit 46875fdde3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
231 changed files with 8624 additions and 6133 deletions

33
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View file

@ -0,0 +1,33 @@
name: A Bug
description: Something has gone wrong when you were using the website.
# title:
# labels:
# assignees:
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: input
id: url
attributes:
label: URL
description: Please share the URL where the issue can be seen.
placeholder: https://www.openstreetmap.org/...
validations:
required: false
- type: textarea
id: steps-reproduce
attributes:
label: How to reproduce the issue?
description: Please share the steps to reproduce the issue.
placeholder: 1. ..., 2. ..., 3. ...
validations:
required: false
- type: textarea
attributes:
label: Screenshot(s) or anything else?
description: Please add screenshots or additional information to help us understand your issue.
placeholder:
validations:
required: false

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: There is an issue with the default map layer shown on the front page
url: https://github.com/gravitystorm/openstreetmap-carto
about: Please share your feedback with the OpenStreetMap-Carto team
- name: There is an issue with the iD editor used on the Edit tab
url: https://github.com/openstreetmap/iD
about: Please share your feedback with the iD team
- name: There is an issue with the search results
url: https://github.com/osm-search/Nominatim
about: Please share your feedback with the Nominatim team

21
.github/ISSUE_TEMPLATE/feature.yml vendored Normal file
View file

@ -0,0 +1,21 @@
name: 'Feature, Idea, Question'
description: You want to request a feature, share an idea or have a question.
# title:
# labels:
# assignees:
body:
- type: textarea
id: idea
attributes:
label: Description
description: Please describe you feature request, idea or question.
placeholder:
validations:
required: false
- type: textarea
attributes:
label: Screenshots
description: Please add screenshots if they can help us understand your request/idea/question.
placeholder:
validations:
required: false

View file

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Checkout source
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Poke config
run: |
cp config/example.storage.yml config/storage.yml

View file

@ -11,13 +11,13 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Setup ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: ${{ env.ruby }}
- name: Cache gems
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: vendor/bundle
key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
@ -35,13 +35,13 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Setup ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: ${{ env.ruby }}
- name: Cache gems
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: vendor/bundle
key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
@ -59,20 +59,20 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Setup ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: ${{ env.ruby }}
- name: Cache gems
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: vendor/bundle
key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
bundle-${{ env.os }}-${{ env.ruby }}-
- name: Cache node modules
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: node_modules
key: yarn-${{ env.os }}-${{ hashFiles('yarn.lock') }}
@ -94,13 +94,13 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Setup ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: ${{ env.ruby }}
- name: Cache gems
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: vendor/bundle
key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}

View file

@ -15,20 +15,20 @@ jobs:
OPENSTREETMAP_MEMCACHE_SERVERS: 127.0.0.1
steps:
- name: Checkout source
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Setup ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: ${{ matrix.ruby }}
- name: Cache gems
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: vendor/bundle
key: bundle-ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}-${{ hashFiles('Gemfile.lock') }}
restore-keys: |
bundle-ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}-
- name: Cache node modules
uses: actions/cache@v2.1.6
uses: actions/cache@v2.1.7
with:
path: node_modules
key: yarn-ubuntu-${{ matrix.ubuntu }}-${{ hashFiles('yarn.lock') }}

10
Gemfile
View file

@ -33,6 +33,9 @@ gem "autoprefixer-rails"
# Use image_optim to optimise images
gem "image_optim_rails"
# Use argon2 for password hashing
gem "argon2"
# Load rails plugins
gem "actionpack-page_caching", ">= 1.2.0"
gem "activerecord-import"
@ -40,7 +43,7 @@ gem "active_record_union"
gem "bootstrap", "~> 4.5.0"
gem "bootstrap_form", "~> 4.0"
gem "cancancan"
gem "composite_primary_keys", "~> 13.0.0"
gem "composite_primary_keys", "~> 13.0.0", "!= 13.0.1"
gem "config"
gem "delayed_job_active_record"
gem "http_accept_language", "~> 2.1.1"
@ -96,6 +99,7 @@ gem "maxminddb"
gem "rotp"
# Load memcache client in case we are using it
gem "connection_pool"
gem "dalli"
gem "kgio"
@ -145,9 +149,9 @@ group :test do
gem "rubocop"
gem "rubocop-minitest"
gem "rubocop-performance"
gem "rubocop-rails", "~> 2.11.3" # Bug in 2.12.0, fixed in master after 2.12.2
gem "rubocop-rails"
gem "rubocop-rake"
gem "selenium-webdriver"
gem "selenium-webdriver", "~> 3.142.7"
gem "simplecov", :require => false
gem "simplecov-lcov", :require => false
gem "webmock"

View file

@ -73,21 +73,24 @@ GEM
annotate (3.1.1)
activerecord (>= 3.2, < 7.0)
rake (>= 10.4, < 14.0)
argon2 (2.1.1)
ffi (~> 1.14)
ffi-compiler (~> 1.0)
ast (2.4.2)
autoprefixer-rails (10.3.3.0)
execjs (~> 2)
aws-eventstream (1.2.0)
aws-partitions (1.513.0)
aws-sdk-core (3.121.1)
aws-partitions (1.539.0)
aws-sdk-core (3.124.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-partitions (~> 1, >= 1.525.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.49.0)
aws-sdk-core (~> 3, >= 3.120.0)
aws-sdk-kms (1.52.0)
aws-sdk-core (~> 3, >= 3.122.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.103.0)
aws-sdk-core (~> 3, >= 3.120.0)
aws-sdk-s3 (1.109.0)
aws-sdk-core (~> 3, >= 3.122.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.4.0)
@ -106,7 +109,7 @@ GEM
smart_properties
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
bootsnap (1.9.1)
bootsnap (1.9.3)
msgpack (~> 1.0)
bootstrap (4.5.3)
autoprefixer-rails (>= 9.1.0)
@ -115,16 +118,17 @@ GEM
bootstrap_form (4.5.0)
actionpack (>= 5.2)
activemodel (>= 5.2)
brakeman (5.1.1)
brakeman (5.1.2)
browser (5.3.1)
builder (3.2.4)
bzip2-ffi (1.1.0)
ffi (~> 1.0)
cancancan (3.3.0)
canonical-rails (0.2.12)
rails (>= 4.1, < 6.2)
capybara (3.35.3)
canonical-rails (0.2.13)
rails (>= 4.1, <= 7.0)
capybara (3.36.0)
addressable
matrix
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
@ -139,10 +143,11 @@ GEM
config (3.1.0)
deep_merge (~> 1.2, >= 1.2.1)
dry-validation (~> 1.0, >= 1.0.0)
connection_pool (2.2.5)
crack (0.4.5)
rexml
crass (1.0.6)
dalli (2.7.11)
dalli (3.1.0)
debug_inspector (1.1.0)
deep_merge (1.2.1)
delayed_job (4.1.9)
@ -223,26 +228,29 @@ GEM
faraday-patron (1.0.0)
faraday-rack (1.0.0)
ffi (1.15.4)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
ffi-libarchive (1.1.3)
ffi (~> 1.0)
fspath (3.1.2)
gd2-ffij (0.4.0)
ffi (>= 1.0.0)
globalid (0.5.2)
globalid (1.0.0)
activesupport (>= 5.0)
hashdiff (1.0.1)
hashie (4.1.0)
hashie (5.0.0)
html_tokenizer (0.0.7)
htmlentities (4.3.4)
http_accept_language (2.1.1)
i18n (1.8.10)
i18n (1.8.11)
concurrent-ruby (~> 1.0)
i18n-js (3.9.0)
i18n (>= 0.6.6)
image_optim (0.31.0)
image_optim (0.31.1)
exifr (~> 1.2, >= 1.2.2)
fspath (~> 3.0)
image_size (>= 1.5, < 3)
image_size (>= 1.5, < 4)
in_threads (~> 1.3)
progress (~> 3.0, >= 3.0.1)
image_optim_rails (0.4.3)
@ -252,16 +260,16 @@ GEM
image_processing (1.12.1)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
image_size (2.1.2)
image_size (3.0.1)
in_threads (1.5.4)
jbuilder (2.11.2)
jbuilder (2.11.3)
activesupport (>= 5.0.0)
jmespath (1.4.0)
jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (2.5.1)
json (2.6.1)
jwt (2.3.0)
kgio (2.11.4)
kramdown (2.3.1)
@ -279,6 +287,7 @@ GEM
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (1.0.2)
matrix (0.4.2)
maxminddb (0.1.22)
method_source (1.0.0)
mini_magick (4.11.0)
@ -309,7 +318,7 @@ GEM
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
rack-protection
omniauth-facebook (8.0.0)
omniauth-facebook (9.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-github (2.0.0)
omniauth (~> 2.0)
@ -325,7 +334,7 @@ GEM
omniauth-oauth (1.2.0)
oauth
omniauth (>= 1.0, < 3)
omniauth-oauth2 (1.7.1)
omniauth-oauth2 (1.7.2)
oauth2 (~> 1.4)
omniauth (>= 1.9, < 3)
omniauth-openid (2.0.1)
@ -339,17 +348,17 @@ GEM
omniauth-oauth2 (~> 1.4)
openstreetmap-deadlock_retry (1.3.1)
parallel (1.21.0)
parser (3.0.2.0)
parser (3.0.3.1)
ast (~> 2.4.1)
pg (1.2.3)
popper_js (1.16.0)
progress (3.6.0)
public_suffix (4.0.6)
puma (5.5.1)
puma (5.5.2)
nio4r (~> 2.0)
quad_tile (1.0.1)
r2 (0.2.7)
racc (1.5.2)
racc (1.6.0)
rack (2.2.3)
rack-cors (1.1.1)
rack (>= 2.0.0)
@ -399,13 +408,13 @@ GEM
rb-fsevent (0.11.0)
rb-inotify (0.10.1)
ffi (~> 1.0)
regexp_parser (2.1.1)
regexp_parser (2.2.0)
request_store (1.5.0)
rack (>= 1.4)
rexml (3.2.5)
rinku (2.0.6)
rotp (6.2.0)
rubocop (1.22.1)
rubocop (1.23.0)
parallel (~> 1.10)
parser (>= 3.0.0.0)
rainbow (>= 2.2.2, < 4.0)
@ -414,14 +423,14 @@ GEM
rubocop-ast (>= 1.12.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.12.0)
rubocop-ast (1.14.0)
parser (>= 3.0.1.1)
rubocop-minitest (0.15.2)
rubocop-minitest (0.17.0)
rubocop (>= 0.90, < 2.0)
rubocop-performance (1.11.5)
rubocop-performance (1.12.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.11.3)
rubocop-rails (2.12.4)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.7.0, < 2.0)
@ -429,7 +438,7 @@ GEM
rubocop (~> 1.0)
ruby-openid (2.9.2)
ruby-progressbar (1.11.0)
ruby-vips (2.1.3)
ruby-vips (2.1.4)
ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
@ -459,13 +468,13 @@ GEM
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets-rails (3.4.1)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
strong_migrations (0.7.8)
activerecord (>= 5)
terser (1.1.7)
terser (1.1.8)
execjs (>= 0.3.0, < 3)
thor (1.1.0)
tilt (2.0.10)
@ -484,7 +493,7 @@ GEM
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.4.2)
zeitwerk (2.5.1)
PLATFORMS
ruby
@ -495,6 +504,7 @@ DEPENDENCIES
active_record_union
activerecord-import
annotate
argon2
autoprefixer-rails
aws-sdk-s3
better_errors
@ -508,8 +518,9 @@ DEPENDENCIES
cancancan
canonical-rails
capybara (>= 2.15)
composite_primary_keys (~> 13.0.0)
composite_primary_keys (~> 13.0.0, != 13.0.1)
config
connection_pool
dalli
debug_inspector
delayed_job_active_record
@ -560,12 +571,12 @@ DEPENDENCIES
rubocop
rubocop-minitest
rubocop-performance
rubocop-rails (~> 2.11.3)
rubocop-rails
rubocop-rake
sanitize
sassc-rails
secure_headers
selenium-webdriver
selenium-webdriver (~> 3.142.7)
simplecov
simplecov-lcov
strong_migrations

View file

@ -43,7 +43,6 @@ folder 'vendor/assets' do
end
folder 'polyfill' do
file 'es5.js', 'https://polyfill.io/v3/polyfill.js?features=es5&flags=gated,always'
file 'es6.js', 'https://polyfill.io/v3/polyfill.js?features=es6&flags=gated,always'
end
end

View file

@ -19,8 +19,6 @@
//= link_directory ../../../vendor/assets/polyfill .js
//= link html5shiv/dist/html5shiv.js
//= link leaflet/dist/images/marker-icon.png
//= link leaflet/dist/images/marker-icon-2x.png
//= link leaflet/dist/images/marker-shadow.png

View file

@ -79,6 +79,16 @@ a {
color: $blue;
}
/* Rules for borders */
/* These add additional colours to those provided by bootstrap */
.border-grey {
border-color: $grey !important;
}
.border-lightgrey {
border-color: $lightgrey !important;
}
/* Rules for the header */
#menu-icon {
@ -216,11 +226,6 @@ nav.secondary {
}
}
img.user_thumbnail_tiny {
border: 0;
border-radius: 3px;
}
#inboxanchor {
display: inline-block;
height: 25px;
@ -370,8 +375,6 @@ body.compact-nav {
}
h3, h4 {
margin-top: $lineheight;
margin-bottom: $lineheight/2;
font-size: 1.25rem;
}
@ -390,23 +393,6 @@ body.compact-nav {
top: 20px;
}
}
.icon.close {
float: right;
cursor: pointer;
}
.flash {
padding: 15px;
picture {
margin-right: -25px;
}
div.message {
margin-left: 30px;
}
}
}
.overlay-sidebar #sidebar {
@ -813,7 +799,6 @@ tr.turn:hover {
border-bottom: 1px solid $grey;
h4:first-child {
margin-top: 0;
word-wrap: break-word;
}
}
@ -822,42 +807,13 @@ tr.turn:hover {
border-bottom: none;
}
.paginate {
float: right;
padding: 1px 6px;
border: 1px solid $lightgrey;
border-radius: 3px;
}
.browse-field {
margin-bottom: 10px;
h4 {
padding: 5px 0 5px 10px;
font-size: 12px;
border: 1px solid $grey;
border-radius: 4px 4px 0 0;
background-color: $offwhite;
}
p {
padding: 7px 10px;
font-size: 12px;
background-color: #FFF;
border: 1px solid $grey;
border-top: 0;
border-radius: 0 0 4px 4px;
}
}
.browse-tag-list {
background-color: $offwhite;
border: 1px solid $grey;
border-radius: 3px;
table-layout: fixed;
border-collapse: separate;
border-spacing: 0;
width: 100%;
margin-bottom: $spacer;
th, td {
border-bottom: 1px solid $grey;
@ -904,16 +860,6 @@ tr.turn:hover {
}
}
.comments-header {
float: left;
}
.subscribe-buttons {
float: left;
margin: 18px 10px 10px;
min-width: 80px;
}
.subscribe-buttons input {
font-size: 90%;
line-height: 15px;
@ -966,7 +912,7 @@ tr.turn:hover {
}
.export_area_inputs {
margin-bottom: $lineheight/2;
margin-bottom: $spacer;
input[type="text"] {
width: 100px;
text-align: center;
@ -975,8 +921,6 @@ tr.turn:hover {
.export_boxy {
background: $lightgrey;
border: 1px solid $grey;
border-radius: 3px;
#maxlat { margin-top: -1px; }
#minlon {
@ -1063,6 +1007,7 @@ tr.turn:hover {
background-image: image-url("sign-up-illustration-arm.png");
position: absolute;
z-index: 100;
pointer-events: none;
}
}
@ -1083,7 +1028,6 @@ tr.turn:hover {
.content_map {
height: 200px;
border: 1px solid $grey;
margin-bottom: $lineheight;
}
@ -1093,13 +1037,6 @@ tr.turn:hover {
}
}
/* Rules for the user profile page */
.contact-activity {
margin-top: $lineheight;
width: 100%;
}
/* Rules for the user map */
.content_map .leaflet-popup-content {
@ -1116,30 +1053,12 @@ tr.turn:hover {
margin-top: 0 0 0 60px;
font-size: 12px;
}
img.user_thumbnail {
float: left;
margin: 0 $lineheight/2 0 0;
}
}
/* Rules for the user list */
#user_list {
width: 100%;
tr {
vertical-align: middle;
}
p {
margin-top: 0px;
margin-bottom: 0px;
}
}
#user_list_actions {
float: right;
margin-top: $lineheight/2;
}
/* Rules for the diary list page */
@ -1150,26 +1069,9 @@ tr.turn:hover {
padding-bottom: $lineheight/2;
border-top: 1px solid $grey;
&:first-of-type {
margin-top: $lineheight/2;
}
&.deleted {
background-color: #fee;
}
.post_heading {
margin-bottom: $lineheight;
h2 {
margin-top: 0;
margin-bottom: $lineheight/2;
}
}
img.user_thumbnail {
float: left;
}
}
/* Rules for the diary entry page */
@ -1177,7 +1079,6 @@ tr.turn:hover {
.diary_entries {
#map {
height: 400px;
border: 1px solid $grey;
display: none;
margin-bottom: $lineheight;
}
@ -1206,10 +1107,6 @@ tr.turn:hover {
}
}
.diary_entries-show img.user_thumbnail {
float: left;
}
/* Rules for the log in page */
#login_auth_buttons {
@ -1225,7 +1122,6 @@ tr.turn:hover {
.users-terms {
.legale {
border: 1px solid $grey;
padding: $lineheight;
margin-bottom: $lineheight;
overflow: auto;
@ -1338,8 +1234,6 @@ tr.turn:hover {
/* Rules for "flash" notice boxes shown at the top of the content area */
.flash {
padding: $lineheight;
&.error {
background-color: #ff7070;
}
@ -1423,29 +1317,11 @@ tr.turn:hover {
img.user_image {
max-width: 100px;
max-height: 100px;
border: 1px solid $grey;
margin-bottom: $lineheight;
float: left;
margin-right: $lineheight;
}
img.user_image_no_margins {
max-width: 100px;
max-height: 100px;
border: 1px solid $grey;
}
img.user_thumbnail {
max-width: 50px;
max-height: 50px;
border: 1px solid $grey;
margin-right: $lineheight;
}
img.user_thumbnail_no_margins {
max-width: 50px;
max-height: 50px;
border: 1px solid $grey;
}
img.user_thumbnail_tiny {
@ -1453,7 +1329,6 @@ img.user_thumbnail_tiny {
height: auto;
max-width: 25px;
max-height: 25px;
border: 1px solid $grey;
}
/* Rules for geo microformats */
@ -1611,10 +1486,6 @@ dl.dl-inline {
}
}
.comments .richtext {
margin-left: 70px;
}
/* Rules for the user notes list */
.note_list {
@ -1744,8 +1615,8 @@ dl.dl-inline {
.byosm span {
display: inline-block;
width: 20px;
margin-left: -20px;
width: 1em;
margin-left: -1em;
}
}

View file

@ -15,9 +15,6 @@ div.leaflet-marker-icon.location-filter.move-marker {
/* Override some conflicting styles.
https://github.com/openstreetmap/openstreetmap-website/pull/121#issuecomment-10206946 */
.leaflet-popup-content img.user_thumbnail {
max-width: 50px !important;
}
.user_popup p {
margin: 0 !important;

View file

@ -15,6 +15,5 @@ $hovercolor: 20%;
$headerHeight: 55px;
$sidebarWidth: 350px;
$keyline: 1px solid $lightgrey;
$border-radius: 3px;
$list-highlight: #FFFFC0;
$border: 1px solid $grey;

View file

@ -38,7 +38,7 @@ module Api
if trace.user == current_user
trace.visible = false
trace.save!
TraceDestroyerJob.perform_later(trace) if Settings.trace_use_job_queue
TraceDestroyerJob.perform_later(trace)
head :ok
else
@ -79,7 +79,7 @@ module Api
trace = do_create(params[:file], tags, description, visibility)
if trace.id
TraceImporterJob.perform_later(trace) if Settings.trace_use_job_queue
TraceImporterJob.perform_later(trace)
render :plain => trace.id.to_s
elsif trace.valid?
head :internal_server_error

View file

@ -381,19 +381,23 @@ class ApplicationController < ActionController::Base
# clean any referer parameter
def safe_referer(referer)
referer = URI.parse(referer)
begin
referer = URI.parse(referer)
if referer.scheme == "http" || referer.scheme == "https"
referer.scheme = nil
referer.host = nil
referer.port = nil
elsif referer.scheme || referer.host || referer.port
if referer.scheme == "http" || referer.scheme == "https"
referer.scheme = nil
referer.host = nil
referer.port = nil
elsif referer.scheme || referer.host || referer.port
referer = nil
end
referer = nil if referer&.path&.first != "/"
rescue URI::InvalidURIError
referer = nil
end
referer = nil if referer&.path&.first != "/"
referer.to_s
referer&.to_s
end
def scope_enabled?(scope)

View file

@ -5,6 +5,7 @@ class BrowseController < ApplicationController
before_action :set_locale
before_action -> { check_database_readable(:need_api => true) }
before_action :require_oauth
before_action :update_totp, :only => [:query]
around_action :web_timeout
authorize_resource :class => false
@ -88,4 +89,6 @@ class BrowseController < ApplicationController
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def query; end
end

View file

@ -69,7 +69,7 @@ module SessionMethods
def failed_login(message, username = nil)
flash[:error] = message
redirect_to :action => "new", :referer => session[:referer],
redirect_to :controller => "sessions", :action => "new", :referer => session[:referer],
:username => username, :remember_me => session[:remember_me]
session.delete(:remember_me)

View file

@ -235,6 +235,8 @@ class DiaryEntriesController < ApplicationController
end
def comments
@title = t ".title", :user => @user.display_name
conditions = { :user_id => @user }
conditions[:visible] = true unless can? :unhidecomment, DiaryEntry

View file

@ -4,14 +4,23 @@ class ErrorsController < ApplicationController
skip_authorization_check
def forbidden
render :status => :forbidden
respond_to do |format|
format.html { render :status => :forbidden }
format.any { render :status => :forbidden, :plain => "" }
end
end
def not_found
render :status => :not_found
respond_to do |format|
format.html { render :status => :not_found }
format.any { render :status => :not_found, :plain => "" }
end
end
def internal_server_error
render :status => :internal_server_error
respond_to do |format|
format.html { render :status => :internal_server_error }
format.any { render :status => :internal_server_error, :plain => "" }
end
end
end

View file

@ -28,11 +28,9 @@ class FriendshipsController < ApplicationController
friendship.add_error(t("friendships.make_friend.failed", :name => @new_friend.display_name))
end
if params[:referer]
redirect_to safe_referer(params[:referer])
else
redirect_to user_path
end
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || user_path
end
else
render_unknown_user params[:display_name]
@ -51,11 +49,9 @@ class FriendshipsController < ApplicationController
flash[:error] = t "friendships.remove_friend.not_a_friend", :name => @friend.display_name
end
if params[:referer]
redirect_to safe_referer(params[:referer])
else
redirect_to user_path
end
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || user_path
end
else
render_unknown_user params[:display_name]

View file

@ -119,8 +119,10 @@ class MessagesController < ApplicationController
if @message.save && !request.xhr?
flash[:notice] = t ".destroyed"
if params[:referer]
redirect_to safe_referer(params[:referer])
referer = safe_referer(params[:referer]) if params[:referer]
if referer
redirect_to referer
else
redirect_to :action => :inbox
end

View file

@ -34,10 +34,14 @@ class SessionsController < ApplicationController
token&.destroy
session.delete(:token)
end
session.delete(:user)
session_expires_automatically
if params[:referer]
redirect_to safe_referer(params[:referer])
referer = safe_referer(params[:referer]) if params[:referer]
if referer
redirect_to referer
else
redirect_to :controller => "site", :action => "index"
end

View file

@ -110,7 +110,7 @@ class TracesController < ApplicationController
flash[:notice] = t ".trace_uploaded"
flash[:warning] = t ".traces_waiting", :count => current_user.traces.where(:inserted => false).count if current_user.traces.where(:inserted => false).count > 4
TraceImporterJob.perform_later(@trace) if Settings.trace_use_job_queue
TraceImporterJob.perform_later(@trace)
redirect_to :action => :index, :display_name => current_user.display_name
else
flash[:error] = t("traces.create.upload_failed") if @trace.valid?
@ -194,7 +194,7 @@ class TracesController < ApplicationController
trace.visible = false
trace.save
flash[:notice] = t ".scheduled_for_deletion"
TraceDestroyerJob.perform_later(trace) if Settings.trace_use_job_queue
TraceDestroyerJob.perform_later(trace)
redirect_to :action => :index, :display_name => trace.user.display_name
end
rescue ActiveRecord::RecordNotFound

View file

@ -44,11 +44,9 @@ class UsersController < ApplicationController
flash[:notice] = { :partial => "users/terms_declined_flash" } if current_user.save
if params[:referer]
redirect_to safe_referer(params[:referer])
else
redirect_to user_account_path(current_user)
end
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || user_account_path(current_user)
elsif params[:decline]
redirect_to t("users.terms.declined")
else
@ -64,11 +62,9 @@ class UsersController < ApplicationController
flash[:notice] = t "users.new.terms accepted" if current_user.save
end
if params[:referer]
redirect_to safe_referer(params[:referer])
else
redirect_to user_account_path(current_user)
end
referer = safe_referer(params[:referer]) if params[:referer]
redirect_to referer || user_account_path(current_user)
else
self.current_user = session.delete(:new_user)
@ -335,23 +331,15 @@ class UsersController < ApplicationController
##
# omniauth failure callback
def auth_failure
flash[:error] = t("users.auth_failure.#{params[:message]}")
redirect_to params[:origin] || login_url
flash[:error] = t(params[:message], :scope => "users.auth_failure", :default => t("users.auth_failure.unknown_error"))
origin = safe_referer(params[:origin]) if params[:origin]
redirect_to origin || login_url
end
private
##
#
def unconfirmed_login(user)
session[:token] = user.tokens.create.token
redirect_to :action => "confirm", :display_name => user.display_name
session.delete(:remember_me)
session.delete(:referer)
end
##
# update a user's details
def update_user(user, params)

View file

@ -71,5 +71,7 @@ module ApplicationHelper
else
flash
end
rescue StandardError
flash.inspect if Rails.env.development?
end
end

View file

@ -1,6 +1,8 @@
require "ostruct"
module ReportsHelper
Category = Struct.new(:id, :label)
def report_link(name, reportable)
link_to name, new_report_url(:reportable_id => reportable.id, :reportable_type => reportable.class.name)
end
@ -8,7 +10,7 @@ module ReportsHelper
# Convert a list of strings into objects with methods that the collection_radio_buttons helper expects
def report_categories(reportable)
Report.categories_for(reportable).map do |c|
OpenStruct.new(:id => c, :label => t(".categories.#{reportable.class.name.underscore}.#{c}_label"))
Category.new(c, t(".categories.#{reportable.class.name.underscore}.#{c}_label"))
end
end
end

View file

@ -2,7 +2,7 @@ module UserHelper
# User images
def user_image(user, options = {})
options[:class] ||= "user_image"
options[:class] ||= "user_image border border-grey"
options[:alt] ||= ""
if user.image_use_gravatar
@ -15,7 +15,7 @@ module UserHelper
end
def user_thumbnail(user, options = {})
options[:class] ||= "user_thumbnail"
options[:class] ||= "user_thumbnail border border-grey"
options[:alt] ||= ""
if user.image_use_gravatar
@ -28,7 +28,7 @@ module UserHelper
end
def user_thumbnail_tiny(user, options = {})
options[:class] ||= "user_thumbnail_tiny"
options[:class] ||= "user_thumbnail_tiny border border-grey"
options[:alt] ||= ""
if user.image_use_gravatar

View file

@ -11,7 +11,7 @@
<% end %>
</p>
<div class="details">
<p class="details">
<%= t "browse.#{common_details.visible? ? :edited : :deleted}_by_html",
:time => time_ago_in_words(common_details.timestamp, :scope => :"datetime.distance_in_words_ago"),
:user => changeset_user_link(common_details.changeset),
@ -19,7 +19,7 @@
&middot;
<%= t "browse.in_changeset" %>
#<%= link_to common_details.changeset_id, :action => :changeset, :id => common_details.changeset_id %>
</div>
</p>
<% if @type == "node" and common_details.visible? %>
<div class="details geo">

View file

@ -1,5 +1,14 @@
<% if pages.page_count > 1 %>
<span class="paginate">
<%= raw pagination_links_each(pages, {}) { |n| link_to(n, page_param => n) } %>
</span>
<% end %>
<div class="row">
<div class="col">
<h4><%= heading %></h4>
</div>
<% if pages.page_count > 1 %>
<div class="col-auto">
<h4>
<span class="border border-lightgrey rounded p-1">
<%= raw pagination_links_each(pages, {}) { |n| link_to(n, page_param => n) } %>
</span>
</h4>
</div>
<% end %>
</div>

View file

@ -1,6 +1,6 @@
<% unless tag_details.empty? %>
<h4><%= t ".tags" %></h4>
<table class='browse-tag-list'>
<table class='browse-tag-list border border-grey rounded'>
<%= render :partial => "tag", :collection => tag_details.sort %>
</table>
<% end %>

View file

@ -6,25 +6,29 @@
<p class="font-italic">
<%= linkify(@changeset.tags["comment"].to_s.presence || t("browse.no_comment")) %>
</p>
<div class="details"><%= changeset_details(@changeset) %></div>
<p class="details"><%= changeset_details(@changeset) %></p>
<%= render :partial => "tag_details", :object => @changeset.tags.except("comment") %>
<h4 class="comments-header"><%= t(".discussion") %></h4>
<% if current_user %>
<div class="buttons clearfix subscribe-buttons">
<form action="#">
<% if @changeset.subscribers.exists?(current_user.id) %>
<input class="action-button btn btn-sm btn-primary" type="submit" name="unsubscribe" value="<%= t("javascripts.changesets.show.unsubscribe") %>" data-method="POST" data-url="<%= changeset_unsubscribe_url(@changeset) %>" />
<% else %>
<input class="action-button btn btn-sm btn-primary" type="submit" name="subscribe" value="<%= t("javascripts.changesets.show.subscribe") %>" data-method="POST" data-url="<%= changeset_subscribe_url(@changeset) %>" />
<% end %>
</form>
<div class="row">
<div class="col">
<h4><%= t(".discussion") %></h4>
</div>
<% end %>
<div class="clearfix"></div>
<% if current_user %>
<div class="col-auto">
<div class="subscribe-buttons">
<form action="#">
<% if @changeset.subscribers.exists?(current_user.id) %>
<input class="action-button btn btn-sm btn-primary" type="submit" name="unsubscribe" value="<%= t("javascripts.changesets.show.unsubscribe") %>" data-method="POST" data-url="<%= changeset_unsubscribe_url(@changeset) %>" />
<% else %>
<input class="action-button btn btn-sm btn-primary" type="submit" name="subscribe" value="<%= t("javascripts.changesets.show.subscribe") %>" data-method="POST" data-url="<%= changeset_subscribe_url(@changeset) %>" />
<% end %>
</form>
</div>
</div>
<% end %>
</div>
<% if @comments.length > 0 %>
<div class='changeset-comments'>
@ -63,33 +67,30 @@
<% end %>
<% unless current_user %>
<div class="notice">
<p class="notice">
<%= link_to(t(".join_discussion"), login_path(:referer => request.fullpath)) %>
</div>
</p>
<% end %>
<% if current_user %>
<% unless @changeset.is_open? %>
<form action="#">
<form action="#" class="mb-3">
<div class="form-group">
<textarea class="form-control" name="text" cols="40" rows="5"></textarea>
</div>
<div class="buttons clearfix">
<div>
<input type="submit" name="comment" value="<%= t("javascripts.changesets.show.comment") %>" data-changeset-id="<%= @changeset.id %>" data-method="POST" data-url="<%= changeset_comment_url(@changeset) %>" disabled="1" class="btn btn-sm btn-primary" />
</div>
</form>
<% else %>
<div class="notice">
<%= t(".still_open") %>
</div>
<p class="notice">
<%= t(".still_open") %>
</p>
<% end %>
<% end %>
<% unless @ways.empty? %>
<h4>
<%= type_and_paginated_count("way", @way_pages) %>
<%= render :partial => "paging_nav", :locals => { :pages => @way_pages, :page_param => "way_page" } %>
</h4>
<%= render :partial => "paging_nav", :locals => { :heading => type_and_paginated_count("way", @way_pages), :pages => @way_pages, :page_param => "way_page" } %>
<ul class="list-unstyled">
<% @ways.each do |way| %>
<li><%= link_to printable_name(way, :version => true), { :action => "way", :id => way.way_id.to_s }, { :class => link_class("way", way), :title => link_title(way) } %></li>
@ -98,10 +99,7 @@
<% end %>
<% unless @relations.empty? %>
<h4>
<%= type_and_paginated_count("relation", @relation_pages) %>
<%= render :partial => "paging_nav", :locals => { :pages => @relation_pages, :page_param => "relation_page" } %>
</h4>
<%= render :partial => "paging_nav", :locals => { :heading => type_and_paginated_count("relation", @relation_pages), :pages => @relation_pages, :page_param => "relation_page" } %>
<ul class="list-unstyled">
<% @relations.each do |relation| %>
<li><%= link_to printable_name(relation, :version => true), { :action => "relation", :id => relation.relation_id.to_s }, { :class => link_class("relation", relation), :title => link_title(relation) } %></li>
@ -110,10 +108,7 @@
<% end %>
<% unless @nodes.empty? %>
<h4>
<%= type_and_paginated_count("node", @node_pages) %>
<%= render :partial => "paging_nav", :locals => { :pages => @node_pages, :page_param => "node_page" } %>
</h4>
<%= render :partial => "paging_nav", :locals => { :heading => type_and_paginated_count("node", @node_pages), :pages => @node_pages, :page_param => "node_page" } %>
<ul class="list-unstyled">
<% @nodes.each do |node| %>
<li><%= link_to printable_name(node, :version => true), { :action => "node", :id => node.node_id.to_s }, { :class => link_class("node", node), :title => link_title(node), :rel => link_follow(node) } %></li>

View file

@ -4,9 +4,9 @@
:icon => image_path(type == "friend" ? "marker-blue.png" : "marker-green.png"),
:description => render(:partial => "popup", :object => contact, :locals => { :type => type })
} %>
<%= tag.div :class => "contact-activity clearfix row", :data => { :user => user_data } do %>
<%= tag.div :class => "clearfix row", :data => { :user => user_data } do %>
<div class="col-auto">
<%= user_thumbnail contact, :class => "user_thumbnail_no_margins" %>
<%= user_thumbnail contact %>
</div>
<div class="col">
<p class='text-muted mb-0'>

View file

@ -1,5 +1,9 @@
<div class="user_popup">
<%= user_thumbnail popup %>
<p><%= t(".#{type}") %></p>
<p><%= link_to popup.display_name, user_path(popup) %></p>
<div class="user_popup row no-gutters mx-1">
<div class="col-auto mx-1">
<%= user_thumbnail popup %>
</div>
<div class="col mx-1">
<p><%= t(".#{type}") %></p>
<p><%= link_to popup.display_name, user_path(popup) %></p>
</div>
</div>

View file

@ -6,7 +6,7 @@
<% if current_user and @user.id == current_user.id %>
<div class="col-md order-md-last">
<% if @user.home_lat.nil? or @user.home_lon.nil? %>
<div id="map" class="content_map">
<div id="map" class="content_map border border-grey">
<p class="m-3"><%= t(".no_home_location_html", :edit_profile_link => link_to(t(".edit_your_profile"), edit_profile_path)) %></p>
</div>
<% else %>
@ -19,7 +19,7 @@
:icon => image_path("marker-red.png"),
:description => render(:partial => "popup", :object => current_user, :locals => { :type => "your location" })
} %>
<%= tag.div "", :id => "map", :class => "content_map", :data => { :user => user_data } %>
<%= tag.div "", :id => "map", :class => "content_map border border-grey rounded", :data => { :user => user_data } %>
<% end %>
<% friends = @user.friends %>
@ -32,7 +32,7 @@
<% if friends.empty? %>
<%= t ".no friends" %>
<% else %>
<nav class='secondary-actions'>
<nav class='secondary-actions mb-3'>
<ul class='clearfix'>
<li><%= link_to t(".friends_changesets"), friend_changesets_path %></li>
<li><%= link_to t(".friends_diaries"), friends_diary_entries_path %></li>
@ -50,7 +50,7 @@
<% if nearby.empty? %>
<%= t ".no nearby users" %>
<% else %>
<nav class='secondary-actions'>
<nav class='secondary-actions mb-3'>
<ul class='clearfix'>
<li><%= link_to t(".nearby_changesets"), nearby_changesets_path %></li>
<li><%= link_to t(".nearby_diaries"), nearby_diary_entries_path %></li>

View file

@ -1,19 +1,23 @@
<div class="clearfix diary-comment<%= " text-muted deleted" unless diary_comment.visible? %>">
<%= user_thumbnail diary_comment.user %>
<p class="text-muted comment-heading" id="comment<%= diary_comment.id %>"><%= t(".comment_from_html", :link_user => (link_to diary_comment.user.display_name, user_path(diary_comment.user)), :comment_created_at => link_to(l(diary_comment.created_at, :format => :friendly), :anchor => "comment#{diary_comment.id}")) %>
<% if current_user and diary_comment.user.id != current_user.id %>
| <%= report_link(t(".report"), diary_comment) %>
<% end %>
</p>
<div class="richtext text-break"><%= diary_comment.body.to_html %></div>
<% if can? :hidecomment, DiaryEntry %>
<span>
<% if diary_comment.visible? %>
<%= link_to t(".hide_link"), hide_diary_comment_path(:display_name => diary_comment.diary_entry.user.display_name, :id => diary_comment.diary_entry.id, :comment => diary_comment.id), :method => :post, :data => { :confirm => t(".confirm") } %>
<% else %>
<%= link_to t(".unhide_link"), unhide_diary_comment_path(:display_name => diary_comment.diary_entry.user.display_name, :id => diary_comment.diary_entry.id, :comment => diary_comment.id), :method => :post, :data => { :confirm => t(".confirm") } %>
<div class="row diary-comment<%= " text-muted deleted" unless diary_comment.visible? %>">
<div class="col-auto">
<%= user_thumbnail diary_comment.user %>
</div>
<div class="col">
<p class="text-muted comment-heading" id="comment<%= diary_comment.id %>"><%= t(".comment_from_html", :link_user => (link_to diary_comment.user.display_name, user_path(diary_comment.user)), :comment_created_at => link_to(l(diary_comment.created_at, :format => :friendly), :anchor => "comment#{diary_comment.id}")) %>
<% if current_user and diary_comment.user.id != current_user.id %>
| <%= report_link(t(".report"), diary_comment) %>
<% end %>
</span>
<% end %>
</p>
<div class="richtext text-break"><%= diary_comment.body.to_html %></div>
<% if can? :hidecomment, DiaryEntry %>
<span>
<% if diary_comment.visible? %>
<%= link_to t(".hide_link"), hide_diary_comment_path(:display_name => diary_comment.diary_entry.user.display_name, :id => diary_comment.diary_entry.id, :comment => diary_comment.id), :method => :post, :data => { :confirm => t(".confirm") } %>
<% else %>
<%= link_to t(".unhide_link"), unhide_diary_comment_path(:display_name => diary_comment.diary_entry.user.display_name, :id => diary_comment.diary_entry.id, :comment => diary_comment.id), :method => :post, :data => { :confirm => t(".confirm") } %>
<% end %>
</span>
<% end %>
</div>
</div>

View file

@ -1,11 +1,18 @@
<div class='diary_post<%= " text-muted px-3 deleted" unless diary_entry.visible %> user_<%= diary_entry.user.id %>'>
<div class='post_heading clearfix'>
<% if !@user %>
<%= user_thumbnail diary_entry.user %>
<div class='mb-3'>
<% if @user %>
<h2><%= link_to diary_entry.title, diary_entry_path(diary_entry.user, diary_entry) %></h2>
<% else %>
<div class="row">
<div class="col-auto">
<%= user_thumbnail diary_entry.user %>
</div>
<div class="col">
<h2><%= link_to diary_entry.title, diary_entry_path(diary_entry.user, diary_entry) %></h2>
</div>
</div>
<% end %>
<h2><%= link_to diary_entry.title, diary_entry_path(diary_entry.user, diary_entry) %></h2>
<small class='text-muted'>
<%= t(".posted_by_html", :link_user => (link_to diary_entry.user.display_name, user_path(diary_entry.user)), :created => l(diary_entry.created_at, :format => :blog), :language_link => (link_to diary_entry.language.name, :controller => "diary_entries", :action => "index", :display_name => nil, :language => diary_entry.language_code)) %>
<% if (l(diary_entry.updated_at, :format => :blog) != l(diary_entry.created_at, :format => :blog)) %>

View file

@ -5,7 +5,7 @@
<fieldset>
<legend><%= t ".location" -%></legend>
<%= tag.div "", :id => "map", :data => { :lat => @lat, :lon => @lon, :zoom => @zoom } %>
<%= tag.div "", :id => "map", :class => "border border-grey rounded", :data => { :lat => @lat, :lon => @lon, :zoom => @zoom } %>
<div class="form-row">
<%= f.text_field :latitude, :wrapper_class => "col-sm-4", :id => "latitude" %>

View file

@ -1,5 +1,6 @@
<% content_for :heading do %>
<h1><%= t(".has_commented_on", :display_name => @user.display_name) %></h1>
<h1><%= t ".heading", :user => @user.display_name %></h1>
<p><%= t ".subheading_html", :user => link_to(@user.display_name, user_path(@user)) %></p>
<% end %>
<% if @comments.empty? %>

View file

@ -1,26 +1,31 @@
<% content_for :head, tag(:meta, :name => :robots, :content => :noindex) %>
<% content_for :head, tag.meta(:name => :robots, :content => :noindex) %>
<% content_for :heading do %>
<div <% if @user %> id="userinformation"<% end %>>
<div class="row">
<% if @user %>
<%= user_image @user %>
<div class="col-auto">
<%= user_image @user %>
</div>
<% end %>
<h1><%= @title %></h1>
<nav class="secondary-actions">
<ul class="clearfix">
<% unless params[:friends] or params[:nearby] -%>
<li><%= rss_link_to :action => "rss", :language => params[:language] %></li>
<% end -%>
<div class="col">
<h1><%= @title %></h1>
<% if @user && @user == current_user || !@user && current_user %>
<li><%= link_to image_tag("new.png", :class => "small_icon") + t(".new"), new_diary_entry_path, :title => t(".new_title") %></li>
<% end %>
<nav class="secondary-actions">
<ul class="clearfix">
<% unless params[:friends] or params[:nearby] -%>
<li><%= rss_link_to :action => "rss", :language => params[:language] %></li>
<% end -%>
<% if !@user && current_user %>
<li><%= link_to t(".my_diary"), :controller => "diary_entries", :action => "index", :display_name => current_user.display_name %></li>
<% end %>
</ul>
</nav>
<% if @user && @user == current_user || !@user && current_user %>
<li><%= link_to image_tag("new.png", :class => "small_icon") + t(".new"), new_diary_entry_path, :title => t(".new_title") %></li>
<% end %>
<% if !@user && current_user %>
<li><%= link_to t(".my_diary"), :controller => "diary_entries", :action => "index", :display_name => current_user.display_name %></li>
<% end %>
</ul>
</nav>
</div>
</div>
<% end %>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".heading", :id => h(params[:id]) %></h2>
<h1><%= t ".heading", :id => h(params[:id]) %></h1>
<% end %>
<p><%= t ".body", :id => h(params[:id]) %></p>

View file

@ -1,8 +1,12 @@
<% content_for :heading do %>
<div id="userinformation">
<%= user_image @entry.user %>
<h2><%= link_to t(".user_title", :user => @entry.user.display_name), :action => :index %></h2>
<p><%= rss_link_to :action => :rss, :display_name => @entry.user.display_name %></p>
<div class="row">
<div class="col-sm-auto">
<%= user_image @entry.user %>
</div>
<div class="col">
<h1><%= link_to t(".user_title", :user => @entry.user.display_name), :action => :index %></h1>
<p><%= rss_link_to :action => :rss, :display_name => @entry.user.display_name %></p>
</div>
</div>
<% end %>

View file

@ -1,14 +1,16 @@
<div>
<% comments.each do |comment| %>
<div class="comment">
<div class="float-left">
<div class="row">
<div class="col-auto">
<%= link_to user_thumbnail(comment.user), user_path(comment.user) %>
</div>
<p class="text-muted mb-0">
<%= t ".comment_from_html", :user_link => link_to(comment.user.display_name, user_path(comment.user)),
:comment_created_at => l(comment.created_at.to_datetime, :format => :friendly) %>
</p>
<p><%= comment.body %></p>
<div class="col">
<p class="text-muted mb-0">
<%= t ".comment_from_html", :user_link => link_to(comment.user.display_name, user_path(comment.user)),
:comment_created_at => l(comment.created_at.to_datetime, :format => :friendly) %>
</p>
<p><%= comment.body %></p>
</div>
</div>
<hr>
<% end %>

View file

@ -1,14 +1,16 @@
<% reports.each do |report| %>
<div class="report">
<div class="float-left">
<div class="row">
<div class="col-auto">
<%= link_to user_thumbnail(report.user), user_path(report.user) %>
</div>
<p class="text-muted mb-0">
<%= t ".reported_by_html", :category => report.category,
:user => link_to(report.user.display_name, user_path(report.user)),
:updated_at => l(report.updated_at.to_datetime, :format => :friendly) %>
</p>
<p><%= report.details %></p>
<div class="col">
<p class="text-muted mb-0">
<%= t ".reported_by_html", :category => report.category,
:user => link_to(report.user.display_name, user_path(report.user)),
:updated_at => l(report.updated_at.to_datetime, :format => :friendly) %>
</p>
<p><%= report.details %></p>
</div>
</div>
<hr>
<% end %>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".title", :status => @issue.status.humanize, :issue_id => @issue.id %></h2>
<h1><%= t ".title", :status => @issue.status.humanize, :issue_id => @issue.id %></h1>
<p><%= @issue.reportable.model_name.human %> : <%= link_to reportable_title(@issue.reportable), reportable_url(@issue.reportable) %></p>
<p class="text-muted">
<small>

View file

@ -1,5 +1,5 @@
<% if flash[:error] %>
<div class="flash error row align-items-center">
<div class="flash error row mx-0 p-3 align-items-center">
<div class="col-auto">
<picture>
<source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml" />
@ -11,7 +11,7 @@
<% end %>
<% if flash[:warning] %>
<div class="flash warning row align-items-center">
<div class="flash warning row mx-0 p-3 align-items-center">
<div class="col-auto">
<picture>
<source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml"></source>
@ -23,7 +23,7 @@
<% end %>
<% if flash[:notice] %>
<div class="flash notice row align-items-center">
<div class="flash notice row mx-0 p-3 align-items-center">
<div class="col-auto">
<picture>
<source srcset="<%= image_path "notice.svg" %>" type="image/svg+xml"></source>

View file

@ -1,8 +1,6 @@
<%= tag.head :data => application_data do %>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" />
<%= javascript_include_tag "html5shiv/dist/html5shiv" unless browser.html5? %>
<%= javascript_include_tag "es5" unless browser.es5? %>
<%= javascript_include_tag "es6" unless browser.es6? %>
<%= javascript_include_tag "application" %>
<%= javascript_include_tag "i18n/#{I18n.locale}" %>

View file

@ -85,7 +85,7 @@
<% if current_user && current_user.id %>
<div class='d-inline-flex dropdown user-menu logged-in clearfix'>
<a class='dropdown-toggle btn btn-outline-secondary pl-2 py-1 flex-grow-1' data-toggle='dropdown' href="#">
<%= user_thumbnail_tiny(current_user, :width => 25, :height => 25) %>
<%= user_thumbnail_tiny(current_user, :width => 25, :height => 25, :class => "user_thumbnail_tiny rounded-sm") %>
<%= render :partial => "layouts/inbox" %>
<span class="user-button">
<span class='username'>

View file

@ -7,19 +7,19 @@
<%= 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 => "mask-icon", :href => asset_path("tab-icon.svg"), :color => "#7ebc6f") %>
<%= 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 => "mask-icon", :href => asset_path("tab-icon.svg"), :color => "#7ebc6f" %>
<%= 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" %>
<%= canonical_tag %>
<% if Settings.key?(:publisher_url) -%>
<%= tag("link", :rel => "publisher", :href => Settings.publisher_url) %>
<%= tag.link :rel => "publisher", :href => Settings.publisher_url %>
<% end -%>
<%= tag("link", :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => asset_path("osm.xml")) %>
<%= tag("meta", :name => "description", :content => "OpenStreetMap is the free wiki world map.") %>
<%= tag.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." %>
<%= opengraph_tags(@title) %>
<% if flash[:piwik_goal] -%>
<%= tag("meta", :name => "piwik-goal", :content => flash[:piwik_goal]) %>
<%= tag.meta :name => "piwik-goal", :content => flash[:piwik_goal] %>
<% end -%>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t(".send_message_to_html", :name => link_to(@message.recipient.display_name, user_path(@message.recipient))) %></h2>
<h1><%= t(".send_message_to_html", :name => link_to(@message.recipient.display_name, user_path(@message.recipient))) %></h1>
<% end %>
<%= bootstrap_form_for @message do |f| %>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= @message.title %></h2>
<h1><%= @message.title %></h1>
<% end %>
<% if current_user == @message.recipient %>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".heading", :user => @user.display_name %></h2>
<h1><%= t ".heading", :user => @user.display_name %></h1>
<p><%= t ".subheading_html", :user => link_to(@user.display_name, user_path(@user)) %></p>
<% end %>

View file

@ -53,7 +53,7 @@
<input class="form-check-input" type="checkbox" name="updatehome" value="1" <% unless current_user.home_lat and current_user.home_lon %> checked="checked" <% end %> id="updatehome" />
<label class="form-check-label" for="updatehome"><%= t ".update home location on click" %></label>
</div>
<%= tag.div "", :id => "map", :class => "content_map set_location" %>
<%= tag.div "", :id => "map", :class => "content_map set_location border border-grey rounded" %>
</fieldset>
<%= f.primary t(".save") %>

View file

@ -3,7 +3,7 @@
<div class='row'>
<div class='col-sm-7 user-image'></div>
<div class='col-sm-5 px-5 py-3 byosm'>
<h5 class='text-white text-nowrap'><%= t ".copyright_html", :locale => @locale %></h4>
<h5 class='text-white text-nowrap'><%= t ".copyright_html", :locale => @locale %></h5>
</div>
</div>
<div class='row'>

View file

@ -6,7 +6,7 @@
<%= hidden_field_tag "format", "osm", :autocomplete => "off" %>
<div class='export_area_inputs'>
<div class='export_boxy'>
<div class='export_boxy border border-grey rounded'>
<%= text_field_tag("maxlat", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control mx-auto") %>
<div class="clearfix">
<%= text_field_tag("minlon", nil, :size => 10, :autocomplete => "off", :class => "export_bound form-control") %>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".heading", :name => @trace.name %></h2>
<h1><%= t ".heading", :name => @trace.name %></h1>
<% end %>
<img src="<%= url_for :controller => "traces", :action => "picture", :id => @trace.id, :display_name => @trace.user.display_name %>">

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".heading" %></h2>
<h1><%= t ".heading" %></h1>
<% end %>
<p><%= t ".message" %></p>

View file

@ -1,5 +1,5 @@
<% content_for :heading do %>
<h2><%= t ".heading", :name => @trace.name %></h2>
<h1><%= t ".heading", :name => @trace.name %></h1>
<% end %>
<% if Settings.status != "gpx_offline" %>

View file

@ -11,8 +11,8 @@
<% content_for :footer do %>
<p><%= t ".footer_html",
:readurl => link_to(@readurl, @readurl) + tag(:br),
:commenturl => link_to(@commenturl, @commenturl) + tag(:br),
:readurl => link_to(@readurl, @readurl) + tag.br,
:commenturl => link_to(@commenturl, @commenturl) + tag.br,
:replyurl => link_to(@replyurl, @replyurl) %>
</p>
<% end %>

View file

@ -14,7 +14,7 @@
<% content_for :footer do %>
<p>
<%= t ".footer_html",
:readurl => link_to(@readurl, @readurl) + tag(:br),
:readurl => link_to(@readurl, @readurl) + tag.br,
:replyurl => link_to(@replyurl, @replyurl) %>
</p>
<% end %>

View file

@ -35,9 +35,9 @@
<%= render @users %>
</table>
<div id="user_list_actions buttons">
<%= submit_tag t(".confirm"), :name => "confirm" %>
<%= submit_tag t(".hide"), :name => "hide" %>
<div>
<%= submit_tag t(".confirm"), :name => "confirm", :class => "btn btn-primary" %>
<%= submit_tag t(".hide"), :name => "hide", :class => "btn btn-primary" %>
</div>
<% end %>
<% else %>

View file

@ -1,7 +1,7 @@
<% content_for :heading do %>
<div id="userinformation" class="row">
<div class="row">
<div class="col-sm-auto">
<%= user_image @user, :class => "user_image_no_margins" %>
<%= user_image @user %>
</div>
<div class="col">
<h1><%= @user.display_name %> <%= role_icons(@user) %></h1>

View file

@ -30,7 +30,7 @@
<% end %>
</div>
<div id="contributorTerms" class="legale">
<div id="contributorTerms" class="legale border border-grey rounded">
<%= render :partial => "terms" %>
</div>

View file

@ -1,4 +1,5 @@
skip_missing_workers: true
oxipng: false
pngout: false
svgo:
disable_plugins: ["cleanupIDs", "removeUnknownsAndDefaults"]

View file

@ -5,6 +5,7 @@ jhead: false
jpegoptim: false
jpegtran: false
optipng: false
oxipng: false
pngquant: false
pngout: false
pngcrush: false

View file

@ -1,2 +1,4 @@
# Include our custom RichtextField input method for `f.richtext_field` in forms
BootstrapForm::FormBuilder.include BootstrapForm::Inputs::RichtextField
Rails.application.reloader.to_prepare do
BootstrapForm::FormBuilder.include BootstrapForm::Inputs::RichtextField
end

View file

@ -1,14 +1,6 @@
module OpenStreetMap
module Browser
module Features
def html5?
chrome? || firefox? || safari? || edge? || ie?(">8") || generic_webkit?
end
def es5?
chrome? || firefox? || safari? || edge? || ie?(">8") || generic_webkit?
end
def es6?
chrome?(">44") || firefox?(">24") || safari?(">7") || edge?(">11") || generic_webkit?
end

View file

@ -1,484 +1,486 @@
# frozen_string_literal: true
Doorkeeper.configure do
# Change the ORM that doorkeeper will use (requires ORM extensions installed).
# Check the list of supported ORMs here: https://github.com/doorkeeper-gem/doorkeeper#orms
orm :active_record
Rails.application.reloader.to_prepare do
Doorkeeper.configure do
# Change the ORM that doorkeeper will use (requires ORM extensions installed).
# Check the list of supported ORMs here: https://github.com/doorkeeper-gem/doorkeeper#orms
orm :active_record
# This block will be called to check whether the resource owner is authenticated or not.
resource_owner_authenticator do
current_user
# This block will be called to check whether the resource owner is authenticated or not.
resource_owner_authenticator do
current_user
end
# If you didn't skip applications controller from Doorkeeper routes in your application routes.rb
# file then you need to declare this block in order to restrict access to the web interface for
# adding oauth authorized applications. In other case it will return 403 Forbidden response
# every time somebody will try to access the admin web interface.
admin_authenticator do
current_user
end
# You can use your own model classes if you need to extend (or even override) default
# Doorkeeper models such as `Application`, `AccessToken` and `AccessGrant.
#
# Be default Doorkeeper ActiveRecord ORM uses it's own classes:
#
# access_token_class "Doorkeeper::AccessToken"
# access_grant_class "Doorkeeper::AccessGrant"
# application_class "Doorkeeper::Application"
#
# Don't forget to include Doorkeeper ORM mixins into your custom models:
#
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken - for access token
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessGrant - for access grant
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::Application - for application (OAuth2 clients)
#
# For example:
#
# access_token_class "MyAccessToken"
#
# class MyAccessToken < ApplicationRecord
# include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken
#
# self.table_name = "hey_i_wanna_my_name"
#
# def destroy_me!
# destroy
# end
# end
application_class "Oauth2Application"
# Enables polymorphic Resource Owner association for Access Tokens and Access Grants.
# By default this option is disabled.
#
# Make sure you properly setup you database and have all the required columns (run
# `bundle exec rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails
# migrations).
#
# If this option enabled, Doorkeeper will store not only Resource Owner primary key
# value, but also it's type (class name). See "Polymorphic Associations" section of
# Rails guides: https://guides.rubyonrails.org/association_basics.html#polymorphic-associations
#
# [NOTE] If you apply this option on already existing project don't forget to manually
# update `resource_owner_type` column in the database and fix migration template as it will
# set NOT NULL constraint for Access Grants table.
#
# use_polymorphic_resource_owner
# If you are planning to use Doorkeeper in Rails 5 API-only application, then you might
# want to use API mode that will skip all the views management and change the way how
# Doorkeeper responds to a requests.
#
# api_only
# Enforce token request content type to application/x-www-form-urlencoded.
# It is not enabled by default to not break prior versions of the gem.
enforce_content_type
# Authorization Code expiration time (default: 10 minutes).
#
# authorization_code_expires_in 10.minutes
# Access token expiration time (default: 2 hours).
# If you want to disable expiration, set this to `nil`.
access_token_expires_in nil
# Assign custom TTL for access tokens. Will be used instead of access_token_expires_in
# option if defined. In case the block returns `nil` value Doorkeeper fallbacks to
# +access_token_expires_in+ configuration option value. If you really need to issue a
# non-expiring access token (which is not recommended) then you need to return
# Float::INFINITY from this block.
#
# `context` has the following properties available:
#
# * `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
# * `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
# * `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
# * `resource_owner` - authorized resource owner instance (if present)
#
# custom_access_token_expires_in do |context|
# context.client.additional_settings.implicit_oauth_expiration
# end
# Use a custom class for generating the access token.
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-access-token-generator
#
# access_token_generator '::Doorkeeper::JWT'
# The controller +Doorkeeper::ApplicationController+ inherits from.
# Defaults to +ActionController::Base+ unless +api_only+ is set, which changes the default to
# +ActionController::API+. The return value of this option must be a stringified class name.
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-controllers
base_controller "ApplicationController"
# Reuse access token for the same resource owner within an application (disabled by default).
#
# This option protects your application from creating new tokens before old valid one becomes
# expired so your database doesn't bloat. Keep in mind that when this option is `on` Doorkeeper
# doesn't updates existing token expiration time, it will create a new token instead.
# Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/383
#
# You can not enable this option together with +hash_token_secrets+.
reuse_access_token
# In case you enabled `reuse_access_token` option Doorkeeper will try to find matching
# token using `matching_token_for` Access Token API that searches for valid records
# in batches in order not to pollute the memory with all the database records. By default
# Doorkeeper uses batch size of 10 000 records. You can increase or decrease this value
# depending on your needs and server capabilities.
#
# token_lookup_batch_size 10_000
# Set a limit for token_reuse if using reuse_access_token option
#
# This option limits token_reusability to some extent.
# If not set then access_token will be reused unless it expires.
# Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/1189
#
# This option should be a percentage(i.e. (0,100])
#
# token_reuse_limit 100
# Only allow one valid access token obtained via client credentials
# per client. If a new access token is obtained before the old one
# expired, the old one gets revoked (disabled by default)
#
# When enabling this option, make sure that you do not expect multiple processes
# using the same credentials at the same time (e.g. web servers spanning
# multiple machines and/or processes).
#
# revoke_previous_client_credentials_token
# Hash access and refresh tokens before persisting them.
# This will disable the possibility to use +reuse_access_token+
# since plain values can no longer be retrieved.
#
# Note: If you are already a user of doorkeeper and have existing tokens
# in your installation, they will be invalid without adding 'fallback: :plain'.
#
# hash_token_secrets
# By default, token secrets will be hashed using the
# +Doorkeeper::Hashing::SHA256+ strategy.
#
# If you wish to use another hashing implementation, you can override
# this strategy as follows:
hash_token_secrets :using => "::Doorkeeper::SecretStoring::Plain",
:fallback => "::Doorkeeper::SecretStoring::Sha256Hash"
# Keep in mind that changing the hashing function will invalidate all existing
# secrets, if there are any.
# Hash application secrets before persisting them.
hash_application_secrets
# By default, applications will be hashed
# with the +Doorkeeper::SecretStoring::SHA256+ strategy.
#
# If you wish to use bcrypt for application secret hashing, uncomment
# this line instead:
#
# hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt'
# When the above option is enabled, and a hashed token or secret is not found,
# you can allow to fall back to another strategy. For users upgrading
# doorkeeper and wishing to enable hashing, you will probably want to enable
# the fallback to plain tokens.
#
# This will ensure that old access tokens and secrets
# will remain valid even if the hashing above is enabled.
#
# This can be done by adding 'fallback: plain', e.g. :
#
# hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt', fallback: :plain
# Issue access tokens with refresh token (disabled by default), you may also
# pass a block which accepts `context` to customize when to give a refresh
# token or not. Similar to +custom_access_token_expires_in+, `context` has
# the following properties:
#
# `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
# `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
# `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
#
# use_refresh_token
# Provide support for an owner to be assigned to each registered application (disabled by default)
# Optional parameter confirmation: true (default: false) if you want to enforce ownership of
# a registered application
# NOTE: you must also run the rails g doorkeeper:application_owner generator
# to provide the necessary support
enable_application_owner :confirmation => true
# Define access token scopes for your provider
# For more information go to
# https://doorkeeper.gitbook.io/guides/ruby-on-rails/scopes
# default_scopes :public
optional_scopes(*Oauth::SCOPES, *Oauth::PRIVILEGED_SCOPES)
# Allows to restrict only certain scopes for grant_type.
# By default, all the scopes will be available for all the grant types.
#
# Keys to this hash should be the name of grant_type and
# values should be the array of scopes for that grant type.
# Note: scopes should be from configured_scopes (i.e. default or optional)
#
# scopes_by_grant_type password: [:write], client_credentials: [:update]
# Forbids creating/updating applications with arbitrary scopes that are
# not in configuration, i.e. +default_scopes+ or +optional_scopes+.
# (disabled by default)
enforce_configured_scopes
# Change the way client credentials are retrieved from the request object.
# By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
# falls back to the `:client_id` and `:client_secret` params from the `params` object.
# Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
# for more information on customization
#
# client_credentials :from_basic, :from_params
# Change the way access token is authenticated from the request object.
# By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
# falls back to the `:access_token` or `:bearer_token` params from the `params` object.
# Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
# for more information on customization
access_token_methods :from_bearer_authorization
# Forces the usage of the HTTPS protocol in non-native redirect uris (enabled
# by default in non-development environments). OAuth2 delegates security in
# communication to the HTTPS protocol so it is wise to keep this enabled.
#
# Callable objects such as proc, lambda, block or any object that responds to
# #call can be used in order to allow conditional checks (to allow non-SSL
# redirects to localhost for example).
force_ssl_in_redirect_uri do |uri|
!Rails.env.development? && uri.host != "127.0.0.1"
end
# Specify what redirect URI's you want to block during Application creation.
# Any redirect URI is whitelisted by default.
#
# You can use this option in order to forbid URI's with 'javascript' scheme
# for example.
#
# forbid_redirect_uri { |uri| uri.scheme.to_s.downcase == 'javascript' }
# Allows to set blank redirect URIs for Applications in case Doorkeeper configured
# to use URI-less OAuth grant flows like Client Credentials or Resource Owner
# Password Credentials. The option is on by default and checks configured grant
# types, but you **need** to manually drop `NOT NULL` constraint from `redirect_uri`
# column for `oauth_applications` database table.
#
# You can completely disable this feature with:
#
# allow_blank_redirect_uri false
#
# Or you can define your custom check:
#
# allow_blank_redirect_uri do |grant_flows, client|
# client.superapp?
# end
# Specify how authorization errors should be handled.
# By default, doorkeeper renders json errors when access token
# is invalid, expired, revoked or has invalid scopes.
#
# If you want to render error response yourself (i.e. rescue exceptions),
# set +handle_auth_errors+ to `:raise` and rescue Doorkeeper::Errors::InvalidToken
# or following specific errors:
#
# Doorkeeper::Errors::TokenForbidden, Doorkeeper::Errors::TokenExpired,
# Doorkeeper::Errors::TokenRevoked, Doorkeeper::Errors::TokenUnknown
#
# handle_auth_errors :raise
# Customize token introspection response.
# Allows to add your own fields to default one that are required by the OAuth spec
# for the introspection response. It could be `sub`, `aud` and so on.
# This configuration option can be a proc, lambda or any Ruby object responds
# to `.call` method and result of it's invocation must be a Hash.
#
# custom_introspection_response do |token, context|
# {
# "sub": "Z5O3upPC88QrAjx00dis",
# "aud": "https://protected.example.net/resource",
# "username": User.find(token.resource_owner_id).username
# }
# end
#
# or
#
# custom_introspection_response CustomIntrospectionResponder
# Specify what grant flows are enabled in array of Strings. The valid
# strings and the flows they enable are:
#
# "authorization_code" => Authorization Code Grant Flow
# "implicit" => Implicit Grant Flow
# "password" => Resource Owner Password Credentials Grant Flow
# "client_credentials" => Client Credentials Grant Flow
#
# If not specified, Doorkeeper enables authorization_code and
# client_credentials.
#
# implicit and password grant flows have risks that you should understand
# before enabling:
# http://tools.ietf.org/html/rfc6819#section-4.4.2
# http://tools.ietf.org/html/rfc6819#section-4.4.3
grant_flows %w[authorization_code]
# Allows to customize OAuth grant flows that +each+ application support.
# You can configure a custom block (or use a class respond to `#call`) that must
# return `true` in case Application instance supports requested OAuth grant flow
# during the authorization request to the server. This configuration +doesn't+
# set flows per application, it only allows to check if application supports
# specific grant flow.
#
# For example you can add an additional database column to `oauth_applications` table,
# say `t.array :grant_flows, default: []`, and store allowed grant flows that can
# be used with this application there. Then when authorization requested Doorkeeper
# will call this block to check if specific Application (passed with client_id and/or
# client_secret) is allowed to perform the request for the specific grant type
# (authorization, password, client_credentials, etc).
#
# Example of the block:
#
# ->(flow, client) { client.grant_flows.include?(flow) }
#
# In case this option invocation result is `false`, Doorkeeper server returns
# :unauthorized_client error and stops the request.
#
# @param allow_grant_flow_for_client [Proc] Block or any object respond to #call
# @return [Boolean] `true` if allow or `false` if forbid the request
#
# allow_grant_flow_for_client do |grant_flow, client|
# # `grant_flows` is an Array column with grant
# # flows that application supports
#
# client.grant_flows.include?(grant_flow)
# end
# If you need arbitrary Resource Owner-Client authorization you can enable this option
# and implement the check your need. Config option must respond to #call and return
# true in case resource owner authorized for the specific application or false in other
# cases.
#
# Be default all Resource Owners are authorized to any Client (application).
#
# authorize_resource_owner_for_client do |client, resource_owner|
# resource_owner.admin? || client.owners_whitelist.include?(resource_owner)
# end
# Hook into the strategies' request & response life-cycle in case your
# application needs advanced customization or logging:
#
# before_successful_strategy_response do |request|
# puts "BEFORE HOOK FIRED! #{request}"
# end
#
# after_successful_strategy_response do |request, response|
# puts "AFTER HOOK FIRED! #{request}, #{response}"
# end
# Hook into Authorization flow in order to implement Single Sign Out
# or add any other functionality. Inside the block you have an access
# to `controller` (authorizations controller instance) and `context`
# (Doorkeeper::OAuth::Hooks::Context instance) which provides pre auth
# or auth objects with issued token based on hook type (before or after).
#
# before_successful_authorization do |controller, context|
# Rails.logger.info(controller.request.params.inspect)
#
# Rails.logger.info(context.pre_auth.inspect)
# end
#
# after_successful_authorization do |controller, context|
# controller.session[:logout_urls] <<
# Doorkeeper::Application
# .find_by(controller.request.params.slice(:redirect_uri))
# .logout_uri
#
# Rails.logger.info(context.auth.inspect)
# Rails.logger.info(context.issued_token)
# end
# Under some circumstances you might want to have applications auto-approved,
# so that the user skips the authorization step.
# For example if dealing with a trusted application.
skip_authorization do |_, client|
client.scopes.include?("skip_authorization")
end
# Configure custom constraints for the Token Introspection request.
# By default this configuration option allows to introspect a token by another
# token of the same application, OR to introspect the token that belongs to
# authorized client (from authenticated client) OR when token doesn't
# belong to any client (public token). Otherwise requester has no access to the
# introspection and it will return response as stated in the RFC.
#
# Block arguments:
#
# @param token [Doorkeeper::AccessToken]
# token to be introspected
#
# @param authorized_client [Doorkeeper::Application]
# authorized client (if request is authorized using Basic auth with
# Client Credentials for example)
#
# @param authorized_token [Doorkeeper::AccessToken]
# Bearer token used to authorize the request
#
# In case the block returns `nil` or `false` introspection responses with 401 status code
# when using authorized token to introspect, or you'll get 200 with { "active": false } body
# when using authorized client to introspect as stated in the
# RFC 7662 section 2.2. Introspection Response.
#
# Using with caution:
# Keep in mind that these three parameters pass to block can be nil as following case:
# `authorized_client` is nil if and only if `authorized_token` is present, and vice versa.
# `token` will be nil if and only if `authorized_token` is present.
# So remember to use `&` or check if it is present before calling method on
# them to make sure you doesn't get NoMethodError exception.
#
# You can define your custom check:
#
# allow_token_introspection do |token, authorized_client, authorized_token|
# if authorized_token
# # customize: require `introspection` scope
# authorized_token.application == token&.application ||
# authorized_token.scopes.include?("introspection")
# elsif token.application
# # `protected_resource` is a new database boolean column, for example
# authorized_client == token.application || authorized_client.protected_resource?
# else
# # public token (when token.application is nil, token doesn't belong to any application)
# true
# end
# end
#
# Or you can completely disable any token introspection:
#
# allow_token_introspection false
#
# If you need to block the request at all, then configure your routes.rb or web-server
# like nginx to forbid the request.
# WWW-Authenticate Realm (default: "Doorkeeper").
#
# realm "Doorkeeper"
end
# If you didn't skip applications controller from Doorkeeper routes in your application routes.rb
# file then you need to declare this block in order to restrict access to the web interface for
# adding oauth authorized applications. In other case it will return 403 Forbidden response
# every time somebody will try to access the admin web interface.
admin_authenticator do
current_user
end
# You can use your own model classes if you need to extend (or even override) default
# Doorkeeper models such as `Application`, `AccessToken` and `AccessGrant.
#
# Be default Doorkeeper ActiveRecord ORM uses it's own classes:
#
# access_token_class "Doorkeeper::AccessToken"
# access_grant_class "Doorkeeper::AccessGrant"
# application_class "Doorkeeper::Application"
#
# Don't forget to include Doorkeeper ORM mixins into your custom models:
#
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken - for access token
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessGrant - for access grant
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::Application - for application (OAuth2 clients)
#
# For example:
#
# access_token_class "MyAccessToken"
#
# class MyAccessToken < ApplicationRecord
# include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken
#
# self.table_name = "hey_i_wanna_my_name"
#
# def destroy_me!
# destroy
# end
# end
application_class "Oauth2Application"
# Enables polymorphic Resource Owner association for Access Tokens and Access Grants.
# By default this option is disabled.
#
# Make sure you properly setup you database and have all the required columns (run
# `bundle exec rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails
# migrations).
#
# If this option enabled, Doorkeeper will store not only Resource Owner primary key
# value, but also it's type (class name). See "Polymorphic Associations" section of
# Rails guides: https://guides.rubyonrails.org/association_basics.html#polymorphic-associations
#
# [NOTE] If you apply this option on already existing project don't forget to manually
# update `resource_owner_type` column in the database and fix migration template as it will
# set NOT NULL constraint for Access Grants table.
#
# use_polymorphic_resource_owner
# If you are planning to use Doorkeeper in Rails 5 API-only application, then you might
# want to use API mode that will skip all the views management and change the way how
# Doorkeeper responds to a requests.
#
# api_only
# Enforce token request content type to application/x-www-form-urlencoded.
# It is not enabled by default to not break prior versions of the gem.
enforce_content_type
# Authorization Code expiration time (default: 10 minutes).
#
# authorization_code_expires_in 10.minutes
# Access token expiration time (default: 2 hours).
# If you want to disable expiration, set this to `nil`.
access_token_expires_in nil
# Assign custom TTL for access tokens. Will be used instead of access_token_expires_in
# option if defined. In case the block returns `nil` value Doorkeeper fallbacks to
# +access_token_expires_in+ configuration option value. If you really need to issue a
# non-expiring access token (which is not recommended) then you need to return
# Float::INFINITY from this block.
#
# `context` has the following properties available:
#
# * `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
# * `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
# * `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
# * `resource_owner` - authorized resource owner instance (if present)
#
# custom_access_token_expires_in do |context|
# context.client.additional_settings.implicit_oauth_expiration
# end
# Use a custom class for generating the access token.
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-access-token-generator
#
# access_token_generator '::Doorkeeper::JWT'
# The controller +Doorkeeper::ApplicationController+ inherits from.
# Defaults to +ActionController::Base+ unless +api_only+ is set, which changes the default to
# +ActionController::API+. The return value of this option must be a stringified class name.
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-controllers
base_controller "ApplicationController"
# Reuse access token for the same resource owner within an application (disabled by default).
#
# This option protects your application from creating new tokens before old valid one becomes
# expired so your database doesn't bloat. Keep in mind that when this option is `on` Doorkeeper
# doesn't updates existing token expiration time, it will create a new token instead.
# Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/383
#
# You can not enable this option together with +hash_token_secrets+.
reuse_access_token
# In case you enabled `reuse_access_token` option Doorkeeper will try to find matching
# token using `matching_token_for` Access Token API that searches for valid records
# in batches in order not to pollute the memory with all the database records. By default
# Doorkeeper uses batch size of 10 000 records. You can increase or decrease this value
# depending on your needs and server capabilities.
#
# token_lookup_batch_size 10_000
# Set a limit for token_reuse if using reuse_access_token option
#
# This option limits token_reusability to some extent.
# If not set then access_token will be reused unless it expires.
# Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/1189
#
# This option should be a percentage(i.e. (0,100])
#
# token_reuse_limit 100
# Only allow one valid access token obtained via client credentials
# per client. If a new access token is obtained before the old one
# expired, the old one gets revoked (disabled by default)
#
# When enabling this option, make sure that you do not expect multiple processes
# using the same credentials at the same time (e.g. web servers spanning
# multiple machines and/or processes).
#
# revoke_previous_client_credentials_token
# Hash access and refresh tokens before persisting them.
# This will disable the possibility to use +reuse_access_token+
# since plain values can no longer be retrieved.
#
# Note: If you are already a user of doorkeeper and have existing tokens
# in your installation, they will be invalid without adding 'fallback: :plain'.
#
# hash_token_secrets
# By default, token secrets will be hashed using the
# +Doorkeeper::Hashing::SHA256+ strategy.
#
# If you wish to use another hashing implementation, you can override
# this strategy as follows:
hash_token_secrets :using => "::Doorkeeper::SecretStoring::Plain",
:fallback => "::Doorkeeper::SecretStoring::Sha256Hash"
# Keep in mind that changing the hashing function will invalidate all existing
# secrets, if there are any.
# Hash application secrets before persisting them.
hash_application_secrets
# By default, applications will be hashed
# with the +Doorkeeper::SecretStoring::SHA256+ strategy.
#
# If you wish to use bcrypt for application secret hashing, uncomment
# this line instead:
#
# hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt'
# When the above option is enabled, and a hashed token or secret is not found,
# you can allow to fall back to another strategy. For users upgrading
# doorkeeper and wishing to enable hashing, you will probably want to enable
# the fallback to plain tokens.
#
# This will ensure that old access tokens and secrets
# will remain valid even if the hashing above is enabled.
#
# This can be done by adding 'fallback: plain', e.g. :
#
# hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt', fallback: :plain
# Issue access tokens with refresh token (disabled by default), you may also
# pass a block which accepts `context` to customize when to give a refresh
# token or not. Similar to +custom_access_token_expires_in+, `context` has
# the following properties:
#
# `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
# `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
# `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
#
# use_refresh_token
# Provide support for an owner to be assigned to each registered application (disabled by default)
# Optional parameter confirmation: true (default: false) if you want to enforce ownership of
# a registered application
# NOTE: you must also run the rails g doorkeeper:application_owner generator
# to provide the necessary support
enable_application_owner :confirmation => true
# Define access token scopes for your provider
# For more information go to
# https://doorkeeper.gitbook.io/guides/ruby-on-rails/scopes
# default_scopes :public
optional_scopes(*Oauth::SCOPES, *Oauth::PRIVILEGED_SCOPES)
# Allows to restrict only certain scopes for grant_type.
# By default, all the scopes will be available for all the grant types.
#
# Keys to this hash should be the name of grant_type and
# values should be the array of scopes for that grant type.
# Note: scopes should be from configured_scopes (i.e. default or optional)
#
# scopes_by_grant_type password: [:write], client_credentials: [:update]
# Forbids creating/updating applications with arbitrary scopes that are
# not in configuration, i.e. +default_scopes+ or +optional_scopes+.
# (disabled by default)
enforce_configured_scopes
# Change the way client credentials are retrieved from the request object.
# By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
# falls back to the `:client_id` and `:client_secret` params from the `params` object.
# Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
# for more information on customization
#
# client_credentials :from_basic, :from_params
# Change the way access token is authenticated from the request object.
# By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
# falls back to the `:access_token` or `:bearer_token` params from the `params` object.
# Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
# for more information on customization
access_token_methods :from_bearer_authorization
# Forces the usage of the HTTPS protocol in non-native redirect uris (enabled
# by default in non-development environments). OAuth2 delegates security in
# communication to the HTTPS protocol so it is wise to keep this enabled.
#
# Callable objects such as proc, lambda, block or any object that responds to
# #call can be used in order to allow conditional checks (to allow non-SSL
# redirects to localhost for example).
force_ssl_in_redirect_uri do |uri|
!Rails.env.development? && uri.host != "127.0.0.1"
end
# Specify what redirect URI's you want to block during Application creation.
# Any redirect URI is whitelisted by default.
#
# You can use this option in order to forbid URI's with 'javascript' scheme
# for example.
#
# forbid_redirect_uri { |uri| uri.scheme.to_s.downcase == 'javascript' }
# Allows to set blank redirect URIs for Applications in case Doorkeeper configured
# to use URI-less OAuth grant flows like Client Credentials or Resource Owner
# Password Credentials. The option is on by default and checks configured grant
# types, but you **need** to manually drop `NOT NULL` constraint from `redirect_uri`
# column for `oauth_applications` database table.
#
# You can completely disable this feature with:
#
# allow_blank_redirect_uri false
#
# Or you can define your custom check:
#
# allow_blank_redirect_uri do |grant_flows, client|
# client.superapp?
# end
# Specify how authorization errors should be handled.
# By default, doorkeeper renders json errors when access token
# is invalid, expired, revoked or has invalid scopes.
#
# If you want to render error response yourself (i.e. rescue exceptions),
# set +handle_auth_errors+ to `:raise` and rescue Doorkeeper::Errors::InvalidToken
# or following specific errors:
#
# Doorkeeper::Errors::TokenForbidden, Doorkeeper::Errors::TokenExpired,
# Doorkeeper::Errors::TokenRevoked, Doorkeeper::Errors::TokenUnknown
#
# handle_auth_errors :raise
# Customize token introspection response.
# Allows to add your own fields to default one that are required by the OAuth spec
# for the introspection response. It could be `sub`, `aud` and so on.
# This configuration option can be a proc, lambda or any Ruby object responds
# to `.call` method and result of it's invocation must be a Hash.
#
# custom_introspection_response do |token, context|
# {
# "sub": "Z5O3upPC88QrAjx00dis",
# "aud": "https://protected.example.net/resource",
# "username": User.find(token.resource_owner_id).username
# }
# end
#
# or
#
# custom_introspection_response CustomIntrospectionResponder
# Specify what grant flows are enabled in array of Strings. The valid
# strings and the flows they enable are:
#
# "authorization_code" => Authorization Code Grant Flow
# "implicit" => Implicit Grant Flow
# "password" => Resource Owner Password Credentials Grant Flow
# "client_credentials" => Client Credentials Grant Flow
#
# If not specified, Doorkeeper enables authorization_code and
# client_credentials.
#
# implicit and password grant flows have risks that you should understand
# before enabling:
# http://tools.ietf.org/html/rfc6819#section-4.4.2
# http://tools.ietf.org/html/rfc6819#section-4.4.3
grant_flows %w[authorization_code]
# Allows to customize OAuth grant flows that +each+ application support.
# You can configure a custom block (or use a class respond to `#call`) that must
# return `true` in case Application instance supports requested OAuth grant flow
# during the authorization request to the server. This configuration +doesn't+
# set flows per application, it only allows to check if application supports
# specific grant flow.
#
# For example you can add an additional database column to `oauth_applications` table,
# say `t.array :grant_flows, default: []`, and store allowed grant flows that can
# be used with this application there. Then when authorization requested Doorkeeper
# will call this block to check if specific Application (passed with client_id and/or
# client_secret) is allowed to perform the request for the specific grant type
# (authorization, password, client_credentials, etc).
#
# Example of the block:
#
# ->(flow, client) { client.grant_flows.include?(flow) }
#
# In case this option invocation result is `false`, Doorkeeper server returns
# :unauthorized_client error and stops the request.
#
# @param allow_grant_flow_for_client [Proc] Block or any object respond to #call
# @return [Boolean] `true` if allow or `false` if forbid the request
#
# allow_grant_flow_for_client do |grant_flow, client|
# # `grant_flows` is an Array column with grant
# # flows that application supports
#
# client.grant_flows.include?(grant_flow)
# end
# If you need arbitrary Resource Owner-Client authorization you can enable this option
# and implement the check your need. Config option must respond to #call and return
# true in case resource owner authorized for the specific application or false in other
# cases.
#
# Be default all Resource Owners are authorized to any Client (application).
#
# authorize_resource_owner_for_client do |client, resource_owner|
# resource_owner.admin? || client.owners_whitelist.include?(resource_owner)
# end
# Hook into the strategies' request & response life-cycle in case your
# application needs advanced customization or logging:
#
# before_successful_strategy_response do |request|
# puts "BEFORE HOOK FIRED! #{request}"
# end
#
# after_successful_strategy_response do |request, response|
# puts "AFTER HOOK FIRED! #{request}, #{response}"
# end
# Hook into Authorization flow in order to implement Single Sign Out
# or add any other functionality. Inside the block you have an access
# to `controller` (authorizations controller instance) and `context`
# (Doorkeeper::OAuth::Hooks::Context instance) which provides pre auth
# or auth objects with issued token based on hook type (before or after).
#
# before_successful_authorization do |controller, context|
# Rails.logger.info(controller.request.params.inspect)
#
# Rails.logger.info(context.pre_auth.inspect)
# end
#
# after_successful_authorization do |controller, context|
# controller.session[:logout_urls] <<
# Doorkeeper::Application
# .find_by(controller.request.params.slice(:redirect_uri))
# .logout_uri
#
# Rails.logger.info(context.auth.inspect)
# Rails.logger.info(context.issued_token)
# end
# Under some circumstances you might want to have applications auto-approved,
# so that the user skips the authorization step.
# For example if dealing with a trusted application.
skip_authorization do |_, client|
client.scopes.include?("skip_authorization")
end
# Configure custom constraints for the Token Introspection request.
# By default this configuration option allows to introspect a token by another
# token of the same application, OR to introspect the token that belongs to
# authorized client (from authenticated client) OR when token doesn't
# belong to any client (public token). Otherwise requester has no access to the
# introspection and it will return response as stated in the RFC.
#
# Block arguments:
#
# @param token [Doorkeeper::AccessToken]
# token to be introspected
#
# @param authorized_client [Doorkeeper::Application]
# authorized client (if request is authorized using Basic auth with
# Client Credentials for example)
#
# @param authorized_token [Doorkeeper::AccessToken]
# Bearer token used to authorize the request
#
# In case the block returns `nil` or `false` introspection responses with 401 status code
# when using authorized token to introspect, or you'll get 200 with { "active": false } body
# when using authorized client to introspect as stated in the
# RFC 7662 section 2.2. Introspection Response.
#
# Using with caution:
# Keep in mind that these three parameters pass to block can be nil as following case:
# `authorized_client` is nil if and only if `authorized_token` is present, and vice versa.
# `token` will be nil if and only if `authorized_token` is present.
# So remember to use `&` or check if it is present before calling method on
# them to make sure you doesn't get NoMethodError exception.
#
# You can define your custom check:
#
# allow_token_introspection do |token, authorized_client, authorized_token|
# if authorized_token
# # customize: require `introspection` scope
# authorized_token.application == token&.application ||
# authorized_token.scopes.include?("introspection")
# elsif token.application
# # `protected_resource` is a new database boolean column, for example
# authorized_client == token.application || authorized_client.protected_resource?
# else
# # public token (when token.application is nil, token doesn't belong to any application)
# true
# end
# end
#
# Or you can completely disable any token introspection:
#
# allow_token_introspection false
#
# If you need to block the request at all, then configure your routes.rb or web-server
# like nginx to forbid the request.
# WWW-Authenticate Realm (default: "Doorkeeper").
#
# realm "Doorkeeper"
end

File diff suppressed because it is too large Load diff

View file

@ -4,11 +4,13 @@
# Author: Albiona
# Author: Alket
# Author: Ardian
# Author: Danieldegroot2
# Author: Fitim
# Author: Gent
# Author: Heroid
# Author: Kosovastar
# Author: Macofe
# Author: McDutchie
# Author: Mdupont
# Author: MicroBoy
# Author: Nemo bis
@ -118,6 +120,10 @@ aln:
do të fshihet?
user:
new_email: (asnjëherë nuk është publikuar)
api:
notes:
entry:
comment: Koment
browse:
changeset:
title: Ndryshim
@ -248,6 +254,8 @@ aln:
all:
title: hyra OpenStreetMap ditar
description: Shënimet mat fundit të ditarit nga anëtarët e OpenStreetMap
comments:
comment: Koment
friendships:
make_friend:
success: '%{name} është shok/shoqe jot/e.'
@ -718,7 +726,7 @@ aln:
message_summary:
unread_button: Bone si të palexume
read_button: Bone si të lexume
reply_button: Ktheje
reply_button: Përgjigju
destroy_button: Fshije
new:
title: Qo mesazh
@ -798,7 +806,7 @@ aln:
heading: Kycu
email or username: 'Email Adresa ose Username:'
password: 'Fjalekalimi:'
remember: 'Kujtom mu:'
remember: Kujtom mu
lost password link: Keni harru fjalëkalimin tuaj?
login_button: Kyçu
account not active: Na vjen keq, akonti juej nuk asht hala aktiv<br /> Ju lutemi
@ -1095,7 +1103,7 @@ aln:
flash: Ju keni revokuar shenjë për %{application}
oauth_clients:
new:
title: Regjistroje një aplikacion të ri.
title: Regjistroje një aplikacion të ri
edit:
title: Redakto kërkesën tuaj
show:
@ -1132,6 +1140,9 @@ aln:
flash: Përditësuar më të dhënat e klientit me sukses
destroy:
flash: Shkatërruar kërkesë e klientit regjistrimit
oauth2_applications:
new:
title: Regjistroje një aplikacion të ri
users:
new:
title: Krijo akount

View file

@ -7,6 +7,7 @@
# Author: Azouz.anis
# Author: Bassem JARKAS
# Author: ButterflyOfFire
# Author: Danieldegroot2
# Author: Dr. Mohammed
# Author: Fahad
# Author: Faris knight
@ -17,6 +18,7 @@
# Author: Kassem7899
# Author: Kuwaity26
# Author: Majid Al-Dharrab
# Author: McDutchie
# Author: Meno25
# Author: Mido
# Author: Mohammed Qubati
@ -61,6 +63,9 @@ ar:
client_application:
create: سجِّل
update: تحديث
doorkeeper_application:
create: سجِّل
update: تحديث
redaction:
create: إنشاء تنقيح
update: حفظ التنقيح
@ -132,6 +137,9 @@ ar:
latitude: خط العرض
longitude: خط الطول
language: اللغة
doorkeeper/application:
name: الاسم
scopes: الصلاحيات
friend:
user: المستخدم
friend: صديق
@ -260,7 +268,7 @@ ar:
closed: مذكرة مغلقة (بالقرب من %{place})
reopened: مذكرة منشطة (بالقرب من %{place})
entry:
comment: تعليق
comment: التعليق
full: ملاحظة كاملة
browse:
created: تم الإنشاء
@ -276,6 +284,13 @@ ar:
anonymous: مجهول
no_comment: (لا تعليق)
part_of: جزء من
part_of_ways:
zero: ""
one: طريق واحد
two: طريقين
few: '%{count} طرق'
many: '%{count} طريقًا'
other: '%{count} طريقٍ'
download_xml: تنزيل XML
view_history: عرض السجل
view_details: شاهد التفاصيل
@ -518,7 +533,6 @@ ar:
title: مدخلات اليومية في خريطة الشارع المفتوحة
description: المدخلات الحديثة في يومية مستخدمي خريطة الشارع المفتوحة
comments:
has_commented_on: '%{display_name} علق على مدخلات اليومية التالية'
post: إرسال
when: متى
comment: التعليق
@ -725,7 +739,6 @@ ar:
landing_site: موقع هبوط طوارئ
phone: هاتف طوارئ
water_tank: خزان مياه الطوارئ
"yes": طوارئ
highway:
abandoned: طريق سريع مهجور
bridleway: مسلك خيول
@ -1286,8 +1299,8 @@ ar:
intro_text: خريطة الشارع المفتوحة هي خريطة العالم، أُنشِئت بواسطة أشخاص مثلك وحرة
الاستخدام برخصة مفتوحة.
intro_2_create_account: أنشئ حساب مستخدم
hosting_partners_html: يتم دعم الاستضافة بواسطة %{ucl} و%{bytemark} و%{partners}
آخرين.
hosting_partners_html: يتم دعم الاستضافة بواسطة %{ucl} و%{fastly} و%{bytemark}
و%{partners} آخرين.
partners_ucl: UCL
partners_bytemark: استضافة Bytemark
partners_partners: الشركاء
@ -1318,6 +1331,7 @@ ar:
footer: يمكنك أيضًا قراءة التعليق على %{readurl} ويمكنك التعليق على %{commenturl}
أو الرد على %{replyurl}
message_notification:
subject: '[خريطة الشارع المفتوحة] %{message_title}'
hi: مرحبًا %{to_user}،
header: '%{from_user} قام بإرسال رسالة لك عبر خريطة الشارع المفتوحة بالعنوان
%{subject}:'
@ -1329,10 +1343,12 @@ ar:
see_their_profile: يمكنك أن تشاهد ملفهم الشخصي على %{userurl}.
befriend_them: "\uFEFFيمكنك أيضًا إضافتهم كصديق على %{befriendurl}."
gpx_failure:
hi: مرحبًا %{to_user}،
failed_to_import: 'فشل الاستيراد، الخطأ هو:'
import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures
subject: '[خريطة الشارع المفتوحة] فشل استيراد جي بي إكس'
gpx_success:
hi: مرحبًا %{to_user}،
loaded_successfully: تم تحميل بنجاح %{trace_points} نقطة من أصل %{possible_points}
نقطة ممكنة.
subject: '[خريطة الشارع المفتوحة] نجاح استيراد جي بي إكس'
@ -1360,21 +1376,22 @@ ar:
anonymous: مستخدم مجهول
greeting: مرحبا،
commented:
subject_own: '[OpenStreetMap] قدعلق %{commenter} على إحدى ملاحظاتك'
subject_other: '[OpenStreetMap] علق %{commenter} على ملاحظة تههتم بها'
subject_own: '[خريطة الشارع المفتوحة] قدعلق %{commenter} على إحدى ملاحظاتك'
subject_other: '[خريطة الشارع المفتوحة] علق %{commenter} على ملاحظة تههتم
بها'
your_note: علق %{commenter} على إحدى ملاحظات خريطتك بالقرب من %{place}.
commented_note: علق %{commenter} على ملاحظة الخريطة التي علقت عليها، كانت
الملاحظة بالقرب من %{place}.
closed:
subject_own: '[OpenStreetMap] حل %{commenter} إحدى ملاحظاتك'
subject_other: '[OpenStreetMap] حل %{commenter} ملاحظة تهتم بها'
subject_own: '[خريطة الشارع المفتوحة] حل %{commenter} إحدى ملاحظاتك'
subject_other: '[خريطة الشارع المفتوحة] حل %{commenter} ملاحظة تهتم بها'
your_note: حل %{commenter} إحدى ملاحظات خريطتك بالقرب من %{place}.
commented_note: حل %{commenter} ملاحظة الخريطة التي علقت عليها، الملاحظة بالقرب
من %{place}.
reopened:
subject_own: لقد أعاد [OpenStreetMap] %{commenter} تنشيط إحدى ملاحظاتك
subject_other: لقد أعاد [OpenStreetMap] %{commenter} تنشيط ملاحظة كنت مهتما
بها
subject_own: لقد أعاد [خريطة الشارع المفتوحة] %{commenter} تنشيط إحدى ملاحظاتك
subject_other: لقد أعاد [خريطة الشارع المفتوحة] %{commenter} تنشيط ملاحظة
كنت مهتما بها
your_note: لقد أعاد %{commenter} تنشيط إحدى ملاحظات الخريطة بالقرب من %{place}.
commented_note: لقد أعاد %{commenter} تنشيط ملاحظة الخريطة التي علقت عليها،
الملاحظة بالقرب من %{place}.
@ -1383,8 +1400,10 @@ ar:
hi: أهلا %{to_user}،
greeting: مرحبا،
commented:
subject_own: '[OpenStreetMap] علق %{commenter} على على إحدى مجموعات تغييراتك'
subject_other: '[OpenStreetMap] علق %{commenter} على مجموعة تغييرات تهتم بها'
subject_own: '[خريطة الشارع المفتوحة] علق %{commenter} على على إحدى مجموعات
تغييراتك'
subject_other: '[خريطة الشارع المفتوحة] علق %{commenter} على مجموعة تغييرات
تهتم بها'
your_changeset: '%{commenter} علق على إحدى مجموعات تغييراتك في %{time}'
commented_changeset: ترك %{commenter} تعليقا في %{time} على مجموعة تغييرات
تراقبها أنشأها %{changeset_author}
@ -1506,9 +1525,12 @@ ar:
preferred_languages: اللغات المفضلة
edit:
title: تفضيلات التحرير
cancel: إلغاء
profiles:
edit:
image: "\uFEFFالصورة:"
title: عدل الملف
cancel: إلغاء
image: "\uFEFFالصورة"
gravatar:
gravatar: استخدام Gravatar
link: https://wiki.openstreetmap.org/wiki/Gravatar
@ -1519,7 +1541,7 @@ ar:
delete image: أزل الصورة الحالية
replace image: "\uFEFFاستبدل الصورة الحالية"
image size hint: "\uFEFF(صورة مربعة على الأقل 100 × 100 تعمل بشكل أفضل)"
home location: 'موقع المنزل:'
home location: موقع المنزل
no home location: لم تدخل موقع منزلك.
update home location on click: تحديث موقع المنزل عندما أنقر على الخريطة؟
sessions:
@ -1529,7 +1551,7 @@ ar:
email or username: 'عنوان البريد الإلكتروني أو اسم المستخدم:'
password: 'كلمة السر:'
openid_html: '%{logo} الهوية المفتوحة:'
remember: 'تذكرني:'
remember: تذكرني
lost password link: أنسيت كلمة المرور؟
login_button: تسجيل الدخول
register now: سجل حسابًا الآن
@ -1582,8 +1604,11 @@ ar:
unordered: قائمة غير مرتبة
ordered: قائمة مرتبة
link: وصلة
image: الصورة
alt: كل النص
url: المسار
richtext_field:
edit: تعديل
preview: معاينة
site:
about:
@ -2039,6 +2064,7 @@ ar:
traces_waiting: لديك %{count} أثر في انتظار التحميل. يرجى مراعاة الانتظار قبل
تحميل أكثر من ذلك، بحيث تتجنب إعاقة طابور التحميل لباقي المستخدمين.
edit:
cancel: إلغاء
title: تعديل الأثر %{name}
heading: تعديل الأثر %{name}
visibility_help: ماذا يعني هذا؟
@ -2194,8 +2220,22 @@ ar:
destroy:
flash: دُمِّر تسجيل تطبيق العميل
oauth2_applications:
index:
name: الاسم
permissions: الصلاحيات
application:
edit: تعديل
delete: حذف
show:
edit: عدل
delete: حذف
permissions: الصلاحيات
oauth2_authorizations:
new:
deny: رفض
oauth2_authorized_applications:
index:
permissions: الصلاحيات
users:
new:
title: أنشئ حسابا
@ -2268,6 +2308,7 @@ ar:
my comments: تعليقاتي
blocks on me: عمليات منعي
blocks by me: عمليات المنع بواسطتي
edit_profile: عدل الملف
send message: إرسل رسالة
diary: يومية
edits: مساهمات
@ -2310,13 +2351,13 @@ ar:
account:
title: عدل الحساب
my settings: إعداداتي
current email address: 'عنوان البريد الإلكرتروني الحالي:'
external auth: 'مصادقة خارجية:'
current email address: عنوان البريد الإلكرتروني الحالي
external auth: مصادقة خارجية
openid:
link: http://wiki.openstreetmap.org/wiki/OpenID
link text: ما هذا؟
public editing:
heading: 'تعديل عام:'
heading: تعديل عام
enabled: مفعَّل، غير مجهول ويمكنك تعديل البيانات.
enabled link: http://wiki.openstreetmap.org/wiki/Anonymous_edits
enabled link text: ما هذا؟
@ -2331,7 +2372,7 @@ ar:
السبب</a>).<ul><li>لن يتم الكشف عن عنوان بريدك الإلكتروني من خلال جعله عاما.</li><li>لا
يمكن عكس هذا الإجراء وأصبح جميع المستخدمين الجدد عامين افتراضيا.</li></ul>
contributor terms:
heading: 'شروط المساهم:'
heading: شروط المساهم
agreed: لقد وافقت على شروط المساهم الجديدة.
not yet agreed: لم توافق بعد على شروط المساهم الجديدة.
review link text: يُرجَى اتباع هذا الرابط في الوقت الذي يناسبك لمراجعة وقبول
@ -2478,8 +2519,9 @@ ar:
show:
title: '%{block_on} عُرقل بواسطة %{block_by}'
heading_html: '%{block_on} عُرقل بواسطة %{block_by}'
created: تم الإنشاء
status: الحالة
created: 'تم الإنشاء:'
duration: 'المدة:'
status: 'الحالة:'
show: اعرض
edit: تعديل
revoke: ابطل!
@ -2561,6 +2603,7 @@ ar:
other: أنت على بعد %{count} قدم من هذه النقطة
base:
standard: قياسي
cyclosm: CyclOSM
cycle_map: خريطة الدراجات
transport_map: خريطة النقل و المواصلات
hot: الخريطة الإنسانية
@ -2574,6 +2617,8 @@ ar:
copyright: © <a href='%{copyright_url}'>مساهمو خريطة الشارع المفتوحة</a>
donate_link_text: <a class='donate-attr' href='%{donate_url}'>تقديم تبرع</a>
terms: <a href='%{terms_url}' target='_blank'> مصطلحات الموقع و API</a>
cyclosm: نمط البلاط بواسطة <a href='%{cyclosm_url}' target='_blank'></a> المستضاف
بواسطة <a href='%{osmfrance_url}' target='_blank'></a>
thunderforest: البلاط من <a href='%{thunderforest_url}' target='_blank'>Andy
Allan</a>
hotosm: نمط البلاط بواسطة <a href='%{hotosm_url}' target='_blank'>Humanitarian

View file

@ -1,10 +1,13 @@
# Messages for Egyptian Arabic (مصرى)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Ajeje Brazorf
# Author: Meno25
# Author: علاء
---
arz:
html:
dir: rtl
helpers:
submit:
diary_comment:

View file

@ -1,9 +1,11 @@
# Messages for Asturian (asturianu)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Danieldegroot2
# Author: Enolp
# Author: Fitoschido
# Author: Macofe
# Author: McDutchie
# Author: Tokvo
# Author: TomH
# Author: Xuacu
@ -462,7 +464,6 @@ ast:
title: Entraes nel diariu d'OpenStreetMap
description: Entraes recién nel diariu d'usuarios d'OpenStreetMap
comments:
has_commented_on: '%{display_name} comentó nes siguientes entraes del diariu'
post: Publicar
when: Cuándo
comment: Comentariu
@ -652,7 +653,6 @@ ast:
landing_site: Llugar de aterrizaxe d'emerxencia
phone: Teléfonu d'emerxencia
water_tank: Depósitu d'agua pa emerxencies
"yes": Emerxencia
highway:
abandoned: Estrada abandonada
bridleway: Caleya
@ -1459,7 +1459,7 @@ ast:
email or username: 'Direición de corréu o nome d''usuariu:'
password: 'Contraseña:'
openid_html: '%{logo} OpenID:'
remember: 'Recordame:'
remember: Recordame
lost password link: ¿Perdisti la contraseña?
login_button: Entrar
register now: Rexistrate agora
@ -2120,6 +2120,9 @@ ast:
flash: S'anovó la información del cliente correutamente
destroy:
flash: Se destruyó'l rexistru de l'aplicación cliente
oauth2_applications:
new:
title: Rexistrar una aplicación nueva
users:
new:
title: Date d'alta
@ -2523,7 +2526,7 @@ ast:
queryfeature_disabled_tooltip: Averar pa consultar entidaes
changesets:
show:
comment: Comentariu
comment: Comentar
subscribe: Suscribite
unsubscribe: Date de baxa
hide_comment: anubrir

View file

@ -320,8 +320,6 @@ az:
title: OpenStreetMap gündəlik yazısı
description: OpenStreetMap istifadəçilərinin axırıncı gündəlik yazıları
comments:
has_commented_on: '%{display_name} indicə gündəliyin növbəti yazılarını şərh
etdi'
post: Post
when: Nə vaxt
comment: Şərh
@ -465,7 +463,6 @@ az:
landing_site: Qəza Eniş Yeri
phone: Fövqəladə hallar üçün telefon
water_tank: Fövqəladə hallar üçün su çəni
"yes": Fövqəladə hallar üçün
highway:
abandoned: İstifadəsiz Yol
bridleway: Atlı yolu

View file

@ -111,6 +111,7 @@ ba:
language: Тел
doorkeeper/application:
name: Исем
redirect_uri: Яңынан йүнәлтеү
confidential: Конфиденциаль ҡушымта?
scopes: Рөхсәт
friend:
@ -155,6 +156,10 @@ ba:
pass_crypt: Серһүҙ
pass_crypt_confirmation: Паролде раҫлағыҙ
help:
doorkeeper/application:
confidential: Ҡушымта клиент серен сер итеп тоторға мөмкин булған урындарҙа
ҡулланыласаҡ (үҙ мобиль ҡушымталар һәм бер битле ҡушымталар конфиденциаль
түгел)
trace:
tagstring: өтөр аша
user_block:
@ -523,8 +528,6 @@ ba:
title: OpenStreetMap көндәлек яҙмаһы
description: OpenStreetMap ҡулланысыларының һуңғы көндәлек яҙмалары
comments:
has_commented_on: '%{display_name} әле генә көндәлектең ошо яҙмаһына комментарий
яҙҙы'
no_comments: Көндәлектә комментарийҙар юҡ
post: Post
when: Ҡасан
@ -802,7 +805,6 @@ ba:
siren: Авария сиренаһы
suction_point: Ашығыс ярҙам пункты
water_tank: Һыу өсөн резервуар
"yes": Ашығыс хеҙмәттәр өсөн
highway:
abandoned: Ташландыҡ юл
bridleway: Атта йөрөү юлы

View file

@ -12,6 +12,7 @@
# Author: Mechanizatar
# Author: Nerogaf
# Author: Unomano
# Author: ZlyiLev
# Author: Дзяніс Тутэйшы
# Author: Тест
# Author: Чаховіч Уладзіслаў
@ -336,8 +337,8 @@ be:
way: лінія
relation: дачыненне
start_rjs:
feature_warning: Неабходна загрузіць %{num_features} аб'ектаў, што можа запаволіць
ваш браўзэр. Вы ўпэўнены, што жадаеце праглядзець гэтыя дадзеныя?
feature_warning: Неабходна загрузіць %{num_features} абектаў, што можа запаволіць
ваш браўзер. Вы ўпэўнены, што жадаеце праглядзець гэтыя даныя?
load_data: Сцягнуць дадзеныя
loading: Загрузка...
tag_details:
@ -499,7 +500,6 @@ be:
title: Дзеннікавыя запісы OpenStreetMap
description: Свежыя дзеннікавыя запісы карыстальнікаў OpenStreetMap
comments:
has_commented_on: '%{display_name} пракаментаваў наступныя дзеннікавыя запісы'
post: Апублікаваць
when: Калі
comment: Каментар
@ -516,7 +516,7 @@ be:
heading: Перастаць сябраваць з %{user}?
button: Выдаліць з сяброў
success: '%{name} выдалены са спіса сяброў.'
not_a_friend: '%{name} не з''яўляецца вашым сябрам.'
not_a_friend: '%{name} не зяўляецца вашым сябрам.'
geocoder:
search:
title:
@ -668,7 +668,6 @@ be:
landing_site: Месца аварыйнай пасадкі
phone: Тэлефон экстранай сувязі
water_tank: Пажарны вадаём/рэзервуар
"yes": Для экстранных службаў
highway:
abandoned: Занядбаная дарога
bridleway: Дарога для коней
@ -1175,23 +1174,23 @@ be:
resolve_with_user: Вы ўжо спрабавалі вырашыць гэтую праблему з карыстальнікам
categories:
diary_entry:
spam_label: Гэты дзённікавы запіс з'яўляецца або змяшчае спам
offensive_label: Гэты дзённікавы запіс з'яўляецца непрыстойным або нецэнзурным
spam_label: Гэты дзённікавы запіс зяўляецца або змяшчае спам
offensive_label: Гэты дзённікавы запіс зяўляецца непрыстойным або нецэнзурным
threat_label: Гэты дзённікавы запіс змяшчае пагрозу
other_label: Іншыя
diary_comment:
spam_label: Гэты каментар у дзённіку з'яўляецца спамам ці змяшчае яго
spam_label: Гэты каментар у дзённіку зяўляецца спамам ці змяшчае яго
offensive_label: Гэты каментар у дзённіку непрыстойны обо нецэнзурны
threat_label: Гэты каментар у дзённіку змяшчае пагрозу
other_label: Іншае
user:
spam_label: Профіль гэтага карыстальніка з'яўляецца спамам ці змяшчае яго
offensive_label: Гэты профіль з'яўляецца непрыстойным або нецэнзурным
spam_label: Профіль гэтага карыстальніка зяўляецца спамам ці змяшчае яго
offensive_label: Гэты профіль зяўляецца непрыстойным або нецэнзурным
threat_label: Профіль гэтага карыстальніка змяшчае пагрозу
vandal_label: Гэты карыстальнік з'яўляецца вандалам
vandal_label: Гэты карыстальнік зяўляецца вандалам
other_label: Іншае
note:
spam_label: Гэтая заўвага з'яўляецца спамам
spam_label: Гэтая заўвага зяўляецца спамам
personal_label: Гэтая заўвага змяшчае персанальныя даныя
abusive_label: Гэта заўвага абразлівая
other_label: Іншае
@ -1212,7 +1211,7 @@ be:
history: Гісторыя
export: Экспарт
issues: Праблемы
data: Дадзеныя
data: Даныя
export_data: Экспарт дадзеных
gps_traces: GPS-сляды
gps_traces_tooltip: Кіраваць GPS-слядамі
@ -1620,8 +1619,8 @@ be:
more_1_html: |-
Даведайцеся больш аб выкарыстанні нашых дадзеных і аб тым, як паказваць нас як крыніцу паходжання дадзеных на <a
href="http://osmfoundation.org/Licence">старонцы OSMF Licence</a> і <a href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">адказах на прававыя пытанні</a>.
more_2_html: Хоць дадзеныя OpenStreetMap з'яўляецца адкрытымі дадзенымі, мы
не ў стане прадастаўляць бясплатны картаграфічны API для іншых распрацоўшчыкаў.
more_2_html: Хоць даныя OpenStreetMap з’яўляюцца адкрытымі данымі, мы не ў
стане прадастаўляць бясплатны картаграфічны API для іншых распрацоўшчыкаў.
Азнаёмцеся з нашымі <a href="https://operations.osmfoundation.org/policies/api/">Правіламі
выкарыстання API</a>, <a href="https://operations.osmfoundation.org/policies/tiles/">Правіламі
выкарыстання графічных карт</a> і <a href="https://operations.osmfoundation.org/policies/nominatim/">Правіламі
@ -1712,7 +1711,7 @@ be:
user_page_link: старонка карыстальніка
anon_edits_link_text: Даведацца ў чым справа.
id_not_configured: iD не быў настроены
no_iframe_support: Ваш браўзэр не падтрымлівае HTML iframe, якія неабходныя
no_iframe_support: Ваш браўзер не падтрымлівае рамкі HTML, якія з’яўляюцца неабходнымі
для гэтай функцыі.
export:
title: Экспарт
@ -2235,8 +2234,8 @@ be:
description: Апісанне
user location: Месцазнаходжанне
role:
administrator: Гэты карыстальнік з'яўляецца адміністратарам
moderator: Гэты карыстальнік з'яўляецца мадэратарам
administrator: Гэты карыстальнік зяўляецца адміністратарам
moderator: Гэты карыстальнік зяўляецца мадэратарам
grant:
administrator: Надаць правы адміністратара
moderator: Надаць правы мадэратара
@ -2336,7 +2335,7 @@ be:
карыстальніка.
user_role:
filter:
not_a_role: Радок «%{role}» не з'яўляецца слушнай роляй.
not_a_role: Радок «%{role}» не зяўляецца слушнай роляй.
already_has_role: Карыстальнік ужо мае ролю %{role}.
doesnt_have_role: Карыстальнік не мае ролі %{role}.
not_revoke_admin_current_user: Немагчыма адазваць ролю адміністратара для гэтага

View file

@ -3,6 +3,7 @@
# Export driver: phpyaml
# Author: BennyZ2304
# Author: DCLXVI
# Author: Danieldegroot2
# Author: Kareyac
# Author: Lyubomirv
# Author: MrPanyGoff
@ -227,7 +228,7 @@ bg:
closed: закрита бележка (около %{place})
reopened: повторно отворена бележка (в близост до %{place})
entry:
comment: Коментиране
comment: Коментар
full: Цялата бележка
browse:
created: Създадена
@ -682,7 +683,6 @@ bg:
landing_site: Място за аварийно приземяване
phone: Телефон за спешни повиквания
water_tank: Цистерна за спешни случаи
"yes": Спешна помощ
highway:
abandoned: Изоставена магистрала
bridleway: Конен път
@ -1753,7 +1753,7 @@ bg:
authorize:
allow_to: 'Позволи приложението на клиента да:'
allow_read_prefs: прочетете вашите потребителски предпочитания
allow_write_prefs: променете вашите потребителски предпочитания
allow_write_prefs: променете вашите потребителски предпочитания.
allow_write_diary: създай дневник на бележките, коментарите и новите приятелства
allow_write_api: промени картата.
allow_read_gpx: прочети вашите лични GPS следи.
@ -1768,6 +1768,11 @@ bg:
title: Искането за достъп не успя
revoke:
flash: Анулирахте удостоверяването на %{application}
scopes:
write_prefs: Променете потребителски предпочитания
write_diary: Създай дневник на бележките, коментарите и новите приятелства
write_api: Промени картата
write_notes: Промени бележки
oauth_clients:
show:
key: 'Клиентски ключ:'
@ -2026,7 +2031,7 @@ bg:
queryfeature_disabled_tooltip: Увеличете за търсене на обекти
changesets:
show:
comment: Коментар
comment: Коментиране
subscribe: Абониране
unsubscribe: Отписване
hide_comment: скриване
@ -2041,7 +2046,7 @@ bg:
resolve: Решаване
reactivate: Повторно отваряне
comment_and_resolve: Коментиране и решаване
comment: Коментар
comment: Коментиране
directions:
ascend: Изкачване
engines:

View file

@ -490,7 +490,6 @@ bn:
title: ওপেনস্ট্রিটম্যাপ দিনলিপির ভুক্তি
description: ওপেনস্ট্রিটম্যাপ ব্যবহারকারীগণ কর্তৃক সাম্প্রতিক দিনলিপির ভুক্তি
comments:
has_commented_on: '%{display_name} নিম্নলিখিত দিনলিপির ভুক্তিতে মন্তব্য করেছেন'
post: পোস্ট
when: কখন
comment: মন্তব্য
@ -692,7 +691,6 @@ bn:
landing_site: জরুরি অবতরণ ক্ষেত্র
phone: জরুরি ফোন
water_tank: জরুরি পানির ট্যাংক
"yes": জরুরী
highway:
abandoned: পরিত্যক্ত মহাসড়ক
bridleway: অঙ্কুশ পথ

View file

@ -9,6 +9,7 @@
# Author: Gwenn-Ael
# Author: Iriep
# Author: Macofe
# Author: McDutchie
# Author: Nemo bis
# Author: Shirayuki
# Author: Y-M D
@ -537,8 +538,6 @@ br:
title: Enmontoù en deizlevr OpenStreetMap
description: Enmontoù nevez en deizlevr gant implijerien OpenStreetMap
comments:
has_commented_on: ↓%{display_name} en deus skrivet evezhiadennoù diwar-benn
ar pennadoù deizlevr-mañ
no_comments: Kemennadenn deizlevr ebet
post: Embann
when: Pegoulz
@ -780,7 +779,6 @@ br:
phone: Pellgomzer evit an urjañsoù
siren: C'hwitellerez difrae
water_tank: Beol dour trumm
"yes": Trummadoù
highway:
abandoned: Hent-houarn dilezet
bridleway: Hent evit ar varc'hegerien
@ -1676,7 +1674,7 @@ br:
email or username: 'Chomlec''h postel pe anv implijer :'
password: 'Ger-tremen :'
openid_html: '%{logo} OpenID :'
remember: 'Derc''hel soñj ac''hanon :'
remember: Derc'hel soñj ac'hanon
lost password link: Ankouaet ho ker-tremen ganeoc'h ?
login_button: Kevreañ
register now: En em enskrivañ bremañ

View file

@ -329,7 +329,6 @@ bs:
title: Unosi u OpenStreetMap dnevniku
description: Nedavni unosi u dnevnik OpenStreetMap korisnika
comments:
has_commented_on: '%{display_name} je komentirao/la sljedeće unose u dnevnik'
post: Post
when: Kada
comment: Komentar

View file

@ -8,6 +8,8 @@
# Author: Annamerida
# Author: Bc0ed5a28dfc189b971a689bae2d31b45cb5f3fd
# Author: Bogreudell
# Author: Danieldegroot2
# Author: Delta123
# Author: Eduardo Martinez
# Author: El libre
# Author: Fitoschido
@ -125,8 +127,8 @@ ca:
url: URL de l'aplicació principal (Requerit)
callback_url: URL de crida de retorn
support_url: URL de suport
allow_read_prefs: Llegeix les seves preferències d'usuari
allow_write_prefs: Modifica les seves preferències d'usuari
allow_read_prefs: llegir les vostres preferències d'usuari
allow_write_prefs: modificar les vostres preferències d'usuari.
allow_write_diary: Escriviu entrades de diari, comentaris i feu amics
allow_write_api: Modifica el mapa
allow_read_gpx: Llegeix les seves traces GPS privades
@ -477,6 +479,7 @@ ca:
nearby mapper: Cartògraf proper
friend: Amic
show:
title: El meu tauler
no_home_location_html: '%{edit_profile_link} i establiu la ubicació de casa
vostra per veure usuaris propers.'
edit_your_profile: Editeu el vostre perfil
@ -556,7 +559,9 @@ ca:
title: Entrades de diari d'OpenStreetMap
description: Entrades de diari recents dels usuaris d'OpenStreetMap
comments:
has_commented_on: '%{display_name} ha comentat les següents entrades de diari'
title: Comentaris del diari afegits per %{user}
heading: Comentaris del diari de %{user}
subheading_html: Comentaris del diari afegits per %{user}
no_comments: Sense comentaris al diari
post: Publicar
when: Quan
@ -679,6 +684,7 @@ ca:
loading_dock: Moll de càrrega
love_hotel: Hotel d'amor
marketplace: Mercat ambulant
mobile_money_agent: Agent de Diners mòbils
monastery: Monestir
money_transfer: Transferència de diners
motorcycle_parking: Aparcament per a motos
@ -702,6 +708,7 @@ ca:
ranger_station: Lloc de guarda forestal
recycling: Punt de reciclatge
restaurant: Restaurant
sanitary_dump_station: Abocador de WC químics
school: Escola - Institut
shelter: Refugi
shower: Dutxa
@ -798,6 +805,7 @@ ca:
blacksmith: Ferrer
brewery: Fàbrica de cervesa
carpenter: Fuster
caterer: Càtering
confectionery: Confiteria
dressmaker: Modista
electrician: Electricista
@ -805,9 +813,12 @@ ca:
gardener: Jardiner
glaziery: Vidrier
handicraft: Artesania
hvac: Fabricant de productes de climatització
metal_construction: Constructor de metalls
painter: Pintor
photographer: Fotògraf
plumber: Lampista
roofer: Fabricant de terrats
sawmill: Serradora
shoemaker: Sabater
stonemason: Picapedrer
@ -815,6 +826,7 @@ ca:
window_construction: Construcció de finestres
winery: Bodega
"yes": Botiga d'artesania
crossing: Encreuament
emergency:
access_point: Punt d'accés
ambulance_station: Base d'ambulàncies
@ -823,10 +835,11 @@ ca:
fire_extinguisher: Extintor de foc
fire_water_pond: Bassa d'Aigua Contra Incendis
landing_site: Lloc d'aterratge d'emergència
life_ring: Anell d'emergència
phone: Telèfon per a emergències
siren: Sirena d'emergència
suction_point: Punt de succió d'emergència
water_tank: Dipòsit d'aigua d'emergència
"yes": Emergència
highway:
abandoned: Carretera abandonada
bridleway: Camí de ferradura
@ -837,6 +850,7 @@ ca:
cycleway: Carril bici
elevator: Ascensor
emergency_access_point: Accés d'emergència
emergency_bay: Badia d'emergència
footway: Via per a vianants
ford: Gual
give_way: Senyal de cediu el pas
@ -869,6 +883,7 @@ ca:
track: Pista - Camí
traffic_mirror: Mirall de trànsit
traffic_signals: Semàfors
trailhead: Cap de pista
trunk: Via ràpida
trunk_link: Via ràpida
turning_loop: Canvi de sentit final
@ -890,6 +905,7 @@ ca:
citywalls: Muralles de la població
fort: Fortí
heritage: Patrimoni de la humanitat
hollow_way: Camí enfonsat
house: Casa
manor: Casa pairal
memorial: Memorial
@ -900,9 +916,11 @@ ca:
railway: Ferrocarril històric
roman_road: Calçada romana
ruins: Ruïnes
rune_stone: Pedra rúnica
stone: Pedra
tomb: Tomba
tower: Torre
wayside_chapel: Capella Wayside
wayside_cross: Creu de terme
wayside_shrine: Oratori
wreck: Derelicte
@ -931,6 +949,7 @@ ca:
military: Zona militar
mine: Mina
orchard: Verger
plant_nursery: Viver
quarry: Pedrera
railway: Ferrocarril
recreation_ground: Zona d'esbarjo
@ -945,6 +964,7 @@ ca:
leisure:
adult_gaming_centre: Centre recreatiu per a adults
amusement_arcade: Sala recreativa de videojocs
bandstand: Glorieta
beach_resort: Complex turístic de platja
bird_hide: Mirador d'ocells
bleachers: Grades
@ -984,11 +1004,14 @@ ca:
antenna: Antena
avalanche_protection: Protecció d'allaus
beacon: Balisa
beam: Barra
beehive: Rusc d'abelles
breakwater: Escullera
bridge: Pont
bunker_silo: Búnquer
cairn: Cairn
chimney: Xemeneia
clearcut: Talat
communications_tower: Torre de comunicacions
crane: Grua
cross: Creu
@ -1000,6 +1023,7 @@ ca:
groyne: Espigó
kiln: Kiln
lighthouse: Far
manhole: Tapa de clavegueram
mast: Màstil
mine: Mina
mineshaft: Pou miner
@ -1013,9 +1037,11 @@ ca:
snow_cannon: Canó de neu
snow_fence: Barrera contra les allaus
storage_tank: Tanc d'emmagatzematge
street_cabinet: Armari tècnic
surveillance: Vigilància
telescope: Telescopi
tower: Torre
utility_pole: Pal d'electricitat
wastewater_plant: Estació depuradora d'aigües residuals
watermill: Molí d'aigua
water_tap: Aixeta d'aigua
@ -1055,6 +1081,7 @@ ca:
hill: Pujol
hot_spring: Surgència termal
island: Illa
isthmus: Istme
land: Terra
marsh: Aiguamoll
moor: Torbera
@ -1069,10 +1096,13 @@ ca:
sand: Sorra
scree: Pedregar
scrub: Matollar
shingle: Còdol
spring: Deu
stone: Pedra
strait: Estret
tree: Arbre
tree_row: Fila d'arbres
tundra: Tundra
valley: Vall
volcano: Volcà
water: Aigua
@ -1097,6 +1127,7 @@ ca:
it: Oficina TIC
lawyer: Advocat
logistics: Oficina logística
newspaper: Oficina de redacció d'un diari
ngo: Oficina d'una ONG
notary: Notaria
religion: Oficina religiosa
@ -1191,6 +1222,7 @@ ca:
convenience: Botiga de conveniència
copyshop: Copisteria
cosmetics: Botiga cosmètica
craft: Botiga de subministrament per a fabricants
curtain: Botiga de cortines
dairy: Lleteria
deli: Botiga gastronòmica
@ -1219,6 +1251,7 @@ ca:
grocery: Botiga de queviures
hairdresser: Perruqueria
hardware: Ferreteria
health_food: Botiga dietètica
hearing_aids: Botiga d'audiòfons
herbalist: Herbolari
hifi: Botiga de Hi-Fi
@ -1470,9 +1503,10 @@ ca:
intro_text: L'OpenStreetMap és un mapa del món creat per persones com tu i d'ús
lliure sota una llicència oberta.
intro_2_create_account: Crea un compte dusuari
hosting_partners_html: L'allotjament és a càrrec de %{ucl}, %{bytemark} i d'altres
%{partners}.
hosting_partners_html: L'allotjament és a càrrec de %{ucl}, %{fastly}, %{bytemark}
i d'altres %{partners}.
partners_ucl: UCL
partners_fastly: Ràpid
partners_bytemark: Bytemark Hosting
partners_partners: socis
tou: Condicions dús
@ -1535,6 +1569,7 @@ ca:
failed_to_import: 'no es pot importar. L''error ha estat:'
more_info_html: Podeu trobar més informació sobre les fallades d'importació
de GPX i com evitar-les a %{url}.
import_failures_url: https://wiki.openstreetmap.org/wiki/GPX_Import_Failures
subject: '[OpenStreetMap] Error d''importació de GPX'
gpx_success:
hi: Hola %{to_user},
@ -2306,8 +2341,7 @@ ca:
new:
upload_trace: Pujar traça GPS
visibility_help: què significa això?
visibility_help_url: https://wiki.openstreetmap.org/wiki/Visibilitat_de_traces_de
GPS
visibility_help_url: https://wiki.openstreetmap.org/wiki/Ca:Visibility_of_GPS_traces
help: Ajuda
help_url: https://wiki.openstreetmap.org/wiki/Upload
create:
@ -2329,6 +2363,7 @@ ca:
title: Editant traça %{name}
heading: Editant traça %{name}
visibility_help: què vol dir això?
visibility_help_url: https://wiki.openstreetmap.org/wiki/Ca:Visibility_of_GPS_traces
update:
updated: Traça actualitzada
trace_optionals:
@ -2458,6 +2493,8 @@ ca:
read_gpx: Llegiu traces de GPS privades
write_gpx: Carrega traces de GPS
write_notes: Modifica les notes
read_email: Llegir adreça de correu electrònic d'usuari
skip_authorization: Aprovar automàticament l'aplicació
oauth_clients:
new:
title: Registreu una nova aplicació
@ -2623,6 +2660,7 @@ ca:
my settings: Les meves preferències
my comments: Els meus comentaris
my_preferences: Les meves preferències
my_dashboard: El meu tauler
blocks on me: Blocs sobre mi
blocks by me: Blocs fets per mi
edit_profile: Edita el perfil
@ -2742,6 +2780,7 @@ ca:
no_authorization_code: Sense codi d'autorització
unknown_signature_algorithm: Algorisme de signatura desconegut
invalid_scope: Àmbit no vàlid
unknown_error: Cal autenticació
auth_association:
heading: El teu ID encara no està associat a cap compte a OpenStreetMap
option_1: |-
@ -2963,7 +3002,7 @@ ca:
queryfeature_disabled_tooltip: Apropeu-vos per a consultar característiques
changesets:
show:
comment: Comentari
comment: Comenta
subscribe: Subscriure's
unsubscribe: Dona de baixa
hide_comment: ocultar

View file

@ -1,6 +1,7 @@
# Messages for Chechen (нохчийн)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: McDutchie
# Author: Sasan700
# Author: Умар
---
@ -412,8 +413,6 @@ ce:
title: Дневникан дӀайаздарш OpenStreetMap
description: OpenStreetMap декъашхойн тӀаьххьарлера дӀайаздарш
comments:
has_commented_on: '%{display_name} хӀинца лахара дӀайаздарех лаьцна коммент
йитина'
post: Хаам
when: Маца
comment: Коммент
@ -814,7 +813,7 @@ ce:
reset_password:
title: Йуха а йазйе пароль
heading: Йуха а йазйе пароль %{user}
reset: ХӀоттае пароль
reset: ХӀоттайе пароль
flash changed: Хьан пароль хийцина.
profiles:
edit:
@ -828,7 +827,7 @@ ce:
email or username: 'Эл. пошт йа декъашхочун цӀе:'
password: 'Пароль:'
openid_html: '%{logo} OpenID:'
remember: 'Дагалаца со:'
remember: Дагалаца со
lost password link: Йицъелла пароль?
login_button: ЧугӀо
register now: ДӀадазло

View file

@ -539,7 +539,7 @@ cs:
diary_entry:
posted_by_html: Zapsal %{link_user} %{created} v jazyce %{language_link}.
updated_at_html: Naposledy aktualizováno %{updated}
comment_link: Okomentovat tento zápis
comment_link: Okomentovat tento záznam
reply_link: Pošlete zprávu autorovi
comment_count:
few: '%{count} komentáře'
@ -573,7 +573,9 @@ cs:
title: Deníkové záznamy OpenStreetMap
description: Nedávné záznamy v denících uživatelů OpenStreetMap
comments:
has_commented_on: '%{display_name} okomentoval následující záznamy v deníku'
title: Komentáře k deníkům přidané uživatelem %{user}
heading: Deníkové komentáře uživatele %{user}
subheading_html: Komentáře k deníkům přidané uživatelem %{user}
no_comments: Žádné komentáře k deníkům
post: Záznam
when: Kdy
@ -852,7 +854,6 @@ cs:
siren: Nouzová siréna
suction_point: Nouzové sací místo
water_tank: Nouzová vodní nádrž
"yes": Nouze
highway:
abandoned: Zrušená silnice
bridleway: Koňská stezka
@ -2482,6 +2483,8 @@ cs:
read_gpx: Číst soukromé GPS stopy
write_gpx: Nahrávat GPS stopy
write_notes: Měnit poznámky
read_email: Přečíst e-mailovou adresu uživatele
skip_authorization: Automaticky schválit aplikaci
oauth_clients:
new:
title: Registrace nové aplikace
@ -2763,6 +2766,7 @@ cs:
no_authorization_code: Bez autorizačního kódu
unknown_signature_algorithm: Neznámý algoritmus podpisu
invalid_scope: Neplatný rozsah
unknown_error: Ověření selhalo
auth_association:
heading: Vaše ID dosud není propojeno s účtem OpenStreetMap.
option_1: Pokud jste na OpenStreetMap noví, založte si prosím nový účet pomocí

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Cymrodor
# Author: Danieldegroot2
# Author: Robin Owain
---
cy:
@ -387,8 +388,6 @@ cy:
title: Cofnodion dyddiadur OpenStreetMap
description: Cofnodion dyddiadur diweddar gan ddefnyddwyr OpenStreetMap
comments:
has_commented_on: Mae %{display_name} wedi rhoi sylw ar y cofnodion dyddiadurol
canlynol
post: Post
when: Pa bryd
comment: Sylw
@ -555,7 +554,6 @@ cy:
landing_site: Man Glanio Mewn Argyfwng
phone: Ffôn Argyfwng
water_tank: Tanc Dŵr Argyfwng
"yes": Argyfwng
highway:
abandoned: Hen Briffordd
bridleway: Llwybr Ceffyl
@ -1582,7 +1580,7 @@ cy:
map_data_zoom_in_tooltip: Chwyddwch mewn i weld data'r map
changesets:
show:
comment: Sylw
comment: Adweithio
subscribe: Tanysgrifio
unsubscribe: Dad-danysgrifio
hide_comment: cuddio
@ -1595,7 +1593,7 @@ cy:
resolve: Datrys
reactivate: Ail roi ar waith
comment_and_resolve: Sylw a Datrys
comment: Sylw
comment: Adweithio
query:
way: Llwybr
nothing_found: Ni ddarganfuwyd nodweddion

View file

@ -4,6 +4,7 @@
# Author: Antonla
# Author: Brufnus
# Author: Christian List
# Author: Danieldegroot2
# Author: Dargelf
# Author: Ebbe
# Author: Fenrisdk
@ -102,7 +103,7 @@ da:
tracepoint: Sporpunkt
tracetag: Sporegenskab
user: Bruger
user_preference: Brugerindstillinger
user_preference: Brugeralternativ
user_token: Brugernøgle
way: Vej
way_node: Vejpunkt
@ -113,13 +114,13 @@ da:
url: Hovedapplikations-URL (påkrævet)
callback_url: Callback URL
support_url: Support URL
allow_read_prefs: læse deres brugerindstillinger
allow_write_prefs: ændre deres brugerindstillinger
allow_read_prefs: læse deres brugeralternativer
allow_write_prefs: ændre deres brugeralternativer
allow_write_diary: oprette blogindlæg, kommentarer og indgå venskaber
allow_write_api: redigere kortet
allow_write_api: ændre kortet
allow_read_gpx: læse deres private GPS-spor
allow_write_gpx: overføre GPS-spor
allow_write_notes: redigere bemærkninger
allow_write_notes: ændre bemærkninger
diary_comment:
body: Brødtekst
diary_entry:
@ -130,6 +131,8 @@ da:
language: Sprog
doorkeeper/application:
name: Navn
redirect_uri: Omdirigerings-URI:jer
confidential: Konfidentiell applikation?
scopes: Tilladelser
friend:
user: Bruger
@ -173,6 +176,11 @@ da:
pass_crypt: Adgangskode
pass_crypt_confirmation: Bekræft adgangskode
help:
doorkeeper/application:
confidential: Applikation vil blive anvendt hvor klient-hemmeligheden kan
holdes skjult (native mobilapplikationer og single page-applikationer kan
ikke dette)
redirect_uri: Brug en linje pr. URI
trace:
tagstring: kommasepareret
user_block:
@ -456,6 +464,10 @@ da:
nearby mapper: Bruger i nærheden
friend: Ven
show:
title: Min kontrolpanel
no_home_location_html: '%{edit_profile_link} og definer hvor du bor for at se
brugere i nærheden.'
edit_your_profile: Rediger din profil
my friends: Mine venner
no friends: Du har ikke tilføjet nogle venner endnu.
nearby users: 'Andre brugere i nærheden:'
@ -533,13 +545,17 @@ da:
title: OpenStreetMap-blogindlæg
description: Seneste blogindlæg fra brugere af OpenStreetMap
comments:
has_commented_on: '%{display_name} har kommenteret på følgende blogindlæg'
no_comments: Ingen blogkommentarer
post: Indsend
when: Hvornår
comment: Kommentar
newer_comments: Nyere kommentarer
older_comments: Ældre kommentarer
doorkeeper:
flash:
applications:
create:
notice: Applikation registrerad.
friendships:
make_friend:
heading: Tilføj %{user} som en ven?
@ -749,7 +765,7 @@ da:
public: Offentlig bygning
residential: Beboelsesbygning
retail: Detailhandelbygning
roof: Tag
roof: Halvtag
ruins: Bygningsruin
school: Skolebygning
semidetached_house: Rækkehus
@ -807,7 +823,6 @@ da:
siren: Varslingssirene
suction_point: Beredskabssugepunkt
water_tank: Nødvandtank
"yes": Nødsituation
highway:
abandoned: Forladt motorvej
bridleway: Ridesti
@ -940,8 +955,8 @@ da:
common: Fælles arealer
dance: Dansested
dog_park: Hundepark
firepit: Kogegrube
fishing: Fiskeområde
firepit: Bålplads
fishing: Fiskeriområde
fitness_centre: Motionscenter
fitness_station: Udendørs fitness udstyr
garden: Have
@ -1383,7 +1398,7 @@ da:
ignore: Ignorér
reopen: Genåbn
reports_of_this_issue: Rapporteringer af denne sag
read_reports: Læs rapporter
read_reports: Læse rapporter
new_reports: Nye rapporter
other_issues_against_this_user: Andre sager omhandlende denne bruger
no_other_issues: Ingen andre sager omhandlende denne bruger.
@ -1652,6 +1667,12 @@ da:
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.
resend_success_flash:
confirmation_sent: Vi har sendt en bekræftelsesmeddelelse til %{email} og så
snart du bekræfter din konto vil du være i stand til at begynde kortlægningen.
whitelist: Hvis du bruger et antispam-system som sender bekræftelsesforespørgsler
så vær sikker på at du tilføjer %{sender} til whitelist, da vi ikke kan svare
på nogen bekræftelsesforespørgsler.
messages:
inbox:
title: Indbakke
@ -1707,7 +1728,7 @@ da:
svare på blev ikke sendt til den bruger. Log venligst på som den korrekte
bruger for at svare.
show:
title: Læs besked
title: Læse besked
from: Fra
subject: Emne
date: Dato
@ -1743,8 +1764,25 @@ da:
reset: Nulstil adgangskode
flash changed: Din adgangskode er ændret.
flash token bad: Kunne ikke finde denne nøgle, prøv at kontrollere URL'en?
preferences:
show:
title: Mine alternativer
preferred_editor: Foretrukken editor
preferred_languages: Foretrukne sprog
edit_preferences: Rediger alternativer
edit:
title: Rediger alternativer
save: Opdater alternativer
cancel: Annuller
update:
failure: Kunne ikke opdatere alternativer.
update_success_flash:
message: Alternativer opdateret.
profiles:
edit:
title: Rediger profil
save: Opdater profil
cancel: Annuller
image: Billede
gravatar:
gravatar: Brug Gravatar
@ -1760,6 +1798,9 @@ da:
home location: Hjemmeposition
no home location: Du har ikke angivet din hjemmeposition.
update home location on click: Opdater hjemmeposition når jeg klikker på kortet?
update:
success: Profil opdateret.
failure: Kunne ikke opdatere profil.
sessions:
new:
title: Log på
@ -1770,7 +1811,7 @@ da:
remember: Husk mig
lost password link: Glemt din adgangskode?
login_button: Log på
register now: Opret nu
register now: Registrér nu
with username: 'Har du allerede en OpenStreetMap konto? Log på med dit brugernavn
og din adgangskode:'
with external: 'Alternativt kan du bruge en tredjepart for at logge på:'
@ -1782,7 +1823,7 @@ da:
bekræftelsesemailen for at aktivere din konto eller <a href="%{reconfirm}">få
sendt en ny bekræftelsesemail</a>.
account is suspended: Beklager, din konto er suspenderet på grund af mistænkelig
aktivitet.<br />Kontakt <a href="%{webmaster}">webmasteren</a> , hvis du ønsker
aktivitet.<br />Kontakt <a href="%{webmaster}">support</a> , hvis du ønsker
at drøfte dette.
auth failure: Kunne ikke logge på med disse oplysninger.
openid_logo_alt: Log på med et OpenID
@ -1907,11 +1948,10 @@ da:
I medier\n hvor hyperlinks ikke er mulige (f.eks. trykte værker), foreslår
vi, at du\n henviser dine læsere til openstreetmap.org (måske ved at udvide\n'OpenStreetMap'
i kildeangivelsen til denne fuld adresse) og opendatacommons.org."
credit_3_1_html: "Kort-fliserne i &ldquo;standard kortlaget&rdquo; på www.openstreetmap.org
er et produceret værk (\"Produced Work\") af OpenStreetMap Foundation ved
brug af OpenStreetMap-data licenseret \nunder Open Database License. Hvis
du anvender disse fliser så brug venligst den følgende kreditering: \n&ldquo;Grundkort
og data fra OpenStreetMap og OpenStreetMap Foundation&rdquo;."
credit_3_1_html: Kort-fliserne i &ldquo;standard kortlaget&rdquo; på www.openstreetmap.org
er et produceret værk ("Produced Work") af OpenStreetMap Foundation ved
brug af OpenStreetMap-data licenseret under Open Database License. Hvis
du anvender disse fliser kræves den samme kreditering som for kortdata.
credit_4_html: |-
For et navigerbart elektronisk kort, skal kildeangivelsen være i hjørnet af kortet.
For eksempel:
@ -1941,8 +1981,10 @@ da:
<a href="https://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Delstaten Vorarlberg</a> og
Delstaten Tyrol (under <a href="https://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY AT med tilføjelser</a>).
contributors_au_html: |-
<strong>Australien</strong>: Indeholder forstadsdata baseret
på data fra Australian Bureau of Statistics.
<strong>Australien</strong>: Indeholder eller er udviklet med administrative grænser ("Administrative Boundaries") &copy;
<a href="https://geoscape.com.au/legal/data-copyright-and-disclaimer/">Geoscape Australia</a>
licenseret af Commonwealth of Australia under
<a href="https://creativecommons.org/licenses/by/4.0/deed.da">Creative Commons Kreditering 4.0 International licence (CC BY 4.0)</a>.
contributors_ca_html: |-
<strong>Canada</strong>: Indeholder data fra
GeoBase&reg;, GeoGratis (&copy; Department of Natural
@ -2135,9 +2177,9 @@ da:
Player er blevet trukket tilbage, er Potlatch ikke længere tilgængelig i browseren.
desktop_html: Du kan stadig bruge Potlatch ved at <a href="https://www.systemed.net/potlatch/">hente
applikationen til Mac og Windows</a>.
id_html: Alternativt kan du sætte iD som din foretrukne editor. iD kører i din
browser, ligesom Potlatch gjorde. <a href="%{settings_url}">Du kan ændre din
foretrukne editor her</a>.
id_html: Alternativt kan du sætte iD som din foretrukne editor, denne afvikles
i din browser, ligesom Potlatch gjorde. <a href="%{settings_url}">Ændr dine
alternativer her</a>.
sidebar:
search_results: Søgeresultater
close: Luk
@ -2252,12 +2294,12 @@ da:
på en vej.
rules:
title: Regler!
paragraph_1_html: "OpenStreetMap har få formelle regler, men vi forventer,
at alle deltagere vil samarbejde\nmed, og kommunikere med fællesskabet.
Hvis du overvejer\nandre aktiviteter end manuel redigering af en side, skal
du læse og følge retningslinjerne på \n<a href=\"https://wiki.openstreetmap.org/wiki/Import/Guidelines\">Import</a>
og \n<a href=\"https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct\">Automatiserede
Redigeringer</a>."
paragraph_1_html: |-
OpenStreetMap har få formelle regler, men vi forventer, at alle deltagere vil samarbejde
med, og kommunikere med fællesskabet. Hvis du overvejer
andre aktiviteter end manuel redigering af en side, skal du læse og følge retningslinjerne på
<a href="https://wiki.openstreetmap.org/wiki/Import/Guidelines">Import</a> og
<a href="https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct">Automatiserede Redigeringer</a>.
questions:
title: Spørgsmål?
paragraph_1_html: |-
@ -2393,6 +2435,11 @@ da:
need_to_see_terms: Din adgang til API-et er midlertidig stoppet. Log ind på
netsiden for at læse bidragsydervilkårene. Du behøver ikke at godkende vilkårene,
men du skal læse dem.
settings_menu:
account_settings: Kontoindstillinger
oauth1_settings: OAuth 1-indstillinger
oauth2_applications: OAuth 2-applikationer
oauth2_authorizations: OAuth 2-autorisationer
oauth:
authorize:
title: Tillad adgang til din konto
@ -2400,10 +2447,10 @@ da:
%{user}. Kontroller, om du vil tillade adgang til følgende funktioner. Du
kan vælge lige så mange eller så få, som du ønsker.
allow_to: 'Tillad klient-applikationen at:'
allow_read_prefs: læse dine brugerindstillinger.
allow_write_prefs: ændre dine brugerindstillinger.
allow_read_prefs: læse dine brugeralternativer.
allow_write_prefs: ændre dine brugeralternativer.
allow_write_diary: oprette blogindlæg, kommentarer og indgå venskaber.
allow_write_api: tilpas kortet.
allow_write_api: ændre kortet.
allow_read_gpx: læse dine private GPS-spor.
allow_write_gpx: overfør GPS-spor.
allow_write_notes: ændre bemærkninger.
@ -2421,7 +2468,14 @@ da:
permissions:
missing: Du har ikke givet applikationen adgang til denne facilitet
scopes:
read_email: Læs brugerens e-mailadresse
read_prefs: Læse brugeralternativer
write_prefs: Ændre brugeralternativer
write_diary: Udgiv brugerblogs, kommenter og få venner
write_api: Ændre kortet
read_gpx: Læse private GPS-spor
write_gpx: Overføre GPS-spor
write_notes: Ændre bemærkninger
read_email: Læse brugerens e-mailadresse
skip_authorization: Godkend applikation automatisk
oauth_clients:
new:
@ -2466,22 +2520,59 @@ da:
flash: Annulerede klient programmets registrering
oauth2_applications:
index:
title: Mine klient-applikationer
no_applications_html: Har du en applikation, du gerne vil registrere til brug
med os ved hjælp af %{oauth2} standarden? Du skal registrere din applikation,
før det kan foretage OAuth-anmodninger til denne tjeneste.
new: Registrer ny applikation
name: Navn
permissions: Tilladelser
application:
edit: Rediger
delete: Slet
confirm_delete: Slete denne applikation?
new:
title: Registrere en ny applikation
edit:
title: Rediger din applikation
show:
edit: Rediger
delete: Slet
confirm_delete: Slet denne applikation?
client_id: Klient-ID
client_secret: Klient-hemmelighed
client_secret_warning: Sørg for at gemme denne hemmelighed - den vil ikke være
tilgængelig senere
permissions: Tilladelser
redirect_uris: Omdirigerings-URI:jer
not_found:
sorry: Beklager, applikationen kunne ikke findes.
oauth2_authorizations:
new:
title: Autorisation påkrævet
introduction: Autoriser %{application} til at tilgå din konto med de følgende
tilladelser?
authorize: Autoriser
deny: Nægt
error:
title: Der opstod en fejl
show:
title: Autoriseringskode
oauth2_authorized_applications:
index:
title: Mine autoriserede applikationer
application: Applikation
permissions: Tilladelser
no_applications_html: Du har endnu ikke autoriseret nogle %{oauth2}-applikationer.
application:
revoke: Fjern adgang
confirm_revoke: Fjern adgang for denne applikation?
users:
new:
title: Opret konto
no_auto_account_create: Vi kan desværre ikke oprette en konto automatisk for
dig pt.
contact_support_html: Kontakt venligst <a href="%{support}">webmaster</a> for
contact_support_html: Kontakt venligst <a href="%{support}">support</a> for
at få oprettet en konto - vi vil forsøge at håndtere forespørgslen så hurtigt
som muligt.
about:
@ -2531,6 +2622,9 @@ da:
italy: Italien
rest_of_world: Resten af verden
terms_declined_flash:
terms_declined_html: Vi er kede af at du har besluttet at du ikke kan acceptere
de nye vilkår for bidragsydere. For yderligere oplysninger, se venligst %{terms_declined_link}.
terms_declined_link: denne wiki-side
terms_declined_url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
no_such_user:
title: Ingen sådan bruger
@ -2548,8 +2642,11 @@ da:
my profile: Min profil
my settings: Mine indstillinger
my comments: Mine kommentarer
my_preferences: Mine alternativer
my_dashboard: Min kontrolpanel
blocks on me: Mine blokeringer
blocks by me: Blokeringer udført af mig
edit_profile: Rediger profil
send message: Send besked
diary: Blog
edits: Redigeringer
@ -2648,6 +2745,7 @@ da:
suspended:
title: Konto suspenderet
heading: Konto suspenderet
support: support
body_html: "<p>\n Beklager, din konto er automatisk blevet suspenderet på grund
af mistænkelig aktivitet. \n</p>\n<p>\n Denne beslutning vil blive gennemgået
af en administrator snarest, eller du kan kontakte %{webmaster} hvis du ønsker
@ -2881,7 +2979,7 @@ da:
queryfeature_disabled_tooltip: Zoom ind for at finde kortobjekter
changesets:
show:
comment: Kommentar
comment: Kommenter
subscribe: Abonnér
unsubscribe: Afmeld
hide_comment: skjul

View file

@ -18,6 +18,7 @@
# Author: ChrisiPK
# Author: ChristianSW
# Author: CygnusOlor
# Author: Danieldegroot2
# Author: Daswaldhorn
# Author: Diebuche
# Author: Dieterdreist
@ -168,7 +169,7 @@ de:
callback_url: Callback-URL
support_url: Support-URL
allow_read_prefs: Ihre Benutzereinstellungen auslesen.
allow_write_prefs: Ihre Benutzereinstellungen verändern.
allow_write_prefs: Ihre Benutzereinstellungen verändern
allow_write_diary: Blogeinträge und Kommentare schreiben und Freunde finden
allow_write_api: Karte bearbeiten
allow_read_gpx: Zugriff auf ihre privaten GPS-Tracks
@ -327,7 +328,7 @@ de:
closed: geschlossener Hinweis (in der Nähe von %{place})
reopened: reaktivierter Hinweis (in der Nähe von %{place})
entry:
comment: Kommentieren
comment: Kommentar
full: Vollständiger Hinweis
browse:
created: Erstellt
@ -600,7 +601,9 @@ de:
title: OpenStreetMap Blogbeiträge
description: Neueste Blogeinträge von OpenStreetMap-Nutzern
comments:
has_commented_on: '%{display_name} hat die folgenden Blogeinträge kommentiert'
title: Tagebuch-Kommentare hinzugefügt von %{user}
heading: '%{user}s Tagebuch-Kommentare'
subheading_html: Tagebuch-Kommentare hinzugefügt von %{user}
no_comments: Keine Blog-Kommentare
post: Blogeintrag
when: Zeitpunkt
@ -879,7 +882,6 @@ de:
siren: Sirene
suction_point: Löschwasser-Saugstelle
water_tank: Notwasserbehälter
"yes": Notfall
highway:
abandoned: Aufgegebene Straße
bridleway: Reitweg
@ -926,6 +928,7 @@ de:
trailhead: Ausgangspunkt eines Wanderweges
trunk: Schnellstraße
trunk_link: Schnellstraßenauffahrt
turning_circle: Wendestelle
turning_loop: Wendeschleife
unclassified: Straße
"yes": Straße
@ -1612,7 +1615,7 @@ de:
failed_to_import: 'konnte nicht importiert werden, die Fehlermeldung:'
more_info_html: Weitere Informationen über Fehler bei GPX-Importen und wie sie
vermieden werden können finden sich in %{url}
import_failures_url: https://wiki.openstreetmap.org/wiki/DE:GPX
import_failures_url: https://wiki.openstreetmap.org/wiki/DE:GPX#Warum_wurde_meine_GPX-Datei_nicht_richtig_hochgeladen.3F
subject: '[OpenStreetMap] GPX-Import Fehler'
gpx_success:
hi: Hallo %{to_user},
@ -1841,7 +1844,7 @@ de:
möglicherweise vertippt oder du bist einem ungültigem Link gefolgt.
preferences:
show:
title: Meine Benutzereinstellungen
title: Benutzereinstellungen
preferred_editor: Bevorzugter Editor
preferred_languages: Bevorzugte Sprachen
edit_preferences: Benutzereinstellungen bearbeiten
@ -2043,9 +2046,9 @@ de:
und, sofern zutreffend, auf creativecommons.org.
credit_3_1_html: "Die Kartenkacheln im &ldquo;Standardstil&rdquo; auf www.openstreetmap.org
sind ein \nProduziert von der OpenStreetMap Foundation unter Verwendung
von OpenStreetMap-Daten \nunter der Open Database License. Wenn Sie diese
Kacheln verwenden, verwenden Sie bitte \ndie folgende Zuschreibung: \n&ldquo;Basiskarte
und Daten von OpenStreetMap und OpenStreetMap Foundation&rdquo;."
von OpenStreetMap-Daten \nunter der Open Database License. Bei der Verwendung
dieses Kartenstils ist die gleiche Namensnennung\nerforderlich wie bei den
Kartendaten."
credit_4_html: |-
Der Hinweis sollte für eine durchsuchbare elektronische Karte in der Ecke der Karte stehen.
Zum Beispiel:
@ -2381,12 +2384,12 @@ de:
erlaubte Höchstgeschwindigkeit 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=\"https://wiki.openstreetmap.org/wiki/DE:Import/Guidelines\">Importen</a>
und \n<a href=\"https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct\">automatischen
Bearbeitungen</a>."
paragraph_1_html: |-
OpenStreetMap hat nur wenige formale Regeln, aber wir erwarten, dass alle Teilnehmer
mit der Gemeinschaft zusammenarbeiten und kommunizieren. Falls du andere Aktivitäten erwägst
als per Hand zu bearbeiten, lies und folge bitte den Richtlinien zu
<a href="https://wiki.openstreetmap.org/wiki/DE:Import/Guidelines">Importen</a> und
<a href="https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct">automatischen Bearbeitungen</a>.
questions:
title: Fragen?
paragraph_1_html: |-
@ -2540,12 +2543,12 @@ de:
gewähren:'
allow_to: 'Erlaube der Anwendung:'
allow_read_prefs: Deine Benutzereinstellungen zu lesen
allow_write_prefs: Deine Benutzereinstellungen zu verändern
allow_write_prefs: Deine Benutzereinstellungen verändern.
allow_write_diary: Blogeinträge und Kommentare zu schreiben und Freunde einzutragen
allow_write_api: Die OSM-Datenbank zu ändern
allow_write_api: Karte bearbeiten.
allow_read_gpx: Deine privaten GPS-Tracks auszulesen
allow_write_gpx: GPS-Tracks hochzuladen
allow_write_notes: Hinweise zu geben/Fehler zu melden
allow_write_notes: Notizen bearbeiten.
grant_access: Zugriff gewähren
authorize_success:
title: Autorisierungsanfrage genehmigt
@ -2568,6 +2571,8 @@ de:
read_gpx: Private GPS-Tracks lesen
write_gpx: GPS-Tracks hochladen
write_notes: Notizen bearbeiten
read_email: Lesen der Benutzer-E-Mail-Adresse
skip_authorization: Antrag automatisch genehmigen
oauth_clients:
new:
title: Eine neue Anwendung registrieren
@ -2853,6 +2858,7 @@ de:
no_authorization_code: Kein Autorisierungscode
unknown_signature_algorithm: Unbekannter Signaturalgorithmus
invalid_scope: Ungültiger Bereich
unknown_error: Authentifizierung fehlgeschlagen
auth_association:
heading: Deine ID ist noch nicht mit einem OpenStreetMap-Konto verknüpft.
option_1: |-
@ -3066,13 +3072,14 @@ de:
terms: <a href='%{terms_url}' target='_blank'>Nutzungsbedingungen der Website
und API</a>
cyclosm: Kachelstil von <a href='%{cyclosm_url}' target='_blank'>CyclOSM</a>
gehostet von <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap Frankreich</a>
bereitgestellt von <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap
Frankreich</a>
thunderforest: Kacheln mit freundlicher Genehmigung von <a href='%{thunderforest_url}'
target='_blank'>Andy Allan</a>
opnvkarte: Kacheln mit freundlicher Genehmigung von <a href='%{memomaps_url}'
target='_blank'>MeMoMaps</a>
hotosm: Kachelstil von <a href='%{hotosm_url}' target='_blank'>Humanitarian
OpenStreetMap Team</a> gehostet von <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap
OpenStreetMap Team</a> bereitgestellt von <a href='%{osmfrance_url}' target='_blank'>OpenStreetMap
Frankreich</a>
site:
edit_tooltip: Karte bearbeiten
@ -3086,7 +3093,7 @@ de:
queryfeature_disabled_tooltip: Für Objektabfrage vergrößern
changesets:
show:
comment: Kommentar
comment: Kommentieren
subscribe: Abonnieren
unsubscribe: Abbestellen
hide_comment: verstecken
@ -3107,7 +3114,7 @@ de:
resolve: Erledigt
reactivate: Reaktivieren
comment_and_resolve: Kommentieren & Erledigen
comment: Kommentar
comment: Kommentieren
edit_help: Wähle eine höhere Zoomstufe und verschiebe die Karte an einen Ort,
den du bearbeiten möchtest, und klicke hier.
directions:

View file

@ -1,8 +1,10 @@
# Messages for Lower Sorbian (dolnoserbski)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Danieldegroot2
# Author: Derbeth
# Author: Macofe
# Author: McDutchie
# Author: Michawiki
# Author: Shirayuki
---
@ -368,7 +370,6 @@ dsb:
title: Zapiski dnjownika OpenStreetMap
description: Nejnowše zapiski dnjownika wót wužywarjow OpenStreetMap
comments:
has_commented_on: '%{display_name} jo slědujuce dnjownikowe zapiski komentěrował'
post: Powěsć
when: Cas
comment: Komentar
@ -1115,7 +1116,7 @@ dsb:
email or username: 'E-mailowa adresa abo wužywarske mě:'
password: 'Gronidło:'
openid_html: '%{logo} OpenID:'
remember: 'Spomnjeś se:'
remember: Spomnjeś se
lost password link: Sy swójo gronidło zabył?
login_button: Pśizjawiś se
register now: Něnto registrěrowaś
@ -1958,6 +1959,9 @@ dsb:
createnote_disabled_tooltip: Powětšyś, aby kórśe pokazku pśidało
map_notes_zoom_in_tooltip: Powětš kórtu, aby pokazki wiźeł
map_data_zoom_in_tooltip: Powětš kórtu, aby daty wiźeł
changesets:
show:
comment: Reagěrowaś
notes:
new:
intro: Sy zmólku wiźeł abo až něco felujo? Informěruj drugich kartěrowarjow, aby
@ -1972,7 +1976,7 @@ dsb:
resolve: Wótbyty
reactivate: Znowego aktiwěrowaś
comment_and_resolve: Komentěrowaś a cyniś
comment: Komentar
comment: Reagěrowaś
edit_help: Pśesuń kórtu do městna, kótarež coš wobźěłaś, powětš tam a klikni pótom
how.
directions:

View file

@ -6,6 +6,7 @@
# Author: Babispan
# Author: Consta
# Author: Crazymadlover
# Author: Danieldegroot2
# Author: Evropi
# Author: FocalPoint
# Author: Geraki
@ -553,8 +554,6 @@ el:
title: Καταχωρήσεις ημερολογίου OpenStreetMap
description: Πρόσφατες καταχωρήσεις ημερολογίου από χρήστες του OpenStreetMap
comments:
has_commented_on: Ο %{display_name} έχει σχολιάσει στις ακόλουθες καταχωρήσεις
ημερολογίου
no_comments: Χωρίς σχόλια ημερολογίου
post: Καταχώρηση
when: Πότε
@ -789,7 +788,6 @@ el:
landing_site: Τοποθεσία έκτακτης προσγείωσης
phone: Τηλέφωνο έκτακτης ανάγκης
water_tank: Δεξαμενή νερού έκτακτης ανάγκης
"yes": Επείγοντα
highway:
abandoned: Εγκαταλελειμμένος αυτοκινητόδρομος
bridleway: Μονοπάτι για άλογα
@ -2842,7 +2840,7 @@ el:
για διάφορα χαρακτηριστικά
changesets:
show:
comment: Σχόλιο
comment: Σχολιάζω
subscribe: Εγγραφείτε ως συνδρομητής
unsubscribe: Κατάργηση εγγραφής
hide_comment: απόκρυψη
@ -2863,7 +2861,7 @@ el:
resolve: Επιλύστε
reactivate: Επανενεργοποίηση
comment_and_resolve: Σχολιάστε και Επιλύστε
comment: Σχολιάστε
comment: Σχολιάζω
edit_help: Μετακινήστε το χάρτη και να κάνετε ζουμ σε μια τοποθεσία που θέλετε
να επεξεργαστείτε, στη συνέχεια, κάντε κλικ εδώ.
directions:

View file

@ -11,6 +11,7 @@
# Author: Caliburn
# Author: Captaindogfish
# Author: Chase me ladies, I'm the Cavalry
# Author: Danieldegroot2
# Author: E THP
# Author: EdLoach
# Author: Eduard Popov
@ -506,7 +507,6 @@ en-GB:
title: OpenStreetMap diary entries
description: Recent diary entries from users of OpenStreetMap
comments:
has_commented_on: '%{display_name} has commented on the following diary entries'
post: Post
when: When
comment: Comment
@ -705,7 +705,6 @@ en-GB:
landing_site: Emergency Landing Site
phone: Emergency Phone
water_tank: Emergency Water Tank
"yes": Emergency
highway:
abandoned: Abandoned Highway
bridleway: Bridleway
@ -2046,6 +2045,9 @@ en-GB:
flash: Updated the client information successfully
destroy:
flash: Destroyed the client application registration
oauth2_applications:
new:
title: Register a new application
users:
new:
title: Sign Up

View file

@ -504,7 +504,9 @@ en:
title: "OpenStreetMap diary entries"
description: "Recent diary entries from users of OpenStreetMap"
comments:
has_commented_on: "%{display_name} has commented on the following diary entries"
title: "Diary Comments added by %{user}"
heading: "%{user}'s Diary Comments"
subheading_html: "Diary Comments added by %{user}"
no_comments: "No diary comments"
post: Post
when: When
@ -781,7 +783,6 @@ en:
siren: "Emergency Siren"
suction_point: "Emergency Suction Point"
water_tank: "Emergency Water Tank"
"yes": "Emergency"
highway:
abandoned: "Abandoned Highway"
bridleway: "Bridleway"
@ -828,6 +829,7 @@ en:
trailhead: "Trailhead"
trunk: "Trunk Road"
trunk_link: "Trunk Road"
turning_circle: "Turning Circle"
turning_loop: "Turning Loop"
unclassified: "Unclassified Road"
"yes" : "Road"
@ -2648,6 +2650,7 @@ en:
no_authorization_code: No authorization code
unknown_signature_algorithm: Unknown signature algorithm
invalid_scope: Invalid scope
unknown_error: Authentication failed
auth_association:
heading: Your ID is not associated with a OpenStreetMap account yet.
option_1: |

View file

@ -5,6 +5,7 @@
# Author: Alefar
# Author: Bwildenhain.BO
# Author: Cfoucher
# Author: Danieldegroot2
# Author: Javiero
# Author: Kastanoto
# Author: KuboF
@ -416,7 +417,7 @@ eo:
id: Identigilo
saved_at: Konservita je
user: Uzanto
comment: Komenti
comment: Komento
area: Areo
index:
title: Ŝanĝaroj
@ -534,11 +535,10 @@ eo:
title: OpenStreetMap taglibraj afiŝoj
description: Lastaj taglibraj afiŝoj de OpenStreetMap-uzantoj
comments:
has_commented_on: '%{display_name} komentis pri la jenaj taglibraj afiŝoj'
no_comments: Neniu taglibra komento
post: Afiŝi
when: Kiam
comment: Komenti
comment: Komento
newer_comments: Pli novaj komentoj
older_comments: Pli malnovaj komentoj
doorkeeper:
@ -813,7 +813,6 @@ eo:
siren: Alarmsireno
suction_point: Fajrobrigada akvopumpejo
water_tank: Kontraŭbrulega akvujo
"yes": Je danĝero
highway:
abandoned: Forlasita vojo
bridleway: Ĉevalvojo
@ -2715,6 +2714,7 @@ eo:
no_authorization_code: Rajtiga kodo mankas
unknown_signature_algorithm: Nekonata algoritmo de subskribo
invalid_scope: Malkorekta amplekso
unknown_error: Aŭtentigado malsukcesis
auth_association:
heading: Via identigilo ne estas ankoraŭ kunligita kun OpenStreetMap-konto.
option_1: Se vi estas unuafoje je OpenStreetMap, bonvolu krei novan konton per

View file

@ -13,6 +13,8 @@
# Author: Carlosz22
# Author: Crazymadlover
# Author: Csbotero
# Author: Danieldegroot2
# Author: Danniel07
# Author: DannyS712
# Author: Dcapillae
# Author: Destinid10 2
@ -30,6 +32,7 @@
# Author: Indiralena
# Author: Invadinado
# Author: Jackiezelaya
# Author: Jakeukalane
# Author: James
# Author: JanKlaaseen
# Author: Javiersanp
@ -50,6 +53,7 @@
# Author: Macofe
# Author: MarcoAurelio
# Author: McDutchie
# Author: Minh Nguyen
# Author: Mor
# Author: Nah omy
# Author: Nancystodd
@ -430,8 +434,8 @@ es:
tag_details:
tags: Etiquetas
wiki_link:
key: La página en el wiki con la descripción de la etiqueta %{key}
tag: La página en el wiki con la descripción de la etiqueta %{key}=%{value}
key: La página en la wiki con la descripción de la etiqueta %{key}
tag: La página en la wiki con la descripción de la etiqueta %{key}=%{value}
wikidata_link: El elemento %{page} en Wikidata
wikipedia_link: El artículo %{page} en Wikipedia
wikimedia_commons_link: El item %{page} en Wikipedia Commons
@ -593,8 +597,6 @@ es:
title: Entradas en el diario de OpenStreetMap
description: Entradas recientes en los diarios de los usuarios de OpenStreetMap
comments:
has_commented_on: '%{display_name} dejó un comentario en las siguientes entradas
de diario'
no_comments: Ningún comentario diario
post: Publicación
when: Cuando
@ -873,7 +875,6 @@ es:
siren: Sirena de emergencia
suction_point: Punto de succión de emergencia
water_tank: Tanque de agua de emergencia
"yes": Emergencia
highway:
abandoned: Calle o carretera abandonada
bridleway: Camino prioritario para peatones y caballos
@ -1130,6 +1131,7 @@ es:
sand: Arena
scree: Pedregal
scrub: Matorrales
shingle: Guijarros
spring: Manantial
stone: Piedra
strait: Estrecho
@ -1390,7 +1392,7 @@ es:
admin_levels:
level2: Límite de país
level3: Límite regional
level4: Límite de estado
level4: Límite de estado o provincia
level5: Límite de región
level6: Límite de provincia
level7: Límite municipal
@ -1534,8 +1536,8 @@ es:
intro_text: OpenStreetMap es un mapa del mundo, creado por gente como tú y de
uso libre bajo una licencia abierta.
intro_2_create_account: Crear una cuenta de usuario
hosting_partners_html: El alojamiento es apoyado por %{ucl}, %{bytemark}, y otros
%{partners}.
hosting_partners_html: El alojamiento es apoyado por %{ucl}, %{fastly}, %{bytemark},
y otros %{partners}.
partners_ucl: UCL
partners_fastly: Rápido
partners_bytemark: Bytemark Hosting
@ -1865,7 +1867,7 @@ es:
email or username: 'Dirección de correo electrónico o nombre de usuario:'
password: 'Contraseña:'
openid_html: '%{logo} OpenID:'
remember: 'Recordarme:'
remember: Recordarme
lost password link: ¿Ha perdido su contraseña?
login_button: Iniciar sesión
register now: Regístrese ahora
@ -2010,11 +2012,11 @@ es:
credit_2_1_html: |-
También debe dejar en claro que los datos están disponibles bajo la licencia Open Database License (ODbL). Puede hacerlo enlazando a <a href="https://www.openstreetmap.org/copyright">esta página de derechos de autor</a>.
Como alternativa y como un requisito si están distribuyendo OSM en un formulario de datos, puede nombrar y enlazar directamente a las licencias. En medios de comunicación donde los enlaces no sean posibles (por ejemplo, obras impresas), le sugerimos que dirija a sus lectores a openstreetmap.org (quizás expandiendo 'OpenStreetMap' hasta esta dirección completa), y a opendatacommons.org.
credit_3_1_html: 'Las teselas del mapa en el &ldquo;estilo estándar&rdquo;
credit_3_1_html: Las teselas del mapa en el &ldquo;estilo estándar&rdquo;
en www.openstreetmap.org son una obra producida por la Fundación OpenStreetMap
utilizando datos de OpenStreetMap bajo la Open Database License. Si está
utilizando estas teselas, utilice la siguiente atribución: &ldquo;Mapa base
y datos de OpenStreetMap y la Fundación OpenStreetMap&rdquo ;.'
utilizando datos de OpenStreetMap bajo la Open Database License. Cuando
use este estilo de mapa, la misma atribución es requerida como para los
datos del mapa.
credit_4_html: |-
En un mapa electrónico navegable, los créditos deben aparecer en la esquina del mapa.
Por ejemplo:
@ -2039,10 +2041,10 @@ es:
<strong>Austria</strong>: Contiene datos de
<a href="https://data.wien.gv.at/">Stadt Wien</a> (bajo
<a href="https://creativecommons.org/licenses/by/3.0/at/deed.de">CC BY</a>), <a href="https://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land Vorarlberg</a> y Land Tirol (bajo licencia <a href="https://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC BY AT con modificaciones</a>).
contributors_au_html: '<strong>Australia</strong>: Contiene datos procedentes
de <a href="https://www.psma.com.au/psma-data-copyright-and-disclaimer">PSMA
Australia Limite </a> con licencia de Commonwealth of Australia bajo <a
href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>.'
contributors_au_html: '<strong>Australia</strong>: Contiene o se ha desarrollado
usando límites administrativos de &copy; <a href="https://www.psma.com.au/psma-data-copyright-and-disclaimer">Geoscape
Australia</a> con licencia de la Commonwealth de Australia bajo <a href="https://creativecommons.org/licenses/by/4.0/">licencia
Creative Commons Atribución 4.0 Internacional (CC BY 4.0)</a>.'
contributors_ca_html: '<strong>Canadá</strong>: contiene datos de GeoBase&reg;,
GeoGratis (&copy; Department of Natural Resources Canada), CanVec (&copy;
Department of Natural Resources Canada) y StatCan (Geography Division, Statistics
@ -2079,7 +2081,7 @@ es:
contributors_footer_1_html: Para obtener más detalles sobre estas y otras
fuentes que se han utilizado para ayudar a mejorar OpenStreetMap, véase
la <a href="https://wiki.openstreetmap.org/wiki/Contributors">página de
colaboradores</a> en el Wiki de OpenStreetMap.
colaboradores</a> en la wiki de OpenStreetMap.
contributors_footer_2_html: La inclusión de datos en OpenStreetMap no implica
que el proveedor de la información original apoya a OpenStreetMap, proporciona
alguna garantía, o acepta cualquier responsabilidad.
@ -2227,7 +2229,7 @@ es:
wiki:
url: https://wiki.openstreetmap.org/wiki/ES:Main_Page
title: Wiki de OpenStreetMap
description: Explora el wiki para obtener documentación detallada de OpenStreetMap.
description: Explora la wiki para obtener documentación detallada de OpenStreetMap.
potlatch:
removed: El editor de OpenStreetMap predeterminado se establece como Potlatch.
Dado que Adobe Flash Player se ha retirado, Potlatch ya no está disponible
@ -2351,12 +2353,10 @@ es:
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='https://wiki.openstreetmap.org/wiki/Import/Guidelines'>importaciones</a>
y <a href='https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>ediciones
automatizadas</a>.
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='https://wiki.openstreetmap.org/wiki/Import/Guidelines'>importaciones</a> y
<a href='https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>ediciones automatizadas</a>.
questions:
title: ¿Alguna pregunta?
paragraph_1_html: |-
@ -2532,6 +2532,8 @@ es:
read_gpx: leer sus trazas de GPS privadas
write_gpx: subir trazas de GPS
write_notes: Modificar notas
read_email: Leer dirección de correo electrónico del usuario
skip_authorization: Auto aprobar aplicación
oauth_clients:
new:
title: Registrar una nueva aplicación
@ -2587,7 +2589,7 @@ es:
delete: Borrar
confirm_delete: Ver esta aplicación
new:
title: Registre su aplicación
title: Registrar una nueva aplicación
edit:
title: Registre su aplicación
show:
@ -2815,6 +2817,7 @@ es:
no_authorization_code: Sin código de autorización
unknown_signature_algorithm: Algoritmo de firma desconocido
invalid_scope: Ámbito no válido
unknown_error: Autentificación fallida
auth_association:
heading: Su identificador aún no está asociado con una cuenta de OpenStreetMap.
option_1: Si eres nuevo en OpenStreetMap, crea cuenta nueva usando el formulario

View file

@ -486,7 +486,6 @@ et:
title: OpenStreetMapi päevikusissekanded
description: Hiljutised OpenStreetMapi kasutajate päevikusissekanded
comments:
has_commented_on: '%{display_name} on kommenteerinud järgmiseid päeviku sissekandeid'
no_comments: Päeviku kommentaarid puuduvad.
post: Postitus
when: Millal
@ -1562,20 +1561,20 @@ et:
et laadida alla suuri andmehulki.
planet:
title: Planet OSM
description: Regulaarselt uuendatavad koopiad tervest OpenStreetMapi andmebaasist
description: Regulaarselt uuendatavad koopiad tervest OpenStreetMapi andmebaasist.
overpass:
title: Overpass API
description: Laadi alla piiritletud ala OpenStreetMapi andmebaasi peegelserverist
description: Laadi alla piiritletud ala OpenStreetMapi andmebaasi peegelserverist.
geofabrik:
title: Geofabriki allalaadimised
description: Regulaarselt uuendatavad tõmmised kontinentidest, riikidest
ja valikulistest linnadest
ja valikulistest linnadest.
metro:
title: Metro tõmmised
description: Tõmmised maailma suurematest linnadest ja nende ümbruskondadest
other:
title: Muud allikad
description: Täiendavad allikad on välja toodud OpenStreetMapi vikis
description: Täiendavad allikad on välja toodud OpenStreetMapi vikis.
options: Sätted
format: 'Vorming:'
scale: Mõõtkava

View file

@ -11,6 +11,7 @@
# Author: Ibai
# Author: Iñaki LL
# Author: Maite
# Author: McDutchie
# Author: Mikel Ibaiba
# Author: MikelEH
# Author: PerroVerd
@ -470,7 +471,6 @@ eu:
title: OpenStreetMap eguneroko sarrerak
description: OpenStreetMap erabiltzaileek azkenaldian egindako eguneroko sarrerak
comments:
has_commented_on: Hurrengo eguneroko sarreretan iruzkinak egin ditu %{display_name}k
post: Argitaratu
when: Noiz
comment: Iruzkina
@ -702,7 +702,6 @@ eu:
phone: Larrialdi telefonoa
siren: Larrialdietako sirena
water_tank: Larrialdietako ur tanga
"yes": Larrialdia
highway:
abandoned: Errepide abandonatua
bridleway: Oinezkoen gunea
@ -1553,7 +1552,7 @@ eu:
email or username: 'Eposta helbidea edo Erabiltzaile izena:'
password: 'Pasahitza:'
openid_html: '%{logo} OpenID:'
remember: 'Gogora nazazu:'
remember: Gogora nazazu
lost password link: Pasahitza ahaztu duzu?
login_button: Saioa hasi
register now: Erregistratu orain

View file

@ -553,7 +553,6 @@ fa:
title: ‫روزنوشت‌های OpenStreetMap
description: ‫روزنوشت‌های اخیر از کاربران OpenStreetMap
comments:
has_commented_on: '%{display_name} روی این روزنوشت‌ها نظر داده'
no_comments: فاقد پیام روزانه
post: فرسته
when: زمان
@ -736,7 +735,7 @@ fa:
boardwalk: Boardwalk
suspension: پل معلق
swing: پل نوسان
viaduct: پل راه آهن روی دره
viaduct: پل چنددهانه
"yes": پل
building:
apartment: آپارتمان
@ -820,7 +819,6 @@ fa:
life_ring: حلقه نجات اضطراری
phone: تلفن اضطراری
water_tank: منبع آب اضطراری
"yes": اورژانسی
highway:
abandoned: راه متروکه
bridleway: راه حیوان رو

View file

@ -35,6 +35,7 @@
# Author: Pyscowicz
# Author: Ramilehti
# Author: Ruila
# Author: Rönttönen
# Author: SMAUG
# Author: Samoasambia
# Author: Silvonen
@ -45,6 +46,7 @@
# Author: Tomi Toivio
# Author: Tumm1
# Author: Usp
# Author: Veikk0.ma
# Author: ZeiP
---
fi:
@ -144,6 +146,7 @@ fi:
language: Kieli
doorkeeper/application:
name: Nimi
confidential: Korkean tietoturvariskin sovellus
scopes: Käyttöoikeudet
friend:
user: Käyttäjä
@ -185,9 +188,18 @@ fi:
pass_crypt: Salasana
pass_crypt_confirmation: Vahvista salasana
help:
doorkeeper/application:
confidential: Sovellusta käytettäessä ei voida taata käyttäjätietojen tietoturvaa
(natiivit mobiilisovellukset ja yhden sivun sovellukset eivät ole korkean
tietoturvariskin sovelluksia)
trace:
tagstring: pilkuilla eroteltu lista
user_block:
reason: Syy käyttäjän estoon. Ole mahdollisimman rauhallinen ja asiallinen
ja kuvaile tilannetta mahdollisimman yksityiskohtaisesti. Pidä mielessä,
että viesti tulee olemaan julkisesti näkyvillä. Muista myös, että kaikki
käyttäjät eivät ymmärrä yhteisön erikoissanastoa, joten pyri sen sijaan
käyttämään yleiskielen käsitteitä.
needs_view: Pitääkö tämän käyttäjän kirjautua sisään ennen kuin esto poistetaan?
user:
email_confirmation: Osoitettasi ei esitetä julkisesti. Lisätietoja <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy"
@ -463,7 +475,7 @@ fi:
nearby mapper: Lähellä oleva kartoittaja
friend: Kaveri
show:
title: Minun kojelauta
title: Tapahtumat
edit_your_profile: Muokkaa profiiliasi
my friends: Kaverit
no friends: Sinulla ei ole vielä kavereita.
@ -542,7 +554,6 @@ fi:
title: OpenStreetMap-päiväkirjamerkinnät
description: Tuoreimmat OpenStreetMapin käyttäjien päiväkirjamerkinnät
comments:
has_commented_on: '%{display_name} on kommentoinut seuraavia päiväkirjamerkintöjä'
no_comments: Ei päiväkirjamerkintöjä
post: Kommentti
when: Päiväys
@ -606,6 +617,7 @@ fi:
terminal: Terminaali
windsock: Tuulipussi
amenity:
animal_boarding: Lemmikkihoitola
animal_shelter: Eläinsuoja
arts_centre: Taidekeskus
atm: Pankkiautomaatti
@ -684,6 +696,7 @@ fi:
public_building: Julkinen rakennus
recycling: Kierrätyspaikka
restaurant: Ravintola
sanitary_dump_station: Septitankin tyhjennyspiste
school: Koulu
shelter: Katos
shower: Suihku
@ -696,16 +709,21 @@ fi:
theatre: Teatteri
toilets: WC
townhall: Kaupungintalo
training: Koulutuslaitos
university: Yliopisto
vehicle_inspection: Katsastus
vending_machine: Myyntiautomaatti
veterinary: Eläinlääkäri
village_hall: Kyläkoti
waste_basket: Roskakori
waste_disposal: Jätehuolto
waste_dump_site: Kaatopaikka
watering_place: Juottopaikka
water_point: vesipiste
weighbridge: Vaaka-asema
"yes": Palvelu
boundary:
aboriginal_lands: Alkuperäisasukkaiden maa-alue
administrative: Hallinnollinen raja
census: Väestönlaskenta-alueen raja
national_park: Kansallispuisto
@ -720,8 +738,11 @@ fi:
viaduct: Maasilta
"yes": Silta
building:
apartment: Asuinkerrostalo
apartments: Kerrostalo
barn: Lato
bungalow: Bungalow
cabin: Mökki
chapel: Kappeli
church: Kirkkorakennus
commercial: Liikerakennus
@ -740,14 +761,18 @@ fi:
houseboat: Asuntovene
hut: Maja
industrial: Teollisuusrakennus
kindergarten: Päiväkotirakennus
manufacture: Tehdasrakennus
office: Toimistorakennus
public: Julkinen rakennus
residential: Asuinrakennus
retail: Liikerakennus
roof: Katto
ruins: Raunioitunut rakennus
school: Koulurakennus
semidetached_house: Paritalo
service: Palvelurakennus
shed: Vaja
stable: Talli
static_caravan: Karavaani
temple: Temppelirakennus
@ -761,22 +786,29 @@ fi:
"yes": Klubi
craft:
beekeeper: Mehiläishoitaja
blacksmith: Sepän paja
brewery: Panimo
carpenter: Puuseppä
caterer: Pitopalvelu
confectionery: Makeiset
dressmaker: Ompelija
electrician: Sähköasentaja
electronics_repair: Elektroniikkahuolto
gardener: Puutarhuri
glaziery: Lasitusliike
handicraft: Käsityöt
hvac: Ilmastointiliike
painter: Taidemaalari
photographer: Valokuvaaja
plumber: Putkimies
roofer: Kattoliike
sawmill: Sahalaitos
shoemaker: Suutari
stonemason: Kivenhakkaaja
tailor: Räätäli
winery: Viinitila
"yes": Käsityömyymälä
crossing: Suojatie
emergency:
ambulance_station: Ensihoitoasema
assembly_point: kohtaamispaikka
@ -785,8 +817,8 @@ fi:
landing_site: Hätälaskualue
life_ring: Pelastusrengas
phone: Hätäpuhelin
siren: Väestöhälytin
water_tank: hätävesitankki
"yes": Hätä
highway:
abandoned: Hylätty valtatie
bridleway: Ratsastustie
@ -797,6 +829,7 @@ fi:
cycleway: Pyörätie
elevator: Hissi
emergency_access_point: Hätätilapaikka
emergency_bay: Hätäpysähdyspaikka
footway: Polku
ford: Kahluupaikka
give_way: kärkikolmio
@ -857,6 +890,7 @@ fi:
railway: Historiallinen rautatie
roman_road: Roomalainen tie
ruins: Rauniot
rune_stone: Riimukivi
stone: Kivi
tomb: Hautakammio
tower: Torni
@ -899,8 +933,10 @@ fi:
vineyard: Viinitarha
"yes": Maankäyttö
leisure:
bandstand: Musiikkipaviljonki
beach_resort: Rantakohde
bird_hide: Linnunpesä
bleachers: Katsomo
bowling_alley: Keilahalli
common: Yhteinen maa
dance: Tanssisali
@ -941,6 +977,7 @@ fi:
bunker_silo: Bunkkeri
cairn: Kiviröykkiö
chimney: piippu
clearcut: Avohakkuualue
crane: Nosturi
cross: Risti
dolphin: Kiinnityspaikka
@ -961,6 +998,7 @@ fi:
pipeline: Putkisto
silo: Siilo
snow_cannon: Lumitykki
snow_fence: Lumiaita
storage_tank: Varastosäiliö
surveillance: vartiointi
telescope: Teleskooppi
@ -985,6 +1023,7 @@ fi:
"yes": Vuoristosola
natural:
atoll: Atolli
bare_rock: Avokallio
bay: Lahti
beach: Hiekkaranta
cape: Niemi
@ -1003,6 +1042,7 @@ fi:
hill: Mäki
hot_spring: Kuuma lähde
island: Saari
isthmus: Kannas
land: Maa
marsh: Suo
moor: Nummi
@ -1017,10 +1057,13 @@ fi:
sand: Hiekka
scree: Kivikko
scrub: Pensaikko
shingle: Pirunpelto
spring: Lähde
stone: Kivi
strait: Salmi
tree: Puu
tree_row: Puurivi
tundra: Tundra
valley: Laakso
volcano: Tulivuori
water: Vesi
@ -1042,6 +1085,7 @@ fi:
it: IT toimisto
lawyer: Asianajotoimisto
ngo: Kansalaisjärjestö
notary: Notaari
telecommunication: Tietoliikenneyritys
travel_agent: Matkatoimisto
"yes": Toimisto
@ -1100,8 +1144,12 @@ fi:
shop:
alcohol: Alkoholikauppa
antiques: Antiikkia
appliance: Kodinkonekauppa
art: Taidekauppa
baby_goods: Lastentarvikekauppa
bag: Laukkukauppa
bakery: Leipomo
bathroom_furnishing: Kylpyhuonemyymälä
beauty: Kosmetiikkakauppa
beverages: Juomakauppa
bicycle: Polkupyöräkauppa
@ -1124,6 +1172,8 @@ fi:
convenience: Lähikauppa
copyshop: Kopiointipalvelu
cosmetics: Kosmetiikkakauppa
craft: Askartelukauppa
dairy: Maitotuotekauppa
deli: Herkkukauppa
department_store: Tavaratalo
discount: Alennusmyymälä
@ -1165,6 +1215,7 @@ fi:
mobile_phone: Matkapuhelinkauppa
motorcycle: Moottoripyöräkauppa
music: Musiikkikauppa
musical_instrument: Soitinliike
newsagent: Lehtikioski
optician: Optikko
organic: Luomukauppa
@ -1175,9 +1226,11 @@ fi:
photo: Valokuvausliike
seafood: Meriruoka
second_hand: Osto- ja myyntiliike
sewing: Ompelutarvikeliike
shoes: Kenkäkauppa
sports: Urheilukauppa
stationery: Paperikauppa
storage_rental: Pienvarasto
supermarket: Supermarketti
tailor: Räätäli
tattoo: Tatuointiliike
@ -1200,6 +1253,7 @@ fi:
attraction: Nähtävyys
bed_and_breakfast: Aamiaismajoitus
cabin: Mökki
camp_pitch: Telttapaikka
camp_site: Leirintäalue
caravan_site: Leirintäalue
chalet: Alppimaja
@ -1382,8 +1436,8 @@ fi:
intro_text: OpenStreetMap on tavallisten ihmisten luoma maailmankartta. Palvelun
käyttäminen on ilmaista avoimen lisenssin ansiosta.
intro_2_create_account: luomalla ensin käyttäjätunnuksen
hosting_partners_html: Palvelinkapasiteettia meille tarjoaa %{ucl}, %{bytemark},
ja muut %{partners}.
hosting_partners_html: Palvelinkapasiteettia meille tarjoaa %{ucl}, %{fastly},
%{bytemark} ja muut %{partners}.
partners_ucl: UCL
partners_fastly: Nopeasti
partners_bytemark: Bytemark Hosting
@ -1551,6 +1605,9 @@ fi:
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.
resend_success_flash:
confirmation_sent: Olemme lähettäneet uuden vahvistusviestin osoitteeseen %{email}.
Vahvistettuasi käyttäjätunnuksesi voit aloittaa kartoittamisen.
messages:
inbox:
title: Saapuneet
@ -1642,9 +1699,10 @@ fi:
flash token bad: Tuntematon tunniste. Tarkista että URL on sama kuin postissasi.
preferences:
show:
title: Asetukseni
title: Asetukset
preferred_editor: Ensisijainen muokkain
preferred_languages: Ensisijaiset kielet
edit_preferences: Muokkaa asetuksia
edit:
save: Päivitä asetukset
cancel: Peruuta
@ -1693,8 +1751,9 @@ fi:
account not active: Käyttäjätunnustasi ei ole vielä aktivoitu.<br />Aktivoi
käyttäjätunnuksesi napsauttamalla sähköpostitse saamaasi vahvistuslinkkiä,
tai <a href="%{reconfirm}">pyydä uusi varmistusviesti</a>.
account is suspended: Valitettavasti käyttäjätilisi käyttö on estetty epäilyttävän
toiminnan seurauksena.<br />Saat lisätietoja ottamalla yhteyttä <a href="%{webmaster}">ylläpitoon</a>.
account is suspended: Valitettavasti käyttäjätilisi on estetty epäilyttävän
toiminnan seurauksena.<br />Mikäli haluat keskustella asiasta, voit ottaa
yhteyttä <a href="%{webmaster}">ylläpitoon</a>.
auth failure: Kirjautuminen epäonnistui.
openid_logo_alt: Kirjaudu sisään OpenID-tunnuksella
auth_providers:
@ -1815,11 +1874,12 @@ fi:
tekijänoikeussivulle</a>. \nJos linkkien käyttö ei ole mahdollista (esimerkiksi
paperille tulostettu aineisto),\nsuosittelemme ohjaamaan lukijat osoitteisiin
www.openstreetmap.org, opendatacommons.org ja tarvittaessa myös creativecommons.org."
credit_3_1_html: "&ldquo;Standardityylin&rdquo; karttalaatat osoitteessa www.openstreetmap.org
ovat OpenStreetMap Foundationin työtä käyttäen OpenStreetMapin datan Open
Database-lisenssin alaisuudessa. Jos käytät näitä karttalaattoja, käytä
seuraavaa lainausta: \n&ldquo;Pohjakartta ja data OpenStreetMapista ja OpenStreetMap
Foundationilta&rdquo;."
credit_3_1_html: |-
&ldquo;Standardityylin&rdquo; karttalaatat osoitteessa www.openstreetmap.org ovat
OpenStreetMap Foundationin luomia teoksia ja ne on luotu käyttäen OpenStreetMapin
dataa, joka on julkaistu Open Database License -lisenssillä. Tätä karttatyyliä
käytettäessä tulee tehdä samat lähdemaininnat kuin kartta-aineiston käytön
yhteydessä.
credit_4_html: 'Sivustolle upotetun interaktiivisen karttaikkunan tulee sisältää
tekijän nimi kartan alaosassa:'
attribution_example:
@ -2247,7 +2307,7 @@ fi:
in: avainsanoilla
index:
public_traces: Julkiset GPS-jäljet
my_traces: GPS-jälkeni
my_traces: Omat jäljet
public_traces_from: Käyttäjän %{user} julkiset GPS-jäljet
description: Selaa viimeisimpiä GPS-jälkiä
tagged_with: ', joilla on tagi %{tags}'
@ -2286,6 +2346,8 @@ fi:
suostua, mutta ne täytyy lukea.
settings_menu:
account_settings: Käyttäjäasetukset
oauth1_settings: OAuth 1 -asetukset
oauth2_authorizations: OAuth 2 -käyttöoikeudet
oauth:
authorize:
title: Salli tilisi käyttö
@ -2314,8 +2376,15 @@ fi:
permissions:
missing: Et ole sallinut sovelluksen käyttöoikeutta tähän palveluun
scopes:
write_api: Muokkaa karttaa
read_prefs: Käyttäjäasetusten käsittely
write_prefs: Käyttäjäasetusten muuttaminen
write_diary: Päiväkirjamerkintöjen luonti, kommentointi ja kavereiden lisääminen
write_api: Kartan muokkaaminen
read_gpx: Yksityisten GPS-jälkien käsittely
write_gpx: GPS-jälkien tallentaminen
write_notes: Karttailmoitusten muokkaaminen
read_email: Lue käyttäjän sähköpostiosoite
skip_authorization: Hyväksy hakemus automaattisesti
oauth_clients:
new:
title: Rekisteröi uusi sovellus
@ -2334,7 +2403,7 @@ fi:
confirm: Oletko varma?
requests: 'Pyydetään seuraavia oikeuksia käyttäjältä:'
index:
title: Omat OAuth-tietoni
title: OAuth-asetukset
my_tokens: Valtuutetut sovellukset
list_tokens: 'Seuraavat sovellukset ovat käyttäneet tätä käyttäjätunnusta:'
application: Sovelluksen nimi
@ -2343,7 +2412,7 @@ fi:
my_apps: Itse kehittämäni sovellukset
no_apps_html: Oletko kehittänyt sovelluksen, jonka haluaisit käyttävän %{oauth}-kirjautumismenetelmää?
Sovellus on rekisteröitävä, ennen kuin se voi lähettää kirjautumispyyntöjä
tähän palveluun.
palveluun.
oauth: OAuth
registered_apps: 'Seuraavat sovellukset käyttävät käyttäjätunnustasi:'
register_new: Rekisteröi sovelluksesi
@ -2379,6 +2448,9 @@ fi:
index:
application: Sovellus
permissions: Oikeudet
no_applications_html: '%{oauth2} -sovelluksille ei ole vielä myönnetty käyttöoikeuksia.'
application:
revoke: Peruuta
users:
new:
title: Rekisteröidy
@ -2398,7 +2470,7 @@ fi:
display name description: Julkisesti näkyvä käyttäjänimi. Tätä voi myöhemmin
muuttaa asetuksista.
external auth: 'Kolmannen osapuolen todennus:'
use external auth: Voit myös kirjautua jonkun muun palvelun tunnuksilla
use external auth: Kirjaudu toisen 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ä.
@ -2448,10 +2520,10 @@ fi:
my notes: Omat karttailmoitukset
my messages: Viestit
my profile: Käyttäjäsivu
my settings: Asetukset
my settings: Käyttäjäasetukset
my comments: Omat kommentit
my_preferences: Asetukseni
my_dashboard: Minun kojelauta
my_preferences: Asetukset
my_dashboard: Tapahtumat
blocks on me: Saadut estot
blocks by me: Tekemäni estot
edit_profile: Muokkaa profiilia

View file

@ -1,6 +1,7 @@
# Messages for Tornedalen Finnish (meänkieli)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Danieldegroot2
# Author: Pyscowicz
---
fit:
@ -428,7 +429,6 @@ fit:
title: OpenStreetMap-päiväkirjamerkinnät
description: Verekset OpenStreetMapin käyttäjitten päiväkirjamerkinnät
comments:
has_commented_on: '%{display_name} on kommentoinut seuraavia päiväkirjamerkintöjä'
post: Kommentti
when: Taatumi
comment: Kommentti
@ -1026,6 +1026,9 @@ fit:
changesets:
show:
comment: Kommentoi
notes:
show:
comment: Kommentoi
directions:
instructions:
unnamed: nimetön tie

View file

@ -5,10 +5,12 @@
# Author: Ajeje Brazorf
# Author: Alno
# Author: Boniface
# Author: Cantons-de-l'Est
# Author: Cquoi
# Author: Crochet.david
# Author: Cybereric
# Author: Damouns
# Author: Danieldegroot2
# Author: DavidL
# Author: Dereckson
# Author: Derugon
@ -116,7 +118,7 @@ fr:
update: Enregistrer les modifications
user_block:
create: Créer un bloc
update: Mettre à jour le blocage
update: Mettre à jour le bloc
activerecord:
errors:
messages:
@ -328,7 +330,7 @@ fr:
closed: note fermée (près de %{place})
reopened: note réactivée (près de %{place})
entry:
comment: Commenter
comment: Commentaire
full: Note complète
browse:
created: Créé
@ -610,7 +612,9 @@ fr:
title: Entrées des journaux OpenStreetMap
description: Entrées récentes des journaux dutilisateurs de OpenStreetMap
comments:
has_commented_on: '%{display_name} a commenté les entrées de journal suivantes'
title: Commentaires dagenda ajoutés par %{user}
heading: Commentaires dagenda de %{user}
subheading_html: Commentaires dagenda ajoutés par %{user}
no_comments: Aucun commentaire dagenda
post: Billet
when: Quand
@ -671,7 +675,7 @@ fr:
holding_position: Position dattente
navigationaid: Aide à la navigation aérienne
parking_position: Place de parking
runway: Piste
runway: Piste daéroport
taxilane: Voie de taxi
taxiway: Piste de circulation dun aéroport
terminal: Terminal
@ -890,7 +894,6 @@ fr:
siren: Sirène durgence
suction_point: Point daspiration durgence
water_tank: Citerne deau durgence
"yes": Urgence
highway:
abandoned: Autoroute abandonnée
bridleway: Chemin pour cavaliers
@ -937,6 +940,7 @@ fr:
trailhead: Point de départ
trunk: Voie express
trunk_link: Voie express
turning_circle: Cercle tournant
turning_loop: Virage en boucle
unclassified: Route mineure
"yes": Route
@ -1039,7 +1043,7 @@ fr:
picnic_table: Table de pique-nique
pitch: Terrain de sport
playground: Aire de jeux
recreation_ground: Terrain de jeux
recreation_ground: Aire de jeux
resort: Villégiature
sauna: Sauna
slipway: Cale de lancement
@ -2385,12 +2389,10 @@ fr:
de vitesse dune 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 dautres activités que la modification à la
main, veuillez lire et suivre les directives sur <a href="https://wiki.openstreetmap.org/wiki/Import/Guidelines">les
importations</a> et <a href="https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct">les
modifications automatiques</a>.
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 dautres activités que la modification à la main, veuillez lire et suivre les directives sur
<a href="https://wiki.openstreetmap.org/wiki/Import/Guidelines">les importations</a> et
<a href="https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct">les modifications automatiques</a>.
questions:
title: Des questions ?
paragraph_1_html: |-
@ -2546,10 +2548,10 @@ fr:
allow_write_prefs: modifier vos préférences utilisateur;
allow_write_diary: créer pour vous des entrées dans votre journal, faire des
commentaires et ajouter des amis;
allow_write_api: modifier la carte en votre nom;
allow_write_api: modifier la carte;
allow_read_gpx: lire vos traces GPS privées;
allow_write_gpx: envoyer des traces GPS en votre nom;
allow_write_notes: modifier des notes en votre nom.
allow_write_notes: modifier des notes.
grant_access: Accorder laccès
authorize_success:
title: La demande dautorisation a été acceptée
@ -2565,8 +2567,8 @@ fr:
permissions:
missing: Vous navez pas autorisé lapplication à accéder à cette fonctionnalité
scopes:
read_prefs: Lire les préférences utilisateur
write_prefs: Modifier les préférences utilisateur
read_prefs: Lire les préférences de lutilisateur
write_prefs: Modifier les préférences de lutilisateur
write_diary: Créer les entrées dagenda, les commentaires, et faire des amis
write_api: Modifier la carte
read_gpx: Lire les traces GPC privées
@ -2870,6 +2872,7 @@ fr:
no_authorization_code: Aucun code dautorisation
unknown_signature_algorithm: Algorithme de signature inconnu
invalid_scope: Étendue non valide
unknown_error: Échec dauthentification
auth_association:
heading: Votre ID nest pas encore associé à un compte OpenStreetMap.
option_1: Si vous êtes nouveau sur OpenStreetMap, veuillez créer un nouveau
@ -3093,7 +3096,7 @@ fr:
queryfeature_disabled_tooltip: Zoomer plus pour rechercher des objets
changesets:
show:
comment: Commentaire
comment: Commenter
subscribe: Sabonner
unsubscribe: Se désabonner
hide_comment: masquer
@ -3114,7 +3117,7 @@ fr:
resolve: Résoudre
reactivate: Réactiver
comment_and_resolve: Commenter et résoudre
comment: Commentaire
comment: Commenter
edit_help: Déplacez la carte et zoomez sur un emplacement que vous voulez modifier,
puis cliquez dessus.
directions:

View file

@ -1,6 +1,7 @@
# Messages for Friulian (furlan)
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Danieldegroot2
# Author: Davio
# Author: Klenje
# Author: Macofe
@ -459,7 +460,6 @@ fur:
title: Vôs dai diaris di OpenStreetMap
description: Lis ultimis vôs dai diaris dai utents di OpenStreetMap
comments:
has_commented_on: '%{display_name} al à comentât lis vôs dal diari ca sot'
post: Messaç
when: Cuant
comment: Coment
@ -1291,6 +1291,9 @@ fur:
register_new: Regjistre la tô aplicazion
form:
requests: 'Domande i permès ca sot al utent:'
oauth2_applications:
new:
title: Regjistre une gnove aplicazion
users:
new:
title: Regjistriti

File diff suppressed because it is too large Load diff

View file

@ -2,6 +2,7 @@
# Exported from translatewiki.net
# Export driver: phpyaml
# Author: Cliste
# Author: Danieldegroot2
# Author: Tem
---
ga:
@ -16,6 +17,7 @@ ga:
create: Sábháil
diary_entry:
create: Foilsigh
update: Nuashonraigh
issue_comment:
create: Cuir nóta tráchta leis
message:
@ -23,6 +25,8 @@ ga:
client_application:
create: Cláraigh
update: Nuashonraigh
doorkeeper_application:
update: Nuashonraigh
redaction:
create: Cruthaigh ceilt
update: Sábháilt ceilt
@ -176,6 +180,9 @@ ga:
wikipedia: Vicipéid
api:
notes:
comment:
commented_at_html: Nuashonraithe %{when}
commented_at_by_html: Nuashonraithe %{when} ó shin ag %{user}
rss:
title: Nótaí OpenStreetMap
description_item: Fotha RSS don nóta %{id}
@ -438,8 +445,6 @@ ga:
title: Iontrálacha dialainne OpenStreetMap
description: Iontrálacha dialainne le déanaí ó úsáideoirí OpenStreetMap
comments:
has_commented_on: Rinne %{display_name} nótaí tráchta ar na hiontrálacha dialainne
seo a leanas
no_comments: Níl aon nóta tráchta dialainne ann
post: Postáil
when: Cá huair
@ -601,7 +606,6 @@ ga:
landing_site: Láthair tuirlingthe éigeandála
phone: Fón Éigeandála
water_tank: Umar uisce éigeandála
"yes": Éigeandáil
highway:
abandoned: Bóthar Mór Tréigthe
bridleway: Cosán marcaíochta
@ -1023,6 +1027,7 @@ ga:
index:
title: Fadhbanna
select_status: Roghnaigh stádas
last_updated: Nuashonrú deireanach
show:
title: '%{status} Fadhb #%{issue_id}'
reports:
@ -1231,10 +1236,14 @@ ga:
%{time}
partial_changeset_with_comment: a bhfuil an nóta tráchta '%{changeset_comment}'
ag gabháil leis
partial_changeset_with_comment_html: a bhfuil an nóta tráchta '%{changeset_comment}'
ag gabháil leis
partial_changeset_without_comment: nach bhfuil nóta tráchta ag gabháil leis
details: Tá tuilleadh sonraí faoin tacar athruithe ar fáil ag %{url}.
unsubscribe: Le díliostáil ó nuashonruithe a dhéanfar ar an tacar athruithe
seo, tabhair cuairt ar %{url} agus cliceáil ar "Díoliostáil".
unsubscribe_html: Le díliostáil ó nuashonruithe a dhéanfar ar an tacar athruithe
seo, tabhair cuairt ar %{url} agus cliceáil ar "Díoliostáil".
confirmations:
confirm:
heading: Féach sna ríomhphoist!
@ -1879,6 +1888,9 @@ ga:
flash: Tharraing tú siar an ceadchomhartha le haghaidh %{application}
permissions:
missing: Níor thug tú cead don fheidhmchlár rochtain a fháil ar an áis seo
scopes:
write_diary: Iontrálacha dialainne agus nótaí tráchta a chruthú agus cairde
a dhéanamh.
oauth_clients:
new:
title: Iarratas nua a chlárú
@ -2095,7 +2107,7 @@ ga:
queryfeature_disabled_tooltip: Zúmáil isteach chun gnéithe a fhiosrú
changesets:
show:
comment: Fág nóta tráchta
comment: Freagair
subscribe: Liostáil
unsubscribe: Díliostáil
hide_comment: folaigh
@ -2105,7 +2117,7 @@ ga:
add: Cuir Nóta Leis
show:
comment_and_resolve: Fág nóta tráchta agus réitigh é
comment: Déan nóta tráchta
comment: Freagair
edit_help: Bog an léarscáil agus zúmáil isteach ar áit is mian leat a chur in
eagar, ansin cliceáil anseo.
directions:

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