{
  "first_run": {
    "window_title": "EMDS Workbench — First-Run Setup",
    "heading": "Finish setting up EMDS Workbench",
    "missing_intro": "These Python packages are missing from the QGIS Python environment:",
    "explain": "EMDS can install them now into the Python that QGIS bundles. Packages QGIS already provides are left untouched. An internet connection is required.",
    "python_label": "QGIS Python:",
    "command_label": "Command that will run:",
    "include_matplotlib": "Also install matplotlib (optional — used for result charts)",
    "btn_install": "Install now",
    "btn_not_now": "Not now",
    "btn_manual": "Show manual instructions",
    "btn_cancel": "Cancel",
    "btn_close_done": "Close",
    "btn_enable_now": "Enable EMDS now",
    "installing": "Installing — this can take a few minutes…",
    "step_ensure_pip": "Preparing pip…",
    "step_install": "Installing packages…",
    "step_verify": "Verifying installation…",
    "step_resign": "Repairing library signatures (macOS)…",
    "success_enable": "Setup finished. EMDS is ready — enable it now, or restart QGIS.",
    "success_restart": "Setup finished. Restart QGIS to start using EMDS Workbench.",
    "failed": "Setup did not finish. Check the log below, or use the manual instructions.",
    "canceled": "Installation canceled.",
    "no_python": "Could not locate the Python interpreter that QGIS uses. Use the manual instructions instead.",
    "manual_title": "Manual installation",
    "manual_body": "Run the dependency script for your platform, then restart QGIS:\n{script}\nOn macOS and Linux the script comes with the '-setup' download, next to the plugin ZIP. On Windows, download it from the EMDS website.",
    "log_label": "Log:",
    "menu_finish_setup": "Finish EMDS Setup…",
    "repo_title": "EMDS updates",
    "repo_body": "Get EMDS updates automatically through the QGIS Plugin Manager?\n\nThis adds the EMDS plugin repository for your platform to QGIS:\n{url}\n\nYou can remove it at any time in Plugins → Manage and Install Plugins → Settings."
  },
  "language": {
    "label": "Language:",
    "en": "EN",
    "es": "ES",
    "de": "DE",
    "pt": "PT"
  },
  "dock": {
    "window_title": "EMDS Analysis Tasks",
    "tab_guided": "Guided Workbench",
    "tab_advanced": "Advanced",
    "summary": "Select a tree item to manage workspaces, study areas, analyses, tasks, and results.",
    "tree_header": "EMDS Workbench",
    "action_hint": "Tip: right-click tree items for more actions, pipeline tools, and result viewers.",
    "splitter_tooltip": "Drag to resize the Workbench tree and the action panel.",
    "inspector_name_default": "Selection: Nothing selected",
    "inspector_type_default": "Type: None selected. Select a workspace, study area, analysis, task, or result.",
    "inspector_help_default": "What can I do next? Create a workspace to begin.",
    "group_workspaces": "Workspaces",
    "group_study_areas": "Study Areas",
    "group_analyses": "Analyses",
    "group_pipeline": "Pipeline Management",
    "group_results": "Results",
    "btn_new_project": "Create Workspace",
    "tip_new_project": "Create a new EMDS Workspace. Workspaces are stored under your Documents/EmdsProjects folder.",
    "btn_new_assessment": "Create Study Area",
    "tip_new_assessment": "Create a study area under the selected workspace by combining a target layer with overlay/include layers.",
    "btn_new_task_workflow": "Create Analysis",
    "tip_new_task_workflow": "Create an analysis under the selected study area and configure its first task.",
    "btn_new_task": "Add Task",
    "tip_new_task": "Add a task to the selected analysis.",
    "btn_launch_workflow_editor": "Launch Pipeline Builder",
    "tip_launch_workflow_editor": "Create, open, or save reusable pipelines for the selected workspace.",
    "btn_edit_selected": "Edit Selected",
    "btn_delete_selected": "Delete Selected",
    "tip_project_edit": "Edit the selected workspace.",
    "tip_project_delete": "Delete the selected workspace.",
    "tip_assessment_edit": "Edit the selected study area.",
    "tip_assessment_delete": "Delete the selected study area.",
    "tip_path_edit": "Edit the selected analysis or task.",
    "tip_path_delete": "Delete the selected analysis or task.",
    "btn_open_results": "Open Results",
    "tip_open_results": "Open the selected task results in the table viewer.",
    "btn_engine_results": "Open Engine Viewer",
    "tip_engine_results": "Open the engine-specific hotlink/results viewer.",
    "btn_result_chart": "View Chart",
    "tip_result_chart": "Open a histogram/chart view for numeric result fields.",
    "btn_execution_history": "Execution History",
    "tip_execution_history": "Review executions for the selected task.",
    "btn_show_map": "Show On Map",
    "tip_show_map": "Show the selected result layer on the QGIS map.",
    "btn_toggle_visibility": "Toggle Visibility",
    "tip_toggle_visibility": "Toggle the selected result layer visibility."
  },
  "tutorials": {
    "open_prefix": "Open:",
    "watch_this_step": "Watch this step",
    "getting_started": "Getting Started",
    "create_workspace": "Create a Workspace",
    "first_task": "Run Your First Task",
    "create_study_area": "Create a Workspace and Study Area",
    "review_results": "Review Results"
  },
  "guided_state": {
    "name_none": "None",
    "context_lines": "Workspace: {workspace}\nStudy Area: {study}\nAnalysis: {analysis}",
    "status_start": "Status: Start here",
    "status_workspace_ready": "Status: Workspace ready",
    "status_study_ready": "Status: Study Area ready",
    "status_result_selected": "Status: Result selected",
    "status_task_selected": "Status: Task selected",
    "status_analysis_ready": "Status: Analysis ready",
    "next_create_workspace": "Create a new EMDS Workspace or open an existing one.",
    "next_create_study": "Create or select a Study Area to define the GIS scope.",
    "next_create_analysis": "Create an Analysis and configure its first Task for this Study Area.",
    "next_review_result": "Review this Result in a table, chart, or hotlink viewer.",
    "next_run_task": "Run this Task or review any Result it creates.",
    "next_add_task": "Add a Task using a beginner-friendly goal.",
    "btn_create_workspace": "Create Workspace",
    "btn_open_workspace": "Open Workspace",
    "btn_create_study": "Create Study Area",
    "btn_select_study": "Select Study Area",
    "btn_create_analysis": "Create Analysis",
    "btn_select_analysis": "Select Analysis",
    "btn_select_task": "Select Task",
    "btn_view_table": "View Table",
    "btn_show_on_map": "Show On Map",
    "btn_run_task": "Run Task",
    "btn_view_hotlink": "View Hotlink",
    "btn_prioritize": "Prioritize Items (CDP)",
    "btn_assess_conditions": "Access Conditions (NW)",
    "helper_open_workspace_first": "Open a Workspace first",
    "helper_create_study_first": "Create or select a Study Area first",
    "helper_create_analysis_first": "Create or select an Analysis first",
    "helper_run_task_first": "Run a Task first",
    "activity_lines": "Current Workspace: {workspace}\nCurrent Study Area: {study}\nCurrent Analysis: {analysis}\nSuggested next step: {next_text}"
  },
  "selection": {
    "inspector_name_selected": "Selection: {name}",
    "inspector_name_none": "Nothing selected",
    "inspector_type_selected": "Type: {type}. {explanation}",
    "inspector_help_selected": "What can I do next? {hint}",
    "summary_selected": "Right-click any tree item for more actions, including results viewers and pipeline tools.",
    "btn_add_subtask": "Add Subtask",
    "tip_add_subtask": "Add a subtask that inherits the selected task's output.",
    "btn_engine_netweaver": "Open NetWeaver Viewer",
    "btn_engine_cdp": "Open CDP Viewer"
  },
  "guided": {
    "default_context_no_workspace": "No workspace is open.",
    "default_status_start": "Status: Start here",
    "sequence": "How this works: Create/Open Workspace -> Create/Select Study Area -> Create Analysis + First Task -> Review Result",
    "help_title": "Help / Tutorials",
    "help_body": "Short walkthroughs are available while you work through Guided.",
    "section_next": "Next Best Action",
    "section_all_ops": "All EMDS Operations",
    "section_status": "Status",
    "default_next_text": "Create a new EMDS Workspace or open an existing one.",
    "btn_create_workspace": "Create Workspace",
    "btn_open_workspace": "Open Workspace",
    "btn_create_study": "Create Study Area",
    "btn_select_study": "Select Study Area",
    "btn_create_analysis": "Create Analysis",
    "btn_select_analysis": "Select Analysis",
    "btn_select_task": "Select Task",
    "group_workspace": "Workspace",
    "group_study_area": "Study Area",
    "group_analysis": "Analysis",
    "group_tasks": "Tasks",
    "group_results": "Results",
    "btn_assess_conditions": "Access Conditions (NW)",
    "tip_assess_conditions": "Create a NetWeaver task.",
    "btn_prioritize": "Prioritize Items (CDP)",
    "tip_prioritize": "Create a CDP prioritization task.",
    "btn_compare": "Compare Alternatives",
    "tip_compare": "Create an MCDA/CDP task.",
    "btn_portfolio": "Build Portfolio (LPA)",
    "tip_portfolio": "Create a Portfolio/LPA task.",
    "btn_view_table": "View Table",
    "btn_view_chart": "View Chart",
    "btn_view_hotlink": "View Hotlink"
  },
  "create_workspace": {
    "window_title": "Create Workspace",
    "hint_title": "Workspace",
    "hint_body": "Create the EMDS Workspace folder, metadata store, and QGIS host project. You can create Study Areas manually after the Workspace opens.",
    "lbl_name": "Workspace Name:",
    "lbl_description": "Workspace Description:",
    "lbl_layers": "Workspace Layers:",
    "validation_name": "workspace name"
  },
  "engines": {
    "netweaver": {
      "label": "NetWeaver",
      "description": "Use NetWeaver when you have a knowledge model and want to evaluate map data against ecological logic, suitability, condition, risk, or other rule-based propositions."
    },
    "cdp": {
      "label": "CDP Prioritization",
      "description": "Use CDP Prioritization when you have a CDP model and want to rank, score, or classify places or alternatives using criteria, ratings, and decision rules."
    },
    "portfolio": {
      "label": "Portfolio",
      "description": "Use Portfolio when you need to choose a set of projects or actions under budget, cost, benefit, funding, or strategy constraints."
    }
  },
  "create_benchmark": {
    "window_title": "Create Assessment Benchmarks",
    "err_title": "Error",
    "err_no_db": "No database path configured.",
    "progress_start": "Starting benchmark run...",
    "btn_cancel": "Cancel",
    "progress_running": "Running {method} ({index}/{total})",
    "err_benchmark_title": "Benchmark Error",
    "results_title": "Benchmark Results",
    "results_header": "Method Results (overlay | write | total)\n"
  },
  "create_portfolio": {
    "window_title": "Create New Portfolio",
    "page_details_title": "Portfolio Details",
    "page_details_subtitle": "Name the portfolio, (optionally) add comments, and pick the field that uniquely identifies each candidate project.",
    "context_group": "Study Context",
    "lbl_workspace": "Workspace",
    "lbl_study": "Study",
    "lbl_input_layer": "Input Layer",
    "lbl_input_table": "Input Table",
    "not_set": "(not set)",
    "not_used": "(not used)",
    "unnamed": "(unnamed portfolio)",
    "row_name": "Portfolio Name",
    "name_placeholder": "e.g. Landscape Restoration Portfolio",
    "row_comments": "Comments",
    "row_unique_field": "Unique Field Name",
    "run_immediately": "Run Portfolio when the wizard finishes",
    "page_costs_title": "Specify Costs and Benefits",
    "page_costs_subtitle": "Choose the numeric columns that drive the knapsack allocation. Units are free-form labels shown in the report.",
    "row_benefit_field": "Benefit Field",
    "row_benefit_units": "Benefit Units",
    "benefit_units_placeholder": "e.g. Acres, Points, Index",
    "row_cost_field": "Cost Field",
    "row_cost_units": "Cost Units",
    "cost_units_placeholder": "e.g. $, USD",
    "row_prioritization_field": "Prioritization Field (optional)",
    "row_prioritization_units": "Prioritization Units",
    "prioritization_units_placeholder": "e.g. Score, Rank",
    "prioritization_hint": "The prioritization field is only used by the Prioritization and Prioritization/Cost Ratio strategies.",
    "page_budget_title": "Define Budget and Strategy",
    "page_budget_subtitle": "Set the overall budget and choose how the engine should rank candidates when greedily filling the portfolio.",
    "row_budget": "Portfolio Total Budget",
    "group_strategy": "Portfolio Strategy",
    "group_sort_order": "Sort Order",
    "direction_descending": "Descending (high to low) -- take the best first",
    "direction_ascending": "Ascending (low to high) -- take the cheapest/worst first",
    "page_funding_title": "Budget Buckets and Category Mapping",
    "page_funding_subtitle": "Set the default allocation name, split the total budget across the bucket sections, and optionally map category codes to those buckets.",
    "group_allocation": "Budget Allocation",
    "row_allocation_name": "Allocation Name",
    "default_allocation": "Default Allocation",
    "row_overall_budget": "Overall Budget",
    "row_allocated_total": "Allocated Total",
    "group_enabled_buckets": "Enabled Buckets",
    "bucket_hint": "Each enabled bucket must have a name and an amount. The enabled bucket amounts must exactly match the overall budget.",
    "bucket_default_name": "Bucket {letter}",
    "checkbox_enabled": "Enabled",
    "row_bucket_name": "Bucket Name",
    "row_bucket_amount": "Amount",
    "group_category_mapping": "Category Mapping",
    "category_hint": "Optionally map a category field to bucket percentage splits. Leave this blank if the portfolio uses only the bucket amounts above.",
    "row_category_field": "Category Field",
    "group_percent": "Per-Category Allocation Percentages",
    "percent_hint": "For each funding category value, enter the percentage of each project's cost that draws from each silo. Each row should sum to 100.",
    "btn_add_row": "Add Row",
    "btn_remove_row": "Remove Selected",
    "col_category_code": "Category Code",
    "col_pct_a": "% Silo A",
    "col_pct_b": "% Silo B",
    "col_pct_c": "% Silo C",
    "page_summary_title": "Finish",
    "page_summary_subtitle": "Review the portfolio configuration before finishing.",
    "summary_intro": "Review {name} before finishing. The selected evaluation method is {strategy}.",
    "group_mappings": "Column Mappings",
    "col_mapping": "Mapping",
    "col_value": "Value",
    "group_budget": "Budget",
    "col_budget_item": "Budget Item",
    "group_buckets_summary": "Enabled Buckets",
    "col_bucket": "Bucket",
    "col_name": "Name",
    "col_amount": "Amount",
    "group_evaluation": "Evaluation Method",
    "col_method": "Method",
    "bucket_label": "Bucket {letter}",
    "summary_unique_field": "Unique Field",
    "summary_benefit_field": "Benefit Field",
    "summary_cost_field": "Cost Field",
    "summary_prioritization_field": "Prioritization Field",
    "summary_method": "Method",
    "summary_sort_order": "Sort Order",
    "direction_label_ascending": "Ascending",
    "direction_label_descending": "Descending",
    "saved_title": "Saved Portfolio Settings",
    "saved_none_found": "No saved portfolio settings were found for this Workspace and input table.",
    "validation_title": "Validation Error",
    "validation_name_required": "Enter a portfolio name.",
    "validation_choose_unique": "Choose a unique identifier field.",
    "validation_choose_benefit": "Choose a benefit field.",
    "validation_choose_cost": "Choose a cost field.",
    "validation_need_prioritization_field": "The selected strategy requires a prioritization field.",
    "validation_budget_positive": "The overall budget must be greater than zero.",
    "validation_select_prio_prev": "Select a prioritization field on the previous page for this strategy.",
    "validation_enable_bucket": "Enable at least one bucket.",
    "validation_name_for_bucket": "Enter a name for enabled bucket {letter}.",
    "validation_bucket_match_budget": "The enabled bucket amounts must exactly equal the overall budget.",
    "validation_need_category_row": "Add at least one category code row, or clear the category field.",
    "validation_percent_sum_100": "Category '{code}' percentages must sum to 100 (currently {total:g})."
  },
  "create_assessment": {
    "window_title": "Create Study Area",
    "status_include": "Include in Study Area",
    "status_target": "Include as Target",
    "status_selector": "Use as Selector",
    "status_exclude": "Exclude",
    "page_initial_title": "Initial Configuration",
    "page_initial_subtitle": "Configure the Study Area name and choose layer roles.",
    "hint_initial_title": "Choose the GIS scope",
    "hint_initial_body": "Give this Study Area a clear name, then mark exactly one target layer and any included overlay layers. A good default is to make the main decision unit your target layer and keep only the overlays you need for this study.",
    "group_study_area": "Study Area",
    "name_placeholder": "Enter Study Area name",
    "description_placeholder": "Enter description",
    "row_name": "Name:",
    "row_description": "Description:",
    "lbl_configure_status": "Configure layer status for the Study Area:",
    "col_layer_name": "Layer Name",
    "col_geometry_type": "Geometry Type",
    "col_status": "Status",
    "col_feature_count": "Features",
    "count_unknown": "—",
    "page_features_title": "Feature Selection",
    "page_features_subtitle": "Select features from the target layer.",
    "hint_features_title": "Pick the features to carry forward",
    "hint_features_body": "Select only the target features that belong in this Study Area. If you are still exploring, start with a smaller set so you can confirm the workflow and results before expanding the area.",
    "lbl_target_layer": "Target Layer:",
    "lbl_target_layer_with_value": "Target Layer: {name}",
    "lbl_target_with_selector": "Target Layer: {target} | Selector: {selector}",
    "btn_select_all": "Select All Features",
    "btn_clear_selection": "Clear Selection",
    "btn_pan": "Pan",
    "btn_rectangle": "Rectangle Select",
    "selection_count": "Selected: {count} features",
    "selector_mode_msg": "Selector mode: all target features will be filtered by the selector layer",
    "page_summary_title": "Summary",
    "page_summary_subtitle": "Review the Study Area configuration before creating the output.",
    "group_basic_info": "Basic Information",
    "summary_features_default": "0 features selected",
    "row_study_area_name": "Study Area Name:",
    "row_selected_features": "Selected Features:",
    "no_description": "No description provided",
    "selector_summary": "Selector Study Area using selector layer '{name}'",
    "simple_summary": "Simple Study Area. The selected target features will be copied as the Study Area output.",
    "overlay_summary": "Overlay Study Area with {count} included layer(s)",
    "validation_title": "Validation Error",
    "validation_name_required": "Please enter a Study Area name.",
    "validation_exactly_one_target": "Please select exactly one layer as 'Include as Target'.",
    "validation_at_most_one_selector": "Please select no more than one layer as 'Use as Selector'.",
    "validation_selector_polygon": "Selector layer '{name}' must be a polygon layer.",
    "validation_geometry_mismatch": "Study Area layer(s) {layers} must have the same geometry type as target layer '{target}'.",
    "validation_no_target": "No target layer is available.",
    "validation_no_features": "Please select at least one feature before proceeding.",
    "err_workspace_db_title": "Workspace Database Missing",
    "err_workspace_db_body": "The current Workspace does not have a GeoPackage database path configured.",
    "progress_creating": "Creating Study Area output...",
    "progress_overlay_selector": "Building the Study Area overlay from the selector layer...",
    "progress_overlay_features": "Building the Study Area overlay from selected features...",
    "progress_save": "Saving the Study Area output into the Workspace database...",
    "progress_metadata": "Finalizing Study Area metadata...",
    "err_study_area_title": "Study Area Error"
  },
  "create_netweaver": {
    "window_title": "Create NetWeaver Analysis",
    "page_details_title": "Analysis Details",
    "page_details_subtitle": "Capture the task name and incoming assessment context.",
    "context_group": "Study Context",
    "lbl_workspace": "Workspace",
    "lbl_study": "Study",
    "lbl_input_layer": "Input Layer",
    "lbl_input_table": "Input Table",
    "not_set": "(not set)",
    "lbl_analysis_name": "Analysis Name",
    "lbl_comments": "Comments",
    "run_immediately": "Run NetWeaver when the wizard finishes",
    "page_model_title": "Model and Topics",
    "page_model_subtitle": "Load the NetWeaver model and select the topics to evaluate.",
    "model_placeholder": "Select a .nw2 model file",
    "btn_browse": "Browse",
    "btn_reload_model": "Reload Model",
    "model_not_loaded": "Model not loaded yet.",
    "group_available_topics": "Available Topics",
    "group_selected_topics": "Selected Topics",
    "btn_add": "Add ->",
    "btn_remove": "<- Remove",
    "btn_add_all": "Add All",
    "page_mapping_title": "Field Mapping",
    "page_mapping_subtitle": "Map input table fields to the NetWeaver variables used by the selected topics.",
    "mapping_default": "Load a model and select topics to generate the field mapping table.",
    "btn_load_mapping": "Load Saved Mapping",
    "btn_save_mapping": "Save Mapping",
    "col_variable": "Variable",
    "col_input_field": "Input Field",
    "var_conditional_ignore_note": "conditionally ignored - map a field to include it",
    "var_persistent_ignore_note": "ignored by the model - mapping will not change results",
    "mapping_ignored_note": "{count} of these carry a model ignore flag.",
    "page_map_topics_title": "Topics To Add To Map",
    "page_map_topics_subtitle": "Choose which selected topics/goals should be added as map layers after execution.",
    "map_topics_hint": "Selected topic branches will be expanded and listed here. Checked items will be added to the map.",
    "btn_check_all": "Check All",
    "btn_uncheck_all": "Uncheck All",
    "file_dialog_select": "Select NetWeaver Model",
    "file_dialog_filter": "NetWeaver Models (*.nw2 *.nw)",
    "err_model_required_title": "Model Required",
    "err_model_required_body": "Please select a NetWeaver model file.",
    "err_engine_missing_title": "Engine Missing",
    "err_engine_missing_body": "NetWeaver CLI was not found at:\n{path}",
    "err_load_failed_title": "Model Load Failed",
    "err_load_failed_body": "Model file not found:\n{path}",
    "busy_loading_model_title": "Loading Model",
    "busy_loading_model_label": "Loading model information...",
    "busy_loading_topics_label": "Loading topic hierarchy...",
    "model_loaded_summary": "Loaded {name} with {topics} topics, {goals} goals, {variables} variables.",
    "model_loaded_help": "Select one or more topic branches, then the mapping table will suggest field matches.",
    "busy_loading_variables_title": "Loading Variables",
    "busy_loading_variables_label": "Loading topic variables...",
    "no_variables_resolved": "No variables were resolved for the selected topics and their child topics.",
    "prepared_mappings_help": "Prepared mappings for {count} variables from {topics} expanded topic(s).",
    "err_topic_variables_failed": "Failed to load topic variables. Please try again.",
    "map_topics_count_header": "Choose which of the {count} expanded topics/goals should be added to the map.",
    "map_topics_empty_header": "Select topics on the previous page to choose which ones should be added to the map.",
    "saved_title": "Saved Mapping",
    "saved_no_metadata": "No Workspace metadata manager is available for saved mappings.",
    "saved_none_found": "No saved NetWeaver mapping was found for this Workspace, model, and input table.",
    "saved_loaded": "Loaded the saved NetWeaver mapping for this Workspace.",
    "saved_no_metadata_save": "A Workspace metadata manager is not available, so the mapping could not be saved.",
    "saved_select_topics_first": "Select one or more topic branches before saving a NetWeaver mapping.",
    "saved_could_not_save": "The NetWeaver mapping could not be saved to the Workspace metadata store.",
    "saved_saved": "Saved the NetWeaver mapping for this Workspace, model, and input table.",
    "validation_title": "Validation Error",
    "validation_name_required": "Please enter an analysis name.",
    "validation_model_required": "Please select a model file.",
    "validation_topic_required": "Please select at least one topic.",
    "validation_mapping_required": "Please map at least one input field to a NetWeaver variable.",
    "btn_pick_registry": "Pick published model version…",
    "tip_pick_registry": "Import a published model version from the central model registry (shared with ArcGIS Pro and the editors).",
    "registry_materialize_failed": "Could not write the registry model to a temporary file: {error}"
  },
  "create_prioritization": {
    "window_title": "Create Prioritization",
    "page_details_title": "Prioritization Details",
    "page_details_subtitle": "Name the prioritization and capture the incoming assessment context.",
    "lbl_workspace": "Workspace",
    "lbl_study": "Study",
    "lbl_input_layer": "Input Layer",
    "lbl_input_table": "Input Table",
    "not_set": "(not set)",
    "unnamed": "(unnamed)",
    "not_selected": "(not selected)",
    "row_name": "Prioritization Name",
    "row_comments": "Comments",
    "row_execution": "Execution",
    "exec_run": "Run when the wizard finishes",
    "exec_create_only": "Create only",
    "page_model_title": "Model",
    "page_model_subtitle": "Load the CDP model and retrieve its mapping schema.",
    "model_file_placeholder": "Select a .cdp or .cdpx model file",
    "btn_browse": "Browse",
    "btn_reload_model": "Reload Model",
    "model_not_loaded": "Model not loaded yet.",
    "model_loaded": "Loaded {name} with {count} lowest criteria.",
    "page_mapping_title": "Field Mapping",
    "page_mapping_subtitle": "Map the model criteria to fields in the assessment input table.",
    "btn_load_mapping": "Load Saved Mapping",
    "btn_save_mapping": "Save Mapping",
    "row_display_field": "Display Field",
    "row_primary_key": "Primary Key",
    "col_model_criterion": "Model Criterion",
    "col_criterion_hint": "Criterion Hint",
    "col_input_field": "Input Field",
    "col_input_field_source": "Input Field Source",
    "page_validation_title": "Validation",
    "page_validation_subtitle": "Choose how the CDP run should handle unrated, unknown, and off-scale values.",
    "validation_hint": "These settings control how the CDP engine handles input data that falls outside expected ranges. Most users can leave the defaults.",
    "row_unrated": "Unrated Values",
    "row_unknown": "Unknown Values",
    "row_offscale": "Off-Scale Values",
    "tip_unrated": "If a database field does not contain a value, how should it contribute to the priority score? Applies to records with missing ratings.",
    "tip_unknown": "If the database field contains a value that does not match any item of the scale, how should it be handled? Applies only to verbal ratings.",
    "tip_offscale": "If the database field contains a numeric value outside the criterion's scale limits, how should it be handled? Applies only to numeric ratings.",
    "unrated_raise": "Raise an error",
    "unrated_unrated": "Treat as unrated",
    "unrated_scale_avg": "Use scale average (default)",
    "unrated_scale_high": "Use scale high",
    "unrated_scale_low": "Use scale low",
    "offscale_raise": "Raise an error",
    "offscale_unrated": "Treat as unrated",
    "offscale_clamp": "Clamp to scale limits (default)",
    "page_rules_title": "Rules",
    "page_rules_subtitle": "Pick a rule defined inside the CDP model. Rule names and descriptions come directly from the model file.",
    "row_rule": "Rule",
    "rule_no_selection": "(no rule selected)",
    "rules_initial_help": "No rules have been loaded. Load the CDP model on the previous step to populate the rule list.",
    "rules_none_defined_combo": "No rules have been defined",
    "rules_none_defined_msg": "No rules have been defined for this model.",
    "rules_select_msg": "Select a rule to see its description.",
    "rules_unnamed": "Unnamed rule",
    "rules_no_description": "(no description provided)",
    "page_summary_title": "Summary",
    "page_summary_subtitle": "Review the CDP prioritization before creating the task.",
    "summary_default": "Review the prioritization settings before finishing.",
    "lbl_model_weights": "Model Weights",
    "weights_none_defined": "No pair-wise / standard weights are defined for this model.",
    "weights_col_default": "Value",
    "weights_header_default": "Weights",
    "busy_title_loading": "Loading CDP Model",
    "busy_label_loading": "Retrieving mapping schema...",
    "file_dialog_select": "Select CDP Model",
    "file_dialog_filter": "CDP Models (*.cdpx *.cdp)",
    "err_model_required_title": "Model Required",
    "err_model_required_body": "Select a CDP model first.",
    "err_engine_missing_title": "Engine Missing",
    "err_engine_missing_body": "CDP CLI was not found at:\n{path}",
    "err_model_missing_title": "Model Missing",
    "err_model_missing_body": "Model file not found:\n{path}",
    "err_load_failed_title": "CDP Model Load Failed",
    "saved_mapping_title": "Saved Mapping",
    "saved_no_metadata_manager": "No metadata manager is available to save this mapping.",
    "saved_no_mapping_found": "No saved CDP mapping was found for this Workspace, model, and input table.",
    "saved_loaded": "Loaded the saved CDP mapping for this Workspace.",
    "saved_map_at_least_one": "Map at least one criterion before saving.",
    "saved_could_not_save": "The CDP mapping could not be saved.",
    "saved_saved": "Saved the CDP mapping for this Workspace.",
    "validation_title": "Validation Error",
    "validation_name_required": "Enter a prioritization name before continuing.",
    "validation_load_model": "Load a CDP model before continuing.",
    "validation_map_at_least_one": "Map at least one model criterion.",
    "validation_choose_display": "Choose a display field.",
    "source_netweaver": "NetWeaver: {source}{suffix}",
    "source_input": "Input: {source}{suffix}",
    "source_input_only": "Input{suffix}",
    "criterion_unnamed": "Criterion {index}",
    "summary_prioritization": "Prioritization: {value}",
    "summary_model": "Model: {value}",
    "summary_mapped_criteria": "Mapped Criteria: {count}",
    "summary_display_field": "Display Field: {value}",
    "summary_primary_key": "Primary Key: {value}",
    "summary_input_table": "Input Table: {value}",
    "btn_pick_registry": "Pick published model version…",
    "tip_pick_registry": "Import a published model version from the central model registry (shared with ArcGIS Pro and the editors).",
    "registry_materialize_failed": "Could not write the registry model to a temporary file: {error}"
  },
  "portfolio_strategies": {
    "costbenefit": "Benefit / Cost Ratio",
    "cost": "Cost",
    "benefit": "Benefit",
    "prioritization": "Prioritization",
    "prioritization_cost": "Prioritization / Cost Ratio"
  },
  "portfolio_results": {
    "window_title": "Portfolio Results — {name}",
    "default_name": "Portfolio",
    "header": "Pipeline: {name}    Execution: {exec_id}    Selected: {selected} / {total}    Strategy: {strategy}",
    "execution_unknown": "(unknown)",
    "strategy_not_reported": "(not reported)",
    "tab_report": "Portfolio Report",
    "tab_selected": "Selected ({count})",
    "tab_excluded": "Excluded ({count})",
    "tab_all": "All Items",
    "tab_map": "Map",
    "tab_summary": "Summary",
    "btn_print": "Print Tab…",
    "tip_print": "Open a print preview of the current tab's table.",
    "btn_export_csv": "Export Tab CSV…",
    "tip_export_csv": "Save the current tab's table as CSV.",
    "btn_export_png": "Export Map PNG…",
    "tip_export_png": "Save the map canvas as a PNG image.",
    "btn_export_xlsx": "Export All Tabs (XLSX)…",
    "tip_export_xlsx": "Save selected, excluded, all-items, and the report into a single Excel workbook.",
    "btn_add_calc": "Add Calculated Field…",
    "btn_close": "Close",
    "tip_calc_disabled": "Add Calculated Field requires a GeoPackage-backed result. Open the result from a workflow task to enable this.",
    "tip_calc_enabled": "Add a calculated column to the underlying GeoPackage table.",
    "lbl_search": "Search",
    "search_placeholder": "Filter rows across all columns",
    "btn_clear": "Clear",
    "report_summary_header": "<b>{name}</b> portfolio summary",
    "row_strategy": "Strategy",
    "row_cost_field": "Cost Field",
    "row_benefit_field": "Benefit Field",
    "row_selection": "Selection",
    "row_budget": "Budget",
    "row_budget_utilization": "Budget Utilization",
    "row_efficacy": "Efficacy",
    "row_engine_time": "Engine Time",
    "unspecified": "(unspecified)",
    "budget_bar_format_pct": "%p% of budget spent",
    "budget_bar_not_reported": "Budget not reported",
    "efficacy_not_reported": "(not reported)",
    "engine_time_ms": "{ms:,} ms",
    "silo_balances": "Silo balances",
    "silo_label": "Silo {letter}",
    "silo_remaining": "Remaining: {value}",
    "silo_share": "  ({share:.1f}% of total budget)",
    "selection_just_count": "{selected} selected",
    "selection_summary": "{selected:,} selected of {considered:,} considered ({ratio:.1f}%)",
    "budget_spent": "Spent: {value}",
    "budget_total": "Budget: {value}",
    "budget_left": "Left: {value}",
    "selected_tab_header": "<b>{count}</b> selected items (InPortfolioSort = 1). Sorted by benefit / cost when both are present.",
    "excluded_tab_header": "<b>{count}</b> excluded items (InPortfolioSort = 0).",
    "all_tab_header": "<b>{count}</b> rows considered.",
    "map_no_qgis": "QGIS map bindings are not available in this environment, so the map preview cannot be shown. The selection tabs still work.",
    "map_no_gpkg": "No GeoPackage backing was provided — the map cannot show this Portfolio result.",
    "map_open_failed": "Could not open the result layer at:\n{database_path} ({table_name})",
    "map_drawn_failed": "Layer loaded, but the map could not be drawn: {error}",
    "map_showing": "Showing layer '{name}' from {table_name}.",
    "report_no_metadata": "(no report metadata was returned by the engine)",
    "report_pipeline": "Pipeline: {value}",
    "report_execution_id": "Execution ID: {value}",
    "report_strategy": "Strategy: {value}",
    "report_cost_field": "Cost field: {value}",
    "report_benefit_field": "Benefit field: {value}",
    "report_header": "Report:",
    "report_line": "  - {field}: {value}",
    "summary_pipeline": "Pipeline: {value}",
    "summary_execution": "Execution: {value}",
    "summary_geopackage": "GeoPackage: {value}",
    "summary_result_table": "Result table: {value}",
    "summary_strategy": "Strategy: {value}",
    "summary_inportfolio_field": "InPortfolio field: {value}",
    "summary_none": "(none)",
    "summary_columns_header": "Result columns ({count}):",
    "summary_column_line": "  - {name}",
    "print_title_template": "{name} — {tab}",
    "print_tab_selected": "Selected",
    "print_tab_excluded": "Excluded",
    "print_tab_all": "All Items",
    "msg_no_table_title": "Print Tab",
    "msg_no_table_body": "The current tab does not have a printable table.",
    "msg_no_map_title": "Export Map PNG",
    "msg_no_map_body": "The map view is not available.",
    "calc_title": "Add Calculated Field",
    "calc_not_backed": "This view is not backed by a GeoPackage — open the result from a workflow task to enable calculated fields.",
    "calc_no_qgis": "QGIS bindings are unavailable.",
    "calc_open_failed": "Could not open the result table at:\n{database_path}\nlayer: {table_name}",
    "calc_unexpected_error": "An unexpected error occurred while adding the column:\n{error}",
    "calc_success_added": "Added column '{name}' to {table_name}.",
    "calc_success_skipped_note": "\n\nNote: {count} row(s) had expression evaluation errors and received NULL values.",
    "sheet_selected": "Selected",
    "sheet_excluded": "Excluded",
    "sheet_all_items": "All Items",
    "sheet_report": "Report",
    "report_field_col": "Field",
    "report_value_col": "Value"
  },
  "cdp_results": {
    "window_title": "CDP Results - {name}",
    "btn_print": "Print Tab…",
    "tip_print": "Open a print preview of the current tab's primary table.",
    "btn_export_csv": "Export Tab CSV…",
    "tip_export_csv": "Save the current tab's primary table as CSV.",
    "btn_export_chart": "Export Chart PNG…",
    "tip_export_chart": "Save the current tab's chart as a PNG image.",
    "btn_export_xlsx": "Export All Tabs (XLSX)…",
    "btn_add_calc": "Add Calculated Field…",
    "btn_close": "Close",
    "tab_workbench": "Workbench",
    "tab_cdp_model_view": "CDP Model View",
    "tab_calculations": "Calculations",
    "tab_prioritization": "Prioritization",
    "tab_contributions": "Contributions",
    "tab_sensitivity": "Sensitivity",
    "tab_tradeoffs": "Tradeoffs",
    "tab_model_context": "Model Context",
    "tab_criteria_levels": "Criteria / Levels",
    "lbl_search": "Search",
    "search_placeholder": "Filter rows across all columns",
    "btn_clear": "Clear",
    "workbench_status_default": "Select a row to inspect the result record.",
    "lbl_calculation_rows": "Calculation Rows",
    "lbl_numeric_summary": "Numeric Summary",
    "lbl_priority_chart": "Priority Score by Feature",
    "lbl_chart_scope": "Chart Scope",
    "lbl_grid_filter": "Grid Filter",
    "prio_search_placeholder": "Filter prioritization rows across all columns",
    "contrib_search_placeholder": "Filter contribution rows across all columns",
    "lbl_source_level": "Source Level",
    "lbl_target_level": "Target Level",
    "lbl_criterion": "Criterion",
    "lbl_lowest_criteria": "Lowest Criteria",
    "lbl_criteria": "Criteria",
    "lbl_levels": "Levels",
    "msg_print_tab_title": "Print Tab",
    "msg_no_print_table": "The current tab does not have a printable table.",
    "msg_export_tab_csv_title": "Export Tab CSV",
    "msg_no_export_table": "The current tab does not have a table to export.",
    "msg_export_chart_png_title": "Export Chart PNG",
    "msg_no_chart": "The current tab does not have a chart.",
    "calc_title": "Add Calculated Field",
    "calc_no_qgis": "QGIS bindings are unavailable.",
    "cdp_viewer_title": "CDP Viewer",
    "err_reload_contributions": "Could not reload Contributions:\n{error}",
    "err_reload_sensitivity": "Could not reload Sensitivity:\n{error}",
    "err_reload_tradeoffs": "Could not reload Tradeoffs:\n{error}"
  },
  "netweaver_results": {
    "window_title": "NetWeaver Results – {name}",
    "header": "Pipeline: {name}    Execution: {exec_id}    Rows: {rows}",
    "model_label": "Model: {path}",
    "btn_add_to_map": "Add Current Topic to Map",
    "btn_export": "Export…",
    "menu_print_map": "Print Map",
    "menu_export_png": "Export Map as PNG",
    "menu_export_csv": "Export Results as CSV",
    "menu_export_xlsx": "Export Results as Excel (.xlsx)",
    "lbl_topics": "Topics",
    "topic_search_placeholder": "Search topics",
    "btn_prev": "Prev",
    "btn_next": "Next",
    "col_topic": "NetWeaver Topic",
    "col_value": "Value",
    "btn_show_on_map": "Show On Map",
    "btn_node_inspector": "Open Node Inspector",
    "btn_model_graph": "Display NetWeaver Viewer",
    "lbl_map_preview": "Map Preview",
    "status_select_topic": "Select a topic to inspect its output column.",
    "status_select_topic_result": "Select a topic with a result column to inspect its output.",
    "btn_show_all_rows": "Show All Rows",
    "lbl_selected_row": "Selected Row Inspection",
    "group_legend": "Class Legend",
    "btn_histogram": "Histogram",
    "btn_close": "Close",
    "lbl_preview_layer": "Preview Layer:",
    "btn_refresh_preview": "Refresh Preview",
    "btn_fit_preview": "Fit Preview to Layer",
    "map_initializing": "Embedded map is initializing.",
    "map_unavailable": "Map preview is unavailable because QGIS map canvas support could not be loaded.",
    "map_no_project_layers": "No project layers available for map preview.",
    "msg_map_preview_title": "Map Preview",
    "msg_no_layers_to_zoom": "No map layers available to zoom.",
    "msg_no_extent": "The layer does not have a usable extent.",
    "msg_show_on_map_title": "Show On Map",
    "msg_select_topic_first": "Select a topic first.",
    "msg_add_topics_title": "Add Topics To Map",
    "msg_queue_topics_first": "Queue one or more topics first.",
    "msg_export_csv_title": "Export CSV",
    "msg_no_data": "There is no data to export.",
    "msg_export_csv_success": "Results exported to:\n{path}",
    "msg_export_csv_failed": "Could not export results:\n{error}",
    "msg_export_excel_title": "Export Excel",
    "msg_export_excel_success": "Results exported to:\n{path}",
    "msg_export_excel_failed": "Could not export results:\n{error}",
    "msg_export_map_title": "Export Map PNG",
    "msg_no_map_canvas_export": "No map canvas is available to export.",
    "msg_export_map_success": "Map exported to:\n{path}",
    "msg_export_map_failed": "Could not export map:\n{error}",
    "msg_print_map_title": "Print Map",
    "msg_no_map_canvas_print": "No map canvas is available to print.",
    "msg_node_inspector_title": "Node Inspector",
    "msg_add_topics_summary": "Added or refreshed {count} NetWeaver topic layer(s).",
    "msg_could_not_add": "\n\nCould not add: {topics}",
    "file_dialog_csv_title": "Export NetWeaver Table to CSV",
    "file_dialog_csv_filter": "CSV Files (*.csv)",
    "file_dialog_xlsx_title": "Export NetWeaver Table to Excel",
    "file_dialog_xlsx_filter": "Excel Files (*.xlsx)",
    "file_dialog_png_title": "Export NetWeaver Map to PNG",
    "file_dialog_png_filter": "PNG Images (*.png)",
    "msg_print_failed": "Could not print the map from this QGIS/PyQt environment:\n{error}",
    "ctx_show_on_map": "Show On Map",
    "ctx_open_node_inspector": "Open Node Inspector",
    "ctx_open_model_graph": "Open Model Graph",
    "ctx_remove_from_queue": "Remove From Map Queue",
    "ctx_queue_for_map": "Queue Topic for Map",
    "ctx_add_queued": "Add Queued Topics to Map",
    "lbl_preview_topic": "Topic:",
    "msg_model_graph_title": "Model Graph",
    "msg_no_topics_to_graph": "There are no NetWeaver topics available to graph.",
    "btn_map_pan": "Pan",
    "btn_map_identify": "Identify",
    "btn_map_select": "Select",
    "tip_map_pan": "Pan the map by dragging",
    "tip_map_identify": "Click a feature to identify it",
    "tip_map_select": "Click a feature to select it",
    "tip_map_zoom_in": "Zoom in",
    "tip_map_zoom_out": "Zoom out",
    "btn_map_zoom_selection": "Zoom to Selection",
    "tip_map_zoom_selection": "Zoom the map to the selected feature(s)",
    "btn_map_full_extent": "Full Extent",
    "tip_map_full_extent": "Zoom to the full extent of all layers",
    "msg_no_selection_to_zoom": "No features are selected on the preview layer.",
    "identify_title": "Identify – {fid}",
    "identify_col_field": "Field",
    "identify_col_value": "Value",
    "identify_btn_close": "Close",
    "menu_print_table": "Print Table…",
    "msg_print_table_title": "Print Table",
    "msg_no_rows_print": "There are no result rows to print."
  },
  "lpa_results": {
    "window_title": "LPA Results — {name}",
    "header": "Pipeline: {name}    Execution: {exec_id}    Rows: {rows}    Columns: {columns}",
    "execution_unknown": "(unknown)",
    "tab_table": "Table",
    "tab_map": "Map",
    "tab_summary": "Summary",
    "btn_print": "Print Tab…",
    "tip_print": "Open a print preview of the current tab's table.",
    "btn_export_csv": "Export Tab CSV…",
    "tip_export_csv": "Save the current tab's table as CSV.",
    "btn_export_png": "Export Map PNG…",
    "tip_export_png": "Save the map canvas as a PNG image.",
    "btn_export_xlsx": "Export All Tabs (XLSX)…",
    "tip_export_xlsx": "Save every tab's table into a single multi-sheet Excel workbook.",
    "btn_add_calc": "Add Calculated Field…",
    "btn_close": "Close",
    "lbl_search": "Search",
    "search_placeholder": "Filter rows across all columns",
    "btn_clear": "Clear",
    "lbl_selected_row": "Selected Row",
    "tip_calc_disabled": "Add Calculated Field requires a GeoPackage-backed result. Open the result from a workflow task to enable this.",
    "tip_calc_enabled": "Add a calculated column to the underlying GeoPackage table.",
    "map_no_qgis": "QGIS map bindings are not available in this environment, so the map preview cannot be shown. The Table tab still works.",
    "map_no_gpkg": "No GeoPackage backing was provided — the map cannot show this LPA result.",
    "map_open_failed": "Could not open the result layer at:\n{database_path} ({table_name})",
    "map_drawn_failed": "Layer loaded, but the map could not be drawn: {error}",
    "map_showing": "Showing layer '{name}' from {table_name}.",
    "row_index": "Row Index: {value}",
    "row_more_columns": "... {count} more columns not shown",
    "summary_pipeline": "Pipeline: {value}",
    "summary_execution": "Execution: {value}",
    "summary_geopackage": "GeoPackage: {value}",
    "summary_result_table": "Result table: {value}",
    "summary_none": "(none)",
    "summary_fields_header": "Summary fields:",
    "summary_no_fields": "  (no summary metadata provided)",
    "summary_columns_header": "Result columns ({count}):",
    "summary_field_line": "  - {field}: {value}",
    "summary_column_line": "  - {name}",
    "title_table_print": "{name} — Table",
    "msg_no_map_title": "Export Map PNG",
    "msg_no_map_body": "The map view is not available.",
    "msg_no_data_title": "Export to Excel",
    "msg_no_data_body": "There is no table data to export.",
    "calc_title": "Add Calculated Field",
    "calc_not_backed": "This view is not backed by a GeoPackage — open the result from a workflow task to enable calculated fields.",
    "calc_no_qgis": "QGIS bindings are unavailable.",
    "calc_open_failed": "Could not open the result table at:\n{database_path}\nlayer: {table_name}",
    "calc_unexpected_error": "An unexpected error occurred while adding the column:\n{error}",
    "calc_success_added": "Added column '{name}' to {table_name}.",
    "calc_success_skipped_note": "\n\nNote: {count} row(s) had expression evaluation errors and received NULL values.",
    "sheet_results": "Results",
    "sheet_summary": "Summary",
    "sheet_col_key": "Key",
    "sheet_col_value": "Value",
    "default_name": "LPA"
  },
  "compare_results": {
    "window_title": "Compare Analyses",
    "header_primary": "<b>Primary result:</b> {label}    <b>Engine:</b> {engine}    <b>Rows:</b> {rows}    <b>Columns:</b> {columns}",
    "picker_prompt": "Choose up to {max} additional results to compare against the primary (checkbox to select). Cross-engine selections are allowed but column overlap will be limited.",
    "col_result": "Result",
    "col_engine": "Engine",
    "col_analysis": "Analysis",
    "col_study_workspace": "Study / Workspace",
    "btn_compare": "Compare Selected",
    "btn_clear": "Clear Selection",
    "status_initial": "0 additional results selected.",
    "status_template": "{count} additional result(s) selected (max {max}).",
    "selection_limit_title": "Selection Limit",
    "selection_limit_body": "You can compare up to {max} additional results alongside the primary.",
    "group_column_alignment": "Column Alignment",
    "skip_unmatched": "Skip columns missing from any selected result",
    "tab_table": "Side-by-side Table",
    "tab_histogram": "Histogram",
    "btn_export_csv": "Export Comparison CSV",
    "btn_close": "Close",
    "histogram_title": "Comparison Histogram",
    "histogram_subtitle": "Pick numeric columns to overlay.",
    "no_other_results": "No other results found in this workspace.",
    "err_load_result": "Could not load result '{label}':\n{error}",
    "err_no_data": "Result '{label}' has no data and cannot be compared.",
    "warning_columns_differ": "Some columns differ across the selected results:\n{details}",
    "warning_missing_line": "• {label} is missing: {columns}",
    "histogram_title_dynamic": "Comparing {count} results: {labels}",
    "export_dialog_title": "Export Comparison CSV",
    "csv_filter": "CSV Files (*.csv)",
    "export_success": "Comparison saved to:\n{path}",
    "export_failed": "Could not save:\n{error}"
  },
  "create_raster": {
    "window_title": "Create Raster Study Area",
    "page_inputs_title": "Raster Inputs",
    "page_inputs_subtitle": "Pick the raster layers and choose which band(s) and RAT column(s) from each one should survive into the overlay output.",
    "name_placeholder": "e.g. Lower Truckee raster study",
    "row_name": "Name:",
    "row_description": "Description:",
    "lbl_available_layers": "Available raster layers (multi-select):",
    "group_carry_forward": "Carry-forward per input",
    "page_alignment_title": "Alignment & Output",
    "page_alignment_subtitle": "Input rasters may have different resolution / extent / CRS. The snap-to layer defines the output grid; the resampling method controls how the other inputs are aligned.",
    "row_snap_to": "Snap-to grid:",
    "row_resampling": "Resampling:",
    "row_output_format": "Output format:",
    "row_output_raster": "Output raster:",
    "output_path_placeholder": "/path/to/overlay.tif",
    "btn_browse": "Browse…",
    "page_summary_title": "Review & Build",
    "page_summary_subtitle": "Confirm the raster overlay spec. Clicking Finish runs GRASS r.cross to produce the unique-combination output raster and writes the enriched RAT alongside it.",
    "summary_cannot_build": "(Cannot build summary yet: {error})",
    "summary_name": "Name:",
    "summary_description": "Description:",
    "summary_none": "(none)",
    "summary_inputs": "Inputs:",
    "summary_snap_first_input": "(first input)",
    "summary_snap_to": "Snap-to:",
    "summary_resampling": "Resampling:",
    "summary_output": "Output:",
    "summary_output_unset": "(unset)",
    "err_cannot_create_title": "Cannot Create Study Area",
    "err_overlay_failed_title": "Raster Overlay Failed",
    "err_overlay_unexpected": "Unexpected error while running the overlay:\n{error}",
    "file_dialog_title": "Output overlay raster",
    "file_dialog_filter": "GeoTIFF (*.tif *.tiff);;All files (*)",
    "role_label": "Role:",
    "role_overlay": "Overlay",
    "role_target": "Target",
    "lbl_carry_bands": "Carry bands:",
    "band_label": "Band {index}",
    "lbl_carry_rat": "Carry RAT columns:",
    "no_rat_detected": "(no RAT detected — band value alone will carry)"
  },
  "calculated_field": {
    "window_title": "Add Calculated Field",
    "field_type_real": "Real (decimal)",
    "field_type_integer": "Integer",
    "field_type_text": "Text",
    "field_type_date": "Date",
    "prompt_initial": "Enter an expression and click Validate to preview.",
    "name_placeholder": "New column name (no spaces)",
    "row_field_name": "Field Name",
    "row_field_type": "Field Type",
    "lbl_expression": "Expression",
    "expression_placeholder": "QGIS expression — e.g. \"score\" * 100, \"category\" || ' (rated)', CASE WHEN \"rank\" < 5 THEN 'top' ELSE 'rest' END",
    "btn_validate": "Validate && Preview",
    "lbl_source_cols": "Source columns",
    "lbl_preview": "Preview (first rows)",
    "preview_col_row": "Row",
    "preview_col_value": "Value",
    "btn_add_field": "Add Field",
    "no_layer": "(no layer)",
    "no_fields": "(layer has no fields)",
    "err_name_required": "Field name is required.",
    "err_name_no_spaces": "Field name cannot contain spaces — use snake_case or PascalCase.",
    "err_name_exists": "A field named '{name}' already exists in this table.",
    "err_expression_required": "Enter an expression to validate.",
    "err_parser": "Parser error: {error}",
    "err_prepare": "Could not prepare expression: {error}",
    "err_eval": "Expression error on row {row}: {error}",
    "info_no_features": "Expression parsed, but the layer has no features to preview.",
    "info_ok_preview": "OK — previewed {count} row(s). Click 'Add Field' to materialize the column."
  },
  "create_task": {
    "window_title": "Add Task",
    "instructions": "Add either a simple task that runs an EMDS engine directly, or a workflow task that runs a saved project workflow definition as a composite task.",
    "row_task_type": "Task Type",
    "row_configuration": "Configuration",
    "task_type_simple": "Simple Task",
    "task_type_workflow": "Pipeline Task",
    "btn_ok": "OK",
    "btn_cancel": "Cancel",
    "row_engine": "Engine",
    "row_engine_details": "Engine Details",
    "simple_description": "The selected engine wizard will open next so you can configure the task.",
    "row_task_name": "Task Name",
    "row_pipeline": "Pipeline",
    "pipeline_default_choice": "(Select workflow definition)",
    "pipeline_unnamed": "(Unnamed workflow)",
    "row_inherited_inputs": "Inherited Inputs",
    "inherited_inputs_body": "Inherited inputs always available at runtime:\n`projectid`, `spatialreferenceid`, `provenanceid`, `parentid`",
    "binding_help": "Additional input bindings are optional. Enter one `name=value` pair per line. Values may be literals or use tokens like `{{projectid}}`.",
    "row_additional_inputs": "Additional Inputs",
    "run_immediately": "Run workflow task immediately after creation",
    "row_pipeline_summary": "Pipeline Summary",
    "summary_no_description": "No description provided.",
    "summary_steps": "Steps: {count}",
    "warn_pipeline_title": "Pipeline Task",
    "warn_binding_format": "Input binding on line {line} must use the format name=value.",
    "warn_binding_missing_name": "Input binding on line {line} is missing a name.",
    "warn_no_engine": "Please select an engine.",
    "warn_no_pipeline": "Please select a pipeline definition.",
    "warn_no_task_name": "Task name is required."
  },
  "create_analysis": {
    "window_title": "Create New Analysis",
    "lbl_name": "Analysis Name:",
    "lbl_description": "Description:",
    "group_first_task": "First Task",
    "lbl_engine": "Engine:",
    "lbl_engine_details": "Engine Details:",
    "validation_name": "analysis name",
    "validation_title": "Validation Error",
    "validation_no_engine": "Please select an initial task engine."
  },
  "create_workspace_guided": {
    "window_title": "Create Workspace and First Study Area",
    "hint_title": "Quick Start",
    "hint_body": "This step creates the EMDS Workspace folder, its QGIS host project, and your first Study Area. Choose one target layer for the features you want to work on, then add any overlay layers that help describe that area.",
    "lbl_study_name": "Study Area Name:",
    "lbl_target_layer": "Target Layer:",
    "lbl_overlay_layers": "Overlay / Included Layers:",
    "validation_study_name": "study area name",
    "warning_no_target_title": "No Target Layer Selected",
    "warning_no_target_body": "Please select a target layer for the first Study Area."
  },
  "provenance": {
    "menu_view": "View Provenance…",
    "menu_compare_versions": "Compare Model Versions…",
    "menu_workflow_history": "Workflow History…",
    "menu_duplicate_scenario": "Duplicate as Scenario…",
    "menu_compare_baseline": "Compare to Baseline…",
    "menu_scenario_builder": "Scenario Builder…",
    "menu_promote_scenario": "Promote Scenario…",
    "scenario_builder_title": "Scenario Builder",
    "dialog_title": "Provenance — {name}",
    "compare_versions_title": "Compare Model Versions",
    "workflow_history_title": "Workflow History — {name}",
    "btn_close": "Close",
    "list_and": " and ",
    "busy_title": "Working…",
    "busy_reading_weights": "Reading model weights…",
    "busy_applying_weights": "Applying weight edits…",
    "busy_reading_nodes": "Reading model nodes…",
    "busy_applying_ignore": "Applying ignore-flag edits…",
    "busy_running_preview": "Running preview…",
    "busy_running_test": "Running test…",
    "busy_running_preview_run": "Recording preview run…",
    "busy_reading_model": "Reading current model…",
    "scenario_builder_window_title": "Scenario Builder — {name}",
    "scenario_builder_intro": "Experiment with a change to this task. The baseline is untouched until you choose Fork or Replace below.",
    "scenario_builder_change_group": "1 · What do you want to change?",
    "scenario_builder_preview_group": "2 · Test & compare (≤200 rows, staging or preview run)",
    "scenario_builder_apply_group": "3 · Apply",
    "scenario_builder_model_prefix": "Model: {model}",
    "btn_swap_model": "Swap model…",
    "btn_edit_weights": "Edit weights…",
    "btn_edit_ignore": "Edit ignore flags…",
    "btn_edit_in_editor": "Edit model in editor…",
    "btn_run_preview": "Run preview",
    "btn_run_test": "Run test",
    "btn_record_preview_run": "Record preview run for compare…",
    "btn_open_pipeline_builder": "Open in Pipeline Builder…",
    "msg_open_pipeline_failed": "Could not open Pipeline Builder:\n\n{error}",
    "msg_select_workspace_for_pipeline": "Select a Workspace, Study Area, Analysis, or Task first.",
    "msg_pipeline_save_failed": "The workflow definition could not be saved to Workspace metadata.",
    "msg_pipeline_saved": "Saved workflow definition '{name}'.",
    "wizard_back": "Back",
    "wizard_next": "Next",
    "wizard_step_indicator": "Step {step} of 3 — Change · Test & compare · Apply",
    "btn_cancel": "Cancel",
    "btn_apply": "Apply",
    "tip_edit_weights": "Adjust this CDP model's criteria weights. Siblings are renormalized so each parent's children sum to 1. The edit is saved to a new model file used by Preview / Fork / Replace — the original is untouched.",
    "tip_edit_ignore": "Toggle which NetWeaver topics/variables are ignored (PersistentIgnore). The edit is saved to a new model file used by Preview / Fork / Replace — the original is untouched.",
    "tip_edit_in_editor": "Editing this model's weights/flags happens in the dedicated CDP6 / NetWeaver Developer 3 editor. For now use Swap model.",
    "no_swap_note": "This engine has no swappable model file; use Replace/Fork to re-run as-is.",
    "rb_fork_children": "Fork + re-run children (new path; clones this task and everything below)",
    "rb_fork_only": "Fork (this task only)",
    "rb_replace": "Replace (overwrite this task; old result layers leave the map)",
    "tip_no_children": "No child tasks below this one.",
    "scenario_name_label": "Scenario name:",
    "scenario_name_default": "{name} (scenario)",
    "swap_dialog_title": "Choose model file",
    "swap_filter_netweaver": "NetWeaver Models (*.nw2 *.nw)",
    "swap_filter_cdp": "CDP Models (*.cdpx *.cdp)",
    "msg_choose_action": "Choose Fork or Replace.",
    "msg_enter_name": "Enter a scenario name.",
    "msg_select_task": "Select a task first.",
    "msg_scenario_failed": "Could not complete the scenario:\n\n{error}",
    "msg_task_not_found": "Could not locate the task in the analysis.",
    "msg_scenario_created": "Created scenario '{name}' and ran it.{extra}",
    "msg_scenario_replaced": "Replaced '{name}' and re-ran it.",
    "msg_promote_not_scenario": "Select a scenario fork task to promote.",
    "msg_promote_no_run": "Run the scenario first so there is a run to promote.",
    "msg_promote_not_scenario_run": "The latest run for this task is not a scenario run.",
    "msg_promote_confirm": "Promote this scenario as a new baseline run? Existing baseline and scenario runs will be preserved for audit.",
    "msg_promote_failed": "Could not record the promoted baseline marker.",
    "msg_promote_success": "Promoted scenario recorded. New baseline run id: {run_id}",
    "promoted_scenario_label": "Promoted scenario",
    "promoted_scenario_notes": "Promoted from Scenario Builder; existing baseline and scenario runs are preserved.",
    "status_no_weight_changes": "No weight changes were made.",
    "status_weights_applied": "✓ Applied {count} weight edit(s) → edited model saved. Preview / Fork / Replace will use it.",
    "status_no_ignore_changes": "No ignore-flag changes were made.",
    "status_ignore_applied": "✓ Changed {count} ignore flag(s) → edited model saved. Preview / Fork / Replace will use it.",
    "edit_weights_title": "Edit weights — {name}",
    "edit_weights_intro": "Adjust criteria weights below. When you click OK, each parent's children are renormalized to sum to 1 (the CDP-correct adjustment).",
    "edit_weights_warn": "⚠ This model uses {features}. The edited copy saved here does not preserve them, so its scores may differ from the original. Use this for weight what-ifs; edit advanced models in the CDP editor for a faithful save.",
    "feature_value_functions": "custom value functions",
    "feature_uncertainty": "uncertainty distributions",
    "col_criterion": "Criterion",
    "col_parent": "Parent",
    "col_weight": "Weight",
    "mbox_edit_weights": "Edit weights",
    "mbox_no_cdp_model": "This task has no readable CDP model file to edit.",
    "mbox_read_weights_failed": "Could not read the model's weights:\n\n{error}",
    "mbox_apply_weights_failed": "Could not apply the weight edits:\n\n{error}",
    "mbox_invalid_weights": "These weights aren't valid numbers, so nothing was applied:\n\n{rows}\n\nFix or clear them, then click OK again.",
    "edit_ignore_title": "Edit ignore flags — {name}",
    "edit_ignore_intro": "Check a topic/variable to ignore it (PersistentIgnore); uncheck to include it. Ignored nodes are excluded when the model runs.",
    "col_node": "Node",
    "col_type": "Type",
    "col_ignore": "Ignore",
    "mbox_edit_ignore": "Edit ignore flags",
    "mbox_no_nw_model": "This task has no readable NetWeaver model file to edit.",
    "mbox_read_nodes_failed": "Could not read the model's nodes:\n\n{error}",
    "mbox_apply_ignore_failed": "Could not apply the ignore edits:\n\n{error}",
    "btn_compare_versions_inline": "Compare model versions…",
    "tip_compare_versions_inline": "Compare the model version last run against the current model file.",
    "btn_export_report": "Export audit report…",
    "tip_export_report": "Save a printable HTML report of exactly what this task's latest run did (model, hash, engine, parameters, mappings, inputs).",
    "mbox_export_report": "Export report",
    "report_build_failed": "Could not build the report:\n\n{error}",
    "report_save_title": "Save audit report",
    "report_write_failed": "Could not write the file:\n\n{error}",
    "report_saved": "Saved audit report to:\n{path}",
    "btn_difference_report": "Export difference report…",
    "tip_difference_report": "Save a printable HTML report explaining how the primary result and a selected comparison differ (model, weights/flags, parameters, mappings).",
    "mbox_difference_report": "Difference report",
    "difference_need_two": "Need the primary result and at least one comparison (each from a recorded run) to build a difference report.",
    "difference_save_title": "Save difference report",
    "difference_saved": "Saved difference report ({a} vs {b}) to:\n{path}",
    "btn_restore": "Restore this revision…",
    "tip_restore": "Make the selected revision the current workflow definition. This is additive — it records a new revision and never deletes history.",
    "mbox_restore": "Restore revision",
    "restore_select": "Select a revision to restore.",
    "restore_confirm": "Make revision {n} the current workflow definition?\n\nThis records a new revision; nothing is deleted.",
    "restore_failed": "Could not restore:\n\n{error}",
    "restore_done": "Revision {n} is now the current workflow definition.",
    "restore_incomplete": "Restore did not complete.",
    "history_header": "{count} revision(s)",
    "history_payload_placeholder": "Select a revision to view its workflow definition payload.",
    "col_rev": "Rev",
    "col_when": "When",
    "col_by": "By",
    "col_change": "Change",
    "col_hash": "Hash",
    "verified_registry_model": "Verified registry model",
    "registry_model_id": "Registry model id",
    "registry_version": "Registry version",
    "menu_create_workspace": "Create Workspace",
    "menu_open_workspace": "Open Workspace",
    "menu_create_study_area": "Create Study Area",
    "menu_edit_workspace": "Edit Workspace",
    "menu_delete_workspace": "Delete Workspace",
    "menu_create_analysis": "Create Analysis",
    "menu_edit_study_area": "Edit Study Area",
    "menu_delete_study_area": "Delete Study Area",
    "menu_add_task": "Add Task",
    "menu_delete_analysis": "Delete Analysis",
    "menu_add_subtask": "Add Subtask",
    "menu_run_task": "Run Task",
    "menu_open_netweaver_viewer": "Open NetWeaver Viewer",
    "menu_open_cdp_viewer": "Open CDP Viewer",
    "menu_open_results": "Open Results",
    "menu_compare_with": "Compare With…",
    "menu_execution_history": "Execution History",
    "menu_edit_task": "Edit Task",
    "menu_delete_task": "Delete Task",
    "menu_show_on_map": "Show On Map",
    "menu_toggle_visibility": "Toggle Visibility"
  },
  "registry_picker": {
    "window_title": "Pick Published Model Version",
    "header": "Published {kind} model versions in the central registry.\nRegistry: {path}",
    "col_name": "Model name",
    "col_version": "Version",
    "col_schema": "Schema",
    "col_authoring_tool": "Authoring tool",
    "col_current": "Current",
    "current_marker": "current",
    "btn_refresh": "Refresh",
    "count": "{count} version(s) found.",
    "empty": "No published {kind} model versions were found in the registry.",
    "load_error": "Could not read the model registry: {error}",
    "select_required": "Select a model version first."
  },
  "pipeline_builder": {
    "title": "Pipeline Builder",
    "btn_run": "Run",
    "btn_test": "Run test",
    "tip_run": "Run the full pipeline on the study output (persists results).",
    "tip_test": "Run on ≤200 rows into session staging only (no map layers).",
    "run_title": "Run Pipeline",
    "test_title": "Test Pipeline",
    "run_preparing": "Preparing pipeline '{name}'...",
    "test_preparing": "Preparing pipeline test (≤200 rows)...",
    "run_complete": "Pipeline '{name}' completed.",
    "test_complete": "Pipeline test completed ({steps} step(s), staging only).",
    "run_failed": "Pipeline run failed:\n\n{error}",
    "test_failed": "Pipeline test failed:\n\n{error}",
    "msg_no_steps": "Add at least one pipeline step before running.",
    "menu_file": "File",
    "menu_edit": "Edit",
    "menu_new_pipeline": "New Pipeline",
    "menu_new_from_template": "New from Template...",
    "menu_open_pipeline": "Open Pipeline",
    "menu_import_json": "Import from JSON...",
    "menu_export_json": "Export to JSON...",
    "menu_save_pipeline": "Save Pipeline",
    "menu_save_pipeline_as": "Save Pipeline As",
    "menu_undo": "Undo",
    "menu_redo": "Redo",
    "menu_duplicate_step": "Duplicate selected step",
    "menu_delete_step": "Delete selected step",
    "lbl_pipeline_name": "Pipeline Name",
    "lbl_description": "Description",
    "lbl_pipeline_steps": "Pipeline Steps",
    "tab_step_properties": "Selected Step Properties",
    "msg_select_step": "Select a pipeline step to edit its properties.",
    "tab_execution_preview": "Execution Preview",
    "btn_run_mock": "Run with Mock Variables...",
    "btn_run_selected_step": "Run Selected Step...",
    "lbl_pipeline_graph": "Pipeline Graph",
    "btn_refresh": "Refresh",
    "tip_refresh_graph": "Re-layout the pipeline graph for the current definition.",
    "graph_legend": "The graph is read-only — edit steps in the cards list on the left. Colors: blue = task, green = Python script, teal = variable, purple = loop, amber = if/else, orange = try/catch, slate = log.",
    "btn_insert_step": "+ Insert Step",
    "btn_configure_wizard": "Configure with Wizard...",
    "btn_cancel": "Cancel",
    "btn_save": "Save",
    "insert_run_task": "Run an EMDS Task",
    "insert_remember_value": "Remember a value",
    "insert_repeat_each": "Repeat for each…",
    "insert_only_if": "Only if…",
    "insert_log_message": "Write a log message",
    "insert_on_error": "If something goes wrong…",
    "msg_no_saved_pipelines": "No saved pipelines are available in this project.",
    "msg_select_task_first": "Select a Task step first.",
    "msg_wizard_engines_only": "The wizard is only available for NetWeaver, CDP, and Portfolio engines.",
    "msg_open_from_analysis": "Open the editor from inside an Analysis to use the configuration wizard.",
    "msg_wizard_open_failed": "The wizard could not be opened:\n\n{error}",
    "msg_clear_wizard_confirm": "Clear the wizard configuration for this task? The raw fields below will remain.",
    "msg_resolve_before_saving": "Resolve the following before saving:\n\n{issues}"
  },
  "edit_node": {
    "title_workspace": "Edit Workspace",
    "title_study": "Edit Study Area",
    "err_workspace_not_found": "Could not find the selected workspace.",
    "err_study_not_found": "Could not find the selected study area.",
    "err_name_required": "Name cannot be empty.",
    "err_workspace_save_failed": "The workspace could not be saved to metadata.",
    "err_study_save_failed": "The study area could not be saved to metadata.",
    "label_name": "Name:",
    "label_description": "Description:",
    "label_comments": "Comments:"
  },
  "netweaver_graph": {
    "window_title": "NetWeaver Network – {name}",
    "context": "Topic: {topic} · Feature: {feature}",
    "context_no_feature": "Topic: {topic} · no feature selected",
    "context_topics_mode": "Topic hierarchy – {name}",
    "btn_back": "◀ Back",
    "btn_fit": "Fit",
    "btn_fit_tip": "Zoom to fit (Ctrl+0)",
    "btn_zoom_in": "Zoom in (Ctrl+wheel)",
    "btn_zoom_out": "Zoom out (Ctrl+wheel)",
    "btn_details": "Details",
    "btn_close": "Close",
    "badge_queued": "queued",
    "badge_on_map": "on map",
    "tip_column": "Column: {column}",
    "tip_value": "Value: {value}",
    "tip_class": "Class: {label}",
    "tip_type": "Type: {type}",
    "tip_queued": "Queued to add to the map",
    "tip_on_map": "Already on the map",
    "tip_ignored": "Ignored",
    "tip_no_feature": "No feature selected",
    "tip_db_field": "Data column: {column}",
    "value_no_data": "No data",
    "placeholder_no_topics": "No NetWeaver topics are available.",
    "status_topics_fallback": "NetWeaver engine not available — showing the topic hierarchy only.",
    "status_engine_error": "Engine call failed: {error}",
    "status_no_row": "Select a feature row in the results table to color this network.",
    "status_drill_failed": "'{name}' cannot be opened as its own network.",
    "detail_no_selection": "Click a node to inspect it.",
    "detail_children": "Children",
    "detail_type": "Type: {type}",
    "detail_hint": "Hint: {hint}",
    "detail_db_field": "Data column: {column}",
    "detail_connection": "Connection: {connection}",
    "detail_result_column": "Result column: {column}",
    "tab_network": "Network",
    "tab_outline": "Outline",
    "tab_nodes": "Goals && Calculations",
    "tab_data": "Data Assignments",
    "btn_reset_whatifs": "Reset what-ifs",
    "btn_reset_whatifs_count": "Reset what-ifs ({count})",
    "btn_reset_whatifs_tip": "Clear all ignore what-ifs and restore the model's persisted values.",
    "whatif_conditional": "Ignore (conditional) — what-if",
    "whatif_persistent": "Ignore (persistent) — what-if",
    "whatif_tip": "Applies only to this viewer session; the model file is never changed.",
    "outline_col_node": "Node",
    "outline_col_value": "Value",
    "outline_loading": "Loading…",
    "outline_no_network": "(no network)",
    "outline_truncated": "… (truncated)",
    "nodes_goals": "Goals",
    "nodes_calcs": "Calculated nodes",
    "data_col_variable": "Model variable",
    "data_col_column": "Data column",
    "data_col_value": "Row value",
    "data_unmapped": "(not mapped)",
    "status_truncated": "Network truncated at the size budget — drill into a subtree to see more.",
    "status_missing_overrides": "What-if override(s) not found in the model: {names}",
    "tab_documents": "Documents",
    "docs_kb_header": "Knowledge base – {name}",
    "docs_select_prompt": "Select an entry to read its documentation.",
    "docs_none": "This model carries no documentation.",
    "docs_no_content": "(no documentation on this entry)",
    "docs_hint_label": "Hint:",
    "docs_link_label": "Link:",
    "hint_drill": "Double-click a node to drill in · Esc goes back",
    "status_unresolved": "{count} input variable(s) unresolved — see Data Assignments.",
    "status_no_data_count": "{count} node(s) have no data for this feature."
  },
  "netweaver_inspector": {
    "window_title": "Node Inspector – {topic}",
    "header": "<b>Topic:</b> {topic}    <b>Column:</b> {column}    <b>Workflow:</b> {workflow}",
    "selected_row": "<b>Selected row:</b> {row}    <b>Value:</b> {value}",
    "unclassified": "Unclassified",
    "legend_title": "Class Legend",
    "col_class": "Class",
    "col_count": "Count",
    "col_percent": "% of valid",
    "btn_close": "Close",
    "total_rows": "Total rows: {count}",
    "non_null": "Non-null values: {count}",
    "null": "Null values: {count}",
    "minimum": "Minimum: {value}",
    "maximum": "Maximum: {value}",
    "mean": "Mean: {value}",
    "median": "Median: {value}",
    "no_numeric": "This column does not contain numeric values to summarize.",
    "chart_title": "Class distribution – {column}",
    "chart_value_label": "row count",
    "chart_empty": "No numeric data to chart."
  },
  "rich_comments": {
    "tip_bold": "Bold",
    "tip_italic": "Italic",
    "tip_underline": "Underline",
    "tip_bullets": "Bullet list",
    "tip_numbering": "Numbered list",
    "tip_color": "Text color",
    "tip_link": "Insert link",
    "tip_undo": "Undo",
    "tip_redo": "Redo",
    "color_dialog_title": "Text color",
    "link_dialog_title": "Insert link",
    "link_dialog_prompt": "Link address (URL):"
  }
}
