From 9a7efb0cb74c3ebf1865b0ddd9058d5239365c7a Mon Sep 17 00:00:00 2001 From: Collin Beczak Date: Tue, 7 Apr 2026 08:29:08 -0500 Subject: [PATCH 1/3] bump to v3.18.1 --- CHANGELOG.md | 23 +++++++++++++++++++++++ lang/en-US.json | 5 +++-- package.json | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c5c00833..16177051f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,29 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +## [v3.18.1] - 2026-04-07 + +Released with [maproulette-backend_v4.8.6](https://github.com/maproulette/maproulette-backend/releases/tag/v4.8.6) + +## What's Changed +* Remove Test Environment Notice component and related messages from AdminPane. by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2812 +* Bump flatted from 3.2.9 to 3.4.2 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2810 +* Update translations for past duration options across multiple languages by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2815 +* Add task counting functionality to GeoJSON upload process by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2813 +* Add layout name input and enhance layout comparison in WidgetWorkspace by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2814 +* Bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2817 +* Bump lodash-es from 4.17.23 to 4.18.1 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2820 +* Bump vite from 6.4.1 to 6.4.2 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2824 +* Bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2826 +* Bump brace-expansion by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2825 +* Fix property replacement to handle null values by using nullish coalescing operator. Add test to ensure null property values are replaced with empty strings. by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2827 + +## MR2 Changes +* Add boundingGeometries parsing from request body by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1219 +* Fix leaderboard builder to include points for actions on deleted tasks by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1221 + +**Full Changelog**: https://github.com/maproulette/maproulette3/compare/v3.18.0...v3.18.1 + ## [v3.18.0] - 2026-03-18 Released with [maproulette-backend_v4.8.5](https://github.com/maproulette/maproulette-backend/releases/tag/v4.8.5) diff --git a/lang/en-US.json b/lang/en-US.json index 5e8c971c6..84cc2a32c 100644 --- a/lang/en-US.json +++ b/lang/en-US.json @@ -924,14 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Existing file will be used", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", - "GeoJSONUploadModal.countingTasks": "Counting tasks\u2026", - "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GlobalActivity.title": "Global Activity", "Grant.Role.admin": "Admin", "Grant.Role.read": "Read", @@ -1510,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edit Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Export Layout", "WidgetWorkspace.controls.importConfiguration.label": "Import Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Reset Layout to Default", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/package.json b/package.json index 4e8301dd4..c0f7f39e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "maproulette3", - "version": "3.17.19", + "version": "3.18.1", "type": "module", "private": true, "scripts": { From 6ed7a689e90fff6583936f5d68bb9e3f05810eda Mon Sep 17 00:00:00 2001 From: Collin Beczak Date: Tue, 7 Apr 2026 08:35:24 -0500 Subject: [PATCH 2/3] update languages --- lang/af.json | 4 ++ lang/cs_CZ.json | 4 ++ lang/da_DK.json | 8 ++- lang/de.json | 106 ++++++++++++++++---------------- lang/es.json | 8 ++- lang/fa_IR.json | 4 ++ lang/fr.json | 158 +++++++++++++++++++++++++----------------------- lang/it_IT.json | 4 ++ lang/ja.json | 4 ++ lang/ko.json | 4 ++ lang/nl.json | 8 ++- lang/pl.json | 4 ++ lang/pt_BR.json | 4 ++ lang/pt_PT.json | 4 ++ lang/ru_RU.json | 4 ++ lang/sr.json | 4 ++ lang/tr.json | 4 ++ lang/uk.json | 4 ++ lang/vi.json | 4 ++ lang/zh_TW.json | 34 ++++++----- 20 files changed, 229 insertions(+), 149 deletions(-) diff --git a/lang/af.json b/lang/af.json index b719b0992..a5ce43daf 100644 --- a/lang/af.json +++ b/lang/af.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Existing file will be used", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Global Activity", "Grant.Role.admin": "Admin", "Grant.Role.read": "Read", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edit Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Export Layout", "WidgetWorkspace.controls.importConfiguration.label": "Import Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Reset Layout to Default", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/lang/cs_CZ.json b/lang/cs_CZ.json index 47f15529c..455c1f31a 100644 --- a/lang/cs_CZ.json +++ b/lang/cs_CZ.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Bude použit existující soubor", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Globální aktivita", "Grant.Role.admin": "Administrátor", "Grant.Role.read": "Čtení", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edit Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Export Layout", "WidgetWorkspace.controls.importConfiguration.label": "Import Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Reset Layout to Default", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/lang/da_DK.json b/lang/da_DK.json index c6670f992..9e6adf5bf 100644 --- a/lang/da_DK.json +++ b/lang/da_DK.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Slip GeoJSON-filen her, eller klik for at vælge fil", "Form.textUpload.promptJSON": "Slip JSON-filen her eller klik for at vælge fil", "Form.textUpload.readonly": "Eksisterende fil vil blive brugt", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Træk en GeoJSON-fil herhen, eller klik for at uploade", "GeoJSONUploadModal.error.invalid": "Ugyldig GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "Der blev ikke fundet nogen polygon-objekter i filen", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Opret virtuel udfordring fra GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygoner}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Global aktivitet", "Grant.Role.admin": "Admin", "Grant.Role.read": "Læs", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "Indeværende måned", "PastDurationSelector.customRange.endDate": "Slutdato", "PastDurationSelector.customRange.startDate": "Startdato", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "Seneste {months, plural, one {måned} other {# måneder}}", + "PastDurationSelector.pastYear.selectOption": "Seneste år", "PointsTicker.label": "Mine point", "PopularChallenges.header": "Populære udfordringer", "PriorityBoundsLayer.priority.high": "Høj prioritet", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Rediger layout", "WidgetWorkspace.controls.exportConfiguration.label": "Eksporter layout", "WidgetWorkspace.controls.importConfiguration.label": "Importer layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Nulstil layout til standard", "WidgetWorkspace.controls.saveAsDefault.label": "Gem som standard", "WidgetWorkspace.controls.saveConfiguration.label": "Redigering færdig", diff --git a/lang/de.json b/lang/de.json index 1081b166a..7fa6a1468 100644 --- a/lang/de.json +++ b/lang/de.json @@ -140,8 +140,8 @@ "Admin.EditChallenge.form.exportableProperties.label": "Eigenschaften für CSV-Export", "Admin.EditChallenge.form.featured.description": "Empfohlene Kampagnen werden bei der Suche von Kampagnen oben in der Liste angezeigt. Nur erfahrene Benutzer können Kampagnen als Empfohlen markieren.", "Admin.EditChallenge.form.featured.label": "Empfohlen", - "Admin.EditChallenge.form.highPriorityBounds.description": "Draw polygons on the map to assign high priority to tasks within those areas. Click 'Show Map' and lasso the areas you want prioritized.", - "Admin.EditChallenge.form.highPriorityBounds.label": "High Priority Bounds", + "Admin.EditChallenge.form.highPriorityBounds.description": "Polygone auf der Karte einzeichnen, um Aufgaben darin eine hohe Priorität zu geben. Auf „Karte anzeigen“ klicken und die Bereiche auswählen, die priorisiert werden sollen.", + "Admin.EditChallenge.form.highPriorityBounds.label": "Umgrenzungen mit hoher Priorität", "Admin.EditChallenge.form.highPriorityRules.label": "Regeln mit hoher Priorität", "Admin.EditChallenge.form.ignoreSourceErrors.description": "Fortfahren trotz festgestellter Fehler in den Quelldaten. Nur für erfahrene Benutzer, die die Auswirkungen vollständig verstehen.", "Admin.EditChallenge.form.ignoreSourceErrors.label": "Fehler ignorieren", @@ -157,12 +157,12 @@ "Admin.EditChallenge.form.localGeoJson.label": "GeoJSON-Datei hochladen", "Admin.EditChallenge.form.localGeoJson.readOnly": "Zum Hochladen einer neuen GeoJSON Datei, wähle Aufgaben wiederherstellen beim Verwalten der Kampagne.", "Admin.EditChallenge.form.lowPriorityBounds.description": "Zeichne Polygone auf der Karte, um Aufgaben in diesen Bereichen eine niedrige Priorität zu geben. Klick auf „Karte anzeigen“ und wähle die Bereiche aus, die du priorisieren möchtest.", - "Admin.EditChallenge.form.lowPriorityBounds.label": "Low Priority Bounds", + "Admin.EditChallenge.form.lowPriorityBounds.label": "Umgrenzungen mit niedriger Priorität", "Admin.EditChallenge.form.lowPriorityRules.label": "Regeln mit niedriger Priorität", "Admin.EditChallenge.form.maxZoom.description": "Die maximale Zoomstufe für die Kampagne. Sie sollte so eingestellt werden, dass Benutzer für die Bearbeitung der Aufgaben weit genug hineinzoomen können, ohne eine Zoomstufe zu verwenden, die unpassend ist oder die verfügbare Auflösung der Karte/Luftbilder übersteigt.", "Admin.EditChallenge.form.maxZoom.label": "Maximale Zoomstufe", "Admin.EditChallenge.form.mediumPriorityBounds.description": "Zeichne Polygone auf die Karte, um Aufgaben in diesen Bereichen mittlere Priorität zu geben. Klick auf „Karte anzeigen“ und markiere die Bereiche, die du priorisieren möchtest.", - "Admin.EditChallenge.form.mediumPriorityBounds.label": "Medium Priority Bounds", + "Admin.EditChallenge.form.mediumPriorityBounds.label": "Umgrenzungen mit mittlerer Priorität", "Admin.EditChallenge.form.mediumPriorityRules.label": "Regeln mit mittlerer Priorität", "Admin.EditChallenge.form.minZoom.description": "Die minimale Zoomstufe für die Kampagne. Sie sollte so eingestellt werden, dass Benutzer für die Bearbeitung der Aufgaben ausreichend herauszoomen können, ohne dass sie auf eine nicht brauchbare Zoomstufe verkleinert wird.", "Admin.EditChallenge.form.minZoom.label": "Minimale Zoomstufe", @@ -306,7 +306,7 @@ "Admin.ProjectCard.tabs.details.label": "Details", "Admin.ProjectCard.tabs.managers.label": "Projektleiter", "Admin.ProjectDashboard.controls.manageChallenges.label": "Kampagnen verwalten", - "Admin.ProjectDashboard.label": "View Project", + "Admin.ProjectDashboard.label": "Projekt ansehen", "Admin.ProjectDashboard.projectNotFound": "Projekt nicht gefunden", "Admin.ProjectManagers.addManager": "Projektleiter hinzufügen", "Admin.ProjectManagers.controls.chooseTeam.placeholder": "Teamname", @@ -332,7 +332,7 @@ "Admin.TaskAnalysisTable.columnHeaders.tags": "Tags", "Admin.TaskAnalysisTable.confirmActionWarning": "Dieser Vorgang kann je nach Größe der Kampagne eine Weile dauern und kann nicht rückgängig gemacht werden.", "Admin.TaskAnalysisTable.controls.inspectTask.label": "Analyse", - "Admin.TaskAnalysisTable.controls.reviewTask.label": "Review Again", + "Admin.TaskAnalysisTable.controls.reviewTask.label": "Erneut prüfen", "Admin.TaskAnalysisTable.controls.startTask.label": "Start", "Admin.TaskAnalysisTable.multipleTasks.tooltip": "Multiple bundled tasks", "Admin.TaskAnalysisTableHeader.controls.chooseShown.label": "Gezeigt", @@ -364,7 +364,7 @@ "Admin.TaskReview.controls.currentReviewStatus.label": "Prüfstatus:", "Admin.TaskReview.controls.currentTaskStatus.label": "Aufgabenstatus:", "Admin.TaskReview.controls.errorTags": "Fehler Tags", - "Admin.TaskReview.controls.modify": "Update Error Tags", + "Admin.TaskReview.controls.modify": "Fehler-Tags aktualisieren", "Admin.TaskReview.controls.next": "Nächste Aufgabe prüfen", "Admin.TaskReview.controls.rejected": "Verwerfen", "Admin.TaskReview.controls.resubmit": "Wiedervorlage zur Prüfung", @@ -747,7 +747,7 @@ "CustomPriorityBoundsField.recenterOnPolygons": "Polygone neu zentrieren", "CustomPriorityBoundsField.remove": "Entfernen", "CustomPriorityBoundsField.removePolygon": "Polygon entfernen", - "CustomPriorityBoundsField.showGeoJSONFormatInfo": "Show GeoJSON format info", + "CustomPriorityBoundsField.showGeoJSONFormatInfo": "GeoJSON Information anzeigen", "CustomPriorityBoundsField.showMap": "Karte anzeigen", "CustomPriorityBoundsField.uploadError": "Hochladen fehlgeschlagen: {error}", "CustomPriorityBoundsField.uploadGeoJSON": "GeoJSON-Datei hochladen", @@ -791,7 +791,7 @@ "ErrorModal.title": "Hoppla!", "ErrorTagDropdown.addErrorTag": "Fehler Tag hinzufügen", "ErrorTagDropdown.errorTag": "Fehler Tag", - "ErrorTagDropdown.requiredByChallengeOwner": "Required by Challenge Owner", + "ErrorTagDropdown.requiredByChallengeOwner": "Vom Eigentümer der Kampagne benötigt", "ErrorTagManager.controls.addNewTag.label": "Neuen Tag hinzufügen", "ErrorTagManager.controls.cancel.label": "Abbrechen", "ErrorTagManager.controls.createTag.label": "Tag erstellen", @@ -802,8 +802,8 @@ "ErrorTagManager.form.description.label": "Beschreibung:", "ErrorTagManager.form.description.placeholder": "Tag-Beschreibung eingeben", "ErrorTagManager.form.name.label": "Name:", - "ErrorTagManager.form.name.placeholder": "Enter tag name", - "ErrorTagManager.heading": "Error Tags Management", + "ErrorTagManager.form.name.placeholder": "Tag-Name eingeben", + "ErrorTagManager.heading": "Fehler-Tag Verwaltung", "ErrorTagManager.notSuperAdmin": "You are not a super admin", "ErrorTagManager.status.active": "Aktiv", "ErrorTagManager.status.disabled": "Deaktiviert", @@ -859,11 +859,11 @@ "Errors.task.doesNotExist": "Diese Aufgabe existiert nicht.", "Errors.task.editCommentFailure": "Kommentar konnte nicht bearbeitet werden.", "Errors.task.fetchFailure": "Es konnte keine Aufgabe zur Bearbeitung geladen werden.", - "Errors.task.lockFailure": "Failed to lock task{details}", + "Errors.task.lockFailure": "Aufgabe konnte nicht gesperrt werden{details}", "Errors.task.lockRefreshFailure": "Unable to extend your task lock. Your lock may have expired. We recommend refreshing the page to try establishing a fresh lock.", "Errors.task.lockReleaseFailure": "Aufgabensperre konnte nicht freigegeben werden. Deine Sperre oder deine Sitzung ist möglicherweise abgelaufen.", "Errors.task.none": "Keine weiteren Aufgaben in dieser Kampagne.", - "Errors.task.requestUnlockFailure": "Unable to request unlock for this challenge.", + "Errors.task.requestUnlockFailure": "Anfrage zum Entsperren der Kampagne kann nicht angefordert werden", "Errors.task.taskAlreadyBundled": "Aufgabe{details} ist bereits in einem Bündel und kann nicht in ein weiteres Bündel aufgenommen werden. Es könnte andere Aufgaben geben, die du versucht hast zu bündeln, die hier nicht erwähnt werden, aber die angegebene ID bezieht sich auf die erste Aufgabe, die uns aufgefallen ist, die bereits gebündelt ist.", "Errors.task.unableToBundleTasks": "Die Aufgaben mit diesen IDs sind von einem anderen Benutzer{details} gesperrt und können nicht gebündelt werden.", "Errors.task.updateFailure": "Deine Änderungen konnten nicht gespeichert werden.", @@ -915,7 +915,7 @@ "Footer.versionLabel": "MapRoulette", "Footer.versions.heading": "VERSIONEN", "Footer.viewBlog": "Blog lesen", - "Form.controls.addBounds.label": "Add a Bounds", + "Form.controls.addBounds.label": "Umgrenzung hinzufügen", "Form.controls.addMustachePreview.note": "Hinweis: Alle mustache Eigenschafts-Tags werden in der Vorschau als leer angezeigt.", "Form.controls.addPriorityRule.label": "Eine Regel hinzufügen", "Form.controls.markdownField.formatErrorJSON.label": "Upload fehlgeschlagen! Das Layout muss aus dem Aufgabenabschlussfluss exportiert werden.", @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "GeoJSON-Datei hier ablegen oder klicken, um eine Datei auszuwählen", "Form.textUpload.promptJSON": "JSON-Datei hier ablegen oder klicken, um eine Datei auszuwählen", "Form.textUpload.readonly": "Vorhandene Datei wird verwendet", - "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", + "GeoJSONUploadModal.dropzone.label": "GeoJSON-Datei hier ablegen oder klicken, um eine Datei auszuwählen", "GeoJSONUploadModal.error.invalid": "GeoJSON ungültig: {error}", - "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", - "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", + "GeoJSONUploadModal.error.noPolygons": "Keine Polygon-Objekte in Datei gefunden", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", + "GeoJSONUploadModal.header": "Virtuelle Kampagne aus GeoJSON erstellen", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# Polygon} other {# Polygone}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Weltweite Aktivität", "Grant.Role.admin": "Administrator", "Grant.Role.read": "Lesen", @@ -970,7 +973,7 @@ "Inbox.notification.controls.reviewTask.label": "Aufgabe prüfen", "Inbox.notification.controls.viewConversation.label": "Unterhaltung ansehen", "Inbox.notification.controls.viewTeams.label": "Teams ansehen", - "Inbox.notification.taskUnlockRequest": "is requesting you unlock task", + "Inbox.notification.taskUnlockRequest": "fragt Entsperrung der Aufgabe an", "Inbox.reviewAgainNotification.lead": "Die Kartierung wurde überarbeitet und eine neue Prüfung angefragt.", "Inbox.reviewApprovedNotification.lead": "Gute Nachrichten! Deine Aufgaben wurden geprüft und bestätigt.", "Inbox.reviewApprovedWithFixesNotification.lead": "Deine Aufgabe wurde (mit kleineren Korrekturen des Prüfers) bestätigt.", @@ -980,8 +983,8 @@ "Inbox.tableHeaders.fromUsername": "Von", "Inbox.tableHeaders.notificationType": "Typ", "Inbox.teamNotification.invited.lead": "Du wurdest zu einem Team eingeladen!", - "IntlTable.first.label": "First", - "IntlTable.last.label": "Last", + "IntlTable.first.label": "Erste", + "IntlTable.last.label": "Letzte", "IntlTable.next.label": "Nächste", "IntlTable.of": "von", "IntlTable.page.label": "Seite", @@ -1061,7 +1064,7 @@ "Navbar.controls.menu.label": "Menü", "Navbar.links.blog": "Blog", "Navbar.links.donate": "Spenden", - "Navbar.links.errorTagManagement": "Error Tag Management", + "Navbar.links.errorTagManagement": "Fehler-Tag Verwaltung", "Navbar.links.help": "Mehr erfahren", "Navbar.links.inbox": "Posteingang", "Navbar.links.signout": "Abmelden", @@ -1081,7 +1084,7 @@ "Notification.type.reviewCount": "Anzahl Prüfungen", "Notification.type.revisionCount": "Anzahl Überarbeitungen", "Notification.type.system": "System", - "Notification.type.taskUnlockRequest": "Task Unlock Request", + "Notification.type.taskUnlockRequest": "Anfrage zu Entsperrung der Aufgabe", "OSMElementHistory.controls.viewOSM.label": "OSM ansehen", "OSMElementHistory.elementFetchFailed": "Verlauf für {Element} konnte nicht geladen werden", "OSMElementHistory.noComment": "(kein Änderungssatz-Kommentar)", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "Diesen Monat", "PastDurationSelector.customRange.endDate": "Ende", "PastDurationSelector.customRange.startDate": "Beginn", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "{months, plural, one {Letzter Monat} other {Letzten # Monate}}", + "PastDurationSelector.pastYear.selectOption": "Letztes Jahr", "PointsTicker.label": "Meine Punkte", "PopularChallenges.header": "Beliebte Kampagnen", "PriorityBoundsLayer.priority.high": "Hohe Priorität", @@ -1119,8 +1122,8 @@ "Profile.form.customBasemaps.label": "Eigene Kartenhintergründe", "Profile.form.defaultBasemap.description": "Wähle den Standard Kartenhintergrund. Nur ein definierter Kartenhintergrund einer Kampagne kann die hier ausgewählte Option überschreiben.", "Profile.form.defaultBasemap.label": "Standard Kartenhintergrund", - "Profile.form.defaultEditor.description": "Select the default external editor that you want to use when fixing tasks. By selecting this option you will be able to skip the editor selection dialog after clicking on edit in a task.", - "Profile.form.defaultEditor.label": "Default External Editor", + "Profile.form.defaultEditor.description": "Externen Standard-Editor zur Bearbeitung der Aufgaben wählen. Hierdurch wird der Auswahldialog vor der Aufgabenbearbeitung übersprungen.", + "Profile.form.defaultEditor.label": "Externer Standard-Editor", "Profile.form.disableTaskConfirm.description": "Dadurch kann der Benutzer das modale Fenster zur Aufgabenbestätigung umgehen, wenn er auf „Ich habe es behoben!“ klickt. Beachte jedoch, dass einige Projekte und Kampagnen dieses Verhalten nicht zulassen.", "Profile.form.disableTaskConfirm.label": "Deaktiviere das Bestätigungsfenster für Aufgaben", "Profile.form.email.description": "E-Mail Nachrichten werden an diese Adresse gesendet.\n\nWähle aus, welche MapRoulette Nachrichten du empfangen willst, und ob die Nachrichten als Email versandt werden sollen (entweder direkt oder als tägliche Zusammenfassung).", @@ -1186,7 +1189,7 @@ "Review.Dashboard.role.label": "Rolle:", "Review.Dashboard.tasksReviewedByMe": "Von mir geprüfte Aufgaben", "Review.Dashboard.tasksToBeReviewed": "Aufgaben zur Prüfung", - "Review.Dashboard.title": "Review Overview", + "Review.Dashboard.title": "Prüfungs-Übersicht", "Review.Task.fields.featureId.label": "Objekt ID", "Review.Task.fields.id.label": "Interne ID", "Review.TaskAnalysisTable.configureColumns": "Spalten verwalten", @@ -1247,8 +1250,8 @@ "ReviewStatus.metrics.tooHard": "ZU SCHWIERIG", "ReviewTaskPane.controls.unlock.label": "Freischalten", "ReviewTaskPane.indicators.locked.label": "Aufgabe gesperrt", - "ReviewTaskPane.label": "Task Review", - "ReviewTaskPane.label.staticMap": "Task Review - Static Map", + "ReviewTaskPane.label": "Aufgaben-Übersicht", + "ReviewTaskPane.label.staticMap": "Aufgaben-Prüfung - Statische Karte", "SavedChallenges.widget.checkList.label": "Liste zur Überprüfung aktualisieren.", "SavedChallenges.widget.description": "Aufgaben, die länger als eine Stunde gesperrt sind, werden innerhalb der nächsten Stunde automatisch entsperrt oder sind bereits entsperrt.", "SavedChallenges.widget.noTasks": "Du hast keine gesperrten Aufgaben", @@ -1338,8 +1341,8 @@ "Task.pane.controls.saveChanges.label": "Änderungen speichern", "Task.pane.controls.tryLock.label": "Versuche zu sperren", "Task.pane.indicators.readOnly.label": "Vorschau im Lesemodus", - "Task.pane.label": "Task Completion", - "Task.pane.label.staticMap": "Task Completion - Static Map", + "Task.pane.label": "Abgeschlossene Aufgaben", + "Task.pane.label.staticMap": "Abgeschlossene Aufgaben - Statische Karte", "Task.pane.lockFailedDialog.genericLockFailure": "Task lock could not be acquired", "Task.pane.lockFailedDialog.previewAvailable": ". Eine schreibgeschützte Vorschau ist verfügbar.", "Task.pane.lockFailedDialog.requestUnlockLabel": "Entsperrung anfragen", @@ -1366,8 +1369,8 @@ "Task.reviewStatus.meta-unnecessary": "Nicht benötigt", "Task.reviewStatus.needed": "Prüfung beantragt", "Task.reviewStatus.unset": "Prüfung noch nicht beantragt", - "Task.tableReview.bundleMemberTooltip": "This task is part of a bundle", - "Task.tableReview.multipleTasksTooltip": "This is a bundle of multiple tasks", + "Task.tableReview.bundleMemberTooltip": "Diese Aufgabe ist Teil eines Bündels", + "Task.tableReview.multipleTasksTooltip": "Dies ist ein Bündel mit mehreren Aufgaben", "Task.taskTags.label": "MR Tags:", "Task.taskTags.modify.label": "MR Tags bearbeiten", "Task.taskTags.update.label": "MR Tags aktualisieren", @@ -1375,8 +1378,8 @@ "TaskAnalysisTable.columns.searchFeatureId.placeholder": "Objekt ID suchen...", "TaskAnalysisTable.columns.searchId.placeholder": "ID Suchen", "TaskAnalysisTable.columns.searchMapper.placeholder": "Kartierer suchen...", - "TaskAnalysisTable.columns.searchMetaReviewer.placeholder": "Search meta reviewer...", - "TaskAnalysisTable.columns.searchReviewer.placeholder": "Search reviewer...", + "TaskAnalysisTable.columns.searchMetaReviewer.placeholder": "Meta-Prüfer suchen...", + "TaskAnalysisTable.columns.searchReviewer.placeholder": "Prüfer suchen...", "TaskAnalysisTable.controls.clearFilter.label": "Filter löschen", "TaskBundleWidget.bundlingDisabledDoneOrReview": "Task bundling is only available for tasks that are either completed or have been reviewed.", "TaskBundleWidget.bundlingDisabledGeneric": "Task bundling is currently disabled.", @@ -1388,13 +1391,13 @@ "TaskBundleWidget.bundlingDisabledTaskType": "Task bundling is disabled for cooperative and tag fix tasks.", "TaskBundleWidget.bundlingDisabledWorkspace": "Task bundling is only available in the task completion workspace.", "TaskBundleWidget.cannotEditLockedTask": "Task is locked by another user", - "TaskBundleWidget.error.bundleTypeNotAllowed": "Cooperative and tag fix tasks cannot be bundled", - "TaskBundleWidget.notCompletedStatus": "Not completed (cannot bundle)", + "TaskBundleWidget.error.bundleTypeNotAllowed": "Kooperative Aufgaben und Tag-Korrekturen können nicht gebündelt werden", + "TaskBundleWidget.notCompletedStatus": "Nicht abgeschlossen (kann nicht gebündelt werden)", "TaskClusterMap.controls.clearSelection.label": "Auswahl löschen", "TaskClusterMap.controls.clusterTasks.label": "Cluster", "TaskClusterMap.controls.fitToFeatures.label": "Auf Objekte zoomen", "TaskClusterMap.controls.fitWorld.label": "Auf Weltkarte zoomen", - "TaskClusterMap.controls.lassoDeselect.label": "Lasso Deselect", + "TaskClusterMap.controls.lassoDeselect.label": "Lasso Auswahl aufheben", "TaskClusterMap.controls.search.label": "Suchen", "TaskClusterMap.controls.selectAllInView.label": "Alles in Ansicht auswählen", "TaskClusterMap.controls.toggleLegend.label": "Legende ein-/ausblenden", @@ -1502,15 +1505,16 @@ "WidgetGrid.controls.expandPanel.label": "Expand panel", "WidgetPicker.menuLabel": "Widget hinzufügen", "WidgetWorkspace.controls.addConfiguration.label": "Neue Ansicht hinzufügen", - "WidgetWorkspace.controls.addStaticMapLayout.label": "Add Static Map Layout", + "WidgetWorkspace.controls.addStaticMapLayout.label": "Statische Karten-Ansicht hinzufügen", "WidgetWorkspace.controls.deleteConfiguration.label": "Ansicht löschen", "WidgetWorkspace.controls.editConfiguration.label": "Ansicht bearbeiten", "WidgetWorkspace.controls.exportConfiguration.label": "Ansicht exportieren", "WidgetWorkspace.controls.importConfiguration.label": "Ansicht importieren", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Ansicht zurücksetzen", "WidgetWorkspace.controls.saveAsDefault.label": "Als Standard speichern", "WidgetWorkspace.controls.saveConfiguration.label": "Bearbeiten beenden", - "WidgetWorkspace.controls.useTemporarily.label": "Use Temporarily", + "WidgetWorkspace.controls.useTemporarily.label": "Temporär verwenden", "WidgetWorkspace.exportModal.controls.download.label": "Download", "WidgetWorkspace.exportModal.fields.name.label": "Name der Ansicht", "WidgetWorkspace.exportModal.header": "Exportiere deine Ansicht", @@ -1519,7 +1523,7 @@ "WidgetWorkspace.labels.currentlyUsing": "Aktuelle Ansicht:", "WidgetWorkspace.labels.switchTo": "Wechseln zu:", "WidgetWorkspace.recommendedLayout.label": "Empfohlenes Layout", - "WidgetWorkspace.recommendedLayout.prompt": "Would you like to save this recommended layout as your default? If not, it will only be applied temporarily for this session.", + "WidgetWorkspace.recommendedLayout.prompt": "Diese empfohlene Ansicht als Standard speichern? Wenn nein, wird sie nur in dieser Sitzung angezeigt.", "WidgetWorkspace.useRecommendedLayoutLabel.label": "Verwende empfohlenes Layout", "Widgets.ActivityListingWidget.controls.toggleExactDates.label": "Exaktes Datum anzeigen", "Widgets.ActivityListingWidget.title": "Aktivitätsliste", @@ -1559,9 +1563,9 @@ "Widgets.ProjectManagersWidget.label": "Projektleiter", "Widgets.RecentActivityWidget.label": "Neueste Aktivität", "Widgets.ReviewNearbyTasksWidget.displayAllTasksLabel": "Alle Aufgaben anzeigen", - "Widgets.ReviewNearbyTasksWidget.displayBundledTasksLabel": "Display Bundled Tasks Only", + "Widgets.ReviewNearbyTasksWidget.displayBundledTasksLabel": "Nur gebündelte Aufgaben anzeigen", "Widgets.ReviewNearbyTasksWidget.label": "Aufgaben in der Nähe", - "Widgets.ReviewNearbyTasksWidget.noVirtualChallenges": "Nearby tasks are not available for virtual challenges.", + "Widgets.ReviewNearbyTasksWidget.noVirtualChallenges": "Aufgaben in der Nähe sind für virtuelle Kampagnen nicht verfügbar.", "Widgets.ReviewNearbyTasksWidget.popup.fields.name.label": "Objekt ID:", "Widgets.ReviewNearbyTasksWidget.popup.fields.taskId.label": "Interne ID:", "Widgets.ReviewNearbyTasksWidget.restoreDefaultFiltersLabel": "Standardfilter wiederherstellen", @@ -1581,9 +1585,9 @@ "Widgets.TagDiffWidget.controls.editTags.label": "Tags bearbeiten", "Widgets.TagDiffWidget.controls.viewAllTags.label": "Zeige alle Tags", "Widgets.TagDiffWidget.disabledDescription": "Diese Aufgabe hat Korrekturen für Tags vorgeschlagen, aber Du hast die Anzeige für deinen Benutzer deaktiviert. Du kannst dies in den Benutzereinstellungen wieder aktivieren.", - "Widgets.TaskBundleWidget.addToBundle": "Add to bundle", - "Widgets.TaskBundleWidget.bundleLimitError": "Cannot create bundle with more than 50 tasks", - "Widgets.TaskBundleWidget.bundleTypeError": "Cannot bundle tasks of different types together", + "Widgets.TaskBundleWidget.addToBundle": "Zum Bündel hinzufügen", + "Widgets.TaskBundleWidget.bundleLimitError": "Ein Bündel mit mehr als 50 Aufgaben kann nicht erstellt werden", + "Widgets.TaskBundleWidget.bundleTypeError": "Aufgaben mit verschiedenen Typen können nicht gebündelt werden", "Widgets.TaskBundleWidget.cannotEditPrimaryTask": "Primäre Aufgabe kann nicht bearbeitet werden", "Widgets.TaskBundleWidget.controls.displayAllTasks.label": "Alle Aufgaben in der Ansicht anzeigen", "Widgets.TaskBundleWidget.controls.displayBundledTasks.label": "Nur gebündelte Aufgaben anzeigen", @@ -1591,7 +1595,7 @@ "Widgets.TaskBundleWidget.controls.restoreDefaultFilters.label": "Standardfilter wiederherstellen", "Widgets.TaskBundleWidget.controls.saveCurrentFilters.label": "Aktuelle Filter speichern", "Widgets.TaskBundleWidget.controls.startBundling.label": "Bündelung von Aufgaben beginnen", - "Widgets.TaskBundleWidget.controls.stopBundling.label": "Delete Bundle", + "Widgets.TaskBundleWidget.controls.stopBundling.label": "Bündel löschen", "Widgets.TaskBundleWidget.currentTask": "(aktuelle Aufgabe)", "Widgets.TaskBundleWidget.disallowBundling": "You are working on a single task. Task bundles cannot be created on this step.", "Widgets.TaskBundleWidget.failedLockError": "Aufgabe(n) konnten nicht gesperrt werden. Bitte erneut versuchen.", @@ -1602,13 +1606,13 @@ "Widgets.TaskBundleWidget.noVirtualChallenges": "Tasks in \"virtual\" challenges cannot be bundled together", "Widgets.TaskBundleWidget.popup.controls.alreadyBundled.label": "Bereits von jemand anderem gebündelt.", "Widgets.TaskBundleWidget.popup.controls.selected.label": "ausgewählt", - "Widgets.TaskBundleWidget.refreshError": "Failed to refresh task locks. Please try again.", - "Widgets.TaskBundleWidget.refreshTaskLockError": "Failed to refresh task lock. Please try again.", + "Widgets.TaskBundleWidget.refreshError": "Aufgaben konnten nicht gesperrt werden. Bitte erneut versuchen.", + "Widgets.TaskBundleWidget.refreshTaskLockError": "Aufgabe konnten nicht gesperrt werden. Bitte erneut versuchen.", "Widgets.TaskBundleWidget.removeFromBundle": "Aus dem Bündel entfernen", "Widgets.TaskBundleWidget.reviewTaskTitle": "Work on Multiple Tasks Together", - "Widgets.TaskBundleWidget.tooManyTasks": "Initial bundle cannot exceed 50 tasks", + "Widgets.TaskBundleWidget.tooManyTasks": "Anfangs-Bündel darf nicht mehr als 50 Aufgaben enthalten", "Widgets.TaskBundleWidget.unableToSelect": "Kann nicht ausgewählt werden", - "Widgets.TaskBundleWidget.unlockError": "Failed to unlock tasks. Please try again.", + "Widgets.TaskBundleWidget.unlockError": "Aufgaben konnten nicht entsperrt werden. Bitte erneut versuchen.", "Widgets.TaskCompletionWidget.cancelSelection": "Auswahl abbrechen", "Widgets.TaskCompletionWidget.completeTogether": "Complete Together", "Widgets.TaskCompletionWidget.cooperativeWorkTitle": "Vorgeschlagene Änderungen", diff --git a/lang/es.json b/lang/es.json index 28528b5a7..f8608f2b8 100644 --- a/lang/es.json +++ b/lang/es.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Arrastra el archivo GeoJSON aquí o haz clic para seleccionar el archivo", "Form.textUpload.promptJSON": "Arrastra el archivo JSON aquí o haz clic para seleccionar el archivo", "Form.textUpload.readonly": "Se utilizará el archivo existente", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Arrastra un archivo GeoJSON aquí o haz clic para subirlo", "GeoJSONUploadModal.error.invalid": "GeoJSON no válido: {error}", "GeoJSONUploadModal.error.noPolygons": "No se encontraron elementos de tipo polígono en el archivo", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Crear desafío virtual a partir de GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polígono} many {# polígonos} other {# polígonos}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Actividad global", "Grant.Role.admin": "Administrador", "Grant.Role.read": "Lectura", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "Mes actual", "PastDurationSelector.customRange.endDate": "Fecha de finalización", "PastDurationSelector.customRange.startDate": "Fecha de inicio", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "Último {months, plural, one {mes} other {# meses}}", + "PastDurationSelector.pastYear.selectOption": "Último año", "PointsTicker.label": "Mis puntos", "PopularChallenges.header": "Desafíos populares", "PriorityBoundsLayer.priority.high": "Alta prioridad", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Editar diseño", "WidgetWorkspace.controls.exportConfiguration.label": "Exportar diseño", "WidgetWorkspace.controls.importConfiguration.label": "Importar diseño", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Restablecer diseño a predeterminado", "WidgetWorkspace.controls.saveAsDefault.label": "Guardar como predeterminado", "WidgetWorkspace.controls.saveConfiguration.label": "Edición finalizada", diff --git a/lang/fa_IR.json b/lang/fa_IR.json index 772f75a29..0b1660122 100644 --- a/lang/fa_IR.json +++ b/lang/fa_IR.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Existing file will be used", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Global Activity", "Grant.Role.admin": "Admin", "Grant.Role.read": "Read", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edit Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Export Layout", "WidgetWorkspace.controls.importConfiguration.label": "Import Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Reset Layout to Default", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/lang/fr.json b/lang/fr.json index cb89d58eb..dd01430c9 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -129,10 +129,10 @@ "Admin.EditChallenge.form.description.description": "La description de votre défi s'affiche lorsque les utilisateurs cliquent dessus pour en savoir plus.\n\nVotre description doit fournir aux cartographes suffisamment de détails pour leur permettre de décider s'ils souhaitent ou non participer à votre défi. Ce champ prend en charge [Markdown](https://learn.maproulette.org/documentation/markdown/).", "Admin.EditChallenge.form.description.label": "Description de votre défi", "Admin.EditChallenge.form.difficulty.description": "Indiquez aux cartographes le niveau d'expérience requis pour accomplir les tâches de votre défi.", - "Admin.EditChallenge.form.difficulty.easy": "Easy: a novice can do them", - "Admin.EditChallenge.form.difficulty.expert": "Expert: experienced mappers only", + "Admin.EditChallenge.form.difficulty.easy": "Facile : même un novice peut le faire.", + "Admin.EditChallenge.form.difficulty.expert": "Expert : cartographes expérimentés uniquement", "Admin.EditChallenge.form.difficulty.label": "Difficulté de vos tâches", - "Admin.EditChallenge.form.difficulty.normal": "Normal: a little experience helps", + "Admin.EditChallenge.form.difficulty.normal": "Normal : un peu d'expérience aide", "Admin.EditChallenge.form.disableOsmIdProperty": "Cet identifiant ne peut pas être modifié une fois qu'un défi a créé des tâches avec succès, ceci afin d'éviter la duplication des tâches. [En savoir plus] (https://learn.maproulette.org/documentation/setting-external-task-identifiers/).", "Admin.EditChallenge.form.email.description": "Veuillez fournir une adresse email afin de que les cartographes puisse vous faire des retours", "Admin.EditChallenge.form.email.label": "Adresse email", @@ -306,7 +306,7 @@ "Admin.ProjectCard.tabs.details.label": "Détails", "Admin.ProjectCard.tabs.managers.label": "Gestionnaires", "Admin.ProjectDashboard.controls.manageChallenges.label": "Gérer les défis", - "Admin.ProjectDashboard.label": "View Project", + "Admin.ProjectDashboard.label": "Voir le projet", "Admin.ProjectDashboard.projectNotFound": "Projet non trouvé", "Admin.ProjectManagers.addManager": "Ajouter un gestionnaire au projet", "Admin.ProjectManagers.controls.chooseTeam.placeholder": "Nom de l'équipe", @@ -498,17 +498,17 @@ "ChallengeDetails.fields.overpassQL.label": "Requête Overpass", "ChallengeDetails.fields.viewComments.label": "Get In Touch", "ChallengeDetails.fields.viewOverview.label": "Aperçu", - "ChallengeDetails.form.emailAddress.label": "Email address", - "ChallengeDetails.form.enterEmail.placeholder": "Enter your email", - "ChallengeDetails.form.enterText.placeholder": "Enter text here", + "ChallengeDetails.form.emailAddress.label": "Adresse @mail", + "ChallengeDetails.form.enterEmail.placeholder": "Saisissez votre @mail", + "ChallengeDetails.form.enterText.placeholder": "Saisissez du texte ici", "ChallengeEndModal.control.dismiss.label": "Continuer", "ChallengeEndModal.header": "Fin du défi", "ChallengeEndModal.primaryMessage": "Vous avez marqué toutes les tâches restantes de ce défi comme ignorées ou impossibles à compléter.", "ChallengeFilterSubnav.controls.sortBy.label": "Trier par", "ChallengeFilterSubnav.filter.categorization.add": "Ajout :", - "ChallengeFilterSubnav.filter.categorization.addNewCategory": "Add a new category", + "ChallengeFilterSubnav.filter.categorization.addNewCategory": "Ajouter une nouvelle catégorie", "ChallengeFilterSubnav.filter.categorization.delete": "Vous devez supprimer une catégorie", - "ChallengeFilterSubnav.filter.categorization.filtersLabel": "{count} Filters", + "ChallengeFilterSubnav.filter.categorization.filtersLabel": "{count} Filtres", "ChallengeFilterSubnav.filter.categorization.new": "pour en ajouter un nouveau.", "ChallengeFilterSubnav.filter.categorization.set": "Vous n'avez défini aucune catégorie.", "ChallengeFilterSubnav.filter.categorization.signIn": "Vous devez vous connecter pour ajouter un mot-clé.", @@ -747,7 +747,7 @@ "CustomPriorityBoundsField.recenterOnPolygons": "Recentrer sur le polygone", "CustomPriorityBoundsField.remove": "Déplacer", "CustomPriorityBoundsField.removePolygon": "Déplacer Polygon", - "CustomPriorityBoundsField.showGeoJSONFormatInfo": "Show GeoJSON format info", + "CustomPriorityBoundsField.showGeoJSONFormatInfo": "Afficher les informations au format GeoJSON", "CustomPriorityBoundsField.showMap": "Afficher la Carte", "CustomPriorityBoundsField.uploadError": "Chargement en erreur : {error}", "CustomPriorityBoundsField.uploadGeoJSON": "Chargement GeoJSON", @@ -778,7 +778,7 @@ "Dashboard.header.somethingNew": "quelque chose de nouveau", "Dashboard.header.userScore": "{points, number} points", "Dashboard.header.welcomeBack": "Ravis de vous revoir, {username} !", - "Dashboard.title": "Dashboard", + "Dashboard.title": "Tableau de bord", "Editor.id.label": "Éditer dans iD (éditeur web)", "Editor.josm.label": "Éditer dans JOSM", "Editor.josmFeatures.label": "Éditer uniquement les caractéristiques dans JOSM", @@ -792,21 +792,21 @@ "ErrorTagDropdown.addErrorTag": "Ajouter un tag erreur", "ErrorTagDropdown.errorTag": "Tag erreur", "ErrorTagDropdown.requiredByChallengeOwner": "Exigé par le propriétaire du défi", - "ErrorTagManager.controls.addNewTag.label": "Add New Tag", - "ErrorTagManager.controls.cancel.label": "Cancel", - "ErrorTagManager.controls.createTag.label": "Create Tag", - "ErrorTagManager.controls.disable.label": "Disable", - "ErrorTagManager.controls.enable.label": "Enable", - "ErrorTagManager.controls.search.placeholder": "Search tags by name...", - "ErrorTagManager.create.heading": "Create New Error Tag", - "ErrorTagManager.form.description.label": "Description:", - "ErrorTagManager.form.description.placeholder": "Enter tag description", - "ErrorTagManager.form.name.label": "Name:", - "ErrorTagManager.form.name.placeholder": "Enter tag name", - "ErrorTagManager.heading": "Error Tags Management", - "ErrorTagManager.notSuperAdmin": "You are not a super admin", - "ErrorTagManager.status.active": "Active", - "ErrorTagManager.status.disabled": "Disabled", + "ErrorTagManager.controls.addNewTag.label": "Ajouter un nouveau Tag", + "ErrorTagManager.controls.cancel.label": "Annuler", + "ErrorTagManager.controls.createTag.label": "Créer un Tag", + "ErrorTagManager.controls.disable.label": "Désactiver", + "ErrorTagManager.controls.enable.label": "Activer", + "ErrorTagManager.controls.search.placeholder": "Rechercher des étiquettes par nom...", + "ErrorTagManager.create.heading": "Créer une nouveau Tag d'erreur", + "ErrorTagManager.form.description.label": "Description :", + "ErrorTagManager.form.description.placeholder": "Saisissez la description du tag", + "ErrorTagManager.form.name.label": "Nom : ", + "ErrorTagManager.form.name.placeholder": "Entrer une balise Nom", + "ErrorTagManager.heading": "Gestionnaire des Balises erreurs", + "ErrorTagManager.notSuperAdmin": "Vous n'êtes pas un super administrateur", + "ErrorTagManager.status.active": "Actif", + "ErrorTagManager.status.disabled": "Désactivé", "Errors.boundedTask.fetchFailure": "Impossible de récupérer les tâches dans les limites de la carte", "Errors.challenge.archiveFailure": "Impossible de mettre à jour l'état des archives", "Errors.challenge.deleteFailure": "Impossible de supprimer le défi.", @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Le fichier existant sera utilisé", - "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", - "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", - "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", - "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", + "GeoJSONUploadModal.dropzone.label": "Déposez un fichier GeoJSON ici ou cliquez pour l'importer.", + "GeoJSONUploadModal.error.invalid": "Invalide GeoJSON: {error}", + "GeoJSONUploadModal.error.noPolygons": "Aucun polygone trouvé dans le fichier", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", + "GeoJSONUploadModal.header": "Créer un défi virtuel à partir de GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Activité mondiale", "Grant.Role.admin": "Administrateur", "Grant.Role.read": "Lire", @@ -964,7 +967,7 @@ "Inbox.metaReviewRejectedNotification.lead": "Après une validation complémentaire suite à votre propre validation, un travail complémentaire est attendu. ", "Inbox.noNotifications": "Aucun notification", "Inbox.notification.appliedErrorTags": "Les tags erreurs suivants ont étés rajoutés à votre tâche", - "Inbox.notification.commentedOnChallenge": "Someone commented on your challenge.", + "Inbox.notification.commentedOnChallenge": "Quelqu'un a commenté votre défi.", "Inbox.notification.controls.findMoreChallenge.label": "Trouver plus de défis à relever !", "Inbox.notification.controls.manageChallenge.label": "Gérer le défi", "Inbox.notification.controls.reviewTask.label": "Vérifier la tâche", @@ -996,13 +999,13 @@ "KeyMapping.taskCompletion.fixed": "Oui / Je l'ai résolue !", "KeyMapping.taskCompletion.skip": "Passer", "KeyMapping.taskEditing.cancel": "Annuler", - "KeyMapping.taskEditing.completeTogether": "Complete Tasks Together", + "KeyMapping.taskEditing.completeTogether": "Accomplir les tâches collectivement", "KeyMapping.taskEditing.escapeLabel": "ESC", "KeyMapping.taskEditing.fitBounds": "Adapter la carte aux caractéristiques de la tâche", "KeyMapping.taskInspect.prevTask": "Tâche précédente", "KeywordAutosuggestInput.controls.addKeyword.placeholder": "Ajouter un mot-clé", "KeywordAutosuggestInput.controls.chooseTags.placeholder": "Choisir les balises", - "KeywordAutosuggestInput.controls.filterByTags.placeholder": "Filter by tags...", + "KeywordAutosuggestInput.controls.filterByTags.placeholder": "Filtrer par Tag ...", "KeywordAutosuggestInput.controls.filterTags.placeholder": "Filtrer les balises", "LayerSource.challengeDefault.label": "Défi par défaut", "LayerSource.userDefault.label": "Votre défaut", @@ -1090,7 +1093,7 @@ "OSMElementHistory.undeterminedVersion": "Détection de la version indisponible pour cette tâche", "OSMElementHistory.version.label": "Version {version, number}", "OSMElementTags.elementFetchFailed": "Échec de la récupération des balises pour {element}", - "PageNotFound.altText": "404 - page not found", + "PageNotFound.altText": "404 - page non trouvée", "PageNotFound.homePage": "Retour", "PageNotFound.message": "Oups ! La page que vous recherchez est perdue.", "Pages.SignIn.modal.prompt": "Merci de vous connecter pour continuer", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "Mois actuel", "PastDurationSelector.customRange.endDate": "Date de fin", "PastDurationSelector.customRange.startDate": "Date de début", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "Par {months, plural, one {Month} other {# Months}}", + "PastDurationSelector.pastYear.selectOption": "Par Année", "PointsTicker.label": "Mes points", "PopularChallenges.header": "Défis populaires", "PriorityBoundsLayer.priority.high": "Priorité haute", @@ -1119,8 +1122,8 @@ "Profile.form.customBasemaps.label": "Fond de carte personnalisé", "Profile.form.defaultBasemap.description": "Sélectionnez le fond de carte par défaut. Un fond de carte provenant d'un défi peut remplacer cette préférence.", "Profile.form.defaultBasemap.label": "Fond de carte par défaut", - "Profile.form.defaultEditor.description": "Select the default external editor that you want to use when fixing tasks. By selecting this option you will be able to skip the editor selection dialog after clicking on edit in a task.", - "Profile.form.defaultEditor.label": "Default External Editor", + "Profile.form.defaultEditor.description": "Sélectionnez l'éditeur externe par défaut que vous souhaitez utiliser pour la correction des tâches. En choisissant cette option, vous pourrez ignorer la boîte de dialogue de sélection de l'éditeur après avoir cliqué sur « Modifier » dans une tâche.", + "Profile.form.defaultEditor.label": "Éditeur externe par défaut", "Profile.form.disableTaskConfirm.description": "Cela permettra à l'utilisateur de contourner la fenêtre de confirmation de tâche lorsqu'il clique sur « Résolu ! ». Attention, certains projets et défis n'autorisent pas ce comportement.", "Profile.form.disableTaskConfirm.label": "Désactiver la fenêtre la confirmation de tâche", "Profile.form.email.description": "Si vous demandez des courriels dans vos notifications, ils seront envoyés ici.\n\nChoisissez les notifications MapRoulette que vous souhaitez recevoir et indiquez si vous souhaitez recevoir un courriel vous informant de la notification (immédiatement ou sous forme de résumé quotidien).", @@ -1163,7 +1166,7 @@ "ProjectDetails.management.controls.showAll.label": "Afficher tous les défis", "ProjectPickerModal.chooseProject": "Choisir un projet", "ProjectPickerModal.noProjects": "Aucun projet trouvé", - "PropertyList.copyTagsTooltip": "Copy tags to clipboard", + "PropertyList.copyTagsTooltip": "Copier les libellés dans le presse-papier", "PropertyList.noProperties": "Aucune propriété", "PropertyList.title": "Propriétés", "QuickWidget.failedToLoad": "Echec du widget", @@ -1247,8 +1250,8 @@ "ReviewStatus.metrics.tooHard": "IMPOSSIBLE DE TERMINER", "ReviewTaskPane.controls.unlock.label": "Déverrouiller", "ReviewTaskPane.indicators.locked.label": "Tâche verrouillée", - "ReviewTaskPane.label": "Task Review", - "ReviewTaskPane.label.staticMap": "Task Review - Static Map", + "ReviewTaskPane.label": "Tâche de révision", + "ReviewTaskPane.label.staticMap": "Examen des tâches - Carte statique", "SavedChallenges.widget.checkList.label": "Rafraîchir la liste pour vérifier.", "SavedChallenges.widget.description": "Les tâches verrouillées pendant plus d'une heure seront automatiquement déverrouillées dans l'heure qui suit ou pourraient déjà être déverrouillées.", "SavedChallenges.widget.noTasks": "Vous n'avez aucune tâche verrouillée", @@ -1262,7 +1265,7 @@ "SavedTasks.widget.viewComments": "Voir les commentaires", "ScreenTooNarrow.header": "Merci d'agrandir la fenêtre de votre navigateur", "ScreenTooNarrow.message": "Cette page n'est pas encore compatible avec les écrans plus petits. Veuillez élargir la fenêtre de votre navigateur ou passer à un appareil ou un écran plus grand.", - "SearchBox.controls.delete.label": "delete", + "SearchBox.controls.delete.label": "Supprimer", "Sent.controls.goToChallenge.label": "Accéder au défi", "Sent.controls.goToTask.label": "Accéder à la tâche", "Sent.header": "Envoyer un commentaire", @@ -1338,13 +1341,13 @@ "Task.pane.controls.saveChanges.label": "Sauvegarder les changements", "Task.pane.controls.tryLock.label": "Essayer de verrouiller", "Task.pane.indicators.readOnly.label": "Prévisualisation en lecture seule", - "Task.pane.label": "Task Completion", - "Task.pane.label.staticMap": "Task Completion - Static Map", + "Task.pane.label": "Achèvement de la tâche", + "Task.pane.label.staticMap": "Achèvement des tâches - Carte statique", "Task.pane.lockFailedDialog.genericLockFailure": "Le verrouillage de la tâche n'a pas pu être réalisé", "Task.pane.lockFailedDialog.previewAvailable": ". Un aperçu en lecture seule est disponible.", "Task.pane.lockFailedDialog.requestUnlockLabel": "Demande de déverrouillage", "Task.pane.lockFailedDialog.title": "Impossible de verrouiller la tâche", - "Task.pane.title": "Public Task", + "Task.pane.title": "Tâches publiques", "Task.priority.high": "Haut", "Task.priority.low": "Bas", "Task.priority.medium": "Moyen", @@ -1372,35 +1375,35 @@ "Task.taskTags.modify.label": "Modifier les tags MR", "Task.taskTags.update.label": "Mettre à jour les tags MR", "Task.unsave.control.tooltip": "Arrêter de suivre", - "TaskAnalysisTable.columns.searchFeatureId.placeholder": "Search feature ID...", - "TaskAnalysisTable.columns.searchId.placeholder": "Search ID...", - "TaskAnalysisTable.columns.searchMapper.placeholder": "Search mapper...", + "TaskAnalysisTable.columns.searchFeatureId.placeholder": "Recherche par ID de Fonction", + "TaskAnalysisTable.columns.searchId.placeholder": "Recherche ID...", + "TaskAnalysisTable.columns.searchMapper.placeholder": "Recherche cartographe...", "TaskAnalysisTable.columns.searchMetaReviewer.placeholder": "Search meta reviewer...", - "TaskAnalysisTable.columns.searchReviewer.placeholder": "Search reviewer...", - "TaskAnalysisTable.controls.clearFilter.label": "Clear filter", + "TaskAnalysisTable.columns.searchReviewer.placeholder": "Recherche un vérificateur...", + "TaskAnalysisTable.controls.clearFilter.label": "Nettoyage des filtres", "TaskBundleWidget.bundlingDisabledDoneOrReview": "Le regroupement des tâches n'est disponible que pour les tâches qui sont soit terminées, soit qui ont été révisées.", "TaskBundleWidget.bundlingDisabledGeneric": "Le regroupement des tâches est actuellement désactivé.", - "TaskBundleWidget.bundlingDisabledLocked": "Task bundling is disabled because the main task is locked by another user.", - "TaskBundleWidget.bundlingDisabledMapperEdits": "Task bundling is disabled because you don't have the necessary permissions to edit this task.", - "TaskBundleWidget.bundlingDisabledNotCompleted": "Task bundling is only available for completed tasks.", - "TaskBundleWidget.bundlingDisabledNotOwner": "Task bundling is disabled because you are not the original mapper of this task.", - "TaskBundleWidget.bundlingDisabledReadOnly": "Task bundling is disabled because you are in read-only mode.", - "TaskBundleWidget.bundlingDisabledTaskType": "Task bundling is disabled for cooperative and tag fix tasks.", - "TaskBundleWidget.bundlingDisabledWorkspace": "Task bundling is only available in the task completion workspace.", + "TaskBundleWidget.bundlingDisabledLocked": "Le regroupement des tâches est désactivé car la tâche principale est verrouillée par un autre utilisateur.", + "TaskBundleWidget.bundlingDisabledMapperEdits": "Le regroupement des tâches est désactivé car vous ne disposez pas des autorisations nécessaires pour modifier cette tâche.", + "TaskBundleWidget.bundlingDisabledNotCompleted": "Le regroupement des tâches n'est disponible que pour les tâches terminées.", + "TaskBundleWidget.bundlingDisabledNotOwner": "Le regroupement des tâches est désactivé car vous n'êtes pas le créateur initial de cette tâche.", + "TaskBundleWidget.bundlingDisabledReadOnly": "Le regroupement des tâches est désactivé car vous êtes en mode lecture seule.", + "TaskBundleWidget.bundlingDisabledTaskType": "Le regroupement des tâches est désactivé pour les tâches coopératives et de correction d'étiquettes.", + "TaskBundleWidget.bundlingDisabledWorkspace": "Le regroupement des tâches n'est disponible que dans l'espace de travail de finalisation des tâches.", "TaskBundleWidget.cannotEditLockedTask": "La tâche est verrouillée par un autre utilisateur", "TaskBundleWidget.error.bundleTypeNotAllowed": "Les tâches coopératives et de correction d'étiquettes ne peuvent pas être regroupées.", "TaskBundleWidget.notCompletedStatus": "Non terminé (impossible de regrouper)", - "TaskClusterMap.controls.clearSelection.label": "Clear Selection", + "TaskClusterMap.controls.clearSelection.label": "Nettoyage de la sélection", "TaskClusterMap.controls.clusterTasks.label": "Regroupement", "TaskClusterMap.controls.fitToFeatures.label": "Fit to Features", "TaskClusterMap.controls.fitWorld.label": "Fit World", - "TaskClusterMap.controls.lassoDeselect.label": "Lasso Deselect", - "TaskClusterMap.controls.search.label": "Search", - "TaskClusterMap.controls.selectAllInView.label": "Select All In View", - "TaskClusterMap.controls.toggleLegend.label": "Toggle Legend", - "TaskClusterMap.controls.uploadGeoJSON.label": "Upload GeoJSON", - "TaskClusterMap.controls.zoomIn.label": "Zoom In", - "TaskClusterMap.controls.zoomOut.label": "Zoom Out", + "TaskClusterMap.controls.lassoDeselect.label": "Désélectionner le lasso", + "TaskClusterMap.controls.search.label": "Recherche", + "TaskClusterMap.controls.selectAllInView.label": "Tout sélectionner dans la vue", + "TaskClusterMap.controls.toggleLegend.label": "Afficher/Masquer la légende", + "TaskClusterMap.controls.uploadGeoJSON.label": "Charger un GeoJSON", + "TaskClusterMap.controls.zoomIn.label": "Zoom +", + "TaskClusterMap.controls.zoomOut.label": "Zoom -", "TaskClusterMap.message.moveMapToRefresh.label": "Cliquer pour montrer les tâches", "TaskClusterMap.message.refreshTasks.label": "Cliquez pour actualiser les tâches", "TaskClusterMap.message.taskCount.label": "{count,plural,=0{Aucune tâche trouvée}one{# tâche trouvée}other{# tâches trouvées}}", @@ -1463,7 +1466,7 @@ "TaskPropertyQueryBuilder.propertyType.numberType": "nombre", "TaskPropertyQueryBuilder.propertyType.stringType": "texte", "TaskReviewStatusFilter.metaReviewStatuses.label": "Statuts de méta-validations", - "TaskTags.learnMore.label": "Learn more about Maproulette tags", + "TaskTags.learnMore.label": "En savoir plus sur les balises Maproulette", "Team.Status.invited": "Invité", "Team.Status.member": "Membre", "Team.activeMembers.header": "Membres actifs", @@ -1498,19 +1501,20 @@ "VirtualChallenge.fields.name.label": "Nommer votre défi \"virtuel\"", "VirtualChallenge.selectedCount": "Vous avez {count} sélectionnés", "VirtualChallenge.tooManyTasks": "Au maximum {max} tâches peuvent être traitées en même temps.", - "WidgetGrid.controls.collapsePanel.label": "Collapse panel", - "WidgetGrid.controls.expandPanel.label": "Expand panel", + "WidgetGrid.controls.collapsePanel.label": "Réduire le panneau", + "WidgetGrid.controls.expandPanel.label": "Développer le panneau", "WidgetPicker.menuLabel": "Ajouter un widget", "WidgetWorkspace.controls.addConfiguration.label": "Ajouter une nouvelle mise en page", - "WidgetWorkspace.controls.addStaticMapLayout.label": "Add Static Map Layout", + "WidgetWorkspace.controls.addStaticMapLayout.label": "Ajouter une mise en page de carte statique", "WidgetWorkspace.controls.deleteConfiguration.label": "Supprimer la mise en page", "WidgetWorkspace.controls.editConfiguration.label": "Éditer la mise en page", "WidgetWorkspace.controls.exportConfiguration.label": "Exporter la mise en page", "WidgetWorkspace.controls.importConfiguration.label": "Importer la mise en page", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Remettre la mise en page par défaut", - "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", + "WidgetWorkspace.controls.saveAsDefault.label": "Enregistrer comme mes paramètres par défaut", "WidgetWorkspace.controls.saveConfiguration.label": "Terminer l'édition", - "WidgetWorkspace.controls.useTemporarily.label": "Use Temporarily", + "WidgetWorkspace.controls.useTemporarily.label": "Utilisation temporaire", "WidgetWorkspace.exportModal.controls.download.label": "Télécharge", "WidgetWorkspace.exportModal.fields.name.label": "Nom de la mise en page", "WidgetWorkspace.exportModal.header": "Exporter une mise en page", @@ -1518,9 +1522,9 @@ "WidgetWorkspace.importModal.header": "Importer une mise en page", "WidgetWorkspace.labels.currentlyUsing": "Mise en page courante", "WidgetWorkspace.labels.switchTo": "Passez à :", - "WidgetWorkspace.recommendedLayout.label": "Recommended Layout", - "WidgetWorkspace.recommendedLayout.prompt": "Would you like to save this recommended layout as your default? If not, it will only be applied temporarily for this session.", - "WidgetWorkspace.useRecommendedLayoutLabel.label": "Use Recommended Layout", + "WidgetWorkspace.recommendedLayout.label": "Mise en page recommandée", + "WidgetWorkspace.recommendedLayout.prompt": "Souhaitez-vous enregistrer cette mise en page recommandée comme mise en page par défaut ? Sinon, elle ne sera appliquée que temporairement pour cette session.", + "WidgetWorkspace.useRecommendedLayoutLabel.label": "Utilisez la mise en page recommandée", "Widgets.ActivityListingWidget.controls.toggleExactDates.label": "Montrer les dates exactes", "Widgets.ActivityListingWidget.title": "Liste des activités", "Widgets.ActivityMapWidget.title": "Carte d'activité", @@ -1531,7 +1535,7 @@ "Widgets.ChallengeOverviewWidget.fields.dataOriginDate.label": "Tâches créées le {refreshDate} à partir de données collectées le {sourceDate}.", "Widgets.ChallengeOverviewWidget.fields.keywords.label": "Mots-clefs :", "Widgets.ChallengeOverviewWidget.fields.lastModifiedDate.label": "Dernière mise à jour du challenge :", - "Widgets.ChallengeOverviewWidget.fields.lastTaskRefresh.label": "Last time tasks were built or added to the challenge", + "Widgets.ChallengeOverviewWidget.fields.lastTaskRefresh.label": "La dernière fois, des tâches ont été créées ou ajoutées au défi", "Widgets.ChallengeOverviewWidget.fields.tasksFromDate.label": "Source des datas du challenge :", "Widgets.ChallengeOverviewWidget.fields.tasksRefreshDate.label": "Tâches rafraîchies :", "Widgets.ChallengeOverviewWidget.label": "Aperçu du défi", @@ -1607,7 +1611,7 @@ "Widgets.TaskBundleWidget.removeFromBundle": "Retirer du regroupement", "Widgets.TaskBundleWidget.reviewTaskTitle": "Travailler ensemble sur plusieurs tâches", "Widgets.TaskBundleWidget.tooManyTasks": "Le lot initial ne peut pas dépasser 50 tâches", - "Widgets.TaskBundleWidget.unableToSelect": "Unable to select", + "Widgets.TaskBundleWidget.unableToSelect": "Impossible de sélectionner", "Widgets.TaskBundleWidget.unlockError": "Impossible de déverrouiller les tâches. Veuillez réessayer.", "Widgets.TaskCompletionWidget.cancelSelection": "Annuler la sélection", "Widgets.TaskCompletionWidget.completeTogether": "Compléter ensemble", @@ -1621,7 +1625,7 @@ "Widgets.TaskLocationWidget.controls.showLatLon.label": "Lat/Lon", "Widgets.TaskLocationWidget.controls.showLonLat.label": "Lon/Lat", "Widgets.TaskLocationWidget.label": "Localisation", - "Widgets.TaskMapWidget.editMode": "Current Mode:", + "Widgets.TaskMapWidget.editMode": "Mode Actuel :", "Widgets.TaskMapWidget.rapidDiscardUnsavedChanges": "Certaines modifications dans Rapid ne sont pas enregistrées et seront annulées. Voulez-vous continuer ?", "Widgets.TaskMapWidget.rapidFailed": "Échec du widget ! Géométries nulles !", "Widgets.TaskMapWidget.reselectTask": "Re-Selection de la Tache", diff --git a/lang/it_IT.json b/lang/it_IT.json index 67f15fa75..76b2039c5 100644 --- a/lang/it_IT.json +++ b/lang/it_IT.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Rilascia il file GeoJSON qui o clicca per selezionare il file", "Form.textUpload.promptJSON": "Rilascia il file JSON qui o clicca per selezionare il file", "Form.textUpload.readonly": "Verrà utilizzato il file esistente", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Attività globale", "Grant.Role.admin": "Amministratore", "Grant.Role.read": "Leggi", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Modifica Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Esporta Layout", "WidgetWorkspace.controls.importConfiguration.label": "Importa Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Azzera il Layout", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Modifica completata", diff --git a/lang/ja.json b/lang/ja.json index 39993d6fc..66bc32f71 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "既存のファイルが使われます", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "世界の活動", "Grant.Role.admin": "Admin", "Grant.Role.read": "Read", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "レイアウトを編集", "WidgetWorkspace.controls.exportConfiguration.label": "レイアウトをエクスポート", "WidgetWorkspace.controls.importConfiguration.label": "レイアウトをインポート", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "レイアウトをデフォルトに戻す", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "編集を適用", diff --git a/lang/ko.json b/lang/ko.json index 5aab8b033..356288b1d 100644 --- a/lang/ko.json +++ b/lang/ko.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "GeoJSON 파일을 여기에 놓거나 클릭하여 파일 선택하기", "Form.textUpload.promptJSON": "JSON 파일을 여기에 놓거나 클릭하여 파일 선택하기", "Form.textUpload.readonly": "기존 파일이 사용됩니다", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "글로벌 활동", "Grant.Role.admin": "관리자", "Grant.Role.read": "읽기", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "레이아웃 편집", "WidgetWorkspace.controls.exportConfiguration.label": "레이아웃 내보내기", "WidgetWorkspace.controls.importConfiguration.label": "레이아웃 가져오기", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "레이아웃을 기본값으로 초기화", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "편집 완료", diff --git a/lang/nl.json b/lang/nl.json index ff5a224a3..0e5e9f201 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Zet bestand GeoJSON hier neer of klik om een bestand te selecteren", "Form.textUpload.promptJSON": "Zet bestand JSON hier neer of klik om een bestand te selecteren", "Form.textUpload.readonly": "Bestaand bestand zal worden gebruikt", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Zet hier een bestand GeoJSON neer of klik om te uploaden", "GeoJSONUploadModal.error.invalid": "Ongeldige GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "Geen objecten Polygoon in bestand gevonden", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Virtuele uitdaging maken uit GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygoon} other {# polygonen}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Wereldwijde activiteit", "Grant.Role.admin": "Beheerder", "Grant.Role.read": "Lezen", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "Huidige maand", "PastDurationSelector.customRange.endDate": "Einddatum", "PastDurationSelector.customRange.startDate": "Begindatum", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "Afgelopen {months, plural, one {maand} other {# maanden}}", + "PastDurationSelector.pastYear.selectOption": "Afgelopen jaar", "PointsTicker.label": "Mijn punten", "PopularChallenges.header": "Populaire missies", "PriorityBoundsLayer.priority.high": "Hoge prioriteit", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Lay-out bewerken", "WidgetWorkspace.controls.exportConfiguration.label": "Lay-out exporteren", "WidgetWorkspace.controls.importConfiguration.label": "Lay-out importeren", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Standaard lay-out herstellen", "WidgetWorkspace.controls.saveAsDefault.label": "Opslaan als mijn standaard", "WidgetWorkspace.controls.saveConfiguration.label": "Bewerken voltooid", diff --git a/lang/pl.json b/lang/pl.json index 67b61bd54..a94127ad8 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Istniejący plik zostanie użyty", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Globalna aktywność", "Grant.Role.admin": "Administrator", "Grant.Role.read": "Czytaj", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edytuj układ", "WidgetWorkspace.controls.exportConfiguration.label": "Eksportuj układ", "WidgetWorkspace.controls.importConfiguration.label": "Importuj układ", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Przywróć domyślny układ", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/lang/pt_BR.json b/lang/pt_BR.json index b9e54115f..f5448fb2e 100644 --- a/lang/pt_BR.json +++ b/lang/pt_BR.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Solte o arquivo GeoJSON aqui ou clique para selecionar o arquivo", "Form.textUpload.promptJSON": "Solte o arquivo JSON aqui ou clique para selecionar o arquivo", "Form.textUpload.readonly": "O arquivo existente será usado", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Atividade global", "Grant.Role.admin": "Administrador", "Grant.Role.read": "Ler", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Editar layout", "WidgetWorkspace.controls.exportConfiguration.label": "Exportar layout", "WidgetWorkspace.controls.importConfiguration.label": "Importar layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Redefinir layout para padrão", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Salvar", diff --git a/lang/pt_PT.json b/lang/pt_PT.json index 03468f395..f73ae2b7d 100644 --- a/lang/pt_PT.json +++ b/lang/pt_PT.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Largue aqui o ficheiro GeoJSON ou clique para selecionar o ficheiro", "Form.textUpload.promptJSON": "Largue aqui o ficheiro JSON ou clique para selecionar o ficheiro", "Form.textUpload.readonly": "Será utilizado o ficheiro existente", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Atividade global", "Grant.Role.admin": "Administrador", "Grant.Role.read": "Ler", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Editar layout", "WidgetWorkspace.controls.exportConfiguration.label": "Exportar layout", "WidgetWorkspace.controls.importConfiguration.label": "Importar layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Repor o layout padrão", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Edição concluída", diff --git a/lang/ru_RU.json b/lang/ru_RU.json index cc5b75f64..ced6b9bff 100644 --- a/lang/ru_RU.json +++ b/lang/ru_RU.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Будет использован существующий файл", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Глобальная активность", "Grant.Role.admin": "Админ", "Grant.Role.read": "Читать", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Изменить макет", "WidgetWorkspace.controls.exportConfiguration.label": "Экспорт макета", "WidgetWorkspace.controls.importConfiguration.label": "Импорт макета", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Выбрать макет по умолчанию", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Сохранить изменения", diff --git a/lang/sr.json b/lang/sr.json index 7188d2f03..67282ff48 100644 --- a/lang/sr.json +++ b/lang/sr.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Отпустите GeoJSON фајл овде или кликните да одаберете фајл", "Form.textUpload.promptJSON": "Отпустите JSON фајл овде или кликните да одаберете фајл", "Form.textUpload.readonly": "Постојећи фајл ће бити искоришћен", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Глобална активност", "Grant.Role.admin": "Админ", "Grant.Role.read": "Читање", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Мењање распореда", "WidgetWorkspace.controls.exportConfiguration.label": "Извоз распореда", "WidgetWorkspace.controls.importConfiguration.label": "Увоз распореда", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Ресетуј распоред на подразумевани", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Крај измена", diff --git a/lang/tr.json b/lang/tr.json index 0b7a03f83..b45add6a6 100644 --- a/lang/tr.json +++ b/lang/tr.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "GeoJSON dosyasını buraya bırakın veya dosyayı seçmek için tıklayın", "Form.textUpload.promptJSON": "JSON dosyasını buraya bırakın veya dosyayı seçmek için tıklayın", "Form.textUpload.readonly": "Mevcut dosya kullanılacak", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Küresel Aktivite", "Grant.Role.admin": "Yönetici", "Grant.Role.read": "Oku", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Yerleşimi Düzenle", "WidgetWorkspace.controls.exportConfiguration.label": "Planı Dışa Aktar", "WidgetWorkspace.controls.importConfiguration.label": "Planı İçe Aktar", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Planı Varsayılana Sıfırla", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Düzenleme tamamlandı", diff --git a/lang/uk.json b/lang/uk.json index 9bdc17ba9..16412a32c 100644 --- a/lang/uk.json +++ b/lang/uk.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Перетягніть файл GeoJSON сюди або клацніть щоб знайти його", "Form.textUpload.promptJSON": "Перетягніть файл JSON сюди або клацніть щоб знайти його", "Form.textUpload.readonly": "Буде використано поточний файл", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Глобальна активність", "Grant.Role.admin": "Адмін", "Grant.Role.read": "Читання", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Змінити оформлення", "WidgetWorkspace.controls.exportConfiguration.label": "Експорт оформлення", "WidgetWorkspace.controls.importConfiguration.label": "Імпорт оформлення", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Скинути оформлення на Типове", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Готово", diff --git a/lang/vi.json b/lang/vi.json index 67b437d79..c46d8c1ee 100644 --- a/lang/vi.json +++ b/lang/vi.json @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "Existing file will be used", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "Global Activity", "Grant.Role.admin": "Admin", "Grant.Role.read": "Read", @@ -1507,6 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Edit Layout", "WidgetWorkspace.controls.exportConfiguration.label": "Export Layout", "WidgetWorkspace.controls.importConfiguration.label": "Import Layout", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "Reset Layout to Default", "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", "WidgetWorkspace.controls.saveConfiguration.label": "Done Editing", diff --git a/lang/zh_TW.json b/lang/zh_TW.json index 3c1593f30..d9baed59f 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -900,7 +900,7 @@ "Following.ViewFollowing.notFollowing": "您沒有追蹤任何人", "Following.controls.stopFollowing.label": "停止追隨", "Footer.APIversionLabel": "MaprouletteAPI", - "Footer.documentation": "Documentation", + "Footer.documentation": "文件", "Footer.donate.heading": "支持我們", "Footer.email.donateButton": "Donate to Maproulette", "Footer.email.mastodonButton": "Mastodon @maproulette", @@ -924,11 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "將使用現有檔案", - "GeoJSONUploadModal.dropzone.label": "Drop a GeoJSON file here or click to upload", - "GeoJSONUploadModal.error.invalid": "Invalid GeoJSON: {error}", - "GeoJSONUploadModal.error.noPolygons": "No Polygon features found in file", - "GeoJSONUploadModal.header": "Create Virtual Challenge from GeoJSON", - "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygon} other {# polygons}} loaded", + "GeoJSONUploadModal.countingTasks": "Counting tasks…", + "GeoJSONUploadModal.dropzone.label": "在這裡拖拉 GeoJSON 檔案或是點一下來上傳", + "GeoJSONUploadModal.error.invalid": "無效的 GeoJSON: {error}", + "GeoJSONUploadModal.error.noPolygons": "檔案中找不到多邊形圖徵", + "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", + "GeoJSONUploadModal.header": "從 GeoJSON 新建虛擬挑戰", + "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, other {# 多邊形}} loaded", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", "GlobalActivity.title": "全球活動", "Grant.Role.admin": "管理員", "Grant.Role.read": "閱讀", @@ -1099,8 +1102,8 @@ "PastDurationSelector.currentMonth.selectOption": "本月", "PastDurationSelector.customRange.endDate": "結束日期", "PastDurationSelector.customRange.startDate": "開始日期", - "PastDurationSelector.pastMonths.selectOption": "Past {months, plural, one {Month} other {# Months}}", - "PastDurationSelector.pastYear.selectOption": "Past Year", + "PastDurationSelector.pastMonths.selectOption": "過去 {月 {Month}}", + "PastDurationSelector.pastYear.selectOption": "過年一年", "PointsTicker.label": "My Points", "PopularChallenges.header": "熱門挑戰", "PriorityBoundsLayer.priority.high": "高優先度", @@ -1119,8 +1122,8 @@ "Profile.form.customBasemaps.label": "自訂底圖", "Profile.form.defaultBasemap.description": "Select the default basemap to display on the map. Only a default challenge basemap will override the option selected here.", "Profile.form.defaultBasemap.label": "預設底圖", - "Profile.form.defaultEditor.description": "Select the default external editor that you want to use when fixing tasks. By selecting this option you will be able to skip the editor selection dialog after clicking on edit in a task.", - "Profile.form.defaultEditor.label": "Default External Editor", + "Profile.form.defaultEditor.description": "選擇您想要用來修正任務的預設外部編輯器。藉由選擇的選項點編輯之後讓您跳過選擇編輯器對話框。", + "Profile.form.defaultEditor.label": "預設外部編輯器", "Profile.form.disableTaskConfirm.description": "This will allow the user to bypass the task confirmation modal when a user clicks 'I fixed it!'. Be aware some projects and challenges won't allow this behavior.", "Profile.form.disableTaskConfirm.label": "Disable Task Confirmation Modal", "Profile.form.email.description": "If you request emails in your Notification Subscriptions, they will be sent here.\n\nDecide which MapRoulette notifications you would like to receive, along with whether you would like to be sent an email informing you of the notification (either immediately or as a daily digest)", @@ -1163,7 +1166,7 @@ "ProjectDetails.management.controls.showAll.label": "Display All Challenges", "ProjectPickerModal.chooseProject": "選擇專案", "ProjectPickerModal.noProjects": "找不到專案", - "PropertyList.copyTagsTooltip": "Copy tags to clipboard", + "PropertyList.copyTagsTooltip": "複製標籤到剪貼簿", "PropertyList.noProperties": "沒有屬性", "PropertyList.title": "屬性", "QuickWidget.failedToLoad": "小工具失敗", @@ -1398,7 +1401,7 @@ "TaskClusterMap.controls.search.label": "搜尋", "TaskClusterMap.controls.selectAllInView.label": "選取檢視當中的所有物件", "TaskClusterMap.controls.toggleLegend.label": "啟用圖例", - "TaskClusterMap.controls.uploadGeoJSON.label": "Upload GeoJSON", + "TaskClusterMap.controls.uploadGeoJSON.label": "上傳 GeoJSON", "TaskClusterMap.controls.zoomIn.label": "放大", "TaskClusterMap.controls.zoomOut.label": "縮小", "TaskClusterMap.message.moveMapToRefresh.label": "點一下來顯示任務", @@ -1507,10 +1510,11 @@ "WidgetWorkspace.controls.editConfiguration.label": "編輯配置", "WidgetWorkspace.controls.exportConfiguration.label": "匯出配置", "WidgetWorkspace.controls.importConfiguration.label": "匯入配置", + "WidgetWorkspace.controls.layoutName.label": "Layout Name", "WidgetWorkspace.controls.resetConfiguration.label": "重設配置", - "WidgetWorkspace.controls.saveAsDefault.label": "Save as My Default", + "WidgetWorkspace.controls.saveAsDefault.label": "儲存為我的預設", "WidgetWorkspace.controls.saveConfiguration.label": "完成編輯", - "WidgetWorkspace.controls.useTemporarily.label": "Use Temporarily", + "WidgetWorkspace.controls.useTemporarily.label": "使用暫存", "WidgetWorkspace.exportModal.controls.download.label": "下載", "WidgetWorkspace.exportModal.fields.name.label": "配置名稱", "WidgetWorkspace.exportModal.header": "匯出您的配置", @@ -1519,7 +1523,7 @@ "WidgetWorkspace.labels.currentlyUsing": "目前配置:", "WidgetWorkspace.labels.switchTo": "切換至:", "WidgetWorkspace.recommendedLayout.label": "推薦的樣式", - "WidgetWorkspace.recommendedLayout.prompt": "Would you like to save this recommended layout as your default? If not, it will only be applied temporarily for this session.", + "WidgetWorkspace.recommendedLayout.prompt": "您要儲存這個建議樣式為預設嗎?如果沒有,只會在這一工作階段暫時套用。", "WidgetWorkspace.useRecommendedLayoutLabel.label": "使用推薦的樣式", "Widgets.ActivityListingWidget.controls.toggleExactDates.label": "顯示精確日期", "Widgets.ActivityListingWidget.title": "活躍度列表", From 1d34d784d8f9d5a84ad1315bd1249348aebeacb7 Mon Sep 17 00:00:00 2001 From: Collin Beczak Date: Wed, 8 Apr 2026 12:01:45 -0500 Subject: [PATCH 3/3] update changelog and translations --- CHANGELOG.md | 8 +++++++- lang/nl.json | 8 ++++---- lang/zh_TW.json | 8 ++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16177051f..c4fd5e7cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on ## [v3.18.1] - 2026-04-07 -Released with [maproulette-backend_v4.8.6](https://github.com/maproulette/maproulette-backend/releases/tag/v4.8.6) +Released with [maproulette-backend_v4.8.7](https://github.com/maproulette/maproulette-backend/releases/tag/v4.8.7) ## What's Changed * Remove Test Environment Notice component and related messages from AdminPane. by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2812 @@ -20,10 +20,16 @@ Released with [maproulette-backend_v4.8.6](https://github.com/maproulette/maprou * Bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2826 * Bump brace-expansion by @dependabot[bot] in https://github.com/maproulette/maproulette3/pull/2825 * Fix property replacement to handle null values by using nullish coalescing operator. Add test to ensure null property values are replaced with empty strings. by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2827 +* Change instruction length validation from hard requirement to just a recommendation by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2830 +* Filter out empty tag names in fetchTopTags function to ensure only valid tags are returned. by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2828 +* Fix Leaflet marker icon paths to resolve issues caused by bundler by @CollinBeczak in https://github.com/maproulette/maproulette3/pull/2832 ## MR2 Changes +## What's Changed * Add boundingGeometries parsing from request body by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1219 * Fix leaderboard builder to include points for actions on deleted tasks by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1221 +* Skip priority cascade when proximity is requested in task selection by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1224 +* Include commenter username and conversation link in challenge comment notification emails by @CollinBeczak in https://github.com/maproulette/maproulette-backend/pull/1222 **Full Changelog**: https://github.com/maproulette/maproulette3/compare/v3.18.0...v3.18.1 diff --git a/lang/nl.json b/lang/nl.json index 0e5e9f201..2d086d729 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -924,14 +924,14 @@ "Form.textUpload.promptGeoJSON": "Zet bestand GeoJSON hier neer of klik om een bestand te selecteren", "Form.textUpload.promptJSON": "Zet bestand JSON hier neer of klik om een bestand te selecteren", "Form.textUpload.readonly": "Bestaand bestand zal worden gebruikt", - "GeoJSONUploadModal.countingTasks": "Counting tasks…", + "GeoJSONUploadModal.countingTasks": "Taken tellen…", "GeoJSONUploadModal.dropzone.label": "Zet hier een bestand GeoJSON neer of klik om te uploaden", "GeoJSONUploadModal.error.invalid": "Ongeldige GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "Geen objecten Polygoon in bestand gevonden", - "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", + "GeoJSONUploadModal.error.tooManyTasks": "Teveel taken ({count}). Maximale toegestane aantal is {max}.", "GeoJSONUploadModal.header": "Virtuele uitdaging maken uit GeoJSON", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, one {# polygoon} other {# polygonen}} loaded", - "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", + "GeoJSONUploadModal.taskCount": "{count, plural, one {# taak} other {# taken}} found in area", "GlobalActivity.title": "Wereldwijde activiteit", "Grant.Role.admin": "Beheerder", "Grant.Role.read": "Lezen", @@ -1510,7 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "Lay-out bewerken", "WidgetWorkspace.controls.exportConfiguration.label": "Lay-out exporteren", "WidgetWorkspace.controls.importConfiguration.label": "Lay-out importeren", - "WidgetWorkspace.controls.layoutName.label": "Layout Name", + "WidgetWorkspace.controls.layoutName.label": "Naam lay-out", "WidgetWorkspace.controls.resetConfiguration.label": "Standaard lay-out herstellen", "WidgetWorkspace.controls.saveAsDefault.label": "Opslaan als mijn standaard", "WidgetWorkspace.controls.saveConfiguration.label": "Bewerken voltooid", diff --git a/lang/zh_TW.json b/lang/zh_TW.json index d9baed59f..1c15b50e2 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -924,14 +924,14 @@ "Form.textUpload.promptGeoJSON": "Drop GeoJSON file here or click to select file", "Form.textUpload.promptJSON": "Drop JSON file here or click to select file", "Form.textUpload.readonly": "將使用現有檔案", - "GeoJSONUploadModal.countingTasks": "Counting tasks…", + "GeoJSONUploadModal.countingTasks": "計算任務…", "GeoJSONUploadModal.dropzone.label": "在這裡拖拉 GeoJSON 檔案或是點一下來上傳", "GeoJSONUploadModal.error.invalid": "無效的 GeoJSON: {error}", "GeoJSONUploadModal.error.noPolygons": "檔案中找不到多邊形圖徵", - "GeoJSONUploadModal.error.tooManyTasks": "Too many tasks ({count}). Maximum allowed is {max}.", + "GeoJSONUploadModal.error.tooManyTasks": "太多任務 ({count}) 了,最大的允許值為 {max}。", "GeoJSONUploadModal.header": "從 GeoJSON 新建虛擬挑戰", "GeoJSONUploadModal.success.polygonsLoaded": "{count, plural, other {# 多邊形}} loaded", - "GeoJSONUploadModal.taskCount": "{count, plural, one {# task} other {# tasks}} found in area", + "GeoJSONUploadModal.taskCount": "{count, plural, other {# 任務}} found in area", "GlobalActivity.title": "全球活動", "Grant.Role.admin": "管理員", "Grant.Role.read": "閱讀", @@ -1510,7 +1510,7 @@ "WidgetWorkspace.controls.editConfiguration.label": "編輯配置", "WidgetWorkspace.controls.exportConfiguration.label": "匯出配置", "WidgetWorkspace.controls.importConfiguration.label": "匯入配置", - "WidgetWorkspace.controls.layoutName.label": "Layout Name", + "WidgetWorkspace.controls.layoutName.label": "樣式名稱", "WidgetWorkspace.controls.resetConfiguration.label": "重設配置", "WidgetWorkspace.controls.saveAsDefault.label": "儲存為我的預設", "WidgetWorkspace.controls.saveConfiguration.label": "完成編輯",