From 3b6f95a54088b41429388eb26b07815d772a1fb6 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 20 May 2026 12:06:32 -0700 Subject: [PATCH 01/15] W-22513722-CX-UI-text-review-snapshot-05-20-26 --- modules/ROOT/assets/ui-text-review/en.json | 338 ++++++++++++++++++--- 1 file changed, 289 insertions(+), 49 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 07c88d9e7..c6fd68041 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -226,6 +226,7 @@ "selectEnvironmentFirst": "Select an environment first", "loadingGateways": "Loading gateways…", "selectGateway": "Select gateway…", + "noGatewaysAvailable": "No Flex Gateways registered in this environment. Register one in Anypoint Flex Gateway, then return here.", "consumerEndpointLabel": "Consumer Endpoint", "consumerEndpointPlaceholder": "https://api.example.com", "portLabel": "Port", @@ -292,6 +293,16 @@ "tryAgain": "Try again" } }, + "entityDetailLoadFailure": { + "gatewayTimeout": "We couldn't load the {entity} because the request timed out. Try again.", + "serviceUnavailable": "We couldn't load the {entity} because the service is temporarily unavailable. Try again.", + "serverError": "We couldn't load the {entity} because the service is temporarily unavailable. Try again.", + "unauthorized": "Sign in again to view this {entity}. Try again.", + "forbidden": "You don't have access to this {entity}. Check your permissions and try again.", + "notFound": "This {entity} no longer exists. Try again.", + "network": "We couldn't load the {entity} because of a network error. Check your connection and try again.", + "unknown": "We couldn't load the {entity}. Try again." + }, "entityDetail": { "loadingFallback": "Loading…", "loadingDescription": "Loading entity details, versions, and related metadata…" @@ -300,13 +311,14 @@ "tab": { "policies": "Policies", "monitoring": "Monitoring", - "governanceChecks": "Governance Checks" + "governanceChecks": "Conformance" }, "env": { "production": "Production", "sandbox": "Sandbox", "development": "Development" }, + "envBadge": "{name} ({type})", "breadcrumbInstances": "Instances", "exposeAsMcp": "Expose as MCP Server", "instanceLabel": "{entity} Instance", @@ -583,6 +595,7 @@ "policyViolation": "Policy Violation", "logicPolicy": "Logic / Policy", "allPolicies": "All Policies", + "noPoliciesAvailable": "No policies available for this API instance.", "rateLimiting": "Rate Limiting", "spikeControl": "Spike Control", "clientIdEnforcement": "Client ID Enforcement", @@ -627,6 +640,14 @@ "successMessage": "Notification was created.", "creating": "Creating…", "createButton": "Create Notification", + "requiredHint": "Fields marked with * are required.", + "requiredAriaSuffix": "required", + "help": { + "targetService": "Start typing to filter, then use the arrow keys to highlight a result and Enter to select.", + "threshold": "The alert fires when the metric satisfies this comparison continuously for the selected duration.", + "alertName": "Use a short, descriptive name (4 or more characters). Shown in the notification list and email subjects." + }, + "targetServiceListboxLabel": "Available targets", "serviceTypeLabel": { "api": "API", "llm": "LLM", @@ -667,14 +688,17 @@ "addRecipient": "Add at least one email recipient, or turn off email and use Slack.", "selectSlackChannel": "Select a Slack channel, or turn off Slack.", "noSlackChannels": "No Slack channels available. Connect Slack in Settings, then try again.", - "selectResponseCode": "Select a response code (or enter one) before creating this alert." + "selectResponseCode": "Select a response code (or enter one) before creating this alert.", + "selectTarget": "Please select a target service before creating this alert." }, "slackChannel": "Slack channel", "defaultEmailSubject": "$'{'severity'}': $'{'api'}' $'{'condition'}'", "defaultEmailMessage": "Hello,\nYou are receiving this alert because:\n The API policy $'{'policy'}' has $'{'condition'}' of $'{'value'}' at $'{'timestamp'}'.\nThe API policy has reached the threshold based on $'{'condition'}' is $'{'operator'}' $'{'threshold'}' for $'{'period'}'.\n\nEnvironment: $'{'environment'}'\n$'{'dashboardLink'}'\n$'{'apiLink'}'", "errorMissingOrgOrUser": "Enter your organization and user information.", "errorSelectEnvironment": "Select an environment.", - "errorEnableChannel": "Enable at least one delivery channel (email or Slack)." + "errorEnableChannel": "Enable at least one delivery channel (email or Slack).", + "noInstancesInEnvironment": "there are no instances in this environment.", + "noMatches": "No matches found" }, "notifications": { "heading": "Notifications", @@ -694,6 +718,7 @@ "responseTime": "Response Time", "responseCodes": "Response Codes", "policyViolation": "Policy Violation", + "cpuUsage": "CPU Usage", "allSeverities": "All Severities", "allDelivery": "All Delivery", "emailOnly": "Email Only", @@ -824,7 +849,9 @@ "mcpServers": "MCP Servers", "apis": "APIs", "noScanners": "No scanners for this provider yet.", + "noScannersAll": "No scanners configured yet.", "addScannerPrompt": "Click {label} to get started.", + "addScannerPromptAll": "Select a provider from the sidebar, then click Add Scanner to get started.", "scannerCount": "{count} {count, plural, one {Scanner} other {Scanners}}", "servicesDiscovered": "{count} Services Discovered", "searchPlaceholder": "Search by scanner or provider…", @@ -1328,7 +1355,7 @@ }, "costManagement": { "heading": "Cost Management", - "subtitle": "Monitor usage and review optimization recommendations across your portfolio" + "subtitle": "Monitor usage and review optimization recommendations for your MCP servers" }, "instanceDetailModal": { "closeDialog": "Close dialog", @@ -1475,6 +1502,26 @@ "defaultSelectSummary": "Selected policy {name}.", "back": "Back" }, + "policyMetadataFields": { + "heading": "Policy Details", + "description": "Optional name + version + application conditions, matching Anypoint API Manager.", + "label": "Policy label", + "labelPlaceholder": "e.g. SLA Tier 1", + "labelHint": "Helps tell duplicate-applied policies apart in the policies list.", + "version": "Policy version", + "versionEmpty": "(No versions available)", + "versionHint": "Pick the policy-template version to apply.", + "applicationConditions": "Application conditions", + "applyAllRequests": "Apply to all requests", + "applySpecific": "Apply only to specific resources", + "method": "Method", + "uriTemplateRegex": "URI template regex", + "addRowHint": "Add a row to limit this policy to specific HTTP requests.", + "methodPlaceholder": "GET|POST", + "uriPlaceholder": "/api/orders/.*", + "removeCondition": "Remove condition", + "addCondition": "+ Add condition" + }, "policyConfigForm": { "heading": "Configure Policy", "description": "Set configuration values for {name}.", @@ -1489,8 +1536,38 @@ "saveChanges": "Save Changes", "applyPolicy": "Apply Policy", "wizardTitle": "Apply Policy", - "viewTitle": "Policy configuration", - "viewDescription": "Configuration values for {name}." + "viewTitle": "Policy Configuration", + "viewDescription": "Configuration values for {name}.", + "discardModalTitle": "Discard changes and leave?", + "discardModalMessage": "You have unsaved changes. Are you sure you want to leave this page?", + "discardModalConfirm": "Discard and Leave", + "discardModalCancel": "Cancel", + "actionsMenu": "Actions", + "editConfiguration": "Edit Configuration", + "enablePolicy": "Enable Policy", + "disablePolicy": "Disable Policy", + "removePolicy": "Remove Policy", + "disabledBadge": "Disabled", + "removeModalTitle": "Remove {name}?", + "removeModalMessage": "Are you sure you want to remove this policy? This action cannot be undone and the change will take effect immediately.", + "removeModalConfirm": "Remove Policy", + "removeModalCancel": "Cancel" + }, + "policyDetailPage": { + "subtitle": "Policy Configuration", + "backToInstance": "Back to Instance", + "actionsAriaLabel": "Policy actions", + "edit": "Edit", + "disable": "Disable", + "enable": "Enable", + "delete": "Delete", + "noFields": "No configuration values to display.", + "checkboxEnabled": "Enabled", + "checkboxDisabled": "Disabled", + "valueEmpty": "—", + "saveChanges": "Save changes", + "cancel": "Cancel", + "configurationJson": "Configuration JSON" }, "policyConfigFieldEditor": { "configurationJson": "Configuration JSON", @@ -1587,7 +1664,7 @@ "title": "Import Tools from MCP Server", "closeModal": "Close notification window", "connecting": "Connecting to MCP server…", - "noInstance": "No reachable MCP server instance found. Confirm this server has a deployed instance with a public URL before importing tools.", + "noInstance": "No upstream URL found for this MCP server instance. Confirm the instance has a configured upstream before importing tools.", "authHint": "Check the authentication policies configured for this MCP server instance.", "noTools": "This MCP server has no tools available.", "selectAll": "Select All", @@ -1737,6 +1814,7 @@ "headerOrder": "Order", "headerStrategyName": "Strategy Name", "headerType": "Type", + "headerTarget": "Target", "headerStatus": "Status", "headerGovernedServices": "Governed Services", "headerModified": "Modified", @@ -1747,6 +1825,8 @@ "actionDuplicate": "Duplicate", "actionDelete": "Delete", "actionDeleting": "Deleting…", + "actionDisable": "Disable", + "actionEnable": "Enable", "emptyDefault": "No custom governance strategies created yet. Create your first to extend governance beyond the default profile.", "emptyFiltered": "No governance strategies match your filters.", "rowsPerPage": "Rows per page", @@ -1754,7 +1834,8 @@ "previous": "Previous", "next": "Next", "previousPageAriaLabel": "Previous page of strategies", - "nextPageAriaLabel": "Next page of strategies" + "nextPageAriaLabel": "Next page of strategies", + "sortByAriaLabel": "Sort by {column}" }, "complianceTable": { "headerServiceType": "Service Type", @@ -1797,6 +1878,17 @@ "typeAutomatedPolicy": "Automated Policy", "typeGuardrail": "Control" }, + "disableAutomatedPolicyModal": { + "closeAriaLabel": "Close disable dialog", + "heading": "Disable Automated Policy", + "confirmMessage": "Are you sure you want to disable {name}?", + "bodyMessage": "Policies currently applied through this strategy will be removed from all services. You can re-enable this strategy later to reapply the policy.", + "disableButton": "Disable Automated Policy" + }, + "disabledAutomatedPolicyBanner": { + "automatedPolicy": "This automated policy is disabled. These services are not currently governed but will be once the policy is activated.", + "controls": "This control is disabled. These services are not currently governed but will be once the strategy is activated." + }, "guardrailEvaluationPanel": { "runEvaluation": "Run profile evaluation", "refreshStatus": "Refresh status", @@ -1897,20 +1989,34 @@ "searchPlaceholder": "Search {entity}…", "searchAriaLabel": "Search {entity}", "resultCount": "{filtered} of {total}", - "performanceGood": "Good", - "performanceFair": "Fair", - "performancePoor": "Poor", - "minPlaceholder": "Min", - "maxPlaceholder": "Max", - "minScoreAriaLabel": "Minimum {label} score", - "maxScoreAriaLabel": "Maximum {label} score", - "rangeSeparator": "to", "cardViewLabel": "Card view", - "tableViewLabel": "Table view" + "tableViewLabel": "Table view", + "sortLabels": { + "nameAsc": "Name A–Z", + "nameDesc": "Name Z–A", + "updatedAtDesc": "Most recent", + "updatedAtAsc": "Least recent", + "complianceStatusDesc": "Conformance: high to low", + "complianceStatusAsc": "Conformance: low to high", + "apiCategoryAsc": "Type A–Z", + "apiCategoryDesc": "Type Z–A", + "gatewayModeAsc": "Type A–Z", + "gatewayModeDesc": "Type Z–A", + "statusAsc": "Status A–Z", + "statusDesc": "Status Z–A", + "environmentAsc": "Environment A–Z", + "environmentDesc": "Environment Z–A", + "routingStrategyAsc": "Routing strategy A–Z", + "routingStrategyDesc": "Routing strategy Z–A" + } }, "entityCard": { "lastSynced": "Last synced {time}", - "provisioningFailed": "Provisioning failed" + "provisioningFailed": "Provisioning failed", + "complianceStatusLabel": "Compliance status: {status}", + "complianceStatusCompliant": "Conformant", + "complianceStatusNonCompliant": "Non-Conformant", + "complianceStatusPending": "Not Validated" }, "filterDropdown": { "clearAll": "Clear all" @@ -2392,7 +2498,7 @@ "label": "Label", "gateway": "Gateway", "status": "Status", - "environment": "Environment", + "environment": "Env Type", "version": "Version", "policies": "Policies", "clients": "Clients", @@ -2556,6 +2662,7 @@ "viewFullGatewayDetails": "View Full Gateway Details", "gatewaySubtitle": "Gateway", "edit": "Edit", + "delete": "Delete", "viewFullDetails": "View Full Gateway Details" }, "detailHero": { @@ -2597,13 +2704,15 @@ "retryTimedOut": "Retry timed out — the pipeline may still be running in the background." }, "entityDetailPage": { - "tabConformanceReport": "Conformance Report", + "tabConformanceReport": "Conformance", "tabApis": "APIs", "tabReplicas": "Replicas", "tabLogs": "Logs", "tabConfiguration": "Configuration", "loadingTabContent": "Loading tab content…", "failedToDeleteAsset": "We couldn't delete the asset. Try again.", + "deleteMcpSuccess": "MCP server deleted", + "deleteMcpFailure": "Failed to delete MCP server: {message}", "entityLabel": { "agent": "Agent", "mcpServer": "MCP Server", @@ -2695,14 +2804,15 @@ "closeAriaLabel": "Close delete asset dialog", "titleWithEntity": "Delete {entityLabel}", "titleDefault": "Delete asset version", - "confirmMessage": "Deleting \"{assetName} {version}\" is permanent and cannot be undone.", - "warningRemoveAsset": "Deleting this will remove the asset, its details page, and metadata from the catalog.", + "confirmMessage": "Are you sure you want to delete {assetName} {version}?", + "warningRemoveAsset": "Deleting this will remove the asset, its details page, and metadata from the catalog. This action cannot be undone.", "warningGavReusable": "The asset in development will be deleted. Its GAV (group ID, asset ID, and version) will be reusable.", "warningLabel": "Warning:", "gavReusableCheckbox": "Allow the GAV (group ID, asset ID, and version) to be reusable.", "cancelButton": "Cancel", "deletingButton": "Deleting…", - "deleteButton": "Delete" + "deleteButton": "Delete", + "deleteButtonWithEntity": "Delete {entityLabel}" }, "deleteScannerModal": { "closeAriaLabel": "Close dialog", @@ -2722,7 +2832,9 @@ }, "dynamicCredentialsForm": { "selectPlaceholder": "Select {field}", - "noAuthConfig": "No authentication configuration available for this provider." + "noAuthConfig": "No authentication configuration available for this provider.", + "showPassword": "Show password", + "hidePassword": "Hide password" }, "importRulesBuilder": { "valuePlaceholder": "Value", @@ -2789,7 +2901,7 @@ "errorHeading": "Something went wrong", "errorRetryHint": "Try sending your message again.", "sendMessage": "Send message", - "disclaimer": "Omni can make mistakes. Verify important information.", + "disclaimer": "Ask MuleSoft can make mistakes. Verify important information.", "riskLevel": "Risk: {level}", "confirmationRequired": " - confirmation required", "confirmMonitoringCard": "Insert the proposed monitoring card?", @@ -2811,7 +2923,16 @@ "confirmPolicyPatch": "Try the proposed policy fix in the form?", "confirmGatewayPatch": "Try the proposed gateway fix in the form?", "btnApplyProposedChanges": "Apply proposed changes", + "approvalGate": { + "heading": "Confirmation required", + "redactionHint": "Credentials are not shown — they were redacted before this card was rendered.", + "btnApprove": "Approve", + "btnReject": "Reject", + "decisionApproved": "Approved", + "decisionRejected": "Rejected" + }, "aiFeaturesNotEnabled": "Looks like AI features aren't turned on for your organization. Ask your administrator to turn on AI features in the connected Anypoint Platform and Salesforce orgs. After AI features are turned on, try again.", + "aiFeaturesNoPermission": "Looks like you don't have permission to use Ask MuleSoft in this business group. Ask your organization admin to assign you the Mule Developer Generative AI User permission, then try again.", "aiFeaturesLearnMore": "Learn more", "working": "Working…" }, @@ -2881,11 +3002,9 @@ "headerOptimized": "Optimized", "headerActions": "Actions", "emptyState": "No instances match your search or filters.", - "paginationShowing": "Showing {start}–{end} of {total} instances", - "firstPage": "First page", + "paginationShowing": "{start}–{end} of {total}", "previousPage": "Previous page", "nextPage": "Next page", - "lastPage": "Last page", "sectionHeading": "MCP Server Instances", "policiesCount": "{applied}/{total} Policies", "optimize": "Optimize…", @@ -2940,6 +3059,7 @@ "policyViolation": "Policy Violation", "logicPolicy": "Logic / Policy", "allPolicies": "All Policies", + "noPoliciesAvailable": "No policies available for this API instance.", "rateLimiting": "Rate Limiting", "spikeControl": "Spike Control", "clientIdEnforcement": "Client ID Enforcement", @@ -3143,7 +3263,15 @@ "failedToStartInstall": "We couldn't start the Slack installation. Try again.", "uninstallSuccess": "Slack integration was uninstalled.", "failedToUninstall": "We couldn't uninstall the Slack integration. Try again.", - "appUninstalledExternally": "Slack app is no longer installed in your workspace. Install it again to enable Slack notifications." + "appUninstalledExternally": "Slack app is no longer installed in your workspace. Install it again to enable Slack notifications.", + "disconnectAdminNote": "The MuleSoft app will remain installed in your Slack workspace. To fully remove it, a Slack workspace admin needs to uninstall it from Slack.", + "disconnectButton": "Disconnect", + "disconnectDialogTitle": "Are you sure you want to disconnect Slack?", + "disconnectSuccess": "Slack integration disconnected successfully", + "disconnectWarningBody": "This will revoke MuleSoft's access to your Slack workspace. You'll stop receiving notifications immediately and won't be able to message the MuleSoft Agent.", + "disconnecting": "Disconnecting...", + "failedToDisconnect": "Failed to disconnect Slack integration", + "notInstalledPermissionHint": "You may need Slack admin permissions to install this app into your organization's Slack workspace, otherwise you can send a request." }, "auth": { "loginFailed": "We couldn't sign you in. Try again.", @@ -3189,6 +3317,23 @@ "flexGatewaysDescription": "Enforce governance standards across Omni Gateway configurations.", "selectFilterCriteria": "Select Filter Criteria", "filterCriteriaDescription": "Specify conditions to target the APIs, Agents, and MCP Servers you want to govern.", + "structuredFormSubtitle": "Configure scope criteria to identify services governed by this strategy. All criteria are combined to narrow the scope.", + "serviceTypeSelectAll": "Select the service types to govern", + "tagsLabel": "Tags", + "tagsHint": "Filter by tags to narrow scope", + "tagsPlaceholder": "Select tags...", + "categoriesLabel": "Categories", + "categoriesHint": "Filter by categories to narrow scope", + "categoriesPlaceholder": "Select categories...", + "instancesLabel": "Instances", + "instancesHint": "Filter by instance environment to narrow scope", + "deploymentAnyEnvironment": "Any environment", + "deploymentSpecificEnvironments": "Specific environments", + "deploymentNoInstances": "No instances", + "comingSoon": "Coming soon", + "noTagsAvailable": "No tags available", + "noCategoriesAvailable": "No categories available", + "noEnvNamesAvailable": "No environments available", "loadingScopePreview": "Loading Scope Preview…", "previewGovernedScope": "Preview Governed Scope", "conditionModeAll": "All APIs, Agents, MCP Servers", @@ -3207,6 +3352,8 @@ "runtimeRangeFromPlaceholder": "e.g. 4.1.1", "runtimeRangeTo": "Runtime range to", "runtimeRangeToPlaceholder": "e.g. 4.3.x", + "runtimeRangeInvalidVersion": "Use digits and dots, e.g. 4.4.0", + "runtimeRangeFromGreaterThanTo": "Range \"from\" must be less than or equal to \"to\"", "endpointTypes": "Endpoint Types", "allEndpointTypes": "All endpoint types", "chooseSpecificGroups": "Choose specific endpoint groups", @@ -3260,11 +3407,18 @@ "unableToLoadPolicies": "We couldn't load policies. Try again.", "noPoliciesMatch": "No policies match your search.", "profileSummaryFallback": "Includes the selected ruleset checks for this profile.", - "loadingPolicyConfig": "Loading policy configuration…", + "policyVersionPrefix": "Policy: ", + "allPolicyVersions": "All policy versions", + "policyVersionPrefix": "Policy: ", + "allPolicyVersions": "All policy versions", + "loadingPolicyConfig": "Loading policy configuration...", "selectedPolicy": "Selected Policy", "noPolicySelected": "No policy selected", "configurePolicy": "Configure Policy", "noPolicyInputsRequired": "This policy doesn't require configuration inputs.", + "allRuntimesMissingMule": "Currently this policy version doesn't support Mule runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Mule gateways APIs.", + "allRuntimesMissingFlex": "Currently this policy version doesn't support Flex runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Flex gateways APIs.", + "allRuntimesMissingBoth": "Currently this policy version doesn't support Flex or Mule runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Flex or Mule gateways APIs.", "severity": "Severity" }, "review": { @@ -3284,6 +3438,7 @@ "noAdditionalConditions": "No additional conditions selected", "noValues": "No values selected", "rulesToApply": "Rules to Apply", + "policyToApply": "Policy to Apply", "policySelectedCount": "{count} policy selected", "rulesAcrossRulesets": "{rules} rules across {rulesets} rulesets", "collapseAll": "Collapse All", @@ -3349,7 +3504,8 @@ "configDoesNotMatchSchema": "The configuration doesn't match the selected policy schema.", "configDoesNotSatisfySchema": "The configuration doesn't satisfy the selected policy schema.", "unnamedPolicyTemplate": "Unnamed policy template", - "noDescriptionProvided": "No description provided." + "noDescriptionProvided": "No description provided.", + "strategyNameAlreadyExists": "A strategy with this name already exists. Choose a different name." } }, "policiesTabSingle": { @@ -3379,7 +3535,16 @@ "moreActionsAriaLabel": "More actions for {name}", "emptyStateTitle": "No policies applied", "emptyStateDescription": "This instance has no policies applied. Add a policy to start protecting it.", - "enablePolicy": "Enable Policy" + "enablePolicy": "Enable Policy", + "removePolicyDialogBodyMessage": "This will detach the policy from this instance. Traffic that was being filtered by this policy will no longer be enforced.", + "removePolicyDialogCancelButton": "Cancel", + "removePolicyDialogCloseAriaLabel": "Close remove policy dialog", + "removePolicyDialogConfirmButton": "Remove Policy", + "removePolicyDialogConfirmMessage": "Are you sure you want to remove {name}?", + "removePolicyDialogHeading": "Remove policy", + "removePolicyToastSuccess": "Removed {name}.", + "enablePolicyToastSuccess": "Enabled {name}.", + "disablePolicyToastSuccess": "Disabled {name}." }, "policiesTab": { "policyFallback": "Policy", @@ -3394,7 +3559,9 @@ "viewDetailsAriaLabel": "View details: {label}", "coverageDetailsAriaLabel": "Coverage details: {category} - {environment}", "emptyStateTitle": "No instances yet", - "emptyStateDescription": "Policy coverage appears once this service has at least one active instance. Create an instance to start applying policies." + "emptyStateDescription": "Policy coverage appears once this service has at least one active instance. Create an instance to start applying policies.", + "deletePolicy": "Delete Policy", + "areYouSureToDelete": "Are you sure you want to delete {policy} from this instance?" }, "versionsTab": { "latest": "Latest", @@ -3943,7 +4110,9 @@ "creatingEntity": "Creating {entity}…", "cancel": "Cancel", "nameFromZipPrefix": "Name comes from the ZIP’s ", - "nameFromZipSuffix": "." + "nameFromZipSuffix": ".", + "typeFromZipHint": "Type comes from the ZIP’s exchange.json.", + "typeFromZipPlaceholder": "Auto-detected from ZIP" }, "specFileDropZone": { "optional": "(optional)", @@ -4372,7 +4541,8 @@ "advancedOptions": "Advanced Options", "advancedOptionsDesc": "Filter prompts before they reach a route.", "selectPromptGuardTopicPlaceholder": "Select topics…", - "noSelectablePromptGuardTopics": "No topics available — all are assigned to a route or guard." + "noSelectablePromptGuardTopics": "No topics available — all are assigned to a route or guard.", + "loadingSemanticServices": "Loading semantic services…" }, "routeCardContent": { "topicsLabel": "Topics", @@ -4499,10 +4669,12 @@ "searchPlaceholder": "Search services…", "loadingState": "Loading governed services…", "emptyState": "No services governed by this control.", + "emptyStateAutomatedPolicy": "No services governed by this automated policy.", "governedServicesSuffix": "governed services", "percentConformant": "{percent}% conformant", "governedServicesHeading": "Governed Services ({count})", - "noMatchingServices": "No services governed by this control." + "noMatchingServices": "No services governed by this control.", + "noMatchingServicesAutomatedPolicy": "No services governed by this automated policy." }, "guardrailRulesetCard": { "violation": "violation", @@ -4530,11 +4702,28 @@ "matchingServicesIncluded": "Any services that match the filter criteria will automatically be included.", "targetMeetsConditions": "{targetLabel} that meet all conditions ({modeLabel})" }, + "structuredScopeSummary": { + "labelServiceType": "Service Type", + "labelTags": "Tags", + "labelCategories": "Categories", + "labelInstances": "Instances", + "allServiceTypes": "All", + "anyTag": "Any tag", + "anyCategory": "Any category", + "anyEnvironment": "Any environment", + "noInstances": "No instances", + "anyEnvironmentsOfType": "Any {type} environments", + "envTypeWithNames": "{type}: {names}" + }, "governanceSettings": { "actionsButton": "Actions", "editFromAnypoint": "Edit (From Anypoint Platform)", "editStrategy": "Edit Strategy", "deleteStrategy": "Delete Strategy", + "automatedPolicyEdit": "Edit", + "automatedPolicyDelete": "Delete", + "automatedPolicyDisable": "Disable", + "automatedPolicyEnable": "Enable", "optional": "(Optional)", "removeAriaLabel": "Remove {value}", "addMorePlaceholder": "Add more…", @@ -4547,6 +4736,11 @@ "heading": "Governance Strategies", "pageDescription": "Configure and manage strategies to monitor, report, enforce, and block noncompliant activity across your services.", "createButton": "Create governance strategy", + "refreshReportButton": "Refresh report", + "refreshing": "Refreshing…", + "refreshQueued": "Report refresh queued. Conformance status will update shortly.", + "refreshBusy": "Another refresh is already running. Try again once it completes.", + "refreshFailed": "Unable to trigger report refresh right now.", "scopeType": { "restApi": "REST API", "httpApi": "HTTP API", @@ -4591,7 +4785,13 @@ "guardrailCreated": "Control was created.", "fromAnypointCreated": "Strategy was created from Anypoint Platform.", "strategyUpdated": "Strategy was updated.", - "fromAnypointUpdated": "Strategy was updated from Anypoint Platform." + "fromAnypointUpdated": "Strategy was updated from Anypoint Platform.", + "guardrailDeleted": "Control deleted.", + "automatedPolicyDeleted": "Automated policy deleted." + }, + "pending": { + "guardrailCreating": "Creating your control — this may take a moment.", + "automatedPolicyCreating": "Creating your automated policy — this may take a moment." }, "dashboard": { "activeStrategies": "Active Strategies", @@ -4626,12 +4826,14 @@ "httpApi": "HTTP API", "agent": "Agent", "mcp": "MCP", + "grpc": "gRPC", "tagsLabel": "Tags", "tagsPlaceholder": "Select tags…", "categoriesLabel": "Categories", "categoriesPlaceholder": "Select categories…", "apiInstanceHeading": "API Instance", "allApis": "All APIs", + "onlyWithInstances": "Include only APIs with instances", "onlyWithoutInstances": "Only APIs without instances", "loadingPreview": "Loading Scope Preview…", "previewButton": "Preview Governed Scope" @@ -4731,6 +4933,7 @@ "appliedPolicy": "Applied Policy", "policyDescription": "Policy configured through API Manager automated policy strategy.", "scopeHeading": "Scope", + "environmentLabel": "Environment", "runtimeLabel": "Runtime", "endpointTypesLabel": "Endpoint Types", "rulesHeading": "Rules", @@ -4746,8 +4949,8 @@ }, "actions": "Actions", "pending": { - "guardrailCreating": "Don't leave this page — your control is still being created. We're confirming with the upstream service.", - "automatedPolicyCreating": "Don't leave this page — your automated policy is still being created. We're confirming with the upstream service." + "guardrailCreating": "Creating your control — this may take a moment.", + "automatedPolicyCreating": "Creating your automated policy — this may take a moment." } }, "mcpWizard": { @@ -4757,6 +4960,9 @@ "breadcrumbEdit": "Edit MCP Server", "noGatewaysHeading": "No Omni Gateways Available", "noGatewaysDescription": "MCP servers require an Omni Gateway (v1.2.0+) to deploy. Provision an Omni Gateway in your environment first, then return here to create your MCP server.", + "gatewayLoadErrorHeading": "Unable to Load Gateways", + "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue — please try again.", + "retryButton": "Retry", "backToMcpServers": "Back to MCP Servers", "cancelButton": "Cancel", "previousButton": "Previous", @@ -4835,12 +5041,13 @@ "envDevelopment": "QA", "routeLabel": "Route label", "routeTooltip": "Specifies the upstream service to be called when this tool is invoked.", - "tlsLabel": "TLS", + "secretGroupLabel": "Secret Group", + "secretGroupPlaceholder": "Select a Secret Group", + "tlsLabel": "TLS Context", "tlsOptional": "(Optional)", "tlsNone": "None", - "tlsMythical": "Mythical TLS", - "tlsInternal": "Internal TLS", - "tlsProduction": "Production TLS", + "tlsContextPlaceholder": "Select a TLS Context", + "tlsNoResults": "No results found", "cancel": "Cancel", "save": "Save" }, @@ -4848,6 +5055,7 @@ "heading": "Select Tools", "subheading": "Choose which tools to expose from your selected APIs and SaaS systems", "readOnlyCheckbox": "Select read-only tools", + "readOnlyCheckboxTooltip": "Applies to APIs only", "loadingText": "Loading deployed tools…", "emptyStateLine1": "Select APIs or SaaS systems from the left.", "emptyStateLine2": "to configure their tools", @@ -5090,12 +5298,13 @@ "envQa": "QA", "routeLabel": "Route label", "routeLabelTooltip": "Specifies the upstream service to be called when this tool is invoked.", - "tlsLabel": "TLS", + "secretGroupLabel": "Secret Group", + "secretGroupPlaceholder": "Select a Secret Group", + "tlsLabel": "TLS Context", "optional": "(Optional)", "tlsNone": "None", - "tlsMythical": "Mythical TLS", - "tlsInternal": "Internal TLS", - "tlsProduction": "Production TLS", + "tlsContextPlaceholder": "Select a TLS Context", + "tlsNoResults": "No results found", "saveButton": "Save", "serverConfigTitle": "Server Configuration", "serverName": "Server Name", @@ -5112,6 +5321,7 @@ "pathHelp": "Base path on the gateway (derived from server name)", "pathConflict": "That path is already in use. Enter a unique path.", "pathImmutable": "Path cannot be changed after deployment.", + "gatewayMissingPublicUrl": "Selected gateway has no public URL configured. Choose a different gateway.", "gatewayLabel": "Gateway", "selectAGateway": "Select a gateway", "step1Label": "Select Source, Instance & Tools", @@ -5276,7 +5486,8 @@ "copyPublicEndpoint": "Copy public endpoint", "copyInternalEndpoint": "Copy internal endpoint", "endpointCopied": "Endpoint copied to clipboard.", - "endpointCopyFailed": "We couldn't copy the endpoint to clipboard." + "endpointCopyFailed": "We couldn't copy the endpoint to clipboard.", + "loadingValue": "Loading {name}" }, "filterableMultiSeriesChart": { "all": "All", @@ -5569,7 +5780,8 @@ "editFromAnypointButton": "Edit (From Anypoint Platform)", "editStrategyButton": "Edit Strategy", "backButton": "Back", - "selectedStrategyUnavailable": "Selected strategy is unavailable." + "selectedStrategyUnavailable": "Selected strategy is unavailable.", + "bridgeOpenCreateAccepted": "Opened the Create Control wizard." }, "notFound": { "heading": "We couldn't find that page", @@ -5583,5 +5795,33 @@ "bodyMessage": "If you leave now, your in-progress configuration will not be saved.", "discardButton": "Discard Changes", "keepEditingButton": "Keep Editing" + }, + "slackInstall": { + "missingPending": "Missing install identifier. Please start the Slack installation again.", + "noOrganization": "No organization selected in this browser session.", + "adminRequired": "Only an organization administrator can install the Slack integration.", + "installFailed": "Failed to install Slack integration", + "needsLogin": { + "heading": "Install Slack Integration", + "description": "Sign in to Anypoint first. After signing in, the Slack installation will complete automatically.", + "goToLogin": "Sign in to Anypoint" + }, + "success": { + "heading": "Slack Installed Successfully", + "description": "The Slack integration has been installed for your organization.", + "descriptionWithWorkspace": "The Slack integration has been installed and connected to the {workspace} workspace.", + "goToSettings": "Go to Notification Settings" + }, + "expired": { + "heading": "Install link expired", + "description": "This installation link has expired. Please click Add to Slack again to start a new installation." + }, + "error": { + "heading": "Installation failed" + }, + "completing": { + "heading": "Installing Slack Integration", + "description": "Completing installation…" + } } } From 5fe6aff0298de63459ea74ba71b8f2eea7509644 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 20 May 2026 12:19:07 -0700 Subject: [PATCH 02/15] Change "Flex Gateway" to "Omni Gateway". --- modules/ROOT/assets/ui-text-review/en.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index c6fd68041..5325a5deb 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -222,11 +222,11 @@ "environmentLabel": "Environment", "loadingEnvironments": "Loading environments…", "selectEnvironment": "Select environment…", - "flexGatewayLabel": "Flex Gateway", + "flexGatewayLabel": "Omni Gateway", "selectEnvironmentFirst": "Select an environment first", "loadingGateways": "Loading gateways…", "selectGateway": "Select gateway…", - "noGatewaysAvailable": "No Flex Gateways registered in this environment. Register one in Anypoint Flex Gateway, then return here.", + "noGatewaysAvailable": "No Omni Gateways registered in this environment. Register one in Anypoint Omni Gateway, then return here.", "consumerEndpointLabel": "Consumer Endpoint", "consumerEndpointPlaceholder": "https://api.example.com", "portLabel": "Port", @@ -245,7 +245,7 @@ "proxyName": "Proxy Name", "basePath": "Base Path", "environment": "Environment", - "flexGateway": "Flex Gateway", + "flexGateway": "Omni Gateway", "consumerEndpoint": "Consumer Endpoint", "port": "Port", "continueButton": "Continue", @@ -4987,7 +4987,7 @@ "stepSaasCredentials": "SaaS Credentials", "stepReview": "Review", "toastApiMissingInstanceUrl": "\"{apiName}\" can't be wrapped as an MCP server yet: the selected API Manager instance has no endpoint URL. Deploy the instance in API Manager (attach a runtime) and try again.", - "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply a Flex Gateway inbound auth policy (for example, client-id-enforcement or jwt-validation) before production use.", + "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply an Omni Gateway inbound auth policy (for example, client-id-enforcement or jwt-validation) before production use.", "gatewayLoadErrorHeading": "Unable to load gateways", "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", "retryButton": "Retry" From ce8919a2b7576770f73a8eda872f337ceb77d6ca Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 20 May 2026 17:35:28 -0700 Subject: [PATCH 03/15] Conformance to UI Text standards --- modules/ROOT/assets/ui-text-review/en.json | 269 ++++++++++----------- 1 file changed, 133 insertions(+), 136 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 5325a5deb..099305b82 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -214,7 +214,7 @@ "heading": "Create an LLM Proxy", "description": "Register an LLM proxy: choose a gateway, then connect providers and routing.", "proxyNameLabel": "Proxy Name", - "proxyNamePlaceholder": "e.g. Billing Triage Proxy", + "proxyNamePlaceholder": "Billing Triage Proxy", "descriptionLabel": "Description", "descriptionPlaceholder": "Describe what this proxy does…", "basePathLabel": "Base Path", @@ -294,13 +294,13 @@ } }, "entityDetailLoadFailure": { - "gatewayTimeout": "We couldn't load the {entity} because the request timed out. Try again.", - "serviceUnavailable": "We couldn't load the {entity} because the service is temporarily unavailable. Try again.", - "serverError": "We couldn't load the {entity} because the service is temporarily unavailable. Try again.", - "unauthorized": "Sign in again to view this {entity}. Try again.", + "gatewayTimeout": "We couldn't load the {entity}. Try again.", + "serviceUnavailable": "We couldn't load the {entity}. Try again.", + "serverError": "We couldn't load the {entity}. Try again.", + "unauthorized": "Sign in again to view this {entity}.", "forbidden": "You don't have access to this {entity}. Check your permissions and try again.", - "notFound": "This {entity} no longer exists. Try again.", - "network": "We couldn't load the {entity} because of a network error. Check your connection and try again.", + "notFound": "This {entity} no longer exists.", + "network": "We couldn't load the {entity}. Check your connection and try again.", "unknown": "We couldn't load the {entity}. Try again." }, "entityDetail": { @@ -401,7 +401,7 @@ "closeTab": "You can close this tab." }, "expired": { - "heading": "Link expired", + "heading": "Link Expired", "description": "This connection link has expired. Return to Slack and click Connect to Anypoint again to get a fresh link.", "closeTab": "You can close this tab." }, @@ -640,12 +640,12 @@ "successMessage": "Notification was created.", "creating": "Creating…", "createButton": "Create Notification", - "requiredHint": "Fields marked with * are required.", - "requiredAriaSuffix": "required", + "requiredHint": "* indicates a required field.", + "requiredAriaSuffix": "Required", "help": { - "targetService": "Start typing to filter, then use the arrow keys to highlight a result and Enter to select.", - "threshold": "The alert fires when the metric satisfies this comparison continuously for the selected duration.", - "alertName": "Use a short, descriptive name (4 or more characters). Shown in the notification list and email subjects." + "targetService": "Start typing to filter. Use the arrow keys to navigate and Enter to select.", + "threshold": "The alert fires when the metric meets this comparison continuously for the selected duration.", + "alertName": "Use a short, descriptive name (4 or more characters). This name appears in the notification list and email subjects." }, "targetServiceListboxLabel": "Available targets", "serviceTypeLabel": { @@ -688,8 +688,8 @@ "addRecipient": "Add at least one email recipient, or turn off email and use Slack.", "selectSlackChannel": "Select a Slack channel, or turn off Slack.", "noSlackChannels": "No Slack channels available. Connect Slack in Settings, then try again.", - "selectResponseCode": "Select a response code (or enter one) before creating this alert.", - "selectTarget": "Please select a target service before creating this alert." + "selectResponseCode": "Select or enter a response code.", + "selectTarget": "Select a target service." }, "slackChannel": "Slack channel", "defaultEmailSubject": "$'{'severity'}': $'{'api'}' $'{'condition'}'", @@ -826,7 +826,7 @@ "connectedTo": "Connected to {name}.", "continueButton": "Continue", "connectionNameLabel": "Connection Name", - "connectionNamePlaceholder": "e.g., Production Account - Marketing", + "connectionNamePlaceholder": "Production Account - Marketing", "descriptionLabel": "Description", "descriptionPlaceholder": "Add a description…", "importWarning": "All discovered services will be imported into the portfolio.", @@ -849,8 +849,8 @@ "mcpServers": "MCP Servers", "apis": "APIs", "noScanners": "No scanners for this provider yet.", - "noScannersAll": "No scanners configured yet.", - "addScannerPrompt": "Click {label} to get started.", + "noScannersAll": "No scanners configured yet", + "addScannerPrompt": "Select {label} to get started.", "addScannerPromptAll": "Select a provider from the sidebar, then click Add Scanner to get started.", "scannerCount": "{count} {count, plural, one {Scanner} other {Scanners}}", "servicesDiscovered": "{count} Services Discovered", @@ -1092,9 +1092,9 @@ "authTokenLabel": "Auth Token", "authTokenPlaceholder": "Enter auth token", "regionLabel": "Region", - "regionPlaceholder": "e.g. us-east-1", + "regionPlaceholder": "us-east-1", "orgIdLabel": "Organization / Account ID", - "orgIdPlaceholder": "e.g. 123456789", + "orgIdPlaceholder": "123456789", "websiteLabel": "Website URL", "websitePlaceholder": "https://…", "loadingGateways": "Loading gateways…", @@ -1333,9 +1333,9 @@ "authTokenLabel": "Auth Token", "authTokenPlaceholder": "Enter auth token", "regionLabel": "Region", - "regionPlaceholder": "e.g. us-east-1", + "regionPlaceholder": "us-east-1", "orgIdLabel": "Organization / Account ID", - "orgIdPlaceholder": "e.g. 123456789", + "orgIdPlaceholder": "123456789", "websiteLabel": "Website URL", "websitePlaceholder": "https://…", "loadingGateways": "Loading gateways…", @@ -1355,7 +1355,7 @@ }, "costManagement": { "heading": "Cost Management", - "subtitle": "Monitor usage and review optimization recommendations for your MCP servers" + "subtitle": "Monitor usage and get optimization recommendations for your MCP servers." }, "instanceDetailModal": { "closeDialog": "Close dialog", @@ -1504,19 +1504,19 @@ }, "policyMetadataFields": { "heading": "Policy Details", - "description": "Optional name + version + application conditions, matching Anypoint API Manager.", + "description": "Add an optional name, version, and application conditions.", "label": "Policy label", - "labelPlaceholder": "e.g. SLA Tier 1", - "labelHint": "Helps tell duplicate-applied policies apart in the policies list.", + "labelPlaceholder": "SLA Tier 1", + "labelHint": "Use labels to distinguish between multiple instances of the same policy.", "version": "Policy version", - "versionEmpty": "(No versions available)", - "versionHint": "Pick the policy-template version to apply.", + "versionEmpty": "No versions available", + "versionHint": "Select the version of this policy to apply.", "applicationConditions": "Application conditions", "applyAllRequests": "Apply to all requests", "applySpecific": "Apply only to specific resources", "method": "Method", "uriTemplateRegex": "URI template regex", - "addRowHint": "Add a row to limit this policy to specific HTTP requests.", + "addRowHint": "Add a condition to apply this policy to specific HTTP requests only.", "methodPlaceholder": "GET|POST", "uriPlaceholder": "/api/orders/.*", "removeCondition": "Remove condition", @@ -1537,9 +1537,9 @@ "applyPolicy": "Apply Policy", "wizardTitle": "Apply Policy", "viewTitle": "Policy Configuration", - "viewDescription": "Configuration values for {name}.", + "viewDescription": "Review and edit configuration values for {name}.", "discardModalTitle": "Discard changes and leave?", - "discardModalMessage": "You have unsaved changes. Are you sure you want to leave this page?", + "discardModalMessage": "Any unsaved changes will be discarded when you leave this page.", "discardModalConfirm": "Discard and Leave", "discardModalCancel": "Cancel", "actionsMenu": "Actions", @@ -1549,7 +1549,7 @@ "removePolicy": "Remove Policy", "disabledBadge": "Disabled", "removeModalTitle": "Remove {name}?", - "removeModalMessage": "Are you sure you want to remove this policy? This action cannot be undone and the change will take effect immediately.", + "removeModalMessage": "Removing this policy cannot be undone. The change takes effect immediately.", "removeModalConfirm": "Remove Policy", "removeModalCancel": "Cancel" }, @@ -1561,11 +1561,11 @@ "disable": "Disable", "enable": "Enable", "delete": "Delete", - "noFields": "No configuration values to display.", + "noFields": "This policy has no configurable values.", "checkboxEnabled": "Enabled", "checkboxDisabled": "Disabled", "valueEmpty": "—", - "saveChanges": "Save changes", + "saveChanges": "Save Changes", "cancel": "Cancel", "configurationJson": "Configuration JSON" }, @@ -1664,7 +1664,7 @@ "title": "Import Tools from MCP Server", "closeModal": "Close notification window", "connecting": "Connecting to MCP server…", - "noInstance": "No upstream URL found for this MCP server instance. Confirm the instance has a configured upstream before importing tools.", + "noInstance": "This MCP server instance has no upstream URL. Configure one before importing tools.", "authHint": "Check the authentication policies configured for this MCP server instance.", "noTools": "This MCP server has no tools available.", "selectAll": "Select All", @@ -1880,14 +1880,13 @@ }, "disableAutomatedPolicyModal": { "closeAriaLabel": "Close disable dialog", - "heading": "Disable Automated Policy", - "confirmMessage": "Are you sure you want to disable {name}?", - "bodyMessage": "Policies currently applied through this strategy will be removed from all services. You can re-enable this strategy later to reapply the policy.", - "disableButton": "Disable Automated Policy" + "heading": "Disable {name}?", + "bodyMessage": "All policies applied through this strategy will be removed. You can re-enable the strategy later.", + "disableButton": "Disable" }, "disabledAutomatedPolicyBanner": { - "automatedPolicy": "This automated policy is disabled. These services are not currently governed but will be once the policy is activated.", - "controls": "This control is disabled. These services are not currently governed but will be once the strategy is activated." + "automatedPolicy": "This automated policy is disabled. Activate it to govern these services.", + "controls": "This control is disabled. Activate the strategy to govern these services." }, "guardrailEvaluationPanel": { "runEvaluation": "Run profile evaluation", @@ -1989,8 +1988,8 @@ "searchPlaceholder": "Search {entity}…", "searchAriaLabel": "Search {entity}", "resultCount": "{filtered} of {total}", - "cardViewLabel": "Card view", - "tableViewLabel": "Table view", + "cardViewLabel": "Card View", + "tableViewLabel": "Table View", "sortLabels": { "nameAsc": "Name A–Z", "nameDesc": "Name Z–A", @@ -2006,17 +2005,17 @@ "statusDesc": "Status Z–A", "environmentAsc": "Environment A–Z", "environmentDesc": "Environment Z–A", - "routingStrategyAsc": "Routing strategy A–Z", - "routingStrategyDesc": "Routing strategy Z–A" + "routingStrategyAsc": "Routing Strategy A–Z", + "routingStrategyDesc": "Routing Strategy Z–A" } }, "entityCard": { "lastSynced": "Last synced {time}", "provisioningFailed": "Provisioning failed", - "complianceStatusLabel": "Compliance status: {status}", - "complianceStatusCompliant": "Conformant", - "complianceStatusNonCompliant": "Non-Conformant", - "complianceStatusPending": "Not Validated" + "complianceStatusLabel": "Compliance Status: {status}", + "complianceStatusCompliant": "Compliant", + "complianceStatusNonCompliant": "Noncompliant", + "complianceStatusPending": "Pending" }, "filterDropdown": { "clearAll": "Clear all" @@ -2061,7 +2060,7 @@ "clientProvider": "Client Provider", "clientProviderHelp": "Automatically derived from the selected gateway environment.", "instanceLabel": "Instance Label", - "instanceLabelPlaceholder": "e.g. production-v1", + "instanceLabelPlaceholder": "production-v1", "instanceLabelHelp": "Recommended when managing multiple instances of the same API.", "upstreamHeading": "Upstream", "upstreamHelp": "Where traffic is routed", @@ -2421,7 +2420,7 @@ "results": { "issuesFromRules": "{issueCount, plural, one {# issue} other {# issues}} from {ruleCount, plural, one {# rule} other {# rules}}", "issuesFromRulesets": "{issueCount, plural, one {# issue} other {# issues}} from {rulesetCount, plural, one {# ruleset} other {# rulesets}}", - "groupByRuleset": "Group By Ruleset", + "groupByRuleset": "Group by Ruleset", "expandAll": "Expand All", "collapseAll": "Collapse All", "noOccurrencesToDisplay": "No occurrences to display.", @@ -2472,12 +2471,12 @@ "fieldGroupId": "GroupId", "fieldAssetId": "AssetId", "fieldVersion": "Version", - "versionPlaceholder": "e.g. 2.0.1", + "versionPlaceholder": "2.0.1", "versionHintPrefix": "Version should use the", "versionHintLink": "SemVer", "versionHintSuffix": "format. Examples: 1.0.0 or 2.1.3", "fieldApiVersion": "API version", - "apiVersionPlaceholder": "e.g. v2", + "apiVersionPlaceholder": "v2", "fieldLifecycleState": "Lifecycle state", "lifecycleStable": "Stable", "lifecycleStableDesc": "Released and ready to consume", @@ -2711,8 +2710,8 @@ "tabConfiguration": "Configuration", "loadingTabContent": "Loading tab content…", "failedToDeleteAsset": "We couldn't delete the asset. Try again.", - "deleteMcpSuccess": "MCP server deleted", - "deleteMcpFailure": "Failed to delete MCP server: {message}", + "deleteMcpSuccess": "MCP server was deleted.", + "deleteMcpFailure": "We couldn't delete the MCP server. {message}", "entityLabel": { "agent": "Agent", "mcpServer": "MCP Server", @@ -2760,7 +2759,7 @@ "nameAriaLabel": "Name", "assetTypesAriaLabel": "Asset types", "mainFileAriaLabel": "Main file", - "mainFilePlaceholder": "Select a main file", + "mainFilePlaceholder": "Select a main file…", "apiVersionAriaLabel": "API version", "publishingApi": "Publishing API…", "waitingDeployment": "Waiting for deployment to complete", @@ -2773,7 +2772,7 @@ "searchPlaceholder": "Search entities…" }, "scannerSetup": { - "namePlaceholder": "e.g., Production Vertex Scanner", + "namePlaceholder": "Production Vertex Scanner", "descriptionPlaceholder": "Describe what this scanner monitors…", "emailPlaceholder": "user@example.com, team@example.com", "slackPlaceholder": "https://hooks.slack.com/services/…", @@ -2804,8 +2803,8 @@ "closeAriaLabel": "Close delete asset dialog", "titleWithEntity": "Delete {entityLabel}", "titleDefault": "Delete asset version", - "confirmMessage": "Are you sure you want to delete {assetName} {version}?", - "warningRemoveAsset": "Deleting this will remove the asset, its details page, and metadata from the catalog. This action cannot be undone.", + "confirmMessage": "You're about to delete {assetName} {version}?", + "warningRemoveAsset": "Deleting this asset removes it, its details page, and metadata from the catalog. This action can't be undone.", "warningGavReusable": "The asset in development will be deleted. Its GAV (group ID, asset ID, and version) will be reusable.", "warningLabel": "Warning:", "gavReusableCheckbox": "Allow the GAV (group ID, asset ID, and version) to be reusable.", @@ -2831,10 +2830,10 @@ "deleteScanner": "Delete Scanner" }, "dynamicCredentialsForm": { - "selectPlaceholder": "Select {field}", + "selectPlaceholder": "Select {field}…", "noAuthConfig": "No authentication configuration available for this provider.", - "showPassword": "Show password", - "hidePassword": "Hide password" + "showPassword": "Show Password", + "hidePassword": "Hide Password" }, "importRulesBuilder": { "valuePlaceholder": "Value", @@ -2924,15 +2923,15 @@ "confirmGatewayPatch": "Try the proposed gateway fix in the form?", "btnApplyProposedChanges": "Apply proposed changes", "approvalGate": { - "heading": "Confirmation required", - "redactionHint": "Credentials are not shown — they were redacted before this card was rendered.", + "heading": "Confirmation Required", + "redactionHint": "Credentials aren't shown for security reasons.", "btnApprove": "Approve", "btnReject": "Reject", "decisionApproved": "Approved", "decisionRejected": "Rejected" }, - "aiFeaturesNotEnabled": "Looks like AI features aren't turned on for your organization. Ask your administrator to turn on AI features in the connected Anypoint Platform and Salesforce orgs. After AI features are turned on, try again.", - "aiFeaturesNoPermission": "Looks like you don't have permission to use Ask MuleSoft in this business group. Ask your organization admin to assign you the Mule Developer Generative AI User permission, then try again.", + "aiFeaturesNotEnabled": "Looks like AI features aren't enabled on for your organization. Ask your administrator to enable AI features in the connected Anypoint Platform and Salesforce orgs, then try again.", + "aiFeaturesNoPermission": "Looks like you don't have permission to use Ask MuleSoft in this business group. Contact your organization admin to get the Mule Developer Generative AI User permission, then try again.", "aiFeaturesLearnMore": "Learn more", "working": "Working…" }, @@ -3266,12 +3265,12 @@ "appUninstalledExternally": "Slack app is no longer installed in your workspace. Install it again to enable Slack notifications.", "disconnectAdminNote": "The MuleSoft app will remain installed in your Slack workspace. To fully remove it, a Slack workspace admin needs to uninstall it from Slack.", "disconnectButton": "Disconnect", - "disconnectDialogTitle": "Are you sure you want to disconnect Slack?", - "disconnectSuccess": "Slack integration disconnected successfully", + "disconnectDialogTitle": "Disconnect Slack?", + "disconnectSuccess": "Slack integration was disconnected.", "disconnectWarningBody": "This will revoke MuleSoft's access to your Slack workspace. You'll stop receiving notifications immediately and won't be able to message the MuleSoft Agent.", - "disconnecting": "Disconnecting...", - "failedToDisconnect": "Failed to disconnect Slack integration", - "notInstalledPermissionHint": "You may need Slack admin permissions to install this app into your organization's Slack workspace, otherwise you can send a request." + "disconnecting": "Disconnecting…", + "failedToDisconnect": "We couldn't disconnect the Slack integration. Try again.", + "notInstalledPermissionHint": "Installing this app may require Slack admin permissions. If you don't have them, send a request." }, "auth": { "loginFailed": "We couldn't sign you in. Try again.", @@ -3310,23 +3309,23 @@ "operatorIncludesAnyCategory": "Includes Any Category", "operatorHasNoInstance": "Has No Instance", "operatorIs": "Is", - "selectServicesToGovern": "Select Services To Govern", + "selectServicesToGovern": "Select Services to Govern", "apisAgentsMcpServers": "APIs, Agents, MCP Servers", "gateways": "Gateways", "flexGateways": "Omni Gateways", "flexGatewaysDescription": "Enforce governance standards across Omni Gateway configurations.", "selectFilterCriteria": "Select Filter Criteria", "filterCriteriaDescription": "Specify conditions to target the APIs, Agents, and MCP Servers you want to govern.", - "structuredFormSubtitle": "Configure scope criteria to identify services governed by this strategy. All criteria are combined to narrow the scope.", - "serviceTypeSelectAll": "Select the service types to govern", + "structuredFormSubtitle": "Select criteria to identify services governed by this strategy. Multiple criteria narrow the scope.", + "serviceTypeSelectAll": "Select the service types to govern.", "tagsLabel": "Tags", - "tagsHint": "Filter by tags to narrow scope", - "tagsPlaceholder": "Select tags...", + "tagsHint": "Select tags to filter which services are governed.", + "tagsPlaceholder": "Select tags…", "categoriesLabel": "Categories", - "categoriesHint": "Filter by categories to narrow scope", - "categoriesPlaceholder": "Select categories...", + "categoriesHint": "Select categories to filter which services are governed.", + "categoriesPlaceholder": "Select categories…", "instancesLabel": "Instances", - "instancesHint": "Filter by instance environment to narrow scope", + "instancesHint": "Select the instance environment to filter which services are governed.", "deploymentAnyEnvironment": "Any environment", "deploymentSpecificEnvironments": "Specific environments", "deploymentNoInstances": "No instances", @@ -3349,11 +3348,11 @@ "selectOneRuntime": "Select one runtime.", "muleRuntimeDescription": "Define Mule runtime version range for automated policy application.", "runtimeRangeFrom": "Runtime range from", - "runtimeRangeFromPlaceholder": "e.g. 4.1.1", + "runtimeRangeFromPlaceholder": "4.1.1", "runtimeRangeTo": "Runtime range to", - "runtimeRangeToPlaceholder": "e.g. 4.3.x", - "runtimeRangeInvalidVersion": "Use digits and dots, e.g. 4.4.0", - "runtimeRangeFromGreaterThanTo": "Range \"from\" must be less than or equal to \"to\"", + "runtimeRangeToPlaceholder": "4.3.x", + "runtimeRangeInvalidVersion": "Enter a valid version number. For example: 4.4.0", + "runtimeRangeFromGreaterThanTo": "The starting version must be less than or equal to the ending version.", "endpointTypes": "Endpoint Types", "allEndpointTypes": "All endpoint types", "chooseSpecificGroups": "Choose specific endpoint groups", @@ -3409,16 +3408,14 @@ "profileSummaryFallback": "Includes the selected ruleset checks for this profile.", "policyVersionPrefix": "Policy: ", "allPolicyVersions": "All policy versions", - "policyVersionPrefix": "Policy: ", - "allPolicyVersions": "All policy versions", - "loadingPolicyConfig": "Loading policy configuration...", + "loadingPolicyConfig": "Loading policy configuration…", "selectedPolicy": "Selected Policy", "noPolicySelected": "No policy selected", "configurePolicy": "Configure Policy", "noPolicyInputsRequired": "This policy doesn't require configuration inputs.", - "allRuntimesMissingMule": "Currently this policy version doesn't support Mule runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Mule gateways APIs.", - "allRuntimesMissingFlex": "Currently this policy version doesn't support Flex runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Flex gateways APIs.", - "allRuntimesMissingBoth": "Currently this policy version doesn't support Flex or Mule runtime. In case an implementation is added to the policy, you'll be able to check for updates, and cover Flex or Mule gateways APIs.", + "allRuntimesMissingMule": "This policy version doesn't support Mule runtime yet.", + "allRuntimesMissingFlex": "This policy version doesn't support Flex runtime yet.", + "allRuntimesMissingBoth": "This policy version doesn't support Flex or Mule runtime yet.", "severity": "Severity" }, "review": { @@ -3536,15 +3533,15 @@ "emptyStateTitle": "No policies applied", "emptyStateDescription": "This instance has no policies applied. Add a policy to start protecting it.", "enablePolicy": "Enable Policy", - "removePolicyDialogBodyMessage": "This will detach the policy from this instance. Traffic that was being filtered by this policy will no longer be enforced.", + "removePolicyDialogBodyMessage": "This removes the policy from this instance. The policy will no longer filter traffic.", "removePolicyDialogCancelButton": "Cancel", "removePolicyDialogCloseAriaLabel": "Close remove policy dialog", "removePolicyDialogConfirmButton": "Remove Policy", - "removePolicyDialogConfirmMessage": "Are you sure you want to remove {name}?", - "removePolicyDialogHeading": "Remove policy", - "removePolicyToastSuccess": "Removed {name}.", - "enablePolicyToastSuccess": "Enabled {name}.", - "disablePolicyToastSuccess": "Disabled {name}." + "removePolicyDialogConfirmMessage": "Remove {name}?", + "removePolicyDialogHeading": "Remove {name}?", + "removePolicyToastSuccess": "Policy {name} was removed.", + "enablePolicyToastSuccess": "Policy {name} was enabled.", + "disablePolicyToastSuccess": "Policy {name} was disabled." }, "policiesTab": { "policyFallback": "Policy", @@ -3561,7 +3558,7 @@ "emptyStateTitle": "No instances yet", "emptyStateDescription": "Policy coverage appears once this service has at least one active instance. Create an instance to start applying policies.", "deletePolicy": "Delete Policy", - "areYouSureToDelete": "Are you sure you want to delete {policy} from this instance?" + "areYouSureToDelete": "Delete {policy} from this instance?" }, "versionsTab": { "latest": "Latest", @@ -3747,7 +3744,7 @@ "filterFieldLlmUsed": "LLM Used", "filterOperatorIncludes": "includes", "filterOperatorExcludes": "excludes", - "namePlaceholder": "e.g., Production Vertex Scanner", + "namePlaceholder": "Production Vertex Scanner", "descriptionPlaceholder": "Describe what this scanner monitors…", "valuesPlaceholder": "Values…" }, @@ -3831,7 +3828,7 @@ "utterancesRequired": "Enter at least one utterance.", "utterancesLineCap": "At most {max} utterance lines allowed for this semantic service scale.", "closeAriaLabel": "Close", - "namePlaceholder": "e.g. billing-queries", + "namePlaceholder": "billing-queries", "utterancesTooltip": "Example prompts for this topic; one per line is typical.", "utterancesPlaceholder": "Type prompt utterances here…", "uploadUtterances": "Upload utterances", @@ -3888,7 +3885,7 @@ "embeddingSection": { "heading": "Embedding connection", "providerLabel": "Embedding service provider", - "serviceLabelPlaceholder": "e.g. Production embeddings", + "serviceLabelPlaceholder": "Production embeddings", "authKeyPlaceholderNew": "Enter auth key", "authKeyPlaceholderEdit": "Enter new auth key", "hidePassword": "Hide password", @@ -3902,7 +3899,7 @@ "vectorSection": { "heading": "Vector connection", "providerLabel": "Vector Database provider", - "serviceLabelPlaceholder": "e.g. Production vector search", + "serviceLabelPlaceholder": "Production vector search", "apiKeyPlaceholderNew": "Enter API key", "apiKeyPlaceholderEdit": "Enter new API key" }, @@ -4096,7 +4093,7 @@ "doesntMatch": "Doesn't Match" }, "createServiceEntityForm": { - "namePlaceholder": "e.g. Customer Support {placeholder}", + "namePlaceholder": "Customer Support {placeholder}", "specificationFile": "Specification File", "selectAnOption": "Select an option", "zipValueFromExchangeJson": "Value comes from the ZIP’s exchange.json.", @@ -4106,7 +4103,7 @@ "nameLabel": "Name", "nameFromZipHint": "Name comes from the ZIP’s exchange.json.", "versionLabel": "Version", - "versionPlaceholder": "e.g. v2", + "versionPlaceholder": "v2", "creatingEntity": "Creating {entity}…", "cancel": "Cancel", "nameFromZipPrefix": "Name comes from the ZIP’s ", @@ -4509,7 +4506,7 @@ "fallbackRouteTooltip": "When the primary route is unavailable, traffic will be directed to this fallback route.", "semanticThresholdDesc": "When semantic match fails or accuracy is less than:", "semanticThresholdTooltip": "Set the confidence threshold below which the fallback route is used.", - "modelPlaceholder": "e.g., anthropic.claude-3-5-sonnet-v2:0", + "modelPlaceholder": "anthropic.claude-3-5-sonnet-v2:0", "notApplicable": "Not Applicable", "promptGuardLabel": "Semantic prompt guard", "promptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route.", @@ -4527,7 +4524,7 @@ "routesConfigured": "{count, plural, one {# route configured} other {# routes configured}}", "fallbackRoute": "Fallback route", "semanticMatchFailsPrefix": "When semantic match fails or accuracy is less than:", - "fallbackModelPlaceholder": "e.g., anthropic.claude-3-5-sonnet-v2:0", + "fallbackModelPlaceholder": "anthropic.claude-3-5-sonnet-v2:0", "semanticPromptGuard": "Semantic prompt guard", "semanticPromptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route.", "editEntryAriaLabel": "Edit {name}", @@ -4550,7 +4547,7 @@ "targetHeading": "Target", "providerLabel": "Provider", "modelLabel": "Model", - "modelPlaceholder": "e.g., anthropic.claude-3-5-sonnet-v2:0", + "modelPlaceholder": "anthropic.claude-3-5-sonnet-v2:0", "notApplicable": "Not Applicable", "authenticationHeading": "Authentication", "configurationHeading": "Configuration", @@ -4708,11 +4705,11 @@ "labelCategories": "Categories", "labelInstances": "Instances", "allServiceTypes": "All", - "anyTag": "Any tag", - "anyCategory": "Any category", - "anyEnvironment": "Any environment", - "noInstances": "No instances", - "anyEnvironmentsOfType": "Any {type} environments", + "anyTag": "Any Tag", + "anyCategory": "Any Category", + "anyEnvironment": "Any Environment", + "noInstances": "No Instances", + "anyEnvironmentsOfType": "Any {type} Environments", "envTypeWithNames": "{type}: {names}" }, "governanceSettings": { @@ -4736,11 +4733,11 @@ "heading": "Governance Strategies", "pageDescription": "Configure and manage strategies to monitor, report, enforce, and block noncompliant activity across your services.", "createButton": "Create governance strategy", - "refreshReportButton": "Refresh report", + "refreshReportButton": "Refresh Report", "refreshing": "Refreshing…", "refreshQueued": "Report refresh queued. Conformance status will update shortly.", "refreshBusy": "Another refresh is already running. Try again once it completes.", - "refreshFailed": "Unable to trigger report refresh right now.", + "refreshFailed": "We couldn't refresh the report. Try again.", "scopeType": { "restApi": "REST API", "httpApi": "HTTP API", @@ -4786,8 +4783,8 @@ "fromAnypointCreated": "Strategy was created from Anypoint Platform.", "strategyUpdated": "Strategy was updated.", "fromAnypointUpdated": "Strategy was updated from Anypoint Platform.", - "guardrailDeleted": "Control deleted.", - "automatedPolicyDeleted": "Automated policy deleted." + "guardrailDeleted": "Control was deleted.", + "automatedPolicyDeleted": "Automated policy was deleted." }, "pending": { "guardrailCreating": "Creating your control — this may take a moment.", @@ -4817,7 +4814,7 @@ "review": "Review" }, "scope": { - "heading": "Select Services To Govern", + "heading": "Select Services to Govern", "apisAgentsMcp": "APIs, Agents, MCP Servers", "gateways": "Gateways", "serviceTypesLabel": "Service Types", @@ -4834,7 +4831,7 @@ "apiInstanceHeading": "API Instance", "allApis": "All APIs", "onlyWithInstances": "Include only APIs with instances", - "onlyWithoutInstances": "Only APIs without instances", + "onlyWithoutInstances": "Include only APIs without instances", "loadingPreview": "Loading Scope Preview…", "previewButton": "Preview Governed Scope" }, @@ -4926,7 +4923,7 @@ "createdLabel": "Created", "updatedLabel": "Updated", "ruleCount": "{count} ({total} {total, plural, one {rule} other {rules}})", - "limitedFunctionalityTitle": "Limited Functionality for From Anypoint Controls", + "limitedFunctionalityTitle": "Limited Functionality for from Anypoint Controls", "limitedFunctionalityDetail": "This control was created in Anypoint API Governance and has limited ruleset selection and customization options. To access advanced features like conditions configuration, rule-level selection, severity customization, and the full ruleset library, create a new control directly in the enhanced MuleSoft experience.", "configurationTab": "Configuration", "governedServicesTab": "Governed Services", @@ -4986,9 +4983,9 @@ "stepSelectSource": "Select Source, Instance & Tools", "stepSaasCredentials": "SaaS Credentials", "stepReview": "Review", - "toastApiMissingInstanceUrl": "\"{apiName}\" can't be wrapped as an MCP server yet: the selected API Manager instance has no endpoint URL. Deploy the instance in API Manager (attach a runtime) and try again.", - "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply an Omni Gateway inbound auth policy (for example, client-id-enforcement or jwt-validation) before production use.", - "gatewayLoadErrorHeading": "Unable to load gateways", + "toastApiMissingInstanceUrl": "\"{apiName}\" can't be wrapped as an MCP server yet. The selected API Manager instance has no endpoint URL. Deploy the instance in API Manager and try again.", + "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply an Omni Gateway inbound auth policy (such as client-id-enforcement or jwt-validation) before production use.", + "gatewayLoadErrorHeading": "Unable to Load Gateways", "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", "retryButton": "Retry" }, @@ -5042,11 +5039,11 @@ "routeLabel": "Route label", "routeTooltip": "Specifies the upstream service to be called when this tool is invoked.", "secretGroupLabel": "Secret Group", - "secretGroupPlaceholder": "Select a Secret Group", + "secretGroupPlaceholder": "Select a Secret Group…", "tlsLabel": "TLS Context", "tlsOptional": "(Optional)", "tlsNone": "None", - "tlsContextPlaceholder": "Select a TLS Context", + "tlsContextPlaceholder": "Select a TLS Context…", "tlsNoResults": "No results found", "cancel": "Cancel", "save": "Save" @@ -5147,7 +5144,7 @@ "closeAriaLabel": "Close", "serverNameLabel": "Server Name", "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL.", - "serverNamePlaceholder": "e.g., SalesOperationsMCPServer", + "serverNamePlaceholder": "SalesOperationsMCPServer", "serverNameHelperText": "This name identifies your MCP server and becomes the subdomain for your server's URL.", "serverNameConflict": "That server name is already taken. Enter a unique name.", "versionLabel": "Version", @@ -5155,7 +5152,7 @@ "versionHelperText": "Semantic version for this MCP server (e.g., 1.0.0, v2.1.3)", "pathLabel": "Path", "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway.", - "pathPlaceholder": "e.g., /my-mcp-server", + "pathPlaceholder": "/my-mcp-server", "pathHelperText": "Base path on the gateway (derived from server name)", "pathConflict": "That path is already in use. Enter a unique path.", "pathLockedNote": "Path cannot be changed after deployment.", @@ -5299,21 +5296,21 @@ "routeLabel": "Route label", "routeLabelTooltip": "Specifies the upstream service to be called when this tool is invoked.", "secretGroupLabel": "Secret Group", - "secretGroupPlaceholder": "Select a Secret Group", + "secretGroupPlaceholder": "Select a Secret Group…", "tlsLabel": "TLS Context", "optional": "(Optional)", "tlsNone": "None", - "tlsContextPlaceholder": "Select a TLS Context", + "tlsContextPlaceholder": "Select a TLS Context…", "tlsNoResults": "No results found", "saveButton": "Save", "serverConfigTitle": "Server Configuration", "serverName": "Server Name", "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL.", - "serverNamePlaceholder": "e.g., SalesOperationsMCPServer", + "serverNamePlaceholder": "SalesOperationsMCPServer", "serverNameHelp": "This name identifies your MCP server and becomes the subdomain for your server's URL.", "serverNameConflict": "That server name is already taken. Enter a unique name.", "versionLabel": "Version", - "versionPlaceholder": "e.g., 1.0.0", + "versionPlaceholder": "1.0.0", "versionHelp": "Semantic version for this MCP server (e.g., 1.0.0, v2.1.3)", "pathLabel": "Path", "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway.", @@ -5486,7 +5483,7 @@ "copyPublicEndpoint": "Copy public endpoint", "copyInternalEndpoint": "Copy internal endpoint", "endpointCopied": "Endpoint copied to clipboard.", - "endpointCopyFailed": "We couldn't copy the endpoint to clipboard.", + "endpointCopyFailed": "We couldn't copy the endpoint to the clipboard.", "loadingValue": "Loading {name}" }, "filterableMultiSeriesChart": { @@ -5500,9 +5497,9 @@ "enterGeminiKey": "Enter Gemini API key", "enterAzureKey": "Enter Azure OpenAI API key", "deploymentId": "Deployment ID", - "deploymentIdPlaceholder": "e.g., gpt-4-deployment", + "deploymentIdPlaceholder": "gpt-4-deployment", "apiVersion": "API Version", - "apiVersionPlaceholder": "e.g., 2024-10-21", + "apiVersionPlaceholder": "2024-10-21", "accessKeyId": "Access Key ID", "enterAccessKeyId": "Enter AWS Access Key ID", "secretAccessKey": "Secret Access Key", @@ -5781,7 +5778,7 @@ "editStrategyButton": "Edit Strategy", "backButton": "Back", "selectedStrategyUnavailable": "Selected strategy is unavailable.", - "bridgeOpenCreateAccepted": "Opened the Create Control wizard." + "bridgeOpenCreateAccepted": "Create Control wizard opened." }, "notFound": { "heading": "We couldn't find that page", @@ -5800,7 +5797,7 @@ "missingPending": "Missing install identifier. Please start the Slack installation again.", "noOrganization": "No organization selected in this browser session.", "adminRequired": "Only an organization administrator can install the Slack integration.", - "installFailed": "Failed to install Slack integration", + "installFailed": "We couldn't install the Slack integration.", "needsLogin": { "heading": "Install Slack Integration", "description": "Sign in to Anypoint first. After signing in, the Slack installation will complete automatically.", @@ -5808,12 +5805,12 @@ }, "success": { "heading": "Slack Installed Successfully", - "description": "The Slack integration has been installed for your organization.", - "descriptionWithWorkspace": "The Slack integration has been installed and connected to the {workspace} workspace.", + "description": "The Slack integration was installed for your organization.", + "descriptionWithWorkspace": "The Slack integration was installed and connected to the {workspace} workspace.", "goToSettings": "Go to Notification Settings" }, "expired": { - "heading": "Install link expired", + "heading": "Install Link Expired", "description": "This installation link has expired. Please click Add to Slack again to start a new installation." }, "error": { From 1eda5c1a53ae53ff58b591ff4309c04895b59f02 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 20 May 2026 17:38:29 -0700 Subject: [PATCH 04/15] Remove please --- modules/ROOT/assets/ui-text-review/en.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 099305b82..964507fd4 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -4958,7 +4958,7 @@ "noGatewaysHeading": "No Omni Gateways Available", "noGatewaysDescription": "MCP servers require an Omni Gateway (v1.2.0+) to deploy. Provision an Omni Gateway in your environment first, then return here to create your MCP server.", "gatewayLoadErrorHeading": "Unable to Load Gateways", - "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue — please try again.", + "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", "retryButton": "Retry", "backToMcpServers": "Back to MCP Servers", "cancelButton": "Cancel", @@ -5794,7 +5794,7 @@ "keepEditingButton": "Keep Editing" }, "slackInstall": { - "missingPending": "Missing install identifier. Please start the Slack installation again.", + "missingPending": "Missing install identifier. Start the Slack installation again.", "noOrganization": "No organization selected in this browser session.", "adminRequired": "Only an organization administrator can install the Slack integration.", "installFailed": "We couldn't install the Slack integration.", @@ -5811,7 +5811,7 @@ }, "expired": { "heading": "Install Link Expired", - "description": "This installation link has expired. Please click Add to Slack again to start a new installation." + "description": "This installation link has expired. Click Add to Slack again to start a new installation." }, "error": { "heading": "Installation failed" From 48921f90b0673ad00452ca63149bce19f092deb3 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Thu, 21 May 2026 08:40:52 -0700 Subject: [PATCH 05/15] review --- modules/ROOT/assets/ui-text-review/en.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 964507fd4..148274e5c 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -697,7 +697,7 @@ "errorMissingOrgOrUser": "Enter your organization and user information.", "errorSelectEnvironment": "Select an environment.", "errorEnableChannel": "Enable at least one delivery channel (email or Slack).", - "noInstancesInEnvironment": "there are no instances in this environment.", + "noInstancesInEnvironment": "There are no instances in this environment.", "noMatches": "No matches found" }, "notifications": { @@ -2992,12 +2992,12 @@ "filterOptimized": "Optimized", "filterNotOptimized": "Not optimized", "applyFilters": "Apply Filters", - "headerInstance": "Service & instance", - "headerTokensPerCall": "Tokens / call", - "headerTotalTokens": "Total tokens", + "headerInstance": "Service & Instance", + "headerTokensPerCall": "Tokens/Call", + "headerTotalTokens": "Total Tokens", "totalTokensInfoAriaLabel": "Token count information", "totalTokensTooltip": "Estimated token count for this instance. The value in parentheses shows the share of total MCP server tokens consumed over the last 30 days.", - "headerTokensSaved": "Tokens saved", + "headerTokensSaved": "Tokens Saved", "headerOptimized": "Optimized", "headerActions": "Actions", "emptyState": "No instances match your search or filters.", From 0533343468700b7f671fd327e3a58513261bd99a Mon Sep 17 00:00:00 2001 From: Luana Dos Santos <84200607+luanamulesoft@users.noreply.github.com> Date: Thu, 21 May 2026 14:38:10 -0300 Subject: [PATCH 06/15] Update en.json --- modules/ROOT/assets/ui-text-review/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 148274e5c..ec5c7f6df 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -4732,7 +4732,7 @@ "loadingAriaLabel": "Loading governance configuration", "heading": "Governance Strategies", "pageDescription": "Configure and manage strategies to monitor, report, enforce, and block noncompliant activity across your services.", - "createButton": "Create governance strategy", + "createButton": "Create Governance Strategy", "refreshReportButton": "Refresh Report", "refreshing": "Refreshing…", "refreshQueued": "Report refresh queued. Conformance status will update shortly.", From 2a48a2c07b3c5d309b8fbc1acadb404610a5b693 Mon Sep 17 00:00:00 2001 From: Luana Dos Santos <84200607+luanamulesoft@users.noreply.github.com> Date: Thu, 21 May 2026 16:41:27 -0300 Subject: [PATCH 07/15] Update en.json --- modules/ROOT/assets/ui-text-review/en.json | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index ec5c7f6df..452a9640b 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -1538,8 +1538,8 @@ "wizardTitle": "Apply Policy", "viewTitle": "Policy Configuration", "viewDescription": "Review and edit configuration values for {name}.", - "discardModalTitle": "Discard changes and leave?", - "discardModalMessage": "Any unsaved changes will be discarded when you leave this page.", + "discardModalTitle": "Leave this page?", + "discardModalMessage": "Any unsaved changes are discarded when you leave the page.", "discardModalConfirm": "Discard and Leave", "discardModalCancel": "Cancel", "actionsMenu": "Actions", @@ -1549,7 +1549,7 @@ "removePolicy": "Remove Policy", "disabledBadge": "Disabled", "removeModalTitle": "Remove {name}?", - "removeModalMessage": "Removing this policy cannot be undone. The change takes effect immediately.", + "removeModalMessage": "If you remove this policy, you can't undo it. The change takes effect immediately.", "removeModalConfirm": "Remove Policy", "removeModalCancel": "Cancel" }, @@ -1872,7 +1872,7 @@ "closeAriaLabel": "Close delete dialog", "heading": "Delete {typeLabel}", "confirmMessage": "Delete {name}?", - "bodyMessage": "Deleting this {bodyNoun} permanently removes it. Services governed by this {bodyNoun} are no longer validated against its rules.", + "bodyMessage": "Deleting this {bodyNoun} permanently removes it. Services governed by it this {bodyNoun} are no longer validated against its rules.", "deleting": "Deleting…", "deleteButton": "Delete {typeLabel}", "typeAutomatedPolicy": "Automated Policy", @@ -1881,7 +1881,7 @@ "disableAutomatedPolicyModal": { "closeAriaLabel": "Close disable dialog", "heading": "Disable {name}?", - "bodyMessage": "All policies applied through this strategy will be removed. You can re-enable the strategy later.", + "bodyMessage": "Disabling this strategy removes all applied policies. You can re-enable it later.", "disableButton": "Disable" }, "disabledAutomatedPolicyBanner": { @@ -3481,12 +3481,12 @@ "stepDescRulesGuardrails": "Select bundled rulesets or individual rules to apply to the defined scope. We validate these rules against services to generate reports, block actions, and evaluate compliance.", "stepDescNameDescription": "Enter a unique name and description to identify this strategy profile.", "stepDescReview": "Review your governance strategy configuration before saving.", - "editWizardTitle": "Edit Control Wizard", - "createWizardTitle": "Create Control Wizard", + "editWizardTitle": "Edit Control Setup Flow", + "createWizardTitle": "Create Control Setup Flow", "editWizardDescription": "Adjust scope and rules, then review before saving changes.", "createWizardDescription": "Configure scope, choose rules, and review before publishing profile settings.", "previous": "Previous", - "createAndActivate": "Create and activate strategy", + "createAndActivate": "Create and Activate Strategy", "saveGuardrail": "Save Control", "strategyNameLabel": "Strategy Name", "strategyNamePlaceholder": "Enter a name…", @@ -5778,7 +5778,7 @@ "editStrategyButton": "Edit Strategy", "backButton": "Back", "selectedStrategyUnavailable": "Selected strategy is unavailable.", - "bridgeOpenCreateAccepted": "Create Control wizard opened." + "bridgeOpenCreateAccepted": "Create Control setup flow opened." }, "notFound": { "heading": "We couldn't find that page", @@ -5788,10 +5788,10 @@ "unsavedChangesModal": { "closeAriaLabel": "Close unsaved changes dialog", "heading": "Discard unsaved changes?", - "confirmMessage": "You have unsaved changes that will be lost.", - "bodyMessage": "If you leave now, your in-progress configuration will not be saved.", - "discardButton": "Discard Changes", - "keepEditingButton": "Keep Editing" + "confirmMessage": "If you discard your changes, you can't get them back.", + "bodyMessage": "Any unsaved changes are discarded when you leave the page.", + "discardButton": "Discard", + "keepEditingButton": "Cancel" }, "slackInstall": { "missingPending": "Missing install identifier. Start the Slack installation again.", From 14acf8ac723ae443bd93ec4868631fe9f7e8d37b Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Thu, 21 May 2026 13:39:35 -0700 Subject: [PATCH 08/15] Changing Flex to Omni again. --- modules/ROOT/assets/ui-text-review/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 452a9640b..ecf23e310 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -2509,11 +2509,11 @@ "exposeAsMcpServer": "Expose as MCP Server", "manage": "Manage", "managedTooltipBeforeFlex": "Instances from ", - "managedTooltipFlexStrong": "Flex gateways", + "managedTooltipFlexStrong": "Omni gateways", "managedTooltipBetween": " have full read/write support for data and governance. For instances from ", "managedTooltipFederatedStrong": "federated gateways", "managedTooltipAfterFederated": ", support depends on gateway settings.", - "managedTooltipAria": "Instances from Flex gateways have full read/write support for data and governance. For instances from federated gateways, support depends on gateway settings.", + "managedTooltipAria": "Instances from Omni gateways have full read/write support for data and governance. For instances from federated gateways, support depends on gateway settings.", "unmanagedTargetsTooltip": "External endpoints registered in Exchange without a managed gateway.", "unmanagedTooltip": "These endpoints have no known gateways and are not shown elsewhere. Manage them to add support for authentication, monitoring, and governance.", "viewGatewayTitle": "View {name} gateway" From e7ca8c37da30f40746b6efd720a1b1c7d68ae6c0 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Thu, 21 May 2026 14:27:52 -0700 Subject: [PATCH 09/15] Reconciling changes from prod repo (as of 5/21). --- modules/ROOT/assets/ui-text-review/en.json | 39 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index ecf23e310..b852645bd 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -211,6 +211,9 @@ "deployInstance": "Deploy Instance" }, "createLlmProxyPage": { + "routeNameFallback": "Route {letter}", + "deleteBlockedModelBased": "Model-based routing requires at least one route.", + "deleteBlockedSemantic": "Semantic routing requires at least two routes.", "heading": "Create an LLM Proxy", "description": "Register an LLM proxy: choose a gateway, then connect providers and routing.", "proxyNameLabel": "Proxy Name", @@ -343,7 +346,12 @@ "signInFailed": "We couldn't sign you in. Try again.", "backToLogin": "Back to login" }, + "appShell": { + "skipToMain": "Skip to main content", + "mainContent": "Main content" + }, "leftNav": { + "landmarkLabel": "Primary", "home": "Home", "portfolio": "Portfolio", "agents": "Agents", @@ -380,6 +388,7 @@ "closeSidebar": "Close sidebar" }, "aiSidebar": { + "landmarkLabel": "Ask MuleSoft", "closeAiSidebar": "Close AI sidebar" }, "dragHandle": { @@ -1881,6 +1890,7 @@ "disableAutomatedPolicyModal": { "closeAriaLabel": "Close disable dialog", "heading": "Disable {name}?", + "confirmMessage": "Disable {name}?", "bodyMessage": "Disabling this strategy removes all applied policies. You can re-enable it later.", "disableButton": "Disable" }, @@ -2015,7 +2025,8 @@ "complianceStatusLabel": "Compliance Status: {status}", "complianceStatusCompliant": "Compliant", "complianceStatusNonCompliant": "Noncompliant", - "complianceStatusPending": "Pending" + "complianceStatusPending": "Pending", + "viewConformanceReport": "View {status} conformance report" }, "filterDropdown": { "clearAll": "Clear all" @@ -2389,6 +2400,14 @@ "governanceReportTab": { "notValidatedTitle": "No governance rules applied", "notValidatedDescription": "No governance rules apply to this service. Add a governance strategy to start enforcing standards.", + "notValidatedInstanceDescription": "No governance rules apply to this instance. Add a governance strategy to start enforcing standards.", + "noErrorsFoundTitle": "No errors found", + "noErrorsFoundDescription": "Governance rules ran on this service and reported no findings.", + "noErrorsFoundInstanceDescription": "Governance rules ran on this instance and reported no findings.", + "pendingEvaluationTitle": "Pending evaluation", + "pendingEvaluationDescription": "Governance evaluation is in progress. Check back in a moment.", + "instanceLevelOnlyTitle": "No service-level errors", + "instanceLevelOnlyDescription": "This service's conformance status reflects instance-level checks. Open the Instances tab to see the per-instance findings.", "loadingConformance": "Loading conformance report…", "noGovernanceReport": "No governance report available for this API.", "reportDetails": "Report Details", @@ -2443,9 +2462,7 @@ "severityWarning": "Warning", "severityInfo": "Info" }, - "goToGovernanceStrategies": "Go to Governance Strategies", - "pendingEvaluationTitle": "Evaluating governance rules…", - "pendingEvaluationDescription": "This service hasn't been evaluated yet. Results will appear shortly." + "goToGovernanceStrategies": "Go to Governance Strategies" }, "governanceReportControls": { "latest": "(Latest)", @@ -3329,6 +3346,11 @@ "deploymentAnyEnvironment": "Any environment", "deploymentSpecificEnvironments": "Specific environments", "deploymentNoInstances": "No instances", + "environmentTypeLabel": "Environment Type", + "environmentTypeAny": "Any", + "environmentTypeProduction": "Production", + "environmentTypeSandbox": "Sandbox", + "environmentNameLabel": "Environment Name (optional)", "comingSoon": "Coming soon", "noTagsAvailable": "No tags available", "noCategoriesAvailable": "No categories available", @@ -4491,6 +4513,8 @@ "dropHintInitial": "or drag and drop a file here" }, "routeListEditor": { + "deleteBlockedModelBased": "Model-based routing requires at least one route.", + "deleteBlockedSemantic": "Semantic routing requires at least two routes.", "noFallback": "No fallback", "routingStrategyLabel": "Routing strategy", "routingStrategyTooltip": "Model-based routes by model parameter. Semantic routes by prompt content.", @@ -4939,6 +4963,9 @@ "collapseAll": "Collapse all", "expandAll": "Expand all", "noRulesets": "No rulesets configured for this strategy.", + "creatingPlaceholder": "Strategy is being created. Rules will appear here once the publication completes.", + "updatingPlaceholder": "Strategy is being updated. Rules will refresh here once the publication completes.", + "failedPlaceholder": "We couldn't publish the strategy. Try again.", "editFromAnypoint": "Edit (From Anypoint Platform)", "editStrategy": "Edit Strategy", "back": "Back", @@ -5206,6 +5233,9 @@ }, "llmProxyRoutesEditor": { "failedToSaveChanges": "We couldn't save your changes. Try again.", + "routeNameFallback": "Route {letter}", + "deleteBlockedModelBased": "Model-based routing requires at least one route.", + "deleteBlockedSemantic": "Semantic routing requires at least two routes.", "toast": { "topicCreated": "Topic \"{name}\" was created.", "topicCreatedFallback": "Topic was created.", @@ -5496,6 +5526,7 @@ "enterOpenAiKey": "Enter OpenAI API key", "enterGeminiKey": "Enter Gemini API key", "enterAzureKey": "Enter Azure OpenAI API key", + "azureUrlHint": "Enter your Azure OpenAI endpoint, such as https://my-test-resource.openai.azure.com/.", "deploymentId": "Deployment ID", "deploymentIdPlaceholder": "gpt-4-deployment", "apiVersion": "API Version", From 1e16c7785c69235d8bfd37e3046065bbac913259 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Tue, 26 May 2026 11:47:44 -0700 Subject: [PATCH 10/15] reconciling changes from prod repo (as of 5/26 8:22am) --- modules/ROOT/assets/ui-text-review/en.json | 38 +++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index b852645bd..ba6af2a92 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -1364,7 +1364,7 @@ }, "costManagement": { "heading": "Cost Management", - "subtitle": "Monitor usage and get optimization recommendations for your MCP servers." + "subtitle": "Monitor usage and review optimization recommendations for your MCP servers" }, "instanceDetailModal": { "closeDialog": "Close dialog", @@ -1514,6 +1514,7 @@ "policyMetadataFields": { "heading": "Policy Details", "description": "Add an optional name, version, and application conditions.", + "automatedDescription": "Label, version, and rule of application for this automated policy.", "label": "Policy label", "labelPlaceholder": "SLA Tier 1", "labelHint": "Use labels to distinguish between multiple instances of the same policy.", @@ -1529,7 +1530,16 @@ "methodPlaceholder": "GET|POST", "uriPlaceholder": "/api/orders/.*", "removeCondition": "Remove condition", - "addCondition": "+ Add condition" + "addCondition": "+ Add condition", + "ruleOfApplication": "Rule of application", + "ruleOfApplicationDescription": "This automated policy is applied to APIs matching the criteria below.", + "ruleOfApplicationEnvironment": "Environment", + "ruleOfApplicationTechnologies": "API technologies", + "ruleOfApplicationEndpointTypes": "Endpoint types", + "ruleOfApplicationRange": "API version range", + "ruleOfApplicationRangeFrom": "From", + "ruleOfApplicationRangeTo": "To", + "ruleOfApplicationAny": "Any" }, "policyConfigForm": { "heading": "Configure Policy", @@ -1560,7 +1570,11 @@ "removeModalTitle": "Remove {name}?", "removeModalMessage": "If you remove this policy, you can't undo it. The change takes effect immediately.", "removeModalConfirm": "Remove Policy", - "removeModalCancel": "Cancel" + "removeModalCancel": "Cancel", + "reviewPolicyStep": "Review Policy", + "allowDuplicateAcknowledgement": "I understand that there is already a policy configured and want to continue.", + "publishDuplicate": "Publish Duplicate", + "publishingDuplicate": "Publishing Duplicate…" }, "policyDetailPage": { "subtitle": "Policy Configuration", @@ -1673,7 +1687,8 @@ "title": "Import Tools from MCP Server", "closeModal": "Close notification window", "connecting": "Connecting to MCP server…", - "noInstance": "This MCP server instance has no upstream URL. Configure one before importing tools.", + "noInstance": "No MCP server selected", + "noInstanceBody": "Select an MCP server from the list to view and import its tools.", "authHint": "Check the authentication policies configured for this MCP server instance.", "noTools": "This MCP server has no tools available.", "selectAll": "Select All", @@ -1827,6 +1842,7 @@ "headerStatus": "Status", "headerGovernedServices": "Governed Services", "headerModified": "Modified", + "headerEnvironment": "Environment", "typeAutomatedPolicy": "Automated Policy", "fromAnypoint": "From Anypoint Platform", "actionsAriaLabel": "Strategy actions", @@ -1881,7 +1897,7 @@ "closeAriaLabel": "Close delete dialog", "heading": "Delete {typeLabel}", "confirmMessage": "Delete {name}?", - "bodyMessage": "Deleting this {bodyNoun} permanently removes it. Services governed by it this {bodyNoun} are no longer validated against its rules.", + "bodyMessage": "Deleting this strategy removes all of its applied policies from your API instances. This action can't be undone.", "deleting": "Deleting…", "deleteButton": "Delete {typeLabel}", "typeAutomatedPolicy": "Automated Policy", @@ -1889,14 +1905,14 @@ }, "disableAutomatedPolicyModal": { "closeAriaLabel": "Close disable dialog", - "heading": "Disable {name}?", - "confirmMessage": "Disable {name}?", - "bodyMessage": "Disabling this strategy removes all applied policies. You can re-enable it later.", - "disableButton": "Disable" + "title": "Disable Automated Policy?", + "body": "Disabling this policy stops automated policy enforcement for all matching API instances. You can re-enable it later.", + "confirmButton": "Disable Automated Policy", + "cancelButton": "Cancel" }, "disabledAutomatedPolicyBanner": { - "automatedPolicy": "This automated policy is disabled. Activate it to govern these services.", - "controls": "This control is disabled. Activate the strategy to govern these services." + "automatedPolicy": "This automated policy is disabled. Enable it to govern these services.", + "controls": "This control is disabled. Enable it to govern these services." }, "guardrailEvaluationPanel": { "runEvaluation": "Run profile evaluation", From 522bd2819c7670434402ec6d5bd20accfaa2c9fd Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 27 May 2026 12:12:44 -0700 Subject: [PATCH 11/15] apply all changes from 5-27 11:30 snapshot --- modules/ROOT/assets/ui-text-review/en.json | 57 ++++++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index ba6af2a92..399f0ad8e 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -350,6 +350,9 @@ "skipToMain": "Skip to main content", "mainContent": "Main content" }, + "aiSidebar": { + "landmarkLabel": "Ask MuleSoft" + }, "leftNav": { "landmarkLabel": "Primary", "home": "Home", @@ -634,6 +637,7 @@ "recipientSearchPlaceholder": "Search by name or type emails (comma-separated)…", "noUsersFound": "No users found matching \"{query}\"", "recipientHint": "Search and select users to receive email notifications.", + "removeRecipientLabel": "Remove recipient", "subject": "Subject", "subjectVariablesHint": "Variables: $'{'severity'}', $'{'api'}', $'{'condition'}', $'{'environment'}'", "message": "Message", @@ -858,7 +862,7 @@ "mcpServers": "MCP Servers", "apis": "APIs", "noScanners": "No scanners for this provider yet.", - "noScannersAll": "No scanners configured yet", + "noScannersAll": "No scanners configured yet.", "addScannerPrompt": "Select {label} to get started.", "addScannerPromptAll": "Select a provider from the sidebar, then click Add Scanner to get started.", "scannerCount": "{count} {count, plural, one {Scanner} other {Scanners}}", @@ -983,6 +987,7 @@ "never": "Never", "tab": { "overview": "Overview", + "services": "Services", "settings": "Settings" }, "toastScanStarted": "Scan started", @@ -1146,6 +1151,15 @@ "typeAgent": "Agent", "typeApi": "API" }, + "scannerServicesTab": { + "noServices": "No services discovered yet", + "loading": "Loading services…", + "discoveredServices": "Discovered Services", + "sectionAgents": "Agents", + "sectionApis": "APIs", + "sectionMcpServers": "MCP Servers", + "sectionLlms": "LLM Proxies" + }, "scanDetailView": { "scanDetails": "Scan Details", "backToOverview": "Back to Overview", @@ -1474,7 +1488,9 @@ "heading": "Apply Policy", "selectPolicyStep": "Select Policy", "configurePolicyStep": "Configure Policy", + "reviewPolicyStep": "Review Policy", "description": "Select a policy to apply to this instance.", + "descriptionKong": "Select a policy to be applied at gateway of this instance, protecting all services in the gateway.", "searchAriaLabel": "Search policies", "searchPlaceholder": "Search policies…", "trafficFlow": "Traffic Flow", @@ -1490,6 +1506,7 @@ "statusFilterLabel": "Status", "trafficFlowLabel": "Traffic Flow", "trafficFlowTooltip": "Filter policies by traffic direction: Inbound policies apply to incoming requests. Outbound policies apply to backend calls.", + "trafficFlowInfoLabel": "Traffic flow information", "noFilterMatch": "No policies match your filters.", "allApplied": "All available policies are already applied to this instance.", "selectAriaLabel": "Select {name}", @@ -1681,7 +1698,8 @@ "fromExchange": "From Exchange", "fromExchangeDescription": "Import published tool definitions", "fromMcpServer": "From MCP Server", - "fromMcpServerDescription": "Discover tools from the live instance" + "fromMcpServerDescription": "Discover tools from the live instance", + "fromMcpServerCheckingDescription": "Checking server type…" }, "importToolsFromMcp": { "title": "Import Tools from MCP Server", @@ -2134,6 +2152,9 @@ "contentTypeDescription": "Media type of the request body" } }, + "apiSpecNav": { + "toggleSectionLabel": "Toggle section" + }, "detailOverviewTab": { "section": { "skills": "Skills", @@ -2490,6 +2511,7 @@ "addVersionModal": { "heading": "Add a new version", "closeDialog": "Close add version dialog", + "closeModalLabel": "Close modal", "publishingStatus": "Publishing version…", "waitingDeployment": "Waiting for deployment to complete", "publishingButton": "Publishing…", @@ -2729,6 +2751,8 @@ "actionsAriaLabel": "Actions", "loadingValue": "Loading {name}…", "exposeAsMcpServerDisabledTooltip": "This API only has a Mocking Service instance. Deploy a real (managed or self-managed) instance before exposing it as an MCP server.", + "editNotSupportedTooltip": "Editing is not supported for this entity yet.", + "deleteNotSupportedTooltip": "Deleting is not supported for this entity yet.", "provisioningFailedTooltip": "Provisioning failed", "provisioningFailedBanner": "Provisioning couldn't complete. Click Retry to resume from where it left off.", "retryButton": "Retry", @@ -3624,14 +3648,14 @@ "anypointTitle": "Go to Anypoint Platform", "anypointDescription": "Quick link to Anypoint Platform. Opens in a new tab for seamless navigation between the enhanced MuleSoft experience and Anypoint Platform.", "businessGroupTitle": "Business Group", - "businessGroupDescription": "Switch between business groups to change your organization scope. Currently viewing: Mythical Division.", + "businessGroupDescription": "Switch between business groups to change your organization scope. Currently viewing: {organizationName}.", "themeToggleTitle": "Theme Toggle", "themeToggleDescription": "Switch between light and dark modes. Your changes take effect immediately.", "navToggleTitle": "Navigation Toggle", "navToggleDescription": "Collapse the navigation to icon-only mode for more screen space, or expand it to see full labels.", "omniAssistantTitle": "Ask MuleSoft", "omniAssistantDescription": "Ask questions, get insights, and take actions across your AI portfolio. Press ⌘K (Mac) or Ctrl+K (Windows) to open.", - "businessGroupDescriptionNoOrg": "Switch between business groups to view different organizational scopes." + "businessGroupDescriptionNoOrg": "Switch between business groups to change your organization scope." }, "welcomeFeatures": { "registerLabel": "Register", @@ -3784,7 +3808,8 @@ "filterOperatorExcludes": "excludes", "namePlaceholder": "Production Vertex Scanner", "descriptionPlaceholder": "Describe what this scanner monitors…", - "valuesPlaceholder": "Values…" + "valuesPlaceholder": "Values…", + "removeFilterLabel": "Remove filter" }, "publishAssetForm": { "heading": "Publish a new {type}", @@ -4032,7 +4057,8 @@ "errorTitleRateLimited": "Too Many Requests", "errorTitleInternal": "Unexpected Error", "versionLabel": "Version", - "zipFileTypeHint": "ZIP" + "zipFileTypeHint": "ZIP", + "clearFileLabel": "Clear selected file" }, "complianceBadge": { "compliant": "Conformant", @@ -4154,7 +4180,8 @@ "clickToBrowseOrDragAndDrop": "Click to browse or drag and drop", "uploadAriaLabel": "Upload {entityLabel} spec or ZIP", "zipPackage": "ZIP package", - "specFile": "Spec file" + "specFile": "Spec file", + "clearFileLabel": "Clear selected file" }, "testConnectionRow": { "test": "Test connection", @@ -4309,6 +4336,7 @@ "selectActiveProvider": "Selecting provider", "selectActiveEnvironment": "Selecting environment", "selectActiveBusinessGroup": "Selecting business group", + "findAssets": "Searching for assets", "fallback": "Working", "tool": { "login": "Logging in to Anypoint Platform", @@ -4385,7 +4413,8 @@ "query_topology_aggregates": "Analyzing API topology", "select_active_provider": "Selecting provider", "select_active_environment": "Selecting environment", - "select_active_business_group": "Selecting business group" + "select_active_business_group": "Selecting business group", + "find_assets": "Searching for assets" } }, "metricDrillDownPanel": { @@ -4579,7 +4608,11 @@ "advancedOptionsDesc": "Filter prompts before they reach a route.", "selectPromptGuardTopicPlaceholder": "Select topics…", "noSelectablePromptGuardTopics": "No topics available — all are assigned to a route or guard.", - "loadingSemanticServices": "Loading semantic services…" + "loadingSemanticServices": "Loading semantic services…", + "switchServiceWarningTitle": "Change semantic service?", + "switchServiceWarningMessage": "Topics are scoped to the current semantic service. Switching to a different service will remove all topics assigned to your routes and the prompt guard. This cannot be undone.", + "switchServiceWarningConfirm": "Change service", + "switchServiceWarningCancel": "Cancel" }, "routeCardContent": { "topicsLabel": "Topics", @@ -4754,6 +4787,7 @@ }, "governanceSettings": { "actionsButton": "Actions", + "toggleOptionsLabel": "Toggle options", "editFromAnypoint": "Edit (From Anypoint Platform)", "editStrategy": "Edit Strategy", "deleteStrategy": "Delete Strategy", @@ -4999,7 +5033,10 @@ "breadcrumbCreate": "Create MCP Server", "breadcrumbEdit": "Edit MCP Server", "noGatewaysHeading": "No Omni Gateways Available", - "noGatewaysDescription": "MCP servers require an Omni Gateway (v1.2.0+) to deploy. Provision an Omni Gateway in your environment first, then return here to create your MCP server.", + "noGatewaysDescription": "MCP servers require an Omni Gateway to deploy. Provision an Omni Gateway in your environment first, then return here to create your MCP server.", + "noEligibleGatewaysHeading": "No Eligible Omni Gateways", + "noEligibleGatewaysDescription": "All available Omni Gateways are running versions that cannot host MCP servers. Upgrade at least one gateway to a supported version, then return here to create your MCP server.", + "ineligibleGatewaysListHeading": "Available gateways and why they are blocked:", "gatewayLoadErrorHeading": "Unable to Load Gateways", "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", "retryButton": "Retry", From a7da7d0ab0771f8030237f0d8645dd0cfbb01a56 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Wed, 27 May 2026 12:21:03 -0700 Subject: [PATCH 12/15] Remove terminating punctuation from tooltips per UI text guidelines --- modules/ROOT/assets/ui-text-review/en.json | 78 +++++++++++----------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 399f0ad8e..3497939af 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -1412,7 +1412,7 @@ "mcpTokenAnalysis": { "summaryHeading": "Summary", "timeRangeAriaLabel": "Time range", - "estimationTooltip": "Estimated token counts based on payload byte lengths. Actual token counts sometimes differ.", + "estimationTooltip": "Estimated token counts based on payload byte lengths. Actual token counts sometimes differ", "acrossInstances": "Across {count} instances", "instancesCount": "{count} instances", "topOpportunities": "Top Opportunities", @@ -1448,7 +1448,7 @@ "savingsPercent": "({percent}%)", "skipForNow": "Skip for now" }, - "timeRangeTooltip": "Time range only filters this panel. Recommendations and the instance table always use the full 30-day window." + "timeRangeTooltip": "Time range only filters this panel. Recommendations and the instance table always use the full 30-day window" }, "policyCatalog": { "placeholderBanner": "Conceptual placeholder — needs deeper exploration and thinking", @@ -1494,7 +1494,7 @@ "searchAriaLabel": "Search policies", "searchPlaceholder": "Search policies…", "trafficFlow": "Traffic Flow", - "trafficTooltip": "Filter policies by traffic direction: Inbound policies apply to incoming requests. Outbound policies apply to backend calls.", + "trafficTooltip": "Filter policies by traffic direction: Inbound policies apply to incoming requests. Outbound policies apply to backend calls", "domain": "Domain", "direction": { "inbound": "Inbound", @@ -1505,7 +1505,7 @@ "statusAutomated": "Automated", "statusFilterLabel": "Status", "trafficFlowLabel": "Traffic Flow", - "trafficFlowTooltip": "Filter policies by traffic direction: Inbound policies apply to incoming requests. Outbound policies apply to backend calls.", + "trafficFlowTooltip": "Filter policies by traffic direction: Inbound policies apply to incoming requests. Outbound policies apply to backend calls", "trafficFlowInfoLabel": "Traffic flow information", "noFilterMatch": "No policies match your filters.", "allApplied": "All available policies are already applied to this instance.", @@ -2567,10 +2567,10 @@ "managedTooltipFlexStrong": "Omni gateways", "managedTooltipBetween": " have full read/write support for data and governance. For instances from ", "managedTooltipFederatedStrong": "federated gateways", - "managedTooltipAfterFederated": ", support depends on gateway settings.", - "managedTooltipAria": "Instances from Omni gateways have full read/write support for data and governance. For instances from federated gateways, support depends on gateway settings.", - "unmanagedTargetsTooltip": "External endpoints registered in Exchange without a managed gateway.", - "unmanagedTooltip": "These endpoints have no known gateways and are not shown elsewhere. Manage them to add support for authentication, monitoring, and governance.", + "managedTooltipAfterFederated": ", support depends on gateway settings", + "managedTooltipAria": "Instances from Omni gateways have full read/write support for data and governance. For instances from federated gateways, support depends on gateway settings", + "unmanagedTargetsTooltip": "External endpoints registered in Exchange without a managed gateway", + "unmanagedTooltip": "These endpoints have no known gateways and are not shown elsewhere. Manage them to add support for authentication, monitoring, and governance", "viewGatewayTitle": "View {name} gateway" }, "instancesPipelineView": { @@ -2585,11 +2585,11 @@ "instancesNonApiTables": { "noMatchFilters": "No instances match the selected filters.", "flexGateway": "Omni Gateway ({count})", - "flexTooltip": "These instances are protected by an Anypoint Omni Gateway.", + "flexTooltip": "These instances are protected by an Anypoint Omni Gateway", "externalGateway": "External Gateway ({count})", - "externalTooltip": "These instances are protected by a non-MuleSoft gateway. Runtime data is not available.", + "externalTooltip": "These instances are protected by a non-MuleSoft gateway. Runtime data is not available", "unmanagedTitle": "Unmanaged", - "unmanagedTooltip": "These instances have no known gateway. For unmanaged instances, only a label and URL are known.", + "unmanagedTooltip": "These instances have no known gateway. For unmanaged instances, only a label and URL are known", "column": { "id": "ID", "label": "Label", @@ -2750,9 +2750,9 @@ "complianceStatusText": "Compliance status", "actionsAriaLabel": "Actions", "loadingValue": "Loading {name}…", - "exposeAsMcpServerDisabledTooltip": "This API only has a Mocking Service instance. Deploy a real (managed or self-managed) instance before exposing it as an MCP server.", - "editNotSupportedTooltip": "Editing is not supported for this entity yet.", - "deleteNotSupportedTooltip": "Deleting is not supported for this entity yet.", + "exposeAsMcpServerDisabledTooltip": "This API only has a Mocking Service instance. Deploy a real (managed or self-managed) instance before exposing it as an MCP server", + "editNotSupportedTooltip": "Editing is not supported for this entity yet", + "deleteNotSupportedTooltip": "Deleting is not supported for this entity yet", "provisioningFailedTooltip": "Provisioning failed", "provisioningFailedBanner": "Provisioning couldn't complete. Click Retry to resume from where it left off.", "retryButton": "Retry", @@ -3053,7 +3053,7 @@ "headerTokensPerCall": "Tokens/Call", "headerTotalTokens": "Total Tokens", "totalTokensInfoAriaLabel": "Token count information", - "totalTokensTooltip": "Estimated token count for this instance. The value in parentheses shows the share of total MCP server tokens consumed over the last 30 days.", + "totalTokensTooltip": "Estimated token count for this instance. The value in parentheses shows the share of total MCP server tokens consumed over the last 30 days", "headerTokensSaved": "Tokens Saved", "headerOptimized": "Optimized", "headerActions": "Actions", @@ -3076,14 +3076,14 @@ "largeToolDescriptions": "Large tool descriptions detected", "largeToolResponses": "Large tool responses detected", "potentialSavings": "Potential Savings", - "savingsTooltip": "Projects best-case token savings from all unapplied optimization policies. Keep corresponding Exchange assets current to maintain projection accuracy.", + "savingsTooltip": "Projects best-case token savings from all unapplied optimization policies. Keep corresponding Exchange assets current to maintain projection accuracy", "savingsUnavailable": "Savings estimate unavailable", "tokensPerTimeframe": "tokens / {timeframe}", "optimizeThisInstance": "Optimize This Instance", "skipForNow": "Skip for now", "largeToolDescriptionsDetected": "Large tool descriptions detected", "largeToolResponsesDetected": "Large tool responses detected", - "potentialSavingsTooltip": "Projects best-case token savings from all unapplied optimization policies. Keep corresponding Exchange assets current to maintain projection accuracy.", + "potentialSavingsTooltip": "Projects best-case token savings from all unapplied optimization policies. Keep corresponding Exchange assets current to maintain projection accuracy", "savingsEstimateUnavailable": "Savings estimate unavailable", "savingsPercent": "({percent}%)" }, @@ -3456,7 +3456,7 @@ "ruleNameDescription": "Rule Name & Description", "action": "Action", "reportingSeverity": "Reporting Severity", - "severityTooltip": "Choose how strictly to enforce this rule. The severity level triggers different system action.\n\nViolation — Prevents new failed attempts and reports all existing non-compliance.\n\nWarning — Warns on new failed attempts without blocking. Reports all non-compliance.\n\nInfo — Informs failed attempts for visibility without blocking. Reports all non-compliance.", + "severityTooltip": "Choose how strictly to enforce this rule. The severity level triggers different system action.\n\nViolation — Prevents new failed attempts and reports all existing non-compliance.\n\nWarning — Warns on new failed attempts without blocking. Reports all non-compliance.\n\nInfo — Informs failed attempts for visibility without blocking. Reports all non-compliance", "noRulesetsMatch": "No rulesets match your search or filter.", "selectPolicyHeading": "Select a policy to apply automatically", "allDomains": "All Domains ({count})", @@ -3892,7 +3892,7 @@ "utterancesLineCap": "At most {max} utterance lines allowed for this semantic service scale.", "closeAriaLabel": "Close", "namePlaceholder": "billing-queries", - "utterancesTooltip": "Example prompts for this topic; one per line is typical.", + "utterancesTooltip": "Example prompts for this topic; one per line is typical", "utterancesPlaceholder": "Type prompt utterances here…", "uploadUtterances": "Upload utterances", "dragAndDrop": "or drag and drop a file here", @@ -3955,7 +3955,7 @@ "showPassword": "Show password", "environment": "Environment", "authKeyLabel": "Auth key", - "authKeyTooltip": "Leave blank to keep the existing key (re-enter to update).", + "authKeyTooltip": "Leave blank to keep the existing key (re-enter to update)", "urlLabel": "URL", "modelLabel": "Model" }, @@ -4548,10 +4548,10 @@ "fileReadError": "We couldn't read the file. Try again.", "utterancesHeading": "Prompt utterances (type or upload)", "utterancesTooltipAriaLabel": "Prompt utterances guidance", - "utterancesTooltipLine1": "Type or paste utterances, separating by line break.", - "utterancesTooltipLine2": "Max 10 utterances / 500 characters per line.", - "utterancesTooltipLine3": "Supported file types: .csv, .txt.", - "utterancesTooltipLine4": "Max file size: 500 KB.", + "utterancesTooltipLine1": "Type or paste utterances, separating by line break", + "utterancesTooltipLine2": "Max 10 utterances / 500 characters per line", + "utterancesTooltipLine3": "Supported file types: .csv, .txt", + "utterancesTooltipLine4": "Max file size: 500 KB", "uploadMore": "Upload more utterances", "uploadInitial": "Upload utterances", "dropHintMore": "or drag and drop more files here to append", @@ -4562,23 +4562,23 @@ "deleteBlockedSemantic": "Semantic routing requires at least two routes.", "noFallback": "No fallback", "routingStrategyLabel": "Routing strategy", - "routingStrategyTooltip": "Model-based routes by model parameter. Semantic routes by prompt content.", + "routingStrategyTooltip": "Model-based routes by model parameter. Semantic routes by prompt content", "modelBased": "Model-based", "semantic": "Semantic", "semanticServiceLabel": "Semantic service setup", - "semanticServiceTooltip": "Select a semantic service for prompt-based routing.", + "semanticServiceTooltip": "Select a semantic service for prompt-based routing", "routeCount": "{count} {count, plural, one {route} other {routes}} configured", "deleteRouteAriaLabel": "Delete route", "addRoute": "Add Route", "advancedRouting": "Advanced routing", "fallbackRouteLabel": "Fallback route", - "fallbackRouteTooltip": "When the primary route is unavailable, traffic will be directed to this fallback route.", + "fallbackRouteTooltip": "When the primary route is unavailable, traffic will be directed to this fallback route", "semanticThresholdDesc": "When semantic match fails or accuracy is less than:", - "semanticThresholdTooltip": "Set the confidence threshold below which the fallback route is used.", + "semanticThresholdTooltip": "Set the confidence threshold below which the fallback route is used", "modelPlaceholder": "anthropic.claude-3-5-sonnet-v2:0", "notApplicable": "Not Applicable", "promptGuardLabel": "Semantic prompt guard", - "promptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route.", + "promptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route", "removeAriaLabel": "Remove", "promptGuardPlaceholder": "Add prompt guard entries…", "addPromptGuard": "Add prompt guard", @@ -4589,13 +4589,13 @@ "fallbackOptionLabel": "{name}: {providerName}", "routingStrategy": "Routing strategy", "semanticServiceSetup": "Semantic service setup", - "semanticServiceSetupTooltip": "Select a semantic service for prompt-based routing.", + "semanticServiceSetupTooltip": "Select a semantic service for prompt-based routing", "routesConfigured": "{count, plural, one {# route configured} other {# routes configured}}", "fallbackRoute": "Fallback route", "semanticMatchFailsPrefix": "When semantic match fails or accuracy is less than:", "fallbackModelPlaceholder": "anthropic.claude-3-5-sonnet-v2:0", "semanticPromptGuard": "Semantic prompt guard", - "semanticPromptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route.", + "semanticPromptGuardTooltip": "Add phrases or keywords that should be blocked from reaching any route", "editEntryAriaLabel": "Edit {name}", "removeEntryAriaLabel": "Remove {name}", "advancedRoutingDescription": "Route fallback and filtering options", @@ -4616,7 +4616,7 @@ }, "routeCardContent": { "topicsLabel": "Topics", - "topicsTooltip": "Assign prompt topics to this route.", + "topicsTooltip": "Assign prompt topics to this route", "targetHeading": "Target", "providerLabel": "Provider", "modelLabel": "Model", @@ -5117,7 +5117,7 @@ "envSandbox": "Staging", "envDevelopment": "QA", "routeLabel": "Route label", - "routeTooltip": "Specifies the upstream service to be called when this tool is invoked.", + "routeTooltip": "Specifies the upstream service to be called when this tool is invoked", "secretGroupLabel": "Secret Group", "secretGroupPlaceholder": "Select a Secret Group…", "tlsLabel": "TLS Context", @@ -5223,7 +5223,7 @@ "heading": "Server Configuration", "closeAriaLabel": "Close", "serverNameLabel": "Server Name", - "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL.", + "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL", "serverNamePlaceholder": "SalesOperationsMCPServer", "serverNameHelperText": "This name identifies your MCP server and becomes the subdomain for your server's URL.", "serverNameConflict": "That server name is already taken. Enter a unique name.", @@ -5231,7 +5231,7 @@ "versionPlaceholder": "e.g., 1.0.0", "versionHelperText": "Semantic version for this MCP server (e.g., 1.0.0, v2.1.3)", "pathLabel": "Path", - "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway.", + "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway", "pathPlaceholder": "/my-mcp-server", "pathHelperText": "Base path on the gateway (derived from server name)", "pathConflict": "That path is already in use. Enter a unique path.", @@ -5377,7 +5377,7 @@ "envStaging": "Staging", "envQa": "QA", "routeLabel": "Route label", - "routeLabelTooltip": "Specifies the upstream service to be called when this tool is invoked.", + "routeLabelTooltip": "Specifies the upstream service to be called when this tool is invoked", "secretGroupLabel": "Secret Group", "secretGroupPlaceholder": "Select a Secret Group…", "tlsLabel": "TLS Context", @@ -5388,7 +5388,7 @@ "saveButton": "Save", "serverConfigTitle": "Server Configuration", "serverName": "Server Name", - "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL.", + "serverNameTooltip": "Only letters and numbers are allowed (no spaces or special characters). This will be used as the subdomain in your server's URL", "serverNamePlaceholder": "SalesOperationsMCPServer", "serverNameHelp": "This name identifies your MCP server and becomes the subdomain for your server's URL.", "serverNameConflict": "That server name is already taken. Enter a unique name.", @@ -5396,7 +5396,7 @@ "versionPlaceholder": "1.0.0", "versionHelp": "Semantic version for this MCP server (e.g., 1.0.0, v2.1.3)", "pathLabel": "Path", - "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway.", + "pathTooltip": "The base path on the gateway for this MCP server. Defaults to a slug derived from the server name (e.g., /my-mcp-server). Must be unique per gateway", "pathPlaceholder": "e.g., /my-mcp-server", "pathHelp": "Base path on the gateway (derived from server name)", "pathConflict": "That path is already in use. Enter a unique path.", @@ -5691,7 +5691,7 @@ }, "semanticServiceSharedFields": { "serviceLabel": "Service label", - "serviceLabelTooltip": "Shown as the title in the Semantic Services catalog.", + "serviceLabelTooltip": "Shown as the title in the Semantic Services catalog", "environment": "Environment" }, "routeCard": { From 22590fe6486f10da6d5176731b069410def14df1 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Tue, 2 Jun 2026 10:43:20 -0700 Subject: [PATCH 13/15] Added missing 28 keys from master to branch. These weren't removed by our edits; they were added after we took the snapshot/merged changes from master. --- modules/ROOT/assets/ui-text-review/en.json | 71 ++++++++++++++-------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 3497939af..2111bc546 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -11,7 +11,6 @@ "close": "Close", "search": "Search", "noResults": "No results found", - "justNow": "Just now", "hoursAgo": "{hours}h ago", "daysAgo": "{days}d ago", "monthsAgo": "{months}mo ago", @@ -305,7 +304,7 @@ "notFound": "This {entity} no longer exists.", "network": "We couldn't load the {entity}. Check your connection and try again.", "unknown": "We couldn't load the {entity}. Try again." - }, + }, "entityDetail": { "loadingFallback": "Loading…", "loadingDescription": "Loading entity details, versions, and related metadata…" @@ -351,7 +350,8 @@ "mainContent": "Main content" }, "aiSidebar": { - "landmarkLabel": "Ask MuleSoft" + "landmarkLabel": "Ask MuleSoft", + "closeAiSidebar": "Close AI sidebar" }, "leftNav": { "landmarkLabel": "Primary", @@ -390,10 +390,6 @@ "openFullView": "Open full view", "closeSidebar": "Close sidebar" }, - "aiSidebar": { - "landmarkLabel": "Ask MuleSoft", - "closeAiSidebar": "Close AI sidebar" - }, "dragHandle": { "resizeSidebar": "Resize sidebar" }, @@ -1926,7 +1922,8 @@ "title": "Disable Automated Policy?", "body": "Disabling this policy stops automated policy enforcement for all matching API instances. You can re-enable it later.", "confirmButton": "Disable Automated Policy", - "cancelButton": "Cancel" + "cancelButton": "Cancel", + "disableButton": "Disable Automated Policy" }, "disabledAutomatedPolicyBanner": { "automatedPolicy": "This automated policy is disabled. Enable it to govern these services.", @@ -2261,7 +2258,8 @@ "allEnvironments": "All Environments", "unknownEnvironment": "Unknown", "environmentWithType": "{label} ({type})", - "noInstancesMatchFilters": "No instances match the selected filters." + "noInstancesMatchFilters": "No instances match the selected filters.", + "unknownVersion": "Unknown" }, "monitoringTab": { "noMonitoring": "No monitoring available for this entity type.", @@ -2395,7 +2393,11 @@ "categoriesHeading": "Categories", "schemaHeading": "Schema", "typeBadge": "Type: {type}", - "versionBadge": "Version: {version}" + "versionBadge": "Version: {version}", + "documentation": "Documentation", + "provider": "Provider", + "providerOrganization": "Organization", + "providerUrl": "Website" }, "governanceTab": { "loadingReportDetails": "Loading report details…", @@ -2757,7 +2759,8 @@ "provisioningFailedBanner": "Provisioning couldn't complete. Click Retry to resume from where it left off.", "retryButton": "Retry", "retryingStatus": "Retrying…", - "retryTimedOut": "Retry timed out — the pipeline may still be running in the background." + "retryTimedOut": "Retry timed out — the pipeline may still be running in the background.", + "retryPrefillUnavailable": "We couldn't load your previous selections — please start the wizard again." }, "entityDetailPage": { "tabConformanceReport": "Conformance", @@ -2774,7 +2777,10 @@ "mcpServer": "MCP Server", "api": "API" }, - "loadingDetailsAnnouncement": "Loading {label} details…" + "loadingDetailsAnnouncement": "Loading {label} details…", + "mcpUnavailableTitle": "This MCP server isn't available", + "mcpUnavailableDescription": "It may still be provisioning, or it has been deleted. Refresh in a moment, or return to the catalog.", + "mcpUnavailableBackToCatalog": "Back to MCP Servers" }, "apiInstanceSelectorCard": { "environment": "Environment", @@ -3345,7 +3351,9 @@ "guardrails": "Controls", "guardrailsDescription": "Validate targeted services against selected control rules and optionally block non-compliant actions, while automatically publishing your live compliance posture.", "automatedPolicy": "Automated Policy", - "automatedPolicyDescription": "Enforce consistent policy requirements across targeted services to ensure uniform governance and automated security." + "automatedPolicyDescription": "Enforce consistent policy requirements across targeted services to ensure uniform governance and automated security.", + "requiresRolePermission": "Requires the {role} permission in this business group.", + "requiresPermission": "Requires the following permissions in this business group: {permissions}." }, "scope": { "filterRestApi": "REST API", @@ -3435,7 +3443,11 @@ "noServicesMatch": "No services match the current scope criteria.", "filterGraphql": "GraphQL", "filterSoapApi": "SOAP API", - "filterGrpcApi": "gRPC API" + "filterGrpcApi": "gRPC API", + "instanceModeAnyEnvironment": "Any environment", + "instanceModeProduction": "Production", + "instanceModeSandbox": "Sandbox", + "instanceModeNoInstances": "No instances" }, "rules": { "heading": "Relevant rulesets for your selected scope", @@ -3603,7 +3615,8 @@ "removePolicyDialogHeading": "Remove {name}?", "removePolicyToastSuccess": "Policy {name} was removed.", "enablePolicyToastSuccess": "Policy {name} was enabled.", - "disablePolicyToastSuccess": "Policy {name} was disabled." + "disablePolicyToastSuccess": "Policy {name} was disabled.", + "kongGatewayLevelNotice": "Additional service level policies(plugins) may be applicable to this instance, beyond below mentioned gateway level policies(plugins)." }, "policiesTab": { "policyFallback": "Policy", @@ -4118,7 +4131,10 @@ "minutesAgo": "{count}m ago", "hoursAgo": "{count}h ago", "daysAgo": "{count}d ago", - "monthsAgo": "{count}mo ago" + "monthsAgo": "{count}mo ago", + "dismissFailed": "Couldn't dismiss the failed job. Please try again.", + "provisioningFailed": "Provisioning failed", + "retryPrefillUnavailable": "We couldn't load your previous selections — please start the wizard again." }, "addInstanceShared": { "stepGatewayApi": "Gateway & API", @@ -5021,11 +5037,7 @@ "back": "Back", "unavailable": "Selected strategy is unavailable." }, - "actions": "Actions", - "pending": { - "guardrailCreating": "Creating your control — this may take a moment.", - "automatedPolicyCreating": "Creating your automated policy — this may take a moment." - } + "actions": "Actions" }, "mcpWizard": { "wizard": { @@ -5065,9 +5077,7 @@ "stepReview": "Review", "toastApiMissingInstanceUrl": "\"{apiName}\" can't be wrapped as an MCP server yet. The selected API Manager instance has no endpoint URL. Deploy the instance in API Manager and try again.", "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply an Omni Gateway inbound auth policy (such as client-id-enforcement or jwt-validation) before production use.", - "gatewayLoadErrorHeading": "Unable to Load Gateways", - "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", - "retryButton": "Retry" + "retryPrefillNotice": "We restored your previous selections — please re-enter credentials before continuing." }, "versionDropdown": { "latest": "latest", @@ -5126,7 +5136,11 @@ "tlsContextPlaceholder": "Select a TLS Context…", "tlsNoResults": "No results found", "cancel": "Cancel", - "save": "Save" + "save": "Save", + "typeHeader": "Type", + "typeManaged": "Managed", + "typeUnmanaged": "Unmanaged", + "notAvailable": "N/A" }, "toolSelectionPanel": { "heading": "Select Tools", @@ -5143,7 +5157,8 @@ "editUpstreamUrlAria": "Edit upstream URL", "saveChangesAria": "Save changes", "discardChangesAria": "Discard changes", - "noToolsWarning": "Select at least one tool to proceed." + "noToolsWarning": "Select at least one tool to proceed.", + "noInstancesError": "No deployed instance is available for this version. Pick a different version or deploy an instance before continuing." }, "stepSelectSource": { "heading": "Select APIs and SaaS systems", @@ -5904,5 +5919,9 @@ "heading": "Installing Slack Integration", "description": "Completing installation…" } + }, + "stringListInput": { + "removeAriaLabel": "Remove {item}", + "placeholder": "Type a value and press Enter" } } From a52c42ec41036547e78864183e5e253607be8779 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Tue, 2 Jun 2026 10:51:59 -0700 Subject: [PATCH 14/15] Restore keys previously removed. --- modules/ROOT/assets/ui-text-review/en.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 2111bc546..49c8c06c2 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -11,6 +11,7 @@ "close": "Close", "search": "Search", "noResults": "No results found", + "justNow": "Just now", "hoursAgo": "{hours}h ago", "daysAgo": "{days}d ago", "monthsAgo": "{months}mo ago", @@ -390,6 +391,10 @@ "openFullView": "Open full view", "closeSidebar": "Close sidebar" }, + "aiSidebar": { + "landmarkLabel": "Ask MuleSoft", + "closeAiSidebar": "Close AI sidebar" + }, "dragHandle": { "resizeSidebar": "Resize sidebar" }, @@ -5037,7 +5042,11 @@ "back": "Back", "unavailable": "Selected strategy is unavailable." }, - "actions": "Actions" + "actions": "Actions", + "pending": { + "guardrailCreating": "Creating your control — this may take a moment.", + "automatedPolicyCreating": "Creating your automated policy — this may take a moment." + } }, "mcpWizard": { "wizard": { @@ -5077,6 +5086,9 @@ "stepReview": "Review", "toastApiMissingInstanceUrl": "\"{apiName}\" can't be wrapped as an MCP server yet. The selected API Manager instance has no endpoint URL. Deploy the instance in API Manager and try again.", "runtimeAuthWarning": "This MCP endpoint is deployed without inbound authentication. Apply an Omni Gateway inbound auth policy (such as client-id-enforcement or jwt-validation) before production use.", + "gatewayLoadErrorHeading": "Unable to Load Gateways", + "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", + "retryButton": "Retry", "retryPrefillNotice": "We restored your previous selections — please re-enter credentials before continuing." }, "versionDropdown": { From b81406a4e09b7a77205ebf3bdf8d124f80cbdc71 Mon Sep 17 00:00:00 2001 From: Hanna Nelson Date: Tue, 2 Jun 2026 11:01:21 -0700 Subject: [PATCH 15/15] apply UI text standards on restored missing keys. --- modules/ROOT/assets/ui-text-review/en.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/ROOT/assets/ui-text-review/en.json b/modules/ROOT/assets/ui-text-review/en.json index 49c8c06c2..f5e4c3c7d 100644 --- a/modules/ROOT/assets/ui-text-review/en.json +++ b/modules/ROOT/assets/ui-text-review/en.json @@ -352,7 +352,7 @@ }, "aiSidebar": { "landmarkLabel": "Ask MuleSoft", - "closeAiSidebar": "Close AI sidebar" + "closeAiSidebar": "Close AI Sidebar" }, "leftNav": { "landmarkLabel": "Primary", @@ -393,7 +393,7 @@ }, "aiSidebar": { "landmarkLabel": "Ask MuleSoft", - "closeAiSidebar": "Close AI sidebar" + "closeAiSidebar": "Close AI Sidebar" }, "dragHandle": { "resizeSidebar": "Resize sidebar" @@ -2765,7 +2765,7 @@ "retryButton": "Retry", "retryingStatus": "Retrying…", "retryTimedOut": "Retry timed out — the pipeline may still be running in the background.", - "retryPrefillUnavailable": "We couldn't load your previous selections — please start the wizard again." + "retryPrefillUnavailable": "We couldn't load your previous selections. Start the wizard again." }, "entityDetailPage": { "tabConformanceReport": "Conformance", @@ -2784,7 +2784,7 @@ }, "loadingDetailsAnnouncement": "Loading {label} details…", "mcpUnavailableTitle": "This MCP server isn't available", - "mcpUnavailableDescription": "It may still be provisioning, or it has been deleted. Refresh in a moment, or return to the catalog.", + "mcpUnavailableDescription": "It's still provisioning, or it has been deleted. Refresh in a moment, or return to the catalog.", "mcpUnavailableBackToCatalog": "Back to MCP Servers" }, "apiInstanceSelectorCard": { @@ -3621,7 +3621,7 @@ "removePolicyToastSuccess": "Policy {name} was removed.", "enablePolicyToastSuccess": "Policy {name} was enabled.", "disablePolicyToastSuccess": "Policy {name} was disabled.", - "kongGatewayLevelNotice": "Additional service level policies(plugins) may be applicable to this instance, beyond below mentioned gateway level policies(plugins)." + "kongGatewayLevelNotice": "Additional service level policies (plugins) can apply to this instance, beyond the gateway level policies (plugins) mentioned below." }, "policiesTab": { "policyFallback": "Policy", @@ -4137,9 +4137,9 @@ "hoursAgo": "{count}h ago", "daysAgo": "{count}d ago", "monthsAgo": "{count}mo ago", - "dismissFailed": "Couldn't dismiss the failed job. Please try again.", - "provisioningFailed": "Provisioning failed", - "retryPrefillUnavailable": "We couldn't load your previous selections — please start the wizard again." + "dismissFailed": "Couldn't dismiss the failed job. Try again.", + "provisioningFailed": "Provisioning didn't complete", + "retryPrefillUnavailable": "We couldn't load your previous selections. Start the wizard again." }, "addInstanceShared": { "stepGatewayApi": "Gateway & API", @@ -5089,7 +5089,7 @@ "gatewayLoadErrorHeading": "Unable to Load Gateways", "gatewayLoadErrorDescription": "We couldn't reach the gateway service after multiple attempts. This is usually a temporary issue. Try again.", "retryButton": "Retry", - "retryPrefillNotice": "We restored your previous selections — please re-enter credentials before continuing." + "retryPrefillNotice": "We restored your previous selections. Re-enter credentials before continuing." }, "versionDropdown": { "latest": "latest", @@ -5934,6 +5934,6 @@ }, "stringListInput": { "removeAriaLabel": "Remove {item}", - "placeholder": "Type a value and press Enter" + "placeholder": "Type a value and press Enter..." } }