Add the requirement for all tagRendering-objects to have an ID (including rewrites and multi-builtins) to make translations easier

This commit is contained in:
Pieter Vander Vennet 2022-08-05 13:11:50 +02:00
parent af60bc566a
commit 21aca85515
19 changed files with 385 additions and 308 deletions

View file

@ -288,8 +288,9 @@ export interface LayerConfigJson {
tagRenderings?: tagRenderings?:
(string (string
| { builtin: string | string[], override: Partial<QuestionableTagRenderingConfigJson> } | { builtin: string | string[], override: Partial<QuestionableTagRenderingConfigJson> }
| { id: string, builtin: string[], override: Partial<QuestionableTagRenderingConfigJson> }
| QuestionableTagRenderingConfigJson | QuestionableTagRenderingConfigJson
| RewritableConfigJson<(string | { builtin: string, override: Partial<QuestionableTagRenderingConfigJson> } | QuestionableTagRenderingConfigJson)[]> | (RewritableConfigJson<(string | { builtin: string, override: Partial<QuestionableTagRenderingConfigJson> } | QuestionableTagRenderingConfigJson)[]> & {id: string})
) [], ) [],

View file

@ -291,6 +291,7 @@
] ]
}, },
{ {
"id": "rental_types",
"rewrite": { "rewrite": {
"sourceString": [ "sourceString": [
"bicycle_type", "bicycle_type",

View file

@ -258,6 +258,7 @@
"id": "Rock type (crag/rock/cliff only)" "id": "Rock type (crag/rock/cliff only)"
}, },
{ {
"id": "default_climbing_questions",
"builtin": [ "builtin": [
"climbing.website", "climbing.website",
"climbing.fee", "climbing.fee",

View file

@ -74,12 +74,11 @@
"phone", "phone",
"email", "email",
{ {
"builtin": [ "builtin": "climbing.fee"
"climbing.fee"
]
}, },
"opening_hours", "opening_hours",
{ {
"id": "climbing_gym_questions",
"builtin": [ "builtin": [
"climbing.average_length", "climbing.average_length",
"climbing.min_difficulty", "climbing.min_difficulty",

View file

@ -150,6 +150,7 @@
"id": "hackerspaces-opening_hours" "id": "hackerspaces-opening_hours"
}, },
{ {
"id": "available_devices",
"rewrite": { "rewrite": {
"sourceString": [ "sourceString": [
"device-key", "device-key",

View file

@ -950,6 +950,7 @@
} }
}, },
{ {
"id": "contact_information",
"builtin": [ "builtin": [
"website", "website",
"email", "email",

View file

@ -134,6 +134,7 @@
"condition": "amenity=university" "condition": "amenity=university"
}, },
{ {
"id": "school-questions",
"builtin": [ "builtin": [
"school.capacity", "school.capacity",
"school.gender" "school.gender"

View file

@ -1,13 +1,19 @@
{ {
"id": "mapcomplete-changes", "id": "mapcomplete-changes",
"title": { "title": {
"en": "Changes made with MapComplete" "en": "Changes made with MapComplete",
"de": "Mit MapComplete vorgenommene Änderungen",
"fr": "Changements faits avec MapComplete"
}, },
"shortDescription": { "shortDescription": {
"en": "Shows changes made by MapComplete" "en": "Shows changes made by MapComplete",
"de": "Zeigt die mit MapComplete vorgenommenen Änderungen",
"fr": "Montrer les changements faits avec MapComplete"
}, },
"description": { "description": {
"en": "This maps shows all the changes made with MapComplete" "en": "This maps shows all the changes made with MapComplete",
"de": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
"fr": "Cette carte affiche toutes les modifications réalisées avec MapComplete"
}, },
"maintainer": "", "maintainer": "",
"icon": "./assets/svg/logo.svg", "icon": "./assets/svg/logo.svg",
@ -22,7 +28,9 @@
{ {
"id": "mapcomplete-changes", "id": "mapcomplete-changes",
"name": { "name": {
"en": "Changeset centers" "en": "Changeset centers",
"de": "Zentrum der Änderungssätze",
"fr": "Centre du groupe de modifications"
}, },
"minzoom": 0, "minzoom": 0,
"source": { "source": {
@ -36,35 +44,47 @@
], ],
"title": { "title": {
"render": { "render": {
"en": "Changeset for {theme}" "en": "Changeset for {theme}",
"de": "Änderungssatz für {theme}",
"fr": "Groupe de modifications pour {theme}"
} }
}, },
"description": { "description": {
"en": "Shows all MapComplete changes" "en": "Shows all MapComplete changes",
"de": "Zeigt alle MapComplete Änderungen",
"fr": "Afficher toutes les modifications MapComplete"
}, },
"tagRenderings": [ "tagRenderings": [
{ {
"id": "render_id", "id": "render_id",
"render": { "render": {
"en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>" "en": "Changeset <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>",
"de": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>",
"fr": "Groupe de modifications <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>"
} }
}, },
{ {
"id": "contributor", "id": "contributor",
"render": { "render": {
"en": "Change made by <a href='https://openstreetmap.org/user/{_last_edit:contributor}' target='_blank'>{_last_edit:contributor}</a>" "en": "Change made by <a href='https://openstreetmap.org/user/{_last_edit:contributor}' target='_blank'>{_last_edit:contributor}</a>",
"de": "Geändert von <a href='https://openstreetmap.org/user/{_last_edit:contributor}' target='_blank'>{_last_edit:contributor}</a>",
"fr": "Modification faite par <a href='https://openstreetmap.org/user/{_last_edit:contributor}' target='_blank'>{_last_edit:contributor}</a>"
} }
}, },
{ {
"id": "theme", "id": "theme",
"render": { "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>",
"fr": "Modification avec le thème <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
}, },
"mappings": [ "mappings": [
{ {
"if": "theme~http.*", "if": "theme~http.*",
"then": { "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>",
"fr": "Modification avec le thème <b>non-officiel</b> <a href='https://mapcomplete.osm.be/theme.html?userlayout={theme}'>{theme}</a>"
} }
} }
] ]
@ -368,7 +388,9 @@
} }
], ],
"question": { "question": {
"en": "Themename contains {search}" "en": "Themename contains {search}",
"de": "Themenname enthält {search}",
"fr": "Nom de thème contenant {search}"
} }
} }
] ]
@ -384,7 +406,9 @@
} }
], ],
"question": { "question": {
"en": "Made by contributor {search}" "en": "Made by contributor {search}",
"de": "Erstellt von {search}",
"fr": "Réalisé par {search}"
} }
} }
] ]
@ -400,7 +424,9 @@
} }
], ],
"question": { "question": {
"en": "<b>Not</b> made by contributor {search}" "en": "<b>Not</b> made by contributor {search}",
"de": "<b>Nicht</b> erstellt von {search}",
"fr": "<b>Non</b> réalisé par {search}"
} }
} }
] ]
@ -415,7 +441,9 @@
{ {
"id": "link_to_more", "id": "link_to_more",
"render": { "render": {
"en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>" "en": "More statistics can be found <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>here</a>",
"de": "Weitere Statistiken finden Sie <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>",
"fr": "Dautres statistiques sont disponibles <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>ici</a>"
} }
}, },
{ {

View file

@ -97,6 +97,7 @@
} }
}, },
{ {
"id": "left-right-questions",
"rewrite": { "rewrite": {
"sourceString": [ "sourceString": [
"left|right" "left|right"
@ -117,26 +118,38 @@
}, },
{ {
"id": "has_sidewalk_left|right", "id": "has_sidewalk_left|right",
"question": "Is there a sidewalk on this side of the road?", "question": {
"en": "Is there a sidewalk on this side of the road?"
},
"mappings": [ "mappings": [
{ {
"if": "sidewalk:left|right=yes", "if": "sidewalk:left|right=yes",
"then": "Yes, there is a sidewalk on this side of the road" "then": {
"en": "Yes, there is a sidewalk on this side of the road"
}
}, },
{ {
"if": "sidewalk:left|right=no", "if": "sidewalk:left|right=no",
"then": "No, there is no sidewalk to walk on" "then": {
"en": "No, there is no sidewalk to walk on"
}
}, },
{ {
"if": "sidewalk:left|right=separate", "if": "sidewalk:left|right=separate",
"then": "There is a separately mapped sidewalk to walk on" "then": {
"en": "There is a separately mapped sidewalk to walk on"
}
} }
] ]
}, },
{ {
"id": "sidewalk_width_left|right", "id": "sidewalk_width_left|right",
"question": "What is the width of the sidewalk on this side of the road?", "question": {
"render": "This sidewalk is {sidewalk:left|right:width}m wide", "en": "What is the width of the sidewalk on this side of the road?"
},
"render": {
"en": "This sidewalk is {sidewalk:left|right:width}m wide"
},
"condition": "sidewalk:left|right=yes", "condition": "sidewalk:left|right=yes",
"freeform": { "freeform": {
"key": "sidewalk:left|right:width", "key": "sidewalk:left|right:width",

View file

@ -178,7 +178,7 @@
}, },
"bicycle_rental": { "bicycle_rental": {
"tagRenderings": { "tagRenderings": {
"9": { "rental_types": {
"rewrite": { "rewrite": {
"into": { "into": {
"4": { "4": {

View file

@ -379,33 +379,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"rewrite": {
"into": {
"0": {
"1": "bycykler"
},
"1": {
"1": "elektriske cykler"
},
"2": {
"1": "børnecykler"
},
"3": {
"1": "BMX-cykler"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "cykeltasker"
},
"6": {
"1": "tandem"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -446,6 +419,33 @@
} }
}, },
"question": "Hvilken slags cykeludlejning er dette?" "question": "Hvilken slags cykeludlejning er dette?"
},
"rental_types": {
"rewrite": {
"into": {
"0": {
"1": "bycykler"
},
"1": {
"1": "elektriske cykler"
},
"2": {
"1": "børnecykler"
},
"3": {
"1": "BMX-cykler"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "cykeltasker"
},
"6": {
"1": "tandem"
}
}
}
} }
}, },
"title": { "title": {

View file

@ -442,39 +442,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"renderings": {
"0": {
"question": "Wie viele type_plural können hier gemietet werden?",
"render": "{capacity:bicycle_type} type_plural können hier gemietet werden"
}
},
"rewrite": {
"into": {
"0": {
"1": "Stadträder"
},
"1": {
"1": "Elektrofahrräder"
},
"2": {
"1": "Kinderfahrräder"
},
"3": {
"1": "BMX-Räder"
},
"4": {
"1": "Mountainbikes"
},
"5": {
"1": "Fahrradtaschen"
},
"6": {
"1": "Tandems"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -527,6 +494,39 @@
} }
}, },
"question": "Was ist das für ein Fahrradverleih?" "question": "Was ist das für ein Fahrradverleih?"
},
"rental_types": {
"renderings": {
"0": {
"question": "Wie viele type_plural können hier gemietet werden?",
"render": "{capacity:bicycle_type} type_plural können hier gemietet werden"
}
},
"rewrite": {
"into": {
"0": {
"1": "Stadträder"
},
"1": {
"1": "Elektrofahrräder"
},
"2": {
"1": "Kinderfahrräder"
},
"3": {
"1": "BMX-Räder"
},
"4": {
"1": "Mountainbikes"
},
"5": {
"1": "Fahrradtaschen"
},
"6": {
"1": "Tandems"
}
}
}
} }
}, },
"title": { "title": {
@ -4069,7 +4069,7 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"6": { "available_devices": {
"renderings": { "renderings": {
"0": { "0": {
"mappings": { "mappings": {
@ -4399,11 +4399,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"5": {
"override": {
"question": "Wann ist diese Kinderbetreuung geöffnet?"
}
},
"capacity": { "capacity": {
"question": "Wie viele Kinder können hier maximal angemeldet werden?", "question": "Wie viele Kinder können hier maximal angemeldet werden?",
"render": "Diese Einrichtung bietet Platz für {capacity} Kinder" "render": "Diese Einrichtung bietet Platz für {capacity} Kinder"
@ -4422,6 +4417,11 @@
"name": { "name": {
"question": "Wie lautet der Name dieser Einrichtung?", "question": "Wie lautet der Name dieser Einrichtung?",
"render": "Diese Einrichtung hat den Namen <b>{name}</b>" "render": "Diese Einrichtung hat den Namen <b>{name}</b>"
},
"opening_hours": {
"override": {
"question": "Wann ist diese Kinderbetreuung geöffnet?"
}
} }
}, },
"title": { "title": {
@ -5655,16 +5655,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"8": {
"override": {
"+mappings": {
"0": {
"then": "Die Unterrichtssprache der Schule ist unbekannt"
}
},
"question": "Was ist die Hauptsprache dieser Schule?<div class='subtle'>Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?</div>"
}
},
"capacity": { "capacity": {
"question": "Wie viele Schüler können sich maximal an dieser Schule anmelden?", "question": "Wie viele Schüler können sich maximal an dieser Schule anmelden?",
"render": "Diese Schule kann höchstens {capacity} Schüler aufnehmen" "render": "Diese Schule kann höchstens {capacity} Schüler aufnehmen"
@ -5748,6 +5738,16 @@
}, },
"question": "Richtet sich diese Schule an Schüler mit besonderem Förderbedarf? Über welche strukturellen Einrichtungen verfügt diese Schule?<div class='subtle'>Ad-hoc ", "question": "Richtet sich diese Schule an Schüler mit besonderem Förderbedarf? Über welche strukturellen Einrichtungen verfügt diese Schule?<div class='subtle'>Ad-hoc ",
"render": "Diese Schule verfügt über Einrichtungen für Schüler mit {school:for}" "render": "Diese Schule verfügt über Einrichtungen für Schüler mit {school:for}"
},
"wikidata.school-language": {
"override": {
"+mappings": {
"0": {
"then": "Die Unterrichtssprache der Schule ist unbekannt"
}
},
"question": "Was ist die Hauptsprache dieser Schule?<div class='subtle'>Welche Sprache wird mit den Schülern in den nicht sprachbezogenen Kursen und mit der Verwaltung gesprochen?</div>"
}
} }
}, },
"title": { "title": {
@ -5834,12 +5834,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"2": {
"override": {
"question": "Um was für ein Geschäft handelt es sich?",
"render": "Das ist ein {shop}"
}
},
"copyshop-print-sizes": { "copyshop-print-sizes": {
"mappings": { "mappings": {
"0": { "0": {
@ -5860,6 +5854,12 @@
}, },
"question": "Welche Papierformate bietet das Geschäft an?" "question": "Welche Papierformate bietet das Geschäft an?"
}, },
"id_presets.shop_types": {
"override": {
"question": "Um was für ein Geschäft handelt es sich?",
"render": "Das ist ein {shop}"
}
},
"shops-name": { "shops-name": {
"question": "Wie ist der Name dieses Geschäfts?", "question": "Wie ist der Name dieses Geschäfts?",
"render": "Der Name des Geschäfts lautet <i>{name}</i>" "render": "Der Name des Geschäfts lautet <i>{name}</i>"

View file

@ -442,39 +442,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"renderings": {
"0": {
"question": "How much type_plural can be rented here?",
"render": "{capacity:bicycle_type} type_plural can be rented here"
}
},
"rewrite": {
"into": {
"0": {
"1": "city bikes"
},
"1": {
"1": "electrical bikes"
},
"2": {
"1": "bikes for children"
},
"3": {
"1": "BMX bikes"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "bicycle panniers"
},
"6": {
"1": "tandem"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -527,6 +494,39 @@
} }
}, },
"question": "What kind of bicycle rental is this?" "question": "What kind of bicycle rental is this?"
},
"rental_types": {
"renderings": {
"0": {
"question": "How much type_plural can be rented here?",
"render": "{capacity:bicycle_type} type_plural can be rented here"
}
},
"rewrite": {
"into": {
"0": {
"1": "city bikes"
},
"1": {
"1": "electrical bikes"
},
"2": {
"1": "bikes for children"
},
"3": {
"1": "BMX bikes"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "bicycle panniers"
},
"6": {
"1": "tandem"
}
}
}
} }
}, },
"title": { "title": {
@ -4069,7 +4069,7 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"6": { "available_devices": {
"renderings": { "renderings": {
"0": { "0": {
"mappings": { "mappings": {
@ -4399,11 +4399,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"5": {
"override": {
"question": "When is this childcare opened?"
}
},
"capacity": { "capacity": {
"question": "How much kids (at most) can be enrolled here?", "question": "How much kids (at most) can be enrolled here?",
"render": "This facility has room for {capacity} kids" "render": "This facility has room for {capacity} kids"
@ -4422,6 +4417,11 @@
"name": { "name": {
"question": "What is the name of this facility?", "question": "What is the name of this facility?",
"render": "This facility is named <b>{name}</b>" "render": "This facility is named <b>{name}</b>"
},
"opening_hours": {
"override": {
"question": "When is this childcare opened?"
}
} }
}, },
"title": { "title": {
@ -5655,16 +5655,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"8": {
"override": {
"+mappings": {
"0": {
"then": "The main language of this school is unknown"
}
},
"question": "What is the main language of this school?<div class='subtle'>What language is spoken with the students in non-language related courses and with the administration?</div>"
}
},
"capacity": { "capacity": {
"question": "How much students can at most enroll in this school?", "question": "How much students can at most enroll in this school?",
"render": "This school can enroll at most {capacity} students" "render": "This school can enroll at most {capacity} students"
@ -5748,6 +5738,16 @@
}, },
"question": "Does this school target students with a special need? Which structural facilities does this school have?<div class='subtle'>Ad-hoc ", "question": "Does this school target students with a special need? Which structural facilities does this school have?<div class='subtle'>Ad-hoc ",
"render": "This school has facilities for students with {school:for}" "render": "This school has facilities for students with {school:for}"
},
"wikidata.school-language": {
"override": {
"+mappings": {
"0": {
"then": "The main language of this school is unknown"
}
},
"question": "What is the main language of this school?<div class='subtle'>What language is spoken with the students in non-language related courses and with the administration?</div>"
}
} }
}, },
"title": { "title": {
@ -5834,12 +5834,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"2": {
"override": {
"question": "What kind of shop is this?",
"render": "This is a {shop}"
}
},
"copyshop-print-sizes": { "copyshop-print-sizes": {
"mappings": { "mappings": {
"0": { "0": {
@ -5860,6 +5854,12 @@
}, },
"question": "What paper formats does this shop offer?" "question": "What paper formats does this shop offer?"
}, },
"id_presets.shop_types": {
"override": {
"question": "What kind of shop is this?",
"render": "This is a {shop}"
}
},
"shops-name": { "shops-name": {
"question": "What is the name of this shop?", "question": "What is the name of this shop?",
"render": "This shop is called <i>{name}</i>" "render": "This shop is called <i>{name}</i>"

View file

@ -75,7 +75,7 @@
}, },
"bicycle_rental": { "bicycle_rental": {
"tagRenderings": { "tagRenderings": {
"9": { "rental_types": {
"rewrite": { "rewrite": {
"into": { "into": {
"0": { "0": {

View file

@ -442,33 +442,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"rewrite": {
"into": {
"0": {
"1": "bicis de ciudad"
},
"1": {
"1": "bicis eléctricas"
},
"2": {
"1": "bicis infantiles"
},
"3": {
"1": "bicis BMX"
},
"4": {
"1": "bicis de montaña"
},
"5": {
"1": "alforjas de bicicleta"
},
"6": {
"1": "tándem"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -521,6 +494,33 @@
} }
}, },
"question": "¿Qué tipo de alquiler de bicicletas es este?" "question": "¿Qué tipo de alquiler de bicicletas es este?"
},
"rental_types": {
"rewrite": {
"into": {
"0": {
"1": "bicis de ciudad"
},
"1": {
"1": "bicis eléctricas"
},
"2": {
"1": "bicis infantiles"
},
"3": {
"1": "bicis BMX"
},
"4": {
"1": "bicis de montaña"
},
"5": {
"1": "alforjas de bicicleta"
},
"6": {
"1": "tándem"
}
}
}
} }
}, },
"title": { "title": {

View file

@ -442,39 +442,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"renderings": {
"0": {
"question": "Combien de type_plural peuvent être loués ici ?",
"render": "{capacity:bicycle_type} type_plural peuvent être loués ici"
}
},
"rewrite": {
"into": {
"0": {
"1": "vélos de ville"
},
"1": {
"1": "vélos électriques"
},
"2": {
"1": "vélos d'enfants"
},
"3": {
"1": "BMX"
},
"4": {
"1": "vélos de montagne"
},
"5": {
"1": "sacoches pour vélo"
},
"6": {
"1": "tandem"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -527,6 +494,39 @@
} }
}, },
"question": "De quel type de location de vélo s'agit-il ?" "question": "De quel type de location de vélo s'agit-il ?"
},
"rental_types": {
"renderings": {
"0": {
"question": "Combien de type_plural peuvent être loués ici ?",
"render": "{capacity:bicycle_type} type_plural peuvent être loués ici"
}
},
"rewrite": {
"into": {
"0": {
"1": "vélos de ville"
},
"1": {
"1": "vélos électriques"
},
"2": {
"1": "vélos d'enfants"
},
"3": {
"1": "BMX"
},
"4": {
"1": "vélos de montagne"
},
"5": {
"1": "sacoches pour vélo"
},
"6": {
"1": "tandem"
}
}
}
} }
}, },
"title": { "title": {
@ -3512,16 +3512,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"8": {
"override": {
"+mappings": {
"0": {
"then": "La langue principale de cette école est inconnue"
}
},
"question": "Quelle est la langue principale de cette école ?<div class='subtle'>Quelle langue est parlée avec les élèves des cours non linguistiques et avec l'administration ?</div>"
}
},
"capacity": { "capacity": {
"question": "Combien d'élèves peuvent s'inscrire au maximum dans cette école ?", "question": "Combien d'élèves peuvent s'inscrire au maximum dans cette école ?",
"render": "Cette école peut accueillir au maximum {capacity} étudiants" "render": "Cette école peut accueillir au maximum {capacity} étudiants"
@ -3605,6 +3595,16 @@
}, },
"question": "Est-ce que cet établissement scolaire s'adresse aux étudiants ayant des besoins particuliers? Quels types d'installation est-ce que cet établissement possède?<div class='subtle'>Ad-hoc ", "question": "Est-ce que cet établissement scolaire s'adresse aux étudiants ayant des besoins particuliers? Quels types d'installation est-ce que cet établissement possède?<div class='subtle'>Ad-hoc ",
"render": "Cet établissement scolaire a des installations pour étudiants ayant {school:for}" "render": "Cet établissement scolaire a des installations pour étudiants ayant {school:for}"
},
"wikidata.school-language": {
"override": {
"+mappings": {
"0": {
"then": "La langue principale de cette école est inconnue"
}
},
"question": "Quelle est la langue principale de cette école ?<div class='subtle'>Quelle langue est parlée avec les élèves des cours non linguistiques et avec l'administration ?</div>"
}
} }
}, },
"title": { "title": {
@ -3658,12 +3658,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"2": {
"override": {
"question": "Quel genre de magasin est-ce?",
"render": "C'est une {shop}"
}
},
"copyshop-print-sizes": { "copyshop-print-sizes": {
"mappings": { "mappings": {
"0": { "0": {
@ -3684,6 +3678,12 @@
}, },
"question": "Quels formats de papier cette boutique propose-t-elle ?" "question": "Quels formats de papier cette boutique propose-t-elle ?"
}, },
"id_presets.shop_types": {
"override": {
"question": "Quel genre de magasin est-ce?",
"render": "C'est une {shop}"
}
},
"shops-name": { "shops-name": {
"question": "Qu'est-ce que le nom de ce magasin?" "question": "Qu'est-ce que le nom de ce magasin?"
} }

View file

@ -442,39 +442,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"9": {
"renderings": {
"0": {
"question": "Hoeveel type_plural kunnen hier uitgeleend worden?",
"render": "{capacity:bicycle_type} type_plural kunnen hier uitgeleend worden"
}
},
"rewrite": {
"into": {
"0": {
"1": "stadsfietsen"
},
"1": {
"1": "elektrische fietsen"
},
"2": {
"1": "kinderfietsen"
},
"3": {
"1": "BMX-fietsen"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "fietstassen"
},
"6": {
"1": "tandem"
}
}
}
},
"bicycle-types": { "bicycle-types": {
"mappings": { "mappings": {
"0": { "0": {
@ -527,6 +494,39 @@
} }
}, },
"question": "Wat voor fietsverhuur is dit?" "question": "Wat voor fietsverhuur is dit?"
},
"rental_types": {
"renderings": {
"0": {
"question": "Hoeveel type_plural kunnen hier uitgeleend worden?",
"render": "{capacity:bicycle_type} type_plural kunnen hier uitgeleend worden"
}
},
"rewrite": {
"into": {
"0": {
"1": "stadsfietsen"
},
"1": {
"1": "elektrische fietsen"
},
"2": {
"1": "kinderfietsen"
},
"3": {
"1": "BMX-fietsen"
},
"4": {
"1": "mountainbike"
},
"5": {
"1": "fietstassen"
},
"6": {
"1": "tandem"
}
}
}
} }
}, },
"title": { "title": {
@ -4021,7 +4021,7 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"6": { "available_devices": {
"renderings": { "renderings": {
"0": { "0": {
"mappings": { "mappings": {
@ -4322,11 +4322,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"5": {
"override": {
"question": "Wanneer is deze kinderopvang geopend?"
}
},
"capacity": { "capacity": {
"question": "Hoeveel kinderen kunnen hier terecht?", "question": "Hoeveel kinderen kunnen hier terecht?",
"render": "Hier kunnen {capacity} kinderen terecht" "render": "Hier kunnen {capacity} kinderen terecht"
@ -4341,6 +4336,11 @@
} }
}, },
"question": "Wat voor faciliteit is dit?" "question": "Wat voor faciliteit is dit?"
},
"opening_hours": {
"override": {
"question": "Wanneer is deze kinderopvang geopend?"
}
} }
}, },
"title": { "title": {
@ -5381,16 +5381,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"8": {
"override": {
"+mappings": {
"0": {
"then": "De voertaal van deze school is niet gekend"
}
},
"question": "Wat is de voertaal van deze school?<div class='subtle'>Welke taal wordt met de studenten gesproken in niet-taal-gerelateerde vakken en met de administratie?</div>"
}
},
"capacity": { "capacity": {
"question": "Ten hoogste hoeveel studenten kunnen er les volgen in deze school?", "question": "Ten hoogste hoeveel studenten kunnen er les volgen in deze school?",
"render": "Deze school kan maximaal {capacity} studenten lesgeven" "render": "Deze school kan maximaal {capacity} studenten lesgeven"
@ -5474,6 +5464,16 @@
}, },
"question": "Richt deze school zich op leerlingen met een speciale zorgbehoefte? Welke structurele faciliteiten heeft deze school voor leerlingen met een extra zorgbehoefte?<div class='subtle'>Ad-hoc maatregelen zijn niet voldoende</div> ", "question": "Richt deze school zich op leerlingen met een speciale zorgbehoefte? Welke structurele faciliteiten heeft deze school voor leerlingen met een extra zorgbehoefte?<div class='subtle'>Ad-hoc maatregelen zijn niet voldoende</div> ",
"render": "Deze school richt zich op studenten met {school:for}" "render": "Deze school richt zich op studenten met {school:for}"
},
"wikidata.school-language": {
"override": {
"+mappings": {
"0": {
"then": "De voertaal van deze school is niet gekend"
}
},
"question": "Wat is de voertaal van deze school?<div class='subtle'>Welke taal wordt met de studenten gesproken in niet-taal-gerelateerde vakken en met de administratie?</div>"
}
} }
}, },
"title": { "title": {
@ -5527,12 +5527,6 @@
} }
}, },
"tagRenderings": { "tagRenderings": {
"2": {
"override": {
"question": "Wat voor soort winkel is dit?",
"render": "Dit is een {shop}"
}
},
"copyshop-print-sizes": { "copyshop-print-sizes": {
"mappings": { "mappings": {
"0": { "0": {
@ -5553,6 +5547,12 @@
}, },
"question": "Op welke papiergroottes kan deze zaak printen?" "question": "Op welke papiergroottes kan deze zaak printen?"
}, },
"id_presets.shop_types": {
"override": {
"question": "Wat voor soort winkel is dit?",
"render": "Dit is een {shop}"
}
},
"shops-name": { "shops-name": {
"question": "Wat is de naam van deze winkel?", "question": "Wat is de naam van deze winkel?",
"render": "Deze zaak heet <i>{name}</i>" "render": "Deze zaak heet <i>{name}</i>"

View file

@ -953,6 +953,28 @@
"description": "Layer showing sidewalks of highways", "description": "Layer showing sidewalks of highways",
"name": "Sidewalks", "name": "Sidewalks",
"tagRenderings": { "tagRenderings": {
"left-right-questions": {
"renderings": {
"1": {
"mappings": {
"0": {
"then": "Yes, there is a sidewalk on this side of the road"
},
"1": {
"then": "No, there is no sidewalk to walk on"
},
"2": {
"then": "There is a separately mapped sidewalk to walk on"
}
},
"question": "Is there a sidewalk on this side of the road?"
},
"2": {
"question": "What is the width of the sidewalk on this side of the road?",
"render": "This sidewalk is {sidewalk:left|right:width}m wide"
}
}
},
"streetname": { "streetname": {
"render": "This street is named {name}" "render": "This street is named {name}"
} }

View file

@ -55,7 +55,7 @@ class TranslationPart {
} }
const v = translations[translationsKey] const v = translations[translationsKey]
if (typeof (v) != "string") { if (typeof (v) != "string") {
console.error(`Non-string object at ${context} in translation while trying to add more translations to '` + translationsKey + "'. The offending object which _should_ be a translation is: ", v,"\n\nThe current object is:", this.toJson("en")) console.error(`Non-string object at ${context} in translation while trying to add more translations to '` + translationsKey + "'. The offending object which _should_ be a translation is: ", v, "\n\nThe current object is:", this.toJson("en"))
throw "Error in an object depicting a translation: a non-string object was found. (" + context + ")\n You probably put some other section accidentally in the translation" throw "Error in an object depicting a translation: a non-string object was found. (" + context + ")\n You probably put some other section accidentally in the translation"
} }
this.contents.set(translationsKey, v) this.contents.set(translationsKey, v)
@ -100,8 +100,19 @@ class TranslationPart {
console.warn("Got a null value for key ", key) console.warn("Got a null value for key ", key)
continue continue
} }
if (typeof v !== "object") {
continue;
}
if (context.endsWith(".tagRenderings")) {
if (v["id"] === undefined) {
if (v["builtin"] !== undefined && typeof v["builtin"] === "string") {
key = v["builtin"]
} else {
throw "At " + context + ": every object within a tagRenderings-list should have an id. " + JSON.stringify(v) + " has no id"
}
} else {
if (v["id"] !== undefined && context.endsWith(".tagRenderings")) {
// We use the embedded id as key instead of the index as this is more stable // We use the embedded id as key instead of the index as this is more stable
// Note: indonesian is shortened as 'id' as well! // Note: indonesian is shortened as 'id' as well!
if (v["en"] !== undefined || v["nl"] !== undefined) { if (v["en"] !== undefined || v["nl"] !== undefined) {
@ -115,11 +126,9 @@ class TranslationPart {
} }
} }
} }
if (typeof v !== "object") {
continue;
} }
if (!this.contents.get(key)) { if (!this.contents.get(key)) {
this.contents.set(key, new TranslationPart()) this.contents.set(key, new TranslationPart())
} }
@ -591,7 +600,7 @@ function mergeThemeTranslations() {
} }
} }
if(!existsSync("./langs/themes")){ if (!existsSync("./langs/themes")) {
mkdirSync("./langs/themes") mkdirSync("./langs/themes")
} }
const themeOverwritesWeblate = process.argv[2] === "--ignore-weblate" const themeOverwritesWeblate = process.argv[2] === "--ignore-weblate"