Merge master

This commit is contained in:
Pieter Vander Vennet 2023-09-01 18:40:56 +02:00
commit 7705aa3360
58 changed files with 947 additions and 523 deletions

View file

@ -195,7 +195,7 @@ The question is *What kind of message is shown?*
- Unselecting this answer will add
- *Message from non-profit organizations* corresponds with `message=non_profit`
- Unselecting this answer will add
- *To expres your opinion* corresponds with `message=opinion`
- *To express your opinion* corresponds with `message=opinion`
- Unselecting this answer will add
- *Religious message* corresponds with `message=religion`
- Unselecting this answer will add

View file

@ -572,6 +572,16 @@ This tagrendering has no question and is thus read-only
### delete-button
This tagrendering has no question and is thus read-only
### last_edit

View file

@ -189,7 +189,7 @@
},
{
"key": "message",
"description": "Layer 'Advertise' shows message=opinion with a fixed text, namely 'To expres your opinion' and allows to pick this as a default answer (in the mapcomplete.org theme 'Advertising')",
"description": "Layer 'Advertise' shows message=opinion with a fixed text, namely 'To express your opinion' and allows to pick this as a default answer (in the mapcomplete.org theme 'Advertising')",
"value": "opinion"
},
{

View file

@ -189,7 +189,7 @@
},
{
"key": "message",
"description": "Layer 'Advertise' shows message=opinion with a fixed text, namely 'To expres your opinion' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
"description": "Layer 'Advertise' shows message=opinion with a fixed text, namely 'To express your opinion' and allows to pick this as a default answer (in the mapcomplete.org theme 'Personal theme')",
"value": "opinion"
},
{

View file

@ -27,6 +27,7 @@ Available languages:
- en
- de
- es
This document is autogenerated from [assets/themes/elongated_coin/elongated_coin.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/elongated_coin/elongated_coin.json)

View file

@ -28,6 +28,7 @@ Available languages:
- en
- nl
- de
- fr
This document is autogenerated from [assets/themes/vending_machine/vending_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/vending_machine/vending_machine.json)

View file

@ -247,7 +247,7 @@
{{service_item
|name= [https://mapcomplete.org/elongated_coin elongated_coin]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:de|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}, {{#language:es|en}}
|descr= A MapComplete theme: Find penny presses to create your own elongated coins
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png
@ -499,7 +499,7 @@
{{service_item
|name= [https://mapcomplete.org/vending_machine vending_machine]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}
|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}, {{#language:fr|en}}
|descr= A MapComplete theme: Find vending machines for everything
|material= {{yes|[https://mapcomplete.org/ Yes]}}
|image= MapComplete_Screenshot.png

View file

@ -643,7 +643,8 @@
"fr": "Message commercial",
"pt": "Mensagem comercial",
"pt_BR": "Mensagem comercial",
"he": "מסר מסחרי"
"he": "מסר מסחרי",
"nl": "Commerciële boodschap"
}
},
{
@ -657,7 +658,8 @@
"cs": "Místní informace",
"fr": "Informations locales",
"pt": "Informação local",
"he": "מידע מקומי"
"he": "מידע מקומי",
"nl": "Lokale informatie"
}
},
{
@ -698,10 +700,10 @@
"ifnot": "message=",
"then": {
"ca": "Informació sobre teatres, concerts, ...",
"es": "Información sobre teatros, conciertos, ...",
"es": "Información sobre teatros, conciertos, ",
"en": "Information related to theatre, concerts, …",
"de": "Informationen über Theater, Konzerte, …",
"cs": "Informace týkající se divadla, koncertů, ...",
"cs": "Informace týkající se divadla, koncertů, ",
"fr": "Informations liées au théâtre, à des concerts, …",
"nl": "Informatie over cultuurevenementen zoals theaters, optredens, …",
"pt": "Informações relacionadas com teatro, concertos, ...",
@ -786,7 +788,7 @@
"then": {
"en": "A map",
"ca": "un mapa",
"es": "un mapa",
"es": "Un mapa",
"de": "eine Karte",
"cs": "Mapa",
"fr": "Une carte",
@ -1312,7 +1314,8 @@
"de": "eine Wandmalerei",
"cs": "nástěnná malba",
"fr": "une peinture murale",
"pt": "uma pintura de parede"
"pt": "uma pintura de parede",
"nl": "een muurschildering"
},
"exampleImages": [
"./assets/themes/advertising/Capitol_wall.jpg",

View file

@ -867,7 +867,7 @@
"de": "Z.B. auf einer angebrachten Plakette, in der Rückenlehne, …",
"fr": "Par exemple, sur une plaque accrochée, sur le dossier, ...",
"ca": "P. ex. en una placa, al respatller, ...",
"cs": "Např. na připevněné desce, v opěradle, ...",
"cs": "Např. na připevněné desce, v opěradle, ",
"pt": "Por exemplo: em placa montada, no encosto, ..."
}
},

View file

@ -166,7 +166,7 @@
"es": "Este es un punto de entrega, ej. un aparcamiento reservado para colocar las bicicletas, claramente marcado como solo para el servicio de alquiler",
"fr": "C'est un point de dépôt, p.ex. un emplacement de parking réservé aux vélos de location",
"da": "Dette er et afleveringssted, f.eks. en reserveret parkeringsplads til cykler, som er tydeligt markeret som værende forbeholdt udlejningstjenesten",
"cs": "Jedná se o místo předání, např. vyhrazené parkoviště pro umístění jízdních kol, které je zřetelně označeno jako místo určené pouze pro půjčovnu",
"cs": "Jedná se o místo předání, např. vyhrazené parkoviště pro umístění jízdních kol, zřetelně označené jako místo určené pouze pro půjčovnu",
"ca": "Aquest és un punt de baixada, p. ex. un aparcament reservat per col·locar les bicicletes marcades clarament com a només per al servei de lloguer"
}
}

View file

@ -103,7 +103,7 @@
"zh_Hant": "運作狀態是 <i>{operational_status}</i>",
"pt_BR": "O estado operacional é: <i>{operational_status}</i>",
"pt": "O estado operacional é: <i>{operational_status}</i>",
"es": "El estado operacional es <i>{operational_status}</i></i>",
"es": "El estado operacional es <i>{operational_status}</i>",
"da": "Driftsstatus er <i>{operational_status}</i>",
"cs": "Provozní stav je <i>{operational_status}</i>",
"ca": "L'estat operatiu és <i>{operational_status}</i>"

View file

@ -309,7 +309,8 @@
"pt_BR": "Quando este café de bicicleta abre?",
"de": "Wann ist dieses Fahrradcafé geöffnet?",
"pt": "Quando este café de bicicleta abre?",
"da": "Hvornår er denne cykelcafé åbent?"
"da": "Hvornår er denne cykelcafé åbent?",
"cs": "Kdy byla tato cyklistická kavárna otevřena?"
}
}
}

View file

@ -217,7 +217,7 @@
"es": "Este servicio de limpieza es de pago",
"ca": "Aquest servei de neteja és de pagament",
"de": "Dieser Reinigungsservice ist kostenpflichtig",
"cs": "Tato úklidová služba je placená"
"cs": "Využití úklidové služby je zpoplatněno"
}
}
],

View file

@ -269,7 +269,7 @@
"it": "Una zona del pavimento che è marcata per il parcheggio delle bici",
"de": "Ein Bereich auf dem Boden, der für das Abstellen von Fahrrädern gekennzeichnet ist",
"zh_Hant": "樓層當中標示為單車停車場的區域",
"es": "Una área en el suelo que está marcada para el aparcamiento de bicicletas",
"es": "Una área en el suelo que está marcada para el aparcamiento de bicicletas",
"da": "Et område på gulvet, der er markeret til cykelparkering",
"cs": "Plocha na zemi označená pro parkování jízdních kol",
"ca": "Una zona al terra que està senyalitzada per a l'aparcament de bicicletes"

View file

@ -54,7 +54,8 @@
"pt": "Reparo/loja de bicicletas",
"ca": "Botiga/reparació de bicicletes",
"da": "Cykelværksted/butik",
"es": "Taller/tienda de bicis"
"es": "Taller/tienda de bicis",
"cs": "Oprava kol/obchod"
},
"mappings": [
{
@ -165,7 +166,8 @@
"pt": "Loja de bicicletas <i>{name}</i>",
"es": "Tienda de bicis <i>{name}</i>",
"da": "Cykelforretning <i>{name}</i>",
"ca": "Botiga de bicis <i>{name}</i>"
"ca": "Botiga de bicis <i>{name}</i>",
"cs": "Prodejna kol <i>{name}</i>"
}
},
{
@ -181,7 +183,8 @@
"pt": "Loja/reparo de bicicletas <i>{name}</i>",
"da": "Cykelværksted<i>{name}</i>",
"es": "Taller/tienda de bicis <i>{name}</i>",
"ca": "Taller/botiga de bicis <i>{name}</i>"
"ca": "Taller/botiga de bicis <i>{name}</i>",
"cs": "Oprava kol/obchod <i>{name}</i>"
}
}
]

View file

@ -8,7 +8,8 @@
"it": "Oggetto relativo alle bici",
"es": "Objeto relacionado con bicis",
"da": "Cykelrelateret genstand",
"ca": "Objectes relacionats amb bicicletes"
"ca": "Objectes relacionats amb bicicletes",
"cs": "Objekt související s jízdním kolem"
},
"minzoom": 13,
"source": {
@ -35,7 +36,8 @@
"it": "Oggetto relativo alle bici",
"es": "Objeto relacionado con bicis",
"da": "Cykelrelateret objekt",
"ca": "Objecte relacionat amb bicis"
"ca": "Objecte relacionat amb bicis",
"cs": "Objekt související s jízdním kolem"
},
"mappings": [
{
@ -53,7 +55,8 @@
"ru": "Велотрек",
"ca": "Pista ciclable",
"es": "Carril bici",
"da": "Cykelsti"
"da": "Cykelsti",
"cs": "Cyklostezka"
}
}
]
@ -89,6 +92,7 @@
"es": "Una capa con los objetos relacionados con bicis pero que no coinciden con ninguna otra capa",
"fr": "Une couche sur le thème des vélos mais qui ne correspondent à aucune autre couche",
"da": "Et lag med objekter med cykeltema, men som ikke matcher noget andet lag",
"ca": "Una capa amb els objectes relacionats amb bicis però que no coinxideixen amb cap altra capa"
"ca": "Una capa amb els objectes relacionats amb bicis però que no coinxideixen amb cap altra capa",
"cs": "Vrstva s objekty s tématikou jízdních kol, které však neodpovídají žádné jiné vrstvě"
}
}

View file

@ -9,7 +9,8 @@
"da": "Kikkert",
"es": "Prismáticos",
"fr": "Jumelles",
"pa_PK": "بائینوکولر"
"pa_PK": "بائینوکولر",
"cs": "Dalekohledy"
},
"minzoom": 0,
"title": {
@ -34,7 +35,8 @@
"da": "Kikkerter",
"es": "Prismáticos",
"fr": "Jumelles",
"pa_PK": "بائینوکولر"
"pa_PK": "بائینوکولر",
"cs": "Dalekohledy"
},
"tagRenderings": [
"images",
@ -54,7 +56,8 @@
"da": "Gratis at bruge",
"es": "De uso gratuito",
"fr": "En libre service",
"ca": "Debades"
"ca": "Debades",
"cs": "Použití zdarma"
}
}
],
@ -80,7 +83,8 @@
"es": "¿Cuánto hay que pagar para utilizar estos prismáticos?",
"da": "Hvor meget koster det at bruge denne kikkert?",
"fr": "Combien lutilisation des ces jumelles coûte-t-elle ?",
"ca": "Quant s'ha de pagar per utilitzar aquests prismàtics?"
"ca": "Quant s'ha de pagar per utilitzar aquests prismàtics?",
"cs": "Kolik se platí za používání těchto dalekohledů?"
},
"id": "binocular-charge"
},
@ -123,7 +127,8 @@
"ca": "uns prismàtics",
"da": "en kikkert",
"es": "unos prismáticos",
"fr": "des jumelles"
"fr": "des jumelles",
"cs": "dalekohled"
},
"description": {
"en": "A telescope or pair of binoculars mounted on a pole, available to the public to look around. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
@ -132,7 +137,8 @@
"fr": "Une longue-vue ou une paire de jumelles montée sur un poteau, disponible au public pour scruter les environs. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
"da": "Et teleskop eller en kikkert monteret på en stang, som offentligheden kan se sig omkring med. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
"es": "Un telescopio o unos prismáticos montados en un poste, disponible para que el público mire alrededor. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
"ca": "Un telescopi o un parell de prismàtics muntats en un pal, a disposició del públic per mirar al seu voltant. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />"
"ca": "Un telescopi o un parell de prismàtics muntats en un pal, a disposició del públic per mirar al seu voltant. <img src='./assets/layers/binocular/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
"cs": "Jednooký teleskop nebo dalekohled umístěný na stožáru, který je k dispozici veřejnosti k prohlídce. <img src='./assets/layers/binoculars/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />"
}
}
],

View file

@ -129,7 +129,7 @@
"ca": "Bar",
"de": "Kneipe",
"da": "Pub",
"es": "Pub",
"es": "Bar",
"fr": "Bar",
"pa_PK": "پب"
},
@ -189,7 +189,7 @@
"de": "Was ist das für ein Café?",
"hu": "Milyen fajta kávézó ez?",
"da": "Hvilken slags cafe er dette?",
"es": "Qué tipo de cafetería es esta",
"es": "Qué tipo de cafe es este?",
"fr": "Quel genre de café est-ce ?",
"ca": "Quin tipus de cafeteria és aquesta?"
},

View file

@ -3668,7 +3668,7 @@
"ca": "<div style='display: inline-block'><b><b>USB</b>per a carregar telèfons i petits dispositius electrònics</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div> com a màxim a {socket:USB-A:current}A",
"da": "<div style='display: inline-block'><b><b>USB</b> til opladning af telefoner og småt elektronikudstyr</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div> udsender højst {socket:USB-A:current}A",
"de": "<div style='display: inline-block'><b><b>USB</b> zum Aufladen von Telefonen und kleinen Elektrogeräten</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div> liefert maximal {socket:USB-A:current} A",
"es": "<div style='display: inline-block'><b><b>USB</b> para carga teléfonos y dispositivos electrónicos pequeños</b> <img style='width:1rem; display: inline-block' src='./assets/layers/changing_station/usb_port.svg'></div> salida de hasta {socket:USB-A:current}A"
"es": "<div style='display: inline-block'><b><b>USB</b> para carga teléfonos y dispositivos electrónicos pequeños</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div> salida de hasta {socket:USB-A:current}A"
},
"freeform": {
"key": "socket:USB-A:current",
@ -4431,7 +4431,7 @@
"nl": "Bij problemen, email naar <a href='mailto:{email}'>{email}</a>",
"da": "I tilfælde af problemer kan du sende en e-mail til <a href='mailto:{email}'>{email}</a>",
"de": "Bei Problemen senden Sie bitte eine E-Mail an <a href='mailto:{email}'>{email}</a>",
"es": "En caso de problemas, envía un correo electrónico a <a href=\"mailto:{email}'>{email}</a>"
"es": "En caso de problemas, envía un correo electrónico a <a href='mailto:{email}'>{email}</a>"
},
"freeform": {
"key": "email",

View file

@ -2,11 +2,13 @@
"id": "elongated_coin",
"name": {
"en": "Penny Presses",
"de": "Münzpressen"
"de": "Münzpressen",
"es": "Prensas de centavo"
},
"description": {
"en": "Layer showing penny presses.",
"de": "Ebene mit Münzpressen."
"de": "Ebene mit Münzpressen.",
"es": "Capa mostrando prensas de centavo."
},
"source": {
"osmTags": {
@ -19,7 +21,8 @@
"title": {
"render": {
"en": "Penny Press",
"de": "Münzpresse"
"de": "Münzpresse",
"es": "Prensa de centavo"
}
},
"tagRenderings": [
@ -29,47 +32,54 @@
"id": "designs",
"question": {
"en": "How many designs are available?",
"de": "Wieviele Motive sind verfügbar?"
"de": "Wieviele Motive sind verfügbar?",
"es": "Cuántos diseños son disponibles?"
},
"freeform": {
"key": "coin:design_count",
"type": "pnat",
"placeholder": {
"en": "Number of designs (e.g. 5)",
"de": "Motivanzahl (z.B. 5)"
"de": "Motivanzahl (z.B. 5)",
"es": "Número de diseños (por ejemplo, 5)"
}
},
"render": {
"en": "This penny press has {coin:design_count} designs available.",
"de": "Die Münzpresse hat {coin:design_count} Motive zur Auswahl."
"de": "Die Münzpresse hat {coin:design_count} Motive zur Auswahl.",
"es": "Esta prensa tiene {coin:design_count} diseños disponibles."
},
"mappings": [
{
"if": "coin:design_count=1",
"then": {
"en": "This penny press has one design available.",
"de": "Die Münzpresse hat ein Motiv zur Auswahl."
"de": "Die Münzpresse hat ein Motiv zur Auswahl.",
"es": "Esta prensa tiene un diseño disponible."
}
},
{
"if": "coin:design_count=2",
"then": {
"en": "This penny press has two designs available.",
"de": "Die Münzpresse hat zwei Motive zur Auswahl."
"de": "Die Münzpresse hat zwei Motive zur Auswahl.",
"es": "Esta prensa tiene dos diseños disponibles."
}
},
{
"if": "coin:design_count=3",
"then": {
"en": "This penny press has three designs available.",
"de": "Die Münzpresse hat drei Motive zur Auswahl."
"de": "Die Münzpresse hat drei Motive zur Auswahl.",
"es": "Esta prensa tiene tres diseños disponibles."
}
},
{
"if": "coin:design_count=4",
"then": {
"en": "This penny press has four designs available.",
"de": "Die Münzpresse hat vier Motive zur Auswahl."
"de": "Die Münzpresse hat vier Motive zur Auswahl.",
"es": "Esta prensa tiene cuatro diseños disponibles."
}
}
]
@ -79,14 +89,16 @@
"id": "coin",
"question": {
"en": "What coin is used for pressing?",
"de": "Welche Münze wird zum Pressen verwendet?"
"de": "Welche Münze wird zum Pressen verwendet?",
"es": "Qué moneda se utiliza para presionar?"
},
"freeform": {
"key": "coin:type",
"type": "string",
"placeholder": {
"en": "Coin type (e.g. 10cent)",
"de": "Münzenart (z.B. 10 Cent)"
"de": "Münzenart (z.B. 10 Cent)",
"es": "Tipo de moneda (por ejemplo, 10 centavos)"
}
},
"mappings": [
@ -94,28 +106,32 @@
"if": "coin:type=2cent",
"then": {
"en": "This penny press uses a 2 cent coin for pressing.",
"de": "Die Münzpresse benötigt eine 2 Cent Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine 2 Cent Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda de 2 centavos para presionar."
}
},
{
"if": "coin:type=5cent",
"then": {
"en": "This penny press uses a 5 cent coin for pressing.",
"de": "Die Münzpresse benötigt eine 5 Cent Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine 5 Cent Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda de 5 centavos para presionar."
}
},
{
"if": "coin:type=10cent",
"then": {
"en": "This penny press uses a 10 cent coin for pressing.",
"de": "Die Münzpresse benötigt eine 10 Cent Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine 10 Cent Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda de 10 centavos para presionar."
}
},
{
"if": "coin:type=25cent",
"then": {
"en": "This penny press uses a 25 cent coin for pressing.",
"de": "Die Münzpresse benötigt eine 25 Cent Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine 25 Cent Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda de 25 centavos para presionar."
},
"hideInAnswer": "_currency!~.*USD.*"
},
@ -123,14 +139,16 @@
"if": "coin:type=50cent",
"then": {
"en": "This penny press uses a 50 cent coin for pressing.",
"de": "Die Münzpresse benötigt eine 50 Cent Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine 50 Cent Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda de 50 centavos para presionar."
},
"hideInAnswer": "_currency!~.*USD.*"
}
],
"render": {
"en": "This penny press uses a {coin:type} coin for pressing.",
"de": "Die Münzpresse benötigt eine {coin:type} Münze um zu Pressen."
"de": "Die Münzpresse benötigt eine {coin:type} Münze um zu Pressen.",
"es": "Esta prensa de centavo utiliza una moneda {coin:type} para presionar."
}
},
"website",
@ -138,14 +156,16 @@
"id": "charge",
"question": {
"en": "How much does it cost to press a penny?",
"de": "Wieviel kostet es eine Münze zu Pressen?"
"de": "Wieviel kostet es eine Münze zu Pressen?",
"es": "¿Cuánto cuesta presionar un centavo?"
},
"freeform": {
"key": "charge",
"placeholder": {
"en": "Cost (e.g. 0.50 EUR)",
"de": "Einwurf (z.B. 0,5€)",
"fr": "Coût (par ex. 0.50 EUR)"
"fr": "Coût (par ex. 0.50 EUR)",
"es": "Costo (por ejemplo, 0.50 euros)"
}
},
"mappings": [
@ -153,7 +173,8 @@
"if": "charge=1 EUR",
"then": {
"en": "It costs 1 euro to press a penny.",
"de": "Eine Münze zu Pressen kostet 1 Euro."
"de": "Eine Münze zu Pressen kostet 1 Euro.",
"es": "Cuesta 1 euro para presionar un centavo."
},
"hideInAnswer": "_currency!~.*EUR.*"
},
@ -161,14 +182,16 @@
"if": "charge=2 EUR",
"then": {
"en": "It costs 2 euros to press a penny.",
"de": "Eine Münze zu Pressen kostet 2€."
"de": "Eine Münze zu Pressen kostet 2€.",
"es": "Cuesta 2 euros para presionar un centavo."
},
"hideInAnswer": "_currency!~.*EUR.*"
}
],
"render": {
"en": "It costs {charge} to press a penny.",
"de": "Es kostet {charge}€ um eine Münze zu Pressen."
"de": "Es kostet {charge}€ um eine Münze zu Pressen.",
"es": "Cuesta {charge} para presionar un centavo."
}
},
"denominations-coins",
@ -176,21 +199,24 @@
"id": "indoor",
"question": {
"en": "Is the penny press indoors?",
"de": "Befindet sich die Münzpresse im Inneren?"
"de": "Befindet sich die Münzpresse im Inneren?",
"es": "La prensa de centavo esta al interior?"
},
"mappings": [
{
"if": "indoor=yes",
"then": {
"en": "This penny press is located indoors.",
"de": "Die Münzpresse befindet sich im Inneren."
"de": "Die Münzpresse befindet sich im Inneren.",
"es": "Esta prensa está ubicada en interior."
}
},
{
"if": "indoor=no",
"then": {
"en": "This penny press is located outdoors.",
"de": "Die Münzpresse befindet sich Draußen."
"de": "Die Münzpresse befindet sich Draußen.",
"es": "Esta prensa está ubicada al aire libre."
}
}
]
@ -217,7 +243,8 @@
{
"title": {
"en": "a penny press",
"de": "Eine Münzpresse"
"de": "Eine Münzpresse",
"es": "una prensa de centavo"
},
"tags": [
"amenity=vending_machine",
@ -236,4 +263,4 @@
"accepts_debit_cards",
"accepts_credit_cards"
]
}
}

View file

@ -10,7 +10,7 @@
{
"question": {
"en": "Open now",
"nl": "Nu geopened",
"nl": "Nu open",
"de": "Jetzt geöffnet",
"ca": "Obert ara",
"es": "Abierta ahora",

View file

@ -1162,7 +1162,7 @@
"en": "A layer showing restaurants and fast-food amenities (with a special rendering for friteries)",
"nl": "Een laag die restaurants en fast food toont (met een speciale weergave van frituren)",
"de": "Eine Ebene mit Restaurants und Fast-Food-Einrichtungen (mit speziellem Rendering für Pommesbuden)",
"es": "Una capa que muestra restaurantes y locales de comida rápida (con un renderizado especial para freidurías)",
"es": "Una capa mostrando restaurantes y locales de comida rápida (con un renderizado especial para friterías)",
"fr": "Un claque montrant les restaurants et les endroits de nourriture rapide (avec un rendu spécial pour les friteries)",
"ca": "Una capa que mostra restaurants i locals de menjar ràpid (amb un renderitzat especial per a fregiduries)",
"cs": "Vrstva zobrazující restaurace a zařízení rychlého občerstvení (se speciálním vykreslením pro fritézy)"

View file

@ -7,7 +7,7 @@
"it": "Bici fantasma",
"fr": "Vélos fantômes",
"eo": "Fantombiciklo",
"es": "Bicicleta blanca",
"es": "Bicicletas blanca",
"fi": "Haamupyörä",
"gl": "Bicicleta pantasma",
"hu": "Emlékkerékpárok",

View file

@ -67,7 +67,7 @@
"fr": "La vitesse maximum autorisée sur cette route est {canonical(maxspeed)}"
},
"question": {
"es": "Qué velocidad tiene",
"es": "Qué es la velocidad máxima legal uno está permitido conducir en esta carretera?",
"ca": "Quina és la velocitat màxima legal que es permet conduir en aquesta carretera?",
"en": "What is the legal maximum speed one is allowed to drive on this road?",
"de": "Wie hoch ist die zulässige Höchstgeschwindigkeit, die man auf dieser Straße fahren darf?",

View file

@ -153,7 +153,8 @@
"render": {
"en": "This parking spaces has {capacity} spaces.",
"de": "Dieser Parkplatz hat {capacity} Stellplätze.",
"nl": "Deze parkeerplek heeft {capacity} plaatsen."
"nl": "Deze parkeerplek heeft {capacity} plaatsen.",
"ca": "Aquests espais d'aparcament tenen {capacity} places."
},
"mappings": [
{
@ -161,7 +162,8 @@
"then": {
"en": "This parking space has 1 space.",
"de": "Dieser Parkplatz hat 1 Stellplatz.",
"nl": "Deze parkeerplek heeft 1 plaats."
"nl": "Deze parkeerplek heeft 1 plaats.",
"ca": "Aquest espai d'aparcament té 1 plaça."
}
}
]

View file

@ -39,7 +39,7 @@
"id": "Layer yang memperlihatkan kotak pos.",
"hu": "Postaládákat megjelenítő réteg.",
"nl": "Deze laag toont brievenbussen.",
"es": "La capa que muestra buzones de correo.",
"es": "La capa que mostrando buzones de correo.",
"fr": "Le calque montrant les boîtes à lettres.",
"ca": "La capa que mostra bústies de correus."
},

View file

@ -215,7 +215,7 @@
"de": "Die Kamera überwacht einen öffentlichen Bereich, z. B. Straßen, Brücken, Plätze, Parks, Bahnhöfe, öffentliche Gänge oder Tunnel, …",
"da": "Et offentligt område overvåges, f.eks. en gade, en bro, et torv, en park, en togstation, en offentlig korridor eller en tunnel, …",
"ca": "Es vigila una àrea pública, com un carrer, un pont, una plaça, un parc, una estació de tren, un túnel públic, …",
"es": "Es un área pública, como una calle, un puente, una plaza, un parque, una estación de tren, un corredor público o túnel, ..."
"es": "Es un área pública, como una calle, un puente, una plaza, un parque, una estación de tren, un corredor público o túnel, "
}
},
{

View file

@ -86,7 +86,8 @@
"de": "Diesen Geldautomaten importieren",
"zh_Hant": "匯入這座 ATM",
"nl": "Voeg deze ATM toe",
"fr": "Importer ce distributeur de billets"
"fr": "Importer ce distributeur de billets",
"es": "Importar este ATM"
},
"icon": "./assets/svg/addSmall.svg"
}
@ -97,7 +98,8 @@
"condition": "_has_closeby_feature=yes",
"render": {
"en": "OpenStreetMap knows about <a href='#{_closest_osm_poi}'>an ATM which is {_closest_osm_poi_distance} meter away.</a> ",
"de": "OpenStreetMap kennt <a href='#{_closest_osm_poi}'>einen Geldautomaten, der {_closest_osm_poi_distance} Meter entfernt ist.</a> "
"de": "OpenStreetMap kennt <a href='#{_closest_osm_poi}'>einen Geldautomaten, der {_closest_osm_poi_distance} Meter entfernt ist.</a> ",
"es": "OpenStreetMap sabe sobre <a href='#{_closest_osm_poi}'>un ATM que es {_closest_osm_poi_distance} de distancia.</a> "
}
},
{
@ -111,7 +113,8 @@
"message": {
"en": "Add all the suggested tags to the closest ATM",
"de": "Füge alle vorgeschlagenen Tags zum nächstgelegenen Geldautomaten hinzu",
"fr": "Ajouter tous les attributs suggérés au distributeur de billets le plus proche"
"fr": "Ajouter tous les attributs suggérés au distributeur de billets le plus proche",
"es": "Añade todas las etiquetas sugieridas al ATM más cercano"
},
"image": "./assets/svg/addSmall.svg",
"maproulette_task_id": "mr_taskId"

View file

@ -13,7 +13,7 @@
"nb_NO": "Kart over åpne bokhyller",
"hu": "Könyvespolctérkép",
"ca": "Mapa obert de prestatgeries",
"es": "Mapa abierto de estanterías",
"es": "Estanterías publicas",
"pa_PK": "آزاد کتاب نقشہ",
"cs": "Otevřená mapa pouličních knihoven"
},

View file

@ -14,7 +14,7 @@
"ca": "Mapa obert d'escalada",
"da": "Åbn klatrekort",
"cs": "Otevřená lezecká mapa",
"es": "Mapa Abierto de Escalada"
"es": "Gimnasios de escalada, clubes y lugares"
},
"description": {
"nl": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur",
@ -363,7 +363,8 @@
"question": {
"en": "Does this shoe repair shop repair climbing shoes?",
"de": "Repariert das Schuhgeschäft Kletterschuhe?",
"fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?"
"fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?",
"es": "¿Esta tienda de reparación de zapatos repara zapatos de escalada?"
},
"mappings": [
{
@ -371,7 +372,8 @@
"then": {
"en": "This shop repairs climbing shoes",
"de": "Dieser Laden repariert Kletterschuhe",
"fr": "Ce commerce répare les chaussures d'escalade"
"fr": "Ce commerce répare les chaussures d'escalade",
"es": "Esta tienda repara zapatos de escalada"
}
},
{
@ -379,7 +381,8 @@
"then": {
"en": "This shop does not repair climbing shoes",
"de": "Dieser Shop repariert keine Kletterschuhe",
"fr": "Ce commerce ne répare pas les chaussures d'escalade"
"fr": "Ce commerce ne répare pas les chaussures d'escalade",
"es": "Esta tienda no repara zapatos de escalada"
}
}
]
@ -403,9 +406,10 @@
{
"id": "repairs_climbing_shoes",
"question": {
"en": "Does this shoe repair shop also repair clibming shoes?",
"en": "Does this shoe repair shop also repair climbing shoes?",
"de": "Repariert dieses Schuhgeschäft auch Kletterschuhe?",
"fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?"
"fr": "Est-ce que cette cordonnerie répare les chaussons d'escalade ?",
"es": "¿Esta tienda de reparación de zapatos también repara zapatos de escalada?"
},
"mappings": [
{
@ -413,7 +417,8 @@
"then": {
"en": "This shop repairs climbing shoes",
"de": "Dieses Geschäft repariert Kletterschuhe",
"fr": "Ce commerce répare les chaussons d'escalade"
"fr": "Ce commerce répare les chaussons d'escalade",
"es": "Esta tienda repara zapatos de escalada"
}
},
{
@ -421,7 +426,8 @@
"then": {
"en": "This shop does not repair climbing shoes",
"de": "Dieses Geschäft repariert keine Kletterschuhe",
"fr": "Ce commerce ne répare pas les chaussons d'escalade"
"fr": "Ce commerce ne répare pas les chaussons d'escalade",
"es": "Esta tienda no repara zapatos de escalada"
}
}
]
@ -435,7 +441,8 @@
"title": {
"en": "a shoe repair shop",
"de": "Ein Schuhmacher",
"fr": "une cordonnerie"
"fr": "une cordonnerie",
"es": "una tienda de reparación de zapatos"
}
}
]

View file

@ -12,7 +12,7 @@
"it": "Cyclofix - una mappa libera per chi va in bici",
"nb_NO": "Cyclofix — et åpent kart for syklister",
"hu": "Cyclofix nyílt térkép kerékpárosoknak",
"es": "Cyclofix - un mapa abierto para ciclistas",
"es": "Cyclofix - un mapa para ciclistas",
"ca": "Cyclofix - un mapa obert per a ciclistes",
"da": "Cyclofix - et åbent kort for cyklister",
"cs": "Cyklofix - otevřená mapa pro cyklisty"

View file

@ -2,11 +2,13 @@
"id": "elongated_coin",
"title": {
"en": "Penny Presses",
"de": "Münzpressen"
"de": "Münzpressen",
"es": "Prensa de centavo"
},
"description": {
"en": "Find penny presses to create your own elongated coins.",
"de": "Finde Münzpresse um deine eigenen Prägemünzen zu Pressen."
"de": "Finde Münzpresse um deine eigenen Prägemünzen zu Pressen.",
"es": "Encuentra prensas de centavo para crear tus propias monedas alargadas."
},
"icon": "./assets/themes/elongated_coin/penny.svg",
"layers": [
@ -15,4 +17,4 @@
"startLat": 53.0565,
"startLon": 8.7492,
"startZoom": 11
}
}

View file

@ -13,7 +13,7 @@
"da": "Åbn oprindelseskort",
"nb_NO": "Åpent etymologikart",
"cs": "Otevřít etymologickou mapu",
"es": "Mapa Abierto Etimológico"
"es": "Etimología - a qué se debe el nombre de una calle?"
},
"shortDescription": {
"en": "What is the origin of a toponym?",

View file

@ -9,7 +9,7 @@
"zh_Hant": "幽靈單車",
"fr": "Vélo fantôme",
"eo": "Fantombicikloj",
"es": "Bicicleta blanca",
"es": "Bicicletas blanca",
"fi": "Haamupyörä",
"gl": "Bicicleta pantasma",
"hu": "Szellemkerékpárok",

View file

@ -122,6 +122,7 @@
"isApplied": "S'aplicaran els canvis"
},
"attribution": {
"attributionBackgroundLayerWithCopyright": "La capa de fons actual és {name}: {copyright}",
"attributionContent": "<p>Totes les dades provenen d'<a href=\"https://osm.org\" target=\"_blank\">OpenStreetMap</a>, i es poden reutilitzar lliurement sota <a href=\"https://osm.org/copyright\" target=\"_blank\">la Llicència Oberta de Base de Dades (ODbL)</a>.</p>",
"attributionTitle": "Avís datribució",
"codeContributionsBy": "MapComplete ha estat fet per {contributors} i <a href=\"https://github.com/pietervdvn/MapComplete/graphs/contributors\" target=\"_blank\">{hiddenCount} més contribuïdors</a>",

View file

@ -95,7 +95,7 @@
"404": "Diese Seite existiert nicht",
"about": "OpenStreetMap für ein bestimmtes Thema einfach bearbeiten und hinzufügen",
"aboutMapComplete": {
"intro": "Nutze MapComplete, um Daten zu <b>einem bestimmten Thema</b> auf OpenStreetMap einzutragen. Beantworte Frage, und in wenigen Minuten sind die Beiträge überall verfügbar. In den meisten Themen kannst Du Bilder hinzufügen oder sogar eine Bewertung hinterlassen. Die <b>Themen-Ersteller*innen</b> definieren Objekte, Fragen und Begriffe für das jeweilige Thema."
"intro": "Nutze MapComplete, um Daten zu <b>einem bestimmten Thema</b> auf OpenStreetMap einzutragen. Beantworte Fragen, und in wenigen Minuten sind deine Beiträge überall verfügbar. In den meisten Themen kannst Du Bilder hinzufügen oder sogar eine Bewertung hinterlassen. Die <b>Themen-Ersteller*innen</b> definieren Objekte, Fragen und Begriffe für das jeweilige Thema."
},
"add": {
"addNew": "{category} hinzufügen",
@ -575,7 +575,7 @@
"editDescription": "Eigene Profilbeschreibung bearbeiten",
"gotoInbox": "Deinen Posteingang öffnen",
"gotoSettings": "Einstellungen auf OpenStreetMap.org öffnen",
"noDescription": "Sie haben noch keine Profilbeschreibung",
"noDescription": "Noch keine Profilbeschreibung vorhanden",
"noDescriptionCallToAction": "Profilbeschreibung hinzufügen",
"notLoggedIn": "Du hast Dich abgemeldet"
},

View file

@ -1,14 +1,20 @@
{
"advanced": {
"title": "Funciones avanzadas"
},
"centerMessage": {
"allFilteredAway": "Ningun elemento a la vista cumple todos los filtros",
"loadingData": "Cargando datos…",
"noData": "No hay elementos pertinentes en la vista actual",
"ready": "Hecho!",
"retrying": "La carga de datos ha fallado. Volviéndolo a probar en {count} segundos…",
"zoomIn": "Amplía para ver o editar los datos"
},
"communityIndex": {
"available": "Esta comunidad habla {native}",
"intro": "Ponte en contacto con otras personas para conocerlas, aprender de ellas, ...",
"notAvailable": "Esta comunidad no habla {native}"
"intro": "Ponte en contacto con otras personas para conocerlas, aprender de ellas, …",
"notAvailable": "Esta comunidad no habla {native}",
"title": "Pónte en contacto con otros"
},
"delete": {
"cancel": "Cancelar",
@ -44,34 +50,70 @@
"panelIntro": "<h3>Tu tema personal</h3>Activa tus capas favoritas de todas los temas oficiales",
"reload": "Recargar datos"
},
"flyer": {
"aerial": "Este mapa utiliza un fondo diferente, concretamente imagines aéreas por Agentschap Informatie Vlaanderen",
"callToAction": "Pruebalo en mapcomplete.org",
"cyclofix": "Bombas de bicicleta, estaciónes de reparación, agua potable y tiendas de ciclo estan en CycloFix",
"description": "Un folleto A4-landscape para promover a MapComplete",
"editing": {
"ex": "A continuación se muestra un ejemplo simplificado de lo que parece para una reserva natural.",
"intro": "El usuario es recibido por un mapa con elementos. Al seleccionar uno, se muestra la información sobre ese elemento.",
"title": "Cómo se ve la interfaz?"
},
"examples": "Hay muchos mapas temáticos disponibles de los cuales algunos se muestran aquí.\n\nHay muchos más mapas temáticos en línea: sobre salud, navegación interior, accesibilidad para sillas de ruedas, instalaciones de desecho, librerías públicas, cruces peatonales con arco iris,... Descubre los todos en mapcomplete.org",
"fakeui": {
"add_images": "Añade imágenes con unos pocos clics",
"attributes": "Muestra atributos de una manera amistosa",
"edit": "Información incorrecta o anticuada? El botón de edición está justo ahí.",
"question": "Si un atributo aún no se conoce, MapComplete muestra una pregunta",
"see_images": "Muestra imágenes de colaboradores anteriores, Wikipedia, Mapillary, …"
},
"frontParagraph": "MapComplete es una aplicación web fácil de usar para recopilar geodata en OpenStreetMap, lo que permite recopilar y gestionar datos relevantes de forma abierta, con recursos de multitud y reutilizable.\n\nSe pueden añadir nuevas categorías y atributos a petición.",
"lines_too": "También se muestran líneas y polígonos. Los atributos y imágenes también se pueden añadir y actualizar en esos objetos.",
"mapcomplete": {
"customize": "MapComplete se puede adaptar a sus necesidades, con nuevas capas de mapa, nuevas funcionalidades o estilo con los colores y fuentes de sus organizaciones.\nTambién tenemos experiencia con iniciar campañas para geodata de fuente collectiva.\nContacta pietervdvn@posteo.net para una cuota.",
"intro": "MapComplete es un sitio web que tiene {mapCount} mapas interactivos. Cada mapa permite añadir o actualizar información. Tiene muchas características:",
"li0": "Muestra dónde están PDI",
"li1": "Añade nuevos puntos y actualiza información sobre los existentes",
"li2": "Añade información de contacto y horarios de apertura fácilmente",
"li3": "Se puede colocar en otros sitios web como iFrame",
"li4": "Incrustado dentro del ecosistema OpenStreetMap, que tiene muchas herramientas disponibles",
"li5": "Funcionalidad para importar conjuntos de datos existentes",
"li6": "Muchas características avanzadas, como detección de árboles y métodos avanzados de entrada",
"li7": "Copiado software libre (licenciado GPL) y gratis para usar",
"title": "Qué es MapComplete?"
},
"onwheels": "Mapas interiores para usuarios de silla de ruedas también están disponibles.",
"osm": "OpenStreetMapa es un mapa en línea que puede ser editado y reutilizado por cualquiera para cualquier propósito mientras se da la atribución y los datos se mantienen abiertos.\n\nEs la base de datos geoespacial más grande del mundo y es reutilizada por miles de aplicaciones y sitios web."
},
"general": {
"about": "Edita OpenStreetMap fácilmente y añade puntos sobre un tema concreto",
"add": {
"addNew": "Añadir {category}",
"backToSelect": "Selecciones una categoría distinta",
"confirmButton": "Añadir una {category}<br><div class='alert'>Tu contribución es visible para todos</div>",
"confirmButton": "Añade una {category}<br/><div class='alert'>Tu adición es visible para todos</div>",
"disableFilters": "Desactivar todos los filtros",
"disableFiltersExplanation": "Algunas características pueden estar ocultas por un filtro",
"hasBeenImported": "Este punto ya ha sido importado",
"hasBeenImported": "Este elemento ya ha sido importado",
"import": {
"hasBeenImported": "Este objeto ya ha sido importado",
"howToTest": "Para probar, añade <b>test=true</b> o <b>backend=osm-test</b> a la URL. El conjunto de cambios se imprimirá en la consola. Por favor abre un PR para oficializar este tema o activar el botón \"importar\".",
"importTags": "El elemento recibirá {tags}",
"officialThemesOnly": "El botón de importación está desactivado para los temas no oficiales para evitar accidentes",
"wrongType": "Este elemento no es un punto o una vía y no puede ser importado",
"wrongType": "Este elemento no es un nodo o una vía y no puede ser importado",
"zoomInMore": "Ampliar más para importar este elemento"
},
"importTags": "El elemento recibirá {tags}",
"intro": "Has marcado un lugar del que no conocemos los datos.<br/>",
"layerNotEnabled": "La capa {layer} no está habilitada. Hazlo para poder añadir un punto en esta capa",
"layerNotEnabled": "La capa {layer} no está habilitada. Activa esta capa para poder añadir un elemento",
"openLayerControl": "Abrir el control de capas",
"pleaseLogin": "Por favor inicia sesión para añadir un nuevo punto",
"pleaseLogin": "Por favor inicia sesión para añadir un nuevo elemento",
"presetInfo": "El nuevo POI tendrá {tags}",
"stillLoading": "Los datos se siguen cargando. Espera un poco antes de añadir una nueva función.",
"title": "Quieres añadir un punto?",
"title": "Quieres añadir un elemento?",
"warnVisibleForEveryone": "Su adición será visible para todos",
"wrongType": "Este elemento no es un punto o una vía y no puede ser importado",
"zoomInFurther": "Acerca para añadir un punto.",
"wrongType": "Este elemento no es un nodo o una vía y no puede ser importado",
"zoomInFurther": "Acercate mas para añadir un elemento.",
"zoomInMore": "Aumente el zoom para importar este elemento"
},
"apply_button": {
@ -102,7 +144,7 @@
},
"back": "Atrás",
"backToIndex": "Volver a la vista general con todos los mapas temáticos",
"backgroundMap": "Mapa de fondo",
"backgroundMap": "Seleccione una capa de fondo",
"cancel": "Cancelar",
"confirm": "Confirmar",
"customThemeIntro": "<h3>Temas personalizados</h3>Estos son los temas generados por los usuarios que han sido visitados previamente.",
@ -110,7 +152,7 @@
"downloadAsPdf": "Descargar un PDF del mapa actual",
"downloadAsPdfHelper": "Ideal para imprimir el mapa actual",
"downloadAsSvg": "Descargar un SVG del mapa actual",
"downloadAsSvgHelper": "Compatible con Inkscape o Adobe Illustrator; necesitará más procesado·· ",
"downloadAsSvgHelper": "Compatible con Inkscape o Adobe Illustrator; necesitará más procesado",
"downloadCSV": "Descargar los datos visibles como CSV",
"downloadCSVHelper": "Compatible con LibreOffice Calc, Excel, …",
"downloadFeatureAsGeojson": "Descargar como un archivo GeoJSON",
@ -121,15 +163,15 @@
"downloadGpxHelper": "Un archivo GPX puede ser utilizado con la mayor parte de dispositivos y aplicaciones de navegación",
"exporting": "Exportando…",
"includeMetaData": "Incluir metadatos (último editor, valores calculados, ...)",
"licenseInfo": "<h3>Aviso de derechos</h3>Los datos provistos están disponibles bajo ODbL. Reutilizarlos es gratis para cualquier propósito, pero <ul><li>la atribución <b>© contribuidores de OpenStreetMap</b> se requiere</li><li>Cualquier cambio debe de utilizar la licencia</li></ul> Por favor leer todo el <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">aviso de derechos</a> para detalles.",
"licenseInfo": "<h3>Aviso de derechos</h3>Los datos provistos están disponibles bajo ODbL. Reutilizarlos es gratis para cualquier propósito, pero <ul><li>la atribución <b>© contribuidores de OpenStreetMap</b> se requiere mostrar</li><li>Cualquier cambio debe de utilizar la misma licencia</li></ul> Por favor lea todo el <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">aviso de derechos</a> para mas detalles.",
"noDataLoaded": "Aún no se han cargado ningunos daos. La descarga estará disponible proximamente",
"title": "Descargar los datos visibles",
"title": "Descarga",
"uploadGpx": "Sube tu traza a OpenStreetMap"
},
"error": "Algo fue mal",
"example": "Ejemplo",
"examples": "Ejemplos",
"fewChangesBefore": "Contesta unas cuantas preguntas sobre puntos existentes antes de añadir nuevos.",
"fewChangesBefore": "Por favor, responda algunas preguntas de elementos existentes antes de añadir un nuevo elemento.",
"getStartedLogin": "Entra en OpenStreetMap para empezar",
"getStartedNewAccount": " o <a href='https://www.openstreetmap.org/user/new' target='_blank'>crea una nueva cuenta</a>",
"goToInbox": "Abrir mensajes",
@ -143,7 +185,7 @@
"loading": "Cargando…",
"loadingTheme": "Cargando {theme}…",
"loginFailed": "El inicio de sesión en OpenStreetMap falló",
"loginOnlyNeededToEdit": "Si quieres editar el mapa",
"loginOnlyNeededToEdit": "si quieres hacer cambios",
"loginToStart": "Entra para contestar esta pregunta",
"loginWithOpenStreetMap": "Acceder con OpenStreetMap",
"logout": "Cerrar la sesión",
@ -173,13 +215,13 @@
"loadingCountry": "Determinando país…",
"not_all_rules_parsed": "El horario de esta tienda es complejo. Las normas siguientes serán ignoradas en la entrada:",
"openTill": "hasta",
"open_24_7": "Abierto las 24 horas del día",
"open_24_7": "Abierto todo el día",
"open_during_ph": "Durante fiestas este servicio está",
"opensAt": "desde",
"ph_closed": "cerrado",
"ph_not_known": " ",
"ph_open": "abierto",
"ph_open_as_usual": "abierto como siempre"
"ph_open_as_usual": "abierto, como siempre"
},
"osmLinkTooltip": "Mira este objeto en OpenStreetMap para ver historial y otras opciones de edición",
"pdf": {
@ -192,12 +234,12 @@
"questions": {
"emailIs": "La dirección de correo de {category} es <a href='mailto:{email}' target='_blank'>{email}</a>",
"emailOf": "¿Qué dirección de correu tiene {category}?",
"phoneNumberIs": "El número de teléfono de {category} es <a target=\"_blank\">{phone}</a>",
"phoneNumberIs": "El número de teléfono de esta {category} es <a href='tel:{phone}' target='_blank'>{phone}</a>",
"phoneNumberOf": "Qué teléfono tiene {category}?",
"websiteIs": "Página web: <a href='{website}' target='_blank'>{website}</a>",
"websiteOf": "Cual es la página web de {category}?"
},
"readYourMessages": "Lee todos tus mensajes de OpenStreetMap antes de añadir nuevos puntos.",
"readYourMessages": "Lee todos tus mensajes de OpenStreetMap antes de añadir nuevos elementos.",
"removeLocationHistory": "Eliminar el historial de ubicaciones",
"returnToTheMap": "Volver al mapa",
"save": "Guardar",
@ -370,7 +412,7 @@
"loadingWikidata": "Cargando información sobre {species}…"
},
"privacy": {
"editing": "Cuando efectúas un cambio al mapa, este cambio se grabas en OpenStreetMap y está disponible públicamente a cualquiera. Un conjunto de cambios hecho con MapComplete incluye los siguientes datos: <ul><li> Los cambios que has hecho</li><li>Tu nombre de usuario</li><li>Cuándo se efectuó el cambio</li><li>El tema que utilizaste mientras que hacías el cambio</li><li>El idioma de la interfaz de usuario</li><li>Una indicación de como de cerca estabas a los objetos cambiados. Otros mapeadores pueden utilizar esta información para determina si un cambio se hizo basándose en un sondeo o en una investigación remota</li></ul> Por favor ve a ",
"editing": "Cuando efectúas un cambio al mapa, este cambio se graba en OpenStreetMap y está disponible públicamente a cualquiera. Un conjunto de cambios hecho con MapComplete incluye los siguientes datos: <ul><li> Los cambios que has hecho</li><li>Tu nombre de usuario</li><li>Cuándo se efectuó el cambio</li><li>El tema que utilizaste mientras que hacías el cambio</li><li>El idioma de la interfaz de usuario</li><li>Una indicación de como de cerca estabas a los objetos cambiados. Otros mapeadores pueden utilizar esta información para determina si un cambio se hizo basándose en un sondeo o en una investigación remota</li></ul> Por favor consulte <a href='https://wiki.osmfoundation.org/wiki/Privacy_Policy' target='_blank'> la política de privacidad en OpenStreetMap.org</a> para información detallada. Te queremos recordar que puedes utilizar un nombre ficticio al inscribirte.",
"editingTitle": "Cuando se hagan cambios",
"geodata": "Cuando MapComplete consigue tu geolocalización, tu geolocalización y las localizaciones previamente visitadas se mantienen en tu dispositivo. Tus datos de localización nunca se envían automáticamente a ningún otro sitio - a menos que alguna funcionalidad mencione otra cosa claramente.",
"geodataTitle": "Tu geoubicación",
@ -386,7 +428,7 @@
"reviews": {
"affiliated_reviewer_warning": "(Revisión afiliada)",
"name_required": "Se requiere un nombre para mostrar y crear comentarios",
"no_rating": "Sin calificación dada",
"no_rating": "Da una calificación antes de enviar…",
"no_reviews_yet": "Aún no hay reseñas. ¡Sé el primero en escribir una y ayuda a los datos abiertos y a los negocios!",
"plz_login": "Inicia sesión para dejar una reseña",
"posting_as": "Publicación como",
@ -403,7 +445,7 @@
"inviteToSplit": "Dividir esta carretera en segmentos más pequeños. Esto te permite darle propiedades diferentes a partes diferentes de la carretera.",
"loginToSplit": "Debes de haber iniciado sesión para dividir una carretera",
"split": "Dividir",
"splitTitle": "Escoge una opción en el mapa para dividir esta carretera"
"splitTitle": "Elije en el mapa donde las propiedades de esta carretera cambian"
},
"translations": {
"activateButton": "Ayuda a traducir MapComplete",
@ -411,7 +453,6 @@
"missing": "{count} cadenas sin traducir",
"notImmediate": "Las traducciones no se actualizan directamente. Habitualmente esto lleva unos días"
},
"userinfo": {},
"validation": {
"color": {
"description": "Un color o código hexadecimal"
@ -423,7 +464,7 @@
"description": "Una orientación"
},
"email": {
"description": "dirección-electrónica",
"description": "dirección de correo electrónico",
"feedback": "Esta no es una dirección de correo electrónico válida",
"noAt": "Una dirección de correo electrónico debe de contener un @"
},

View file

@ -3836,6 +3836,14 @@
},
"parking_spaces": {
"tagRenderings": {
"capacity": {
"mappings": {
"0": {
"then": "Aquest espai d'aparcament té 1 plaça."
}
},
"render": "Aquests espais d'aparcament tenen {capacity} places."
},
"type": {
"mappings": {
"0": {

View file

@ -129,7 +129,7 @@
"then": "Volební reklama"
},
"4": {
"then": "Informace týkající se divadla, koncertů, ..."
"then": "Informace týkající se divadla, koncertů, "
},
"5": {
"then": "Zpráva od neziskových organizací"
@ -731,7 +731,7 @@
}
},
"question": "Má tato lavička nápis?",
"questionHint": "Např. na připevněné desce, v opěradle, ...",
"questionHint": "Např. na připevněné desce, v opěradle, ",
"render": "Tato lavice má následující nápis:<br/><p><i>{inscription}</i></p>"
},
"bench-material": {
@ -956,7 +956,7 @@
"then": "Přítomný je automat, který vydává a přijímá klíče, případně po ověření pravosti a/nebo zaplacení. Jízdní kola jsou zaparkována v blízkosti"
},
"5": {
"then": "Jedná se o místo předání, např. vyhrazené parkoviště pro umístění jízdních kol, které je zřetelně označeno jako místo určené pouze pro půjčovnu"
"then": "Jedná se o místo předání, např. vyhrazené parkoviště pro umístění jízdních kol, zřetelně označené jako místo určené pouze pro půjčovnu"
}
},
"question": "O jakou půjčovnu jízdních kol se jedná?"
@ -1078,6 +1078,11 @@
}
},
"question": "Je nabízeno nářadí k opravě vlastního kola?"
},
"opening_hours": {
"override": {
"question": "Kdy byla tato cyklistická kavárna otevřena?"
}
}
},
"title": {
@ -1104,7 +1109,7 @@
"then": "Tato mycí služba je bezplatná"
},
"1": {
"then": "Tato úklidová služba je placená"
"then": "Využití úklidové služby je zpoplatněno"
}
},
"question": "Kolik stojí využívání služby mytí?",
@ -1561,7 +1566,46 @@
},
"3": {
"then": "Opravy kol <i>{name}</i>"
},
"4": {
"then": "Prodejna kol <i>{name}</i>"
},
"5": {
"then": "Oprava kol/obchod <i>{name}</i>"
}
},
"render": "Oprava kol/obchod"
}
},
"bike_themed_object": {
"description": "Vrstva s objekty s tématikou jízdních kol, které však neodpovídají žádné jiné vrstvě",
"name": "Objekt související s jízdním kolem",
"title": {
"mappings": {
"1": {
"then": "Cyklostezka"
}
},
"render": "Objekt související s jízdním kolem"
}
},
"binocular": {
"description": "Dalekohledy",
"name": "Dalekohledy",
"presets": {
"0": {
"description": "Jednooký teleskop nebo dalekohled umístěný na stožáru, který je k dispozici veřejnosti k prohlídce. <img src='./assets/layers/binoculars/binoculars_example.jpg' style='height: 300px; width: auto; display: block;' />",
"title": "dalekohled"
}
},
"tagRenderings": {
"binocular-charge": {
"mappings": {
"0": {
"then": "Použití zdarma"
}
},
"question": "Kolik se platí za používání těchto dalekohledů?"
}
}
},

View file

@ -129,7 +129,7 @@
"then": "Publicidad electoral"
},
"4": {
"then": "Información sobre teatros, conciertos, ..."
"then": "Información sobre teatros, conciertos, "
},
"5": {
"then": "Mensaje de organizaciones sin ánimo de lucro"
@ -144,7 +144,7 @@
"then": "Cartel de financiación"
},
"9": {
"then": "un mapa"
"then": "Un mapa"
}
},
"question": "Que tipo de mensaje se muestra?"
@ -799,7 +799,7 @@
}
},
"question": "¿Todavía funciona esta máquina expendedora?",
"render": "El estado operacional es <i>{operational_status}</i></i>"
"render": "El estado operacional es <i>{operational_status}</i>"
}
}
},
@ -886,7 +886,7 @@
"then": "Bolardo"
},
"7": {
"then": "Una área en el suelo que está marcada para el aparcamiento de bicicletas"
"then": "Una área en el suelo que está marcada para el aparcamiento de bicicletas"
}
},
"question": "¿Cual es el tipo de este aparcamiento de bicicletas?",
@ -1392,7 +1392,7 @@
"then": "Este es un <b>club nocturno</b> o discoteca centrado en bailar, música de un DJ con un espectáculo de luces que la acompaña y un bar donde conseguir bebidas (alcohólicas)"
}
},
"question": "Qué tipo de cafetería es esta"
"question": "Qué tipo de cafe es este?"
},
"Name": {
"question": "¿Cual es el nombre de este pub?",
@ -1405,7 +1405,7 @@
"then": "<i>{name}</i>"
}
},
"render": "Pub"
"render": "Bar"
}
},
"charging_station": {
@ -1735,11 +1735,11 @@
}
},
"question": "¿Qué corriente ofrecen los conectores con <div style='display:i nline-block'><b><b>USB</b> para cargar teléfonos y dispositivos electrónicos pequeños</b> <img style='width:1rem;display:inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div>?",
"render": "<div style='display: inline-block'><b><b>USB</b> para carga teléfonos y dispositivos electrónicos pequeños</b> <img style='width:1rem; display: inline-block' src='./assets/layers/changing_station/usb_port.svg'></div> salida de hasta {socket:USB-A:current}A"
"render": "<div style='display: inline-block'><b><b>USB</b> para carga teléfonos y dispositivos electrónicos pequeños</b><img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/usb_port.svg'/></div> salida de hasta {socket:USB-A:current}A"
},
"email": {
"question": "¿Cual es la dirección de correo electrónico de esta operadora?",
"render": "En caso de problemas, envía un correo electrónico a <a href=\"mailto:{email}'>{email}</a>"
"render": "En caso de problemas, envía un correo electrónico a <a href='mailto:{email}'>{email}</a>"
},
"fee": {
"mappings": {
@ -2401,6 +2401,91 @@
"render": "Agua potable"
}
},
"elongated_coin": {
"description": "Capa mostrando prensas de centavo.",
"name": "Prensas de centavo",
"presets": {
"0": {
"title": "una prensa de centavo"
}
},
"tagRenderings": {
"charge": {
"freeform": {
"placeholder": "Costo (por ejemplo, 0.50 euros)"
},
"mappings": {
"0": {
"then": "Cuesta 1 euro para presionar un centavo."
},
"1": {
"then": "Cuesta 2 euros para presionar un centavo."
}
},
"question": "¿Cuánto cuesta presionar un centavo?",
"render": "Cuesta {charge} para presionar un centavo."
},
"coin": {
"freeform": {
"placeholder": "Tipo de moneda (por ejemplo, 10 centavos)"
},
"mappings": {
"0": {
"then": "Esta prensa de centavo utiliza una moneda de 2 centavos para presionar."
},
"1": {
"then": "Esta prensa de centavo utiliza una moneda de 5 centavos para presionar."
},
"2": {
"then": "Esta prensa de centavo utiliza una moneda de 10 centavos para presionar."
},
"3": {
"then": "Esta prensa de centavo utiliza una moneda de 25 centavos para presionar."
},
"4": {
"then": "Esta prensa de centavo utiliza una moneda de 50 centavos para presionar."
}
},
"question": "Qué moneda se utiliza para presionar?",
"render": "Esta prensa de centavo utiliza una moneda {coin:type} para presionar."
},
"designs": {
"freeform": {
"placeholder": "Número de diseños (por ejemplo, 5)"
},
"mappings": {
"0": {
"then": "Esta prensa tiene un diseño disponible."
},
"1": {
"then": "Esta prensa tiene dos diseños disponibles."
},
"2": {
"then": "Esta prensa tiene tres diseños disponibles."
},
"3": {
"then": "Esta prensa tiene cuatro diseños disponibles."
}
},
"question": "Cuántos diseños son disponibles?",
"render": "Esta prensa tiene {coin:design_count} diseños disponibles."
},
"indoor": {
"mappings": {
"0": {
"then": "Esta prensa está ubicada en interior."
},
"1": {
"then": "Esta prensa está ubicada al aire libre."
}
},
"question": "La prensa de centavo esta al interior?"
}
},
"title": {
"render": "Prensa de centavo"
}
},
"entrance": {
"description": "Una capa que muestra capas y ofrece la posibilidad de sondear algunos datos avanzados que son importantes para, por ejemplo, usuarios de sillas de ruedas (pero también incluye ciclistas, gente que quiere repartir, ...)",
"name": "Entrada",
@ -2588,7 +2673,7 @@
}
}
},
"description": "Una capa que muestra restaurantes y locales de comida rápida (con un renderizado especial para freidurías)",
"description": "Una capa mostrando restaurantes y locales de comida rápida (con un renderizado especial para friterías)",
"filter": {
"2": {
"options": {
@ -2776,7 +2861,7 @@
}
},
"ghost_bike": {
"name": "Bicicleta blanca",
"name": "Bicicletas blanca",
"presets": {
"0": {
"title": "una bicicleta blanca"
@ -2962,7 +3047,7 @@
"name": "Velocidad",
"tagRenderings": {
"maxspeed-maxspeed": {
"question": "Qué velocidad tiene"
"question": "Qué es la velocidad máxima legal uno está permitido conducir en esta carretera?"
}
},
"units": {
@ -3353,7 +3438,7 @@
}
},
"postboxes": {
"description": "La capa que muestra buzones de correo.",
"description": "La capa que mostrando buzones de correo.",
"name": "Buzones de correo",
"presets": {
"0": {
@ -4323,7 +4408,7 @@
"Surveillance type: public, outdoor, indoor": {
"mappings": {
"0": {
"then": "Es un área pública, como una calle, un puente, una plaza, un parque, una estación de tren, un corredor público o túnel, ..."
"then": "Es un área pública, como una calle, un puente, una plaza, un parque, una estación de tren, un corredor público o túnel, "
},
"1": {
"then": "Es un área exterior pero privada (ej: estacionamiento, gasolinera, patio, entrada, camino privado, ...)"

View file

@ -47,6 +47,9 @@
"8": {
"description": "Een stuk groot, weerbestendig textiel met opgedrukte reclameboodschap die permanent aan de muur hangt",
"title": "een spandoek"
},
"12": {
"title": "een muurschildering"
}
},
"tagRenderings": {
@ -61,6 +64,12 @@
},
"message_type": {
"mappings": {
"0": {
"then": "Commerciële boodschap"
},
"1": {
"then": "Lokale informatie"
},
"4": {
"then": "Informatie over cultuurevenementen zoals theaters, optredens, …"
},
@ -4305,7 +4314,7 @@
"0": {
"options": {
"0": {
"question": "Nu geopened"
"question": "Nu open"
}
}
},

View file

@ -854,112 +854,6 @@
},
"title": "Bordsteine und Überwege"
},
"mapcomplete-changes": {
"description": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
"layers": {
"0": {
"description": "Alle MapComplete-Änderungen anzeigen",
"filter": {
"0": {
"options": {
"0": {
"question": "Themenname enthält {search}"
}
}
},
"1": {
"options": {
"0": {
"question": "Erstellt von {search}"
}
}
},
"2": {
"options": {
"0": {
"question": "<b>Nicht</b> erstellt von {search}"
}
}
},
"3": {
"options": {
"0": {
"question": "Erstellt vor {search}"
}
}
},
"4": {
"options": {
"0": {
"question": "Erstellt nach {search}"
}
}
},
"5": {
"options": {
"0": {
"question": "Benutzersprache (ISO-Code) {search}"
}
}
},
"6": {
"options": {
"0": {
"question": "Erstellt mit Host {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Changeset fügte mindestens ein Bild hinzu"
}
}
}
},
"name": "Zentrum der Änderungssätze",
"tagRenderings": {
"contributor": {
"question": "Welcher Mitwirkende hat diese Änderung vorgenommen?",
"render": "Änderung gemacht von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"question": "Mit welchem Host / welcher Website wurde diese Änderung gemacht?",
"render": "Änderung vorgenommen mit <a href='{host}'>{host}</a>"
},
"locale": {
"question": "In welcher Sprache wurde diese Änderung vorgenommen?",
"render": "Usersprache ist {locale}"
},
"show_changeset_id": {
"render": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
},
"theme-id": {
"question": "Welches Thema wurde für diese Änderung verwendet?",
"render": "Geändert mit Thema <a href='https://mapcomplete.org/{theme}'>{theme}</a>"
},
"version": {
"question": "Mit welcher Version von MapComplete wurde diese Änderung gemacht?",
"render": "Erstellt mit {editor}"
}
},
"title": {
"render": "Änderungssatz für {theme}"
}
},
"1": {
"override": {
"tagRenderings+": {
"0": {
"render": "Mehr Statistiken gibt es <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>"
}
}
}
}
},
"shortDescription": "Mit MapComplete erstellte Änderungen anzeigen",
"title": "Mit MapComplete erstellte Änderungen"
},
"maproulette": {
"description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.",
"title": "MapRoulette-Aufgaben"

View file

@ -438,7 +438,7 @@
"then": "This shop does not repair climbing shoes"
}
},
"question": "Does this shoe repair shop also repair clibming shoes?"
"question": "Does this shoe repair shop also repair climbing shoes?"
}
},
"=presets": {

View file

@ -14,6 +14,31 @@
},
"atm": {
"description": "Este mapa muestra los cajeros automáticos para retirar o ingresar dinero",
"layers": {
"3": {
"override": {
"=tagRenderings": {
"0": {
"render": {
"special": {
"text": "Importar este ATM"
}
}
},
"1": {
"render": "OpenStreetMap sabe sobre <a href='#{_closest_osm_poi}'>un ATM que es {_closest_osm_poi_distance} de distancia.</a> "
},
"2": {
"render": {
"special": {
"message": "Añade todas las etiquetas sugieridas al ATM más cercano"
}
}
}
}
}
}
},
"title": "Cajeros automáticos"
},
"bag": {
@ -91,7 +116,7 @@
},
"bookcases": {
"description": "Una librería pública es un pequeño armario en la calle, una caja, una vieja cabina telefónica o algún otro objeto donde se guardan libros. Todo el mundo puede colocar o coger un libro. Este mapa pretende recoger todas estas librerías.",
"title": "Mapa abierto de estanterías"
"title": "Estanterías publicas"
},
"cafes_and_pubs": {
"description": "Cafés, pubs y bares",
@ -383,9 +408,48 @@
}
}
}
},
"1": {
"override": {
"+tagRenderings": {
"0": {
"mappings": {
"0": {
"then": "Esta tienda repara zapatos de escalada"
},
"1": {
"then": "Esta tienda no repara zapatos de escalada"
}
},
"question": "¿Esta tienda de reparación de zapatos repara zapatos de escalada?"
}
}
}
},
"2": {
"override": {
"+tagRenderings": {
"0": {
"mappings": {
"0": {
"then": "Esta tienda repara zapatos de escalada"
},
"1": {
"then": "Esta tienda no repara zapatos de escalada"
}
},
"question": "¿Esta tienda de reparación de zapatos también repara zapatos de escalada?"
}
},
"=presets": {
"0": {
"title": "una tienda de reparación de zapatos"
}
}
}
}
},
"title": "Mapa Abierto de Escalada"
"title": "Gimnasios de escalada, clubes y lugares"
},
"clock": {
"description": "Mapa con todos los relojes públicos",
@ -533,7 +597,7 @@
},
"cyclofix": {
"description": "El objetivo de este mapa es presentar a los ciclistas con una solución fácil de utilizar para encontrar la infraestructura apropiada para sus necesidades. <br><br>Puedes seguir tu localización precisa (móvil solo) y seleccionar las capas que son relevantes para ti en la esquina inferior izquierda. Tgambién puedes utilizar esta herramienta para editar o añadir pines (puntos de interés) al mapa y proveer más datos respondiendo a preguntas.<br><br>Todos los cambios que hagas se guardarán de manera automática en la base de datos global de OpenStreetMap y podrán ser utilizados libremente por otros. <br><br>Para más información sobre el proyecto cyclofix, ve a <a href='https://cyclofix.osm.be/'>cyclofix.osm.be</a>.",
"title": "Cyclofix - un mapa abierto para ciclistas"
"title": "Cyclofix - un mapa para ciclistas"
},
"drinking_water": {
"description": "En este mapa, se muestran los puntos de agua potable accesibles públicamente y pueden añadirse fácilmente",
@ -543,6 +607,10 @@
"description": "En este mapa, encontrará información sobre todos los tipos de escuelas y centros de educación y puede añadir fácilmente más información",
"title": "Educación"
},
"elongated_coin": {
"description": "Encuentra prensas de centavo para crear tus propias monedas alargadas.",
"title": "Prensa de centavo"
},
"etymology": {
"description": "En este mapa, puedes ver el nombre de un objeto. Las calles, edificios, ... provienen de OpenStreetMap que tienen enlace con Wikidata. En la ventana emergente, verás el artículo de Wikipedia (si existe) o un recuadro de wikidata del nombre del objeto. Si el objeto en sí tiene una página wikipedia, también se mostrará.<br/><br/><b>¡Puedes contribuir!</b> Acerca el zoom lo suficiente y aparecerán <i>todas</i> las calles. Puedes hacer clic en una y aparecerá un cuadro de búsqueda en Wikidata. Con unos pocos clics, puedes añadir un enlace etimológico. Ten en cuenta que para ello necesitas una cuenta gratuita de OpenStreetMap.",
"layers": {
@ -583,7 +651,7 @@
}
},
"shortDescription": "¿Cual es el origen de un topónimo?",
"title": "Mapa Abierto Etimológico"
"title": "Etimología - a qué se debe el nombre de una calle?"
},
"facadegardens": {
"description": "<a href='https://nl.wikipedia.org/wiki/Geveltuin' target=_blank>Los jardines de fachada</a>, las fachadas verdes y los árboles en la ciudad no sólo aportan paz y tranquilidad, sino también una ciudad más bella, una mayor biodiversidad, un efecto refrescante y una mejor calidad del aire. <br/> Klimaan VZW y Mechelen Klimaatneutraal quieren trazar un mapa de los jardines de fachada existentes y nuevos como ejemplo para las personas que quieran construir su propio jardín o para los paseantes urbanos amantes de la naturaleza. <br/>Más información sobre el proyecto en <a href='https://klimaan.be/' target=_blank>klimaan.be</a>.",
@ -689,7 +757,7 @@
},
"ghostbikes": {
"description": "Una <b>bicicleta fantasma</b> es un monumento en memoria de un ciclista fallecido en un accidente de tráfico, en forma de una bicicleta blanca colocada permanentemente cerca del lugar del accidente.<br/><br/>En este mapa se pueden ver todas las bicicletas fantasma conocidas por OpenStreetMap. ¿Falta alguna bicicleta fantasma? Todo el mundo puede añadir o actualizar información aquí - sólo necesitas tener una cuenta (gratuita) de OpenStreetMap. <p>Existe una <a href='https://masto.bike/@ghostbikebot' target='_blank'>cuenta automatizada en Mastodon que publica un resumen mensual de las bicis fantasma de todo el mundo</a></p>",
"title": "Bicicleta blanca"
"title": "Bicicletas blanca"
},
"grb": {
"description": "Este tema es un intento de automatizar la importación GRB.",

View file

@ -844,65 +844,6 @@
},
"title": "Ressauts et traversées"
},
"mapcomplete-changes": {
"description": "Cette carte montre tous les changements faits avec MapComplete",
"layers": {
"0": {
"filter": {
"5": {
"options": {
"0": {
"question": "Langage utilisateur (code-ISO) {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Le groupe de modifications a ajouté au moins une image"
}
}
}
},
"tagRenderings": {
"contributor": {
"question": "Quel contributeur a fait cette modification ?",
"render": "Modification faite par <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"render": "Modification faite avec <a href='{host}'>{host}</a>"
},
"locale": {
"question": "En quelle langue est-ce que ce changement a été fait ?"
},
"show_changeset_id": {
"render": "Groupe de modifications <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
},
"theme-id": {
"question": "Quel thème a été utilisé pour faire cette modification ?",
"render": "Modifié avec le thème <a href='https://mapcomplete.org/{theme}'>{theme}</a>"
},
"version": {
"question": "Quelle version de MapComplete a été utilisée pour faire cette modification ?",
"render": "Fait avec {editor}"
}
},
"title": {
"render": "Groupe de modifications pour {theme}"
}
},
"1": {
"override": {
"tagRenderings+": {
"0": {
"render": "D'autres statistiques sont disponibles <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>ici</a>"
}
}
}
}
},
"title": "Changements faits avec MapComplete"
},
"maproulette": {
"description": "Thème MapRoulette permettant dafficher, rechercher, filtrer et résoudre les tâches.",
"title": "Tâches MapRoulette"

View file

@ -936,89 +936,6 @@
},
"title": "Stoepranden en oversteekplaatsen"
},
"mapcomplete-changes": {
"description": "Deze kaart toont alle wijzigingen die met MapComplete gemaakt werden",
"layers": {
"0": {
"description": "Toon alle MapComplete wijzigingen",
"filter": {
"0": {
"options": {
"0": {
"question": "Themenaam bevat {search}"
}
}
},
"1": {
"options": {
"0": {
"question": "Gemaakt door bijdrager {search}"
}
}
},
"2": {
"options": {
"0": {
"question": "<b>Niet</b> gemaakt door bijdrager {search}"
}
}
},
"3": {
"options": {
"0": {
"question": "Gemaakt voor {search}"
}
}
},
"4": {
"options": {
"0": {
"question": "Gemaakt na {search}"
}
}
},
"5": {
"options": {
"0": {
"question": "De taal van de bijdrager is {search}"
}
}
},
"6": {
"options": {
"0": {
"question": "Gemaakt met host {search}"
}
}
},
"7": {
"options": {
"0": {
"question": "Changeset bevat minstens één afbeelding"
}
}
}
},
"name": "Centerpunt van changeset",
"tagRenderings": {
"contributor": {
"question": "Welke bijdrager maakte deze wijziging?",
"render": "Wijziging gemaakt door <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
},
"host": {
"question": "Met welke host (website) werd deze wijziging gemaakt?",
"render": "Wijziging gemaakt met <a href='{host}'>{host}</a>"
},
"locale": {
"question": "In welke locale (taal) werd deze wijziging gemaakt?",
"render": "De gebruikerstaal is {locale}"
}
}
}
},
"shortDescription": "Toon wijzigingen gemaakt met MapComplete",
"title": "Wijzigingen gemaakt met MapComplete"
},
"maproulette": {
"description": "Thema met MapRoulette taken, waar je ze kunt zoeken, filteren en ze oplossen.",
"title": "MapRoulette taken"

16
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "mapcomplete",
"version": "0.31.1",
"version": "0.31.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mapcomplete",
"version": "0.31.1",
"version": "0.31.2",
"license": "GPL-3.0-or-later",
"dependencies": {
"@rgossiaux/svelte-headlessui": "^1.0.2",
@ -4511,9 +4511,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001517",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
"integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
"version": "1.0.30001525",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz",
"integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==",
"dev": true,
"funding": [
{
@ -15736,9 +15736,9 @@
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
},
"caniuse-lite": {
"version": "1.0.30001517",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
"integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
"version": "1.0.30001525",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001525.tgz",
"integrity": "sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==",
"dev": true
},
"canvg": {

View file

@ -1,22 +1,22 @@
import {DesugaringStep, Each, Fuse, On} from "./Conversion"
import {LayerConfigJson} from "../Json/LayerConfigJson"
import { DesugaringStep, Each, Fuse, On } from "./Conversion"
import { LayerConfigJson } from "../Json/LayerConfigJson"
import LayerConfig from "../LayerConfig"
import {Utils} from "../../../Utils"
import { Utils } from "../../../Utils"
import Constants from "../../Constants"
import {Translation} from "../../../UI/i18n/Translation"
import {LayoutConfigJson} from "../Json/LayoutConfigJson"
import { Translation } from "../../../UI/i18n/Translation"
import { LayoutConfigJson } from "../Json/LayoutConfigJson"
import LayoutConfig from "../LayoutConfig"
import {TagRenderingConfigJson} from "../Json/TagRenderingConfigJson"
import {TagUtils} from "../../../Logic/Tags/TagUtils"
import {ExtractImages} from "./FixImages"
import {And} from "../../../Logic/Tags/And"
import { TagRenderingConfigJson } from "../Json/TagRenderingConfigJson"
import { TagUtils } from "../../../Logic/Tags/TagUtils"
import { ExtractImages } from "./FixImages"
import { And } from "../../../Logic/Tags/And"
import Translations from "../../../UI/i18n/Translations"
import Svg from "../../../Svg"
import FilterConfigJson from "../Json/FilterConfigJson"
import DeleteConfig from "../DeleteConfig"
import {QuestionableTagRenderingConfigJson} from "../Json/QuestionableTagRenderingConfigJson"
import { QuestionableTagRenderingConfigJson } from "../Json/QuestionableTagRenderingConfigJson"
import Validators from "../../../UI/InputElement/Validators"
import TagRenderingConfig from "../TagRenderingConfig";
import TagRenderingConfig from "../TagRenderingConfig"
class ValidateLanguageCompleteness extends DesugaringStep<any> {
private readonly _languages: string[]
@ -47,12 +47,12 @@ class ValidateLanguageCompleteness extends DesugaringStep<any> {
.forEach((missing) => {
errors.push(
context +
"A theme should be translation-complete for " +
neededLanguage +
", but it lacks a translation for " +
missing.context +
".\n\tThe known translation is " +
missing.tr.textFor("en")
"A theme should be translation-complete for " +
neededLanguage +
", but it lacks a translation for " +
missing.context +
".\n\tThe known translation is " +
missing.tr.textFor("en")
)
})
}
@ -86,7 +86,7 @@ export class DoesImageExist extends DesugaringStep<string> {
context: string
): { result: string; errors?: string[]; warnings?: string[]; information?: string[] } {
if (this._ignore?.has(image)) {
return {result: image}
return { result: image }
}
const errors = []
@ -94,22 +94,22 @@ export class DoesImageExist extends DesugaringStep<string> {
const information = []
if (image.indexOf("{") >= 0) {
information.push("Ignoring image with { in the path: " + image)
return {result: image}
return { result: image }
}
if (image === "assets/SocialImage.png") {
return {result: image}
return { result: image }
}
if (image.match(/[a-z]*/)) {
if (Svg.All[image + ".svg"] !== undefined) {
// This is a builtin img, e.g. 'checkmark' or 'crosshair'
return {result: image}
return { result: image }
}
}
if (image.startsWith("<") && image.endsWith(">")) {
// This is probably HTML, you're on your own here
return {result: image}
return { result: image }
}
if (!this._knownImagePaths.has(image)) {
@ -178,15 +178,15 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
if (json["units"] !== undefined) {
errors.push(
"The theme " +
json.id +
" has units defined - these should be defined on the layer instead. (Hint: use overrideAll: { '+units': ... }) "
json.id +
" has units defined - these should be defined on the layer instead. (Hint: use overrideAll: { '+units': ... }) "
)
}
if (json["roamingRenderings"] !== undefined) {
errors.push(
"Theme " +
json.id +
" contains an old 'roamingRenderings'. Use an 'overrideAll' instead"
json.id +
" contains an old 'roamingRenderings'. Use an 'overrideAll' instead"
)
}
}
@ -198,10 +198,10 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
for (const remoteImage of remoteImages) {
errors.push(
"Found a remote image: " +
remoteImage +
" in theme " +
json.id +
", please download it."
remoteImage +
" in theme " +
json.id +
", please download it."
)
}
for (const image of images) {
@ -228,12 +228,12 @@ class ValidateTheme extends DesugaringStep<LayoutConfigJson> {
if (theme.id !== filename) {
errors.push(
"Theme ids should be the same as the name.json, but we got id: " +
theme.id +
" and filename " +
filename +
" (" +
this._path +
")"
theme.id +
" and filename " +
filename +
" (" +
this._path +
")"
)
}
this._validateImage.convertJoin(
@ -313,7 +313,7 @@ class OverrideShadowingCheck extends DesugaringStep<LayoutConfigJson> {
): { result: LayoutConfigJson; errors?: string[]; warnings?: string[] } {
const overrideAll = json.overrideAll
if (overrideAll === undefined) {
return {result: json}
return { result: json }
}
const errors = []
@ -340,7 +340,7 @@ class OverrideShadowingCheck extends DesugaringStep<LayoutConfigJson> {
}
}
return {result: json, errors}
return { result: json, errors }
}
}
@ -386,49 +386,58 @@ export class PrevalidateTheme extends Fuse<LayoutConfigJson> {
export class DetectConflictingAddExtraTags extends DesugaringStep<TagRenderingConfigJson> {
constructor() {
super("The `if`-part in a mapping might set some keys. Those key are not allowed to be set in the `addExtraTags`, as this might result in conflicting values", [], "DetectConflictingAddExtraTags");
super(
"The `if`-part in a mapping might set some keys. Those key are not allowed to be set in the `addExtraTags`, as this might result in conflicting values",
[],
"DetectConflictingAddExtraTags"
)
}
convert(json: TagRenderingConfigJson, context: string): {
result: TagRenderingConfigJson;
errors?: string[];
warnings?: string[];
convert(
json: TagRenderingConfigJson,
context: string
): {
result: TagRenderingConfigJson
errors?: string[]
warnings?: string[]
information?: string[]
} {
if (!(json.mappings?.length > 0)) {
return {result: json}
return { result: json }
}
const tagRendering = new TagRenderingConfig(json)
const errors = []
for (let i = 0; i < tagRendering.mappings.length; i++) {
const mapping = tagRendering.mappings[i];
const mapping = tagRendering.mappings[i]
if (!mapping.addExtraTags) {
continue
}
const keysInMapping = new Set(mapping.if.usedKeys())
const keysInAddExtraTags = mapping.addExtraTags.map(t => t.key)
const keysInAddExtraTags = mapping.addExtraTags.map((t) => t.key)
const duplicateKeys = keysInAddExtraTags.filter(k => keysInMapping.has(k))
const duplicateKeys = keysInAddExtraTags.filter((k) => keysInMapping.has(k))
if (duplicateKeys.length > 0) {
errors.push(
"At " + context + ".mappings[" + i + "]: AddExtraTags overrides a key that is set in the `if`-clause of this mapping. Selecting this answer might thus first set one value (needed to match as answer) and then override it with a different value, resulting in an unsaveable question. The offending `addExtraTags` is " + duplicateKeys.join(", ")
"At " +
context +
".mappings[" +
i +
"]: AddExtraTags overrides a key that is set in the `if`-clause of this mapping. Selecting this answer might thus first set one value (needed to match as answer) and then override it with a different value, resulting in an unsaveable question. The offending `addExtraTags` is " +
duplicateKeys.join(", ")
)
}
}
return {
result: json,
errors
};
errors,
}
}
}
export class DetectShadowedMappings extends DesugaringStep<TagRenderingConfigJson> {
private readonly _calculatedTagNames: string[]
@ -495,7 +504,7 @@ export class DetectShadowedMappings extends DesugaringStep<TagRenderingConfigJso
const errors = []
const warnings = []
if (json.mappings === undefined || json.mappings.length === 0) {
return {result: json}
return { result: json }
}
const defaultProperties = {}
for (const calculatedTagName of this._calculatedTagNames) {
@ -521,7 +530,7 @@ export class DetectShadowedMappings extends DesugaringStep<TagRenderingConfigJso
}
const keyValues = parsedConditions[i].asChange(defaultProperties)
const properties = {}
keyValues.forEach(({k, v}) => {
keyValues.forEach(({ k, v }) => {
properties[k] = v
})
for (let j = 0; j < i; j++) {
@ -538,10 +547,10 @@ export class DetectShadowedMappings extends DesugaringStep<TagRenderingConfigJso
// The current mapping is shadowed!
errors.push(`At ${context}: Mapping ${i} is shadowed by mapping ${j} and will thus never be shown:
The mapping ${parsedConditions[i].asHumanString(
false,
false,
{}
)} is fully matched by a previous mapping (namely ${j}), which matches:
false,
false,
{}
)} is fully matched by a previous mapping (namely ${j}), which matches:
${parsedConditions[j].asHumanString(false, false, {})}.
To fix this problem, you can try to:
@ -610,7 +619,7 @@ export class DetectMappingsWithImages extends DesugaringStep<TagRenderingConfigJ
const warnings: string[] = []
const information: string[] = []
if (json.mappings === undefined || json.mappings.length === 0) {
return {result: json}
return { result: json }
}
const ignoreToken = "ignore-image-in-then"
for (let i = 0; i < json.mappings.length; i++) {
@ -672,17 +681,17 @@ class MiscTagRenderingChecks extends DesugaringStep<TagRenderingConfigJson> {
if (json["special"] !== undefined) {
errors.push(
"At " +
context +
': detected `special` on the top level. Did you mean `{"render":{ "special": ... }}`'
context +
': detected `special` on the top level. Did you mean `{"render":{ "special": ... }}`'
)
}
if (json["group"]) {
errors.push(
"At " +
context +
': groups are deprecated, use `"label": ["' +
json["group"] +
'"]` instead'
context +
': groups are deprecated, use `"label": ["' +
json["group"] +
'"]` instead'
)
}
const freeformType = json["freeform"]?.["type"]
@ -758,9 +767,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (!Constants.priviliged_layers.find((x) => x == json.id)) {
errors.push(
context +
": layer " +
json.id +
" uses 'special' as source.osmTags. However, this layer is not a priviliged layer"
": layer " +
json.id +
" uses 'special' as source.osmTags. However, this layer is not a priviliged layer"
)
}
}
@ -769,13 +778,13 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (json.title === undefined && json.source !== "special:library") {
errors.push(
context +
": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element. Please add a title. If not having a popup is intended and the tagrenderings need to be kept (e.g. in a library layer), set `title: null` to disable this error."
": this layer does not have a title defined but it does have tagRenderings. Not having a title will disable the popups, resulting in an unclickable element. Please add a title. If not having a popup is intended and the tagrenderings need to be kept (e.g. in a library layer), set `title: null` to disable this error."
)
}
if (json.title === null) {
information.push(
context +
": title is `null`. This results in an element that cannot be clicked - even though tagRenderings is set."
": title is `null`. This results in an element that cannot be clicked - even though tagRenderings is set."
)
}
}
@ -802,9 +811,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
console.log(json.tagRenderings)
errors.push(
"At " +
context +
": some tagrenderings have a duplicate id: " +
duplicates.join(", ")
context +
": some tagrenderings have a duplicate id: " +
duplicates.join(", ")
)
}
}
@ -822,8 +831,8 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (json["overpassTags"] !== undefined) {
errors.push(
"Layer " +
json.id +
'still uses the old \'overpassTags\'-format. Please use "source": {"osmTags": <tags>}\' instead of "overpassTags": <tags> (note: this isn\'t your fault, the custom theme generator still spits out the old format)'
json.id +
'still uses the old \'overpassTags\'-format. Please use "source": {"osmTags": <tags>}\' instead of "overpassTags": <tags> (note: this isn\'t your fault, the custom theme generator still spits out the old format)'
)
}
const forbiddenTopLevel = [
@ -841,18 +850,18 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (json[forbiddenKey] !== undefined)
errors.push(
context +
": layer " +
json.id +
" still has a forbidden key " +
forbiddenKey
": layer " +
json.id +
" still has a forbidden key " +
forbiddenKey
)
}
if (json["hideUnderlayingFeaturesMinPercentage"] !== undefined) {
errors.push(
context +
": layer " +
json.id +
" contains an old 'hideUnderlayingFeaturesMinPercentage'"
": layer " +
json.id +
" contains an old 'hideUnderlayingFeaturesMinPercentage'"
)
}
@ -869,9 +878,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (this._path != undefined && this._path.indexOf(expected) < 0) {
errors.push(
"Layer is in an incorrect place. The path is " +
this._path +
", but expected " +
expected
this._path +
", but expected " +
expected
)
}
}
@ -913,7 +922,7 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
}
if (json.filter) {
const r = new On("filter", new Each( new ValidateFilter())).convert(json, context)
const r = new On("filter", new Each(new ValidateFilter())).convert(json, context)
warnings.push(...(r.warnings ?? []))
errors.push(...(r.errors ?? []))
information.push(...(r.information ?? []))
@ -940,9 +949,9 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (hasCondition?.length > 0) {
errors.push(
"At " +
context +
":\n One or more icons in the mapRenderings have a condition set. Don't do this, as this will result in an invisible but clickable element. Use extra filters in the source instead. The offending mapRenderings are:\n" +
JSON.stringify(hasCondition, null, " ")
context +
":\n One or more icons in the mapRenderings have a condition set. Don't do this, as this will result in an invisible but clickable element. Use extra filters in the source instead. The offending mapRenderings are:\n" +
JSON.stringify(hasCondition, null, " ")
)
}
}
@ -957,7 +966,7 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
const preset = json.presets[i]
const tags: { k: string; v: string }[] = new And(
preset.tags.map((t) => TagUtils.Tag(t))
).asChange({id: "node/-1"})
).asChange({ id: "node/-1" })
const properties = {}
for (const tag of tags) {
properties[tag.k] = tag.v
@ -966,12 +975,12 @@ export class ValidateLayer extends DesugaringStep<LayerConfigJson> {
if (!doMatch) {
errors.push(
context +
".presets[" +
i +
"]: This preset does not match the required tags of this layer. This implies that a newly added point will not show up.\n A newly created point will have properties: " +
JSON.stringify(properties) +
"\n The required tags are: " +
baseTags.asHumanString(false, false, {})
".presets[" +
i +
"]: This preset does not match the required tags of this layer. This implies that a newly added point will not show up.\n A newly created point will have properties: " +
JSON.stringify(properties) +
"\n The required tags are: " +
baseTags.asHumanString(false, false, {})
)
}
}
@ -1005,11 +1014,10 @@ export class ValidateFilter extends DesugaringStep<FilterConfigJson> {
} {
if (typeof filter === "string") {
// Calling another filter, we skip
return {result: filter}
return { result: filter }
}
const errors = []
for (const option of filter.options) {
for (let i = 0; i < option.fields?.length ?? 0; i++) {
const field = option.fields[i]
const type = field.type ?? "string"
@ -1021,7 +1029,7 @@ export class ValidateFilter extends DesugaringStep<FilterConfigJson> {
}
}
}
return {result: filter, errors}
return { result: filter, errors }
}
}
@ -1050,7 +1058,7 @@ export class DetectDuplicateFilters extends DesugaringStep<{
const warnings: string[] = []
const information: string[] = []
const {layers, themes} = json
const { layers, themes } = json
const perOsmTag = new Map<
string,
{
@ -1086,7 +1094,7 @@ export class DetectDuplicateFilters extends DesugaringStep<{
return
}
let msg = "Possible duplicate filter: " + key
for (const {filter, layer, layout} of value) {
for (const { filter, layer, layout } of value) {
let id = ""
if (layout !== undefined) {
id = layout.id + ":"

View file

@ -495,9 +495,7 @@ export default class LayerConfig extends WithContextLoader {
usingLayer = [
new Title("Themes using this layer", 4),
new List(
(usedInThemes ?? []).map(
(id) => new Link(id, "https://mapcomplete.org/" + id)
)
(usedInThemes ?? []).map((id) => new Link(id, "https://mapcomplete.org/" + id))
),
]
}

View file

@ -9,7 +9,7 @@
import { Unit } from "../../Models/Unit"
import UnitInput from "../Popup/UnitInput.svelte"
export let type: ValidatorType
export let type: ValidatorType
export let feedback: UIEventSource<Translation> | undefined = undefined
export let getCountry: () => string | undefined
export let placeholder: string | Translation | undefined

View file

@ -1,6 +1,6 @@
import BaseUIElement from "../BaseUIElement";
import { Translation } from "../i18n/Translation";
import Translations from "../i18n/Translations";
import BaseUIElement from "../BaseUIElement"
import { Translation } from "../i18n/Translation"
import Translations from "../i18n/Translations"
/**
* A 'TextFieldValidator' contains various methods to check and cleanup an entered value or to give feedback.
@ -16,13 +16,21 @@ export abstract class Validator {
/**
* What HTML-inputmode to use
*/
public readonly inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
public readonly inputmode?:
| "none"
| "text"
| "tel"
| "url"
| "email"
| "numeric"
| "decimal"
| "search"
public readonly textArea: boolean
constructor(
name: string,
explanation: string | BaseUIElement,
inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search',
inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search",
textArea?: false | boolean
) {
this.name = name

View file

@ -1,7 +1,7 @@
import { Translation } from "../../i18n/Translation"
import Translations from "../../i18n/Translations"
import { Validator } from "../Validator"
import { ValidatorType } from "../Validators";
import { ValidatorType } from "../Validators"
export default class FloatValidator extends Validator {
inputmode: "decimal" = "decimal"

View file

@ -327,7 +327,6 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
enumerable: false,
configurable: true,
get: () => {
console.trace("Property", name, "got requested")
init().then((r) => {
delete object[name]
object[name] = r

View file

@ -1,7 +1,7 @@
{
"contributors": [
{
"commits": 5849,
"commits": 5877,
"contributor": "Pieter Vander Vennet"
},
{
@ -49,7 +49,7 @@
"contributor": "Ward"
},
{
"commits": 21,
"commits": 22,
"contributor": "Hosted Weblate"
},
{
@ -232,6 +232,14 @@
"commits": 2,
"contributor": "Stanislas Gueniffey"
},
{
"commits": 1,
"contributor": "Ciprian"
},
{
"commits": 1,
"contributor": "redfast00"
},
{
"commits": 1,
"contributor": "Daniel McDonald"

View file

@ -246,6 +246,9 @@
"es",
"pt"
],
"GR": [
"el"
],
"GT": [
"es"
],
@ -505,7 +508,9 @@
],
"PL": [
"pl",
"pl"
"be",
"pl",
"be"
],
"PS": [
"ar"

View file

@ -9,6 +9,7 @@
"fi": "suomi",
"fr": "français",
"gl": "lingua galega",
"he": "עברית",
"hu": "magyar",
"id": "Bahasa Indonesia",
"it": "italiano",

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"contributors": [
{
"commits": 289,
"commits": 294,
"contributor": "kjon"
},
{
@ -9,15 +9,15 @@
"contributor": "Pieter Vander Vennet"
},
{
"commits": 142,
"commits": 145,
"contributor": "paunofu"
},
{
"commits": 94,
"commits": 95,
"contributor": "Allan Nordhøy"
},
{
"commits": 69,
"commits": 70,
"contributor": "Robin van der Linde"
},
{
@ -36,22 +36,22 @@
"commits": 32,
"contributor": "Babos Gábor"
},
{
"commits": 31,
"contributor": "Jiří Podhorecký"
},
{
"commits": 31,
"contributor": "Supaplex"
},
{
"commits": 30,
"contributor": "Jiří Podhorecký"
"commits": 29,
"contributor": "Lucas"
},
{
"commits": 29,
"contributor": "Artem"
},
{
"commits": 25,
"contributor": "Lucas"
},
{
"commits": 25,
"contributor": "Reza Almanda"
@ -152,6 +152,10 @@
"commits": 8,
"contributor": "Vinicius"
},
{
"commits": 7,
"contributor": "NetworkedPoncho"
},
{
"commits": 7,
"contributor": "Joost Schouppe"
@ -336,6 +340,10 @@
"commits": 3,
"contributor": "SiegbjornSitumeang"
},
{
"commits": 2,
"contributor": "מוימוי טרייצקי"
},
{
"commits": 2,
"contributor": "lmagreault"