mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-02-12 16:52:51 +00:00
512 lines
25 KiB
JSON
512 lines
25 KiB
JSON
{
|
||
"language": {
|
||
"name": "English"
|
||
},
|
||
"app": {
|
||
"title": "DeFlock"
|
||
},
|
||
"about": {
|
||
"title": "DeFlock - Surveillance Transparency",
|
||
"description": "DeFlock is a privacy-focused mobile app for mapping public surveillance infrastructure using OpenStreetMap. Document cameras, ALPRs, gunshot detectors, and other surveillance devices in your community to make this infrastructure visible and searchable.",
|
||
"features": "• Offline-capable mapping with downloadable areas\n• Upload directly to OpenStreetMap with OAuth2\n• Built-in profiles for major manufacturers\n• Privacy-respecting - no user data collected\n• Multiple map tile providers (OSM, satellite imagery)",
|
||
"initiative": "Part of the broader DeFlock initiative to promote surveillance transparency.",
|
||
"footer": "Visit: deflock.me\nBuilt with Flutter • Open Source",
|
||
"showWelcome": "Show Welcome Message",
|
||
"showSubmissionGuide": "Show Submission Guide",
|
||
"viewReleaseNotes": "View Release Notes"
|
||
},
|
||
"welcome": {
|
||
"title": "Welcome to DeFlock",
|
||
"description": "DeFlock was founded on the idea that public surveillance tools should be transparent. Within this mobile app, as on the website, you will be able to view the location of ALPRs and other surveillance infrastructure in your local area and abroad.",
|
||
"mission": "However, this project isn't automated; it takes all of us to make this project better. When viewing the map, you can tap \"New Node\" to add a previously unknown installation. With your help, we can achieve our goal of increased transparency and public awareness of surveillance infrastructure.",
|
||
"firsthandKnowledge": "IMPORTANT: Only contribute surveillance devices that you have personally observed firsthand. OpenStreetMap and Google policies prohibit using sources like Street View imagery for submissions. Your contributions should be based on your own direct observations.",
|
||
"privacy": "Privacy Note: This app runs entirely locally on your device and uses the third-party OpenStreetMap API for data storage and submissions. DeFlock does not collect or store any user data of any kind, and is not responsible for account management.",
|
||
"tileNote": "NOTE: The free map tiles from OpenStreetMap can be very slow to load. Alternate tile providers can be configured in Settings > Advanced.",
|
||
"moreInfo": "You can find more links under Settings > About.",
|
||
"dontShowAgain": "Don't show this welcome message again",
|
||
"getStarted": "Let's Get DeFlocking!"
|
||
},
|
||
"submissionGuide": {
|
||
"title": "Submission Best Practices",
|
||
"description": "Before submitting your first surveillance device, please take a moment to review these important guidelines to ensure high-quality contributions to OpenStreetMap.",
|
||
"bestPractices": "• Only map devices you've personally observed firsthand\n• Take time to accurately identify the device type and manufacturer\n• Use precise positioning - zoom in close before placing the marker\n• Include direction information when applicable\n• Double-check your tag selections before submitting",
|
||
"placementNote": "Remember: Accurate, first-hand data is essential for the DeFlock community and OpenStreetMap project.",
|
||
"moreInfo": "For detailed guidance on device identification and mapping best practices:",
|
||
"identificationGuide": "Identification Guide",
|
||
"osmWiki": "OpenStreetMap Wiki",
|
||
"dontShowAgain": "Don't show this guide again",
|
||
"gotIt": "Got It!"
|
||
},
|
||
"actions": {
|
||
"tagNode": "New Node",
|
||
"download": "Download",
|
||
"settings": "Settings",
|
||
"edit": "Edit",
|
||
"delete": "Delete",
|
||
"cancel": "Cancel",
|
||
"ok": "OK",
|
||
"close": "Close",
|
||
"submit": "Submit",
|
||
"saveEdit": "Save Edit",
|
||
"clear": "Clear",
|
||
"viewOnOSM": "View on OSM",
|
||
"advanced": "Advanced",
|
||
"useAdvancedEditor": "Use Advanced Editor"
|
||
},
|
||
"proximityWarning": {
|
||
"title": "Node Very Close to Existing Device",
|
||
"message": "This node is only {} meters from an existing surveillance device.",
|
||
"suggestion": "If multiple devices are on the same pole, please use multiple directions on a single node instead of creating separate nodes.",
|
||
"nearbyNodes": "Nearby device(s) found ({}):",
|
||
"nodeInfo": "Node #{} - {}",
|
||
"andMore": "...and {} more",
|
||
"goBack": "Go Back",
|
||
"submitAnyway": "Submit Anyway",
|
||
"nodeType": {
|
||
"alpr": "ALPR/ANPR Camera",
|
||
"publicCamera": "Public Surveillance Camera",
|
||
"camera": "Surveillance Camera",
|
||
"amenity": "{}",
|
||
"device": "{} Device",
|
||
"unknown": "Unknown Device"
|
||
}
|
||
},
|
||
"followMe": {
|
||
"off": "Enable follow-me",
|
||
"follow": "Enable follow-me (rotating)",
|
||
"rotating": "Disable follow-me"
|
||
},
|
||
"settings": {
|
||
"title": "Settings",
|
||
"language": "Language",
|
||
"systemDefault": "System Default",
|
||
"aboutInfo": "About / Info",
|
||
"aboutThisApp": "About This App",
|
||
"aboutSubtitle": "App information and credits",
|
||
"languageSubtitle": "Choose your preferred language",
|
||
"maxNodes": "Max nodes drawn",
|
||
"maxNodesSubtitle": "Set an upper limit for the number of nodes on the map (default: 250).",
|
||
"maxNodesWarning": "You probably don't want to do that unless you are absolutely sure you have a good reason for it.",
|
||
"offlineMode": "Offline Mode",
|
||
"offlineModeSubtitle": "Disable all network requests except for local/offline areas.",
|
||
"pauseQueueProcessing": "Pause Upload Queue",
|
||
"pauseQueueProcessingSubtitle": "Stop uploading queued changes while keeping live data access.",
|
||
"offlineModeWarningTitle": "Active Downloads",
|
||
"offlineModeWarningMessage": "Enabling offline mode will cancel any active area downloads. Do you want to continue?",
|
||
"enableOfflineMode": "Enable Offline Mode",
|
||
"profiles": "Profiles",
|
||
"profilesSubtitle": "Manage node and operator profiles",
|
||
"offlineSettings": "Offline Settings",
|
||
"offlineSettingsSubtitle": "Manage offline mode and downloaded areas",
|
||
"advancedSettings": "Advanced Settings",
|
||
"advancedSettingsSubtitle": "Performance, alerts, and tile provider settings",
|
||
"proximityAlerts": "Proximity Alerts",
|
||
"networkStatusIndicator": "Network Status Indicator"
|
||
},
|
||
"proximityAlerts": {
|
||
"getNotified": "Get notified when approaching surveillance devices",
|
||
"batteryUsage": "Uses extra battery for continuous location monitoring",
|
||
"notificationsEnabled": "✓ Notifications enabled",
|
||
"notificationsDisabled": "⚠ Notifications disabled",
|
||
"permissionRequired": "Notification permission required",
|
||
"permissionExplanation": "Push notifications are disabled. You'll only see in-app alerts and won't be notified when the app is in background.",
|
||
"enableNotifications": "Enable Notifications",
|
||
"checkingPermissions": "Checking permissions...",
|
||
"alertDistance": "Alert distance: ",
|
||
"meters": "meters",
|
||
"rangeInfo": "Range: {}-{} meters (default: {})"
|
||
},
|
||
"node": {
|
||
"title": "Node #{}",
|
||
"tagSheetTitle": "Surveillance Device Tags",
|
||
"queuedForUpload": "Node queued for upload",
|
||
"editQueuedForUpload": "Node edit queued for upload",
|
||
"deleteQueuedForUpload": "Node deletion queued for upload",
|
||
"confirmDeleteTitle": "Delete Node",
|
||
"confirmDeleteMessage": "Are you sure you want to delete node #{}? This action cannot be undone."
|
||
},
|
||
"addNode": {
|
||
"profile": "Profile",
|
||
"selectProfile": "Select a profile...",
|
||
"profileRequired": "Please select a profile to continue.",
|
||
"direction": "Direction {}°",
|
||
"profileNoDirectionInfo": "This profile does not require a direction.",
|
||
"mustBeLoggedIn": "You must be logged in to submit new nodes. Please log in via Settings.",
|
||
"enableSubmittableProfile": "Enable a submittable profile in Settings to submit new nodes.",
|
||
"profileViewOnlyWarning": "This profile is for map viewing only. Please select a submittable profile to submit new nodes.",
|
||
"refineTags": "Refine Tags",
|
||
"refineTagsWithProfile": "Refine Tags ({})"
|
||
},
|
||
"editNode": {
|
||
"title": "Edit Node #{}",
|
||
"profile": "Profile",
|
||
"selectProfile": "Select a profile...",
|
||
"profileRequired": "Please select a profile to continue.",
|
||
"direction": "Direction {}°",
|
||
"profileNoDirectionInfo": "This profile does not require a direction.",
|
||
"temporarilyDisabled": "Edits have been temporarily disabled while we sort out a bug - apologies - check back soon.",
|
||
"mustBeLoggedIn": "You must be logged in to edit nodes. Please log in via Settings.",
|
||
"sandboxModeWarning": "Cannot submit edits on production nodes to sandbox. Switch to Production mode in Settings to edit nodes.",
|
||
"enableSubmittableProfile": "Enable a submittable profile in Settings to edit nodes.",
|
||
"profileViewOnlyWarning": "This profile is for map viewing only. Please select a submittable profile to edit nodes.",
|
||
"cannotMoveConstrainedNode": "Cannot move this camera - it's connected to another map element (OSM way/relation). You can still edit its tags and direction.",
|
||
"zoomInRequiredMessage": "Zoom in to at least level {} to add or edit surveillance nodes. This ensures precise positioning for accurate mapping.",
|
||
"extractFromWay": "Extract node from way/relation",
|
||
"extractFromWaySubtitle": "Create new node with same tags, allow moving to new location",
|
||
"refineTags": "Refine Tags",
|
||
"refineTagsWithProfile": "Refine Tags ({})"
|
||
},
|
||
"download": {
|
||
"title": "Download Map Area",
|
||
"maxZoomLevel": "Max zoom level",
|
||
"storageEstimate": "Storage estimate:",
|
||
"tilesAndSize": "{} tiles, {} MB",
|
||
"minZoom": "Min zoom:",
|
||
"maxRecommendedZoom": "Max recommended zoom: Z{}",
|
||
"withinTileLimit": "Within {} tile limit",
|
||
"exceedsTileLimit": "Current selection exceeds {} tile limit",
|
||
"offlineModeWarning": "Downloads disabled while in offline mode. Disable offline mode to download new areas.",
|
||
"areaTooBigMessage": "Zoom in to at least level {} to download offline areas. Large area downloads can cause the app to become unresponsive.",
|
||
"downloadStarted": "Download started! Fetching tiles and nodes...",
|
||
"downloadFailed": "Failed to start download: {}"
|
||
},
|
||
"downloadStarted": {
|
||
"title": "Download Started",
|
||
"message": "Download started! Fetching tiles and nodes...",
|
||
"ok": "OK",
|
||
"viewProgress": "View Progress in Settings"
|
||
},
|
||
"uploadMode": {
|
||
"title": "Upload Destination",
|
||
"subtitle": "Choose where cameras are uploaded",
|
||
"production": "Production",
|
||
"sandbox": "Sandbox",
|
||
"simulate": "Simulate",
|
||
"productionDescription": "Upload to the live OSM database (visible to all users)",
|
||
"sandboxDescription": "Uploads go to the OSM Sandbox (safe for testing, resets regularly).",
|
||
"simulateDescription": "Simulate uploads (does not contact OSM servers)"
|
||
},
|
||
"auth": {
|
||
"osmAccountTitle": "OpenStreetMap Account",
|
||
"osmAccountSubtitle": "Manage your OSM login and view your contributions",
|
||
"loggedInAs": "Logged in as {}",
|
||
"loginToOSM": "Log in to OpenStreetMap",
|
||
"tapToLogout": "Tap to logout",
|
||
"requiredToSubmit": "Required to submit camera data",
|
||
"loggedOut": "Logged out",
|
||
"testConnection": "Test Connection",
|
||
"testConnectionSubtitle": "Verify OSM credentials are working",
|
||
"connectionOK": "Connection OK - credentials are valid",
|
||
"connectionFailed": "Connection failed - please re-login",
|
||
"viewMyEdits": "View My Edits on OSM",
|
||
"viewMyEditsSubtitle": "See your edit history on OpenStreetMap",
|
||
"aboutOSM": "About OpenStreetMap",
|
||
"aboutOSMDescription": "OpenStreetMap is a collaborative, open-source mapping project where contributors create and maintain a free, editable map of the world. Your surveillance device contributions help make this infrastructure visible and searchable.",
|
||
"visitOSM": "Visit OpenStreetMap",
|
||
"deleteAccount": "Delete OSM Account",
|
||
"deleteAccountSubtitle": "Manage your OpenStreetMap account",
|
||
"deleteAccountExplanation": "To delete your OpenStreetMap account, you'll need to visit the OpenStreetMap website. This will permanently remove your OSM account and all associated data.",
|
||
"deleteAccountWarning": "Warning: This action cannot be undone and will permanently delete your OSM account.",
|
||
"goToOSM": "Go to OpenStreetMap",
|
||
"accountManagement": "Account Management",
|
||
"accountManagementDescription": "To delete your OpenStreetMap account, you'll need to visit the appropriate OpenStreetMap website. This will permanently remove your account and all associated data.",
|
||
"currentDestinationProduction": "Currently connected to: Production OpenStreetMap",
|
||
"currentDestinationSandbox": "Currently connected to: Sandbox OpenStreetMap",
|
||
"currentDestinationSimulate": "Currently in: Simulate mode (no real account)",
|
||
"viewMessages": "View Messages on OSM",
|
||
"unreadMessagesCount": "You have {} unread messages",
|
||
"noUnreadMessages": "No unread messages",
|
||
"reauthRequired": "Refresh Authentication",
|
||
"reauthExplanation": "You must refresh your authentication to receive OSM message notifications through the app.",
|
||
"reauthBenefit": "This will enable notification dots when you have unread messages on OpenStreetMap.",
|
||
"reauthNow": "Do That Now",
|
||
"reauthLater": "Later"
|
||
},
|
||
"queue": {
|
||
"title": "Upload Queue",
|
||
"subtitle": "Manage pending surveillance device uploads",
|
||
"pendingUploads": "Pending uploads: {}",
|
||
"pendingItemsCount": "Pending Items: {}",
|
||
"nothingInQueue": "Nothing in queue",
|
||
"simulateModeEnabled": "Simulate mode enabled – uploads simulated",
|
||
"sandboxMode": "Sandbox mode – uploads go to OSM Sandbox",
|
||
"tapToViewQueue": "Tap to view queue",
|
||
"clearUploadQueue": "Clear Upload Queue",
|
||
"removeAllPending": "Remove all {} pending uploads",
|
||
"clearQueueTitle": "Clear Queue",
|
||
"clearQueueConfirm": "Remove all {} pending uploads?",
|
||
"queueCleared": "Queue cleared",
|
||
"uploadQueueTitle": "Upload Queue ({} items)",
|
||
"queueIsEmpty": "Queue is empty",
|
||
"itemWithIndex": "Item {}",
|
||
"error": " (Error)",
|
||
"completing": " (Completing...)",
|
||
"destination": "Dest: {}",
|
||
"latitude": "Lat: {}",
|
||
"longitude": "Lon: {}",
|
||
"direction": "Direction: {}°",
|
||
"attempts": "Attempts: {}",
|
||
"uploadFailedRetry": "Upload failed. Tap retry to try again.",
|
||
"retryUpload": "Retry upload",
|
||
"clearAll": "Clear All",
|
||
"errorDetails": "Error Details",
|
||
"creatingChangeset": " (Creating changeset...)",
|
||
"uploading": " (Uploading...)",
|
||
"closingChangeset": " (Closing changeset...)"
|
||
},
|
||
"tileProviders": {
|
||
"title": "Tile Providers",
|
||
"noProvidersConfigured": "No tile providers configured",
|
||
"tileTypesCount": "{} tile types",
|
||
"apiKeyConfigured": "API Key configured",
|
||
"needsApiKey": "Needs API key",
|
||
"editProvider": "Edit Provider",
|
||
"addProvider": "Add Provider",
|
||
"deleteProvider": "Delete Provider",
|
||
"deleteProviderConfirm": "Are you sure you want to delete \"{}\"?",
|
||
"providerName": "Provider Name",
|
||
"providerNameHint": "e.g., Custom Maps Inc.",
|
||
"providerNameRequired": "Provider name is required",
|
||
"apiKey": "API Key (Optional)",
|
||
"apiKeyHint": "Enter API key if required by tile types",
|
||
"tileTypes": "Tile Types",
|
||
"addType": "Add Type",
|
||
"noTileTypesConfigured": "No tile types configured",
|
||
"atLeastOneTileTypeRequired": "At least one tile type is required",
|
||
"manageTileProviders": "Manage Providers"
|
||
},
|
||
"tileTypeEditor": {
|
||
"editTileType": "Edit Tile Type",
|
||
"addTileType": "Add Tile Type",
|
||
"name": "Name",
|
||
"nameHint": "e.g., Satellite",
|
||
"nameRequired": "Name is required",
|
||
"urlTemplate": "URL Template",
|
||
"urlTemplateHint": "https://example.com/{z}/{x}/{y}.png",
|
||
"urlTemplateRequired": "URL template is required",
|
||
"urlTemplatePlaceholders": "URL must contain either {quadkey} or {z}, {x}, and {y} placeholders",
|
||
"attribution": "Attribution",
|
||
"attributionHint": "© Map Provider",
|
||
"attributionRequired": "Attribution is required",
|
||
"maxZoom": "Max Zoom Level",
|
||
"maxZoomHint": "Maximum zoom level (1-23)",
|
||
"maxZoomRequired": "Max zoom is required",
|
||
"maxZoomInvalid": "Max zoom must be a number",
|
||
"maxZoomRange": "Max zoom must be between {} and {}",
|
||
"fetchPreview": "Fetch Preview",
|
||
"previewTileLoaded": "Preview tile loaded successfully",
|
||
"previewTileFailed": "Failed to fetch preview: {}",
|
||
"save": "Save"
|
||
},
|
||
"profiles": {
|
||
"nodeProfiles": "Node Profiles",
|
||
"newProfile": "New Profile",
|
||
"builtIn": "Built-in",
|
||
"custom": "Custom",
|
||
"view": "View",
|
||
"deleteProfile": "Delete Profile",
|
||
"deleteProfileConfirm": "Are you sure you want to delete \"{}\"?",
|
||
"profileDeleted": "Profile deleted"
|
||
},
|
||
"mapTiles": {
|
||
"title": "Map Tiles",
|
||
"manageProviders": "Manage Providers",
|
||
"attribution": "Map Attribution"
|
||
},
|
||
"profileEditor": {
|
||
"viewProfile": "View Profile",
|
||
"newProfile": "New Profile",
|
||
"editProfile": "Edit Profile",
|
||
"profileName": "Profile name",
|
||
"profileNameHint": "e.g., Custom ALPR Camera",
|
||
"profileNameRequired": "Profile name is required",
|
||
"requiresDirection": "Requires Direction",
|
||
"requiresDirectionSubtitle": "Whether cameras of this type need a direction tag",
|
||
"fov": "Field of View",
|
||
"fovHint": "FOV in degrees (leave empty for default)",
|
||
"fovSubtitle": "Camera field of view - used for cone width and range submission format",
|
||
"fovInvalid": "FOV must be between 1 and 360 degrees",
|
||
"submittable": "Submittable",
|
||
"submittableSubtitle": "Whether this profile can be used for camera submissions",
|
||
"osmTags": "OSM Tags",
|
||
"addTag": "Add tag",
|
||
"saveProfile": "Save Profile",
|
||
"keyHint": "key",
|
||
"valueHint": "value",
|
||
"atLeastOneTagRequired": "At least one tag is required",
|
||
"profileSaved": "Profile \"{}\" saved"
|
||
},
|
||
"operatorProfileEditor": {
|
||
"newOperatorProfile": "New Operator Profile",
|
||
"editOperatorProfile": "Edit Operator Profile",
|
||
"operatorName": "Operator name",
|
||
"operatorNameHint": "e.g., Austin Police Department",
|
||
"operatorNameRequired": "Operator name is required",
|
||
"operatorProfileSaved": "Operator profile \"{}\" saved"
|
||
},
|
||
"operatorProfiles": {
|
||
"title": "Operator Profiles",
|
||
"noProfilesMessage": "No operator profiles defined. Create one to apply operator tags to node submissions.",
|
||
"tagsCount": "{} tags",
|
||
"deleteOperatorProfile": "Delete Operator Profile",
|
||
"deleteOperatorProfileConfirm": "Are you sure you want to delete \"{}\"?",
|
||
"operatorProfileDeleted": "Operator profile deleted"
|
||
},
|
||
"offlineAreas": {
|
||
"title": "Offline Areas",
|
||
"noAreasTitle": "No offline areas",
|
||
"noAreasSubtitle": "Download a map area for offline use.",
|
||
"provider": "Provider",
|
||
"maxZoom": "Max zoom",
|
||
"zoomLevels": "Z{}-{}",
|
||
"latitude": "Lat",
|
||
"longitude": "Lon",
|
||
"tiles": "Tiles",
|
||
"size": "Size",
|
||
"nodes": "Nodes",
|
||
"areaIdFallback": "Area {}...",
|
||
"renameArea": "Rename area",
|
||
"refreshWorldTiles": "Refresh/re-download world tiles",
|
||
"deleteOfflineArea": "Delete offline area",
|
||
"cancelDownload": "Cancel download",
|
||
"renameAreaDialogTitle": "Rename Offline Area",
|
||
"areaNameLabel": "Area Name",
|
||
"renameButton": "Rename",
|
||
"megabytes": "MB",
|
||
"kilobytes": "KB",
|
||
"progress": "{}%",
|
||
"refreshArea": "Refresh area",
|
||
"refreshAreaDialogTitle": "Refresh Offline Area",
|
||
"refreshAreaDialogSubtitle": "Choose what to refresh for this area:",
|
||
"refreshTiles": "Refresh Map Tiles",
|
||
"refreshTilesSubtitle": "Re-download all tiles for updated imagery",
|
||
"refreshNodes": "Refresh Nodes",
|
||
"refreshNodesSubtitle": "Re-fetch node data for this area",
|
||
"startRefresh": "Start Refresh",
|
||
"refreshStarted": "Refresh started!",
|
||
"refreshFailed": "Refresh failed: {}"
|
||
},
|
||
"refineTagsSheet": {
|
||
"title": "Refine Tags",
|
||
"operatorProfile": "Operator Profile",
|
||
"done": "Done",
|
||
"none": "None",
|
||
"noAdditionalOperatorTags": "No additional operator tags",
|
||
"additionalTags": "additional tags",
|
||
"additionalTagsTitle": "Additional Tags",
|
||
"noTagsDefinedForProfile": "No tags defined for this operator profile.",
|
||
"noOperatorProfiles": "No operator profiles defined",
|
||
"noOperatorProfilesMessage": "Create operator profiles in Settings to apply additional tags to your node submissions."
|
||
},
|
||
"layerSelector": {
|
||
"cannotChangeTileTypes": "Cannot change tile types while downloading offline areas",
|
||
"selectMapLayer": "Select Map Layer",
|
||
"noTileProvidersAvailable": "No tile providers available"
|
||
},
|
||
"advancedEdit": {
|
||
"title": "Advanced Editing Options",
|
||
"subtitle": "These editors offer more advanced features for complex edits.",
|
||
"webEditors": "Web Editors",
|
||
"mobileEditors": "Mobile Editors",
|
||
"iDEditor": "iD Editor",
|
||
"iDEditorSubtitle": "Full-featured web editor - always works",
|
||
"rapidEditor": "RapiD Editor",
|
||
"rapidEditorSubtitle": "AI-assisted editing with Facebook data",
|
||
"vespucci": "Vespucci",
|
||
"vespucciSubtitle": "Advanced Android OSM editor",
|
||
"streetComplete": "StreetComplete",
|
||
"streetCompleteSubtitle": "Survey-based mapping app",
|
||
"everyDoor": "EveryDoor",
|
||
"everyDoorSubtitle": "Fast POI editing",
|
||
"goMap": "Go Map!!",
|
||
"goMapSubtitle": "iOS OSM editor",
|
||
"couldNotOpenEditor": "Could not open editor - app may not be installed",
|
||
"couldNotOpenURL": "Could not open URL",
|
||
"couldNotOpenOSMWebsite": "Could not open OSM website"
|
||
},
|
||
"networkStatus": {
|
||
"showIndicator": "Show network status indicator",
|
||
"showIndicatorSubtitle": "Display surveillance data loading and error status",
|
||
"loading": "Loading surveillance data...",
|
||
"timedOut": "Request timed out",
|
||
"noData": "No offline data",
|
||
"success": "Surveillance data loaded",
|
||
"nodeDataSlow": "Surveillance data slow"
|
||
},
|
||
"nodeLimitIndicator": {
|
||
"message": "Showing {rendered} of {total} devices",
|
||
"editingDisabledMessage": "Too many devices shown to safely edit. Zoom in further to reduce the number of visible devices, then try again."
|
||
},
|
||
"navigation": {
|
||
"searchLocation": "Search Location",
|
||
"searchPlaceholder": "Search places or coordinates...",
|
||
"routeTo": "Route To",
|
||
"routeFrom": "Route From",
|
||
"selectLocation": "Select Location",
|
||
"calculatingRoute": "Calculating route...",
|
||
"routeCalculationFailed": "Route calculation failed",
|
||
"start": "Start",
|
||
"resume": "Resume",
|
||
"endRoute": "End Route",
|
||
"routeOverview": "Route Overview",
|
||
"retry": "Retry",
|
||
"cancelSearch": "Cancel search",
|
||
"noResultsFound": "No results found",
|
||
"searching": "Searching...",
|
||
"location": "Location",
|
||
"startPoint": "Start",
|
||
"endPoint": "End",
|
||
"startSelect": "Start (select)",
|
||
"endSelect": "End (select)",
|
||
"distance": "Distance: {} km",
|
||
"routeActive": "Route active",
|
||
"locationsTooClose": "Start and end locations are too close together",
|
||
"navigationSettings": "Navigation",
|
||
"navigationSettingsSubtitle": "Route planning and avoidance settings",
|
||
"avoidanceDistance": "Avoidance Distance",
|
||
"avoidanceDistanceSubtitle": "Minimum distance to stay away from surveillance devices",
|
||
"searchHistory": "Max Search History",
|
||
"searchHistorySubtitle": "Maximum number of recent searches to remember",
|
||
"units": "Units",
|
||
"unitsSubtitle": "Display units for distances and measurements",
|
||
"metric": "Metric (km, m)",
|
||
"imperial": "Imperial (mi, ft)",
|
||
"meters": "meters",
|
||
"feet": "feet"
|
||
},
|
||
"suspectedLocations": {
|
||
"title": "Suspected Locations",
|
||
"showSuspectedLocations": "Show Suspected Locations",
|
||
"showSuspectedLocationsSubtitle": "Show question mark markers for suspected surveillance sites from utility permit data",
|
||
"lastUpdated": "Last Updated",
|
||
"refreshNow": "Refresh now",
|
||
"dataSource": "Data Source",
|
||
"dataSourceDescription": "Utility permit data indicating potential surveillance infrastructure installation sites",
|
||
"dataSourceCredit": "Data collection and hosting provided by alprwatch.org",
|
||
"minimumDistance": "Minimum Distance from Real Nodes",
|
||
"minimumDistanceSubtitle": "Hide suspected locations within {}m of existing surveillance devices",
|
||
"updating": "Updating Suspected Locations",
|
||
"downloadingAndProcessing": "Downloading and processing data...",
|
||
"updateSuccess": "Suspected locations updated successfully",
|
||
"updateFailed": "Failed to update suspected locations",
|
||
"neverFetched": "Never fetched",
|
||
"daysAgo": "{} days ago",
|
||
"hoursAgo": "{} hours ago",
|
||
"minutesAgo": "{} minutes ago",
|
||
"justNow": "Just now"
|
||
},
|
||
"suspectedLocation": {
|
||
"title": "Suspected Location #{}",
|
||
"ticketNo": "Ticket No",
|
||
"address": "Address",
|
||
"street": "Street",
|
||
"city": "City",
|
||
"state": "State",
|
||
"intersectingStreet": "Intersecting Street",
|
||
"workDoneFor": "Work Done For",
|
||
"remarks": "Remarks",
|
||
"url": "URL",
|
||
"coordinates": "Coordinates",
|
||
"noAddressAvailable": "No address available"
|
||
}
|
||
} |