Merge master

This commit is contained in:
pietervdvn 2022-04-14 01:00:04 +02:00
commit 18430df75a
97 changed files with 2315 additions and 410 deletions

View file

@ -38,16 +38,43 @@ export class AddContextToTranslations<T> extends DesugaringStep<T> {
* ]
* }
* rewritten // => expected
*
* // should preserve nulls
* const theme = {
* layers: [
* {
* builtin: ["abc"],
* override: {
* name:null
* }
* }
* ]
* }
* const rewritten = new AddContextToTranslations<any>("prefix:").convert(theme, "context").result
* const expected = {
* layers: [
* {
* builtin: ["abc"],
* override: {
* name: null
* }
* }
* ]
* }
* rewritten // => expected
*/
convert(json: T, context: string): { result: T; errors?: string[]; warnings?: string[]; information?: string[] } {
const result = Utils.WalkJson(json, (leaf, path) => {
if(leaf === undefined || leaf === null){
return leaf
}
if (typeof leaf === "object") {
return {...leaf, _context: this._prefix + context + "." + path.join(".")}
} else {
return leaf
}
}, obj => obj !== undefined && obj !== null && Translations.isProbablyATranslation(obj))
}, obj => obj === undefined || obj === null || Translations.isProbablyATranslation(obj))
return {
result

View file

@ -158,6 +158,20 @@ export class On<P, T> extends DesugaringStep<T> {
}
}
export class Pass<T> extends Conversion<T, T> {
constructor(message?: string) {
super(message??"Does nothing, often to swap out steps in testing", [], "Pass");
}
convert(json: T, context: string): { result: T; errors?: string[]; warnings?: string[]; information?: string[] } {
return {
result: json
};
}
}
export class Concat<X, T> extends Conversion<X[], T[]> {
private readonly _step: Conversion<X, T[]>;

View file

@ -1,4 +1,4 @@
import {Concat, Conversion, DesugaringContext, DesugaringStep, Each, Fuse, On, SetDefault} from "./Conversion";
import {Concat, Conversion, DesugaringContext, DesugaringStep, Each, Fuse, On, Pass, SetDefault} from "./Conversion";
import {LayoutConfigJson} from "../Json/LayoutConfigJson";
import {PrepareLayer} from "./PrepareLayer";
import {LayerConfigJson} from "../Json/LayerConfigJson";
@ -13,28 +13,30 @@ import {AddContextToTranslations} from "./AddContextToTranslations";
class SubstituteLayer extends Conversion<(string | LayerConfigJson), LayerConfigJson[]> {
private readonly _state: DesugaringContext;
constructor(
state: DesugaringContext,
) {
super("Converts the identifier of a builtin layer into the actual layer, or converts a 'builtin' syntax with override in the fully expanded form", [],"SubstituteLayer");
super("Converts the identifier of a builtin layer into the actual layer, or converts a 'builtin' syntax with override in the fully expanded form", [], "SubstituteLayer");
this._state = state;
}
convert(json: string | LayerConfigJson, context: string): { result: LayerConfigJson[]; errors: string[], information?: string[] } {
const errors = []
const information = []
const state= this._state
function reportNotFound(name: string){
const state = this._state
function reportNotFound(name: string) {
const knownLayers = Array.from(state.sharedLayers.keys())
const withDistance = knownLayers.map(lname => [lname, Utils.levenshteinDistance(name, lname)])
const withDistance = knownLayers.map(lname => [lname, Utils.levenshteinDistance(name, lname)])
withDistance.sort((a, b) => a[1] - b[1])
const ids = withDistance.map(n => n[0])
// Known builtin layers are "+.join(",")+"\n For more information, see "
// Known builtin layers are "+.join(",")+"\n For more information, see "
errors.push(`${context}: The layer with name ${name} was not found as a builtin layer. Perhaps you meant ${ids[0]}, ${ids[1]} or ${ids[2]}?
For an overview of all available layers, refer to https://github.com/pietervdvn/MapComplete/blob/develop/Docs/BuiltinLayers.md`)
}
if (typeof json === "string") {
const found = state.sharedLayers.get(json)
if (found === undefined) {
@ -72,40 +74,40 @@ class SubstituteLayer extends Conversion<(string | LayerConfigJson), LayerConfig
} catch (e) {
errors.push(`At ${context}: could not apply an override due to: ${e}.\nThe override is: ${JSON.stringify(json["override"],)}`)
}
if(json["hideTagRenderingsWithLabels"]){
if (json["hideTagRenderingsWithLabels"]) {
const hideLabels: Set<string> = new Set(json["hideTagRenderingsWithLabels"])
// These labels caused at least one deletion
const usedLabels : Set<string> = new Set<string>();
const usedLabels: Set<string> = new Set<string>();
const filtered = []
for (const tr of found.tagRenderings) {
const labels = tr["labels"]
if(labels !== undefined){
if (labels !== undefined) {
const forbiddenLabel = labels.findIndex(l => hideLabels.has(l))
if(forbiddenLabel >= 0){
if (forbiddenLabel >= 0) {
usedLabels.add(labels[forbiddenLabel])
information.push(context+": Dropping tagRendering "+tr["id"]+" as it has a forbidden label: "+labels[forbiddenLabel])
information.push(context + ": Dropping tagRendering " + tr["id"] + " as it has a forbidden label: " + labels[forbiddenLabel])
continue
}
}
if(hideLabels.has(tr["id"])){
if (hideLabels.has(tr["id"])) {
usedLabels.add(tr["id"])
information.push(context+": Dropping tagRendering "+tr["id"]+" as its id is a forbidden label")
information.push(context + ": Dropping tagRendering " + tr["id"] + " as its id is a forbidden label")
continue
}
if(hideLabels.has(tr["group"])){
if (hideLabels.has(tr["group"])) {
usedLabels.add(tr["group"])
information.push(context+": Dropping tagRendering "+tr["id"]+" as its group `"+tr["group"]+"` is a forbidden label")
information.push(context + ": Dropping tagRendering " + tr["id"] + " as its group `" + tr["group"] + "` is a forbidden label")
continue
}
filtered.push(tr)
}
const unused = Array.from(hideLabels).filter(l => !usedLabels.has(l))
if(unused.length > 0){
errors.push("This theme specifies that certain tagrenderings have to be removed based on forbidden layers. One or more of these layers did not match any tagRenderings and caused no deletions: "+unused.join(", ")+"\n This means that this label can be removed or that the original tagRendering that should be deleted does not have this label anymore")
if (unused.length > 0) {
errors.push("This theme specifies that certain tagrenderings have to be removed based on forbidden layers. One or more of these layers did not match any tagRenderings and caused no deletions: " + unused.join(", ") + "\n This means that this label can be removed or that the original tagRendering that should be deleted does not have this label anymore")
}
found.tagRenderings = filtered
}
@ -130,7 +132,7 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
private _state: DesugaringContext;
constructor(state: DesugaringContext) {
super("Adds the default layers, namely: " + Constants.added_by_default.join(", "), ["layers"],"AddDefaultLayers");
super("Adds the default layers, namely: " + Constants.added_by_default.join(", "), ["layers"], "AddDefaultLayers");
this._state = state;
}
@ -147,8 +149,8 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
errors.push("Default layer " + layerName + " not found")
continue
}
if(alreadyLoaded.has(v.id)){
warnings.push("Layout "+context+" already has a layer with name "+v.id+"; skipping inclusion of this builtin layer")
if (alreadyLoaded.has(v.id)) {
warnings.push("Layout " + context + " already has a layer with name " + v.id + "; skipping inclusion of this builtin layer")
continue
}
json.layers.push(v)
@ -165,7 +167,7 @@ class AddDefaultLayers extends DesugaringStep<LayoutConfigJson> {
class AddImportLayers extends DesugaringStep<LayoutConfigJson> {
constructor() {
super("For every layer in the 'layers'-list, create a new layer which'll import notes. (Note that priviliged layers and layers which have a geojson-source set are ignored)", ["layers"],"AddImportLayers");
super("For every layer in the 'layers'-list, create a new layer which'll import notes. (Note that priviliged layers and layers which have a geojson-source set are ignored)", ["layers"], "AddImportLayers");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[] } {
@ -176,7 +178,7 @@ class AddImportLayers extends DesugaringStep<LayoutConfigJson> {
json.layers = [...json.layers]
if(json.enableNoteImports ?? true) {
if (json.enableNoteImports ?? true) {
const creator = new CreateNoteImportLayer()
for (let i1 = 0; i1 < allLayers.length; i1++) {
const layer = allLayers[i1];
@ -222,15 +224,16 @@ class AddImportLayers extends DesugaringStep<LayoutConfigJson> {
export class AddMiniMap extends DesugaringStep<LayerConfigJson> {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext, ) {
super("Adds a default 'minimap'-element to the tagrenderings if none of the elements define such a minimap", ["tagRenderings"],"AddMiniMap");
constructor(state: DesugaringContext,) {
super("Adds a default 'minimap'-element to the tagrenderings if none of the elements define such a minimap", ["tagRenderings"], "AddMiniMap");
this._state = state;
}
/**
* Returns true if this tag rendering has a minimap in some language.
* Note: this minimap can be hidden by conditions
*
*
* AddMiniMap.hasMinimap({render: "{minimap()}"}) // => true
* AddMiniMap.hasMinimap({render: {en: "{minimap()}"}}) // => true
* AddMiniMap.hasMinimap({render: {en: "{minimap()}", nl: "{minimap()}"}}) // => true
@ -280,23 +283,23 @@ export class AddMiniMap extends DesugaringStep<LayerConfigJson> {
}
}
class AddContextToTransltionsInLayout extends DesugaringStep <LayoutConfigJson>{
class AddContextToTransltionsInLayout extends DesugaringStep <LayoutConfigJson> {
constructor() {
super("Adds context to translations, including the prefix 'themes:json.id'; this is to make sure terms in an 'overrides' or inline layer are linkable too",["_context"], "AddContextToTranlationsInLayout");
super("Adds context to translations, including the prefix 'themes:json.id'; this is to make sure terms in an 'overrides' or inline layer are linkable too", ["_context"], "AddContextToTranlationsInLayout");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
const conversion = new AddContextToTranslations<LayoutConfigJson>("themes:")
return conversion.convert(json, json.id);
}
}
class ApplyOverrideAll extends DesugaringStep<LayoutConfigJson> {
constructor() {
super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards", ["overrideAll", "layers"],"ApplyOverrideAll");
super("Applies 'overrideAll' onto every 'layer'. The 'overrideAll'-field is removed afterwards", ["overrideAll", "layers"], "ApplyOverrideAll");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors: string[]; warnings: string[] } {
@ -325,8 +328,9 @@ class ApplyOverrideAll extends DesugaringStep<LayoutConfigJson> {
class AddDependencyLayersToTheme extends DesugaringStep<LayoutConfigJson> {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext, ) {
super("If a layer has a dependency on another layer, these layers are added automatically on the theme. (For example: defibrillator depends on 'walls_and_buildings' to snap onto. This layer is added automatically)", ["layers"],"AddDependencyLayersToTheme");
constructor(state: DesugaringContext,) {
super("If a layer has a dependency on another layer, these layers are added automatically on the theme. (For example: defibrillator depends on 'walls_and_buildings' to snap onto. This layer is added automatically)", ["layers"], "AddDependencyLayersToTheme");
this._state = state;
}
@ -340,17 +344,17 @@ class AddDependencyLayersToTheme extends DesugaringStep<LayoutConfigJson> {
const dependencies: { neededLayer: string, reason: string, context?: string, neededBy: string }[] = []
for (const layerConfig of alreadyLoaded) {
try{
try {
const layerDeps = DependencyCalculator.getLayerDependencies(new LayerConfig(layerConfig))
dependencies.push(...layerDeps)
}catch(e){
} catch (e) {
console.error(e)
throw "Detecting layer dependencies for "+layerConfig.id+" failed due to "+e
throw "Detecting layer dependencies for " + layerConfig.id + " failed due to " + e
}
}
for (const dependency of dependencies) {
if(loadedLayerIds.has(dependency.neededLayer)){
if (loadedLayerIds.has(dependency.neededLayer)) {
// We mark the needed layer as 'mustLoad'
alreadyLoaded.find(l => l.id === dependency.neededLayer).forceLoad = true
}
@ -380,7 +384,7 @@ class AddDependencyLayersToTheme extends DesugaringStep<LayoutConfigJson> {
}
} while (unmetDependencies.length > 0)
return dependenciesToAdd.map(dep => {
dep = Utils.Clone(dep);
dep.forceLoad = true
@ -418,46 +422,47 @@ class AddDependencyLayersToTheme extends DesugaringStep<LayoutConfigJson> {
class PreparePersonalTheme extends DesugaringStep<LayoutConfigJson> {
private readonly _state: DesugaringContext;
constructor(state: DesugaringContext) {
super("Adds every public layer to the personal theme",["layers"],"PreparePersonalTheme");
super("Adds every public layer to the personal theme", ["layers"], "PreparePersonalTheme");
this._state = state;
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
if(json.id !== "personal"){
if (json.id !== "personal") {
return {result: json}
}
json.layers = Array.from(this._state.sharedLayers.keys()).filter(l => Constants.priviliged_layers.indexOf(l) < 0)
return {result: json};
}
}
class WarnForUnsubstitutedLayersInTheme extends DesugaringStep<LayoutConfigJson>{
class WarnForUnsubstitutedLayersInTheme extends DesugaringStep<LayoutConfigJson> {
constructor() {
super("Generates a warning if a theme uses an unsubstituted layer", ["layers"],"WarnForUnsubstitutedLayersInTheme");
super("Generates a warning if a theme uses an unsubstituted layer", ["layers"], "WarnForUnsubstitutedLayersInTheme");
}
convert(json: LayoutConfigJson, context: string): { result: LayoutConfigJson; errors?: string[]; warnings?: string[]; information?: string[] } {
if(json.hideFromOverview === true){
if (json.hideFromOverview === true) {
return {result: json}
}
const warnings = []
for (const layer of json.layers) {
if(typeof layer === "string"){
if (typeof layer === "string") {
continue
}
if(layer["builtin"] !== undefined){
if (layer["builtin"] !== undefined) {
continue
}
if(layer["source"]["geojson"] !== undefined){
if (layer["source"]["geojson"] !== undefined) {
// We turn a blind eye for import layers
continue
}
const wrn = "The theme "+json.id+" has an inline layer: "+layer["id"]+". This is discouraged."
const wrn = "The theme " + json.id + " has an inline layer: " + layer["id"] + ". This is discouraged."
warnings.push(wrn)
}
return {
@ -465,11 +470,13 @@ class WarnForUnsubstitutedLayersInTheme extends DesugaringStep<LayoutConfigJson>
warnings
};
}
}
export class PrepareTheme extends Fuse<LayoutConfigJson> {
constructor(state: DesugaringContext) {
constructor(state: DesugaringContext, options?: {
skipDefaultLayers: false | boolean
}) {
super(
"Fully prepares and expands a theme",
new AddContextToTransltionsInLayout(),
@ -483,7 +490,7 @@ export class PrepareTheme extends Fuse<LayoutConfigJson> {
new ApplyOverrideAll(),
// And then we prepare all the layers _again_ in case that an override all contained unexpanded tagrenderings!
new On("layers", new Each(new PrepareLayer(state))),
new AddDefaultLayers(state),
options?.skipDefaultLayers ? new Pass("AddDefaultLayers is disabled due to the set flag") : new AddDefaultLayers(state),
new AddDependencyLayersToTheme(state),
new AddImportLayers(),
new On("layers", new Each(new AddMiniMap(state)))

View file

@ -518,11 +518,35 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
* Apply a function on every leaf of the JSON; used to rewrite parts of the JSON.
* Returns a modified copy of the original object.
*
* 'null' and 'undefined' are _always_ considered a leaf, even if 'isLeaf' says it isn't
*
* Hangs if the object contains a loop
*
* // should walk a json
* const walked = Utils.WalkJson({
* key: "value"
* }, (x: string) => x + "!")
* walked // => {key: "value!"}
*
* // should preserve undefined and null:
* const walked = Utils.WalkJson({
* u: undefined,
* n: null,
* v: "value"
* }, (x) => {if(x !== undefined && x !== null){return x+"!}; return x})
* walked // => {v: "value!", u: undefined, n: null}
*
* // should preserve undefined and null, also with a negative isLeaf:
* const walked = Utils.WalkJson({
* u: undefined,
* n: null,
* v: "value"
* }, (x) => return x}, _ => false)
* walked // => {v: "value", u: undefined, n: null}
*/
static WalkJson(json: any, f: (v: object | number | string | boolean | undefined, path: string[]) => any, isLeaf: (object) => boolean = undefined, path: string[] = []) {
if (json === undefined) {
return f(undefined, path)
if (json === undefined || json === null) {
return f(json, path)
}
const jtp = typeof json
if (isLeaf !== undefined) {

View file

@ -52,7 +52,8 @@
"pl": "Adresy",
"id": "Alamat",
"es": "Direcciones",
"zh_Hans": "地址"
"zh_Hans": "地址",
"ca": "Adreces"
},
"tagRenderings": [
{

View file

@ -14,7 +14,8 @@
"nb_NO": "Kunstverk",
"pt": "Obras de arte",
"hu": "Műalkotások",
"pl": "Dzieła sztuki"
"pl": "Dzieła sztuki",
"ca": "Obres d'art"
},
"source": {
"osmTags": "tourism=artwork"
@ -38,7 +39,8 @@
"pl": "Dzieło sztuki",
"pt": "Obra de arte",
"pt_BR": "Obra de arte",
"sv": "Konstverk"
"sv": "Konstverk",
"ca": "Obra d'art"
},
"mappings": [
{
@ -166,7 +168,8 @@
"pt": "Arquitetura",
"hu": "Építészet",
"pl": "Architektura",
"es": "Arquitectura"
"es": "Arquitectura",
"ca": "Arquitectura"
}
},
{
@ -185,7 +188,8 @@
"pt": "Mural",
"hu": "Falfestmény",
"pl": "Mural",
"es": "Mural"
"es": "Mural",
"ca": "Mural"
}
},
{
@ -204,7 +208,8 @@
"pt": "Pintura",
"hu": "Festmény",
"pl": "Obraz",
"es": "Pintura"
"es": "Pintura",
"ca": "Pintura"
}
},
{
@ -223,7 +228,8 @@
"pt": "Escultura",
"hu": "Absztrakt szobor",
"pl": "Rzeźba",
"es": "Escultura"
"es": "Escultura",
"ca": "Escultura"
}
},
{
@ -241,7 +247,8 @@
"pt": "Estátua",
"hu": "Szobor",
"pl": "Posąg",
"es": "Estatua"
"es": "Estatua",
"ca": "Estàtua"
}
},
{
@ -259,7 +266,8 @@
"pt": "Busto",
"hu": "Mellszobor",
"pl": "Popiersie",
"es": "Busto"
"es": "Busto",
"ca": "Bust"
}
},
{
@ -277,7 +285,8 @@
"id": "Batu",
"pt": "Pedra",
"hu": "Kő",
"pl": "Skała"
"pl": "Skała",
"ca": "Pedra"
}
},
{
@ -296,7 +305,8 @@
"pt": "Instalação",
"hu": "Installáció",
"pl": "Instalacja artystyczna",
"es": "Instalación"
"es": "Instalación",
"ca": "Instal·lació"
}
},
{
@ -315,7 +325,8 @@
"pt": "Graffiti",
"hu": "Graffiti",
"pl": "Graffiti",
"es": "Grafiti"
"es": "Grafiti",
"ca": "Grafiti"
}
},
{
@ -333,7 +344,8 @@
"id": "Relief",
"pt": "Relevo",
"hu": "Dombormű",
"pl": "Płaskorzeźba"
"pl": "Płaskorzeźba",
"ca": "Relleu"
}
},
{
@ -368,7 +380,8 @@
"nb_NO": "Flisarbeid",
"pt": "Ladrilhos",
"hu": "Csempe",
"pl": "Płyta ceramiczna (fliza)"
"pl": "Płyta ceramiczna (fliza)",
"ca": "Enrajolat"
}
}
],

View file

@ -7,7 +7,8 @@
"ru": "Препятствия",
"hu": "Akadályok",
"fr": "Barrières",
"es": "Barreras"
"es": "Barreras",
"ca": "Barreres"
},
"description": {
"en": "Obstacles while cycling, such as bollards and cycle barriers",
@ -32,7 +33,8 @@
"de": "Hindernis",
"ru": "Препятствие",
"fr": "Barrière",
"es": "Barrera"
"es": "Barrera",
"ca": "Barrera"
},
"mappings": [
{
@ -43,7 +45,8 @@
"de": "Poller",
"ru": "Прикол",
"fr": "Bollard",
"es": "Bolardo"
"es": "Bolardo",
"ca": "Pilona"
}
},
{
@ -52,7 +55,8 @@
"en": "Cycling Barrier",
"nl": "Fietshekjes",
"de": "Barriere für Radfahrer",
"fr": "Barrière cyclable"
"fr": "Barrière cyclable",
"ca": "Barrera ciclista"
}
}
]
@ -66,7 +70,8 @@
"ru": "Прикол",
"fr": "une bollard",
"hu": "Terelőoszlop",
"es": "una bolardo"
"es": "una bolardo",
"ca": "una pilona"
},
"tags": [
"barrier=bollard"
@ -189,7 +194,8 @@
"nl": "Verwijderbare paal",
"de": "Entfernbarer Poller",
"fr": "Bollard amovible",
"hu": "Eltávolítható terelőoszlop"
"hu": "Eltávolítható terelőoszlop",
"ca": "Pilona desmuntable"
}
},
{
@ -200,7 +206,8 @@
"de": "Feststehender Poller",
"fr": "Bollard fixe",
"hu": "Rögzített terelőoszlop",
"es": "Bolardo fijo"
"es": "Bolardo fijo",
"ca": "Pilona fixa"
}
},
{
@ -232,7 +239,8 @@
"de": "Ausfahrender Poller",
"fr": "Bollard rétractable",
"hu": "Felemelkedő terelőoszlop",
"es": "Bolardo levadizo"
"es": "Bolardo levadizo",
"ca": "Pilona retràctil"
}
}
],

View file

@ -16,7 +16,8 @@
"fi": "Penkit",
"pl": "Ławki",
"pt_BR": "Bancos",
"pt": "Bancos"
"pt": "Bancos",
"ca": "Bancs"
},
"minzoom": 17,
"source": {
@ -39,7 +40,8 @@
"fi": "Penkki",
"pl": "Ławka",
"pt_BR": "Banco",
"pt": "Banco"
"pt": "Banco",
"ca": "Banc"
}
},
"tagRenderings": [
@ -64,7 +66,8 @@
"fi": "Selkänoja: kyllä",
"pl": "Oparcie: Tak",
"pt_BR": "Encosto: Sim",
"pt": "Encosto: Sim"
"pt": "Encosto: Sim",
"ca": "Respatller: sí"
}
},
{
@ -85,7 +88,8 @@
"fi": "Selkänoja: ei",
"pl": "Oparcie: Nie",
"pt_BR": "Encosto: Não",
"pt": "Encosto: Não"
"pt": "Encosto: Não",
"ca": "Respatller: No"
}
}
],
@ -123,7 +127,8 @@
"nb_NO": "{seats} seter",
"pl": "{seats} siedzeń",
"pt_BR": "{seats} assentos",
"pt": "{seats} assentos"
"pt": "{seats} assentos",
"ca": "{seats} seients"
},
"freeform": {
"key": "seats",
@ -164,7 +169,8 @@
"pl": "Materiał: {material}",
"pt_BR": "Material: {material}",
"pt": "Material: {material}",
"eo": "Materialo: {material}"
"eo": "Materialo: {material}",
"ca": "Material: {material}"
},
"freeform": {
"key": "material",
@ -189,7 +195,8 @@
"fi": "Materiaali: puu",
"pl": "Materiał: drewno",
"pt": "Material: madeira",
"eo": "Materialo: ligna"
"eo": "Materialo: ligna",
"ca": "Material: fusta"
}
},
{
@ -209,7 +216,8 @@
"pl": "Materiał: metal",
"pt_BR": "Material: metal",
"pt": "Material: metal",
"eo": "Materialo: metala"
"eo": "Materialo: metala",
"ca": "Material: metall"
}
},
{
@ -230,7 +238,8 @@
"fi": "Materiaali: kivi",
"pl": "Materiał: kamień",
"pt": "Material: pedra",
"eo": "Materialo: ŝtona"
"eo": "Materialo: ŝtona",
"ca": "Material: pedra"
}
},
{
@ -251,7 +260,8 @@
"fi": "Materiaali: betoni",
"pl": "Materiał: beton",
"pt": "Material: concreto",
"eo": "Materialo: betona"
"eo": "Materialo: betona",
"ca": "Material: ciment"
}
},
{
@ -272,7 +282,8 @@
"fi": "Materiaali: muovi",
"pl": "Materiał: plastik",
"pt": "Material: plástico",
"eo": "Materialo: plasta"
"eo": "Materialo: plasta",
"ca": "Material: plàstic"
}
},
{
@ -293,7 +304,8 @@
"fi": "Materiaali: teräs",
"pl": "Materiał: stal",
"pt": "Material: aço",
"eo": "Materialo: ŝtala"
"eo": "Materialo: ŝtala",
"ca": "Material: acer"
}
}
],
@ -367,7 +379,8 @@
"pl": "Kolor: {colour}",
"pt": "Cor: {colour}",
"eo": "Koloro: {colour}",
"es": "Color: {colour}"
"es": "Color: {colour}",
"ca": "Color: {colour}"
},
"question": {
"en": "Which colour does this bench have?",
@ -406,7 +419,8 @@
"fi": "Väri: ruskea",
"pl": "Kolor: brązowy",
"pt": "Cor: castanho",
"eo": "Koloro: bruna"
"eo": "Koloro: bruna",
"ca": "Color: marró"
}
},
{
@ -427,7 +441,8 @@
"pl": "Kolor: zielony",
"pt": "Cor: verde",
"eo": "Koloro: verda",
"es": "Color: verde"
"es": "Color: verde",
"ca": "Color: verd"
}
},
{
@ -448,7 +463,8 @@
"pl": "Kolor: szary",
"pt": "Cor: cinzento",
"eo": "Koloro: griza",
"es": "Color: gris"
"es": "Color: gris",
"ca": "Color: gris"
}
},
{
@ -469,7 +485,8 @@
"pl": "Kolor: biały",
"pt": "Cor: branco",
"eo": "Koloro: blanka",
"es": "Color: blanco"
"es": "Color: blanco",
"ca": "Color: blanc"
}
},
{
@ -490,7 +507,8 @@
"pl": "Kolor: czerwony",
"pt": "Cor: vermelho",
"eo": "Koloro: ruĝa",
"es": "Color: rojo"
"es": "Color: rojo",
"ca": "Color: vermell"
}
},
{
@ -511,7 +529,8 @@
"pl": "Kolor: czarny",
"pt": "Cor: preto",
"eo": "Koloro: nigra",
"es": "Color: negro"
"es": "Color: negro",
"ca": "Color: negre"
}
},
{
@ -532,7 +551,8 @@
"pl": "Kolor: niebieski",
"pt": "Cor: azul",
"eo": "Koloro: blua",
"es": "Color: azul"
"es": "Color: azul",
"ca": "Color: blau"
}
},
{
@ -553,7 +573,8 @@
"pl": "Kolor: żółty",
"pt": "Cor: amarelo",
"eo": "Koloro: flava",
"es": "Color: amarillo"
"es": "Color: amarillo",
"ca": "Color: groc"
}
}
],
@ -619,7 +640,8 @@
"pt_BR": "uma banco",
"fi": "penkki",
"pl": "Ławka",
"pt": "uma banco"
"pt": "uma banco",
"ca": "un banc"
},
"presiceInput": {
"preferredBackground": "photo"

View file

@ -42,7 +42,8 @@
"pt_BR": "Banco",
"fi": "Penkki",
"pl": "Ławka",
"pt": "Banco"
"pt": "Banco",
"ca": "Banc"
},
"mappings": [
{
@ -109,7 +110,8 @@
"pl": "{name}",
"pt": "{name}",
"eo": "{name}",
"es": "{name}"
"es": "{name}",
"ca": "{name}"
},
"freeform": {
"key": "name"

View file

@ -9,7 +9,8 @@
"zh_Hant": "單車圖書館",
"pt_BR": "Biblioteca de bicicleta",
"de": "Fahrradbibliotheken",
"pt": "Biblioteca de bicicleta"
"pt": "Biblioteca de bicicleta",
"ca": "Biblioteca per a bicicletes"
},
"minzoom": 8,
"source": {
@ -25,7 +26,8 @@
"zh_Hant": "單車圖書館",
"pt_BR": "Biblioteca de bicicleta",
"de": "Fahrradbibliothek",
"pt": "Biblioteca de bicicleta"
"pt": "Biblioteca de bicicleta",
"ca": "Biblioteca per a bicicletes"
},
"mappings": [
{

View file

@ -38,6 +38,7 @@
"then": {
"en": "{name}",
"nl": "{name}",
"ca": "{name}",
"de": "{name}"
}
}
@ -262,6 +263,7 @@
{
"en": "mountainbike",
"nl": "mountainbike",
"ca": "bicicleta de muntanya",
"de": "Mountainbikes"
}
],
@ -278,6 +280,7 @@
{
"en": "tandem",
"nl": "tandem",
"ca": "tàndem",
"de": "Tandems"
}
]

View file

@ -11,7 +11,8 @@
"ru": "Велосипедное кафе",
"zh_Hant": "單車咖啡廳",
"pt_BR": "Café de bicicletas",
"pt": "Café de bicicletas"
"pt": "Café de bicicletas",
"ca": "Cafeteria per a bicicletes"
},
"minzoom": 13,
"source": {
@ -50,7 +51,8 @@
"ru": "Велосипедное кафе",
"zh_Hant": "單車咖啡廳",
"pt_BR": "Café de bicicleta",
"pt": "Café de bicicleta"
"pt": "Café de bicicleta",
"ca": "Cafeteria per a bicicletes"
},
"mappings": [
{

View file

@ -12,7 +12,8 @@
"ru": "Велосипедная парковка",
"pl": "Parking dla rowerów",
"pt_BR": "Estacionamento de bicicletas",
"pt": "Estacionamento de bicicletas"
"pt": "Estacionamento de bicicletas",
"ca": "Aparcament per a bicicletes"
},
"minzoom": 17,
"source": {
@ -56,7 +57,8 @@
"ru": "Велосипедная парковка",
"pl": "Parking dla rowerów",
"pt_BR": "Estacionamento de bicicletas",
"pt": "Estacionamento de bicicletas"
"pt": "Estacionamento de bicicletas",
"ca": "Aparcament per a bicicletes"
}
},
"tagRenderings": [
@ -107,7 +109,8 @@
"de": "Fahrradbügel",
"hu": "Korlát",
"it": "Archetti",
"zh_Hant": "單車架"
"zh_Hant": "單車架",
"ca": "Bastidors de grapes"
},
"icon": {
"path": "./assets/layers/bike_parking/staple.svg",
@ -124,7 +127,8 @@
"de": "Metallgestänge",
"hu": "Kerékbefogó hurok",
"it": "Scolapiatti",
"zh_Hant": "車輪架/圓圈"
"zh_Hant": "車輪架/圓圈",
"ca": "Portarodes/bucles"
},
"icon": {
"path": "./assets/layers/bike_parking/wall_loops.svg",
@ -140,7 +144,8 @@
"gl": "Cadeado para guiador",
"de": "Halter für Fahrradlenker",
"it": "Blocca manubrio",
"zh_Hant": "車把架"
"zh_Hant": "車把架",
"ca": "Suport de manillar"
},
"icon": {
"path": "./assets/layers/bike_parking/handlebar_holder.svg",
@ -157,7 +162,8 @@
"de": "Gestell",
"zh_Hant": "車架",
"it": "Rastrelliera",
"ru": "Стойка"
"ru": "Стойка",
"ca": "Enganxament"
},
"icon": {
"path": "./assets/layers/bike_parking/rack.svg",
@ -175,7 +181,8 @@
"hu": "Kétszintű",
"zh_Hant": "兩層",
"it": "A due piani",
"ru": "Двухуровневая"
"ru": "Двухуровневая",
"ca": "De dos nivells"
},
"icon": {
"path": "./assets/layers/bike_parking/two_tier.svg",
@ -208,7 +215,8 @@
"fr": "Potelet",
"it": "Colonnina",
"de": "Poller",
"zh_Hant": "柱子"
"zh_Hant": "柱子",
"ca": "Pilona"
},
"icon": {
"path": "./assets/layers/bike_parking/bollard.svg",
@ -253,7 +261,8 @@
"de": "Tiefgarage",
"zh_Hant": "地下停車場",
"pt_BR": "Estacionamento subterrâneo",
"pt": "Estacionamento subterrâneo"
"pt": "Estacionamento subterrâneo",
"ca": "Aparcament subterrani"
}
},
{
@ -283,7 +292,8 @@
"zh_Hant": "屋頂停車場",
"pt_BR": "Estacionamento no telhado",
"pt": "Estacionamento no telhado",
"ru": "Парковка на крыше"
"ru": "Парковка на крыше",
"ca": "Aparcament al terrat"
}
},
{
@ -411,7 +421,8 @@
"fi": "{access}",
"pt_BR": "{access}",
"pt": "{access}",
"eo": "{access}"
"eo": "{access}",
"ca": "{access}"
},
"freeform": {
"key": "access",
@ -430,7 +441,8 @@
"de": "Öffentlich zugänglich",
"zh_Hant": "公開可用",
"pt_BR": "Acessível ao público",
"pt": "Acessível ao público"
"pt": "Acessível ao público",
"ca": "Accessible al públic"
}
},
{

View file

@ -88,7 +88,8 @@
"de": "Kaputte Pumpe",
"it": "Pompa rotta",
"ru": "Насос сломан",
"pt_BR": "Bomba quebrada"
"pt_BR": "Bomba quebrada",
"ca": "Bomba trencada"
}
},
{
@ -125,7 +126,8 @@
"de": "Fahrradpumpe",
"it": "Pompa per bici",
"ru": "Велосипедный насос",
"pt_BR": "Bomba de bicicleta"
"pt_BR": "Bomba de bicicleta",
"ca": "Bomba de bicicleta"
}
}
]
@ -275,7 +277,8 @@
"de": "Immer geöffnet",
"ru": "Всегда открыто",
"pt_BR": "Sempre aberto",
"pt": "Sempre aberto"
"pt": "Sempre aberto",
"ca": "Sempre obert"
}
}
],
@ -582,7 +585,8 @@
"ru": "Ручной насос",
"pl": "Pompa ręczna",
"pt_BR": "Bomba manual",
"pt": "Bomba manual"
"pt": "Bomba manual",
"ca": "Bomba manual"
}
},
{
@ -597,7 +601,8 @@
"ru": "Электрический насос",
"pl": "Pompka elektryczna",
"pt_BR": "Bomba elétrica",
"pt": "Bomba elétrica"
"pt": "Bomba elétrica",
"ca": "Bomba elèctrica"
}
}
]

View file

@ -9,7 +9,8 @@
"it": "Venditore/riparatore bici",
"ru": "Обслуживание велосипедов/магазин",
"pt_BR": "Reparo/loja de bicicletas",
"pt": "Reparo/loja de bicicletas"
"pt": "Reparo/loja de bicicletas",
"ca": "Botiga/reparació de bicicletes"
},
"minzoom": 13,
"allowMove": true,
@ -54,7 +55,8 @@
"it": "Venditore/riparatore bici",
"ru": "Обслуживание велосипедов/магазин",
"pt_BR": "Reparo/loja de bicicletas",
"pt": "Reparo/loja de bicicletas"
"pt": "Reparo/loja de bicicletas",
"ca": "Botiga/reparació de bicicletes"
},
"mappings": [
{

View file

@ -44,7 +44,8 @@
"fr": "Piste cyclable",
"it": "Pista ciclabile",
"de": "Radweg",
"ru": "Велотрек"
"ru": "Велотрек",
"ca": "Pista ciclable"
}
}
]

View file

@ -4,7 +4,8 @@
"en": "Binoculars",
"nl": "Verrekijkers",
"de": "Ferngläser",
"ru": "Бинокль"
"ru": "Бинокль",
"ca": "Prismàtics"
},
"minzoom": 0,
"title": {
@ -12,14 +13,16 @@
"en": "Binoculars",
"nl": "Verrekijker",
"de": "Ferngläser",
"ru": "Бинокль"
"ru": "Бинокль",
"ca": "Prismàtics"
}
},
"description": {
"en": "Binoculas",
"nl": "Verrekijkers",
"de": "Fernglas",
"ru": "Бинокли"
"ru": "Бинокли",
"ca": "Prismàtics"
},
"tagRenderings": [
"images",
@ -84,7 +87,8 @@
"en": "a binoculars",
"nl": "een verrekijker",
"de": "eine ferngläser",
"ru": "бинокль"
"ru": "бинокль",
"ca": "uns prismàtics"
},
"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;' />",

View file

@ -267,7 +267,8 @@
"nl": "Rolstoeltoegankelijk",
"en": "Wheelchair accessible",
"de": "Zugänglich für Rollstuhlfahrer",
"fr": "Accessible aux fauteuils roulants"
"fr": "Accessible aux fauteuils roulants",
"ca": "Accessible per a cadires de rodes"
},
"osmTags": {
"or": [

View file

@ -28,7 +28,8 @@
"nl": "een bruin café of kroeg",
"de": "eine kneipe",
"ru": "паб",
"hu": "kocsma"
"hu": "kocsma",
"ca": "un bar"
},
"description": {
"en": "A pub, mostly for drinking beers in a warm, relaxed interior",
@ -47,7 +48,8 @@
"nl": "een bar",
"de": "eine bar",
"ru": "бар",
"hu": "bár"
"hu": "bár",
"ca": "un pub"
},
"description": {
"en": "A more modern and commercial <b>bar</b>, possibly with a music and light installation",
@ -66,7 +68,8 @@
"nl": "een café",
"de": "eine café",
"ru": "кафе",
"hu": "kávézó"
"hu": "kávézó",
"ca": "un cafè"
},
"description": {
"en": "A <b>cafe</b> to drink tea, coffee or an alcoholical bevarage in a quiet environment",
@ -80,7 +83,8 @@
"title": {
"render": {
"en": "Pub",
"nl": "Café"
"nl": "Café",
"ca": "Bar"
},
"mappings": [
{
@ -93,7 +97,8 @@
"nl": "<i>{name}</i>",
"en": "<i>{name}</i>",
"de": "<i>{name}</i>",
"ru": "<i>{name}</i>"
"ru": "<i>{name}</i>",
"ca": "<i>{name}</i>"
}
}
]
@ -186,7 +191,8 @@
"nl": "Nu geopened",
"de": "Derzeit geöffnet",
"fr": "Ouvert maintenant",
"hu": "Most nyitva van"
"hu": "Most nyitva van",
"ca": "Obert ara"
},
"osmTags": "_isOpen=yes"
}

View file

@ -3,7 +3,8 @@
"name": {
"en": "Charging stations",
"nl": "Oplaadpunten",
"de": "Ladestationen"
"de": "Ladestationen",
"ca": "Estacions de càrrega"
},
"minzoom": 10,
"source": {
@ -23,7 +24,8 @@
"title": {
"render": {
"en": "Charging station",
"nl": "Oplaadpunt"
"nl": "Oplaadpunt",
"ca": "Estació de càrrega"
},
"mappings": [
{
@ -291,7 +293,8 @@
"ifnot": "socket:chademo=",
"then": {
"en": "<b>Chademo</b>",
"nl": "<b>Chademo</b>"
"nl": "<b>Chademo</b>",
"ca": "<b>Chademo</b>"
},
"icon": {
"path": "./assets/layers/charging_station/Chademo_type4.svg",
@ -333,7 +336,8 @@
},
"then": {
"en": "<b>Chademo</b>",
"nl": "<b>Chademo</b>"
"nl": "<b>Chademo</b>",
"ca": "<b>Chademo</b>"
},
"hideInAnswer": true,
"icon": {
@ -4092,7 +4096,8 @@
"question": {
"en": "All connectors",
"nl": "Alle types",
"de": "Alle Anschlüsse"
"de": "Alle Anschlüsse",
"ca": "Tots els connectors"
}
},
{
@ -4235,12 +4240,14 @@
"human": {
"en": " minutes",
"nl": " minuten",
"ru": " минут"
"ru": " минут",
"ca": " minuts"
},
"humanSingular": {
"en": " minute",
"nl": " minuut",
"ru": " минута"
"ru": " минута",
"ca": " minut"
}
},
{
@ -4257,12 +4264,14 @@
"human": {
"en": " hours",
"nl": " uren",
"ru": " часов"
"ru": " часов",
"ca": " hores"
},
"humanSingular": {
"en": " hour",
"nl": " uur",
"ru": " час"
"ru": " час",
"ca": " hora"
}
},
{
@ -4276,12 +4285,14 @@
"human": {
"en": " days",
"nl": " day",
"ru": " дней"
"ru": " дней",
"ca": " dies"
},
"humanSingular": {
"en": " day",
"nl": " dag",
"ru": " день"
"ru": " день",
"ca": " dia"
}
}
]
@ -4318,7 +4329,8 @@
"human": {
"en": "Volts",
"nl": "volt",
"ru": "Вольт"
"ru": "Вольт",
"ca": "Volts"
}
}
],
@ -4354,7 +4366,8 @@
],
"human": {
"en": "A",
"nl": "A"
"nl": "A",
"ca": "A"
}
}
],
@ -4388,7 +4401,8 @@
"human": {
"en": "kilowatt",
"nl": "kilowatt",
"ru": "киловатт"
"ru": "киловатт",
"ca": "quilovats"
}
},
{
@ -4399,7 +4413,8 @@
"human": {
"en": "megawatt",
"nl": "megawatt",
"ru": "мегаватт"
"ru": "мегаватт",
"ca": "megavats"
}
}
],

View file

@ -4,7 +4,8 @@
"en": "Crossings",
"nl": "Oversteekplaatsen",
"de": "Kreuzungen",
"fr": "Traversée"
"fr": "Traversée",
"ca": "Encreuaments"
},
"description": {
"en": "Crossings for pedestrians and cyclists",
@ -26,7 +27,8 @@
"en": "Crossing",
"nl": "Oversteekplaats",
"de": "Kreuzung",
"fr": "Traversée"
"fr": "Traversée",
"ca": "Encreuament"
},
"mappings": [
{
@ -36,7 +38,8 @@
"nl": "Verkeerslicht",
"ru": "Светофор",
"de": "Ampel",
"fr": "Feu de signalisation"
"fr": "Feu de signalisation",
"ca": "Semàfor"
}
},
{
@ -56,7 +59,8 @@
"en": "a crossing",
"nl": "een oversteekplaats",
"de": "eine kreuzung",
"fr": "une traversée"
"fr": "une traversée",
"ca": "un pas de vianants"
},
"tags": [
"highway=crossing"
@ -132,7 +136,8 @@
"then": {
"en": "Zebra crossing",
"nl": "Zebrapad",
"de": "Zebrastreifen"
"de": "Zebrastreifen",
"ca": "Pas de zebra"
},
"hideInAnswer": true
},

View file

@ -35,7 +35,8 @@
"nl": "Fietspaden",
"de": "Radwege",
"ru": "Велосипедные дорожки",
"fr": "Pistes cyclables"
"fr": "Pistes cyclables",
"ca": "Vies ciclistes"
},
"mappings": [
{
@ -50,7 +51,8 @@
"en": "Cycleway",
"de": "Radweg",
"ru": "Велосипедная дорожка",
"fr": "Piste cyclable"
"fr": "Piste cyclable",
"ca": "Via ciclista"
}
},
{
@ -59,7 +61,8 @@
"nl": "Fietssuggestiestrook",
"en": "Shared lane",
"de": "Gemeinsame Fahrspur",
"fr": "Voie partagée"
"fr": "Voie partagée",
"ca": "Carril compartit"
}
},
{
@ -68,7 +71,8 @@
"nl": "Fietsstrook",
"en": "Bike lane",
"de": "Fahrradspur",
"fr": "Bande cyclable"
"fr": "Bande cyclable",
"ca": "Carril bici"
}
},
{
@ -86,7 +90,8 @@
"nl": "Fietsstraat",
"en": "Cyclestreet",
"de": "Fahrradstraße",
"fr": "Vélorue"
"fr": "Vélorue",
"ca": "Carrer ciclista"
}
}
]
@ -817,7 +822,8 @@
"en": "Compulsory cycleway",
"nl": "Verplicht fietspad",
"de": "Vorgeschriebener Radweg",
"id": "Jalur sepeda wajib"
"id": "Jalur sepeda wajib",
"ca": "Via ciclista obligatòria"
},
"hideInAnswer": "_country!=be",
"icon": {
@ -845,7 +851,8 @@
"en": "Segregated foot/cycleway",
"nl": "Afgescheiden voet-/fietspad",
"de": "Getrennter Fuß-/Radweg",
"id": "Jalur pejalan kaki/sepeda terpisah"
"id": "Jalur pejalan kaki/sepeda terpisah",
"ca": "Via segregada a peu/ciclista"
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@ -863,7 +870,8 @@
"en": "Unsegregated foot/cycleway",
"nl": "Gedeeld voet-/fietspad",
"de": "Gemeinsamer Fuß-/Radweg",
"id": "Jalur pejalan kaki/sepeda tidak terpisah"
"id": "Jalur pejalan kaki/sepeda tidak terpisah",
"ca": "Via no segregada a peu/ciclista"
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@ -916,7 +924,8 @@
"en": "Compulsory cycleway",
"nl": "Verplicht fietspad",
"de": "Vorgeschriebener Radweg",
"id": "Jalur sepeda wajib"
"id": "Jalur sepeda wajib",
"ca": "Via ciclista obligatòria"
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@ -948,7 +957,8 @@
"then": {
"en": "Segregated foot/cycleway",
"nl": "Afgescheiden voet-/fietspad",
"de": "Getrennter Fuß-/Radweg"
"de": "Getrennter Fuß-/Radweg",
"ca": "Via segregada a peu/ciclista"
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@ -969,7 +979,8 @@
"then": {
"en": "Unsegregated foot/cycleway",
"nl": "Gedeeld voet-/fietspad",
"de": "Gemeinsamer Fuß-/Radweg"
"de": "Gemeinsamer Fuß-/Radweg",
"ca": "Via no segregada a peu/ciclista"
},
"hideInAnswer": "_country!=be",
"addExtraTags": [
@ -989,7 +1000,8 @@
"if": "traffic_sign=NL:G11",
"then": {
"en": "Compulsory cycleway",
"nl": "Verplicht fietspad"
"nl": "Verplicht fietspad",
"ca": "Via ciclista obligatòria"
},
"hideInAnswer": "_country!=nl",
"addExtraTags": [

View file

@ -477,7 +477,8 @@
"it": "{opening_hours_table(opening_hours)}",
"ru": "{opening_hours_table(opening_hours)}",
"de": "{opening_hours_table(opening_hours)}",
"sl": "{opening_hours_table(opening_hours)}"
"sl": "{opening_hours_table(opening_hours)}",
"ca": "{opening_hours_table(opening_hours)}"
},
"question": {
"en": "At what times is this defibrillator available?",
@ -563,7 +564,8 @@
"it": "Verificato oggi!",
"ru": "Проверено сегодня!",
"de": "Heute überprüft!",
"sl": "Preverjeno danes!"
"sl": "Preverjeno danes!",
"ca": "Comprovat avui!"
}
}
],

View file

@ -6,7 +6,8 @@
"fr": "Visualisation de la direction",
"it": "Visualizzazione della direzione",
"ru": "Визуализация направления",
"de": "Aufnahmewinkel der Kamera anzeigen"
"de": "Aufnahmewinkel der Kamera anzeigen",
"ca": "Direcció de la visualització"
},
"minzoom": 16,
"source": {

View file

@ -9,7 +9,8 @@
"it": "Acqua potabile",
"ru": "Питьевая вода",
"id": "Air minum",
"hu": "Ivóvíz"
"hu": "Ivóvíz",
"ca": "Aigua potable"
},
"title": {
"render": {
@ -21,7 +22,8 @@
"it": "Acqua potabile",
"ru": "Питьевая вода",
"id": "Air minum",
"hu": "Ivóvíz"
"hu": "Ivóvíz",
"ca": "Aigua potable"
}
},
"source": {

View file

@ -3,7 +3,8 @@
"name": {
"en": "Entrance",
"nl": "Toegang",
"de": "Eingänge"
"de": "Eingänge",
"ca": "Entrada"
},
"description": {
"en": "A layer showing entrances and offering capabilities to survey some advanced data which is important for e.g. wheelchair users (but also bicycle users, people who want to deliver, ...)",
@ -21,7 +22,8 @@
"title": {
"render": {
"en": "Entrance",
"nl": "Ingang"
"nl": "Ingang",
"ca": "Entrada"
}
},
"tagRenderings": [

View file

@ -6,7 +6,7 @@
"nb_NO": "Kart over brannhydranter",
"ru": "Карта огнетушителей.",
"fr": "Couche des extincteurs.",
"de": "Feuerlöscher anzeigen",
"de": "Feuerlöscher anzeigen.",
"it": "Cartina degli estintori.",
"nl": "Kaart van brandblussers."
},
@ -27,7 +27,8 @@
"fr": "Exctincteurs",
"de": "Feuerlöscher",
"it": "Estintori",
"nl": "Brandblussers"
"nl": "Brandblussers",
"ca": "Extintors"
}
},
"description": {

View file

@ -20,7 +20,8 @@
"en": "a restaurant",
"nl": "een restaurant",
"ru": "ресторан",
"de": "eine restaurant"
"de": "eine restaurant",
"ca": "un restaurant"
},
"tags": [
"amenity=restaurant"
@ -39,7 +40,8 @@
"en": "a fastfood",
"nl": "een fastfood-zaak",
"ru": "быстрое питание",
"de": "eine schnellimbiss"
"de": "eine schnellimbiss",
"ca": "un de menjar ràpid"
},
"tags": [
"amenity=fast_food"
@ -75,7 +77,8 @@
"title": {
"render": {
"en": "Restaurant",
"nl": "Eetgelegenheid"
"nl": "Eetgelegenheid",
"ca": "Restaurant"
},
"mappings": [
{
@ -88,7 +91,8 @@
"then": {
"nl": "Restaurant <i>{name}</i>",
"en": "Restaurant <i>{name}</i>",
"de": "Restaurant <i>{name}</i>"
"de": "Restaurant <i>{name}</i>",
"ca": "Restaurant <i>{name}</i>"
}
},
{
@ -101,7 +105,8 @@
"then": {
"nl": "Fastfood-zaak <i>{name}</i>",
"en": "Fastfood <i>{name}</i>",
"de": "Schnellrestaurant<i>{name}</i>"
"de": "Schnellrestaurant<i>{name}</i>",
"ca": "Lloc de menjar ràpid <i>{name}</i>"
}
},
{
@ -113,7 +118,8 @@
"then": {
"nl": "Fastfood-zaak",
"en": "Fastfood",
"de": "Schnellrestaurant"
"de": "Schnellrestaurant",
"ca": "Menjar ràpid"
}
}
]
@ -602,7 +608,8 @@
"question": {
"en": "Opened now",
"nl": "Nu geopened",
"de": "Aktuell geöffnet"
"de": "Aktuell geöffnet",
"ca": "Obert ara"
},
"osmTags": "_isOpen=yes"
}

View file

@ -18,7 +18,8 @@
"ru": "Велосипед ghost",
"sv": "Spökcykel",
"zh_Hant": "幽靈單車",
"pt": "Bicicleta fantasma"
"pt": "Bicicleta fantasma",
"ca": "Bicicleta blanca"
},
"source": {
"osmTags": "memorial=ghost_bike"
@ -43,7 +44,8 @@
"ru": "Велосипед Ghost",
"sv": "Spökcykel",
"zh_Hant": "幽靈單車",
"pt": "Bicicleta fantasma"
"pt": "Bicicleta fantasma",
"ca": "Bicicleta blanca"
},
"mappings": [
{

View file

@ -28,7 +28,8 @@
"fr": "Bornes incendie",
"de": "Hydrant",
"it": "Idrante",
"nl": "Brandkraan"
"nl": "Brandkraan",
"ca": "Hidrant"
}
},
"description": {

View file

@ -6,7 +6,8 @@
"it": "Pannelli informativi",
"fr": "Panneaux d'informations",
"de": "Informationstafeln",
"ru": "Информационные щиты"
"ru": "Информационные щиты",
"ca": "Panells d'informació"
},
"minzoom": 12,
"source": {
@ -23,7 +24,8 @@
"it": "Pannello informativo",
"fr": "Panneau d'informations",
"de": "Informationstafel",
"ru": "Информационный щит"
"ru": "Информационный щит",
"ca": "Panell d'informació"
}
},
"tagRenderings": [

View file

@ -6,7 +6,8 @@
"it": "Mappe",
"ru": "Карты",
"fr": "Cartes",
"de": "Karten"
"de": "Karten",
"ca": "Mapes"
},
"minzoom": 12,
"source": {
@ -24,7 +25,8 @@
"it": "Mappa",
"ru": "Карта",
"fr": "Carte",
"de": "Karte"
"de": "Karte",
"ca": "Mapa"
}
},
"description": {
@ -177,7 +179,8 @@
"it": "una mappa",
"ru": "Карта",
"fr": "une carte",
"de": "eine karte"
"de": "eine karte",
"ca": "un mapa"
},
"description": {
"en": "Add a missing map",

View file

@ -16,7 +16,8 @@
"title": {
"render": {
"en": "Note",
"nl": "Note"
"nl": "Note",
"ca": "Nota"
},
"mappings": [
{

View file

@ -4,7 +4,8 @@
"en": "Observation towers",
"nl": "Uitkijktorens",
"ru": "Смотровые башни",
"de": "Aussichtstürme"
"de": "Aussichtstürme",
"ca": "Torres d'observació"
},
"minzoom": 8,
"title": {
@ -12,7 +13,8 @@
"en": "Observation tower",
"nl": "Uitkijktoren",
"ru": "Смотровая башня",
"de": "Beobachtungsturm"
"de": "Beobachtungsturm",
"ca": "Torre d'observació"
},
"mappings": [
{
@ -21,7 +23,8 @@
"en": "<b>{name}</b>",
"nl": "<b>{name}</b>",
"ru": "<b>{name}</b>",
"de": "<b>{name}</b>"
"de": "<b>{name}</b>",
"ca": "<b>{name}</b>"
}
}
]
@ -260,7 +263,8 @@
"nl": " meter",
"en": " meter",
"ru": " метр",
"de": " Meter"
"de": " Meter",
"ca": " metre"
}
}
],

View file

@ -3,7 +3,8 @@
"name": {
"en": "Parking",
"nl": "Parking",
"de": "Parkplätze"
"de": "Parkplätze",
"ca": "Aparcament"
},
"minzoom": 12,
"source": {

View file

@ -6,7 +6,8 @@
"it": "Tavoli da picnic",
"ru": "Столы для пикника",
"fr": "Tables de pique-nique",
"de": "Picknick-Tische"
"de": "Picknick-Tische",
"ca": "Taules de pícnic"
},
"minzoom": 12,
"source": {
@ -19,7 +20,8 @@
"it": "Tavolo da picnic",
"ru": "Стол для пикника",
"fr": "Table de pique-nique",
"de": "Picknick-Tisch"
"de": "Picknick-Tisch",
"ca": "Taula de pícnic"
}
},
"description": {

View file

@ -6,7 +6,8 @@
"ru": "Детские площадки",
"de": "Spielplätze",
"it": "Campi da gioco",
"fr": "Aire de jeu"
"fr": "Aire de jeu",
"ca": "Parcs infantils"
},
"minzoom": 13,
"source": {
@ -26,7 +27,8 @@
"it": "Parchi giochi",
"ru": "Детские площадки",
"de": "Spielplätze",
"fr": "Aire de jeu"
"fr": "Aire de jeu",
"ca": "Parcs infantils"
},
"title": {
"render": {
@ -35,7 +37,8 @@
"it": "Parco giochi",
"ru": "Детская площадка",
"de": "Spielplatz",
"fr": "Aire de jeu"
"fr": "Aire de jeu",
"ca": "Parc infantil"
},
"mappings": [
{
@ -46,7 +49,8 @@
"it": "Parco giochi <i>{name}</i>",
"ru": "Детская площадка <i>{name}</i>",
"de": "Spielplatz <i>{name}</i>",
"fr": "Aire de jeu <i>{name}</i>"
"fr": "Aire de jeu <i>{name}</i>",
"ca": "Parc infantil <i>{name}</i>"
}
}
]
@ -475,7 +479,8 @@
"fr": "Toujours accessible",
"ru": "Всегда доступен",
"it": "Si può sempre accedere",
"de": "Immer zugänglich"
"de": "Immer zugänglich",
"ca": "Sempre accessible--"
}
}
],
@ -498,7 +503,8 @@
"ru": "Детская площадка",
"fr": "une terrain de jeux",
"it": "una campetto",
"de": "eine spielplatz"
"de": "eine spielplatz",
"ca": "un parc infantil"
}
}
],

View file

@ -7,7 +7,8 @@
"fr": "Microbibliothèque",
"ru": "Книжные шкафы",
"it": "Microbiblioteche",
"hu": "Könyvespolcok"
"hu": "Könyvespolcok",
"ca": "Bústies per llibres"
},
"description": {
"en": "A streetside cabinet with books, accessible to anyone",
@ -30,7 +31,8 @@
"fr": "Microbibliothèque",
"ru": "Книжный шкаф",
"it": "Microbiblioteca",
"hu": "Könyvespolc"
"hu": "Könyvespolc",
"ca": "Bústia per llibres"
},
"mappings": [
{
@ -56,7 +58,8 @@
"fr": "une microbibliothèque",
"ru": "Книжный шкаф",
"it": "una microbiblioteca",
"hu": "Könyvespolc"
"hu": "Könyvespolc",
"ca": "una bústia per a llibres"
},
"tags": [
"amenity=public_bookcase"

View file

@ -3,7 +3,8 @@
"name": {
"en": "Recycling",
"nl": "Recycling",
"de": "Recycling"
"de": "Recycling",
"ca": "Residus"
},
"description": {
"en": "A layer with recycling containers and centres",
@ -838,7 +839,8 @@
"if": "opening_hours=24/7",
"then": {
"en": "24/7",
"nl": "24/7"
"nl": "24/7",
"ca": "24/7"
}
}
]

View file

@ -7,7 +7,8 @@
"ja": "店",
"nl": "Winkel",
"de": "Geschäfte",
"eo": "Butiko"
"eo": "Butiko",
"ca": "Botiga"
},
"minzoom": 16,
"source": {
@ -25,7 +26,8 @@
"ja": "店",
"nl": "Winkel",
"de": "Geschäft",
"eo": "Butiko"
"eo": "Butiko",
"ca": "Botiga"
},
"mappings": [
{
@ -41,7 +43,8 @@
"ja": "{name}",
"de": "{name}",
"eo": "{name}",
"nl": "{name}"
"nl": "{name}",
"ca": "{name}"
}
},
{
@ -57,7 +60,8 @@
"ja": "{shop}",
"de": "{shop}",
"eo": "{shop}",
"nl": "{shop}"
"nl": "{shop}",
"ca": "{shop}"
}
}
]
@ -136,7 +140,8 @@
"ru": "Супермаркет",
"ja": "スーパーマーケット",
"nl": "Supermarkt",
"de": "Supermarkt"
"de": "Supermarkt",
"ca": "Supermercat"
}
},
{
@ -166,7 +171,8 @@
"ru": "Парикмахерская",
"ja": "理容師",
"nl": "Kapper",
"de": "Friseur"
"de": "Friseur",
"ca": "Perruqueria"
}
},
{
@ -181,7 +187,8 @@
"ja": "ベーカリー",
"nl": "Bakkerij",
"de": "Bäckerei",
"eo": "Bakejo"
"eo": "Bakejo",
"ca": "Fleca"
}
},
{
@ -310,7 +317,8 @@
"fr": "{opening_hours_table(opening_hours)}",
"ru": "{opening_hours_table(opening_hours)}",
"ja": "{opening_hours_table(opening_hours)}",
"nl": "{opening_hours_table(opening_hours)}"
"nl": "{opening_hours_table(opening_hours)}",
"ca": "{opening_hours_table(opening_hours)}"
},
"question": {
"en": "What are the opening hours of this shop?",

View file

@ -6,7 +6,8 @@
"en": "Sport pitches",
"ru": "Спортивные площадки",
"it": "Campi sportivi",
"de": "Sportplätze"
"de": "Sportplätze",
"ca": "Camps d'esports"
},
"minzoom": 12,
"source": {
@ -26,7 +27,8 @@
"en": "Sport pitch",
"ru": "Спортивная площадка",
"it": "Campo sportivo",
"de": "Sportplatz"
"de": "Sportplatz",
"ca": "Camp d'esports"
}
},
"description": {

View file

@ -6,7 +6,8 @@
"ru": "Камеры наблюдения",
"fr": "Caméras de surveillance",
"it": "Videocamere di sorveglianza",
"de": "Überwachungskameras"
"de": "Überwachungskameras",
"ca": "Càmeres de videovigilància"
},
"minzoom": 12,
"source": {
@ -30,7 +31,8 @@
"ru": "Камера наблюдения",
"fr": "Caméra de surveillance",
"it": "Videocamera di sorveglianza",
"de": "Überwachungskamera"
"de": "Überwachungskamera",
"ca": "Càmera de videovigilància"
}
},
"tagRenderings": [

View file

@ -6,7 +6,8 @@
"fr": "Toilettes",
"nl": "Toiletten",
"ru": "Туалеты",
"it": "Servizi igienici"
"it": "Servizi igienici",
"ca": "Lavabos"
},
"minzoom": 12,
"source": {
@ -19,7 +20,8 @@
"fr": "Toilettes",
"nl": "Toilet",
"ru": "Туалет",
"it": "Servizi igienici"
"it": "Servizi igienici",
"ca": "Lavabo"
}
},
"presets": [

View file

@ -5,7 +5,8 @@
"nl": "Wandeltochten",
"ru": "Тропы",
"de": "Wanderwege",
"fr": "Sentiers"
"fr": "Sentiers",
"ca": "Camins"
},
"minzoom": 12,
"source": {
@ -28,7 +29,8 @@
"nl": "Wandeltocht",
"ru": "Тропа",
"de": "Wanderweg",
"fr": "Sentier"
"fr": "Sentier",
"ca": "Camí"
},
"mappings": [
{

View file

@ -6,7 +6,8 @@
"it": "Albero",
"ru": "Дерево",
"fr": "Arbre",
"de": "Bäume"
"de": "Bäume",
"ca": "Arbre"
},
"minzoom": 16,
"source": {
@ -24,7 +25,8 @@
"ru": "Дерево",
"fr": "Arbre",
"de": "Baum",
"eo": "Arbo"
"eo": "Arbo",
"ca": "Arbre"
},
"mappings": [
{
@ -91,7 +93,8 @@
"en": "Broadleaved",
"it": "Latifoglia",
"fr": "Feuillu",
"de": "Laubbaum"
"de": "Laubbaum",
"ca": "De fulla ampla"
},
"icon": {
"path": "./assets/themes/trees/broadleaved.svg",
@ -109,7 +112,8 @@
"en": "Needleleaved",
"it": "Aghifoglia",
"fr": "Résineux",
"de": "Nadelbaum"
"de": "Nadelbaum",
"ca": "Amb fulles d'agulla"
},
"icon": {
"path": "./assets/themes/trees/needleleaved.svg",
@ -297,7 +301,8 @@
"it": "Sempreverde.",
"fr": "À feuilles persistantes.",
"ru": "Вечнозелёное.",
"de": "immergrüner Baum."
"de": "immergrüner Baum.",
"ca": "Perenne."
}
}
],
@ -574,7 +579,8 @@
"ru": "Дерево",
"fr": "une arbre",
"id": "Pohon",
"de": "eine baum"
"de": "eine baum",
"ca": "un arbre"
},
"description": {
"nl": "Wanneer je niet zeker bent of het nu een loof- of naaldboom is.",

View file

@ -8,7 +8,8 @@
"it": "Punto panoramico",
"ru": "Смотровая площадка",
"id": "Sudut pandang",
"eo": "Vidpunkto"
"eo": "Vidpunkto",
"ca": "Mirador"
},
"description": {
"en": "A nice viewpoint or nice view. Ideal to add an image if no other category fits",
@ -31,7 +32,8 @@
"fr": "une point de vue",
"ru": "Смотровая площадка",
"it": "una punto panoramico",
"id": "Sudut pandang"
"id": "Sudut pandang",
"ca": "un mirador"
},
"tags": [
"tourism=viewpoint"
@ -47,7 +49,8 @@
"ru": "Смотровая площадка",
"it": "Punto panoramico",
"id": "Sudut pandang",
"eo": "Vidpunkto"
"eo": "Vidpunkto",
"ca": "Mirador"
}
},
"tagRenderings": [

View file

@ -25,7 +25,8 @@
"de": "{name}",
"ru": "{name}",
"eo": "{name}",
"fr": "{name}"
"fr": "{name}",
"ca": "{name}"
},
"mappings": [
{
@ -50,7 +51,8 @@
"de": "{name}",
"ru": "{name}",
"eo": "{name}",
"fr": "{name}"
"fr": "{name}",
"ca": "{name}"
}
}
]

View file

@ -5,7 +5,8 @@
"nl": "Vuilnisbak",
"ru": "Контейнер для мусора",
"de": "Abfalleimer",
"eo": "Rubujo"
"eo": "Rubujo",
"ca": "Paperera"
},
"minzoom": 17,
"source": {
@ -20,7 +21,8 @@
"en": "Waste Basket",
"nl": "Vuilnisbak",
"ru": "Контейнер для мусора",
"de": "Abfalleimer"
"de": "Abfalleimer",
"ca": "Paperera"
}
},
"description": {

View file

@ -6,7 +6,8 @@
"de": "Wassermühle",
"ru": "Водяная мельница",
"id": "Kincir Air",
"fr": "Moulin à eau"
"fr": "Moulin à eau",
"ca": "Molí d'aigua"
},
"minzoom": 12,
"source": {

View file

@ -27,7 +27,8 @@
"sv": "Vad är den motsvarande Wikidata-enheten?",
"zh_Hant": "對應的維基資料項目是?",
"pl": "Jaki jest powiązany obiekt Wikidata?",
"ja": "対応するウィキデータのエンティティは何ですか?"
"ja": "対応するウィキデータのエンティティは何ですか?",
"fil": "Ano ang nau-ukol na entidad sa Wikidata?"
},
"mappings": [
{
@ -46,7 +47,8 @@
"zh_Hant": "還沒有連結到維基百科頁面",
"ru": "Никакой страницы на Википедии не было прикреплено",
"pl": "Link do strony Wikipedii nie został jeszcze określony",
"ja": "ウィキペディアのページはまだリンクされていません"
"ja": "ウィキペディアのページはまだリンクされていません",
"fil": "Wala pang kawing ng Wikipedia page"
},
"hideInAnswer": true
}
@ -81,7 +83,8 @@
"hu": "Mi a telefonszáma ennek: {title()}?",
"ca": "Quin és el telèfon de {title()}?",
"ja": "{title()}の電話番号は?",
"sl": "Kakšno telefonsko številko ima {title()}?"
"sl": "Kakšno telefonsko številko ima {title()}?",
"fil": "Ano ang telepono ng {title()}?"
},
"render": "<a href='tel:{phone}'>{phone}</a>",
"mappings": [
@ -123,7 +126,8 @@
"zh_Hant": "維基百科上對應的項目是什麼?",
"fr": "Quel est lélément Wikipédia correspondant?",
"pl": "Jaki jest link do strony Wikipedii?",
"ja": "Wikipediaの該当項目は何ですか"
"ja": "Wikipediaの該当項目は何ですか",
"fil": "Ano ang nau-ukol na partida sa Wikipedia?"
},
"mappings": [
{
@ -141,7 +145,8 @@
"sv": "Inte länkad med Wikipedia",
"zh_Hant": "沒有連結到維基百科",
"pl": "Brak linku do strony Wikipedii",
"ja": "ウィキペディアと連動していない"
"ja": "ウィキペディアと連動していない",
"fil": "Hindi naka-ugnay sa Wikipedia"
}
}
],
@ -170,7 +175,8 @@
"hu": "Mi a(z) {title()} e-mail címe?",
"ca": "Quina és l'adreça de correu electrònic de {title()}?",
"ja": "{title()}のEメールアドレスは何ですか",
"sl": "Kakšen naslov elektronske pošte ima {title()}?"
"sl": "Kakšen naslov elektronske pošte ima {title()}?",
"fil": "Ano ang email address ng {title()}?"
},
"mappings": [
{
@ -206,7 +212,8 @@
"eo": "Kie estas la retejo de {title()}?",
"hu": "Mi a weboldala ennek: {title()}?",
"ca": "Quina és la web de {title()}?",
"ja": "{title()}のウェブサイトは?"
"ja": "{title()}のウェブサイトは?",
"fil": "Ano ang website ng {title()}?"
},
"render": "<a href='{website}' target='_blank'>{website}</a>",
"freeform": {
@ -239,7 +246,8 @@
"sv": "Är det här stället tillgängligt med en rullstol?",
"zh_Hant": "這個地方可以坐輪椅到達嗎?",
"pl": "Czy to miejsce jest dostępne dla osób na wózkach inwalidzkich?",
"ja": "車いすでのアクセスは可能ですか?"
"ja": "車いすでのアクセスは可能ですか?",
"fil": "Kaya bang abutin ang lugar na ito ng naka-wheelchair?"
},
"mappings": [
{
@ -263,7 +271,8 @@
"zh_Hant": "這個地方有特別設計給輪椅使用者",
"ru": "Это место подходит для людей на инвалидной коляске",
"pl": "W tym miejscu zainstalowane zostały udogodnienia dla osób na wózkach inwalidzkich",
"ja": "この場所は、車椅子の方のための特別仕様になっています"
"ja": "この場所は、車椅子の方のための特別仕様になっています",
"fil": "Ang lugar na ito ay angkop sa mga gumagamit ng wheelchair"
}
},
{
@ -287,7 +296,8 @@
"zh_Hant": "這個地方坐輪椅很容易到達",
"ru": "До этого места легко добраться на инвалидной коляске",
"pl": "To miejsce jest łatwo dostępne dla osób na wózkach inwalidzkich",
"ja": "この場所は、車いすで簡単に行くことができます"
"ja": "この場所は、車いすで簡単に行くことができます",
"fil": "Ang lugar na ito ay kayang abutin ng mga naka-wheelchair"
}
},
{
@ -311,7 +321,8 @@
"zh_Hant": "這個地方可以坐輪椅到達,但並不容易",
"ru": "До этого места можно добраться, но не просто",
"pl": "To miejsce jest dostępne dla osób na wózkach inwalidzkich, ale z pewnymi trudnościami",
"ja": "車いすでこの場所まで行くことは可能ですが、簡単ではありません"
"ja": "車いすでこの場所まで行くことは可能ですが、簡単ではありません",
"fil": "Kayang abutin ang lugar na ito ng mga naka-wheelchair, pero hindi madali"
}
},
{
@ -334,7 +345,8 @@
"sv": "Den här platsen kan inte nås med en rullstol",
"zh_Hant": "輪椅無法到達這個地方",
"pl": "To miejsce jest niedostępne dla osób na wózkach inwalidzkich",
"ja": "この場所は車いすでは行けません"
"ja": "この場所は車いすでは行けません",
"fil": "Ang lugar na ito ay hindi kayang abutin ng naka-wheelchair"
}
}
]
@ -356,7 +368,8 @@
"pl": "Czy w tej firmie psy są dozwolone?",
"ja": "犬を飼うことができますか?",
"id": "Apakah anjing diperbolehkan dalam bisnis ini?",
"sl": "Ali so v tem podjetju dovoljeni psi?"
"sl": "Ali so v tem podjetju dovoljeni psi?",
"fil": "Pinapayagan ba ang mga aso sa establisyementong ito?"
},
"mappings": [
{
@ -379,7 +392,8 @@
"pl": "Psy dozwolone",
"ja": "ペット同伴可能",
"es": "Se permiten perros",
"sl": "Psi so dovoljeni"
"sl": "Psi so dovoljeni",
"fil": "Pinapayagan ang mga aso"
}
},
{
@ -402,7 +416,8 @@
"id": "Anjing <b> tidak </b> diperbolehkan",
"ja": "ペット同伴<b>不可</b>",
"es": "<b>No</b> se permiten perros",
"sl": "Psi <b>niso</b> dovoljeni"
"sl": "Psi <b>niso</b> dovoljeni",
"fil": "<b>Hindi</b> pinapayagan ang mga aso"
}
},
{
@ -423,7 +438,8 @@
"id": "Anjing diperbolehkan, tetapi mereka harus diikat",
"pl": "Psy dozwolone, ale muszą być na smyczy",
"ja": "ペット同伴可能。ただしリード着用",
"sl": "Psi so dovoljeni, vendar morajo biti na povodcu"
"sl": "Psi so dovoljeni, vendar morajo biti na povodcu",
"fil": "Pinapayagan ang mga aso kung may tali"
}
},
{
@ -444,7 +460,8 @@
"pl": "Psy dozwolone i mogą biegać bez ograniczeń",
"ja": "犬同伴可能、自由に走り回れる",
"id": "Anjing diperbolehkan dan dapat berkeliaran dengan bebas",
"sl": "Psi so dovoljeni in lahko prosto tekajo naokoli"
"sl": "Psi so dovoljeni in lahko prosto tekajo naokoli",
"fil": "Pinapayayagan ang mga aso, at malayang makatatakbo"
}
}
]
@ -468,7 +485,8 @@
"id": "Apakah masih ada sesuatu yang relevan yang tidak dapat Anda berikan dalam pertanyaan sebelumnya? Tambahkan di sini. <br/> <span style='font-size: small'> Jangan ulangi fakta yang sudah dinyatakan </span>",
"ja": "前の質問で伝えきれなかった関連事項がまだありますか?ここに追加してください。<br/><span style='font-size: small'>今後表示しない</span>",
"es": "¿Aún hay algo relevante que no ha encajado en las preguntas anteriores? Compártalo aquí.<br/><span style='font-size: small'>No repita datos ya expresados</span>",
"sl": "Ali je še kaj pomembnega, česar niste mogli povedati v prejšnjih vprašanjih? Dopišite tukaj.<br/><span style='font-size: small'>Ne ponavljajte že navedenih dejstev</span>"
"sl": "Ali je še kaj pomembnega, česar niste mogli povedati v prejšnjih vprašanjih? Dopišite tukaj.<br/><span style='font-size: small'>Ne ponavljajte že navedenih dejstev</span>",
"fil": "Mayroon pa bang mga bagay na nau-ugnay at hindi mo maibigay sa mga nakaraang tanong? Idagdag dito.<br/><span style='font-size: small'>Huwag ulitin ang mga nai-saad na</span>"
},
"render": "{description}",
"freeform": {
@ -492,7 +510,8 @@
"hu": "Mikor van nyitva ez: {title()}?",
"ca": "Quin és l'horari d'obertura de {title()}?",
"ja": "{title()}の営業時間は?",
"sl": "Kakšen odpiralni čas ima {title()}?"
"sl": "Kakšen odpiralni čas ima {title()}?",
"fil": "Anong oras nagbubukas ang {title()}?"
},
"render": {
"de": "<h3>Öffnungszeiten</h3>{opening_hours_table(opening_hours)}",
@ -511,7 +530,8 @@
"hu": "<h3>Nyitva tartás</h3>{opening_hours_table(opening_hours)}",
"ca": "<h3>Horari d'obertura</h3>{opening_hours_table(opening_hours)}",
"ja": "<h3>営業時間</h3>{opening_hours_table(opening_hours)}",
"sl": "<h3>Odpiralni čas</h3>{opening_hours_table(opening_hours)}"
"sl": "<h3>Odpiralni čas</h3>{opening_hours_table(opening_hours)}",
"fil": "<h3>Mga oras na bukas</h3>{opening_hours_table(opening_hours)}"
},
"freeform": {
"key": "opening_hours",
@ -531,7 +551,8 @@
"hu": "Van-e ebben a létesítményben olyan konnektor, amely a bent tartózkodó ügyfelek rendelkezésére áll?",
"fr": "Des prises sont elles à disposition des client·e·s en intérieur?",
"pl": "Czy w tym przybytku znajdują się gniazdka elektryczne, gdzie klienci mogą naładować swoje urządzenia?",
"ja": "このアメニティにはコンセントがあり、お客様が店内にいるときにも利用できますか?"
"ja": "このアメニティにはコンセントがあり、お客様が店内にいるときにも利用できますか?",
"fil": "Merong bang mga intsupe (outlet) sa loob, para sa mga suki?"
},
"mappings": [
{
@ -546,7 +567,8 @@
"hu": "Számos konnektor áll a belső térben ügyfelek rendelkezésére, ahol elektromos készülékeiket tölthetik",
"fr": "Il y a suffisamment de prises disponibles pour les client·e·s en intérieur souhaitant recharger leurs appareils",
"pl": "W budynku znajduje się wiele gniazdek elektrycznych, gdzie klienci mogą naładować swoje urządzenia",
"ja": "屋内の席に座っているお客様には、家庭用コンセントがたくさん用意されており、そこで電子機器を充電することができます"
"ja": "屋内の席に座っているお客様には、家庭用コンセントがたくさん用意されており、そこで電子機器を充電することができます",
"fil": "Maraming mga intsupe (sockets) na maaring gamitin ng mga suki na nakaupo sa loob, pang-karga ng kanilang mga elektroniks"
},
"if": "service:electricity=yes"
},
@ -562,7 +584,8 @@
"hu": "Csupán néhány konnektor áll a belső térben ügyfelek rendelkezésére, ahol elektromos készülékeiket tölthetik",
"fr": "Il y a peu de prises disponibles pour les client·e·s en intérieur souhaitant recharger leurs appareils",
"pl": "W budynku znajduje się kilka gniazdek elektrycznych, gdzie klienci mogą naładować swoje urządzenia",
"ja": "屋内の席に座ったお客様が充電できるよう、コンセントがいくつか用意されています"
"ja": "屋内の席に座ったお客様が充電できるよう、コンセントがいくつか用意されています",
"fil": "May iilang mga intsupe (sockets) na maaring gamitin ng mga suki na nakaupo sa loob, pang-karga ng kanilang mga elektroniks"
},
"if": "service:electricity=limited"
},
@ -578,7 +601,8 @@
"zh_Hant": "這邊沒有給客戶用的插座,因此可能需要詢問員工是否能充電",
"hu": "A belső térben nincs konnektor az ügyfeleknek, de lehetséges, hogy a személyzet segítségével lehet elektromos eszközt tölteni",
"pl": "W budynku nie ma gniazdek elektrycznych dostępnych dla klientów, ale mogą zostać one udostępnione po spytaniu obsługi",
"ja": "屋内にはコンセントがありませんが、スタッフに声をかければ充電できるかもしれません"
"ja": "屋内にはコンセントがありませんが、スタッフに声をかければ充電できるかもしれません",
"fil": "Walang mga intsupe (socket) para sa mga suki, pero maaring tanungin ang kawani kung magpapa-karga"
},
"if": "service:electricity=ask"
},
@ -594,7 +618,8 @@
"zh_Hant": "這裡客戶座位沒有室內插座",
"hu": "A belső térben ülő ügyfeleknek nem áll rendelkezésére konnektor",
"pl": "W budynku nie ma gniazdek elektrycznych dostępnych dla klientów",
"ja": "屋内の席には、家庭用コンセントはありません"
"ja": "屋内の席には、家庭用コンセントはありません",
"fil": "Walang mga intsupe (socket) para sa mga suking nakaubo sa loob"
},
"if": "service:electricity=no"
}
@ -618,7 +643,8 @@
"pl": "Jakie metody płatności są tutaj dostępne?",
"ru": "Какие способы оплаты здесь принимают?",
"ja": "どのような支払い方法が可能ですか?",
"sl": "Kateri načini plačila so možni tu?"
"sl": "Kateri načini plačila so možni tu?",
"fil": "Anong mga paraang pambayad ang tinatanggap dito?"
},
"multiAnswer": true,
"mappings": [
@ -643,7 +669,8 @@
"pl": "Płatność gotówkowa jest tutaj dostępna",
"ru": "Здесь принимают наличными",
"ja": "現金利用可能",
"sl": "Tu sprejemajo gotovino"
"sl": "Tu sprejemajo gotovino",
"fil": "Tinatanggap ang salapi rito"
}
},
{
@ -667,7 +694,8 @@
"pl": "Płatność kartą jest tutaj dostępna",
"ru": "Здесь принимают банковские карты",
"ja": "お支払いはこちらで承ります",
"sl": "Tukaj sprejemajo plačilne kartice"
"sl": "Tukaj sprejemajo plačilne kartice",
"fil": "Tinatanggap ang mga tarhetang pambayad dito"
}
}
]
@ -688,7 +716,8 @@
"de": "Die Bezahlung erfolgt über eine spezielle App",
"fr": "Paiement via une application",
"sl": "Plačilo se opravi z namensko aplikacijo",
"ca": "El pagament es fa amb una app dedicada"
"ca": "El pagament es fa amb una app dedicada",
"fil": "Binabayaran gamit ang sariling app"
}
},
{
@ -703,7 +732,8 @@
"de": "Die Bezahlung erfolgt mit einer Mitgliedskarte",
"fr": "Paiement via une carte de membre",
"sl": "Plačilo se izvede s člansko izkaznico",
"ca": "El pagament es fa amb una targeta de membre"
"ca": "El pagament es fa amb una targeta de membre",
"fil": "Binabayaran gamit ang membership card"
}
}
]
@ -734,7 +764,8 @@
"it": "A quale piano si trova questo elemento?",
"ca": "A quina planta està situat aquest element?",
"sv": "På vilken nivå finns den här funktionen?",
"ja": "この機能は何階にあるのでしょうか?"
"ja": "この機能は何階にあるのでしょうか?",
"fil": "Anong palapag matatagpuan ang tampók?"
},
"render": {
"en": "Located on the {level}th floor",
@ -752,7 +783,8 @@
"it": "Si trova al piano numero {level}",
"ca": "Situat a la planta {level}",
"ja": "{level}階にあります",
"sl": "Nahaja se v {level}. nadstropju"
"sl": "Nahaja se v {level}. nadstropju",
"fil": "Natagpuan sa ika-{level} na palapag"
},
"freeform": {
"key": "level",
@ -778,7 +810,8 @@
"ca": "Situat a planta subterrani",
"ja": "地下にあります",
"id": "Terletak di bawah tanah",
"sl": "Nahaja se pod zemljo"
"sl": "Nahaja se pod zemljo",
"fil": "Nasa ilalim ng lupa"
},
"hideInAnswer": true
},
@ -802,7 +835,8 @@
"ca": "Situat a planta zero",
"ja": "1階にあります",
"id": "Terletak di lantai dasar",
"sl": "Nahaja se v pritličju"
"sl": "Nahaja se v pritličju",
"fil": "Nasa unang palapag"
}
},
{
@ -826,7 +860,8 @@
"ca": "Situat a planta zero",
"ja": "1階にあります",
"id": "Terletak di lantai dasar",
"sl": "Nahaja se v pritličju"
"sl": "Nahaja se v pritličju",
"fil": "Nasa unang palapag"
}
},
{
@ -849,7 +884,8 @@
"nb_NO": "I andre etasje",
"ca": "Situat a primera planta",
"ja": "1階にあります",
"sl": "Nahaja se v prvem nadstropju"
"sl": "Nahaja se v prvem nadstropju",
"fil": "Nasa unang palapag"
}
},
{
@ -863,7 +899,8 @@
"id": "Terletak di lantai basement pertama",
"fr": "Sous-sol",
"sl": "Nahaja se v prvi kletni etaži",
"ca": "Localitzat a la planta base"
"ca": "Localitzat a la planta base",
"fil": "Nasa silong"
}
}
]

View file

@ -14,7 +14,8 @@
"zh_Hant": "開放藝術品地圖",
"sv": "Öppen konstverkskarta",
"pl": "Otwórz mapę dzieł sztuki",
"nb_NO": "Kunstkort"
"nb_NO": "Kunstkort",
"ca": "Open Artwork Map"
},
"description": {
"en": "Welcome to Open Artwork Map, a map of statues, busts, grafittis and other artwork all over the world",
@ -29,7 +30,8 @@
"zh_Hant": "歡迎來到開放藝術品地圖,這份地圖會顯示全世界的雕像、半身像、塗鴉以及其他類型的藝術品",
"nb_NO": "Velkommen til det åpne kunstverkskartet, et kart over statuer, byster, grafitti, og andre kunstverk i verden",
"hu": "Isten hozta a nyílt műalkotástérképen, a világ minden táján megtalálható szobrok, mellszobrok, graffitik és más műalkotások gyűjtőhelyén",
"pl": "Witaj w Open Artwork Map, mapie pomników, popierś, graffitti i innych dzieł sztuki z całego świata"
"pl": "Witaj w Open Artwork Map, mapie pomników, popierś, graffitti i innych dzieł sztuki z całego świata",
"ca": "Benvingut a Open Artwork Map, un mapa d'estàtues, busts, grafitis i altres obres d'art del tot el món"
},
"icon": "./assets/themes/artwork/artwork.svg",
"maintainer": "MapComplete",

View file

@ -12,7 +12,8 @@
"nb_NO": "Benker",
"pt_BR": "Bancadas",
"id": "Bangku",
"hu": "Padok"
"hu": "Padok",
"ca": "Bancs"
},
"shortDescription": {
"en": "A map of benches",
@ -26,7 +27,8 @@
"nb_NO": "Et benkekart",
"pt_BR": "Um mapa de bancadas",
"hu": "Padtérkép",
"id": "Peta bangku"
"id": "Peta bangku",
"ca": "Un mapa de bancs"
},
"description": {
"en": "This map shows all benches that are recorded in OpenStreetMap: Individual benches, and benches belonging to public transport stops or shelters. With an OpenStreetMap account, you can map new benches or edit details of existing benches.",
@ -37,7 +39,8 @@
"ru": "На этой карте показаны все скамейки, записанные в OpenStreetMap: отдельные скамейки, а также скамейки, относящиеся к остановкам общественного транспорта или навесам. Имея учётную запись OpenStreetMap, вы можете наносить на карту новые скамейки или редактировать информацию о существующих скамейках.",
"ja": "このマップには、OpenStreetMapに記録されているすべてのベンチが表示されます。個々のベンチ、および公共交通機関の停留所または避難場所に属するベンチです。OpenStreetMapアカウントを使用すると、新しいベンチをマップしたり、既存のベンチの詳細を編集したりできます。",
"zh_Hant": "這份地圖顯示開放街圖上所有記錄的長椅:單獨的長椅,屬於大眾運輸站點或涼亭的長椅。只要有開放街圖帳號,你可以新增長椅或是編輯既有長椅的詳細內容。",
"hu": "Ez a térkép megjeleníti az OpenStreetMap-en rögzített összes padot: egyes padokat, valamint tömegközlekedési megállókban vagy menedékhelyeken található padokat. OpenStreetMap-fiókkal Ön is felrajzolhat új padokat, vagy szerkesztheti a meglévő padok részleteit."
"hu": "Ez a térkép megjeleníti az OpenStreetMap-en rögzített összes padot: egyes padokat, valamint tömegközlekedési megállókban vagy menedékhelyeken található padokat. OpenStreetMap-fiókkal Ön is felrajzolhat új padokat, vagy szerkesztheti a meglévő padok részleteit.",
"ca": "Aquest mapa mostra tots els bancs que hi ha a OpenStreetMap: bancs individuals i els bancs que hi ha a parades o refugis de transport públic. Amb un compte d'OpenStreetMap pots afegir nous bancs o editar detalls dels existents."
},
"maintainer": "Florian Edelmann",
"icon": "./assets/themes/benches/bench_poi.svg",

View file

@ -5,7 +5,8 @@
"nl": "Fietsverhuur",
"de": "Fahrradverleih",
"id": "Sewa sepeda",
"fr": "Location de vélos"
"fr": "Location de vélos",
"ca": "Lloguer de bicicletes"
},
"shortDescription": {
"en": "A map with bicycle rental stations and bicycle rental shops",

View file

@ -13,7 +13,8 @@
"it": "Mappa libera delle microbiblioteche",
"pt_BR": "Abrir Mapa de Estantes",
"nb_NO": "Kart over åpne bokhyller",
"hu": "Könyvespolctérkép"
"hu": "Könyvespolctérkép",
"ca": "Open Bookcase Map"
},
"description": {
"en": "A public bookcase is a small streetside cabinet, box, old phone booth or some other objects where books are stored. Everyone can place or take a book. This map aims to collect all these bookcases. You can discover new bookcases nearby and, with a free OpenStreetMap account, quickly add your favourite bookcases.",

View file

@ -9,12 +9,14 @@
"id": "Kafe dan pub",
"zh_Hant": "咖啡廳與酒吧",
"ru": "Кафе и пабы",
"hu": "Kávézók és kocsmák"
"hu": "Kávézók és kocsmák",
"ca": "Cafés i bars"
},
"description": {
"en": "Pubs and bars",
"nl": "Cafés, kroegen en drinkgelegenheden",
"de": "Kneipen und Bars"
"de": "Kneipen und Bars",
"ca": "Bars i pubs"
},
"maintainer": "",
"icon": "./assets/layers/cafe_pub/pub.svg",

View file

@ -10,7 +10,8 @@
"zh_Hant": "露營地點",
"pt_BR": "Locais de acampamento",
"de": "Wohnmobilstellplätze",
"hu": "Lakóautós megállóhelyek"
"hu": "Lakóautós megállóhelyek",
"ca": "Llocs d'acampada"
},
"shortDescription": {
"en": "Find sites to spend the night with your camper",
@ -57,7 +58,8 @@
"pt_BR": "Locais de acampamento",
"de": "Wohnmobilstellplätze",
"hu": "Lakóautós megállóhely",
"id": "Tempat camping"
"id": "Tempat camping",
"ca": "Llocs d'acampada"
},
"minzoom": 10,
"source": {
@ -113,7 +115,8 @@
"pt_BR": "Locais de acampamento",
"de": "Wohnmobilstellplätze",
"hu": "Lakóautós megállóhelyek",
"id": "Tempat camping"
"id": "Tempat camping",
"ca": "llocs d'acampada"
},
"tagRenderings": [
"images",
@ -353,7 +356,8 @@
"fr": "Il y a un accès internet",
"pt_BR": "Há acesso à internet",
"de": "Internetzugang ist vorhanden",
"nl": "Er is internettoegang"
"nl": "Er is internettoegang",
"ca": "Hi ha accés a internet"
}
},
{
@ -660,7 +664,8 @@
"pt_BR": "uma local de acampamento",
"de": "eine wohnmobilstellplatz",
"nl": "een camperplaats",
"hu": "lakóautós megállóhely"
"hu": "lakóautós megállóhely",
"ca": "un lloc d'acampada"
},
"description": {
"en": "Add a new official camper site. These are designated places to stay overnight with your camper. They might look like a real camping or just look like a parking. They might not be signposted at all, but just be defined in a municipal decision. A regular parking intended for campers where it is not expected to spend the night, is -not- a camper site ",

View file

@ -10,7 +10,8 @@
"de": "Ladestationen",
"nb_NO": "Ladestasjoner",
"ru": "Зарядные станции",
"hu": "Elektromos töltőpontok"
"hu": "Elektromos töltőpontok",
"ca": "Estacions de càrrega"
},
"shortDescription": {
"en": "A worldwide map of charging stations",

View file

@ -10,7 +10,8 @@
"nb_NO": "Åpent klatrekart",
"it": "Mappa aperta per le arrampicate",
"fr": "Open Climbing Map",
"hu": "Mászótérkép"
"hu": "Mászótérkép",
"ca": "Open Climbing Map"
},
"description": {
"nl": "Op deze kaart vind je verschillende klimgelegenheden, zoals klimzalen, bolderzalen en klimmen in de natuur",
@ -665,7 +666,8 @@
"nl": "Klimsite",
"fr": "Site descalade",
"de": "Klettergebiet",
"it": "Sito di arrampicata"
"it": "Sito di arrampicata",
"ca": "Llocs d'escalada"
}
},
{
@ -1116,7 +1118,8 @@
"de": " Meter",
"eo": " metro",
"it": " metri",
"ru": " метр"
"ru": " метр",
"ca": " metre"
},
"default": true
},
@ -1132,7 +1135,8 @@
"fr": " pieds",
"de": " Fuß",
"eo": " futo",
"it": " piedi"
"it": " piedi",
"ca": " peus"
}
}
]
@ -1245,7 +1249,8 @@
"en": "Only customers",
"fr": "Réservé aux clients",
"de": "Nur für Kunden",
"it": "Riservato ai clienti"
"it": "Riservato ai clienti",
"ca": "Només clients"
}
},
{
@ -1255,7 +1260,8 @@
"ru": "Только членам клуба",
"fr": "Réservé aux membres",
"de": "Nur für Vereinsmitglieder",
"it": "Riservato ai membri del club"
"it": "Riservato ai membri del club",
"ca": "Només membres del club"
}
},
{

View file

@ -3,7 +3,8 @@
"title": {
"en": "Cycle highways",
"de": "Radschnellwege",
"it": "Strade per velocipedi"
"it": "Strade per velocipedi",
"ca": "Vies ciclistes"
},
"hideFromOverview": true,
"maintainer": "L'imaginaire",
@ -99,7 +100,8 @@
],
"name": {
"en": "cycle highways",
"de": "Radschnellwege"
"de": "Radschnellwege",
"ca": "vies ciclistes"
},
"source": {
"osmTags": "cycle_network=BE-VLG:cycle_highway"
@ -108,7 +110,8 @@
"title": {
"render": {
"en": "cycle highway",
"de": "Radschnellweg"
"de": "Radschnellweg",
"ca": "via ciclista"
}
},
"filter": [

View file

@ -8,7 +8,8 @@
"nb_NO": "Sykkelinfrastruktur",
"ru": "Велосипедная инфраструктура",
"zh_Hant": "單車設施",
"hu": "Kerékpáros infrastruktúra"
"hu": "Kerékpáros infrastruktúra",
"ca": "Infraestructura per a bicicletes"
},
"shortDescription": {
"en": "A map where you can view and edit things related to the bicycle infrastructure.",

View file

@ -91,7 +91,8 @@
"id": "node",
"name": {
"en": "nodes",
"de": "Knotenpunkte"
"de": "Knotenpunkte",
"ca": "nodes"
},
"source": {
"osmTags": {

View file

@ -9,7 +9,8 @@
"de": "Fahrradstraßen",
"it": "Strade ciclabili",
"nb_NO": "Sykkelgater",
"hu": "Kerékpárosutcák"
"hu": "Kerékpárosutcák",
"ca": "Carrers ciclistes"
},
"shortDescription": {
"nl": "Een kaart met alle gekende fietsstraten",
@ -19,7 +20,8 @@
"nb_NO": "Et kart over sykkelveier",
"de": "Eine Karte von Fahrradstraßen",
"it": "Una cartina per le strade ciclabili",
"hu": "Kerékpárosutcák térképe"
"hu": "Kerékpárosutcák térképe",
"ca": "Un mapa de carrers ciclistes"
},
"description": {
"nl": "Een fietsstraat is een straat waar <ul><li><b>automobilisten geen fietsers mogen inhalen</b></li><li>Er een maximumsnelheid van <b>30km/u</b> geldt</li><li>Fietsers gemotoriseerde voertuigen links mogen inhalen</li><li>Fietsers nog steeds voorrang aan rechts moeten verlenen - ook aan auto's en voetgangers op het zebrapad</li></ul><br/><br/>Op deze open kaart kan je alle gekende fietsstraten zien en kan je ontbrekende fietsstraten aanduiden. Om de kaart aan te passen, moet je je aanmelden met OpenStreetMap en helemaal inzoomen tot straatniveau. ",
@ -52,7 +54,8 @@
"de": "Fahrradstraßen",
"nb_NO": "Sykkelgater",
"ru": "Cyclestreets",
"hu": "Kerékpárosutcák"
"hu": "Kerékpárosutcák",
"ca": "Carrers ciclistes"
},
"minzoom": 7,
"source": {
@ -106,7 +109,8 @@
"nb_NO": "Fremtidig sykkelvei",
"it": "Futura strada ciclabile",
"de": "Zukünftige Fahrradstraßen",
"hu": "Jövőbeli kerékpárosutca"
"hu": "Jövőbeli kerékpárosutca",
"ca": "Futur carrer ciclista"
},
"description": {
"nl": "Deze straat wordt binnenkort een fietsstraat",
@ -129,7 +133,8 @@
"nb_NO": "Fremtidig sykkelvei",
"it": "Futura strada ciclabile",
"de": "Zukünftige Fahrradstraße",
"hu": "Jövőbeli kerékpárosutca"
"hu": "Jövőbeli kerékpárosutca",
"ca": "Futur carrer ciclista"
},
"mappings": [
{
@ -173,7 +178,8 @@
"ru": "Все улицы",
"de": "Alle Straßen",
"eo": "Ĉiuj stratoj",
"hu": "Minden utca"
"hu": "Minden utca",
"ca": "Tots els carrers"
},
"description": {
"nl": "Laag waar je een straat als fietsstraat kan markeren",
@ -204,7 +210,8 @@
"de": "Straße",
"eo": "Strato",
"nb_NO": "Gate",
"hu": "Utca"
"hu": "Utca",
"ca": "Carrer"
},
"mappings": [
{

View file

@ -10,7 +10,8 @@
"it": "Acqua potabile",
"de": "Trinkwasserstellen",
"nb_NO": "Drikkevann",
"hu": "Ivóvíz"
"hu": "Ivóvíz",
"ca": "Aigua potable"
},
"description": {
"en": "On this map, publicly accessible drinking water spots are shown and can be easily added",

View file

@ -5,7 +5,8 @@
"zh_Hant": "出入口",
"hu": "Épületek bejáratai",
"de": "Eingänge",
"nl": "Toegangsdeuren"
"nl": "Toegangsdeuren",
"ca": "Entrades"
},
"icon": "./assets/layers/entrance/door.svg",
"description": {

View file

@ -8,7 +8,8 @@
"ru": "Открытая этимологическая карта",
"zh_Hant": "開放詞源地圖",
"hu": "Etimológiai térkép",
"fr": "Open Etymology Map"
"fr": "Open Etymology Map",
"ca": "Open Etymology Map"
},
"shortDescription": {
"en": "What is the origin of a toponym?",

View file

@ -8,7 +8,8 @@
"it": "Giardini verticali",
"fr": "Facade gardens",
"de": "Fassadengärten",
"hu": "Homlokzati kertek"
"hu": "Homlokzati kertek",
"ca": "Jardins verticals"
},
"shortDescription": {
"nl": "Deze kaart toont geveltuintjes met foto's en bruikbare info over oriëntatie, zonlicht en planttypes.",
@ -47,7 +48,8 @@
"fr": "Jardins muraux",
"de": "Fassadengärten",
"it": "Giardini verticali",
"hu": "Homlokzati kertek"
"hu": "Homlokzati kertek",
"ca": "Jardins verticals"
},
"minzoom": 12,
"source": {
@ -67,7 +69,8 @@
"fr": "Jardin mural",
"de": "Fassadengarten",
"it": "Giardino verticale",
"hu": "Homlokzati kert"
"hu": "Homlokzati kert",
"ca": "Jardí vertical"
}
},
"description": {
@ -78,7 +81,8 @@
"fr": "Jardins muraux",
"de": "Fassadengärten",
"it": "Giardini verticali",
"hu": "Homlokzati kertek"
"hu": "Homlokzati kertek",
"ca": "Jardins verticals"
},
"tagRenderings": [
"images",
@ -400,7 +404,8 @@
"it": "una giardino verticale",
"fr": "une jardin mural",
"de": "eine fassadengarten",
"hu": "homlokzatkert"
"hu": "homlokzatkert",
"ca": "un jardí vertical"
},
"description": {
"nl": "Voeg geveltuintje toe",
@ -409,7 +414,8 @@
"it": "Aggiungi un giardino verticale",
"fr": "Ajouter un jardin mural",
"de": "Einen Fassadengarten hinzufügen",
"hu": "Homlokzatkert hozzáadása"
"hu": "Homlokzatkert hozzáadása",
"ca": "Afegeix un jardí vertical"
}
}
],

View file

@ -7,7 +7,8 @@
"it": "Ristoranti e fast food",
"nb_NO": "Restauranter og søppelmat",
"zh_Hant": "餐廳與快餐店",
"hu": "Éttermek és büfék"
"hu": "Éttermek és büfék",
"ca": "Restaurants i menjar ràpid"
},
"description": {
"nl": "Restaurants en fast food",

View file

@ -4,7 +4,8 @@
"nl": "Friturenkaart",
"en": "Fries shops",
"fr": "Carte des friteries",
"de": "Pommes-frites-Läden"
"de": "Pommes-frites-Läden",
"ca": "Botigues de patates"
},
"description": {
"en": "On this map, you'll find your favourite fries shop!",
@ -29,7 +30,8 @@
"fr": "Friteries",
"de": "Pommesbude",
"it": "Friggitoria",
"hu": "Sültkrumplievő-hely"
"hu": "Sültkrumplievő-hely",
"ca": "Botigues de patates"
},
"=presets": [],
"source": {

View file

@ -61,7 +61,8 @@
"de": " {name}",
"ru": " {name}",
"zh_Hant": " {name}",
"hu": " {name}"
"hu": " {name}",
"ca": " {name}"
}
}
]
@ -136,7 +137,8 @@
"en": "{opening_hours_table()}",
"de": "{opening_hours_table()}",
"ru": "{opening_hours_table()}",
"zh_Hant": "{opening_hours_table()}"
"zh_Hant": "{opening_hours_table()}",
"ca": "{opening_hours_table()}"
},
"mappings": [
{
@ -149,7 +151,8 @@
"en": "Opened 24/7",
"de": "durchgehend geöffnet",
"ru": "Открыто 24/7",
"zh_Hant": "24/7 營業"
"zh_Hant": "24/7 營業",
"ca": "Obert 24/7"
}
}
],

View file

@ -22,7 +22,8 @@
{
"id": "mapcomplete-changes",
"name": {
"en": "Changeset centers"
"en": "Changeset centers",
"de": "Schwerpunkte von Änderungssätzen"
},
"minzoom": 0,
"source": {
@ -58,13 +59,15 @@
{
"id": "theme",
"render": {
"en": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
"en": "Change with theme <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>",
"de": "Änderung mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
},
"mappings": [
{
"if": "theme~http.*",
"then": {
"en": "Change with <b>unofficial</b> theme <a href='https://mapcomplete.osm.be/theme.html?userlayout={theme}'>{theme}</a>"
"en": "Change with <b>unofficial</b> theme <a href='https://mapcomplete.osm.be/theme.html?userlayout={theme}'>{theme}</a>",
"de": "Änderung mit <b>inoffiziellem</b> Thema <a href='https://mapcomplete.osm.be/theme.html?userlayout={theme}'>{theme}</a>"
}
}
]

View file

@ -10,7 +10,8 @@
"de": "Eine Karte der Karten",
"eo": "Mapo de mapoj",
"it": "Una mappa di mappe",
"nb_NO": "Et kart over kart"
"nb_NO": "Et kart over kart",
"ca": "Un mapa de mapes"
},
"shortDescription": {
"en": "This theme shows all (touristic) maps that OpenStreetMap knows of",

View file

@ -3,7 +3,8 @@
"title": {
"en": "Into nature",
"nl": "De Natuur in",
"de": "In die Natur"
"de": "In die Natur",
"ca": "A la natura"
},
"shortDescription": {
"en": "A map for nature lovers, with interesting POI's",

View file

@ -8,7 +8,8 @@
"en": "Notes on OpenStreetMap",
"hu": "Jegyzetek az OpenStreetMapen",
"nl": "Kaartnotas op OpenStreetMap",
"de": "Notizen von OpenStreetMap"
"de": "Notizen von OpenStreetMap",
"ca": "Notes a OpenStreetMap"
},
"version": "0.1",
"description": {

View file

@ -7,7 +7,8 @@
"it": "Torri di osservazione",
"ru": "Смотровые башни",
"zh_Hant": "觀景塔",
"hu": "Kilátótornyok"
"hu": "Kilátótornyok",
"ca": "Torres d'observació"
},
"shortDescription": {
"en": "Publicly accessible towers to enjoy the view",

View file

@ -9,7 +9,8 @@
"zh_Hant": "開放風力地圖",
"id": "OpenWindPowerMap",
"hu": "OpenWindPowerMap",
"nl": "Windmolens"
"nl": "Windmolens",
"ca": "OpenWindPowerMap"
},
"maintainer": "Seppe Santens",
"icon": "./assets/themes/openwindpowermap/logo.svg",
@ -66,7 +67,8 @@
"ru": "{name}",
"zh_Hant": "{name}",
"id": "{name}",
"de": "{name}"
"de": "{name}",
"ca": "{name}"
}
}
]
@ -232,7 +234,8 @@
"ru": " мегаватт",
"zh_Hant": " 百萬瓦",
"id": " megawat",
"hu": " megawatt"
"hu": " megawatt",
"ca": " megavats"
}
},
{
@ -252,7 +255,8 @@
"ru": " киловатт",
"zh_Hant": " 千瓦",
"id": " kilowat",
"hu": " kilowatt"
"hu": " kilowatt",
"ca": " quilovats"
}
},
{
@ -271,7 +275,8 @@
"ru": " ватт",
"zh_Hant": " 瓦",
"id": " watt",
"hu": " watt"
"hu": " watt",
"ca": " vats"
}
},
{
@ -290,7 +295,8 @@
"ru": " гигаватт",
"zh_Hant": " 千兆瓦",
"id": " gigawatt",
"hu": " gigawatt"
"hu": " gigawatt",
"ca": " gigavats"
}
}
],
@ -317,7 +323,8 @@
"ru": " метр",
"zh_Hant": " 公尺",
"id": " meter",
"hu": " méter"
"hu": " méter",
"ca": " metre"
}
}
]

View file

@ -11,7 +11,8 @@
"it": "Parchi giochi",
"nb_NO": "Lekeplasser",
"id": "Taman bermain",
"hu": "Játszóterek"
"hu": "Játszóterek",
"ca": "Parcs infantils"
},
"shortDescription": {
"nl": "Een kaart met speeltuinen",
@ -24,7 +25,8 @@
"it": "Una cartina dei parchi giochi",
"nb_NO": "Et kart med lekeplasser",
"id": "Peta dengan taman bermain",
"hu": "Egy térkép játszóterekkel"
"hu": "Egy térkép játszóterekkel",
"ca": "Un mapa de parcs infantils"
},
"description": {
"nl": "Op deze kaart vind je speeltuinen en kan je zelf meer informatie en foto's toevoegen",

View file

@ -4,19 +4,22 @@
"en": "Postal codes",
"id": "Kode pos",
"hu": "Irányítószámok",
"de": "Postleitzahlen"
"de": "Postleitzahlen",
"ca": "Codis postals"
},
"shortDescription": {
"en": "Postal codes",
"id": "Kode pos",
"hu": "Irányítószámok",
"de": "Postleitzahlen"
"de": "Postleitzahlen",
"ca": "Codis postals"
},
"description": {
"en": "Postal codes",
"id": "Kode pos",
"hu": "Irányítószámok",
"de": "Postleitzahlen"
"de": "Postleitzahlen",
"ca": "Codis postals"
},
"maintainer": "",
"icon": "./assets/themes/postal_codes/townhall.svg",
@ -35,7 +38,8 @@
"en": "postal codes",
"id": "kode pos",
"hu": "irányítószámok",
"de": "Postleitzahlen"
"de": "Postleitzahlen",
"ca": "codis postals"
},
"minzoom": 8,
"title": {
@ -124,7 +128,8 @@
"en": "town halls",
"id": "balai kota",
"hu": "polgármesteri hivatalok",
"de": "Rathäuser"
"de": "Rathäuser",
"ca": "ajuntaments"
},
"minzoom": 12,
"title": {

View file

@ -45,7 +45,8 @@
"zh_Hant": "郵筒",
"id": "Kotak pos",
"hu": "Postaládák",
"nl": "Brievenbussen"
"nl": "Brievenbussen",
"ca": "Bústies"
},
"minzoom": 12,
"source": {
@ -59,7 +60,8 @@
"zh_Hant": "郵筒",
"id": "Kotak pos",
"hu": "Postaláda",
"nl": "Brievenbus"
"nl": "Brievenbus",
"ca": "Bústia"
}
},
"description": {
@ -89,7 +91,8 @@
"zh_Hant": "郵筒",
"id": "kotak pos",
"hu": "postaláda",
"nl": "een brievenbus"
"nl": "een brievenbus",
"ca": "una bústia"
}
}
],
@ -133,7 +136,8 @@
"zh_Hant": "郵局",
"id": "Kantor pos",
"hu": "Posták",
"nl": "Postkantoren"
"nl": "Postkantoren",
"ca": "Oficines de correus"
},
"minzoom": 12,
"source": {
@ -147,7 +151,8 @@
"zh_Hant": "郵局",
"id": "Kantor Pos",
"hu": "Posta",
"nl": "Postkantoor"
"nl": "Postkantoor",
"ca": "Oficina de correus"
}
},
"description": {
@ -211,7 +216,8 @@
"zh_Hant": "郵局",
"id": "Kantor Pos",
"hu": "Posta",
"nl": "een postkantoor"
"nl": "een postkantoor",
"ca": "una oficina de correus"
}
}
],
@ -226,7 +232,8 @@
"zh_Hant": "目前開放",
"id": "Saat ini buka",
"hu": "Most nyitva",
"nl": "Momenteel geopend"
"nl": "Momenteel geopend",
"ca": "Actualment obert"
},
"osmTags": "_isOpen=yes"
}

View file

@ -10,7 +10,8 @@
"it": "Mappa dei negozi",
"nb_NO": "Kart over åpne butikker",
"hu": "Bolttérkép",
"nl": "Winkels"
"nl": "Winkels",
"ca": "Open Shop Map"
},
"shortDescription": {
"en": "An editable map with basic shop information",

View file

@ -4,15 +4,18 @@
"en": "Sidewalks",
"ru": "Тротуары",
"nl": "Voetpaden",
"de": "Gehwege"
"de": "Gehwege",
"ca": "Voreres"
},
"shortDescription": {
"en": "Sidewalk mapping",
"ca": "Mapejat de voreres",
"de": "Kartierung von Bürgersteigen"
},
"description": {
"en": "Experimental theme",
"ru": "Экспериментальная тема",
"ca": "Petició experimental",
"de": "Experimentelles Thema"
},
"maintainer": "",
@ -29,7 +32,8 @@
"name": {
"en": "Sidewalks",
"ru": "Тротуары",
"de": "Gehweg"
"de": "Gehweg",
"ca": "Voreres"
},
"minzoom": 12,
"source": {
@ -46,7 +50,8 @@
"render": {
"en": "{name}",
"ru": "{name}",
"de": "{name}"
"de": "{name}",
"ca": "{name}"
},
"mappings": [
{

View file

@ -9,7 +9,8 @@
"ru": "Спортивные площадки",
"de": "Sportplätze",
"it": "Campi sportivi",
"hu": "Sportpályák"
"hu": "Sportpályák",
"ca": "Camps d'esports"
},
"shortDescription": {
"nl": "Deze kaart toont sportvelden",

View file

@ -8,7 +8,8 @@
"ru": "Уличное освещение",
"zh_Hant": "道路照明",
"hu": "Közvilágítás",
"de": "Straßenbeleuchtung"
"de": "Straßenbeleuchtung",
"ca": "Il·luminació als carrers"
},
"description": {
"en": "On this map you can find everything about street lighting",
@ -30,7 +31,8 @@
"nl": "Verlichte straten",
"zh_Hant": "有照明的道路",
"hu": "Kivilágított utcák",
"de": "Beleuchtete Straßen"
"de": "Beleuchtete Straßen",
"ca": "Il·luminació de carrers"
},
"source": {
"osmTags": {
@ -49,7 +51,8 @@
"nl": "Verlichte straat",
"zh_Hant": "照明道路",
"hu": "Kivilágított utca",
"de": "Bleuchtete Straße"
"de": "Bleuchtete Straße",
"ca": "Il·luminació del carrer"
},
"mappings": [
{
@ -128,7 +131,8 @@
"ru": "Все улицы",
"zh_Hant": "所有道路",
"hu": "Minden utca",
"de": "Alle Straßen"
"de": "Alle Straßen",
"ca": "Tots els carrers"
},
"source": {
"osmTags": {
@ -147,7 +151,8 @@
"ru": "Улица",
"zh_Hant": "照明",
"hu": "Utca",
"de": "Straße"
"de": "Straße",
"ca": "Carrer"
},
"mappings": [
{

View file

@ -8,7 +8,8 @@
"fr": "Surveillance",
"de": "Überwachung unter Überwachung",
"it": "Sorveglianza sotto controllo",
"hu": "Megfigyelt térfigyelés"
"hu": "Megfigyelt térfigyelés",
"ca": "Vigilància sota vigilància"
},
"shortDescription": {
"en": "Surveillance cameras and other means of surveillance",

View file

@ -11,7 +11,8 @@
"pl": "Mapa otwartych toalet",
"it": "Mappa libera delle toilet",
"nb_NO": "Åpent toalettkart",
"hu": "WC-térkép"
"hu": "WC-térkép",
"ca": "Open Toilet Map"
},
"description": {
"en": "A map of public toilets",

View file

@ -12,7 +12,8 @@
"de": "Bäume",
"nb_NO": "Trær",
"id": "Pohon",
"hu": "Fatérkép"
"hu": "Fatérkép",
"ca": "Arbres"
},
"shortDescription": {
"nl": "Breng bomen in kaart",
@ -25,7 +26,8 @@
"pl": "Sporządzić mapę wszystkich drzew",
"de": "Kartieren Sie alle Bäume",
"nb_NO": "Kartlegg alle trærne",
"hu": "Az összes fa feltérképezése"
"hu": "Az összes fa feltérképezése",
"ca": "Mapeja tots els arbres"
},
"description": {
"nl": "Breng bomen in kaart!",
@ -37,7 +39,8 @@
"ru": "Нанесите все деревья на карту!",
"de": "Kartieren Sie alle Bäume!",
"nb_NO": "Kartlegg trærne.",
"hu": "Térképezzünk fel minden fát!"
"hu": "Térképezzünk fel minden fát!",
"ca": "Mapeja tots els arbres."
},
"maintainer": "Midgard",
"icon": "./assets/themes/trees/logo.svg",

View file

@ -5,7 +5,8 @@
"title": {
"en": "Waste",
"nl": "Afval",
"de": "Abfall"
"de": "Abfall",
"ca": "Brossa"
},
"description": {
"en": "Map showing waste baskets and recycling facilities.",

View file

@ -7,7 +7,8 @@
"it": "Cestino dei rifiuti",
"zh_Hant": "垃圾筒",
"hu": "Kukatérkép",
"id": "Keranjang Sampah"
"id": "Keranjang Sampah",
"ca": "Papepera"
},
"shortDescription": {
"en": "A map with waste baskets",

View file

@ -19,7 +19,7 @@
"loading": "Inspeccionant propietats per si aquest element pot ser esborrat.",
"loginToDelete": "Has d'entrar per esborrar un punt",
"notEnoughExperience": "Aquest punt l'ha fet una altra persona.",
"onlyEditedByLoggedInUser": "Aquest punt només pot ser editat per tu, el pots esborrar amb seguretat.",
"onlyEditedByLoggedInUser": "Aquest punt només l'has editat tu, el pots esborrar amb seguretat.",
"partOfOthers": "Aquest punt és part d'una via o relació i no es pot esborrar directament.",
"readMessages": "Tens missatges sense llegir. Llegeix això abans d'esborrar un punt - algú potser t'ha escrit",
"reasons": {
@ -50,6 +50,7 @@
"hasBeenImported": "Aquest punt ja ha estat importat",
"import": {
"hasBeenImported": "Aquest objecte ha estat importat",
"howToTest": "Per provar, afegeix <b>test=true</b> o <b>backend=osm-test</b> a l'URL. El conjunt de canvis s'imprimirà a la consola. Obre un PR per oficialitzar aquesta petició per activar realment el botó d'importació.",
"importTags": "L'element rebrà {tags}",
"officialThemesOnly": "El botó d'importació està desactivat per a temes no oficials per evitar accidents",
"wrongType": "Aquest element no és un punt o una via i no pot ser importat",
@ -258,6 +259,7 @@
"ccb": "sota la llicència CC-BY",
"ccbExplanation": "La llicència CC-BY implica que qualsevol persona pot utilitzar la teva imatge per a qualsevol propòsit, però t'ha d'atribuir",
"ccbs": "sota llicència CC-BY-SA",
"ccbsExplanation": "La llicència CC-BY-SA implica que qualsevol persona pot utilitzar la teva imatge per a qualsevol propòsit, però t'ha d'atribuir i les modificacions de la imatge s'han de tornar a publicar sota la mateixa llicència",
"cco": "en domini públic",
"ccoExplanation": "Afegir una imatge al domini públic implica que qualsevol pot fer qualsevol cosa amb la teva imatge",
"doDelete": "Esborrar imatge",
@ -275,6 +277,8 @@
},
"importHelper": {
"allAttributesSame": "Totes les funcions a importar tenen aquesta etiqueta",
"description": "L'ajudant d'importació converteix un conjunt de dades extern en notes. El conjunt de dades extern ha de coincidir amb una de les capes MapComplete existents. Per a cada article que introdueixes a l'importador, es crearà una nota única. Aquestes notes es mostraran juntament amb les característiques rellevants en aquests mapes per afegir-les fàcilment.",
"importFormat": "Un text d'una nota ha de tenir el format següent per poder ser recollit: <br><div class=\"literal-code\">[Una petita introducció]<br>https://mapcomplete.osm.be /[themename].html?[paràmetres com ara lat i lon]#import<br>[totes les etiquetes de la funció] </div>",
"inspectDataTitle": "Inspecciona les dades de {count} funcions per importar",
"inspectDidAutoDected": "La capa es va seleccionar automàticament",
"inspectLooksCorrect": "Aquests valors semblen correctes",
@ -286,6 +290,7 @@
"mapPreview": {
"autodetected": "La capa es va deduir automàticament en funció de les propietats",
"confirm": "Les característiques es troben a la ubicació correcta del mapa",
"mismatch": "{count} característiques no coincideixen amb la capa seleccionada. Assegura't que hi hagi les etiquetes per indicar el tipus, és a dir, {tags}",
"selectLayer": "Amb quina capa coincideix aquesta importació?",
"title": "Vista prèvia del mapa"
},
@ -297,6 +302,8 @@
"errNotFeatureCollection": "El fitxer JSON carregat no és una col·lecció de funcions geojson",
"errPointsOnly": "El fitxer JSON carregat només hauria de contenir punts",
"fileFormatDescription": "Selecciona un fitxer <b class=\"code\">.csv</b> o un fitxer <b class=\"code\">.geojson</b>",
"fileFormatDescriptionCsv": "Al fitxer CSV, hi hauria d'haver una columna <span class=\"literal-code\">lat</span> i <span class=\"literal-code\">lon</span> amb les coordenades a WGS84. Hi hauria d'haver una columna addicional per a cada atribut.",
"fileFormatDescriptionGeoJson": "Al fitxer geojson només haurien d'estar presents els punts. Les propietats haurien de ser exactament aquelles propietats que haurien d'anar a OpenStreetMap",
"loadedFilesAre": "L'arxiu carregat actualment és {file}",
"noFilesLoaded": "No s'ha carregat cap arxiu",
"title": "Seleccionar arxiu"
@ -383,35 +390,51 @@
"warnAnonymous": "No has entrat. No podrem contactar amb tu per resoldre el problema."
},
"privacy": {
"editing": "Quan facis un canvi al mapa, aquest canvi es registra a OpenStreetMap i està disponible públicament per a tothom. Un conjunt de canvis fet amb MapComplete inclou les dades següents: <ul><li>Els canvis que has fet</li><li>El teu nom d'usuari</li><li>Quan es fa aquest canvi</li><li>La petició que vas utilitzar mentre feies el canvi</li><li>L'idioma de la interfície d'usuari</li><li>Una indicació de la proximitat a la que estaves dels objectes canviats. Altres mapejadors poden utilitzar aquesta informació per determinar si es va fer un canvi basant-se en una enquesta o en una investigació remota</li></ul> Consulta <a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\">la política de privadesa a OpenStreetMap.org</a> per obtenir informació detallada. Ens agradaria recordar-te que pots utilitzar un nom de ficció quan et registris.",
"editingTitle": "Quan es facin canvis",
"geodata": "Quan MapComplete obté la geolocalització, aquesta i les ubicacions visitades anteriorment romandran al teu dispositiu. Les teves dades d'ubicació mai s'envien automàticament a cap altre lloc, tret que alguna funcionalitat indiqui clarament el contrari.",
"geodataTitle": "La teva geoclocalització",
"intro": "La privadesa és important, tant per a l'individu com per a la societat. MapComplete intenta respectar la vostra privadesa tant com sigui possible, fins al punt que no es necessita cap banner de galetes molest. No obstant això, encara volem informar-vos quina informació es recopila i es comparteix, en quines circumstàncies i per què es fan aquestes compensacions.",
"miscCookies": "MapComplete s'integra amb diversos altres serveis, especialment per carregar imatges de característiques. Les imatges s'allotgen en diversos servidors de tercers, que poden establir galetes per si mateixos.",
"miscCookiesTitle": "Altres galetes",
"surveillance": "Mentre llegeixes la política de privadesa, probablement t'interessa la privadesa, a nosaltres també! Fins i tot hem creat <a href=\"https://mapcomplete.osm.be/surveillance\">una petició que mostra les càmeres de vigilància.</a> No dubtis a mapejar-les totes.",
"title": "Política de privacitat",
"tracking": "Per obtenir informació sobre qui visita el nostre lloc web, es recopila informació tècnica. S'inclou el país des del qual has visitat la pàgina web, quin lloc web t'ha remès a MapComplete, el tipus de dispositiu i la mida de la pantalla. Es col·loca una galeta al teu dispositiu per indicar que has visitat MapComplete avui. Aquestes dades no són prou detallades per identificar-te personalment. Aquestes estadístiques només estan disponibles per a tothom en conjunt i estan <a href=\"https://pietervdvn.goatcounter.com\" target=\"_blank\">disponibles públicament per a tothom</a>",
"trackingTitle": "Dades estadístiques",
"whileYoureHere": "Et preocupa la privacitat?"
},
"professional": {
"aboutMc": {
"internalUse": {
"intro": "<p>Un cop les dades estiguin a l'OpenStreetMap, probablement voldràs utilitzar-les també. El teu MapComplete pot tenir un còmode botó d'<i>exportació</i>, que t'ofereix la possibilitat de baixar les dades en molts formats oberts utilitzables a QGis, ArcGis, Excel, LibreOffice-calc,...</p><p>Algú Així, amb habilitats bàsiques de full de càlcul, poden crear fàcilment gràfics i coneixements sobre les dades, mentre que els experts en GIS de la teva organització poden treballar fàcilment amb aquestes dades a la seva aplicació preferida.</p><p>Si es necessita una configuració automatitzada, hi ha disponible una API d'ús lliure i gestionada per la comunitat.</p>",
"title": "Ús de les dades en processos interns"
},
"layers": {
"intro": "<p>MapComplete té un potent sistema de plantilles, que permet crear ràpidament un mapa que mostri precisament les característiques que necessitis i que mostri els atributs rellevants a les finestres emergents.</p><p>Aquestes dades es poden obtenir des d'<b>OpenStreetMap&lt; /b&gt; directament, però MapComplete també pot utilitzar <b>conjunts de dades externs</b>, p. per comparar OpenStreetMap amb un altre conjunt de dades o per mostrar dades que no són adequades per a OpenStreetMap (activitats planificades, estadístiques, ...)</b></p>",
"title": "Quines dades es poden mostrar amb MapComplete?"
},
"survey": {
"intro": "<p>MapComplete és una eina de<i>sondeig</i> fàcil d'utilitzar. És ideal per recollir el necessari en pocs clics, tant a l'escriptori com al mòbil. Aquestes dades s'aporten directament a OpenStreetMap.</p><p>Podem configurar una <b>eina d'enquesta personalitzada</b>, demanant-nos precisament les dades que necessitis.</p><p> Tens un conjunt de dades que s'hagi de (re)actualitzar? Aquest és el moment perfecte per canviar a OpenStreetMap. MapComplete pot mostrar el teu conjunt de dades i OpenStreetMap alhora, facilitant la visita a totes les ubicacions i veure què ja s'ha aportat a la comunitat.</p>\n",
"title": "Possibilitats d'enquesta"
},
"text0": "Si hi ha una petició de MapComplete existent, no dubtis a utilitzar-la o inserir-la al lloc web. Incrustar les peticions públiques és gratuït i sempre ho serà.",
"text1": "Necessites altres dades, però la petició encara no existeix? Els desenvolupadors de MapComplete poden <b>crear-lo per a tu</b> amb un pressupost decent. Posa't en contacte amb el <a href=\"mailto:pietervdvn@posteo.net\">correu electrònic</a>, <a href=\"https://github.com/pietervdvn/MapComplete/issues\">github</a> o <a href=\"https://www.openstreetmap.org/message/new/Pieter%20Vander%20Vennet\">envia un missatge a través de osm.org</a>",
"text2": "Si encara no et sents segur, les possibilitats es descriuen a continuació. A més, es responen algunes preguntes habituals",
"title": "Utilitzar MapComplete a la teva organització"
},
"aboutOsm": {
"aboutOsm": {
"intro": "OpenStreetMap és una base de dades global compartida, creada per voluntaris. Totes les geodades es poden aportar a OpenStreetMap, sempre que <b>es puguin verificar sobre el terreny</b>.<br> OpenStreetMap s'ha convertit en un conjunt de dades molt ampli i profund, ja que conté dades de milers de categories de objectes. Un objecte individual també pot tenir un munt d'atributs, aportant molts matisos, per exemple:",
"li0": "Els carrers tenen geometria, però també poden tenir informació sobre la velocitat màxima, la superfície, si estan il·luminats, el seu nom, un enllaç a la Viquipèdia, un enllaç al nom que reben, quines rutes de senderisme, bicicletes i autobús hi circulen, …",
"li1": "Les botigues i altres serveis poden tenir un horari d'obertura, un número de telèfon, un enllaç al lloc web, quines formes de pagament s'admeten, què venen, quins serveis ofereixen, …",
"li2": "Els lavabos poden tenir informació sobre l'accessibilitat per a cadira de rodes, un canviador, si cal pagar, …",
"li3": "i molt, molt més…",
"title": "Què és OpenStreetMap?"
},
"benefits": {
"intro": "Pot ser molt difícil deixar el teu propi conjunt de dades enrere, ja que la creació d'aquest conjunt de dades sovint necessitava molt de temps i esforç.<br>No obstant això, els avantatges de canviar a OSM són enormes:",
"li0": "Ja no estàs sol per reunir i mantenir aquest conjunt de dades: tota una comunitat està al teu costat",
"li1": "Les teves dades arribaran a un públic més gran que mai a través de Bing Maps, Apple Maps, Facebook, Instagram, Pokemon Go, OsmAnd, Organic Maps, Maps.me, Mapbox, Komoot, gairebé totes les aplicacions de cicle, …",
"li2": "Moltes organitzacions governamentals i municipis també utilitzen OpenStreetMap als seus llocs web",
"title": "Beneficis de l'ecosistema OSM"
},
@ -423,6 +446,7 @@
"title": "La llicència"
},
"vandalism": {
"intro": "Com qualsevol persona pot editar les dades, és possible que es faci un canvi maliciós. Tanmateix, això és extremadament rar per alguns motius:",
"li0": "la barrera tècnica per fer canvis és alta",
"li1": "un petit canvi maliciós té un impacte baix, per tant, poca recompensa per a un vàndal",
"li2": "un canvi d'alt impacte es nota ràpidament i es reverteix ja que molta gent utilitza aquestes dades",
@ -437,12 +461,15 @@
"intro": "OpenStreetMap té llicència sota la llicència de base de dades oberta que estableix que:",
"li0": "Totes les dades es poden reutilitzar per a qualsevol finalitat, incloses les comercials",
"li1": "Les aplicacions o productes que utilitzen OpenStreetMap haurien de donar un avís clar de drets d'autor",
"li2": "Qualsevol conjunt de dades o producte que contingui dades d'OpenStreetMap també s'ha de tornar a publicar sota ODbL, incloses les modificacions d'aquest conjunt de dades i en un format utilitzable.",
"outro": "Això té algunes implicacions que s'han de tenir en compte per a alguns casos d'ús, tal com s'explica a continuació",
"title": "Implicacions de l'ODbL: alguns casos d'ús",
"usecaseGatheringOpenData": {
"intro": "MapComplete és una excel·lent manera de crear dades obertes, també per als governs. Per defecte, aquestes dades seran redistribuïbles lliurement sota l'ODbL. No obstant això, si hi ha un requisit per publicar les dades recopilades sota una llicència de <i>domini públic</i> (on <b>tots</b> els drets es concedeixen al públic i no es requereix cap atribució), l'ODbL és massa restrictiu. En aquest cas, es pot demanar als col·laboradors que afegeixin dades com a domini públic (per exemple, informant-los en la petició de Mapcomplete).",
"title": "Aconseguint dades obertes"
},
"usecaseMapDifferentSources": {
"intro": "<p>Per exemple, es podria fer un mapa amb tots els bancs d'alguna ciutat, basant-se en els bancs coneguts per OpenStreetMap. Aquest mapa imprès necessita una declaració clara que les dades del mapa es basen en OpenStreetMap. La venda d'aquests mapes està permesa. Si el mapejador nota que falten els bancs en alguna zona i els afegeix al mapa imprès, les dades dels bancs que falten també s'obren automàticament. Això vol dir que un col·laborador d'OpenStreetMap pot agafar el mapa de paper i utilitzar-lo per tornar a afegir els bancs que falten a OpenStreetMap.</p><p>Aquest col·laborador també té dret a demanar el conjunt de dades dels bancs que falten, que també s'ha de proporcionar.</p><p>Si el mapejador nota que falten els bancs en alguna àrea i els afegeix al mapa imprès, les dades dels bancs que falten també s'obren automàticament. Això vol dir que un col·laborador d'OpenStreetMap pot agafar el mapa de paper i utilitzar-lo per tornar a afegir els bancs que falten a OpenStreetMap. Aquest col·laborador també té dret a demanar el conjunt de dades dels bancs que falten, que també s'han de proporcionar.</p><p>Per descomptat, un mapa amb només bancs pot resultar avorrit. El creador de mapes també pot decidir afegir una capa amb botigues, possiblement procedent d'un altre proveïdor de geodades amb una altra llicència. Això està permès, si el mapa indica clarament que els bancs provenen d'OSM (amb ODBL) i les botigues tenen una font diferent (eventualment amb tots els drets reservats).</p><p>No obstant això, barrejar dos conjunts de dades sense distinció no és permés. Per exemple, el mapejador podria trobar que OSM té dades excel·lents sobre bancs d'una part de la ciutat i el proveïdor de codi tancat podria tenir dades excel·lents sobre bancs d'una altra part de la ciutat, la fusió d'aquests conjunts de dades en un podria ser problemàtic: </p>",
"li0": "la llicència oberta requeriria que les modificacions es tornin a publicar obertament…",
"li1": "… mentre que la llicència de tots els drets reservats ho prohibiria.",
"outro": "Com a resultat, aquest tipus de barreja no està permès",
@ -451,7 +478,10 @@
},
"title": "Alguns inconvenients a tenir en compte",
"unsuitedData": {
"intro": "La regla bàsica d'OpenStreetMap és que totes les dades han de ser <b>verificables sobre el terreny</b> i són permanents. Això implica que algunes dades <i>no es poden</i> enviar directament a OpenStreetMap, però existeixen algunes solucions.",
"li0": "Les dades subjectives (com ara ressenyes) no són adequades per a OpenStreetMap. Tanmateix, MapComplete té una integració amb <a href=\"https://mangrove.reviews/\">Mangrove.reviews</a>, un lloc web de revisió amb llicència oberta",
"li1": "Els esdeveniments <i>no</i> es registren, ni tampoc les obres viàries que només duren uns quants dies.",
"li2": "Les dades temporals (per exemple, estadístiques de qualitat de l'aire, intensitat del trànsit, ...) no es poden emmagatzemar a OpenStreetMap, ja que són difícils de verificar per un voluntari. Tingues en compte que, si aquestes dades estan disponibles en un altre lloc, encara es poden visualitzar a MapComplete com a capa addicional.",
"title": "Les dades no són acceptables per OpenStreetMap"
}
},
@ -469,8 +499,10 @@
"li2": "Formació sobre com aportar dades amb MapComplete",
"li3": "Formació avançada (per exemple, per a l'equip GIS) sobre com afegir dades avançades a OpenStreetMap",
"li4": "Formació sobre com baixar dades filtrades d'OpenStreetMap",
"outro": "Aquests serveis s'ofereixen a preus competitius. Es pot configurar una petició senzilla sense suport addicional per tan sols 2000 € i un petit cost addicional d'hostatjament anual.",
"title": "Serveis de Mapcomplete"
},
"text0": "<p>Mantenir un conjunt de geodades actualitzades és difícil, propens a errors i costós.<br>Per fer més gran la ferida, moltes organitzacions acaben recopilant les mateixes dades de manera independent, donant lloc a esforços duplicats i dades no estandarditzades. formats i molts conjunts de dades incomplets i sense manteniment.</p><p>Al mateix temps, hi ha una comunitat enorme que reuneix moltes geodades en una base de dades compartida, global i estandaritzada, és a dir, OpenStreetMap.org.</p>",
"text1": "<p>MapComplete és l'editor per facilitar la contribució de dades a OpenStreetMap.</p>",
"title": "Suport professional amb MapComplete"
},
@ -502,6 +534,7 @@
"activateButton": "Ajudar a traduir MapComplete",
"completeness": "Les traduccions de {theme} en {language} tenen un {percentage}%: {translated} cadenes de {total} es tradueixen",
"deactivate": "Deshabilitar els botons de traducció",
"help": "Fes clic a la icona 'tradueix' al costat d'una cadena per introduir o actualitzar un fragment de text. Necessites un compte de Weblate per a això. Crea'n un amb el teu nom d'usuari OSM per desbloquejar automàticament el mode de traducció.",
"isTranslator": "El mode de traducció està actiu, ja que el vostre nom d'usuari coincideix amb el nom d'un traductor anterior",
"missing": "{count} cadenes sense traduir",
"notImmediate": "Les traduccions no s'actualitzen directament. Això sol trigar uns quants dies"

View file

@ -19,7 +19,7 @@
"loading": "Untersuchung der Eigenschaften, um zu prüfen, ob dieses Element gelöscht werden kann.",
"loginToDelete": "Sie müssen angemeldet sein, um einen Punkt zu löschen",
"notEnoughExperience": "Dieser Punkt wurde von jemand anderem erstellt.",
"onlyEditedByLoggedInUser": "Dieser Punkt wurde nur von Ihnen selbst bearbeitet, Sie können ihn sicher löschen.",
"onlyEditedByLoggedInUser": "Dieser Punkt wurde nur von Ihnen selbst bearbeitet, Sie können ihn gefahrlos löschen.",
"partOfOthers": "Dieser Punkt ist Teil eines Weges oder einer Relation und kann nicht direkt gelöscht werden.",
"readMessages": "Du hast ungelesene Nachrichten. Bitte beachte diese, bevor Du einen Punkt löschst - vielleicht hat jemand eine Rückmeldung",
"reasons": {
@ -49,12 +49,12 @@
"disableFiltersExplanation": "Einige Elemente können durch einen Filter ausgeblendet sein",
"hasBeenImported": "Dieser Punkt wurde bereits importiert",
"import": {
"hasBeenImported": "Das Objekt wurde importiert.",
"hasBeenImported": "Das Objekt wurde importiert",
"howToTest": "Um es zu testen, hänge <b>test=true</b> oder <b>backend=osm-test</b> an die URL an. Die Änderungen werden in der Konsole ausgegeben. Bitte erstelle einen PR um das Thema zu veröffentlichen das den Import Button freischält.",
"importTags": "Das Element wird {tags} bekommen",
"officialThemesOnly": "Der Importbutton ist für nicht offizielle Themen deaktiviert um Störfälle zu vermeiden.",
"wrongType": "Dieses Element ist kein Punkt oder Weg und kann deshalb nicht importiert werden.",
"zoomInMore": "Vergrößere um das Feature zu importieren."
"officialThemesOnly": "Die Import-Schaltfläche ist für inoffizielle Themen deaktiviert, um Störfälle zu vermeiden",
"wrongType": "Dieses Element ist kein Punkt oder Weg und kann deshalb nicht importiert werden",
"zoomInMore": "Ansicht vergrößern, um das Objekt zu importieren"
},
"importTags": "Das Element erhält {tags}",
"intro": "Sie haben auf eine Stelle in der Karte geklickt, an der noch keine Daten bekannt sind.<br>",
@ -71,19 +71,19 @@
},
"apply_button": {
"appliedOnAnotherObject": "Das Objekt {id} wird {tags} bekommen",
"isApplied": "Die Änderungen wurden gespeichert."
"isApplied": "Die Änderungen werden übernommen"
},
"attribution": {
"attributionContent": "<p>Alle Daten wurden bereitgestellt von <a href=\"https://osm.org\" target=\"_blank\">OpenStreetMap</a>, frei verwendbar unter der <a href=\"https://osm.org/copyright\" target=\"_blank\">Open Database License</a>.</p>",
"attributionTitle": "Danksagung",
"codeContributionsBy": "MapComplete wurde von {contributors} und <a href=\"https://github.com/pietervdvn/MapComplete/graphs/contributors\" target=\"_blank\">{hiddenCount} weiteren Beitragenden</a> erstellt",
"donate": "Unterstütze MapComplete finanziell",
"editId": "Öffne den OpenStreetMap online Editor hier.",
"editId": "Den OpenStreetMap online Editor hier öffnen",
"editJosm": "Bearbeite mit JOSM",
"iconAttribution": {
"title": "Verwendete Symbole"
},
"josmNotOpened": "JOSM konnte nicht erreicht werden. Stelle sicher, dass es geöffnet ist und Fernkontrolle aktiviert ist",
"josmNotOpened": "JOSM konnte nicht erreicht werden. Stelle sicher, dass es geöffnet ist und Fernkontrolle aktiviert ist",
"josmOpened": "JOSM ist geöffnet",
"mapContributionsBy": "Die aktuell sichtbaren Daten wurden editiert durch {contributors}",
"mapContributionsByAndHidden": "Die aktuell sichtbaren Daten wurden editiert durch {contributors} und {hiddenCount} weitere Beitragende",
@ -178,7 +178,7 @@
"versionInfo": "v{version} - erstellt am {date}"
},
"pickLanguage": "Sprache wählen: ",
"poweredByOsm": "Powered by OpenStreetMap",
"poweredByOsm": "Unterstützt von OpenStreetMap",
"questions": {
"emailIs": "Die E-Mail-Adresse dieser {category} lautet <a href=\"mailto:{email}\" target=\"_blank\">{email}</a>",
"emailOf": "Wie lautet die E-Mail-Adresse der {category}?",
@ -276,32 +276,40 @@
"willBePublished": "Ihr Bild wird veröffentlicht "
},
"importHelper": {
"allAttributesSame": "Alle zu importierenden Objekte haben diesen Tag",
"description": "Der Import-Helfer konvertiert einen externen Datensatz in Hinweise. Der externe Datensatz muss mit einer der vorhandenen MapComplete-Ebenen übereinstimmen. Für jedes Element, das Sie in den Import-Helfer eingeben, wird ein einzelner Hinweis erstellt. Diese Hinweise werden zusammen mit den entsprechenden Objekten in diesen Karten angezeigt, um sie leicht hinzufügen zu können.",
"importFormat": "Der Hinweistext sollte folgendes Format haben, um aufgenommen zu werden: <br><div class=\"literal-code\">[Eine kleine Einführung]<br>https://mapcomplete.osm.be/[themenname].html?[Parameter wie lat und lon]#import<br>[alle Tags des Objekts] </div>",
"inspectDataTitle": "Daten von {count} zu importierenden Objekten prüfen",
"inspectDidAutoDected": "Ebene wurde automatisch ausgewählt",
"inspectLooksCorrect": "Die Werte sehen richtig aus",
"lockNotice": "Diese Seite ist gesperrt. Du brauchst die Änderungen {importHelperUnlock} bevor du die Seite öffnen kannst.",
"locked": "Du benötigst mindestens {importHelperUnlock} um die Importhilfe zu benutzen",
"loggedInWith": "Du bist eingeloggt als <b>{name}</b> und hast {csCount} Änderungen",
"loginIsCorrect": "<b>{name}</b> ist der richtige Account um Importnotizen zu erstellen.",
"loginRequired": "Du musst eingeloggt sein um fortzufahren.",
"loginRequired": "Sie müssen eingeloggt sein, um fortzufahren",
"mapPreview": {
"autodetected": "Die Ebene wurde anhand der Eigenschaften automatisch abgezogen",
"confirm": "Die Objekte befinden sich an der richtigen Stelle auf der Karte",
"mismatch": "{count} Objekte stimmen nicht mit der ausgewählten Ebene überein. Stellen Sie sicher, dass die Tags zur Angabe des Typs vorhanden sind, nämlich {tags}",
"selectLayer": "Zu welcher Ebene passt dieser Import?",
"title": "Kartenvorschau"
},
"selectFile": {
"description": "Wähle eine .csv oder .geojson Datei um anzufangen",
"errDuplicate": "Einige Spalten haben den selben Namen",
"errNoLatOrLon": "Der Kopf? enhält weder `lat` noch `lon`",
"errNoLatOrLon": "Die Kopfzeile enthält weder `lat` noch `lon`",
"errNoName": "Einige Spalten haben keinen Namen",
"errNotFeatureCollection": "Die geladene JSON-Datei ist keine geojson-featurecollection",
"errPointsOnly": "Die geladene JSON-Datei sollte nur Punkte enthalten",
"fileFormatDescription": "Wähle eine <b class=\"code\">.csv</b> oder <b class=\"code\">.geojson</b> Datei",
"fileFormatDescriptionCsv": "In der CSV-Datei sollte es jeweils eine Spalte für <span class=\"literal-code\">lat</span> und <span class=\"literal-code\">lon</span>mit den Koordinaten in WGS84 geben. Jedes weitere Attribut sollte in einer eigenen Spalte sein.",
"fileFormatDescriptionGeoJson": "In der geojson-Datei sollten nur Punkte enthalten sein. Die Eigenschaften sollten genau die Eigenschaften sein, die in OpenStreetMap verwendet werden sollen",
"loadedFilesAre": "Die Datei {file} ist geladen",
"noFilesLoaded": "Keine Datei geladen",
"title": "Wähle eine Datei"
},
"selectLayer": "Wähle eine Ebene...",
"someHaveSame": "{count} der zu importierenden Objekte haben dieses Tag, das sind {percentage}% der Gesamtzahl",
"title": "Import-Helfer",
"userAccountTitle": "Wähle einen Benutzeraccount",
"validateDataTitle": "Bestätige Daten"
@ -310,7 +318,10 @@
"title": "Importhinweise überprüfen und verwalten"
},
"importLayer": {
"alreadyMapped": "Es gibt bereits einen anderen {title} auf der Karte - dieser Punkt ist ein Duplikat",
"description": "Eine Ebene, die Einträge für {title} importiert",
"importButton": "import_button({layerId}, _tags, Ich habe hier ein(en) {title} gefunden - Zur Karte hinzufügen,./assets/svg/addSmall.svg,,,id)",
"importHandled": "<div class=\"thanks\">Dieses Objekt wurde behandelt! Vielen Dank für Ihre Bemühungen</div>",
"layerName": "Möglicher {title}",
"notFound": "Ich konnte {title} nicht finden - entferne es",
"popupTitle": "Möglicher {title}"
@ -355,21 +366,28 @@
"addAComment": "Füge einen Kommentar hinzu",
"addComment": "Kommentieren",
"addCommentAndClose": "Kommentieren und Schließe",
"addCommentPlaceholder": "Add a comment...",
"addCommentPlaceholder": "Einen Kommentar hinzufügen...",
"anonymous": "Anonymer Benutzer",
"closeNote": "Schließe Notiz",
"createNote": "Erstelle eine neue Notiz",
"createNoteIntro": "Ist etwas falsch oder fehlt auf der Karte? Erstellen Sie hier eine Notiz. Diese werden von Freiwilligen überprüft.",
"createNoteTitle": "Erstelle hier eine neue Notiz",
"disableAllNoteFilters": "Deaktiviere alle Filter",
"isClosed": "Diese Notiz ist geklärt",
"isClosed": "Dieser Hinweis wurde geklärt",
"isCreated": "Deine Notiz wurde erstellt!",
"loginToAddComment": "Einloggen um zu Kommentieren",
"loginToAddPicture": "Einloggen um ein Bild hinzuzufügen",
"loginToClose": "Einloggen um die Notiz zu schließen",
"loginToClose": "Einloggen um diesen Hinweis zu schließen",
"noteIsPublic": "Es wird für alle sichtbar sein",
"noteLayerDoEnable": "Aktiviere die Ebene \"showing notes\"",
"noteLayerDoEnable": "Aktivieren Sie die Ebene der Hinweise",
"noteLayerHasFilters": "Einige Notizen können durch einen Filter versteckt sein",
"noteLayerNotEnabled": "Die Ebene \"showing notes\" ist nicht aktiviert. Die Ebene muss aktiviert sein um eine Notiz hinzuzufügen"
"noteLayerNotEnabled": "Die Ebene der Hinweise ist nicht aktiviert. Die Ebene muss aktiviert sein, um einen neuen Hinweis hinzuzufügen",
"notesLayerMustBeEnabled": "Die 'Hinweis'-Ebene ist deaktiviert. Aktivieren Sie sie, um einen Hinweis hinzuzufügen",
"reopenNote": "Hinweis wieder öffnen",
"reopenNoteAndComment": "Hinweis wieder öffnen und kommentieren",
"textNeeded": "Geben Sie einen beschreibenden Text ein, um einen Hinweis zu erstellen",
"typeText": "Geben Sie einen Text ein, um einen Kommentar hinzuzufügen",
"warnAnonymous": "Sie sind nicht eingeloggt. Wir sind nicht in der Lage, Sie zu kontaktieren, um Ihr Problem zu lösen."
},
"privacy": {
"editing": "Wenn Sie eine Änderung an der Karte vornehmen, wird diese Änderung auf OpenStreetMap aufgezeichnet und ist für jeden öffentlich zugänglich. Ein mit MapComplete vorgenommener Änderungssatz enthält die folgenden Daten: <ul><li>Die von Ihnen vorgenommenen Änderungen</li><li>Ihr Benutzername</li><li>Wann diese Änderung vorgenommen wurde</li><li>Das Thema, das Sie bei der Änderung verwendet haben</li><li>Die Sprache der Benutzeroberfläche</li><li>Eine Angabe darüber, wie nah Sie an geänderten Objekten waren. Andere Kartierer können diese Informationen nutzen, um festzustellen, ob eine Änderung auf Basis einer Vor-Ort Erkundung oder einer Fernerkundung vorgenommen wurde</li></ul> Ausführliche Informationen finden Sie in <a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\">den Datenschutzbestimmungen auf OpenStreetMap.org</a>. Wir möchten Sie daran erinnern, dass Sie bei der Anmeldung einen fiktiven Namen verwenden können.",
@ -386,34 +404,105 @@
},
"professional": {
"aboutMc": {
"internalUse": {
"intro": "Sobald die Daten in OpenStreetMap sind, werden Sie sie wahrscheinlich auch nutzen wollen. Ihr MapComplete-Thema kann eine praktische <i>export</i>-Schaltfläche haben, mit der Sie die Daten in vielen offenen Formaten herunterladen können, die in QGis, ArcGis, Excel, LibreOffice-calc, ... verwendbar sind.<p></p><p>Jemand mit grundlegenden Tabellenkalkulationskenntnissen kann so leicht Diagramme und Einblicke über die Daten erstellen, während die GIS-Experten in Ihrer Organisation leicht mit diesen Daten in ihrer bevorzugten Anwendung arbeiten können.</p><p>Wenn eine automatisierte Einrichtung benötigt wird, ist eine frei zu verwendende, von der Gemeinschaft betriebene API verfügbar.</p>",
"title": "Verwendung der Daten in internen Prozessen"
},
"layers": {
"intro": "<p>MapComplete verfügt über ein leistungsfähiges Vorlagen-System, das es ermöglicht, schnell eine Karte zu erstellen, die genau die Objekte zeigt, die Sie benötigen, und die relevanten Attribute in den Popups anzuzeigen.</p><p>Diese Daten können direkt von <b>OpenStreetMap</b> geholt werden, MapComplete kann jedoch auch <b>externe Datensätze</b> verwenden - z.B. um OpenStreetMap mit einem anderen Datensatz zu vergleichen oder um Daten anzuzeigen, die nicht für OpenStreetMap geeignet sind (geplante Aktivitäten, Statistiken, ...)</p>",
"title": "Welche Daten können mit MapComplete gezeigt werden?"
},
"survey": {
"intro": "MapComplete ist ein einfach zu bedienendes <i>Umfrage</i> Werkzeug. Es ist ideal, um das Notwendige in ein paar Klicks zu sammeln, sowohl auf dem Desktop und auf dem Handy. Diese Daten werden direkt in OpenStreetMap eingebracht.<p></p><p>Wir können ein <b>maßgeschneidertes Umfragetool</b> einrichten, das genau die Daten abfragt, die Sie zukunftssicher benötigen.</p><p>Haben Sie einen Datensatz, der (neu) geprüft werden muss? Das ist der perfekte Zeitpunkt, um auf OpenStreetMap umzusteigen. MapComplete kann Ihren Datensatz und OpenStreetMap gleichzeitig anzeigen, so dass es einfacher ist, alle Standorte zu besuchen und zu sehen, was die Gemeinschaft bereits beigetragen hat.</p>\n",
"title": "Umfragemöglichkeiten"
},
"text0": "Wenn ein bestehendes MapComplete Thema das ist, was Sie brauchen, fühlen Sie sich frei, es zu benutzen oder betten Sie es auf Ihrer Website ein. Das Einbetten der öffentlichen Themen ist kostenlos und wird es immer sein.",
"text1": "Brauchen Sie andere Daten, aber das Thema existiert noch nicht? Die MapComplete-Entwickler können es <b>für Sie zusammenstellen</b> für einen fairen Betrag. Kontaktieren Sie uns über <a href=\"mailto:pietervdvn@posteo.net\">email</a>, <a href=\"https://github.com/pietervdvn/MapComplete/issues\">github</a> oder <a href=\"https://www.openstreetmap.org/message/new/Pieter%20Vander%20Vennet\">;senden Sie eine Nachricht über osm.org</a>",
"text2": "Wenn Sie noch unsicher sind, finden Sie im Folgenden eine Übersicht über die Möglichkeiten. Außerdem werden einige häufig gestellte Fragen beantwortet",
"title": "Benutze MapComplete in deinem Organisation"
},
"aboutOsm": {
"aboutOsm": {
"intro": "OpenStreetMap ist eine gemeinsame, globale Datenbank, die von Freiwilligen aufgebaut wird. Alle Geodaten können zu OpenStreetMap beigetragen werden, solange sie <b>vor Ort verifiziert</b> werden können. <br>OpenStreetMap ist zu einem sehr breiten und detaillierten Datensatz herangewachsen, da es Daten über Tausende von Objektkategorien enthält. Ein einzelnes Objekt kann auch eine Menge Attribute haben, die viele Nuancen mit sich bringen, z. B:",
"li0": "Straßen haben eine Geometrie, können aber auch Informationen enthalten über die Höchstgeschwindigkeit, die Oberfläche, ob sie beleuchtet sind, ihren Namen, einen Link zu Wikipedia, einen Link zu dem, wonach sie benannt sind, welche Wander-, Rad- und Busrouten dort verlaufen, …",
"li1": "Geschäfte und andere Einrichtungen enthalten Öffnungszeiten, eine Telefonnummer, einen Link zur Website, die unterstützten Zahlungsmethoden, das Angebot, die angebotenen Dienstleistungen, …",
"li2": "Die Toiletten besitzen Informationen über die Zugänglichkeit für Rollstuhlfahrer, einen Wickeltisch, die Notwendigkeit einer Bezahlung, …",
"li3": "und vieles, vieles mehr…",
"title": "Was ist OpenStreetMap?"
},
"benefits": {
"intro": "Es kann sehr schwer sein, den eigenen Datensatz hinter sich zu lassen, da der Aufbau dieses Datensatzes oft viel Zeit und Mühe gekostet hat.<br>Die Vorteile des Wechsels zu OSM sind jedoch enorm:",
"li0": "Sie sind beim Sammeln und Pflegen dieses Datenbestands nicht mehr allein - eine ganze Gemeinschaft steht Ihnen zur Seite",
"li1": "Ihre Daten erreichen ein größeres Publikum als je zuvor über Bing Maps, Apple Maps, Facebook, Instagram, Pokemon Go, OsmAnd, Organic Maps, Maps.me, Mapbox, Komoot, fast alle Fahrrad-Applikationen, …",
"li2": "Viele Regierungsorganisationen und Kommunen nutzen OpenStreetMap auch auf ihren Webseiten",
"title": "Vorteile des OSM-Ökosystem"
},
"license": {
"intro": "OpenStreetMap ist unter der Open Database License lizenziert. Der <a href=\"https://osm.org/copyright\" target=\"_blank\">vollständige Copyright-Text</a> lässt sich wie folgt zusammenfassen:",
"li0": "Ein Produkt, das OpenStreetMap-Daten verwendet, muss eine Quellenangabe enthalten.",
"li1": "OpenStreetMap-Daten müssen <i>offen</i> bleiben. Dies bedeutet, dass die Daten einer Karte, die OpenStreetMap-Daten enthält, erneut kopiert werden können.",
"outro": "Die Lizenz hat einige Auswirkungen, die im Folgenden erläutert werden.",
"title": "Die Lizenz"
},
"vandalism": {
"intro": "Da jeder die Daten bearbeiten kann, ist es durchaus möglich, dass eine böswillige Änderung vorgenommen wird. Dies ist jedoch aus mehreren Gründen extrem selten:",
"li0": "Die technische Hürde, Änderungen vorzunehmen, ist hoch",
"li1": "eine kleine böswillige Veränderung hat nur geringe Auswirkungen und ist daher für einen Vandalen wenig lohnend",
"li2": "eine Änderung, die sich stark auswirkt, wird schnell bemerkt und rückgängig gemacht, da so viele Menschen diese Daten nutzen",
"li3": "Alle Änderungen werden nachverfolgt und an einen einzelnen Benutzer gebunden. Ein Wiederholungstäter wird schnell gesperrt",
"li4": "In Belgien (und einigen anderen Ländern) wird der erste Beitrag eines neuen Verfassers systematisch überprüft und bei Bedarf korrigiert.",
"title": "Gibt es Vandalismus?"
}
},
"drawbacks": {
"intro": "Der Beitritt zu dieser Gemeinschaft hat zwar enorme Vorteile, aber es gibt auch ein paar Dinge, die man sorgfältig bedenken sollte.",
"licenseNuances": {
"intro": "OpenStreetMap ist unter der Open Database License lizenziert, die besagt, dass:",
"li0": "Alle Daten können für jeden Zweck wiederverwendet werden - auch für kommerzielle Zwecke",
"li1": "Anwendungen oder Produkte, die OpenStreetMap verwenden, sollten einen deutlich sichtbaren Urheberrechtshinweis enthalten",
"li2": "Jeder Datensatz oder jedes Produkt, das OpenStreetMap-Daten enthält, muss ebenfalls unter ODbL veröffentlicht werden, einschließlich Änderungen an diesem Datensatz und in einem verwendbaren Format.",
"outro": "Dies hat einige Auswirkungen, die für einige Anwendungsfälle zu berücksichtigen sind, wie im Folgenden erläutert",
"title": "Implikationen der ODbL: einige Anwendungsfälle",
"usecaseGatheringOpenData": {
"intro": "MapComplete ist eine hervorragende Möglichkeit, offene Daten zu erstellen, auch für Regierungen. Standardmäßig sind diese Daten unter der ODbL frei weiterverteilbar. Wenn jedoch die Anforderung besteht, die gesammelten Daten unter einer <i>Public Domain</i>-Lizenz zu veröffentlichen (bei der <b>alle</b> Rechte der Öffentlichkeit gewährt werden und keine Zuschreibung erforderlich ist), ist die ODbL zu restriktiv. In diesem Fall kann man die Mitwirkenden auffordern, die Daten als gemeinfrei einzustellen (z. B. indem man sie im mapcomplete-Thema darüber informiert).",
"title": "Sammeln offener Daten"
},
"usecaseMapDifferentSources": {
"li0": "die offene Lizenz würde verlangen, dass die Modifikationen offen wiederveröffentlicht werden…",
"li1": "...wohingegen die All-Rights-Reserved-Lizenz dies untersagen würde.",
"outro": "Folglich ist diese Art der Vermischung nicht erlaubt",
"title": "Erstellung einer Karte aus verschiedenen Quellen"
}
},
"title": "Ein paar Nachteile, die Sie beachten sollten",
"unsuitedData": {
"intro": "Die Grundregel für OpenStreetMap ist, dass alle Daten <b>vor Ort überprüfbar</b> und einigermaßen dauerhaft sein müssen. Dies bedeutet, dass einige Daten <i>nicht</i> direkt an OpenStreetMap gesendet werden können - aber es gibt einige Umgehungsmöglichkeiten.",
"li0": "Subjektive Daten (wie z. B. Bewertungen) sind für OpenStreetMap nicht geeignet. MapComplete hat jedoch eine Integration mit <a href=\"https://mangrove.reviews/\">Mangrove.reviews</a>, einer offen lizenzierten Bewertungswebsite",
"li1": "Veranstaltungen werden <i>nicht</i> erfasst, ebenso wenig wie Straßenarbeiten, die nur wenige Tage dauern.",
"li2": "Zeitliche Daten (z.B. Statistiken zur Luftqualität, Verkehrsintensität, ...) können nicht auf OpenStreetMap gespeichert werden, da sie von einem Freiwilligen nur schwer zu überprüfen sind. Wenn diese Daten anderswo verfügbar sind, können sie dennoch in MapComplete als zusätzliche Ebene visualisiert werden.",
"title": "Nicht für OpenStreetMap geeignete Daten"
}
},
"indexPage": {
"button": "Erfahren Sie mehr über unsere Dienstleistungen",
"hook": "Benötigen Sie professionelle Unterstützung?",
"hookMore": "Wir können bei der Erstellung von Umfragen, Datenimporten und OpenStreetMap-Beratung helfen."
}
"hookMore": "Wir können bei der Erstellung von Umfragen, Datenimporten und OpenStreetMap-Beratung helfen"
},
"intro": "Der Entwickler von MapComplete bietet professionelle Unterstützung an. Dieses Dokument skizziert einige der Möglichkeiten, häufige Fragen und die Grenzen von MapComplete",
"osmTitle": "Was können OpenStreetMap und MapComplete für Ihre Organisation tun?",
"services": {
"intro": "Der Entwickler von MapComplete kann Ihnen mit den folgenden Dienstleistungen helfen:",
"li0": "Einrichten eines auf Ihren Bedarf zugeschnittenen Themas",
"li1": "Hilfe bei der Einrichtung des internen Datenflusses zur Integration von OpenStreetMap",
"li2": "Schulung über die Bereitstellung von Daten mit MapComplete",
"li3": "Fortbildung (z.B. für das GIS-Team), wie man erweiterte Daten zu OpenStreetMap hinzufügt",
"li4": "Schulung zum Herunterladen gefilterter Daten von OpenStreetMap",
"outro": "Diese Dienstleistungen werden zu wettbewerbsfähigen Preisen angeboten. Ein einfaches Thema ohne zusätzliche Unterstützung kann für nur 2.000 € eingerichtet werden, zuzüglich geringer jährlicher Hosting-Kosten.",
"title": "MapComplete-Dienste"
},
"text0": "<p>Die Pflege eines Satzes aktueller Geodaten ist schwierig, fehleranfällig und teuer.<br>Zu allem Überfluss sammeln viele Organisationen dieselben Daten unabhängig voneinander - was zu doppelten Anstrengungen, nicht standardisierten Datenformaten und vielen unvollständigen, ungepflegten Datensätzen führt.</p><p>Gleichzeitig gibt es eine riesige Gemeinschaft, die viele Geodaten in einer gemeinsamen, globalen und standardisierten Datenbank sammelt - nämlich OpenStreetMap.org.</p>",
"text1": "<p>MapComplete ist der Editor, der das Einbringen von Daten in OpenStreetMap einfach macht.</p>",
"title": "Professionelle Unterstützung mit MapComplete"
},
"reviews": {
"affiliated_reviewer_warning": "(Partner-Rezension)",
@ -441,9 +530,71 @@
},
"translations": {
"activateButton": "Bei der Übersetzung von MapComplete helfen",
"completeness": "Die Übersetzungen für {theme} in {language} liegen bei {percentage}%: {translated} Zeichenfolgen von {total} sind übersetzt",
"completeness": "Die Übersetzungen für {theme} in {language} ist zu {percentage}% vollständig: {translated} Zeichenfolgen von {total} sind übersetzt",
"deactivate": "Schaltflächen für die Übersetzung deaktivieren",
"help": "Klicken Sie auf das 'translate'-Symbol neben einer Zeichenfolge, um einen Text einzugeben oder zu aktualisieren. Dazu benötigen Sie einen Weblate-Account. Erstellen Sie einen mit Ihrem OSM-Benutzernamen, um den Übersetzungsmodus automatisch freizuschalten.",
"isTranslator": "Der Übersetzungsmodus ist aktiv, da Ihr Benutzername mit dem Namen eines früheren Übersetzers übereinstimmt"
"isTranslator": "Der Übersetzungsmodus ist aktiv, da Ihr Benutzername mit dem Namen eines früheren Übersetzers übereinstimmt",
"missing": "{count} unübersetzte Zeichenfolgen",
"notImmediate": "Die Übersetzungen werden nicht direkt aktualisiert. Dies dauert in der Regel ein paar Tage"
},
"validation": {
"color": {
"description": "Farbe oder Hexcode"
},
"date": {
"description": "Ein Datum, beginnend mit der Jahreszahl"
},
"decimal": {
"description": "Eine Zahl"
},
"direction": {
"description": "Eine Himmelsrichtung"
},
"email": {
"description": "E-Mail Adresse",
"feedback": "Dies ist keine gültige E-Mail Adresse",
"noAt": "Eine E-Mail-Adresse sollte ein @ enthalten"
},
"float": {
"description": "eine Zahl",
"feedback": "Dies ist keine Zahl"
},
"int": {
"description": "eine ganze Zahl"
},
"nat": {
"description": "eine positive, ganze Zahl oder Null",
"mustBePositive": "Diese Zahl sollte positiv sein",
"mustBeWhole": "Es sind nur ganze Zahlen erlaubt",
"notANumber": "Eine Nummer eingeben"
},
"opening_hours": {
"description": "Öffnungszeiten"
},
"pfloat": {
"description": "eine positive Zahl"
},
"phone": {
"description": "eine Telefonnummer",
"feedback": "Dies ist keine gültige Telefonnummer"
},
"pnat": {
"description": "eine positive, ganze Zahl",
"noZero": "Null ist nicht erlaubt"
},
"string": {
"description": "ein Stück Text"
},
"text": {
"description": "ein Stück Text"
},
"tooLong": "Der Text ist zu lang, es sind maximal 255 Zeichen erlaubt. Sie haben jetzt {count} Zeichen",
"url": {
"description": "Link zu einer Website",
"feedback": "Dies ist keine gültige Webadresse"
},
"wikidata": {
"description": "Eine Wikidata-Kennung"
}
}
}

View file

@ -19,7 +19,7 @@
"loading": "Inspecting properties to check if this feature can be deleted.",
"loginToDelete": "You must be logged in to delete a point",
"notEnoughExperience": "This point was made by someone else.",
"onlyEditedByLoggedInUser": "This point has only be edited by yourself, you can safely delete it.",
"onlyEditedByLoggedInUser": "This point has only been edited by yourself, you can safely delete it.",
"partOfOthers": "This point is part of some way or relation and can not be deleted directly.",
"readMessages": "You have unread messages. Read these before deleting a point - someone might have feedback",
"reasons": {
@ -418,7 +418,7 @@
"title": "Survey possibilities"
},
"text0": "If an existing MapComplete theme is what you, feel free to use it or embed it on your website. Embedding the public themes is free and always will be.",
"text1": "Do you need some other data, but does the theme not exist yet? The MapComplete-developers can <b>build it for you</b> on a decent budget. Get in touch via <a href='mailto:pietervdvn@posteo.net'>email</a>, <a href='https://github.com/pietervdvn/MapComplete/issues'>github</a> or <a href'https://www.openstreetmap.org/message/new/Pieter%20Vander%20Vennet'>send a message via osm.org</a>",
"text1": "Do you need some other data, but does the theme not exist yet? The MapComplete-developers can <b>build it for you</b> on a decent budget. Get in touch via <a href='mailto:pietervdvn@posteo.net'>email</a>, <a href='https://github.com/pietervdvn/MapComplete/issues'>github</a> or <a href='https://www.openstreetmap.org/message/new/Pieter%20Vander%20Vennet'>send a message via osm.org</a>",
"text2": "If you still feel unsure, the possibilities are outlined below. Additionally, some common questions are answered",
"title": "Using MapComplete in your organization"
},

View file

@ -10,11 +10,37 @@
"cannotBeDeleted": "Ang tampok na ito ay hindi matatanggal",
"delete": "Tanggalin",
"explanations": {
"selectReason": "Pumili ng dahilan kung bakit dapat tanggalin ang tampók na ito."
"hardDelete": "Ang tampók na ito ay tatanggalin sa OpenStreetMap. Maari itong ibalik ng mga bihasang tiga-ambag",
"selectReason": "Pumili ng dahilan kung bakit dapat tanggalin ang tampók na ito.",
"softDelete": "Ang tampók na ito ay babaguhin at itatago sa application. <span class=\"subtle\">{reason}</span>"
},
"isDeleted": "Tinanggal na ang tampók na ito",
"isntAPoint": "Mga buko (point) lang ang maaring tanggalin, ang piniling tampók ay isang way, area o relation.",
"isntAPoint": "Mga bukó (point) lang ang maaring tanggalin, ang piniling tampók ay isang way, area o relation.",
"loading": "Sinisiyasat ang mga katangian ng tampók para alamin kung maari itong tanggalin.",
"loginToDelete": "Dapat kang naka-logged in para matanggal ang buko(point)"
"loginToDelete": "Dapat kang naka-logged in para matanggal ang bukó(point)",
"notEnoughExperience": "Ang tampók na ito ay ginawa ng ibang tao.",
"onlyEditedByLoggedInUser": "Ikaw ang patnugot ng tampók na ito, at maari mo itong tanggalin.",
"partOfOthers": "Ang bukó (point) na ito ay bahagi ng ibang way o relation, at hindi maaring tanggalin.",
"readMessages": "Meron kang mga bagong mensahe. Basahin ang mga ito bago tanggalin ang tampók - maaring may puná para sa'yo",
"reasons": {
"disused": "Ang tampók na ito ay di-aktibo o tinanggal na",
"duplicate": "Ang bukó na 'to ay kahalintulad ng iba pang tampók",
"notFound": "Ang tampók na 'to ay 'di masumpongan",
"test": "Ang bukóng ito ay ginamit na pang-subok - ang tampók ay 'di talaga inimpok"
},
"safeDelete": "Ang tampók na ito ay di-makapipinsalang tanggalin.",
"useSomethingElse": "Sa halip, gumamit ng iba pang editor ng OpenStreetMap para tanggalin",
"whyDelete": "Bakit dapat tanggalin ang tampók na 'to?"
},
"favourite": {
"loginNeeded": "<h3>Mag log-in</h3>Ang personal na pagkakaayos ay para lang sa mga gumagamit ng OpenStreetMap",
"reload": "Muling pasanin ang datos"
},
"general": {
"about": "Madaling i-edit at mag-dagdag sa OpenStreetMap gamit ang mga partikular na tikha",
"add": {
"addNew": "Dagdagan ng {category}",
"addNewMapLabel": "I-click ito para mag-dagdag ng bagong bagay"
}
}
}

View file

@ -1,4 +1,500 @@
{
"address": {
"description": "Adreces"
},
"artwork": {
"name": "Obres d'art",
"tagRenderings": {
"artwork-artwork_type": {
"mappings": {
"0": {
"then": "Arquitectura"
},
"1": {
"then": "Mural"
},
"2": {
"then": "Pintura"
},
"3": {
"then": "Escultura"
},
"4": {
"then": "Estàtua"
},
"5": {
"then": "Bust"
},
"6": {
"then": "Pedra"
},
"7": {
"then": "Instal·lació"
},
"8": {
"then": "Grafiti"
},
"9": {
"then": "Relleu"
},
"11": {
"then": "Enrajolat"
}
}
}
},
"title": {
"render": "Obra d'art"
}
},
"barrier": {
"name": "Barreres",
"presets": {
"0": {
"title": "una pilona"
}
},
"tagRenderings": {
"Bollard type": {
"mappings": {
"0": {
"then": "Pilona desmuntable"
},
"1": {
"then": "Pilona fixa"
},
"4": {
"then": "Pilona retràctil"
}
}
}
},
"title": {
"mappings": {
"0": {
"then": "Pilona"
},
"1": {
"then": "Barrera ciclista"
}
},
"render": "Barrera"
}
},
"bench": {
"name": "Bancs",
"presets": {
"0": {
"title": "un banc"
}
},
"tagRenderings": {
"bench-backrest": {
"mappings": {
"0": {
"then": "Respatller: sí"
},
"1": {
"then": "Respatller: No"
}
}
},
"bench-colour": {
"mappings": {
"0": {
"then": "Color: marró"
},
"1": {
"then": "Color: verd"
},
"2": {
"then": "Color: gris"
},
"3": {
"then": "Color: blanc"
},
"4": {
"then": "Color: vermell"
},
"5": {
"then": "Color: negre"
},
"6": {
"then": "Color: blau"
},
"7": {
"then": "Color: groc"
}
},
"render": "Color: {colour}"
},
"bench-material": {
"mappings": {
"0": {
"then": "Material: fusta"
},
"1": {
"then": "Material: metall"
},
"2": {
"then": "Material: pedra"
},
"3": {
"then": "Material: ciment"
},
"4": {
"then": "Material: plàstic"
},
"5": {
"then": "Material: acer"
}
},
"render": "Material: {material}"
},
"bench-seats": {
"render": "{seats} seients"
}
},
"title": {
"render": "Banc"
}
},
"bench_at_pt": {
"tagRenderings": {
"bench_at_pt-name": {
"render": "{name}"
}
},
"title": {
"render": "Banc"
}
},
"bicycle_library": {
"name": "Biblioteca per a bicicletes",
"title": {
"render": "Biblioteca per a bicicletes"
}
},
"bicycle_rental": {
"tagRenderings": {
"9": {
"rewrite": {
"into": {
"4": {
"1": "bicicleta de muntanya"
},
"6": {
"1": "tàndem"
}
}
}
}
},
"title": {
"mappings": {
"0": {
"then": "{name}"
}
}
}
},
"bike_cafe": {
"name": "Cafeteria per a bicicletes",
"title": {
"render": "Cafeteria per a bicicletes"
}
},
"bike_parking": {
"name": "Aparcament per a bicicletes",
"tagRenderings": {
"Access": {
"mappings": {
"0": {
"then": "Accessible al públic"
}
},
"render": "{access}"
},
"Bicycle parking type": {
"mappings": {
"0": {
"then": "Bastidors de grapes"
},
"1": {
"then": "Portarodes/bucles"
},
"2": {
"then": "Suport de manillar"
},
"3": {
"then": "Enganxament"
},
"4": {
"then": "De dos nivells"
},
"6": {
"then": "Pilona"
}
}
},
"Underground?": {
"mappings": {
"0": {
"then": "Aparcament subterrani"
},
"2": {
"then": "Aparcament al terrat"
}
}
}
},
"title": {
"render": "Aparcament per a bicicletes"
}
},
"bike_repair_station": {
"tagRenderings": {
"bike_repair_station-electrical_pump": {
"mappings": {
"0": {
"then": "Bomba manual"
},
"1": {
"then": "Bomba elèctrica"
}
}
},
"bike_repair_station-opening_hours": {
"mappings": {
"0": {
"then": "Sempre obert"
}
}
}
},
"title": {
"mappings": {
"2": {
"then": "Bomba trencada"
},
"4": {
"then": "Bomba de bicicleta"
}
}
}
},
"bike_shop": {
"name": "Botiga/reparació de bicicletes",
"title": {
"render": "Botiga/reparació de bicicletes"
}
},
"bike_themed_object": {
"title": {
"mappings": {
"1": {
"then": "Pista ciclable"
}
}
}
},
"binocular": {
"description": "Prismàtics",
"name": "Prismàtics",
"presets": {
"0": {
"title": "uns prismàtics"
}
},
"title": {
"render": "Prismàtics"
}
},
"birdhide": {
"filter": {
"0": {
"options": {
"0": {
"question": "Accessible per a cadires de rodes"
}
}
}
}
},
"cafe_pub": {
"filter": {
"0": {
"options": {
"0": {
"question": "Obert ara"
}
}
}
},
"presets": {
"0": {
"title": "un bar"
},
"1": {
"title": "un pub"
},
"2": {
"title": "un cafè"
}
},
"title": {
"mappings": {
"0": {
"then": "<i>{name}</i>"
}
},
"render": "Bar"
}
},
"charging_station": {
"filter": {
"2": {
"options": {
"0": {
"question": "Tots els connectors"
}
}
}
},
"name": "Estacions de càrrega",
"tagRenderings": {
"Available_charging_stations (generated)": {
"mappings": {
"4": {
"then": "<b>Chademo</b>"
},
"5": {
"then": "<b>Chademo</b>"
}
}
}
},
"title": {
"render": "Estació de càrrega"
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": " minuts",
"humanSingular": " minut"
},
"1": {
"human": " hores",
"humanSingular": " hora"
},
"2": {
"human": " dies",
"humanSingular": " dia"
}
}
},
"1": {
"applicableUnits": {
"0": {
"human": "Volts"
}
}
},
"2": {
"applicableUnits": {
"0": {
"human": "A"
}
}
},
"3": {
"applicableUnits": {
"0": {
"human": "quilovats"
},
"1": {
"human": "megavats"
}
}
}
}
},
"crossings": {
"name": "Encreuaments",
"presets": {
"0": {
"title": "un pas de vianants"
}
},
"tagRenderings": {
"crossing-type": {
"mappings": {
"2": {
"then": "Pas de zebra"
}
}
}
},
"title": {
"mappings": {
"0": {
"then": "Semàfor"
}
},
"render": "Encreuament"
}
},
"cycleways_and_roads": {
"tagRenderings": {
"cycleway-lane-track-traffic-signs": {
"mappings": {
"0": {
"then": "Via ciclista obligatòria"
},
"2": {
"then": "Via segregada a peu/ciclista"
},
"3": {
"then": "Via no segregada a peu/ciclista"
}
}
},
"cycleway-traffic-signs": {
"mappings": {
"0": {
"then": "Via ciclista obligatòria"
},
"2": {
"then": "Via segregada a peu/ciclista"
},
"3": {
"then": "Via no segregada a peu/ciclista"
},
"4": {
"then": "Via ciclista obligatòria"
}
}
}
},
"title": {
"mappings": {
"0": {
"then": "Via ciclista"
},
"1": {
"then": "Carril compartit"
},
"2": {
"then": "Carril bici"
},
"4": {
"then": "Carrer ciclista"
}
},
"render": "Vies ciclistes"
}
},
"defibrillator": {
"name": "Desfibril·ladors",
"presets": {
@ -48,17 +544,106 @@
"defibrillator-level": {
"question": "A quina planta està el desfibril·lador localitzat?",
"render": "Aquest desfibril·lador és a la planta {level}"
},
"defibrillator-opening_hours": {
"render": "{opening_hours_table(opening_hours)}"
},
"defibrillator-survey:date": {
"mappings": {
"0": {
"then": "Comprovat avui!"
}
}
}
},
"title": {
"render": "Desfibril·lador"
}
},
"direction": {
"name": "Direcció de la visualització"
},
"drinking_water": {
"name": "Aigua potable",
"title": {
"render": "Aigua potable"
}
},
"entrance": {
"name": "Entrada",
"title": {
"render": "Entrada"
}
},
"extinguisher": {
"title": {
"render": "Extintors"
}
},
"food": {
"filter": {
"0": {
"options": {
"0": {
"question": "Obert ara"
}
}
}
},
"presets": {
"0": {
"title": "un restaurant"
},
"1": {
"title": "un de menjar ràpid"
}
},
"title": {
"mappings": {
"0": {
"then": "Restaurant <i>{name}</i>"
},
"1": {
"then": "Lloc de menjar ràpid <i>{name}</i>"
},
"2": {
"then": "Menjar ràpid"
}
},
"render": "Restaurant"
}
},
"ghost_bike": {
"name": "Bicicleta blanca",
"tagRenderings": {
"ghost_bike-inscription": {
"render": "<i>{inscription}</i>"
}
},
"title": {
"render": "Bicicleta blanca"
}
},
"hydrant": {
"title": {
"render": "Hidrant"
}
},
"information_board": {
"name": "Panells d'informació",
"title": {
"render": "Panell d'informació"
}
},
"map": {
"name": "Mapes",
"presets": {
"0": {
"title": "un mapa"
}
},
"title": {
"render": "Mapa"
}
},
"nature_reserve": {
@ -68,24 +653,215 @@
}
}
},
"note": {
"title": {
"render": "Nota"
}
},
"observation_tower": {
"name": "Torres d'observació",
"title": {
"mappings": {
"0": {
"then": "<b>{name}</b>"
}
},
"render": "Torre d'observació"
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": " metre"
}
}
}
}
},
"parking": {
"name": "Aparcament"
},
"picnic_table": {
"name": "Taules de pícnic",
"title": {
"render": "Taula de pícnic"
}
},
"playground": {
"description": "Parcs infantils",
"name": "Parcs infantils",
"presets": {
"0": {
"title": "un parc infantil"
}
},
"tagRenderings": {
"playground-email": {
"render": "<a href='mailto:{email}'>{email}</a>"
},
"playground-opening_hours": {
"mappings": {
"1": {
"then": "Sempre accessible--"
}
}
},
"playground-phone": {
"render": "<a href='tel:{phone}'>{phone}</a>"
}
},
"title": {
"mappings": {
"0": {
"then": "Parc infantil <i>{name}</i>"
}
},
"render": "Parc infantil"
}
},
"public_bookcase": {
"name": "Bústies per llibres",
"presets": {
"0": {
"title": "una bústia per a llibres"
}
},
"title": {
"render": "Bústia per llibres"
}
},
"recycling": {
"name": "Residus",
"tagRenderings": {
"opening_hours": {
"mappings": {
"0": {
"then": "24/7"
}
}
}
}
},
"shops": {
"name": "Botiga",
"tagRenderings": {
"shops-opening_hours": {
"render": "{opening_hours_table(opening_hours)}"
},
"shops-phone": {
"render": "<a href='tel:{phone}'>{phone}</a>"
},
"shops-shop": {
"mappings": {
"1": {
"then": "Supermercat"
},
"3": {
"then": "Perruqueria"
},
"4": {
"then": "Fleca"
}
}
},
"shops-website": {
"render": "<a href='{website}'>{website}</a>"
}
},
"title": {
"mappings": {
"0": {
"then": "{name}"
},
"1": {
"then": "{shop}"
}
},
"render": "Botiga"
}
},
"sport_pitch": {
"name": "Camps d'esports",
"title": {
"render": "Camp d'esports"
}
},
"surveillance_camera": {
"name": "Càmeres de videovigilància",
"title": {
"render": "Càmera de videovigilància"
}
},
"toilet": {
"name": "Lavabos",
"title": {
"render": "Lavabo"
}
},
"trail": {
"name": "Camins",
"title": {
"render": "Camí"
}
},
"tree_node": {
"name": "Arbre",
"presets": {
"2": {
"title": "un arbre"
}
},
"tagRenderings": {
"tree-decidouous": {
"mappings": {
"1": {
"then": "Perenne."
}
}
},
"tree-leaf_type": {
"mappings": {
"0": {
"then": "De fulla ampla"
},
"1": {
"then": "Amb fulles d'agulla"
}
}
}
},
"title": {
"render": "Arbre"
}
},
"viewpoint": {
"name": "Mirador",
"presets": {
"0": {
"title": "un mirador"
}
},
"title": {
"render": "Mirador"
}
},
"visitor_information_centre": {
"title": {
"mappings": {
"1": {
"then": "{name}"
}
},
"render": "{name}"
}
},
"waste_basket": {
"name": "Paperera",
"title": {
"render": "Paperera"
}
},
"watermill": {
"name": "Molí d'aigua"
}
}

View file

@ -2050,7 +2050,7 @@
},
"extinguisher": {
"description": "Kartenebene zur Anzeige von Hydranten.",
"name": "Feuerlöscher anzeigen",
"name": "Feuerlöscher anzeigen.",
"presets": {
"0": {
"description": "Ein Feuerlöscher ist ein kleines, tragbares Gerät, das dazu dient, ein Feuer zu löschen",

View file

@ -418,7 +418,7 @@
"title": "Mogelijkheden om data te verzamelen"
},
"text0": "Als je een bestaand MapComplete-thema wilt gebruiken of in je website wilt embedden, dan mag je dit gratis doen. Dit is gratis en zal dat altijd zijn.",
"text1": "Wil je andere data visualiseren, maar bestaat er nog geen geschikte kaart voor? De MapComplete-ontwikkelaars kunnen dit <b>op maat bouwen</b> voor een schappelijk budget. Stuur je vraag via <a href=\"mailto:pietervdvn@posteo.net\">email</a>, <a href=\"https://github.com/pietervdvn/MapComplete/issues\">github</a> of <a>een bericht op osm.org</a>",
"text1": "Wil je andere data visualiseren, maar bestaat er nog geen geschikte kaart voor? De MapComplete-ontwikkelaars kunnen dit <b>op maat bouwen</b> voor een schappelijk budget. Stuur je vraag via <a href=\"mailto:pietervdvn@posteo.net\">email</a>, <a href=\"https://github.com/pietervdvn/MapComplete/issues\">github</a> of <a href=\"https://www.openstreetmap.org/message/new/Pieter%20Vander%20Vennet\">een bericht op osm.org</a>",
"text2": "Twijfel je nog? We sommen de mogelijkheden hieronder op en beantwoorden enkele veelvoorkomende vragen",
"title": "MapComplete gebruiken in je eigen organisatie"
},

View file

@ -1 +1,131 @@
{}
{
"shared_questions": {
"description": {
"question": "Mayroon pa bang mga bagay na nau-ugnay at hindi mo maibigay sa mga nakaraang tanong? Idagdag dito.<br/><span style='font-size: small'>Huwag ulitin ang mga nai-saad na</span>"
},
"dog-access": {
"mappings": {
"0": {
"then": "Pinapayagan ang mga aso"
},
"1": {
"then": "<b>Hindi</b> pinapayagan ang mga aso"
},
"2": {
"then": "Pinapayagan ang mga aso kung may tali"
},
"3": {
"then": "Pinapayayagan ang mga aso, at malayang makatatakbo"
}
},
"question": "Pinapayagan ba ang mga aso sa establisyementong ito?"
},
"email": {
"question": "Ano ang email address ng {title()}?"
},
"level": {
"mappings": {
"0": {
"then": "Nasa ilalim ng lupa"
},
"1": {
"then": "Nasa unang palapag"
},
"2": {
"then": "Nasa unang palapag"
},
"3": {
"then": "Nasa unang palapag"
},
"4": {
"then": "Nasa silong"
}
},
"question": "Anong palapag matatagpuan ang tampók?",
"render": "Natagpuan sa ika-{level} na palapag"
},
"opening_hours": {
"question": "Anong oras nagbubukas ang {title()}?",
"render": "<h3>Mga oras na bukas</h3>{opening_hours_table(opening_hours)}"
},
"payment-options": {
"mappings": {
"0": {
"then": "Tinatanggap ang salapi rito"
},
"1": {
"then": "Tinatanggap ang mga tarhetang pambayad dito"
}
},
"question": "Anong mga paraang pambayad ang tinatanggap dito?"
},
"payment-options-advanced": {
"override": {
"mappings+": {
"0": {
"then": "Binabayaran gamit ang sariling app"
},
"1": {
"then": "Binabayaran gamit ang membership card"
}
}
}
},
"phone": {
"question": "Ano ang telepono ng {title()}?"
},
"service:electricity": {
"mappings": {
"0": {
"then": "Maraming mga intsupe (sockets) na maaring gamitin ng mga suki na nakaupo sa loob, pang-karga ng kanilang mga elektroniks"
},
"1": {
"then": "May iilang mga intsupe (sockets) na maaring gamitin ng mga suki na nakaupo sa loob, pang-karga ng kanilang mga elektroniks"
},
"2": {
"then": "Walang mga intsupe (socket) para sa mga suki, pero maaring tanungin ang kawani kung magpapa-karga"
},
"3": {
"then": "Walang mga intsupe (socket) para sa mga suking nakaubo sa loob"
}
},
"question": "Merong bang mga intsupe (outlet) sa loob, para sa mga suki?"
},
"website": {
"question": "Ano ang website ng {title()}?"
},
"wheelchair-access": {
"mappings": {
"0": {
"then": "Ang lugar na ito ay angkop sa mga gumagamit ng wheelchair"
},
"1": {
"then": "Ang lugar na ito ay kayang abutin ng mga naka-wheelchair"
},
"2": {
"then": "Kayang abutin ang lugar na ito ng mga naka-wheelchair, pero hindi madali"
},
"3": {
"then": "Ang lugar na ito ay hindi kayang abutin ng naka-wheelchair"
}
},
"question": "Kaya bang abutin ang lugar na ito ng naka-wheelchair?"
},
"wikipedia": {
"mappings": {
"0": {
"then": "Wala pang kawing ng Wikipedia page"
}
},
"question": "Ano ang nau-ukol na entidad sa Wikidata?"
},
"wikipedialink": {
"mappings": {
"0": {
"then": "Hindi naka-ugnay sa Wikipedia"
}
},
"question": "Ano ang nau-ukol na partida sa Wikipedia?"
}
}
}

View file

@ -3,6 +3,51 @@
"description": "En aquest mapa , qualsevol pot trobar i marcar els desfibril·ladors externs automàtics més propers",
"title": "Mapa obert de desfibril·ladors (DEA)"
},
"artwork": {
"description": "Benvingut a Open Artwork Map, un mapa d'estàtues, busts, grafitis i altres obres d'art del tot el món",
"title": "Open Artwork Map"
},
"benches": {
"description": "Aquest mapa mostra tots els bancs que hi ha a OpenStreetMap: bancs individuals i els bancs que hi ha a parades o refugis de transport públic. Amb un compte d'OpenStreetMap pots afegir nous bancs o editar detalls dels existents.",
"shortDescription": "Un mapa de bancs",
"title": "Bancs"
},
"bicycle_rental": {
"title": "Lloguer de bicicletes"
},
"bookcases": {
"title": "Open Bookcase Map"
},
"cafes_and_pubs": {
"description": "Bars i pubs",
"title": "Cafés i bars"
},
"campersite": {
"layers": {
"0": {
"description": "llocs d'acampada",
"name": "Llocs d'acampada",
"presets": {
"0": {
"title": "un lloc d'acampada"
}
},
"tagRenderings": {
"caravansites-internet": {
"mappings": {
"0": {
"then": "Hi ha accés a internet"
}
}
}
}
}
},
"title": "Llocs d'acampada"
},
"charging_stations": {
"title": "Estacions de càrrega"
},
"climbing": {
"layers": {
"0": {
@ -31,6 +76,13 @@
"name": {
"render": "<strong>{name}</strong>"
}
},
"title": {
"mappings": {
"2": {
"then": "Llocs d'escalada"
}
}
}
},
"4": {
@ -40,10 +92,298 @@
}
}
}
},
"overrideAll": {
"tagRenderings+": {
"2": {
"mappings": {
"2": {
"then": "Només clients"
},
"3": {
"then": "Només membres del club"
}
}
}
},
"units+": {
"0": {
"applicableUnits": {
"0": {
"human": " metre"
},
"1": {
"human": " peus"
}
}
}
}
},
"title": "Open Climbing Map"
},
"cycle_highways": {
"layers": {
"0": {
"name": "vies ciclistes",
"title": {
"render": "via ciclista"
}
}
},
"title": "Vies ciclistes"
},
"cycle_infra": {
"title": "Infraestructura per a bicicletes"
},
"cyclenodes": {
"layers": {
"1": {
"name": "nodes"
}
}
},
"cyclestreets": {
"layers": {
"0": {
"name": "Carrers ciclistes"
},
"1": {
"name": "Futur carrer ciclista",
"title": {
"render": "Futur carrer ciclista"
}
},
"2": {
"name": "Tots els carrers",
"title": {
"render": "Carrer"
}
}
},
"shortDescription": "Un mapa de carrers ciclistes",
"title": "Carrers ciclistes"
},
"drinking_water": {
"title": "Aigua potable"
},
"entrances": {
"title": "Entrades"
},
"etymology": {
"title": "Open Etymology Map"
},
"facadegardens": {
"layers": {
"0": {
"description": "Jardins verticals",
"name": "Jardins verticals",
"presets": {
"0": {
"description": "Afegeix un jardí vertical",
"title": "un jardí vertical"
}
},
"title": {
"render": "Jardí vertical"
}
}
},
"title": "Jardins verticals"
},
"food": {
"title": "Restaurants i menjar ràpid"
},
"fritures": {
"layers": {
"0": {
"override": {
"name": "Botigues de patates"
}
}
},
"title": "Botigues de patates"
},
"hackerspaces": {
"layers": {
"0": {
"tagRenderings": {
"hackerspaces-opening_hours": {
"mappings": {
"0": {
"then": "Obert 24/7"
}
},
"render": "{opening_hours_table()}"
}
},
"title": {
"mappings": {
"0": {
"then": " {name}"
}
}
}
}
}
},
"maps": {
"title": "Un mapa de mapes"
},
"nature": {
"title": "A la natura"
},
"notes": {
"title": "Notes a OpenStreetMap"
},
"observation_towers": {
"title": "Torres d'observació"
},
"openwindpowermap": {
"layers": {
"0": {
"title": {
"mappings": {
"0": {
"then": "{name}"
}
}
},
"units": {
"0": {
"applicableUnits": {
"0": {
"human": " megavats"
},
"1": {
"human": " quilovats"
},
"2": {
"human": " vats"
},
"3": {
"human": " gigavats"
}
}
},
"1": {
"applicableUnits": {
"0": {
"human": " metre"
}
}
}
}
}
},
"title": "OpenWindPowerMap"
},
"personal": {
"description": "Crea una interfície basada en totes les capes disponibles de totes les interfícies",
"title": "Interfície personal"
},
"playgrounds": {
"shortDescription": "Un mapa de parcs infantils",
"title": "Parcs infantils"
},
"postal_codes": {
"description": "Codis postals",
"layers": {
"0": {
"name": "codis postals"
},
"2": {
"name": "ajuntaments"
}
},
"shortDescription": "Codis postals",
"title": "Codis postals"
},
"postboxes": {
"layers": {
"0": {
"name": "Bústies",
"presets": {
"0": {
"title": "una bústia"
}
},
"title": {
"render": "Bústia"
}
},
"1": {
"filter": {
"0": {
"options": {
"0": {
"question": "Actualment obert"
}
}
}
},
"name": "Oficines de correus",
"presets": {
"0": {
"title": "una oficina de correus"
}
},
"title": {
"render": "Oficina de correus"
}
}
}
},
"shops": {
"title": "Open Shop Map"
},
"sidewalks": {
"description": "Petició experimental",
"layers": {
"0": {
"name": "Voreres",
"title": {
"render": "{name}"
}
}
},
"shortDescription": "Mapejat de voreres",
"title": "Voreres"
},
"sport_pitches": {
"title": "Camps d'esports"
},
"street_lighting": {
"layers": {
"1": {
"name": "Il·luminació de carrers",
"title": {
"render": "Il·luminació del carrer"
}
},
"2": {
"name": "Tots els carrers",
"title": {
"render": "Carrer"
}
}
},
"title": "Il·luminació als carrers"
},
"surveillance": {
"title": "Vigilància sota vigilància"
},
"toilets": {
"title": "Open Toilet Map"
},
"trees": {
"description": "Mapeja tots els arbres.",
"shortDescription": "Mapeja tots els arbres",
"title": "Arbres"
},
"waste": {
"title": "Brossa"
},
"waste_basket": {
"title": "Papepera"
}
}

View file

@ -10,6 +10,7 @@ import LayerConfig from "../../../../Models/ThemeConfig/LayerConfig";
import {ExtractImages} from "../../../../Models/ThemeConfig/Conversion/FixImages";
import * as cyclofix from "../../../../assets/generated/themes/cyclofix.json"
import {Tag} from "../../../../Logic/Tags/Tag";
import {DesugaringContext} from "../../../../Models/ThemeConfig/Conversion/Conversion";
const themeConfigJson: LayoutConfigJson = {
@ -69,7 +70,6 @@ describe("PrepareTheme", () => {
})
it("should apply override", () => {
const sharedLayers = new Map<string, LayerConfigJson>()
@ -82,8 +82,65 @@ describe("PrepareTheme", () => {
const layerUnderTest = <LayerConfig> themeConfig.layers.find(l => l.id === "public_bookcase")
expect(layerUnderTest.source.geojsonSource).eq("https://example.com/data.geojson")
})
})
it("should remove names which are overriden with null", () => {
const testLayer: LayerConfigJson = {
source: {
osmTags: "x=y"
},
id: "layer-example",
name: {
en: "Test layer - please ignore"
},
titleIcons : [],
mapRendering: null
}
const ctx: DesugaringContext = {
sharedLayers: new Map<string, LayerConfigJson>([[
"layer-example", testLayer
]]),
tagRenderings: new Map<string, TagRenderingConfigJson>()
}
const layout : LayoutConfigJson=
{
description: "A testing theme",
icon: "",
id: "",
layers: [
"layer-example",
{
"builtin": "layer-example",
"override": {
"name": null,
"minzoom": 18
}
}
],
maintainer: "Me",
startLat: 0,
startLon: 0,
startZoom: 0,
title: "Test theme",
version: ""
}
const rewritten = new PrepareTheme(ctx, {
skipDefaultLayers: true
}).convertStrict(layout, "test")
expect(rewritten.layers[0]).deep.eq(testLayer)
expect(rewritten.layers[1]).deep.eq({
source: {
osmTags: "x=y"
},
id: "layer-example",
name:null,
minzoom: 18,
mapRendering: null,
titleIcons: []
})
})
})
describe("ExtractImages", () => {
it("should find all images in a themefile", () => {