diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx index 8febd25e93e31..e1df96e1d082e 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx @@ -12,7 +12,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; export const UPGRADE_CONFLICTS_MODAL_TITLE = i18n.translate( 'xpack.securitySolution.detectionEngine.upgradeConflictsModal.messageTitle', { - defaultMessage: 'There are rules with conflicts', + defaultMessage: 'Exclude rules with conflicts?', } ); @@ -23,32 +23,87 @@ export const UPGRADE_CONFLICTS_MODAL_CANCEL = i18n.translate( } ); -export const UPGRADE_RULES_WITHOUT_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeConflictsModal.upgradeRulesWithoutConflicts', - { - defaultMessage: 'Update rules without conflicts', - } +export const UPGRADE_RULES_WITHOUT_CONFLICTS = (rulesCount: number) => + i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeConflictsModal.upgradeRulesWithoutConflicts', + { + defaultMessage: 'Update {rulesCount, plural, =1 {rule} other {rules}} without conflicts', + values: { rulesCount }, + } + ); + +export const UPGRADE_RULES_WITH_CONFLICTS = (numOfRules: number) => + i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeConflictsModal.upgradeRulesWithConflicts', + { + defaultMessage: 'Update {numOfRules, plural, =1 {rule} other {rules}}', + values: { numOfRules }, + } + ); + +const PROCEED_WITH_NO_CONCERNS = (numOfRules: number) => ( + {UPGRADE_RULES_WITH_CONFLICTS(numOfRules)} }} + /> ); -export const UPGRADE_RULES_WITH_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeConflictsModal.upgradeRulesWithConflicts', - { - defaultMessage: 'Update rules', - } +const PROCEED_WITH_CONFLICT_FREE_RULES = (numOfRules: number) => ( + {numOfRules}, + updateRulesWithoutConflicts: {UPGRADE_RULES_WITHOUT_CONFLICTS(numOfRules)}, + }} + /> ); -export const ONLY_RULES_WITH_SOLVABLE_CONFLICTS = (numOfRules: number) => ( +const PROCEED_WITH_CONFLICT_FREE_AND_SOLVABLE_CONFLICT_RULES = ({ + numOfRulesWithoutConflicts, + numOfRulesWithSolvableConflicts, +}: { + numOfRulesWithoutConflicts: number; + numOfRulesWithSolvableConflicts: number; +}) => ( {numOfRules} }} + id="xpack.securitySolution.detectionEngine.upgradeConflictsModal.proceedWithConflictFreeRules" + defaultMessage="Click {updateRules} to update the {numOfRulesWithoutConflictsStrong} conflict-free {numOfRulesWithoutConflicts, plural, =1 {rule} other {rules}} and {numOfRulesWithSolvableConflictsStrong} {numOfRulesWithSolvableConflicts, plural, =1 {rule} other {rules}} with auto-resolved conflicts." + values={{ + numOfRulesWithoutConflicts, + numOfRulesWithoutConflictsStrong: {numOfRulesWithoutConflicts}, + numOfRulesWithSolvableConflicts, + numOfRulesWithSolvableConflictsStrong: {numOfRulesWithSolvableConflicts}, + updateRules: ( + + {UPGRADE_RULES_WITH_CONFLICTS( + numOfRulesWithoutConflicts + numOfRulesWithSolvableConflicts + )} + + ), + }} /> ); +export const ONLY_RULES_WITH_SOLVABLE_CONFLICTS = (numOfRules: number) => ( + <> + +
+
+ {PROCEED_WITH_NO_CONCERNS(numOfRules)} + +); + export const ONLY_RULES_WITH_NON_SOLVABLE_CONFLICTS = (numOfRules: number) => ( {numOfRules} }} /> ); @@ -60,18 +115,30 @@ export const ONLY_RULES_WITH_CONFLICTS = ({ numOfRulesWithSolvableConflicts: number; numOfRulesWithNonSolvableConflicts: number; }) => ( - {numOfRulesWithSolvableConflicts + numOfRulesWithNonSolvableConflicts} - ), - numOfRulesWithSolvableConflicts, - numOfRulesWithSolvableConflictsStrong: {numOfRulesWithSolvableConflicts}, - }} - /> + <> + +
+
+ {numOfRulesWithSolvableConflicts + numOfRulesWithNonSolvableConflicts} + ), + numOfRulesWithNonSolvableConflictsStrong: ( + {numOfRulesWithNonSolvableConflicts} + ), + }} + /> +
+
+ {PROCEED_WITH_NO_CONCERNS(numOfRulesWithSolvableConflicts)} + ); export const RULES_WITHOUT_CONFLICTS_AND_RULES_WITH_NON_SOLVABLE_CONFLICTS = ({ @@ -81,19 +148,24 @@ export const RULES_WITHOUT_CONFLICTS_AND_RULES_WITH_NON_SOLVABLE_CONFLICTS = ({ numOfRulesWithoutConflicts: number; numOfRulesWithNonSolvableConflicts: number; }) => ( - {numOfRulesWithoutConflicts + numOfRulesWithNonSolvableConflicts} - ), - numOfRulesWithoutConflicts, - numOfRulesWithoutConflictsStrong: {numOfRulesWithoutConflicts}, - numOfRulesWithNonSolvableConflicts: {numOfRulesWithNonSolvableConflicts}, - }} - /> + <> + {numOfRulesWithoutConflicts + numOfRulesWithNonSolvableConflicts} + ), + numOfRulesWithNonSolvableConflicts, + numOfRulesWithNonSolvableConflictsStrong: ( + {numOfRulesWithNonSolvableConflicts} + ), + }} + /> +
+
+ {PROCEED_WITH_CONFLICT_FREE_RULES(numOfRulesWithoutConflicts)} + ); export const RULES_WITHOUT_CONFLICTS_AND_RULES_WITH_SOLVABLE_CONFLICTS = ({ @@ -103,18 +175,27 @@ export const RULES_WITHOUT_CONFLICTS_AND_RULES_WITH_SOLVABLE_CONFLICTS = ({ numOfRulesWithoutConflicts: number; numOfRulesWithSolvableConflicts: number; }) => ( - {numOfRulesWithoutConflicts + numOfRulesWithSolvableConflicts} - ), + <> + {numOfRulesWithoutConflicts + numOfRulesWithSolvableConflicts} + ), + numOfRulesWithSolvableConflictsStrong: {numOfRulesWithSolvableConflicts}, + }} + /> +
+
+ {PROCEED_WITH_CONFLICT_FREE_RULES(numOfRulesWithoutConflicts)} +
+ {PROCEED_WITH_CONFLICT_FREE_AND_SOLVABLE_CONFLICT_RULES({ numOfRulesWithoutConflicts, - numOfRulesWithoutConflictsStrong: {numOfRulesWithoutConflicts}, - numOfRulesWithSolvableConflictsStrong: {numOfRulesWithSolvableConflicts}, - }} - /> + numOfRulesWithSolvableConflicts, + })} + ); export const ALL_KINDS_OF_RULES = ({ @@ -129,7 +210,7 @@ export const ALL_KINDS_OF_RULES = ({ <> @@ -141,17 +222,21 @@ export const ALL_KINDS_OF_RULES = ({ numOfRulesWithConflictsStrong: ( {numOfRulesWithSolvableConflicts + numOfRulesWithNonSolvableConflicts} ), - numOfRulesWithoutConflicts, - numOfRulesWithoutConflictsStrong: {numOfRulesWithoutConflicts}, numOfRulesWithSolvableConflicts, numOfRulesWithSolvableConflictsStrong: {numOfRulesWithSolvableConflicts}, + numOfRulesWithNonSolvableConflicts, + numOfRulesWithNonSolvableConflictsStrong: ( + {numOfRulesWithNonSolvableConflicts} + ), }} /> - {numOfRulesWithNonSolvableConflicts > 0 && ( - - )} +
+
+ {PROCEED_WITH_CONFLICT_FREE_RULES(numOfRulesWithoutConflicts)} +
+ {PROCEED_WITH_CONFLICT_FREE_AND_SOLVABLE_CONFLICT_RULES({ + numOfRulesWithoutConflicts, + numOfRulesWithSolvableConflicts, + })} ); diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx index bef509dda5013..ddf1a06813db0 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx @@ -65,12 +65,14 @@ export const UpgradeWithConflictsModal = memo(function ConfirmUpgradeWithConflic {numOfRulesWithoutConflicts > 0 && ( - {i18n.UPGRADE_RULES_WITHOUT_CONFLICTS} + {i18n.UPGRADE_RULES_WITHOUT_CONFLICTS(numOfRulesWithoutConflicts)} )} {numOfRulesWithSolvableConflicts > 0 && ( - {i18n.UPGRADE_RULES_WITH_CONFLICTS} + {i18n.UPGRADE_RULES_WITH_CONFLICTS( + numOfRulesWithoutConflicts + numOfRulesWithSolvableConflicts + )} )} {i18n.UPGRADE_CONFLICTS_MODAL_CANCEL} diff --git a/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts index a8181adc41911..6069385456acd 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules/translations.ts @@ -881,7 +881,7 @@ export const SOLVABLE_CONFLICT_TOOLTIP = i18n.translate( 'xpack.securitySolution.detectionEngine.upgradeRules.solvableConflictTooltipDescription', { defaultMessage: - 'This Elastic rule has auto-resolved conflicts that require review before upgrade.', + 'This Elastic rule has auto-resolved conflicts to review before updating the rule. ', } ); @@ -896,7 +896,7 @@ export const NON_SOLVABLE_CONFLICT_TOOLTIP = i18n.translate( 'xpack.securitySolution.detectionEngine.upgradeRules.nonSolvableConflictTooltipDescription', { defaultMessage: - 'This Elastic rule has unresolved conflicts that require editing before upgrade.', + 'This Elastic rule has unresolved conflicts that you must fix before updating the rule.', } );