diff --git a/css/80_app.css b/css/80_app.css index cb2e4bbb4..6a0c6e613 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -4911,50 +4911,46 @@ li.issue-fix-item button:not(.actionable) .fix-icon { } } -.modal-shortcuts .shortcut-tab { +.shortcut-tab { display: flex; flex-flow: row wrap; justify-content: space-around; } -.modal-shortcuts .shortcut-column { +.shortcut-column { width: auto; + height: 0; + margin-bottom: 20px; } -.modal-shortcuts .shortcut-tab-tools .shortcut-column { - flex: 1 1 100%; - width: 100%; +.shortcut-row { } -.modal-shortcuts td { +.shortcut-row > td { padding-bottom: 3px; } -.modal-shortcuts .shortcut-section { - padding: 20px 0 3px 0; +.shortcut-row > .shortcut-section { + padding: 15px 0 5px 0; } -.modal-shortcuts .shortcut-keys { +.shortcut-keys { padding: 0 10px; color: #767676; text-align: right; white-space: nowrap; } -.ideditor[dir='rtl'] .modal-shortcuts .shortcut-keys { +.ideditor[dir='rtl'] .shortcut-keys { text-align: left; } -.modal-shortcuts .shortcut-keys kbd { +.shortcut-keys kbd { color: #555; + margin: unset; } -.modal-shortcuts .shortcut-keys svg { +.shortcut-separator { margin: 0 3px; } -.modal-shortcuts .shortcut-keys .gesture { - color: #333; - margin: 0 3px; -} - /* Settings Modals (custom background, custom data) ------------------------------------------------------- */ diff --git a/data/core.yaml b/data/core.yaml index 4b62dad9a..a8c2ce723 100644 --- a/data/core.yaml +++ b/data/core.yaml @@ -27,6 +27,7 @@ en: labeled_and_more: one: "{labeled} and {count} more" other: "{labeled} and {count} more" + modes: add_area: title: Area @@ -40,7 +41,6 @@ en: add_note: title: Note description: "Spotted an issue? Let other mappers know." - key: 'N' add_preset: title: "Add {feature}" browse: @@ -48,6 +48,7 @@ en: description: Pan and zoom the map. drag_node: connected_to_hidden: This can't be edited because it is connected to a hidden feature. + operations: add: annotation: @@ -60,7 +61,6 @@ en: line: Started a line. area: Started an area. continue: - key: A title: Continue description: Continue this line. not_eligible: No line can be continued here. @@ -101,7 +101,6 @@ en: description: single: Make this feature circular. multiple: Make these features circular. - key: O annotation: feature: one: Made a feature circular. @@ -132,7 +131,6 @@ en: feature: single: Square the corners of this feature. multiple: Square the corners of these features. - key: Q annotation: corner: one: Squared a corner. @@ -166,7 +164,6 @@ en: points: Straighten these points. line: Straighten this line. lines: Straighten these lines. - key: S annotation: point: one: Straightened a point. @@ -289,7 +286,6 @@ en: line: Disconnect the selected line at these points. area: Disconnect the selected area at these points. multiple_ways: Disconnect the selected features at these points. - key: D annotation: features: Disconnected features. from_each_other: Disconnected features from each other. @@ -303,7 +299,6 @@ en: merge: title: Merge description: Merge these features. - key: C annotation: one: "Merged a feature." other: "Merged {n} features." @@ -321,7 +316,6 @@ en: description: single: Move this feature to a different location. multiple: Move these features to a different location. - key: M annotation: point: Moved a point. vertex: Moved a node in a way. @@ -354,9 +348,6 @@ en: short: single: Flip this feature across its short axis. multiple: Flip these features across their short axis. - key: - long: T - short: "Y" annotation: long: feature: @@ -383,7 +374,6 @@ en: description: single: Rotate this feature around its center point. multiple: Rotate these features around their center point. - key: R annotation: line: Rotated a line. area: Rotated an area. @@ -411,7 +401,6 @@ en: line: Make this line go in the opposite direction. lines: Make these lines go in the opposite direction. features: Flip the directions of these features. - key: V annotation: point: one: Reversed a point. @@ -465,7 +454,6 @@ en: multiple: single_node: Divide these features at this point. multiple_node: Divide these features at these points. - key: X annotation: line: one: "Split a line." @@ -484,7 +472,6 @@ en: delete: Deleted a turn restriction extract: title: Extract - key: E description: vertex: single: Extract this point from its parent lines/areas. @@ -508,10 +495,10 @@ en: multiple: Points can't be extracted from these features because some are connected to hidden features. cycle_highway_tag: title: Cycle Highway Tag - key: C description: Shortcut to cycle selected highway or crosswalk through several different tags. highway_annotation: Changed highway tag of selected way. crosswalk_annotation: Changed crosswalk tag of selected way. + restriction: controls: distance: Distance @@ -578,6 +565,7 @@ en: ratelimit: You have downloaded too much data from OpenStreetMap. Please try again in {seconds} seconds or switch accounts. local_storage_full: You have made too many edits to back up. Consider saving your changes now. retry: Retry + commit: title: Upload to OpenStreetMap upload_explanation: "The changes you upload will be visible on all maps that use OpenStreetMap data." @@ -605,12 +593,10 @@ en: one: "Edits by {users} and {count} other" other: "Edits by {users} and {count} others" info_panels: - key: I selected: one: "{n} selected" other: "{n} selected" background: - key: B title: Background zoom: Zoom vintage: Vintage @@ -621,7 +607,6 @@ en: show_tiles: Show Tiles hide_tiles: Hide Tiles history: - key: H title: History no_history: "No History (New Feature)" version: Version @@ -635,11 +620,9 @@ en: note_created_user: Created By note_link_text: Note on openstreetmap.org location: - key: L title: Location unknown_location: Unknown Location measurement: - key: M title: Measurement geometry: Geometry closed_line: closed line @@ -665,15 +648,12 @@ en: search: Search worldwide... no_results_worldwide: No results found geolocate: - key: L title: Show My Location locating: "Locating, please wait..." location_unavailable: Your location is unavailable. inspector: - key: '`' tooltip: Toggle the feature inspector. zoom_to: - key: Z title: Zoom To Selection no_selection: Nothing to zoom to. show_more: Show More @@ -749,12 +729,12 @@ en: network_ref_direction: "{network} {ref} {direction}" network_ref_from_to: "{network} {ref} from {from} to {to}" network_ref_from_to_via: "{network} {ref} from {from} to {to} via {via}" - first_seen: "First Seen" - last_seen: "Last Seen" + first_seen: First Seen + last_seen: Last Seen + background: title: Background description: Background Settings - key: B backgrounds: Backgrounds none: None best_imagery: Best known imagery source for this location @@ -781,11 +761,9 @@ en: 3dmap: description: Show 3D map tooltip: Show an inset 3D map. - key: '/' minimap: description: Show Minimap tooltip: Show a zoomed out map to help locate the area currently displayed. - key: '/' panel: description: Show Background Panel tooltip: Show advanced background information. @@ -794,29 +772,22 @@ en: tooltip: Show coordinates and regional details. fix_misalignment: Imagery Offset offset: "Drag anywhere in the gray area below to adjust the imagery offset, or enter the offset values in meters." - next_background: - key: '.' - previous_background: - key: ',' + map_data: title: Map Data description: Map Data - key: F data_layers: Data Layers layers: osm: tooltip: Map data from OpenStreetMap title: OpenStreetMap Data feature: OpenStreetMap Feature - key: O notes: tooltip: Note data from OpenStreetMap title: OpenStreetMap Notes - key: 'N' rapid: tooltip: Suggested features detected from machine learning and open data that can be used to improve OpenStreetMap title: Rapid Features - key: R maproulette: tooltip: Tasks from maproulette.org. You can also enter a comma-separated list of challenge IDs to filter. title: @@ -858,33 +829,34 @@ en: title: Show Measurement Panel tooltip: Show geometry values for the selection. style_options: Style Options - highlight_edits: - key: G autohidden: "These features have been automatically hidden because too many would be shown on the screen. You can zoom in to edit them." osmhidden: "These features have been automatically hidden because the OpenStreetMap layer is hidden." + visual_diff: highlight_edits: description: Highlight Changes tooltip: Outline edited features + photo_overlays: title: Photo Overlays photo_type: flat: - title: "Flat Photos" - tooltip: "Traditional photos" + title: Flat Photos + tooltip: Traditional photos panoramic: - title: "Panoramic Photos" - tooltip: "360Β° photos" + title: Panoramic Photos + tooltip: 360Β° photos date_filter: fromDate: - title: "From" - tooltip: "Show photos taken after this date" + title: From + tooltip: Show photos taken after this date toDate: - title: "To" - tooltip: "Show photos taken before this date" + title: To + tooltip: Show photos taken before this date username_filter: - title: "Username" - tooltip: "Show only photos by this user" + title: Username + tooltip: Show only photos by this user + filters: title: Filters active: "Some features are filtered:" @@ -892,63 +864,64 @@ en: manual: "{features} are filtered. Enable them in the Map Data pane." points: description: Points - tooltip: "Points of Interest" + tooltip: Points of Interest traffic_roads: description: Traffic Roads - tooltip: "Highways, Streets, etc." + tooltip: Highways, Streets, etc. service_roads: description: Service Roads - tooltip: "Service Roads, Parking Aisles, Tracks, etc." + tooltip: Service Roads, Parking Aisles, Tracks, etc. paths: description: Paths - tooltip: "Sidewalks, Foot Paths, Cycle Paths, etc." + tooltip: Sidewalks, Foot Paths, Cycle Paths, etc. buildings: description: Buildings - tooltip: "Buildings, Shelters, Garages, etc." + tooltip: Buildings, Shelters, Garages, etc. building_parts: description: Building Parts - tooltip: "3D Building and Roof Components" + tooltip: 3D Building and Roof Components indoor: description: Indoor Features - tooltip: "Rooms, Corridors, Stairwells, etc." + tooltip: Rooms, Corridors, Stairwells, etc. landuse: description: Landuse Features - tooltip: "Forests, Farmland, Parks, Residential, Commercial, etc." + tooltip: Forests, Farmland, Parks, Residential, Commercial, etc. boundaries: description: Boundaries - tooltip: "Administrative Boundaries" + tooltip: Administrative Boundaries water: description: Water Features - tooltip: "Rivers, Lakes, Ponds, Basins, etc." + tooltip: Rivers, Lakes, Ponds, Basins, etc. rail: description: Rail Features - tooltip: "Railways" + tooltip: Railways pistes: description: Pistes - tooltip: "Ski Slopes, Sled Runs, Ice Skating Trails, etc." + tooltip: Ski Slopes, Sled Runs, Ice Skating Trails, etc. aerialways: description: Aerial Features - tooltip: "Chair Lifts, Gondolas, Zip Lines, etc." + tooltip: Chair Lifts, Gondolas, Zip Lines, etc. power: description: Power Features - tooltip: "Power Lines, Power Plants, Substations, etc." + tooltip: Power Lines, Power Plants, Substations, etc. past_future: description: Past/Future Features - tooltip: "Proposed, Construction, Abandoned, Demolished, etc." + tooltip: Proposed, Construction, Abandoned, Demolished, etc. others: description: Other Features - tooltip: "Everything Else" + tooltip: Everything Else + area_fill: wireframe: description: No Fill (Wireframe) - tooltip: "Enabling wireframe mode makes it easy to see the background imagery." - key: W + tooltip: Enabling wireframe mode makes it easy to see the background imagery. partial: description: Partial Fill - tooltip: "Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers)" + tooltip: Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers) full: description: Full Fill - tooltip: "Areas are drawn fully filled." + tooltip: Areas are drawn fully filled. + settings: custom_background: tooltip: Edit custom background @@ -992,10 +965,10 @@ en: example_xyz: "https://example.com/{z}/{x}/{y}.mvt?access_token=123" example_pmtiles: "https://example.com/buildings.pmtiles" placeholder: Enter a url + preferences: title: Preferences description: Preferences - key: P privacy: title: Privacy privacy_link: View the Rapid privacy policy @@ -1029,11 +1002,13 @@ en: deuteranopia: Deuteranopia tritanopia: Tritanopia placeholder: Select colorblind mode + restore: heading: You have unsaved changes description: "Do you wish to restore unsaved changes from a previous editing session?" restore: Restore my changes reset: Discard my changes + save: title: Save help: "Review your changes and upload them to OpenStreetMap, making them visible to other users." @@ -1056,10 +1031,12 @@ en: download_changes: Or download osmChange file done: "All conflicts resolved!" help: "Another user changed some of the same map features you changed. Click on each feature below for more details about the conflict, and choose whether to keep your changes or the other user's changes." + download_osc: title: Download - help: "Download current changes to the map in an osc file." + help: Download current changes to the map in an osc file. no_changes: No changes to download. + merge_remote_changes: conflict: deleted: 'This feature has been deleted by {user}.' @@ -1067,9 +1044,10 @@ en: nodelist: 'Nodes were changed by both you and {user}.' memberlist: 'Relation members were changed by both you and {user}.' tags: 'You changed the {tag} tag to "{local}" and {user} changed it to "{remote}".' + success: - just_edited: "You just edited OpenStreetMap!" - thank_you: "Thank you for improving the map." + just_edited: You just edited OpenStreetMap! + thank_you: Thank you for improving the map. thank_you_location: "Thank you for improving the map around {where}." thank_you_where: format: "{place}{separator}{region}" @@ -1083,11 +1061,12 @@ en: more: More events: Events languages: "Languages: {languages}" - missing: "Is something missing from this list?" - tell_us: "Tell us!" + missing: Is something missing from this list? + tell_us: Tell us! + confirm: - okay: "OK" - cancel: "Cancel" + okay: OK + cancel: Cancel splash: welcome: "Welcome to {rapidicon}!" text: "Rapid is a friendly but powerful editor for OpenStreetMap, a free map of the world. If this is your first time here, click the button below to start the tutorial. Anyone can be a mapper!\n\nThis is Rapid version **{version}**. For more information visit our [changelog](https://github.com/facebook/Rapid/blob/main/CHANGELOG.md#whats-new) and [issue tracker](https://github.com/facebook/Rapid/issues) on GitHub. Happy Mapping! πŸ‘" @@ -1114,8 +1093,9 @@ en: rapid_first_edit: nice: You just added your first {rapidicon} AI-Assisted feature, nice. text: You'll need an OpenStreetMap account to save your work. Would you like to log in with OSM now or keep exploring? - exploring: "I'm just exploring" - login_with_osm: "Log in with OSM" + exploring: I'm just exploring + login_with_osm: Log in with OSM + rapid_feature_inspector: prompt: How would you like to proceed with this selected feature? tags: Tags @@ -1126,13 +1106,11 @@ en: tooltip: Add this feature to the map to begin editing. disabled: To help improve OSM data quality, we only allow {n} AI features to be added in each mapping session. Please try to fix issues on your edits so far. You will be able to add more AI features after saving. disabled_flash: To help improve OSM data quality, we only allow {n} AI Features to be added in each mapping session. - key: A option_ignore: label: Ignore This Feature description: Ignoring this feature helps us improve our machine learning. If you are unsure whether or not this is an accurate feature, feel free to leave it as is, nothing will be saved or lost. πŸ‘ annotation: Ignored a Rapid feature. tooltip: Ignore this feature. - key: D rapid_feature_license: Facebook's Map With AI License rapid_feature_toggle: toggle_all: Toggle all {rapidicon} features @@ -1149,7 +1127,6 @@ en: places: label: Overture Places license_markdown: "[license](https://docs.overturemaps.org/attribution/#places)" - esri: title: ArcGIS Datasets about: "These datasets have been provided as open data by the ArcGIS user community for the purpose of improving OpenStreetMap.
You can learn more by visiting [the Rapid Guide](https://github.com/facebookmicrosites/Open-Mapping-At-Facebook/wiki/Esri-ArcGIS-FAQ) or [Esri/ArcGIS dataset page on the OSM Wiki](https://wiki.openstreetmap.org/wiki/Esri/ArcGIS_Datasets)." @@ -1164,11 +1141,12 @@ en: add_to_map: Add Dataset more_info: More Info license_markdown: "[license](https://wiki.openstreetmap.org/wiki/Esri/ArcGIS_Datasets#License)" + rapid_poweruser_features: beta: Beta Feature heading: label: Rapid Power User Features - description: "for Rapid Insiders" + description: for Rapid Insiders previewDatasets: label: Show preview datasets description: Preview datasets are still in review and not available for all users @@ -1184,28 +1162,34 @@ en: allowLargeEdits: label: Allow large edits description: Remove the limitations about editing features that are not currently visible + version: whats_new: "What's new in Rapid {version}" + tag_reference: description: Description on_wiki: "{tag} on wiki.osm.org" used_with: "used with {type}" + zoom: in: Zoom In out: Zoom Out disabled: in: Cannot zoom in further. out: Cannot zoom out further. + bearing: reset_bearing: Reset Bearing rotate_the_map: "Rotate the map:" - n: 'N' - cannot_zoom: "Cannot zoom out further in current mode." + n: 'N' # This is the North 'N' that appears on the rotation control + full_screen: Toggle Full Screen + self_intersection: error: lines: Lines cannot cross over themselves. areas: Areas cannot cross over themselves. + QA: osmose: title: Osmose Issue @@ -1457,21 +1441,26 @@ en: description: '{var1} may have an outdated URL: {var2} contained suspicious text "{var3}".' 413: description: '{var1} may have an outdated URL: {var2} did not contain keywords "{var3}".' + photos: hires: High resolution + streetside: title: Bing Streetside tooltip: Streetside photos from Microsoft + mapillary: title: Mapillary tooltip: Street-level photos from Mapillary detection: Mapillary Detection show_detections: Show Detections view_on_mapillary: View on Mapillary + mapillary_signs: title: Traffic Signs tooltip: Detected traffic signs in Mapillary photos traffic_sign: Traffic Sign + mapillary_detections: title: Detected Objects tooltip: Detected objects in Mapillary photos @@ -1534,9 +1523,11 @@ en: pedestrians: Traffic Light - Pedestrians trash-can: Trash Can water-valve: Water Valve + kartaview: title: KartaView tooltip: "Street-level photos from KartaView" + note: note: Note title: Edit note @@ -1557,14 +1548,14 @@ en: open_comment: Reopen and Comment report: Report new: New Note - newDescription: "Describe the issue." + newDescription: Describe the issue. save: Save Note login: You must log in to change or comment on this note. - upload_explanation: "Your comments will be publicly visible to all OpenStreetMap users." + upload_explanation: Your comments will be publicly visible to all OpenStreetMap users. upload_explanation_with_user: "Your comments as {user} will be publicly visible to all OpenStreetMap users." + help: title: Help - key: H help: title: Help welcome: "Welcome to the {rapidicon} editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser." @@ -1623,7 +1614,7 @@ en: title: Points intro: "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there." add_point_h: "Adding Points" - add_point: "To add a point, press the {point_icon} **{point}** button on the toolbar above the map, or press the shortcut key `1`." + add_point: "To add a point, press the {point_icon} **{point}** button on the toolbar above the map, or press the shortcut key `{add_point_key}`." add_point_finish: "Next, place the new point on the map. With a mouse, position the cursor where the point should go and {mouse_left_icon} left-click. On a touchscreen, {onefinger_tap_icon} tap the location." move_point_h: "Moving Points" move_point: "To move a point, {mouse_left_icon} left-click and drag it with a mouse or {onefinger_tap_and_drag_icon} tap-and-drag it on a touchscreen." @@ -1634,7 +1625,7 @@ en: title: Lines intro: "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent." add_line_h: "Adding Lines" - add_line: "To add a line, press the {line_icon} **{line}** button on the toolbar above the map, or press the shortcut key `2`." + add_line: "To add a line, press the {line_icon} **{line}** button on the toolbar above the map, or press the shortcut key `{add_line_key}`." add_line_draw: "Next, mark the line's starting location. With a mouse, position the cursor where the line should begin and {mouse_left_icon} left-click to place a node. On a touchscreen, {onefinger_tap_icon} tap the location." add_line_continue: "Continue placing nodes by {mouse_left_icon} clicking or {onefinger_tap_icon} tapping along the shape of the line. While drawing, you can zoom in or drag the map in order to add more detail." add_line_finish: "To finish a line, click or tap on the last node again or press `{return}`." @@ -1660,7 +1651,7 @@ en: point_or_area_h: "Points or Areas?" point_or_area: "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building." add_area_h: "Adding Areas" - add_area_command: "To add an area, press the {area_icon} **{area}** button on the toolbar above the map, or press the shortcut key `3`." + add_area_command: "To add an area, press the {area_icon} **{area}** button on the toolbar above the map, or press the shortcut key `{add_area_key}`." add_area_draw: "Next, place the first corner of the area. With a mouse, position the cursor over any corner and {mouse_left_icon} left-click to place a node. On a touchscreen, {onefinger_tap_icon} tap the location." add_area_continue: "Continue placing nodes by {mouse_left_icon} clicking or {onefinger_tap_icon} tapping along the edge of the area. While drawing, you can zoom in or drag the map in order to add more detail." add_area_finish: "To finish an area, click or tap on the first or last node again or press `{return}`." @@ -1792,12 +1783,11 @@ en: indirect_noedit: "You may not edit indirect restrictions. Instead, edit the nearby direct restriction." issues: title: Issues - key: I - list_title: "Issues" + list_title: Issues errors: - list_title: "Errors" + list_title: Errors warnings: - list_title: "Warnings" + list_title: Warnings rules: title: Rules user_resolved_issues: Issues resolved by your edits @@ -1821,12 +1811,12 @@ en: options: what: title: "Check:" - edited: "My Edits" + edited: My Edits all: "Everything" where: title: "Where:" - visible: "In View" - all: "Everywhere" + visible: In View + all: Everywhere suggested: "Suggested updates:" enable_all: Enable All disable_all: Disable All @@ -1838,7 +1828,7 @@ en: annotation: Fixed several validation issues. almost_junction: title: Almost Junctions - tip: "Find features that should possibly be connected to other nearby features" + tip: Find features that should possibly be connected to other nearby features message: "{feature} is very close but not connected to {feature2}" self: message: "{feature} ends very close to itself but does not reconnect" @@ -1867,8 +1857,8 @@ en: area_as_point: message: '{feature} should be an area, not a point' close_nodes: - title: "Very Close Points" - tip: "Find redundant and crowded points" + title: Very Close Points + tip: Find redundant and crowded points message: "Two points in {way} are very close together" reference: "Redundant points in a way should be merged or moved apart." detached: @@ -2202,6 +2192,7 @@ en: title: Delete this node to simplify connection move_node_around_conn: title: Move this node to adjust connection shape + intro: done: done ok: OK @@ -2329,6 +2320,7 @@ en: willow-drive: Willow Drive wood-street: Wood Street world-fare: World Fare + welcome: title: "Welcome" welcome: "Welcome! This walkthrough will teach you the basics of editing on OpenStreetMap." @@ -2510,11 +2502,10 @@ en: shortcuts: "You can view a list of commands along with their keyboard shortcuts by pressing the `{shortcuts_key}` key." save: "Don't forget to regularly save your changes!" start: "Start mapping!" + shortcuts: - title: "Keyboard Shortcuts" - tooltip: "Show the keyboard shortcuts screen." - toggle: - key: '?' + title: Keyboard Shortcuts + tooltip: Show the keyboard shortcuts screen. key: alt: Alt backspace: Backspace @@ -2537,116 +2528,239 @@ en: gesture: drag: drag or: "-or-" - browsing: - title: "Browsing" - navigation: - title: "Navigation" - pan: "Pan map" - pan_more: "Pan map by a lot" - zoom: "Zoom in / out" - zoom_more: "Zoom in / out by a lot" - rotate: "Rotate map" - rotate_incremental: "Rotate Map Incrementally" - help: - title: "Help" - help: "Show help/documentation" - keyboard: "Show keyboard shortcuts" - display_options: - title: "Display options" - background: "Toggle background imagery pane" - background_switch: "Switch back to last used background" - background_previous: "Switch to previous background in list" - background_next: "Switch to next background in list" - map_data: "Toggle map data pane" - issues: "Toggle validation issues pane" - preferences: "Toggle user preferences pane" - fullscreen: "Toggle full screen mode" - inspector: "Toggle feature inspector" - wireframe: "Toggle wireframe mode" - osm_data: "Toggle OpenStreetMap data" - osm_notes: "Toggle OpenStreetMap notes" - rapid_features_data: "Toggle Rapid features" - highlight_edits: "Highlight unsaved edits" - selecting: - title: "Selecting features" - select_one: "Select a single feature" - select_multi: "Select multiple features" - lasso: "Draw a selection lasso around features" - search: "Find features matching search text" - with_selected: - title: "With features selected" - edit_menu: "Toggle edit menu" - zoom_to: "Zoom in/out on selected features" - photo_selected: - title: "With photo selected" - sequence: "Step to next / previous photo in sequence" - vertex_selected: - title: "With node selected" - previous: "Step to previous node" - next: "Step to next node" - first: "Jump to first node" - last: "Jump to last node" - change_parent: "Switch parent way" - parent: "Select parent way" - way_selected: - title: "With way selected" - child: "Select child nodes" - editing: - title: "Editing" - drawing: - title: "Drawing" - add_point: "'Add point' mode" - add_line: "'Add line' mode" - add_area: "'Add area' mode" - add_note: "'Add note' mode" - place_point: "Place a point or note" - disable_snap: "Hold to disable point snapping" - stop_line: "Finish drawing a line or area" - commands: - title: "Commands" - copy: "Copy selected features" - paste: "Paste copied features" - undo: "Undo last action" - redo: "Redo last action" - save: "Save changes" - rapid: - title: "With Rapid feature selected" - accept_feature: "Accept the feature" - ignore_feature: "Ignore the feature" - operations: - title: "Editing Operations" - continue_line: "Continue a line at the selected endpoint" - merge: "Combine (merge) selected features" - disconnect: "Disconnect selected features" - extract: "Extract a point from a feature" - split: "Split features at the selected points" - reverse: "Reverse selected features" - move: "Move selected features" - rotate: "Rotate selected features" - orthogonalize: "Square corners of a line or area" - straighten: "Straighten a line or points" - circularize: "Circularize a closed line or area" - reflect_long: "Flip features across the longer axis" - reflect_short: "Flip features across the shorter axis" - delete: "Delete selected features" - cycle_highway_tag: "Cycle through common tags" - tools: - title: "Tools" - viewers: - title: "Viewers" - minimap: "Toggle minimap" - 3dmap: "Toggle 3D map" - mapillary: "Toggle Mapillary" - bingStreetside: "Toggle Bing Streetside" - kartaview: "Toggle Kartaview" - disableDataLayers: "Toggle all data layers" - info: - title: "Information" - all: "Toggle all information panels" - background: "Toggle background panel" - history: "Toggle history panel" - location: "Toggle location panel" - measurement: "Toggle measurement panel" + browsing: Browsing + editing: Editing + tools: Tools/Display + navigation: Navigation + selecting_features: Selecting features + with_features_selected: With features selected + with_node_selected: With node selected + with_way_selected: With way selected + with_rapid_selected: With Rapid feature selected + with_photo_selected: With photo selected + drawing: Drawing + commands: Commands + operations: Editing Operations + help: Help + display_options: Display options + viewers: Viewers + layers: Layers + info: Information + + command: + pan: + label: Pan map + pan_more: + label: Pan map by a lot + zoom: + label: Zoom in / out + zoom_more: + label: Zoom in / out by a lot + rotate_map: + label: Rotate map + rotate_incremental: + label: Rotate map Incrementally + + select_one: + label: Select a single feature + select_multi: + label: Select multiple features + lasso: + label: Draw a selection lasso around features + + edit_menu: + label: Toggle edit menu + zoom_to: + label: Zoom in / out on selected features + key: Z # to zoom in / out on selected features + + previous_node: + label: Step to previous node + next_node: + label: Step to next node + first_node: + label: Jump to first node + last_node: + label: Jump to last node + change_parent: + label: Switch parent way + select_parent: + label: Select parent way + + select_children: + label: Select child nodes + + accept_feature: + label: Accept the feature + key: A # to Accept a suggested feature + ignore_feature: + label: Ignore the feature + key: D # to Ignore a suggested feature + + follow_sequence: + label: Step to next / previous photo in sequence + + add_point: + label: "'Add point' mode" + key: '1' # to Add a Point + add_line: + label: "'Add line' mode" + key: '2' # to Add a Line + add_area: + label: "'Add area' mode" + key: '3' # to Add an Area + add_note: + label: "'Add note' mode" + key: 'N' # to Add a Note + place_point: + label: Place a point or note + disable_snap: + label: Hold to disable point snapping + stop_line: + label: Finish drawing a line or area + + copy: + label: Copy selected features + paste: + label: Paste copied features + undo: + label: Undo last action + redo: + label: Redo last action + save: + label: Save changes + find: + label: Find features matching search text + + continue_line: + label: Continue a line at the selected endpoint + key: A # to continue a line at the selected endpoint + merge: + label: Combine (merge) selected features + key: C # to combine (merge) selected features + disconnect: + label: Disconnect selected features + key: D # to disconnect selected features + extract: + label: Extract a point from a feature + key: E # to extract a point from an area feature + split: + label: Split features at the selected points + key: X # to split features at the selected points + reverse: + label: Reverse selected features + key: V # to reverse selected features + move: + label: Move selected features + key: M # to move selected features + rotate: + label: Rotate selected features + key: R # to rotate selected features + orthogonalize: + label: Square corners of a line or area + key: Q # to square corners of a line or area + straighten: + label: Straighten a line or points + key: S # to straighten a line or points + circularize: + label: Circularize a closed line or area + key: O # to circularize a closed line or area + reflect_long: + label: Flip features across the longer axis + key: T # to flip features across their long axis + reflect_short: + label: Flip features across the shorter axis + key: 'Y' # to flip features across their short axis + delete: + label: Delete selected features + cycle_highway_tag: + label: Cycle through common tags + key: C # + to cycle through common tags + + toggle_background: + label: Toggle background imagery pane + key: B # to toggle the Background pane + background_switch: + label: Switch back to last used background + key: B # + to switch back to last used background + background_previous: + label: Switch to previous background in list + key: ',' # to switch to the next background in the list + background_next: + label: Switch to next background in list + key: '.' # to switch to the previous background in the list + toggle_map_data: + label: Toggle map data pane + key: F # to toggle the Map Data pane + toggle_issues: + label: Toggle validation issues pane + key: I # to toggle the Issues pane + toggle_preferences: + label: Toggle user preferences pane + key: P # to toggle the Preferences pane + toggle_help: + label: Toggle help/documentation pane + key: H # to toggle the Help pane + toggle_fullscreen: + label: Toggle full screen mode + toggle_inspector: + label: Toggle feature inspector + key: '`' # to toggle the inspector (sidebar) + wireframe: + label: Toggle wireframe display + key: W # to toggle wireframe display + highlight_edits: + label: Highlight unsaved edits + key: G # to toggle changed edits display + keyboard_shortcuts: + label: Show keyboard shortcuts + key: '?' # to toggle the keyboard shortcuts screen + + toggle_minimap: + label: Toggle minimap + key: '/' # to toggle the minimap + toggle_3dmap: + label: Toggle 3D map + key: '/' # + to toggle the 3D map + + toggle_all_layers: + label: Toggle all data layers + key: D # + to toggle all data layers + toggle_osm_data: + label: Toggle OpenStreetMap data + key: O # + to toggle the OpenStreetMap data layer + toggle_osm_notes: + label: Toggle OpenStreetMap notes + key: 'N' # + to toggle the OpenStreetMap notes layer + toggle_rapid_data: + label: Toggle Rapid features + key: R # + to toggle the Rapid layer + toggle_mapillary: + label: Toggle Mapillary + key: M # + to toggle the Mapillary layer + toggle_streetside: + label: Toggle Bing Streetside + key: S # + to toggle the Bing Streetside layer + toggle_kartaview: + label: Toggle Kartaview + key: K # + to toggle the Kartaview layer + + toggle_all_cards: + label: Toggle all information panels + key: I # + to toggle all Info panels + toggle_background_card: + label: Toggle background panel + key: B # + + to toggle the Background Info panel + toggle_history_card: + label: Toggle history panel + key: H # + + to toggle the History Info panel + toggle_location_card: + label: Toggle location panel + key: L # + + to toggle the Location Info panel + toggle_measurement_card: + label: Toggle measurement panel + key: M # + + to toggle the Measurement Info panel + units: feet: "{quantity} ft" miles: "{quantity} mi" @@ -2670,7 +2784,3 @@ en: coordinate_pair: "{latitude}, {longitude}" # translate the letters but leave the format the same year_month_day: "YYYY-MM-DD" - wikidata: - identifier: "Identifier" - label: "Label" - description: "Description" diff --git a/data/l10n/core.en.json b/data/l10n/core.en.json index 9f92c1f2b..ec99c5310 100644 --- a/data/l10n/core.en.json +++ b/data/l10n/core.en.json @@ -48,8 +48,7 @@ }, "add_note": { "title": "Note", - "description": "Spotted an issue? Let other mappers know.", - "key": "N" + "description": "Spotted an issue? Let other mappers know." }, "add_preset": { "title": "Add {feature}" @@ -78,7 +77,6 @@ } }, "continue": { - "key": "A", "title": "Continue", "description": "Continue this line.", "not_eligible": "No line can be continued here.", @@ -133,7 +131,6 @@ "single": "Make this feature circular.", "multiple": "Make these features circular." }, - "key": "O", "annotation": { "feature": { "one": "Made a feature circular.", @@ -176,7 +173,6 @@ "multiple": "Square the corners of these features." } }, - "key": "Q", "annotation": { "corner": { "one": "Squared a corner.", @@ -222,7 +218,6 @@ "line": "Straighten this line.", "lines": "Straighten these lines." }, - "key": "S", "annotation": { "point": { "one": "Straightened a point.", @@ -388,7 +383,6 @@ "multiple_ways": "Disconnect the selected features at these points." } }, - "key": "D", "annotation": { "features": "Disconnected features.", "from_each_other": "Disconnected features from each other." @@ -405,7 +399,6 @@ "merge": { "title": "Merge", "description": "Merge these features.", - "key": "C", "annotation": { "one": "Merged a feature.", "other": "Merged {n} features." @@ -426,7 +419,6 @@ "single": "Move this feature to a different location.", "multiple": "Move these features to a different location." }, - "key": "M", "annotation": { "point": "Moved a point.", "vertex": "Moved a node in a way.", @@ -470,10 +462,6 @@ "multiple": "Flip these features across their short axis." } }, - "key": { - "long": "T", - "short": "Y" - }, "annotation": { "long": { "feature": { @@ -511,7 +499,6 @@ "single": "Rotate this feature around its center point.", "multiple": "Rotate these features around their center point." }, - "key": "R", "annotation": { "line": "Rotated a line.", "area": "Rotated an area.", @@ -547,7 +534,6 @@ "lines": "Make these lines go in the opposite direction.", "features": "Flip the directions of these features." }, - "key": "V", "annotation": { "point": { "one": "Reversed a point.", @@ -625,7 +611,6 @@ } } }, - "key": "X", "annotation": { "line": { "one": "Split a line.", @@ -651,7 +636,6 @@ }, "extract": { "title": "Extract", - "key": "E", "description": { "vertex": { "single": "Extract this point from its parent lines/areas.", @@ -684,7 +668,6 @@ }, "cycle_highway_tag": { "title": "Cycle Highway Tag", - "key": "C", "description": "Shortcut to cycle selected highway or crosswalk through several different tags.", "highway_annotation": "Changed highway tag of selected way.", "crosswalk_annotation": "Changed crosswalk tag of selected way." @@ -797,13 +780,11 @@ } }, "info_panels": { - "key": "I", "selected": { "one": "{n} selected", "other": "{n} selected" }, "background": { - "key": "B", "title": "Background", "zoom": "Zoom", "vintage": "Vintage", @@ -815,7 +796,6 @@ "hide_tiles": "Hide Tiles" }, "history": { - "key": "H", "title": "History", "no_history": "No History (New Feature)", "version": "Version", @@ -830,12 +810,10 @@ "note_link_text": "Note on openstreetmap.org" }, "location": { - "key": "L", "title": "Location", "unknown_location": "Unknown Location" }, "measurement": { - "key": "M", "title": "Measurement", "geometry": "Geometry", "closed_line": "closed line", @@ -865,16 +843,13 @@ "no_results_worldwide": "No results found" }, "geolocate": { - "key": "L", "title": "Show My Location", "locating": "Locating, please wait...", "location_unavailable": "Your location is unavailable." }, "inspector": { - "key": "`", "tooltip": "Toggle the feature inspector.", "zoom_to": { - "key": "Z", "title": "Zoom To Selection", "no_selection": "Nothing to zoom to." }, @@ -963,7 +938,6 @@ "background": { "title": "Background", "description": "Background Settings", - "key": "B", "backgrounds": "Backgrounds", "none": "None", "best_imagery": "Best known imagery source for this location", @@ -991,13 +965,11 @@ "sharpness": "Sharpness", "3dmap": { "description": "Show 3D map", - "tooltip": "Show an inset 3D map.", - "key": "/" + "tooltip": "Show an inset 3D map." }, "minimap": { "description": "Show Minimap", - "tooltip": "Show a zoomed out map to help locate the area currently displayed.", - "key": "/" + "tooltip": "Show a zoomed out map to help locate the area currently displayed." }, "panel": { "description": "Show Background Panel", @@ -1008,35 +980,25 @@ "tooltip": "Show coordinates and regional details." }, "fix_misalignment": "Imagery Offset", - "offset": "Drag anywhere in the gray area below to adjust the imagery offset, or enter the offset values in meters.", - "next_background": { - "key": "." - }, - "previous_background": { - "key": "," - } + "offset": "Drag anywhere in the gray area below to adjust the imagery offset, or enter the offset values in meters." }, "map_data": { "title": "Map Data", "description": "Map Data", - "key": "F", "data_layers": "Data Layers", "layers": { "osm": { "tooltip": "Map data from OpenStreetMap", "title": "OpenStreetMap Data", - "feature": "OpenStreetMap Feature", - "key": "O" + "feature": "OpenStreetMap Feature" }, "notes": { "tooltip": "Note data from OpenStreetMap", - "title": "OpenStreetMap Notes", - "key": "N" + "title": "OpenStreetMap Notes" }, "rapid": { "tooltip": "Suggested features detected from machine learning and open data that can be used to improve OpenStreetMap", - "title": "Rapid Features", - "key": "R" + "title": "Rapid Features" }, "maproulette": { "tooltip": "Tasks from maproulette.org. You can also enter a comma-separated list of challenge IDs to filter.", @@ -1088,9 +1050,6 @@ "tooltip": "Show geometry values for the selection." }, "style_options": "Style Options", - "highlight_edits": { - "key": "G" - }, "autohidden": "These features have been automatically hidden because too many would be shown on the screen. You can zoom in to edit them.", "osmhidden": "These features have been automatically hidden because the OpenStreetMap layer is hidden." }, @@ -1201,8 +1160,7 @@ "area_fill": { "wireframe": { "description": "No Fill (Wireframe)", - "tooltip": "Enabling wireframe mode makes it easy to see the background imagery.", - "key": "W" + "tooltip": "Enabling wireframe mode makes it easy to see the background imagery." }, "partial": { "description": "Partial Fill", @@ -1270,7 +1228,6 @@ "preferences": { "title": "Preferences", "description": "Preferences", - "key": "P", "privacy": { "title": "Privacy", "privacy_link": "View the Rapid privacy policy", @@ -1424,15 +1381,13 @@ "annotation": "Added a Rapid feature.", "tooltip": "Add this feature to the map to begin editing.", "disabled": "To help improve OSM data quality, we only allow {n} AI features to be added in each mapping session. Please try to fix issues on your edits so far. You will be able to add more AI features after saving.", - "disabled_flash": "To help improve OSM data quality, we only allow {n} AI Features to be added in each mapping session.", - "key": "A" + "disabled_flash": "To help improve OSM data quality, we only allow {n} AI Features to be added in each mapping session." }, "option_ignore": { "label": "Ignore This Feature", "description": "Ignoring this feature helps us improve our machine learning. If you are unsure whether or not this is an accurate feature, feel free to leave it as is, nothing will be saved or lost. πŸ‘", "annotation": "Ignored a Rapid feature.", - "tooltip": "Ignore this feature.", - "key": "D" + "tooltip": "Ignore this feature." } }, "rapid_feature_license": "Facebook's Map With AI License", @@ -1519,7 +1474,6 @@ "rotate_the_map": "Rotate the map:", "n": "N" }, - "cannot_zoom": "Cannot zoom out further in current mode.", "full_screen": "Toggle Full Screen", "self_intersection": { "error": { @@ -1977,7 +1931,6 @@ }, "help": { "title": "Help", - "key": "H", "help": { "title": "Help", "welcome": "Welcome to the {rapidicon} editor for [OpenStreetMap](https://www.openstreetmap.org/). With this editor you can update OpenStreetMap right from your web browser.", @@ -2040,7 +1993,7 @@ "title": "Points", "intro": "*Points* can be used to represent features such as shops, restaurants, and monuments. They mark a specific location, and describe what's there.", "add_point_h": "Adding Points", - "add_point": "To add a point, press the {point_icon} **{point}** button on the toolbar above the map, or press the shortcut key `1`.", + "add_point": "To add a point, press the {point_icon} **{point}** button on the toolbar above the map, or press the shortcut key `{add_point_key}`.", "add_point_finish": "Next, place the new point on the map. With a mouse, position the cursor where the point should go and {mouse_left_icon} left-click. On a touchscreen, {onefinger_tap_icon} tap the location.", "move_point_h": "Moving Points", "move_point": "To move a point, {mouse_left_icon} left-click and drag it with a mouse or {onefinger_tap_and_drag_icon} tap-and-drag it on a touchscreen.", @@ -2052,7 +2005,7 @@ "title": "Lines", "intro": "*Lines* are used to represent features such as roads, railroads, and rivers. Lines should be drawn down the center of the feature that they represent.", "add_line_h": "Adding Lines", - "add_line": "To add a line, press the {line_icon} **{line}** button on the toolbar above the map, or press the shortcut key `2`.", + "add_line": "To add a line, press the {line_icon} **{line}** button on the toolbar above the map, or press the shortcut key `{add_line_key}`.", "add_line_draw": "Next, mark the line's starting location. With a mouse, position the cursor where the line should begin and {mouse_left_icon} left-click to place a node. On a touchscreen, {onefinger_tap_icon} tap the location.", "add_line_continue": "Continue placing nodes by {mouse_left_icon} clicking or {onefinger_tap_icon} tapping along the shape of the line. While drawing, you can zoom in or drag the map in order to add more detail.", "add_line_finish": "To finish a line, click or tap on the last node again or press `{return}`.", @@ -2079,7 +2032,7 @@ "point_or_area_h": "Points or Areas?", "point_or_area": "Many features can be represented as points or areas. You should map buildings and property outlines as areas whenever possible. Place points inside a building area to represent businesses, amenities, and other features located inside the building.", "add_area_h": "Adding Areas", - "add_area_command": "To add an area, press the {area_icon} **{area}** button on the toolbar above the map, or press the shortcut key `3`.", + "add_area_command": "To add an area, press the {area_icon} **{area}** button on the toolbar above the map, or press the shortcut key `{add_area_key}`.", "add_area_draw": "Next, place the first corner of the area. With a mouse, position the cursor over any corner and {mouse_left_icon} left-click to place a node. On a touchscreen, {onefinger_tap_icon} tap the location.", "add_area_continue": "Continue placing nodes by {mouse_left_icon} clicking or {onefinger_tap_icon} tapping along the edge of the area. While drawing, you can zoom in or drag the map in order to add more detail.", "add_area_finish": "To finish an area, click or tap on the first or last node again or press `{return}`.", @@ -2226,7 +2179,6 @@ }, "issues": { "title": "Issues", - "key": "I", "list_title": "Issues", "errors": { "list_title": "Errors" @@ -3109,9 +3061,6 @@ "shortcuts": { "title": "Keyboard Shortcuts", "tooltip": "Show the keyboard shortcuts screen.", - "toggle": { - "key": "?" - }, "key": { "alt": "Alt", "backspace": "Backspace", @@ -3136,131 +3085,299 @@ "drag": "drag" }, "or": "-or-", - "browsing": { - "title": "Browsing", - "navigation": { - "title": "Navigation", - "pan": "Pan map", - "pan_more": "Pan map by a lot", - "zoom": "Zoom in / out", - "zoom_more": "Zoom in / out by a lot", - "rotate": "Rotate map", - "rotate_incremental": "Rotate Map Incrementally" - }, - "help": { - "title": "Help", - "help": "Show help/documentation", - "keyboard": "Show keyboard shortcuts" - }, - "display_options": { - "title": "Display options", - "background": "Toggle background imagery pane", - "background_switch": "Switch back to last used background", - "background_previous": "Switch to previous background in list", - "background_next": "Switch to next background in list", - "map_data": "Toggle map data pane", - "issues": "Toggle validation issues pane", - "preferences": "Toggle user preferences pane", - "fullscreen": "Toggle full screen mode", - "inspector": "Toggle feature inspector", - "wireframe": "Toggle wireframe mode", - "osm_data": "Toggle OpenStreetMap data", - "osm_notes": "Toggle OpenStreetMap notes", - "rapid_features_data": "Toggle Rapid features", - "highlight_edits": "Highlight unsaved edits" - }, - "selecting": { - "title": "Selecting features", - "select_one": "Select a single feature", - "select_multi": "Select multiple features", - "lasso": "Draw a selection lasso around features", - "search": "Find features matching search text" - }, - "with_selected": { - "title": "With features selected", - "edit_menu": "Toggle edit menu", - "zoom_to": "Zoom in/out on selected features" - }, - "photo_selected": { - "title": "With photo selected", - "sequence": "Step to next / previous photo in sequence" - }, - "vertex_selected": { - "title": "With node selected", - "previous": "Step to previous node", - "next": "Step to next node", - "first": "Jump to first node", - "last": "Jump to last node", - "change_parent": "Switch parent way", - "parent": "Select parent way" - }, - "way_selected": { - "title": "With way selected", - "child": "Select child nodes" - } - }, - "editing": { - "title": "Editing", - "drawing": { - "title": "Drawing", - "add_point": "'Add point' mode", - "add_line": "'Add line' mode", - "add_area": "'Add area' mode", - "add_note": "'Add note' mode", - "place_point": "Place a point or note", - "disable_snap": "Hold to disable point snapping", - "stop_line": "Finish drawing a line or area" - }, - "commands": { - "title": "Commands", - "copy": "Copy selected features", - "paste": "Paste copied features", - "undo": "Undo last action", - "redo": "Redo last action", - "save": "Save changes" + "browsing": "Browsing", + "editing": "Editing", + "tools": "Tools/Display", + "navigation": "Navigation", + "selecting_features": "Selecting features", + "with_features_selected": "With features selected", + "with_node_selected": "With node selected", + "with_way_selected": "With way selected", + "with_rapid_selected": "With Rapid feature selected", + "with_photo_selected": "With photo selected", + "drawing": "Drawing", + "commands": "Commands", + "operations": "Editing Operations", + "help": "Help", + "display_options": "Display options", + "viewers": "Viewers", + "layers": "Layers", + "info": "Information", + "command": { + "pan": { + "label": "Pan map" }, - "rapid": { - "title": "With Rapid feature selected", - "accept_feature": "Accept the feature", - "ignore_feature": "Ignore the feature" - }, - "operations": { - "title": "Editing Operations", - "continue_line": "Continue a line at the selected endpoint", - "merge": "Combine (merge) selected features", - "disconnect": "Disconnect selected features", - "extract": "Extract a point from a feature", - "split": "Split features at the selected points", - "reverse": "Reverse selected features", - "move": "Move selected features", - "rotate": "Rotate selected features", - "orthogonalize": "Square corners of a line or area", - "straighten": "Straighten a line or points", - "circularize": "Circularize a closed line or area", - "reflect_long": "Flip features across the longer axis", - "reflect_short": "Flip features across the shorter axis", - "delete": "Delete selected features", - "cycle_highway_tag": "Cycle through common tags" - } - }, - "tools": { - "title": "Tools", - "viewers": { - "title": "Viewers", - "minimap": "Toggle minimap", - "3dmap": "Toggle 3D map", - "mapillary": "Toggle Mapillary", - "bingStreetside": "Toggle Bing Streetside", - "kartaview": "Toggle Kartaview", - "disableDataLayers": "Toggle all data layers" - }, - "info": { - "title": "Information", - "all": "Toggle all information panels", - "background": "Toggle background panel", - "history": "Toggle history panel", - "location": "Toggle location panel", - "measurement": "Toggle measurement panel" + "pan_more": { + "label": "Pan map by a lot" + }, + "zoom": { + "label": "Zoom in / out" + }, + "zoom_more": { + "label": "Zoom in / out by a lot" + }, + "rotate_map": { + "label": "Rotate map" + }, + "rotate_incremental": { + "label": "Rotate map Incrementally" + }, + "select_one": { + "label": "Select a single feature" + }, + "select_multi": { + "label": "Select multiple features" + }, + "lasso": { + "label": "Draw a selection lasso around features" + }, + "edit_menu": { + "label": "Toggle edit menu" + }, + "zoom_to": { + "label": "Zoom in / out on selected features", + "key": "Z" + }, + "previous_node": { + "label": "Step to previous node" + }, + "next_node": { + "label": "Step to next node" + }, + "first_node": { + "label": "Jump to first node" + }, + "last_node": { + "label": "Jump to last node" + }, + "change_parent": { + "label": "Switch parent way" + }, + "select_parent": { + "label": "Select parent way" + }, + "select_children": { + "label": "Select child nodes" + }, + "accept_feature": { + "label": "Accept the feature", + "key": "A" + }, + "ignore_feature": { + "label": "Ignore the feature", + "key": "D" + }, + "follow_sequence": { + "label": "Step to next / previous photo in sequence" + }, + "add_point": { + "label": "'Add point' mode", + "key": "1" + }, + "add_line": { + "label": "'Add line' mode", + "key": "2" + }, + "add_area": { + "label": "'Add area' mode", + "key": "3" + }, + "add_note": { + "label": "'Add note' mode", + "key": "N" + }, + "place_point": { + "label": "Place a point or note" + }, + "disable_snap": { + "label": "Hold to disable point snapping" + }, + "stop_line": { + "label": "Finish drawing a line or area" + }, + "copy": { + "label": "Copy selected features" + }, + "paste": { + "label": "Paste copied features" + }, + "undo": { + "label": "Undo last action" + }, + "redo": { + "label": "Redo last action" + }, + "save": { + "label": "Save changes" + }, + "find": { + "label": "Find features matching search text" + }, + "continue_line": { + "label": "Continue a line at the selected endpoint", + "key": "A" + }, + "merge": { + "label": "Combine (merge) selected features", + "key": "C" + }, + "disconnect": { + "label": "Disconnect selected features", + "key": "D" + }, + "extract": { + "label": "Extract a point from a feature", + "key": "E" + }, + "split": { + "label": "Split features at the selected points", + "key": "X" + }, + "reverse": { + "label": "Reverse selected features", + "key": "V" + }, + "move": { + "label": "Move selected features", + "key": "M" + }, + "rotate": { + "label": "Rotate selected features", + "key": "R" + }, + "orthogonalize": { + "label": "Square corners of a line or area", + "key": "Q" + }, + "straighten": { + "label": "Straighten a line or points", + "key": "S" + }, + "circularize": { + "label": "Circularize a closed line or area", + "key": "O" + }, + "reflect_long": { + "label": "Flip features across the longer axis", + "key": "T" + }, + "reflect_short": { + "label": "Flip features across the shorter axis", + "key": "Y" + }, + "delete": { + "label": "Delete selected features" + }, + "cycle_highway_tag": { + "label": "Cycle through common tags", + "key": "C" + }, + "toggle_background": { + "label": "Toggle background imagery pane", + "key": "B" + }, + "background_switch": { + "label": "Switch back to last used background", + "key": "B" + }, + "background_previous": { + "label": "Switch to previous background in list", + "key": "," + }, + "background_next": { + "label": "Switch to next background in list", + "key": "." + }, + "toggle_map_data": { + "label": "Toggle map data pane", + "key": "F" + }, + "toggle_issues": { + "label": "Toggle validation issues pane", + "key": "I" + }, + "toggle_preferences": { + "label": "Toggle user preferences pane", + "key": "P" + }, + "toggle_help": { + "label": "Toggle help/documentation pane", + "key": "H" + }, + "toggle_fullscreen": { + "label": "Toggle full screen mode" + }, + "toggle_inspector": { + "label": "Toggle feature inspector", + "key": "`" + }, + "wireframe": { + "label": "Toggle wireframe display", + "key": "W" + }, + "highlight_edits": { + "label": "Highlight unsaved edits", + "key": "G" + }, + "keyboard_shortcuts": { + "label": "Show keyboard shortcuts", + "key": "?" + }, + "toggle_minimap": { + "label": "Toggle minimap", + "key": "/" + }, + "toggle_3dmap": { + "label": "Toggle 3D map", + "key": "/" + }, + "toggle_all_layers": { + "label": "Toggle all data layers", + "key": "D" + }, + "toggle_osm_data": { + "label": "Toggle OpenStreetMap data", + "key": "O" + }, + "toggle_osm_notes": { + "label": "Toggle OpenStreetMap notes", + "key": "N" + }, + "toggle_rapid_data": { + "label": "Toggle Rapid features", + "key": "R" + }, + "toggle_mapillary": { + "label": "Toggle Mapillary", + "key": "M" + }, + "toggle_streetside": { + "label": "Toggle Bing Streetside", + "key": "S" + }, + "toggle_kartaview": { + "label": "Toggle Kartaview", + "key": "K" + }, + "toggle_all_cards": { + "label": "Toggle all information panels", + "key": "I" + }, + "toggle_background_card": { + "label": "Toggle background panel", + "key": "B" + }, + "toggle_history_card": { + "label": "Toggle history panel", + "key": "H" + }, + "toggle_location_card": { + "label": "Toggle location panel", + "key": "L" + }, + "toggle_measurement_card": { + "label": "Toggle measurement panel", + "key": "M" } } }, @@ -3287,11 +3404,6 @@ "coordinate_pair": "{latitude}, {longitude}", "year_month_day": "YYYY-MM-DD" }, - "wikidata": { - "identifier": "Identifier", - "label": "Label", - "description": "Description" - }, "languageNames": { "aa": "Afar", "ab": "Abkhazian", diff --git a/data/shortcuts.json b/data/shortcuts.json index 6e16802ea..f8e47b237 100644 --- a/data/shortcuts.json +++ b/data/shortcuts.json @@ -2,207 +2,134 @@ "shortcuts": [ { "tab": "browsing", - "text": "shortcuts.browsing.title", + "text": "shortcuts.browsing", "columns": [ { "rows": [ - { - "section": "help", - "text": "shortcuts.browsing.help.title" - }, - { - "shortcuts": ["help.key"], - "text": "shortcuts.browsing.help.help" - }, - { - "shortcuts": ["shortcuts.toggle.key", "?"], - "text": "shortcuts.browsing.help.keyboard" - }, { "section": "navigation", - "text": "shortcuts.browsing.navigation.title" + "text": "shortcuts.navigation" }, { "shortcuts": ["{interaction-twofinger-tap-and-drag}", "{interaction-keyboard-arrows-all}"], - "text": "shortcuts.browsing.navigation.pan" + "text": "shortcuts.command.pan.label" }, { "modifiers": ["⌘"], "shortcuts": ["{interaction-keyboard-arrows-all}"], - "text": "shortcuts.browsing.navigation.pan_more" + "text": "shortcuts.command.pan_more.label" }, { "shortcuts": ["{interaction-mouse-wheel}", "{interaction-twofinger-zoom}", ["+", "-"]], - "text": "shortcuts.browsing.navigation.zoom" + "text": "shortcuts.command.zoom.label" }, { "modifiers": ["⌘"], "shortcuts": [["+", "-"]], - "text": "shortcuts.browsing.navigation.zoom_more" + "text": "shortcuts.command.zoom_more.label" }, { "modifiers": ["βŒ₯"], "shortcuts": ["{interaction-mouse-left}", "{interaction-onefinger-tap}"], - "text": "shortcuts.browsing.navigation.rotate" + "text": "shortcuts.command.rotate_map.label" }, { "modifiers": ["⇧"], "shortcuts": ["{interaction-keyboard-arrows-left-right}"], - "text": "shortcuts.browsing.navigation.rotate_incremental" - }, - { - "section": "display_options", - "text": "shortcuts.browsing.display_options.title" - }, - { - "shortcuts": ["background.key"], - "text": "shortcuts.browsing.display_options.background" + "text": "shortcuts.command.rotate_incremental.label" }, - { - "modifiers": ["⌘"], - "shortcuts": ["background.key"], - "text": "shortcuts.browsing.display_options.background_switch" - }, - { - "shortcuts": ["background.previous_background.key"], - "text": "shortcuts.browsing.display_options.background_previous", - "rapid": true - }, - { - "shortcuts": ["background.next_background.key"], - "text": "shortcuts.browsing.display_options.background_next", - "rapid": true - }, - { - "shortcuts": ["map_data.key"], - "text": "shortcuts.browsing.display_options.map_data" - }, - { - "shortcuts": ["issues.key"], - "text": "shortcuts.browsing.display_options.issues" - }, - { - "shortcuts": ["preferences.key"], - "text": "shortcuts.browsing.display_options.preferences" - }, - { - "modifiers": ["βŒƒ", "⌘"], - "shortcuts": ["F"], - "text": "shortcuts.browsing.display_options.fullscreen" - }, - { - "shortcuts": ["inspector.key", "`", "Β²"], - "text": "shortcuts.browsing.display_options.inspector" - }, - { - "shortcuts": ["area_fill.wireframe.key"], - "text": "shortcuts.browsing.display_options.wireframe" - }, - { - "modifiers": ["⇧"], - "shortcuts": ["map_data.layers.osm.key"], - "text": "shortcuts.browsing.display_options.osm_data" - }, - { - "modifiers": ["⇧"], - "shortcuts": ["map_data.layers.notes.key"], - "text": "shortcuts.browsing.display_options.osm_notes" - }, - { - "modifiers": ["⇧"], - "shortcuts": ["map_data.layers.rapid.key"], - "text": "shortcuts.browsing.display_options.rapid_features_data", - "rapid": true - }, - { - "shortcuts": ["map_data.highlight_edits.key"], - "text": "shortcuts.browsing.display_options.highlight_edits" - } - ] - }, - { - "rows": [ { "section": "selecting", - "text": "shortcuts.browsing.selecting.title" + "text": "shortcuts.selecting_features" }, { "shortcuts": ["{interaction-mouse-left}", "{interaction-onefinger-tap}", "shortcuts.key.space"], - "text": "shortcuts.browsing.selecting.select_one" + "text": "shortcuts.command.select_one.label" }, { "modifiers": ["⇧"], "shortcuts": ["{interaction-mouse-left}", "{interaction-onefinger-tap}", "shortcuts.key.space"], - "text": "shortcuts.browsing.selecting.select_multi" + "text": "shortcuts.command.select_multi.label" }, { "modifiers": ["⇧"], "shortcuts": ["{interaction-mouse-left}", "{interaction-onefinger-tap-and-drag}"], "gesture": "shortcuts.gesture.drag", - "text": "shortcuts.browsing.selecting.lasso" - }, - { - "modifiers": ["⌘"], - "shortcuts": ["F"], - "text": "shortcuts.browsing.selecting.search" + "text": "shortcuts.command.lasso.label" }, { "section": "with_selected", - "text": "shortcuts.browsing.with_selected.title" + "text": "shortcuts.with_features_selected" }, { "shortcuts": ["{interaction-mouse-right}", "{interaction-onefinger-tap-and-hold}", "☰"], - "text": "shortcuts.browsing.with_selected.edit_menu" + "text": "shortcuts.command.edit_menu.label" }, { - "shortcuts": ["inspector.zoom_to.key"], - "text": "shortcuts.browsing.with_selected.zoom_to" - }, - { - "section": "photo_selected", - "text": "shortcuts.browsing.photo_selected.title" - }, - { - "shortcuts": ["{interaction-keyboard-arrows-up-down}"], - "text": "shortcuts.browsing.photo_selected.sequence" - }, + "shortcuts": ["shortcuts.command.zoom_to.key"], + "text": "shortcuts.command.zoom_to.label" + } + ] + }, + { + "rows": [ { - "section": "vertex_selected", - "text": "shortcuts.browsing.vertex_selected.title" + "section": "node_selected", + "text": "shortcuts.with_node_selected" }, { "shortcuts": ["[", "β†–"], - "text": "shortcuts.browsing.vertex_selected.previous" + "text": "shortcuts.command.previous_node.label" }, { "shortcuts": ["]", "β†˜"], - "text": "shortcuts.browsing.vertex_selected.next" + "text": "shortcuts.command.next_node.label" }, { "shortcuts": ["{", "β‡ž"], - "text": "shortcuts.browsing.vertex_selected.first" + "text": "shortcuts.command.first_node.label" }, { "shortcuts": ["}", "β‡Ÿ"], - "text": "shortcuts.browsing.vertex_selected.last" + "text": "shortcuts.command.last_node.label" }, { "shortcuts": ["\\", "shortcuts.key.pause"], - "text": "shortcuts.browsing.vertex_selected.change_parent" + "text": "shortcuts.command.change_parent.label" }, { "modifiers": ["⌘"], "shortcuts": ["{interaction-keyboard-arrows-up}"], - "text": "shortcuts.browsing.vertex_selected.parent" + "text": "shortcuts.command.select_parent.label" }, { "section": "way_selected", - "text": "shortcuts.browsing.way_selected.title" + "text": "shortcuts.with_way_selected" }, { "modifiers": ["⌘"], "shortcuts": ["{interaction-keyboard-arrows-down}"], - "text": "shortcuts.browsing.way_selected.child" + "text": "shortcuts.command.select_children.label" + }, + { + "section": "rapid", + "text": "shortcuts.with_rapid_selected" + }, + { + "shortcuts": ["shortcuts.command.accept_feature.key"], + "text": "shortcuts.command.accept_feature.label" + }, + { + "shortcuts": ["shortcuts.command.ignore_feature.key"], + "text": "shortcuts.command.ignore_feature.label" + }, + { + "section": "photo_selected", + "text": "shortcuts.with_photo_selected" + }, + { + "shortcuts": ["{interaction-keyboard-arrows-up-down}"], + "text": "shortcuts.command.follow_sequence.label" } ] } @@ -210,84 +137,75 @@ }, { "tab": "editing", - "text": "shortcuts.editing.title", + "text": "shortcuts.editing", "columns": [ { "rows": [ { "section": "drawing", - "text": "shortcuts.editing.drawing.title" + "text": "shortcuts.drawing" }, { - "shortcuts": ["1"], - "text": "shortcuts.editing.drawing.add_point" + "shortcuts": ["shortcuts.command.add_point.key"], + "text": "shortcuts.command.add_point.label" }, { - "shortcuts": ["2"], - "text": "shortcuts.editing.drawing.add_line" + "shortcuts": ["shortcuts.command.add_line.key"], + "text": "shortcuts.command.add_line.label" }, { - "shortcuts": ["3"], - "text": "shortcuts.editing.drawing.add_area" + "shortcuts": ["shortcuts.command.add_area.key"], + "text": "shortcuts.command.add_area.label" }, { - "shortcuts": ["modes.add_note.key"], - "text": "shortcuts.editing.drawing.add_note" + "shortcuts": ["shortcuts.command.add_note.key"], + "text": "shortcuts.command.add_note.label" }, { "shortcuts": ["{interaction-mouse-left}", "{interaction-onefinger-tap}", "shortcuts.key.space"], - "text": "shortcuts.editing.drawing.place_point" + "text": "shortcuts.command.place_point.label" }, { "shortcuts": ["βŒ₯"], - "text": "shortcuts.editing.drawing.disable_snap" + "text": "shortcuts.command.disable_snap.label" }, { "shortcuts": ["↡", "βŽ‹"], - "text": "shortcuts.editing.drawing.stop_line" + "text": "shortcuts.command.stop_line.label" }, { "section": "commands", - "text": "shortcuts.editing.commands.title" + "text": "shortcuts.commands" }, { "modifiers": ["⌘"], "shortcuts": ["C"], - "text": "shortcuts.editing.commands.copy" + "text": "shortcuts.command.copy.label" }, { "modifiers": ["⌘"], "shortcuts": ["V"], - "text": "shortcuts.editing.commands.paste" + "text": "shortcuts.command.paste.label" }, { "modifiers": ["⌘"], "shortcuts": ["Z"], - "text": "shortcuts.editing.commands.undo" + "text": "shortcuts.command.undo.label" }, { "modifiers": ["⌘", "⇧"], "shortcuts": ["Z"], - "text": "shortcuts.editing.commands.redo" + "text": "shortcuts.command.redo.label" }, { "modifiers": ["⌘"], "shortcuts": ["S"], - "text": "shortcuts.editing.commands.save" + "text": "shortcuts.command.save.label" }, { - "section": "rapid", - "text": "shortcuts.editing.rapid.title" - }, - { - "shortcuts": ["rapid_feature_inspector.option_accept.key"], - "text": "shortcuts.editing.rapid.accept_feature", - "rapid": true - }, - { - "shortcuts": ["rapid_feature_inspector.option_ignore.key"], - "text": "shortcuts.editing.rapid.ignore_feature", - "rapid": true + "modifiers": ["⌘"], + "shortcuts": ["F"], + "text": "shortcuts.command.find.label" } ] }, @@ -295,71 +213,70 @@ "rows": [ { "section": "operations", - "text": "shortcuts.editing.operations.title" + "text": "shortcuts.operations" }, { - "shortcuts": ["{interaction-keyboard-arrows-all}", "operations.move.key"], - "text": "shortcuts.editing.operations.move" + "shortcuts": ["{interaction-keyboard-arrows-all}", "shortcuts.command.move.key"], + "text": "shortcuts.command.move.label" }, { "modifiers": ["⇧"], - "shortcuts": ["{interaction-keyboard-arrows-left-right}", "operations.rotate.key"], - "text": "shortcuts.editing.operations.rotate" + "shortcuts": ["{interaction-keyboard-arrows-left-right}", "shortcuts.command.rotate.key"], + "text": "shortcuts.command.rotate.label" }, { - "shortcuts": ["operations.orthogonalize.key"], - "text": "shortcuts.editing.operations.orthogonalize" + "shortcuts": ["shortcuts.command.orthogonalize.key"], + "text": "shortcuts.command.orthogonalize.label" }, { - "shortcuts": ["operations.straighten.key"], - "text": "shortcuts.editing.operations.straighten" + "shortcuts": ["shortcuts.command.straighten.key"], + "text": "shortcuts.command.straighten.label" }, { - "shortcuts": ["operations.circularize.key"], - "text": "shortcuts.editing.operations.circularize" + "shortcuts": ["shortcuts.command.circularize.key"], + "text": "shortcuts.command.circularize.label" }, { - "shortcuts": ["operations.continue.key"], - "text": "shortcuts.editing.operations.continue_line" + "shortcuts": ["shortcuts.command.continue_line.key"], + "text": "shortcuts.command.continue_line.label" }, { - "shortcuts": ["operations.merge.key"], - "text": "shortcuts.editing.operations.merge" + "shortcuts": ["shortcuts.command.merge.key"], + "text": "shortcuts.command.merge.label" }, { - "shortcuts": ["operations.disconnect.key"], - "text": "shortcuts.editing.operations.disconnect" + "shortcuts": ["shortcuts.command.disconnect.key"], + "text": "shortcuts.command.disconnect.label" }, { - "shortcuts": ["operations.extract.key"], - "text": "shortcuts.editing.operations.extract" + "shortcuts": ["shortcuts.command.extract.key"], + "text": "shortcuts.command.extract.label" }, { - "shortcuts": ["operations.split.key"], - "text": "shortcuts.editing.operations.split" + "shortcuts": ["shortcuts.command.split.key"], + "text": "shortcuts.command.split.label" }, { - "shortcuts": ["operations.reverse.key"], - "text": "shortcuts.editing.operations.reverse" + "shortcuts": ["shortcuts.command.reverse.key"], + "text": "shortcuts.command.reverse.label" }, { - "shortcuts": ["operations.reflect.key.long"], - "text": "shortcuts.editing.operations.reflect_long" + "shortcuts": ["shortcuts.command.reflect_long.key"], + "text": "shortcuts.command.reflect_long.label" }, { - "shortcuts": ["operations.reflect.key.short"], - "text": "shortcuts.editing.operations.reflect_short" + "shortcuts": ["shortcuts.command.reflect_short.key"], + "text": "shortcuts.command.reflect_short.label" }, { "modifiers": ["⌘"], "shortcuts": ["⌫"], - "text": "shortcuts.editing.operations.delete" + "text": "shortcuts.command.delete.label" }, { "modifiers": ["⇧"], - "shortcuts": ["operations.cycle_highway_tag.key"], - "text": "shortcuts.editing.operations.cycle_highway_tag", - "rapid": true + "shortcuts": ["shortcuts.command.cycle_highway_tag.key"], + "text": "shortcuts.command.cycle_highway_tag.label" } ] } @@ -367,72 +284,156 @@ }, { "tab": "tools", - "text": "shortcuts.tools.title", + "text": "shortcuts.tools", "columns": [ + { + "rows": [ + { + "section": "help", + "text": "shortcuts.help" + }, + { + "shortcuts": ["shortcuts.command.toggle_help.key"], + "text": "shortcuts.command.toggle_help.label" + }, + { + "shortcuts": ["shortcuts.command.keyboard_shortcuts.key", "?"], + "text": "shortcuts.command.keyboard_shortcuts.label" + }, + { + "section": "display_options", + "text": "shortcuts.display_options" + }, + { + "shortcuts": ["shortcuts.command.toggle_background.key"], + "text": "shortcuts.command.toggle_background.label" + }, + { + "modifiers": ["⌘"], + "shortcuts": ["shortcuts.command.background_switch.key"], + "text": "shortcuts.command.background_switch.label" + }, + { + "shortcuts": ["shortcuts.command.background_previous.key"], + "text": "shortcuts.command.background_previous.label" + }, + { + "shortcuts": ["shortcuts.command.background_next.key"], + "text": "shortcuts.command.background_next.label" + }, + { + "shortcuts": ["shortcuts.command.toggle_map_data.key"], + "text": "shortcuts.command.toggle_map_data.label" + }, + { + "shortcuts": ["shortcuts.command.toggle_issues.key"], + "text": "shortcuts.command.toggle_issues.label" + }, + { + "shortcuts": ["shortcuts.command.toggle_preferences.key"], + "text": "shortcuts.command.toggle_preferences.label" + }, + { + "modifiers": ["βŒƒ", "⌘"], + "shortcuts": ["F"], + "text": "shortcuts.command.toggle_fullscreen.label" + }, + { + "shortcuts": ["shortcuts.command.toggle_inspector.key", "`", "Β²"], + "text": "shortcuts.command.toggle_inspector.label" + }, + { + "shortcuts": ["shortcuts.command.wireframe.key"], + "text": "shortcuts.command.wireframe.label" + }, + { + "shortcuts": ["shortcuts.command.highlight_edits.key"], + "text": "shortcuts.command.highlight_edits.label" + } + ] + }, { "rows": [ { "section": "viewers", - "text": "shortcuts.tools.viewers.title" + "text": "shortcuts.viewers" }, { - "shortcuts": ["background.minimap.key"], - "text": "shortcuts.tools.viewers.minimap" + "shortcuts": ["shortcuts.command.toggle_minimap.key"], + "text": "shortcuts.command.toggle_minimap.label" }, { "modifiers": ["⌘"], - "shortcuts": ["background.3dmap.key"], - "text": "shortcuts.tools.viewers.3dmap", - "rapid": true + "shortcuts": ["shortcuts.command.toggle_3dmap.key"], + "text": "shortcuts.command.toggle_3dmap.label" + }, + { + "section": "layers", + "text": "shortcuts.layers" }, { "modifiers": ["⇧"], - "shortcuts": ["M"], - "text": "shortcuts.tools.viewers.mapillary" + "shortcuts": ["shortcuts.command.toggle_all_layers.key"], + "text": "shortcuts.command.toggle_all_layers.label" }, - { + { "modifiers": ["⇧"], - "shortcuts": ["S"], - "text": "shortcuts.tools.viewers.bingStreetside" + "shortcuts": ["shortcuts.command.toggle_osm_data.key"], + "text": "shortcuts.command.toggle_osm_data.label" }, { "modifiers": ["⇧"], - "shortcuts": ["K"], - "text": "shortcuts.tools.viewers.kartaview" + "shortcuts": ["shortcuts.command.toggle_osm_notes.key"], + "text": "shortcuts.command.toggle_osm_notes.label" }, - { + { + "modifiers": ["⇧"], + "shortcuts": ["shortcuts.command.toggle_rapid_data.key"], + "text": "shortcuts.command.toggle_rapid_data.label" + }, + { + "modifiers": ["⇧"], + "shortcuts": ["shortcuts.command.toggle_mapillary.key"], + "text": "shortcuts.command.toggle_mapillary.label" + }, + { + "modifiers": ["⇧"], + "shortcuts": ["shortcuts.command.toggle_streetside.key"], + "text": "shortcuts.command.toggle_streetside.label" + }, + { "modifiers": ["⇧"], - "shortcuts": ["D"], - "text": "shortcuts.tools.viewers.disableDataLayers" + "shortcuts": ["shortcuts.command.toggle_kartaview.key"], + "text": "shortcuts.command.toggle_kartaview.label" }, { "section": "info", - "text": "shortcuts.tools.info.title" + "text": "shortcuts.info" }, { "modifiers": ["⌘"], - "shortcuts": ["info_panels.key"], - "text": "shortcuts.tools.info.all" + "shortcuts": ["shortcuts.command.toggle_all_cards.key"], + "text": "shortcuts.command.toggle_all_cards.label" }, { "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.background.key"], - "text": "shortcuts.tools.info.background" + "shortcuts": ["shortcuts.command.toggle_background_card.key"], + "text": "shortcuts.command.toggle_background_card.label" }, { "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.history.key"], - "text": "shortcuts.tools.info.history" + "shortcuts": ["shortcuts.command.toggle_history_card.key"], + "text": "shortcuts.command.toggle_history_card.label" }, { "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.location.key"], - "text": "shortcuts.tools.info.location" + "shortcuts": ["shortcuts.command.toggle_location_card.key"], + "text": "shortcuts.command.toggle_location_card.label" }, { "modifiers": ["⌘", "⇧"], - "shortcuts": ["info_panels.measurement.key"], - "text": "shortcuts.tools.info.measurement" + "shortcuts": ["shortcuts.command.toggle_measurement_card.key"], + "text": "shortcuts.command.toggle_measurement_card.label" } ] } diff --git a/modules/core/ImagerySystem.js b/modules/core/ImagerySystem.js index 254d12774..3a6648990 100644 --- a/modules/core/ImagerySystem.js +++ b/modules/core/ImagerySystem.js @@ -575,7 +575,10 @@ export class ImagerySystem extends AbstractSystem { set brightness(val = 1) { if (val === this._brightness) return; // no change this._brightness = val; - this.context.scene().layers.get('background')?.setBrightness(val); + + const context = this.context; + const scene = context.systems.gfx.scene; + scene.layers.get('background')?.setBrightness(val); this.emit('imagerychange'); } @@ -589,7 +592,10 @@ export class ImagerySystem extends AbstractSystem { set contrast(val = 1) { if (val === this._contrast) return; // no change this._contrast = val; - this.context.scene().layers.get('background')?.setContrast(val); + + const context = this.context; + const scene = context.systems.gfx.scene; + scene.layers.get('background')?.setContrast(val); this.emit('imagerychange'); } @@ -603,7 +609,10 @@ export class ImagerySystem extends AbstractSystem { set saturation(val = 1) { if (val === this._saturation) return; // no change this._saturation = val; - this.context.scene().layers.get('background')?.setSaturation(val); + + const context = this.context; + const scene = context.systems.gfx.scene; + scene.layers.get('background')?.setSaturation(val); this.emit('imagerychange'); } @@ -617,7 +626,10 @@ export class ImagerySystem extends AbstractSystem { set sharpness(val = 1) { if (val === this._sharpness) return; // no change this._sharpness = val; - this.context.scene().layers.get('background')?.setSharpness(val); + + const context = this.context; + const scene = context.systems.gfx.scene; + scene.layers.get('background')?.setSharpness(val); this.emit('imagerychange'); } diff --git a/modules/core/Map3dSystem.js b/modules/core/Map3dSystem.js index 10cc55e3e..acbcb7f03 100644 --- a/modules/core/Map3dSystem.js +++ b/modules/core/Map3dSystem.js @@ -234,7 +234,7 @@ export class Map3dSystem extends AbstractSystem { _setupKeybinding() { const context = this.context; const l10n = context.systems.l10n; - const toggleKey = utilCmd('⌘' + l10n.t('background.3dmap.key')); + const toggleKey = utilCmd('⌘' + l10n.t('shortcuts.command.toggle_3dmap.key')); context.keybinding().off(toggleKey); context.keybinding().on(toggleKey, this.toggle); diff --git a/modules/core/MapSystem.js b/modules/core/MapSystem.js index a62bd696a..ed51d7a78 100644 --- a/modules/core/MapSystem.js +++ b/modules/core/MapSystem.js @@ -5,7 +5,7 @@ import { } from '@rapid-sdk/math'; import { AbstractSystem } from './AbstractSystem.js'; -import { utilCmd, utilTotalExtent } from '../util/index.js'; +import { utilTotalExtent } from '../util/index.js'; const TILESIZE = 256; const MIN_Z = 2; @@ -277,15 +277,12 @@ export class MapSystem extends AbstractSystem { */ _setupKeybinding() { const context = this.context; - const gfx = context.systems.gfx; const l10n = context.systems.l10n; - const wireframeKey = l10n.t('area_fill.wireframe.key'); - const toggleOsmKey = utilCmd('⇧' + l10n.t('map_data.layers.osm.key')); - const toggleNotesKey = utilCmd('⇧' + l10n.t('map_data.layers.notes.key')); - const highlightEditsKey = l10n.t('map_data.highlight_edits.key'); + const wireframeKey = l10n.t('shortcuts.command.wireframe.key'); + const highlightEditsKey = l10n.t('shortcuts.command.highlight_edits.key'); - context.keybinding().off([wireframeKey, toggleOsmKey, highlightEditsKey]); + context.keybinding().off([wireframeKey, highlightEditsKey]); context.keybinding() .on(wireframeKey, e => { @@ -293,22 +290,6 @@ export class MapSystem extends AbstractSystem { e.stopPropagation(); this.wireframeMode = !this.wireframeMode; }) - .on(toggleOsmKey, e => { - e.preventDefault(); - e.stopPropagation(); - - // Don't disappear the OSM data while drawing - iD#6584 - const mode = context.mode; - if (mode && /^draw/.test(mode.id)) return; - - gfx.scene.toggleLayers('osm'); - context.enter('browse'); - }) - .on(toggleNotesKey, e => { - e.preventDefault(); - e.stopPropagation(); - gfx.scene.toggleLayers('notes'); - }) .on(highlightEditsKey, e => { e.preventDefault(); this.highlightEdits = !this.highlightEdits; diff --git a/modules/core/PhotoSystem.js b/modules/core/PhotoSystem.js index 1e7fc879c..55452e135 100644 --- a/modules/core/PhotoSystem.js +++ b/modules/core/PhotoSystem.js @@ -45,7 +45,6 @@ export class PhotoSystem extends AbstractSystem { this._hashchange = this._hashchange.bind(this); this._layerchange = this._layerchange.bind(this); this._photoChanged = this._photoChanged.bind(this); - this._keydown = this._keydown.bind(this); } @@ -79,65 +78,10 @@ export class PhotoSystem extends AbstractSystem { // Setup event handlers.. urlhash.on('hashchange', this._hashchange); gfx.scene.on('layerchange', this._layerchange); - const wireframeKey = '⇧M'; - const toggleOsmKey = '⇧S'; - const toggleNotesKey = '⇧K'; - context.keybinding() - .on(wireframeKey, e => { - e.preventDefault(); - this.toggleLayer('mapillary'); - }) - .on(toggleOsmKey, e => { - e.preventDefault(); - this.toggleLayer('streetside'); - }) - .on(toggleNotesKey, e => { - e.preventDefault(); - this.toggleLayer('kartaview'); - }); }); } - /** - * _keydown - * Handles keydown events to toggle photo layers. - * @param {KeyboardEvent} e - The keyboard event. - */ - _keydown(e) { - if (e.shiftKey && e.key === 'M') { - e.preventDefault(); - this.toggleLayer('mapillary'); - } else if (e.shiftKey && e.key === 'S') { - e.preventDefault(); - this.toggleLayer('streetside'); - } else if (e.shiftKey && e.key === 'K') { - e.preventDefault(); - this.toggleLayer('kartaview'); - } - } - - - /** - * toggleLayer - * Toggles the specified photo layer on or off. - * @param {string} layerID - The ID of the layer to toggle. - */ - toggleLayer(layerID) { - const scene = this.context.systems.gfx.scene; - const layer = scene.layers.get(layerID); - if (layer) { - layer.enabled = !layer.enabled; - this._photoChanged(); - if (layer.enabled) { - this.selectPhoto(layerID); - } else { - this.selectPhoto(); // Deselect if turned off - } - } - } - - /** * startAsync * Called after all core objects have been initialized. @@ -705,7 +649,9 @@ export class PhotoSystem extends AbstractSystem { * @return {boolean} `true` if enabled, `false` if not */ isLayerEnabled(layerID) { - const layer = this.context.scene().layers.get(layerID); + const context = this.context; + const scene = context.systems.gfx.scene; + const layer = scene.layers.get(layerID); return layer?.enabled; } diff --git a/modules/operations/circularize.js b/modules/operations/circularize.js index c2547036f..5f615c8a9 100644 --- a/modules/operations/circularize.js +++ b/modules/operations/circularize.js @@ -108,7 +108,7 @@ export function operationCircularize(context, selectedIDs) { operation.id = 'circularize'; - operation.keys = [ l10n.t('operations.circularize.key') ]; + operation.keys = [ l10n.t('shortcuts.command.circularize.key') ]; operation.title = l10n.t('operations.circularize.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/continue.js b/modules/operations/continue.js index 998ee5744..363141e39 100644 --- a/modules/operations/continue.js +++ b/modules/operations/continue.js @@ -73,7 +73,7 @@ export function operationContinue(context, selectedIDs) { operation.id = 'continue'; - operation.keys = [ l10n.t('operations.continue.key') ]; + operation.keys = [ l10n.t('shortcuts.command.continue_line.key') ]; operation.title = l10n.t('operations.continue.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/cycle_highway_tag.js b/modules/operations/cycle_highway_tag.js index 2112e7ec6..4267f69ce 100644 --- a/modules/operations/cycle_highway_tag.js +++ b/modules/operations/cycle_highway_tag.js @@ -169,7 +169,7 @@ export function operationCycleHighwayTag(context, selectedIDs) { operation.id = 'cycle_highway_tag'; - operation.keys = ['⇧' + l10n.t('operations.cycle_highway_tag.key')]; + operation.keys = ['⇧' + l10n.t('shortcuts.command.cycle_highway_tag.key')]; operation.title = l10n.t('operations.cycle_highway_tag.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/disconnect.js b/modules/operations/disconnect.js index 9374ab9bc..788a5510c 100644 --- a/modules/operations/disconnect.js +++ b/modules/operations/disconnect.js @@ -223,7 +223,7 @@ export function operationDisconnect(context, selectedIDs) { operation.id = 'disconnect'; - operation.keys = [ l10n.t('operations.disconnect.key') ]; + operation.keys = [ l10n.t('shortcuts.command.disconnect.key') ]; operation.title = l10n.t('operations.disconnect.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/extract.js b/modules/operations/extract.js index a10dfdb4b..5383c6f6f 100644 --- a/modules/operations/extract.js +++ b/modules/operations/extract.js @@ -111,7 +111,7 @@ export function operationExtract(context, selectedIDs) { operation.id = 'extract'; - operation.keys = [ l10n.t('operations.extract.key') ]; + operation.keys = [ l10n.t('shortcuts.command.extract.key') ]; operation.title = l10n.t('operations.extract.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/merge.js b/modules/operations/merge.js index fd00e7662..cc65da1b0 100644 --- a/modules/operations/merge.js +++ b/modules/operations/merge.js @@ -103,7 +103,7 @@ export function operationMerge(context, selectedIDs) { operation.id = 'merge'; - operation.keys = [ l10n.t('operations.merge.key') ]; + operation.keys = [ l10n.t('shortcuts.command.merge.key') ]; operation.title = l10n.t('operations.merge.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/move.js b/modules/operations/move.js index b59213e00..0e329a0ff 100644 --- a/modules/operations/move.js +++ b/modules/operations/move.js @@ -86,7 +86,7 @@ export function operationMove(context, selectedIDs) { operation.id = 'move'; - operation.keys = [ l10n.t('operations.move.key') ]; + operation.keys = [ l10n.t('shortcuts.command.move.key') ]; operation.title = l10n.t('operations.move.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/orthogonalize.js b/modules/operations/orthogonalize.js index bc967c57e..aae379205 100644 --- a/modules/operations/orthogonalize.js +++ b/modules/operations/orthogonalize.js @@ -130,7 +130,7 @@ export function operationOrthogonalize(context, selectedIDs) { operation.id = 'orthogonalize'; - operation.keys = [ l10n.t('operations.orthogonalize.key') ]; + operation.keys = [ l10n.t('shortcuts.command.orthogonalize.key') ]; operation.title = l10n.t('operations.orthogonalize.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/reflect.js b/modules/operations/reflect.js index 7723c96ca..b481f6ead 100644 --- a/modules/operations/reflect.js +++ b/modules/operations/reflect.js @@ -100,7 +100,7 @@ export function operationReflect(context, selectedIDs, axis = 'long') { }; operation.id = `reflect-${axis}`; - operation.keys = [ l10n.t(`operations.reflect.key.${axis}`) ]; + operation.keys = [ l10n.t(`shortcuts.command.reflect_${axis}.key`) ]; operation.title = l10n.t(`operations.reflect.title.${axis}`); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/reverse.js b/modules/operations/reverse.js index f4d0983ae..f6bdd4533 100644 --- a/modules/operations/reverse.js +++ b/modules/operations/reverse.js @@ -76,7 +76,7 @@ export function operationReverse(context, selectedIDs) { operation.id = 'reverse'; - operation.keys = [ l10n.t('operations.reverse.key') ]; + operation.keys = [ l10n.t('shortcuts.command.reverse.key') ]; operation.title = l10n.t('operations.reverse.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/rotate.js b/modules/operations/rotate.js index 2d57d285e..f79a08d89 100644 --- a/modules/operations/rotate.js +++ b/modules/operations/rotate.js @@ -88,7 +88,7 @@ export function operationRotate(context, selectedIDs) { operation.id = 'rotate'; - operation.keys = [ l10n.t('operations.rotate.key') ]; + operation.keys = [ l10n.t('shortcuts.command.rotate.key') ]; operation.title = l10n.t('operations.rotate.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/split.js b/modules/operations/split.js index b1c9264ab..fc1f26ba6 100644 --- a/modules/operations/split.js +++ b/modules/operations/split.js @@ -97,7 +97,7 @@ export function operationSplit(context, selectedIDs) { operation.id = 'split'; - operation.keys = [ l10n.t('operations.split.key') ]; + operation.keys = [ l10n.t('shortcuts.command.split.key') ]; operation.title = l10n.t('operations.split.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/operations/straighten.js b/modules/operations/straighten.js index a1d6970f9..f1fa8d014 100644 --- a/modules/operations/straighten.js +++ b/modules/operations/straighten.js @@ -148,7 +148,7 @@ export function operationStraighten(context, selectedIDs) { operation.id = 'straighten'; - operation.keys = [ l10n.t('operations.straighten.key') ]; + operation.keys = [ l10n.t('shortcuts.command.straighten.key') ]; operation.title = l10n.t('operations.straighten.title'); operation.behavior = new KeyOperationBehavior(context, operation); diff --git a/modules/ui/UiInfoCards.js b/modules/ui/UiInfoCards.js index a0213985e..964cc426a 100644 --- a/modules/ui/UiInfoCards.js +++ b/modules/ui/UiInfoCards.js @@ -48,7 +48,7 @@ export class UiInfoCards { // bind ⌘I to show/hide all cards const l10n = context.systems.l10n; - this.key = utilCmd('⌘' + l10n.t('info_panels.key')); + this.key = utilCmd('⌘' + l10n.t('shortcuts.command.toggle_all_cards.key')); context.keybinding().on(this.key, this.toggle); } diff --git a/modules/ui/UiMinimap.js b/modules/ui/UiMinimap.js index 3ba6c3e19..dc02e309c 100644 --- a/modules/ui/UiMinimap.js +++ b/modules/ui/UiMinimap.js @@ -424,7 +424,7 @@ export class UiMinimap { if (!gfx.pixi || !gfx.textures) return Promise.reject(); // called too early? // event handlers - const key = l10n.t('background.minimap.key'); + const key = l10n.t('shortcuts.command.toggle_minimap.key'); context.keybinding().on(key, this.toggle); gfx.on('draw', this.drawMinimap); diff --git a/modules/ui/UiShortcuts.js b/modules/ui/UiShortcuts.js index 03b838396..694ae89d0 100644 --- a/modules/ui/UiShortcuts.js +++ b/modules/ui/UiShortcuts.js @@ -51,7 +51,7 @@ export class UiShortcuts { this.render = this.render.bind(this); const l10n = context.systems.l10n; - this.keys = [l10n.t('shortcuts.toggle.key'), '?']; + this.keys = [l10n.t('shortcuts.command.keyboard_shortcuts.key'), '?']; context.keybinding().on(this.keys, this.toggle); } @@ -119,18 +119,18 @@ export class UiShortcuts { .text(d => l10n.t(d.text)); - const $$shortcutsSection = $$wrapper + const $$content = $$wrapper .append('div') - .attr('class', 'shortcuts-section'); + .attr('class', 'shortcuts-content'); - const tabsEnter = $$shortcutsSection + const $$tabs = $$content .selectAll('.shortcut-tab') .data(this._dataShortcuts) .enter() .append('div') .attr('class', d => `shortcut-tab shortcut-tab-${d.tab}`); - const $$columns = tabsEnter + const $$columns = $$tabs .selectAll('.shortcut-column') .data(d => d.columns) .enter() @@ -155,7 +155,8 @@ export class UiShortcuts { // +-----------------------+-----------------------+ $$sectionRow - .append('td'); // empty + .append('td') // empty + .attr('class', 'shortcut-keys'); $$sectionRow .append('td') @@ -195,6 +196,7 @@ export class UiShortcuts { $$selection .append('span') + .attr('class', 'shortcut-separator') .text('+'); } @@ -261,7 +263,8 @@ export class UiShortcuts { if (i < arr.length - 1) { $$selection .append('span') - .text('\u00a0' + l10n.t('shortcuts.or') + '\u00a0'); + .attr('class', 'shortcut-separator') + .text(l10n.t('shortcuts.or')); } } @@ -269,6 +272,7 @@ export class UiShortcuts { if (d.gesture) { $$selection .append('span') + .attr('class', 'shortcut-separator') .text('+'); $$selection @@ -282,7 +286,7 @@ export class UiShortcuts { $$shortcutRow .append('td') .attr('class', 'shortcut-desc') - .text(d => d.text ? l10n.t(d.text) : '\u00a0'); + .text(d => d.text ? l10n.t(d.text) : '\u00a0'); // \u00a0 =   // Update diff --git a/modules/ui/UiSidebar.js b/modules/ui/UiSidebar.js index d814e86c3..58c78436e 100644 --- a/modules/ui/UiSidebar.js +++ b/modules/ui/UiSidebar.js @@ -153,7 +153,7 @@ export class UiSidebar { .call(this.Tooltip .placement(dir === 'rtl' ? 'right' : 'left') // place on the sidebar side (i.e. don't cover the map) .title(l10n.t('inspector.tooltip')) - .shortcut(l10n.t('inspector.key')) + .shortcut(l10n.t('shortcuts.command.toggle_inspector.key')) ); $sidebar @@ -166,7 +166,7 @@ export class UiSidebar { this.$inspector = $sidebar.select('.inspector-wrap'); // figure out a better way to rebind this if locale changes - const keys = [l10n.t('inspector.key'), '`', 'Β²', '@']; // iD#5663, iD#6864 - common QWERTY, AZERTY + const keys = [l10n.t('shortcuts.command.toggle_inspector.key'), '`', 'Β²', '@']; // iD#5663, iD#6864 - common QWERTY, AZERTY context.keybinding().off(keys); context.keybinding().on(keys, this.toggle); } diff --git a/modules/ui/cards/UiBackgroundCard.js b/modules/ui/cards/UiBackgroundCard.js index 20c0bddd0..2850f824e 100644 --- a/modules/ui/cards/UiBackgroundCard.js +++ b/modules/ui/cards/UiBackgroundCard.js @@ -41,7 +41,7 @@ export class UiBackgroundCard extends AbstractUiCard { .on('draw', this.deferredRender) .on('move', this.deferredUpdateMetadata); - this.key = utilCmd('βŒ˜β‡§' + l10n.t('info_panels.background.key')); + this.key = utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_background_card.key')); context.keybinding().on(this.key, this.toggle); } diff --git a/modules/ui/cards/UiHistoryCard.js b/modules/ui/cards/UiHistoryCard.js index 395a2c015..18e7309c4 100644 --- a/modules/ui/cards/UiHistoryCard.js +++ b/modules/ui/cards/UiHistoryCard.js @@ -37,7 +37,7 @@ export class UiHistoryCard extends AbstractUiCard { map.on('draw', this.deferredRender); context.on('modechange', this.rerender); - this.key = utilCmd('βŒ˜β‡§' + l10n.t('info_panels.history.key')); + this.key = utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_history_card.key')); context.keybinding().on(this.key, this.toggle); } diff --git a/modules/ui/cards/UiLocationCard.js b/modules/ui/cards/UiLocationCard.js index 4dae5d551..0ca2e88a9 100644 --- a/modules/ui/cards/UiLocationCard.js +++ b/modules/ui/cards/UiLocationCard.js @@ -34,7 +34,7 @@ export class UiLocationCard extends AbstractUiCard { // Event listeners eventManager.on('pointermove', this.rerender); - this.key = utilCmd('βŒ˜β‡§' + l10n.t('info_panels.location.key')); + this.key = utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_location_card.key')); context.keybinding().on(this.key, this.toggle); } diff --git a/modules/ui/cards/UiMeasurementCard.js b/modules/ui/cards/UiMeasurementCard.js index 6598d8937..ce5e9af2f 100644 --- a/modules/ui/cards/UiMeasurementCard.js +++ b/modules/ui/cards/UiMeasurementCard.js @@ -62,7 +62,7 @@ export class UiMeasurementCard extends AbstractUiCard { map.on('draw', this.rerender); context.on('modechange', this.rerender); - this.key = utilCmd('βŒ˜β‡§' + l10n.t('info_panels.measurement.key')); + this.key = utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_measurement_card.key')); context.keybinding().on(this.key, this.toggle); } diff --git a/modules/ui/controls/UiZoomToControl.js b/modules/ui/controls/UiZoomToControl.js index de20983d5..ae3274700 100644 --- a/modules/ui/controls/UiZoomToControl.js +++ b/modules/ui/controls/UiZoomToControl.js @@ -18,7 +18,7 @@ export class UiZoomToControl { const l10n = context.systems.l10n; - this.key = l10n.t('inspector.zoom_to.key'); + this.key = l10n.t('shortcuts.command.zoom_to.key'); this._prevTransform = null; // After a zoom in, the previous transform to zoom back out // Create child components diff --git a/modules/ui/intro/helper.js b/modules/ui/intro/helper.js index d9fc02aba..970ec7dd5 100644 --- a/modules/ui/intro/helper.js +++ b/modules/ui/intro/helper.js @@ -97,10 +97,13 @@ export function helpHtml(context, id, replacements) { return: utilCmd.display(context, '↡'), esc: utilCmd.display(context, 'βŽ‹'), space: l10n.t('shortcuts.key.space'), - add_note_key: l10n.t('modes.add_note.key'), - help_key: l10n.t('help.key'), - shortcuts_key: l10n.t('shortcuts.toggle.key'), - toggle_notes_key: l10n.t('map_data.layers.notes.key'), + add_point_key: l10n.t('shortcuts.command.add_point.key'), + add_line_key: l10n.t('shortcuts.command.add_line.key'), + add_area_key: l10n.t('shortcuts.command.add_area.key'), + add_note_key: l10n.t('shortcuts.command.add_note.key'), + help_key: l10n.t('shortcuts.command.toggle_help.key'), + shortcuts_key: l10n.t('shortcuts.command.keyboard_shortcuts.key'), + toggle_notes_key: l10n.t('shortcuts.command.toggle_osm_notes.key'), // reference localized UI labels directly so that they'll always match save: l10n.t('save.title'), diff --git a/modules/ui/panes/background.js b/modules/ui/panes/background.js index f9cffb107..fdc20a24e 100644 --- a/modules/ui/panes/background.js +++ b/modules/ui/panes/background.js @@ -11,7 +11,7 @@ export function uiPaneBackground(context) { const l10n = context.systems.l10n; return uiPane(context, 'background') - .key(l10n.t('background.key')) + .key(l10n.t('shortcuts.command.toggle_background.key')) .label(l10n.t('background.title')) .description(l10n.t('background.description')) .iconName('rapid-icon-layers') diff --git a/modules/ui/panes/help.js b/modules/ui/panes/help.js index 3f941b021..08eff9319 100644 --- a/modules/ui/panes/help.js +++ b/modules/ui/panes/help.js @@ -287,7 +287,7 @@ export function uiPaneHelp(context) { const helpPane = uiPane(context, 'help') - .key(l10n.t('help.key')) + .key(l10n.t('shortcuts.command.toggle_help.key')) .label(l10n.t('help.title')) .description(l10n.t('help.title')) .iconName('rapid-icon-help'); diff --git a/modules/ui/panes/issues.js b/modules/ui/panes/issues.js index 3b0f4c573..6b136bf4f 100644 --- a/modules/ui/panes/issues.js +++ b/modules/ui/panes/issues.js @@ -10,7 +10,7 @@ export function uiPaneIssues(context) { const l10n = context.systems.l10n; return uiPane(context, 'issues') - .key(l10n.t('issues.key')) + .key(l10n.t('shortcuts.command.toggle_issues.key')) .label(l10n.t('issues.title')) .description(l10n.t('issues.title')) .iconName('rapid-icon-alert') diff --git a/modules/ui/panes/map_data.js b/modules/ui/panes/map_data.js index 8b5505158..09d400afa 100644 --- a/modules/ui/panes/map_data.js +++ b/modules/ui/panes/map_data.js @@ -10,7 +10,7 @@ export function uiPaneMapData(context) { const l10n = context.systems.l10n; return uiPane(context, 'map-data') - .key(l10n.t('map_data.key')) + .key(l10n.t('shortcuts.command.toggle_map_data.key')) .label(l10n.t('map_data.title')) .description(l10n.t('map_data.description')) .iconName('rapid-icon-data') diff --git a/modules/ui/panes/preferences.js b/modules/ui/panes/preferences.js index b9ab5ce18..6c71c1165 100644 --- a/modules/ui/panes/preferences.js +++ b/modules/ui/panes/preferences.js @@ -9,7 +9,7 @@ export function uiPanePreferences(context) { const l10n = context.systems.l10n; return uiPane(context, 'preferences') - .key(l10n.t('preferences.key')) + .key(l10n.t('shortcuts.command.toggle_preferences.key')) .label(l10n.t('preferences.title')) .description(l10n.t('preferences.description')) .iconName('fas-user-cog') diff --git a/modules/ui/rapid_feature_inspector.js b/modules/ui/rapid_feature_inspector.js index d0cee6b41..7575fa01f 100644 --- a/modules/ui/rapid_feature_inspector.js +++ b/modules/ui/rapid_feature_inspector.js @@ -292,11 +292,11 @@ export function uiRapidFeatureInspector(context, keybinding) { shortcut = ''; } else { title = l10n.t('rapid_feature_inspector.option_accept.tooltip'); - shortcut = l10n.t('rapid_feature_inspector.option_accept.key'); + shortcut = l10n.t('shortcuts.command.accept_feature.key'); } } else if (d.key === 'ignore') { title = l10n.t('rapid_feature_inspector.option_ignore.tooltip'); - shortcut = l10n.t('rapid_feature_inspector.option_ignore.key'); + shortcut = l10n.t('shortcuts.command.ignore_feature.key'); } if (title) { @@ -334,8 +334,8 @@ export function uiRapidFeatureInspector(context, keybinding) { }; if (keybinding) { - const acceptKey = l10n.t('rapid_feature_inspector.option_accept.key'); - const ignoreKey = l10n.t('rapid_feature_inspector.option_ignore.key'); + const acceptKey = l10n.t('shortcuts.command.accept_feature.key'); + const ignoreKey = l10n.t('shortcuts.command.ignore_feature.key'); keybinding().off([acceptKey, ignoreKey]); keybinding().on(acceptKey, onAcceptFeature); keybinding().on(ignoreKey, onIgnoreFeature); diff --git a/modules/ui/rapid_feature_toggle_dialog.js b/modules/ui/rapid_feature_toggle_dialog.js index e793cd736..7c902f2e8 100644 --- a/modules/ui/rapid_feature_toggle_dialog.js +++ b/modules/ui/rapid_feature_toggle_dialog.js @@ -71,7 +71,7 @@ export function uiRapidFeatureToggleDialog(context, AIFeatureToggleKey, featureT function keyPressHandler(d3_event) { - if (d3_event.shiftKey && d3_event.key === l10n.t('map_data.layers.rapid.key')) { + if (d3_event.shiftKey && d3_event.key === l10n.t('shortcuts.command.toggle_rapid_data.key')) { toggleRapid(); } } diff --git a/modules/ui/sections/background_list.js b/modules/ui/sections/background_list.js index 3c3275a3d..f48e3ea67 100644 --- a/modules/ui/sections/background_list.js +++ b/modules/ui/sections/background_list.js @@ -101,7 +101,7 @@ export function uiSectionBackgroundList(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('background.minimap.tooltip')) - .shortcut(l10n.t('background.minimap.key')) + .shortcut(l10n.t('shortcuts.command.toggle_minimap.key')) .placement('top') ); @@ -124,7 +124,7 @@ export function uiSectionBackgroundList(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('background.3dmap.tooltip')) - .shortcut(utilCmd('⌘' + l10n.t('background.3dmap.key'))) + .shortcut(utilCmd('⌘' + l10n.t('shortcuts.command.toggle_3dmap.key'))) .placement('top') ); @@ -149,7 +149,7 @@ export function uiSectionBackgroundList(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('background.panel.tooltip')) - .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('info_panels.background.key'))) + .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_background_card.key'))) .placement('top') ); @@ -168,7 +168,7 @@ export function uiSectionBackgroundList(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('background.location_panel.tooltip')) - .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('info_panels.location.key'))) + .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_location_card.key'))) .placement('top') ); @@ -236,7 +236,7 @@ export function uiSectionBackgroundList(context) { }; if (d.id === previousBackgroundID()) { titleHtml += '

' + l10n.t('background.switch'); - tooltip.shortcut(utilCmd('⌘' + l10n.t('background.key'))); + tooltip.shortcut(utilCmd('⌘' + l10n.t('shortcuts.command.background_switch.key'))); } if (titleHtml) { @@ -567,9 +567,9 @@ export function uiSectionBackgroundList(context) { imagery.on('imagerychange', renderIfVisible); map.on('draw', deferredOnMapDraw); - const swapBackgroundKey = utilCmd('⌘' + l10n.t('background.key')); - const nextBackgroundKey = l10n.t('background.next_background.key'); - const prevBackgroundKey = l10n.t('background.previous_background.key'); + const swapBackgroundKey = utilCmd('⌘' + l10n.t('shortcuts.command.background_switch.key')); + const nextBackgroundKey = l10n.t('shortcuts.command.background_next.key'); + const prevBackgroundKey = l10n.t('shortcuts.command.background_previous.key'); context.keybinding() .off([swapBackgroundKey, nextBackgroundKey, prevBackgroundKey]); diff --git a/modules/ui/sections/data_layers.js b/modules/ui/sections/data_layers.js index da14ec593..1b42efcd6 100644 --- a/modules/ui/sections/data_layers.js +++ b/modules/ui/sections/data_layers.js @@ -28,7 +28,7 @@ import { utilCmd } from '../../util/cmd.js'; */ export function uiSectionDataLayers(context) { const l10n = context.systems.l10n; - const scene = context.scene(); + const scene = context.systems.gfx.scene; const ui = context.systems.ui; const section = uiSection(context, 'data-layers') @@ -38,31 +38,64 @@ export function uiSectionDataLayers(context) { const settingsCustomData = uiSettingsCustomData(context) .on('change', customChanged); - let previousLayerStates = new Map(); - function toggleAllLayers() { - const allLayerIDs = ['osm', 'notes', 'rapid', 'maproulette', 'keepRight', 'osmose', 'geoScribble', 'custom-data', 'mapillary', 'streetside', 'kartaview']; + let _previousLayerStates = new Map(); + + + /* toggleAllLayers + * @param {Event} e - event that triggered the toggle (if any) + */ + function toggleAllLayers(e) { + if (e) e.preventDefault(); + + const allLayerIDs = [ + 'osm', 'notes', 'rapid', 'maproulette', 'keepRight', 'osmose', 'geoScribble', + 'custom-data', 'mapillary', 'streetside', 'kartaview' + ]; + const anyLayerEnabled = allLayerIDs.some(layerID => showsLayer(layerID)); if (anyLayerEnabled) { // Save current state and disable all layers allLayerIDs.forEach(layerID => { - previousLayerStates.set(layerID, showsLayer(layerID)); + _previousLayerStates.set(layerID, showsLayer(layerID)); setLayer(layerID, false); }); } else { // Restore previous state - previousLayerStates.forEach((enabled, layerID) => { + _previousLayerStates.forEach((enabled, layerID) => { setLayer(layerID, enabled); }); } } - // keyboard shortcut for toggling all layers - context.keybinding() - .on('⇧D', e => { - e.preventDefault(); - toggleAllLayers(); - }); + /* toggleLayerKey + * Just wraps calls to `toggleLayer`, cancelling the key event + * @param {Event} e - event that triggered the toggle (if any) + */ + function toggleLayerKey(e, layerID) { + if (e) e.preventDefault(); + toggleLayer(layerID); + } + + // setup key shortcuts + const toggleAllKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_all_layers.key')); + const toggleOsmKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_osm_data.key')); + const toggleNotesKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_osm_notes.key')); + const toggleMapillaryKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_mapillary.key')); + const toggleStreetsideKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_streetside.key')); + const toggleKartaviewKey = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_kartaview.key')); + + context.keybinding().off([ + toggleAllKey, toggleOsmKey, toggleNotesKey, toggleMapillaryKey, toggleStreetsideKey, toggleKartaviewKey + ]); + + context.keybinding() + .on(toggleAllKey, e => toggleAllLayers(e)) + .on(toggleOsmKey, e => toggleLayerKey(e, 'osm')) + .on(toggleNotesKey, e => toggleLayerKey(e, 'notes')) + .on(toggleMapillaryKey, e => toggleLayerKey(e, 'mapillary')) + .on(toggleStreetsideKey, e => toggleLayerKey(e, 'streetside')) + .on(toggleKartaviewKey, e => toggleLayerKey(e, 'kartaview')); /* renderIfVisible @@ -141,8 +174,11 @@ export function uiSectionDataLayers(context) { function drawBaseItems(selection) { - const osmKeys = ['osm', 'notes', 'rapid']; - const osmLayers = osmKeys.map(layerID => scene.layers.get(layerID)).filter(Boolean); + const items = [ + { id: 'osm', layer: scene.layers.get('osm'), key: 'shortcuts.command.toggle_osm_data.key' }, + { id: 'notes', layer: scene.layers.get('notes'), key: 'shortcuts.command.toggle_osm_notes.key' }, + { id: 'rapid', layer: scene.layers.get('rapid'), key: 'shortcuts.command.toggle_rapid_data.key' } + ]; let ul = selection .selectAll('.layer-list-osm') @@ -154,7 +190,7 @@ export function uiSectionDataLayers(context) { .merge(ul); let li = ul.selectAll('.list-item') - .data(osmLayers); + .data(items); li.exit() .remove(); @@ -169,7 +205,7 @@ export function uiSectionDataLayers(context) { d3_select(nodes[i]) .call(uiTooltip(context) .title(l10n.t(`map_data.layers.${d.id}.tooltip`)) - .shortcut(utilCmd('⇧' + l10n.t(`map_data.layers.${d.id}.key`))) + .shortcut(utilCmd('⇧' + l10n.t(d.key))) .placement('bottom') ); }); @@ -177,7 +213,7 @@ export function uiSectionDataLayers(context) { labelEnter .append('input') .attr('type', 'checkbox') - .on('change', (d3_event, d) => toggleLayer(d.id)); + .on('change', (e, d) => toggleLayer(d.id)); labelEnter .append('span') @@ -223,7 +259,7 @@ export function uiSectionDataLayers(context) { labelEnter .append('input') .attr('type', 'checkbox') - .on('change', (d3_event, d) => toggleLayer(d.id)); + .on('change', (e, d) => toggleLayer(d.id)); labelEnter .append('span') @@ -380,7 +416,7 @@ export function uiSectionDataLayers(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('map_data.history_panel.tooltip')) - .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('info_panels.history.key'))) + .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_history_card.key'))) .placement('top') ); @@ -399,7 +435,7 @@ export function uiSectionDataLayers(context) { .append('label') .call(uiTooltip(context) .title(l10n.t('map_data.measurement_panel.tooltip')) - .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('info_panels.measurement.key'))) + .shortcut(utilCmd('βŒ˜β‡§' + l10n.t('shortcuts.command.toggle_measurement_card.key'))) .placement('top') ); diff --git a/modules/ui/sections/map_style_options.js b/modules/ui/sections/map_style_options.js index 9a243a762..089dcb94a 100644 --- a/modules/ui/sections/map_style_options.js +++ b/modules/ui/sections/map_style_options.js @@ -45,8 +45,8 @@ export function uiSectionMapStyleOptions(context) { .call(uiTooltip(context) .title(d => l10n.t(`${name}.${d}.tooltip`)) .shortcut(d => { - if (d === 'wireframe') return l10n.t('area_fill.wireframe.key'); - if (d === 'highlight_edits') return l10n.t('map_data.highlight_edits.key'); + if (d === 'wireframe') return l10n.t('shortcuts.command.wireframe.key'); + if (d === 'highlight_edits') return l10n.t('shortcuts.command.highlight_edits.key'); return null; }) .placement('top') diff --git a/modules/ui/tools/UiDrawModesTool.js b/modules/ui/tools/UiDrawModesTool.js index eb53ecabc..4efbf59bd 100644 --- a/modules/ui/tools/UiDrawModesTool.js +++ b/modules/ui/tools/UiDrawModesTool.js @@ -31,27 +31,27 @@ export class UiDrawModesTool { preset: presets.item('point'), getTitle: () => l10n.t('modes.add_point.title'), getDescription: () => l10n.t('modes.add_point.description'), - getKey: () => '1' + getKey: () => l10n.t('shortcuts.command.add_point.key') }, { id: 'draw-line', icon: 'line', preset: presets.item('line'), getTitle: () => l10n.t('modes.add_line.title'), getDescription: () => l10n.t('modes.add_line.description'), - getKey: () => '2' + getKey: () => l10n.t('shortcuts.command.add_line.key') }, { id: 'draw-area', icon: 'area', preset: presets.item('area'), getTitle: () => l10n.t('modes.add_area.title'), getDescription: () => l10n.t('modes.add_area.description'), - getKey: () => '3' + getKey: () => l10n.t('shortcuts.command.add_area.key') }, { id: 'add-note', icon: 'note', getTitle: () => l10n.t('modes.add_note.title'), getDescription: () => l10n.t('modes.add_note.description'), - getKey: () => l10n.t('modes.add_note.key') + getKey: () => l10n.t('shortcuts.command.add_note.key') }]; diff --git a/modules/ui/tools/UiRapidTool.js b/modules/ui/tools/UiRapidTool.js index 49666ed2d..867882a48 100644 --- a/modules/ui/tools/UiRapidTool.js +++ b/modules/ui/tools/UiRapidTool.js @@ -27,7 +27,7 @@ export class UiRapidTool { const ui = context.systems.ui; const urlhash = context.systems.urlhash; - this.key = utilCmd('⇧' + l10n.t('map_data.layers.rapid.key')); + this.key = utilCmd('⇧' + l10n.t('shortcuts.command.toggle_rapid_data.key')); this.dispatch = dispatch('ai_feature_toggle'); // Create child components @@ -80,7 +80,7 @@ export class UiRapidTool { this.RapidTooltip .placement('bottom') .scrollContainer(context.container().select('.map-toolbar')) - .title(l10n.t('shortcuts.browsing.display_options.rapid_features_data')) + .title(l10n.t('shortcuts.command.toggle_rapid_data.label')) .shortcut(this.key); this.PoweruserTooltip diff --git a/scripts/tx_sync.js b/scripts/tx_sync.js index a07a14315..83f7e8114 100644 --- a/scripts/tx_sync.js +++ b/scripts/tx_sync.js @@ -181,7 +181,7 @@ async function getiDSourceStrings() { return getCollection(iter) .then(vals => { for (const val of vals) { - keys_id.set(val.attributes.key, val.id); // e.g. 'operations.merge.key' -> 's:68bc25087df5d9870b5a1da54ca7e72d' + keys_id.set(val.attributes.key, val.id); // e.g. 'icons.download' -> 's:9e6b7e75e8405d21eb9c2458ab412b18' sources_id.set(val.id, val); } }); @@ -206,9 +206,9 @@ async function getRapidSourceStrings() { function findSameSourceStrings() { console.log(chalk.yellow(`πŸ”¦ Finding source strings that are the same…`)); - // Note: 'keys' are our identifiers, like 'operations.merge.key' - // use `keys_id` and `keys_rapid` to get the Transifex identifiers, like 's:68bc25087df5d9870b5a1da54ca7e72d' - // use `sources_id` and `sources_rapid` to get to the actual source strings. + // Note: 'keys' are our identifiers, like 'icons.download' + // use `keys_id` and `keys_rapid` to get the Transifex identifiers, like 's:9e6b7e75e8405d21eb9c2458ab412b18' + // use `sources_id` and `sources_rapid` to get to the actual source strings, like "download" for (const [key, stringID_id] of keys_id) { const stringID_rapid = keys_rapid.get(key); if (!stringID_id || !stringID_rapid) continue;