Notifications
diff --git a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx
index 447f538136e..30f21ce9017 100644
--- a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx
+++ b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx
@@ -13,6 +13,8 @@ import InfoPausedRule from 'app/features/alerting/unified/components/InfoPausedR
import {
getRuleGroupLocationFromFormValues,
getRuleGroupLocationFromRuleWithLocation,
+ isCloudAlertingRuleByType,
+ isCloudRecordingRuleByType,
isCloudRulerRule,
isGrafanaManagedRuleByType,
isGrafanaRulerRule,
@@ -60,7 +62,8 @@ import { GrafanaRuleExporter } from '../../export/GrafanaRuleExporter';
import { AlertRuleNameAndMetric } from '../AlertRuleNameInput';
import AnnotationsStep from '../AnnotationsStep';
import { CloudEvaluationBehavior } from '../CloudEvaluationBehavior';
-import { GrafanaEvaluationBehavior } from '../GrafanaEvaluationBehavior';
+import { GrafanaEvaluationBehaviorStep } from '../GrafanaEvaluationBehavior';
+import { GrafanaFolderAndLabelsStep } from '../GrafanaFolderAndLabelsStep';
import { NotificationsStep } from '../NotificationsStep';
import { RecordingRulesNameSpaceAndGroupStep } from '../RecordingRulesNameSpaceAndGroupStep';
import { RuleInspector } from '../RuleInspector';
@@ -296,23 +299,24 @@ export const AlertRuleForm = ({ existing, prefill }: Props) => {
{showDataSourceDependantStep && (
<>
{/* Step 3 */}
+ {isGrafanaManagedRuleByType(type) &&
}
+
+ {isCloudAlertingRuleByType(type) &&
}
+
+ {isCloudRecordingRuleByType(type) &&
}
+
+ {/* Step 4 & 5 & 6*/}
{isGrafanaManagedRuleByType(type) && (
-
)}
-
- {type === RuleFormType.cloudAlerting &&
}
-
- {type === RuleFormType.cloudRecording &&
}
-
- {/* Step 4 & 5 */}
{/* Notifications step*/}
- {/* Annotations only for cloud and Grafana */}
+ {/* Annotations only for alerting rules */}
{!isRecordingRuleByType(type) &&
}
>
)}
diff --git a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/ModifyExportRuleForm.tsx b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/ModifyExportRuleForm.tsx
index e35f6da5cf2..a4bf8e6b4ba 100644
--- a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/ModifyExportRuleForm.tsx
+++ b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/ModifyExportRuleForm.tsx
@@ -24,7 +24,8 @@ import { GrafanaExportDrawer } from '../../export/GrafanaExportDrawer';
import { ExportFormats, allGrafanaExportProviders } from '../../export/providers';
import { AlertRuleNameAndMetric } from '../AlertRuleNameInput';
import AnnotationsStep from '../AnnotationsStep';
-import { GrafanaEvaluationBehavior } from '../GrafanaEvaluationBehavior';
+import { GrafanaEvaluationBehaviorStep } from '../GrafanaEvaluationBehavior';
+import { GrafanaFolderAndLabelsStep } from '../GrafanaFolderAndLabelsStep';
import { NotificationsStep } from '../NotificationsStep';
import { QueryAndExpressionsStep } from '../query-and-alert-condition/QueryAndExpressionsStep';
@@ -90,15 +91,15 @@ export function ModifyExportRuleForm({ ruleForm, alertUid }: ModifyExportRuleFor
{/* Step 2 */}
{/* Step 3-4-5 */}
+
-
-
- {/* Step 4 & 5 */}
{/* Notifications step*/}
{/* Annotations only for cloud and Grafana */}
diff --git a/public/app/features/alerting/unified/components/rule-editor/labels/LabelsEditorModal.tsx b/public/app/features/alerting/unified/components/rule-editor/labels/LabelsEditorModal.tsx
index a98ad871b49..e6472fa31cb 100644
--- a/public/app/features/alerting/unified/components/rule-editor/labels/LabelsEditorModal.tsx
+++ b/public/app/features/alerting/unified/components/rule-editor/labels/LabelsEditorModal.tsx
@@ -1,5 +1,7 @@
import { Modal } from '@grafana/ui';
+import { KBObjectArray } from '../../../types/rule-form';
+
import { LabelsSubForm } from './LabelsField';
export interface LabelsEditorModalProps {
@@ -8,12 +10,7 @@ export interface LabelsEditorModalProps {
key: string;
value: string;
}>;
- onClose: (
- labelsToUodate?: Array<{
- key: string;
- value: string;
- }>
- ) => void;
+ onClose: (labelsToUodate?: KBObjectArray) => void;
dataSourceName: string;
}
export function LabelsEditorModal({ isOpen, onClose, dataSourceName, initialLabels }: LabelsEditorModalProps) {
diff --git a/public/app/features/alerting/unified/components/rule-editor/labels/LabelsField.tsx b/public/app/features/alerting/unified/components/rule-editor/labels/LabelsField.tsx
index 604f7f69157..1335580837d 100644
--- a/public/app/features/alerting/unified/components/rule-editor/labels/LabelsField.tsx
+++ b/public/app/features/alerting/unified/components/rule-editor/labels/LabelsField.tsx
@@ -9,7 +9,7 @@ import { t } from 'app/core/internationalization';
import { labelsApi } from '../../../api/labelsApi';
import { usePluginBridge } from '../../../hooks/usePluginBridge';
import { SupportedPlugin } from '../../../types/pluginBridges';
-import { RuleFormType, RuleFormValues } from '../../../types/rule-form';
+import { KBObjectArray, RuleFormType, RuleFormValues } from '../../../types/rule-form';
import { isPrivateLabelKey } from '../../../utils/labels';
import { isRecordingRuleByType } from '../../../utils/rules';
import AlertLabelDropdown from '../../AlertLabelDropdown';
@@ -56,12 +56,7 @@ export type LabelsSubformValues = {
export interface LabelsSubFormProps {
dataSourceName: string;
initialLabels: Array<{ key: string; value: string }>;
- onClose: (
- labelsToUodate?: Array<{
- key: string;
- value: string;
- }>
- ) => void;
+ onClose: (labelsToUodate?: KBObjectArray) => void;
}
export function LabelsSubForm({ dataSourceName, onClose, initialLabels }: LabelsSubFormProps) {
diff --git a/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx b/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx
index 8ad79d2fe9a..5f42608231a 100644
--- a/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx
+++ b/public/app/features/alerting/unified/components/rule-editor/notificaton-preview/NotificationPreview.tsx
@@ -8,16 +8,13 @@ import { alertRuleApi } from 'app/features/alerting/unified/api/alertRuleApi';
import { Stack } from 'app/plugins/datasource/parca/QueryEditor/Stack';
import { AlertQuery } from 'app/types/unified-alerting-dto';
-import { Folder } from '../../../types/rule-form';
+import { Folder, KBObjectArray } from '../../../types/rule-form';
import { useGetAlertManagerDataSourcesByPermissionAndConfig } from '../../../utils/datasource';
const NotificationPreviewByAlertManager = lazy(() => import('./NotificationPreviewByAlertManager'));
interface NotificationPreviewProps {
- customLabels: Array<{
- key: string;
- value: string;
- }>;
+ customLabels: KBObjectArray;
alertQueries: AlertQuery[];
condition: string | null;
folder?: Folder;
diff --git a/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.test.tsx b/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.test.tsx
index 65c65e07685..dcbc646ae03 100644
--- a/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.test.tsx
+++ b/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.test.tsx
@@ -14,7 +14,7 @@ import {
} from '../../mocks';
import { GRAFANA_RULES_SOURCE_NAME } from '../../utils/datasource';
-import { EditCloudGroupModal } from './EditRuleGroupModal';
+import { EditRuleGroupModal } from './EditRuleGroupModal';
const ui = {
input: {
@@ -40,7 +40,7 @@ describe('EditGroupModal', () => {
const group = namespace.groups[0];
- render(
);
+ render(
);
expect(await ui.input.namespace.find()).toHaveAttribute('readonly');
expect(ui.input.group.get()).toHaveAttribute('readonly');
@@ -80,7 +80,7 @@ describe('EditGroupModal component on cloud alert rules', () => {
const group = promNs.groups[0];
- render(
);
+ render(
);
expect(await ui.input.namespace.find()).toHaveValue('prometheus-ns');
expect(ui.input.namespace.get()).not.toHaveAttribute('readonly');
@@ -99,7 +99,7 @@ describe('EditGroupModal component on cloud alert rules', () => {
const group = promNs.groups[0];
- render(
);
+ render(
);
expect(ui.table.query()).not.toBeInTheDocument();
expect(await ui.noRulesText.find()).toBeInTheDocument();
});
@@ -133,7 +133,7 @@ describe('EditGroupModal component on grafana-managed alert rules', () => {
const grafanaGroup1 = grafanaNamespace.groups[0];
const renderWithGrafanaGroup = () =>
- render(
);
+ render(
);
it('Should show alert table', async () => {
renderWithGrafanaGroup();
diff --git a/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx b/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx
index 2ff9d57baaf..f6c4a116005 100644
--- a/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx
+++ b/public/app/features/alerting/unified/components/rules/EditRuleGroupModal.tsx
@@ -178,7 +178,7 @@ export interface ModalProps {
hideFolder?: boolean;
}
-export function EditCloudGroupModal(props: ModalProps): React.ReactElement {
+export function EditRuleGroupModal(props: ModalProps): React.ReactElement {
const { namespace, group, onClose, intervalEditOnly, folderUid } = props;
const styles = useStyles2(getStyles);
diff --git a/public/app/features/alerting/unified/components/rules/RulesGroup.tsx b/public/app/features/alerting/unified/components/rules/RulesGroup.tsx
index f8a1f6d7431..5987704636b 100644
--- a/public/app/features/alerting/unified/components/rules/RulesGroup.tsx
+++ b/public/app/features/alerting/unified/components/rules/RulesGroup.tsx
@@ -7,7 +7,7 @@ import { selectors } from '@grafana/e2e-selectors';
import { Badge, ConfirmModal, Icon, Spinner, Stack, Tooltip, useStyles2 } from '@grafana/ui';
import { CombinedRuleGroup, CombinedRuleNamespace, RuleGroupIdentifier, RulesSource } from 'app/types/unified-alerting';
-import { LogMessages, logInfo } from '../../Analytics';
+import { logInfo, LogMessages } from '../../Analytics';
import { featureDiscoveryApi } from '../../api/featureDiscoveryApi';
import { useDeleteRuleGroup } from '../../hooks/ruleGroup/useDeleteRuleGroup';
import { useFolder } from '../../hooks/useFolder';
@@ -23,7 +23,7 @@ import { GrafanaRuleGroupExporter } from '../export/GrafanaRuleGroupExporter';
import { decodeGrafanaNamespace } from '../expressions/util';
import { ActionIcon } from './ActionIcon';
-import { EditCloudGroupModal } from './EditRuleGroupModal';
+import { EditRuleGroupModal } from './EditRuleGroupModal';
import { ReorderCloudGroupModal } from './ReorderRuleGroupModal';
import { RuleGroupStats } from './RuleStats';
import { RulesTable } from './RulesTable';
@@ -275,7 +275,7 @@ export const RulesGroup = React.memo(({ group, namespace, expandAll, viewMode }:
/>
)}
{isEditingGroup && (
-
closeEditModal()}
diff --git a/public/app/features/alerting/unified/types/rule-form.ts b/public/app/features/alerting/unified/types/rule-form.ts
index 1ff9c721e87..8314961ba5d 100644
--- a/public/app/features/alerting/unified/types/rule-form.ts
+++ b/public/app/features/alerting/unified/types/rule-form.ts
@@ -27,6 +27,9 @@ export interface SimplifiedEditor {
simplifiedQueryEditor: boolean;
}
+export type KVObject = { key: string; value: string };
+export type KBObjectArray = KVObject[];
+
export interface RuleFormValues {
// common
name: string;
diff --git a/public/app/features/alerting/unified/utils/rule-form.ts b/public/app/features/alerting/unified/utils/rule-form.ts
index 2154b66e026..f3be44d152b 100644
--- a/public/app/features/alerting/unified/utils/rule-form.ts
+++ b/public/app/features/alerting/unified/utils/rule-form.ts
@@ -40,12 +40,11 @@ import {
RulerRuleDTO,
} from 'app/types/unified-alerting-dto';
-type KVObject = { key: string; value: string };
-
import { EvalFunction } from '../../state/alertDef';
import {
AlertManagerManualRouting,
ContactPoint,
+ KVObject,
RuleFormType,
RuleFormValues,
SimplifiedEditor,
diff --git a/public/app/features/alerting/unified/utils/rules.ts b/public/app/features/alerting/unified/utils/rules.ts
index fd372acdda4..ad6ffc15a3f 100644
--- a/public/app/features/alerting/unified/utils/rules.ts
+++ b/public/app/features/alerting/unified/utils/rules.ts
@@ -417,7 +417,7 @@ export function isGrafanaAlertingRuleByType(type?: RuleFormType) {
return type === RuleFormType.grafana;
}
-export function isGrafanaRecordingRuleByType(type: RuleFormType) {
+export function isGrafanaRecordingRuleByType(type?: RuleFormType) {
return type === RuleFormType.grafanaRecording;
}
@@ -429,14 +429,14 @@ export function isCloudRecordingRuleByType(type?: RuleFormType) {
return type === RuleFormType.cloudRecording;
}
-export function isGrafanaManagedRuleByType(type: RuleFormType) {
+export function isGrafanaManagedRuleByType(type?: RuleFormType) {
return isGrafanaAlertingRuleByType(type) || isGrafanaRecordingRuleByType(type);
}
-export function isRecordingRuleByType(type: RuleFormType) {
+export function isRecordingRuleByType(type?: RuleFormType) {
return isGrafanaRecordingRuleByType(type) || isCloudRecordingRuleByType(type);
}
-export function isDataSourceManagedRuleByType(type: RuleFormType) {
+export function isDataSourceManagedRuleByType(type?: RuleFormType) {
return isCloudAlertingRuleByType(type) || isCloudRecordingRuleByType(type);
}
diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json
index 6ddc36f82b7..e2fb153b789 100644
--- a/public/locales/en-US/grafana.json
+++ b/public/locales/en-US/grafana.json
@@ -33,29 +33,6 @@
}
}
},
- "alert-rule-form": {
- "evaluation-behaviour": {
- "info-help": {
- "text": "Define the alert behavior when the evaluation fails or the query returns no data."
- },
- "pending-period": "Pending period"
- },
- "evaluation-behaviour-description1": "Evaluation groups are containers for evaluating alert and recording rules.",
- "evaluation-behaviour-description2": "An evaluation group defines an evaluation interval - how often a rule is evaluated. Alert rules within the same evaluation group are evaluated over the same evaluation interval.",
- "evaluation-behaviour-description3": "Pending period specifies how long the threshold condition must be met before the alert starts firing. This option helps prevent alerts from being triggered by temporary issues.",
- "evaluation-behaviour-for": {
- "error-parsing": "Failed to parse duration",
- "validation": "Pending period must be greater than or equal to the evaluation interval."
- },
- "evaluation-behaviour-group": {
- "text": "All rules in the selected group are evaluated every {{evaluateEvery}}."
- },
- "pause": {
- "alerting": "Turn on to pause evaluation for this alert rule.",
- "label": "Pause evaluation",
- "recording": "Turn on to pause evaluation for this recording rule."
- }
- },
"alerting": {
"alert-recording-rule-form": {
"evaluation-behaviour": {
@@ -64,13 +41,6 @@
}
}
},
- "alert-rule-form": {
- "evaluation-behaviour": {
- "description": {
- "text": "Define how the alert rule is evaluated."
- }
- }
- },
"alert-rules": {
"firing-for": "Firing for",
"next-evaluation": "Next evaluation",
@@ -177,10 +147,6 @@
"alerting": "Create a new evaluation group to use for this alert rule.",
"recording": "Create a new evaluation group to use for this recording rule."
}
- },
- "text": {
- "alerting": "Define how often the alert rule is evaluated.",
- "recording": "Define how often the recording rule is evaluated."
}
}
},
@@ -266,6 +232,60 @@
"preview": "Preview",
"previewCondition": "Preview alert rule condition"
},
+ "rule-form": {
+ "evaluation": {
+ "evaluation-group-and-interval": "Evaluation group and interval",
+ "group": {
+ "cancel": "Cancel",
+ "create": "Create",
+ "interval": "Evaluation interval"
+ },
+ "group-name": "Evaluation group name",
+ "group-text": "All rules in the selected group are evaluated every {{evaluateEvery}}.",
+ "new-group": "New evaluation group",
+ "pause": {
+ "alerting": "Turn on to pause evaluation for this alert rule.",
+ "recording": "Turn on to pause evaluation for this recording rule."
+ },
+ "select-folder-before": "Select a folder before setting evaluation group and interval"
+ },
+ "evaluation-behaviour": {
+ "description": {
+ "text": "Define how the alert rule is evaluated."
+ },
+ "info-help": {
+ "text": "Define the alert behavior when the evaluation fails or the query returns no data."
+ },
+ "pending-period": "Pending period"
+ },
+ "evaluation-behaviour-description1": "Evaluation groups are containers for evaluating alert and recording rules.",
+ "evaluation-behaviour-description2": "An evaluation group defines an evaluation interval - how often a rule is evaluated. Alert rules within the same evaluation group are evaluated over the same evaluation interval.",
+ "evaluation-behaviour-description3": "Pending period specifies how long the threshold condition must be met before the alert starts firing. This option helps prevent alerts from being triggered by temporary issues.",
+ "evaluation-behaviour-for": {
+ "error-parsing": "Failed to parse duration",
+ "validation": "Pending period must be greater than or equal to the evaluation interval."
+ },
+ "folder": {
+ "cancel": "Cancel",
+ "create": "Create",
+ "create-folder": "Create a new folder to store your alert rule in.",
+ "creating-new-folder": "Creating new folder",
+ "label": "Folder",
+ "name": "Folder name",
+ "new-folder": "New folder",
+ "new-folder-or": "or"
+ },
+ "folder-and-labels": "Organize your alert rule with a folder and set of labels.",
+ "folders": {
+ "help-info": "Folders are used for storing alert rules. You can extend the access provided by a role to alert rules and assign permissions to individual folders."
+ },
+ "labels": {
+ "help-info": "Labels are used to differentiate an alert from all other alerts.You can use them for searching, silencing, and routing notifications."
+ },
+ "pause": {
+ "label": "Pause evaluation"
+ }
+ },
"rule-groups": {
"delete": {
"success": "Successfully deleted rule group"
diff --git a/public/locales/pseudo-LOCALE/grafana.json b/public/locales/pseudo-LOCALE/grafana.json
index b24be9678e2..a471dce121f 100644
--- a/public/locales/pseudo-LOCALE/grafana.json
+++ b/public/locales/pseudo-LOCALE/grafana.json
@@ -33,29 +33,6 @@
}
}
},
- "alert-rule-form": {
- "evaluation-behaviour": {
- "info-help": {
- "text": "Đęƒįʼnę ŧĥę äľęřŧ þęĥävįőř ŵĥęʼn ŧĥę ęväľūäŧįőʼn ƒäįľş őř ŧĥę qūęřy řęŧūřʼnş ʼnő đäŧä."
- },
- "pending-period": "Pęʼnđįʼnģ pęřįőđ"
- },
- "evaluation-behaviour-description1": "Ēväľūäŧįőʼn ģřőūpş äřę čőʼnŧäįʼnęřş ƒőř ęväľūäŧįʼnģ äľęřŧ äʼnđ řęčőřđįʼnģ řūľęş.",
- "evaluation-behaviour-description2": "Åʼn ęväľūäŧįőʼn ģřőūp đęƒįʼnęş äʼn ęväľūäŧįőʼn įʼnŧęřväľ - ĥőŵ őƒŧęʼn ä řūľę įş ęväľūäŧęđ. Åľęřŧ řūľęş ŵįŧĥįʼn ŧĥę şämę ęväľūäŧįőʼn ģřőūp äřę ęväľūäŧęđ ővęř ŧĥę şämę ęväľūäŧįőʼn įʼnŧęřväľ.",
- "evaluation-behaviour-description3": "Pęʼnđįʼnģ pęřįőđ şpęčįƒįęş ĥőŵ ľőʼnģ ŧĥę ŧĥřęşĥőľđ čőʼnđįŧįőʼn mūşŧ þę męŧ þęƒőřę ŧĥę äľęřŧ şŧäřŧş ƒįřįʼnģ. Ŧĥįş őpŧįőʼn ĥęľpş přęvęʼnŧ äľęřŧş ƒřőm þęįʼnģ ŧřįģģęřęđ þy ŧęmpőřäřy įşşūęş.",
- "evaluation-behaviour-for": {
- "error-parsing": "Fäįľęđ ŧő päřşę đūřäŧįőʼn",
- "validation": "Pęʼnđįʼnģ pęřįőđ mūşŧ þę ģřęäŧęř ŧĥäʼn őř ęqūäľ ŧő ŧĥę ęväľūäŧįőʼn įʼnŧęřväľ."
- },
- "evaluation-behaviour-group": {
- "text": "Åľľ řūľęş įʼn ŧĥę şęľęčŧęđ ģřőūp äřę ęväľūäŧęđ ęvęřy {{evaluateEvery}}."
- },
- "pause": {
- "alerting": "Ŧūřʼn őʼn ŧő päūşę ęväľūäŧįőʼn ƒőř ŧĥįş äľęřŧ řūľę.",
- "label": "Päūşę ęväľūäŧįőʼn",
- "recording": "Ŧūřʼn őʼn ŧő päūşę ęväľūäŧįőʼn ƒőř ŧĥįş řęčőřđįʼnģ řūľę."
- }
- },
"alerting": {
"alert-recording-rule-form": {
"evaluation-behaviour": {
@@ -64,13 +41,6 @@
}
}
},
- "alert-rule-form": {
- "evaluation-behaviour": {
- "description": {
- "text": "Đęƒįʼnę ĥőŵ ŧĥę äľęřŧ řūľę įş ęväľūäŧęđ."
- }
- }
- },
"alert-rules": {
"firing-for": "Fįřįʼnģ ƒőř",
"next-evaluation": "Ńęχŧ ęväľūäŧįőʼn",
@@ -177,10 +147,6 @@
"alerting": "Cřęäŧę ä ʼnęŵ ęväľūäŧįőʼn ģřőūp ŧő ūşę ƒőř ŧĥįş äľęřŧ řūľę.",
"recording": "Cřęäŧę ä ʼnęŵ ęväľūäŧįőʼn ģřőūp ŧő ūşę ƒőř ŧĥįş řęčőřđįʼnģ řūľę."
}
- },
- "text": {
- "alerting": "Đęƒįʼnę ĥőŵ őƒŧęʼn ŧĥę äľęřŧ řūľę įş ęväľūäŧęđ.",
- "recording": "Đęƒįʼnę ĥőŵ őƒŧęʼn ŧĥę řęčőřđįʼnģ řūľę įş ęväľūäŧęđ."
}
}
},
@@ -266,6 +232,60 @@
"preview": "Přęvįęŵ",
"previewCondition": "Přęvįęŵ äľęřŧ řūľę čőʼnđįŧįőʼn"
},
+ "rule-form": {
+ "evaluation": {
+ "evaluation-group-and-interval": "Ēväľūäŧįőʼn ģřőūp äʼnđ įʼnŧęřväľ",
+ "group": {
+ "cancel": "Cäʼnčęľ",
+ "create": "Cřęäŧę",
+ "interval": "Ēväľūäŧįőʼn įʼnŧęřväľ"
+ },
+ "group-name": "Ēväľūäŧįőʼn ģřőūp ʼnämę",
+ "group-text": "Åľľ řūľęş įʼn ŧĥę şęľęčŧęđ ģřőūp äřę ęväľūäŧęđ ęvęřy {{evaluateEvery}}.",
+ "new-group": "Ńęŵ ęväľūäŧįőʼn ģřőūp",
+ "pause": {
+ "alerting": "Ŧūřʼn őʼn ŧő päūşę ęväľūäŧįőʼn ƒőř ŧĥįş äľęřŧ řūľę.",
+ "recording": "Ŧūřʼn őʼn ŧő päūşę ęväľūäŧįőʼn ƒőř ŧĥįş řęčőřđįʼnģ řūľę."
+ },
+ "select-folder-before": "Ŝęľęčŧ ä ƒőľđęř þęƒőřę şęŧŧįʼnģ ęväľūäŧįőʼn ģřőūp äʼnđ įʼnŧęřväľ"
+ },
+ "evaluation-behaviour": {
+ "description": {
+ "text": "Đęƒįʼnę ĥőŵ ŧĥę äľęřŧ řūľę įş ęväľūäŧęđ."
+ },
+ "info-help": {
+ "text": "Đęƒįʼnę ŧĥę äľęřŧ þęĥävįőř ŵĥęʼn ŧĥę ęväľūäŧįőʼn ƒäįľş őř ŧĥę qūęřy řęŧūřʼnş ʼnő đäŧä."
+ },
+ "pending-period": "Pęʼnđįʼnģ pęřįőđ"
+ },
+ "evaluation-behaviour-description1": "Ēväľūäŧįőʼn ģřőūpş äřę čőʼnŧäįʼnęřş ƒőř ęväľūäŧįʼnģ äľęřŧ äʼnđ řęčőřđįʼnģ řūľęş.",
+ "evaluation-behaviour-description2": "Åʼn ęväľūäŧįőʼn ģřőūp đęƒįʼnęş äʼn ęväľūäŧįőʼn įʼnŧęřväľ - ĥőŵ őƒŧęʼn ä řūľę įş ęväľūäŧęđ. Åľęřŧ řūľęş ŵįŧĥįʼn ŧĥę şämę ęväľūäŧįőʼn ģřőūp äřę ęväľūäŧęđ ővęř ŧĥę şämę ęväľūäŧįőʼn įʼnŧęřväľ.",
+ "evaluation-behaviour-description3": "Pęʼnđįʼnģ pęřįőđ şpęčįƒįęş ĥőŵ ľőʼnģ ŧĥę ŧĥřęşĥőľđ čőʼnđįŧįőʼn mūşŧ þę męŧ þęƒőřę ŧĥę äľęřŧ şŧäřŧş ƒįřįʼnģ. Ŧĥįş őpŧįőʼn ĥęľpş přęvęʼnŧ äľęřŧş ƒřőm þęįʼnģ ŧřįģģęřęđ þy ŧęmpőřäřy įşşūęş.",
+ "evaluation-behaviour-for": {
+ "error-parsing": "Fäįľęđ ŧő päřşę đūřäŧįőʼn",
+ "validation": "Pęʼnđįʼnģ pęřįőđ mūşŧ þę ģřęäŧęř ŧĥäʼn őř ęqūäľ ŧő ŧĥę ęväľūäŧįőʼn įʼnŧęřväľ."
+ },
+ "folder": {
+ "cancel": "Cäʼnčęľ",
+ "create": "Cřęäŧę",
+ "create-folder": "Cřęäŧę ä ʼnęŵ ƒőľđęř ŧő şŧőřę yőūř äľęřŧ řūľę įʼn.",
+ "creating-new-folder": "Cřęäŧįʼnģ ʼnęŵ ƒőľđęř",
+ "label": "Főľđęř",
+ "name": "Főľđęř ʼnämę",
+ "new-folder": "Ńęŵ ƒőľđęř",
+ "new-folder-or": "őř"
+ },
+ "folder-and-labels": "Øřģäʼnįžę yőūř äľęřŧ řūľę ŵįŧĥ ä ƒőľđęř äʼnđ şęŧ őƒ ľäþęľş.",
+ "folders": {
+ "help-info": "Főľđęřş äřę ūşęđ ƒőř şŧőřįʼnģ äľęřŧ řūľęş. Ÿőū čäʼn ęχŧęʼnđ ŧĥę äččęşş přővįđęđ þy ä řőľę ŧő äľęřŧ řūľęş äʼnđ äşşįģʼn pęřmįşşįőʼnş ŧő įʼnđįvįđūäľ ƒőľđęřş."
+ },
+ "labels": {
+ "help-info": "Ŀäþęľş äřę ūşęđ ŧő đįƒƒęřęʼnŧįäŧę äʼn äľęřŧ ƒřőm äľľ őŧĥęř äľęřŧş.Ÿőū čäʼn ūşę ŧĥęm ƒőř şęäřčĥįʼnģ, şįľęʼnčįʼnģ, äʼnđ řőūŧįʼnģ ʼnőŧįƒįčäŧįőʼnş."
+ },
+ "pause": {
+ "label": "Päūşę ęväľūäŧįőʼn"
+ }
+ },
"rule-groups": {
"delete": {
"success": "Ŝūččęşşƒūľľy đęľęŧęđ řūľę ģřőūp"