[ML] Review UI text of population, advanced, categ, rare, and geo wizards (#149407)

## Summary

This PR adjusts the anomaly detection UI text to be shorter, cleaner,
and more in line with the EUI guidelines. The field names above the
field selectors are removed.
This commit is contained in:
István Zoltán Szabó 2023-01-27 10:52:57 +01:00 committed by GitHub
parent 7bce7c934d
commit b63be4484e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 181 additions and 182 deletions

View file

@ -155,6 +155,9 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = `
</EuiFormRow>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer
size="m"
/>
<EuiFlexGroup
data-test-subj="mlJobEditCustomUrlItem_1"
key="url_1"
@ -306,6 +309,9 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = `
</EuiFormRow>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer
size="m"
/>
<EuiFlexGroup
data-test-subj="mlJobEditCustomUrlItem_2"
key="url_2"
@ -457,5 +463,8 @@ exports[`CustomUrlList renders a list of custom URLs 1`] = `
</EuiFormRow>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer
size="m"
/>
</div>
`;

View file

@ -15,6 +15,7 @@ import {
EuiFormRow,
EuiToolTip,
EuiTextArea,
EuiSpacer,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
@ -149,129 +150,135 @@ export const CustomUrlList: FC<CustomUrlListProps> = ({ job, customUrls, setCust
: [];
return (
<EuiFlexGroup key={`url_${index}`} data-test-subj={`mlJobEditCustomUrlItem_${index}`}>
<EuiFlexItem grow={false}>
<EuiFormRow
label={
<FormattedMessage
id="xpack.ml.customUrlEditorList.labelLabel"
defaultMessage="Label"
/>
}
isInvalid={isInvalidLabel}
error={invalidLabelError}
data-test-subj="mlJobEditCustomUrlItemLabel"
>
<EuiFieldText
value={label}
<>
<EuiFlexGroup key={`url_${index}`} data-test-subj={`mlJobEditCustomUrlItem_${index}`}>
<EuiFlexItem grow={false}>
<EuiFormRow
label={
<FormattedMessage
id="xpack.ml.customUrlEditorList.labelLabel"
defaultMessage="Label"
/>
}
isInvalid={isInvalidLabel}
onChange={(e) => onLabelChange(e, index)}
data-test-subj={`mlJobEditCustomUrlLabelInput_${index}`}
/>
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem>
<EuiFormRow
fullWidth={true}
label={
<FormattedMessage id="xpack.ml.customUrlEditorList.urlLabel" defaultMessage="URL" />
}
>
{index === expandedUrlIndex ? (
<EuiTextArea
inputRef={(input: HTMLTextAreaElement | null) => {
if (input) {
input.focus();
}
}}
fullWidth={true}
value={customUrl.url_value}
onChange={(e) => onUrlValueChange(e, index)}
onBlur={() => {
setExpandedUrlIndex(null);
}}
data-test-subj={`mlJobEditCustomUrlTextarea_${index}`}
/>
) : (
error={invalidLabelError}
data-test-subj="mlJobEditCustomUrlItemLabel"
>
<EuiFieldText
fullWidth={true}
value={customUrl.url_value}
readOnly={true}
onFocus={() => setExpandedUrlIndex(index)}
data-test-subj={`mlJobEditCustomUrlInput_${index}`}
value={label}
isInvalid={isInvalidLabel}
onChange={(e) => onLabelChange(e, index)}
data-test-subj={`mlJobEditCustomUrlLabelInput_${index}`}
/>
)}
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow
label={
<FormattedMessage
id="xpack.ml.customUrlEditorList.timeRangeLabel"
defaultMessage="Time range"
/>
}
error={invalidIntervalError}
isInvalid={isInvalidTimeRange}
>
<EuiFieldText
value={(customUrl as KibanaUrlConfig).time_range || ''}
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem>
<EuiFormRow
fullWidth={true}
label={
<FormattedMessage id="xpack.ml.customUrlEditorList.urlLabel" defaultMessage="URL" />
}
>
{index === expandedUrlIndex ? (
<EuiTextArea
inputRef={(input: HTMLTextAreaElement | null) => {
if (input) {
input.focus();
}
}}
fullWidth={true}
value={customUrl.url_value}
onChange={(e) => onUrlValueChange(e, index)}
onBlur={() => {
setExpandedUrlIndex(null);
}}
data-test-subj={`mlJobEditCustomUrlTextarea_${index}`}
/>
) : (
<EuiFieldText
fullWidth={true}
value={customUrl.url_value}
readOnly={true}
onFocus={() => setExpandedUrlIndex(index)}
data-test-subj={`mlJobEditCustomUrlInput_${index}`}
/>
)}
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow
label={
<FormattedMessage
id="xpack.ml.customUrlEditorList.timeRangeLabel"
defaultMessage="Time range"
/>
}
error={invalidIntervalError}
isInvalid={isInvalidTimeRange}
placeholder={TIME_RANGE_TYPE.AUTO}
onChange={(e) => onTimeRangeChange(e, index)}
/>
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow hasEmptyLabelSpace>
<EuiToolTip
content={
<FormattedMessage
id="xpack.ml.customUrlEditorList.testCustomUrlTooltip"
defaultMessage="Test custom URL"
/>
}
>
<EuiButtonIcon
size="s"
color="primary"
onClick={() => onTestButtonClick(index)}
iconType="popout"
aria-label={i18n.translate('xpack.ml.customUrlEditorList.testCustomUrlAriaLabel', {
defaultMessage: 'Test custom URL',
})}
data-test-subj="mlJobEditTestCustomUrlButton"
<EuiFieldText
value={(customUrl as KibanaUrlConfig).time_range || ''}
isInvalid={isInvalidTimeRange}
placeholder={TIME_RANGE_TYPE.AUTO}
onChange={(e) => onTimeRangeChange(e, index)}
/>
</EuiToolTip>
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow hasEmptyLabelSpace>
<EuiToolTip
content={
<FormattedMessage
id="xpack.ml.customUrlEditorList.deleteCustomUrlTooltip"
defaultMessage="Delete custom URL"
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow hasEmptyLabelSpace>
<EuiToolTip
content={
<FormattedMessage
id="xpack.ml.customUrlEditorList.testCustomUrlTooltip"
defaultMessage="Test custom URL"
/>
}
>
<EuiButtonIcon
size="s"
color="primary"
onClick={() => onTestButtonClick(index)}
iconType="popout"
aria-label={i18n.translate(
'xpack.ml.customUrlEditorList.testCustomUrlAriaLabel',
{
defaultMessage: 'Test custom URL',
}
)}
data-test-subj="mlJobEditTestCustomUrlButton"
/>
}
>
<EuiButtonIcon
size="s"
color="danger"
onClick={() => onDeleteButtonClick(index)}
iconType="trash"
aria-label={i18n.translate(
'xpack.ml.customUrlEditorList.deleteCustomUrlAriaLabel',
{
defaultMessage: 'Delete custom URL',
}
)}
data-test-subj={`mlJobEditDeleteCustomUrlButton_${index}`}
/>
</EuiToolTip>
</EuiFormRow>
</EuiFlexItem>
</EuiFlexGroup>
</EuiToolTip>
</EuiFormRow>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiFormRow hasEmptyLabelSpace>
<EuiToolTip
content={
<FormattedMessage
id="xpack.ml.customUrlEditorList.deleteCustomUrlTooltip"
defaultMessage="Delete custom URL"
/>
}
>
<EuiButtonIcon
size="s"
color="danger"
onClick={() => onDeleteButtonClick(index)}
iconType="trash"
aria-label={i18n.translate(
'xpack.ml.customUrlEditorList.deleteCustomUrlAriaLabel',
{
defaultMessage: 'Delete custom URL',
}
)}
data-test-subj={`mlJobEditDeleteCustomUrlButton_${index}`}
/>
</EuiToolTip>
</EuiFormRow>
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer size="m" />
</>
);
});

View file

@ -29,7 +29,7 @@ export const Description: FC<Props> = memo(({ children, validation }) => {
/>
}
>
<EuiFormRow label={title} error={validation.message} isInvalid={validation.valid === false}>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -29,7 +29,7 @@ export const Description: FC<Props> = memo(({ children, validation }) => {
/>
}
>
<EuiFormRow label={title} error={validation.message} isInvalid={validation.valid === false}>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -29,7 +29,7 @@ export const Description: FC<Props> = memo(({ children, validation }) => {
/>
}
>
<EuiFormRow label={title} error={validation.message} isInvalid={validation.valid === false}>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -24,7 +24,7 @@ export const Description: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -42,9 +42,7 @@ export const AdditionalSection: FC<Props> = ({ additionalExpanded, setAdditional
<CustomUrlsSelection />
</EuiFlexItem>
</EuiFlexGroup>
<EuiSpacer />
<EuiFlexGroup gutterSize="xl" style={{ marginLeft: '0px', marginRight: '0px' }}>
<EuiFlexItem>
<CalendarsSelection />

View file

@ -28,7 +28,7 @@ export const Description: FC = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.jobDetailsStep.additionalSection.calendarsSelection.description"
defaultMessage="Contains a list of scheduled events that you want to ignore, such as planned system outages or public holidays. {learnMoreLink}"
defaultMessage="A list of scheduled events you want to ignore, such as planned system outages or public holidays. {learnMoreLink}"
values={{
learnMoreLink: (
<EuiLink href={docsUrl} target="_blank">

View file

@ -27,7 +27,7 @@ export const AggDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -51,7 +51,7 @@ export const FieldDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -75,7 +75,7 @@ export const ByFieldDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -99,7 +99,7 @@ export const OverFieldDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -123,7 +123,7 @@ export const PartitionFieldDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -147,7 +147,7 @@ export const ExcludeFrequentDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>
@ -172,7 +172,7 @@ export const DescriptionDescription: FC = memo(({ children }) => {
/>
}
>
<EuiFormRow label={title} fullWidth={true}>
<EuiFormRow fullWidth={true}>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import React, { Fragment, FC, useContext, useEffect, useState } from 'react';
import React, { FC, useContext, useEffect, useState } from 'react';
import { FormattedMessage } from '@kbn/i18n-react';
import { i18n } from '@kbn/i18n';
@ -99,7 +99,7 @@ export const DetectorList: FC<Props> = ({ isActive, onEditJob, onDeleteJob }) =>
};
return (
<Fragment>
<>
<EuiTitle size="xs">
<h3>
<FormattedMessage
@ -126,16 +126,16 @@ export const DetectorList: FC<Props> = ({ isActive, onEditJob, onDeleteJob }) =>
)}
</EuiFlexItem>
{isActive && (
<EuiFlexItem grow={false} style={{ margin: '8px' }}>
<EuiFlexItem grow={false}>
<Buttons index={i} />
</EuiFlexItem>
)}
</EuiFlexGroup>
{d.detector_description !== undefined && (
<Fragment>
<>
<EuiHorizontalRule margin="s" />
<StringifiedDetector detector={d} />
</Fragment>
</>
)}
</EuiPanel>
</EuiFlexItem>
@ -145,7 +145,8 @@ export const DetectorList: FC<Props> = ({ isActive, onEditJob, onDeleteJob }) =>
<EuiSpacer size="m" />
<DetectorsValidationWarning validation={validation} />
</Fragment>
<EuiSpacer size="m" />
</>
);
};
@ -155,7 +156,7 @@ const NoDetectorsWarning: FC<{ show: boolean }> = ({ show }) => {
}
return (
<Fragment>
<>
<EuiSpacer size="s" />
<EuiCallOut
title={i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.noDetectorsCallout.title', {
@ -169,7 +170,7 @@ const NoDetectorsWarning: FC<{ show: boolean }> = ({ show }) => {
defaultMessage="At least one detector is needed to create a job."
/>
</EuiCallOut>
</Fragment>
</>
);
};
@ -178,12 +179,12 @@ const DetectorsValidationWarning: FC<{ validation: Validation }> = ({ validation
return null;
}
return (
<Fragment>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<Fragment />
</EuiFormRow>
<>
<EuiSpacer size="s" />
</Fragment>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<></>
</EuiFormRow>
</>
);
};

View file

@ -23,12 +23,12 @@ export const ExtraSettings: FC = () => {
<EuiFlexGroup gutterSize="xl">
<EuiFlexItem>
<CategorizationField />
{showCategorizationPerPartitionField && <CategorizationPerPartitionField />}
</EuiFlexItem>
<EuiFlexItem>
<SummaryCountField />
</EuiFlexItem>
</EuiFlexGroup>
{showCategorizationPerPartitionField && <CategorizationPerPartitionField />}
</Fragment>
);
};

View file

@ -25,7 +25,7 @@ export const Description: FC<Props> = memo(({ children, validation }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.bucketSpan.description"
defaultMessage="The interval for time series analysis, typically between 15m and 1h."
defaultMessage="The interval for time series analysis, typically 15m1h."
/>
}
>

View file

@ -29,7 +29,7 @@ export const CountCard: FC<CardProps> = ({ onClick, isSelected }) => (
<>
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.categorizationDetectorSelect.countCard.description"
defaultMessage="Look for anomalies in the event rate of a particular category."
defaultMessage="Look for anomalies in the event rate of a category."
/>
</>
}

View file

@ -36,7 +36,7 @@ export const Description: FC<Props> = memo(({ children, isOptional }) => {
</>
}
>
<EuiFormRow label={title}>
<EuiFormRow>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -32,14 +32,7 @@ export const CategorizationPerPartitionField: FC = () => {
return (
<Description>
<EuiFormRow
label={
<FormattedMessage
id="xpack.ml.newJob.wizard.extraStep.categorizationJob.perPartitionCategorizationLabel"
defaultMessage="Enable per-partition categorization"
/>
}
>
<EuiFormRow>
<CategorizationPerPartitionSwitch />
</EuiFormRow>

View file

@ -15,7 +15,7 @@ interface Props {
}
export const Description: FC<Props> = memo(({ children }) => {
const title = i18n.translate('xpack.ml.newJob.wizard.perPartitionCategorization.enable.title', {
defaultMessage: 'Enable per-partition categorization',
defaultMessage: 'Per-partition categorization',
});
return (
<EuiDescribedFormGroup
@ -23,7 +23,7 @@ export const Description: FC<Props> = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.perPartitionCategorization.enable.description"
defaultMessage="If per-partition categorization is enabled then categories are determined independently for each value of the partition field."
defaultMessage="Determine categories independently for each value of the partition field."
/>
}
>

View file

@ -8,7 +8,7 @@
import React, { memo, FC } from 'react';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
import { EuiDescribedFormGroup } from '@elastic/eui';
export const Description: FC = memo(({ children }) => {
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.geoField.title', {
@ -20,13 +20,11 @@ export const Description: FC = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.geoField.description"
defaultMessage="Select a geo field to detect anomalies in the geographic location of the input data."
defaultMessage="A geo field to detect anomalies in the geographic location of the input data."
/>
}
>
<EuiFormRow label={title}>
<>{children}</>
</EuiFormRow>
<>{children}</>
</EuiDescribedFormGroup>
);
});

View file

@ -20,7 +20,7 @@ export const Description: FC = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.influencers.description"
defaultMessage="Categorical fields that have influence on the results. Who/what might you 'blame' for an anomaly? 1-3 influencers are recommended."
defaultMessage="Categorical fields that influence the results. Who/what might you 'blame' for an anomaly? 1-3 influencers are recommended."
/>
}
>

View file

@ -8,7 +8,7 @@
import React, { memo, FC } from 'react';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
import { EuiDescribedFormGroup } from '@elastic/eui';
export const Description: FC = memo(({ children }) => {
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.populationField.title', {
@ -20,13 +20,11 @@ export const Description: FC = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.populationField.description"
defaultMessage="All values in the selected field will be modeled together as a population. This analysis type is recommended for high cardinality data."
defaultMessage="All values in the selected field will be modeled together as a population."
/>
}
>
<EuiFormRow label={title}>
<>{children}</>
</EuiFormRow>
<>{children}</>
</EuiDescribedFormGroup>
);
});

View file

@ -8,7 +8,7 @@
import React, { memo, FC } from 'react';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
import { EuiDescribedFormGroup, EuiFormRow } from '@elastic/eui';
import { EuiDescribedFormGroup } from '@elastic/eui';
export const Description: FC = memo(({ children }) => {
const title = i18n.translate('xpack.ml.newJob.wizard.pickFieldsStep.splitRareField.title', {
@ -20,13 +20,11 @@ export const Description: FC = memo(({ children }) => {
description={
<FormattedMessage
id="xpack.ml.newJob.wizard.pickFieldsStep.rareField.description"
defaultMessage="Select a field in which to detect rare values."
defaultMessage="A field in which to detect rare values."
/>
}
>
<EuiFormRow label={title}>
<>{children}</>
</EuiFormRow>
<>{children}</>
</EuiDescribedFormGroup>
);
});

View file

@ -44,7 +44,7 @@ export const Description: FC<Props> = memo(({ children, validation }) => {
/>
}
>
<EuiFormRow label={title} error={validation.message} isInvalid={validation.valid === false}>
<EuiFormRow error={validation.message} isInvalid={validation.valid === false}>
<>{children}</>
</EuiFormRow>
</EuiDescribedFormGroup>

View file

@ -167,7 +167,7 @@ export const Page: FC = () => {
}),
description: i18n.translate('xpack.ml.newJob.wizard.jobType.populationDescription', {
defaultMessage:
'Detect activity that is unusual compared to the behavior of the population.',
'Detect unusual activity in a population. Recommended for high cardinality data.',
}),
id: 'mlJobTypeLinkPopulationJob',
},
@ -235,7 +235,7 @@ export const Page: FC = () => {
defaultMessage: 'Geo',
}),
description: i18n.translate('xpack.ml.newJob.wizard.jobType.geoDescription', {
defaultMessage: 'Detect anomalies in the geographic location of the input data.',
defaultMessage: 'Detect anomalies in the geographic location of the data.',
}),
id: 'mlJobTypeLinkGeoJob',
});

View file

@ -22048,7 +22048,6 @@
"xpack.ml.newJob.wizard.editJsonButton": "Modifier le JSON",
"xpack.ml.newJob.wizard.estimateModelMemoryError": "La limite de mémoire du modèle n'a pas pu être calculée",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.categorizationPerPartitionFieldLabel": "Champ de partition",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.perPartitionCategorizationLabel": "Activer la catégorisation par partition",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.stopOnWarnLabel": "Arrêter après avertissement",
"xpack.ml.newJob.wizard.jobCreatorTitle.advanced": "Avancé",
"xpack.ml.newJob.wizard.jobCreatorTitle.categorization": "Catégorisation",
@ -36512,4 +36511,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "Présentation"
}
}
}

View file

@ -22028,7 +22028,6 @@
"xpack.ml.newJob.wizard.editJsonButton": "JSON を編集",
"xpack.ml.newJob.wizard.estimateModelMemoryError": "モデルメモリ上限を計算できませんでした",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.categorizationPerPartitionFieldLabel": "パーティションフィールド",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.perPartitionCategorizationLabel": "パーティション単位の分類を有効にする",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.stopOnWarnLabel": "警告時に停止する",
"xpack.ml.newJob.wizard.jobCreatorTitle.advanced": "高度な設定",
"xpack.ml.newJob.wizard.jobCreatorTitle.categorization": "カテゴリー分け",
@ -36480,4 +36479,4 @@
"xpack.painlessLab.title": "Painless Lab",
"xpack.painlessLab.walkthroughButtonLabel": "実地検証"
}
}
}

View file

@ -22058,7 +22058,6 @@
"xpack.ml.newJob.wizard.editJsonButton": "编辑 JSON",
"xpack.ml.newJob.wizard.estimateModelMemoryError": "无法计算模型内存限制",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.categorizationPerPartitionFieldLabel": "分区字段",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.perPartitionCategorizationLabel": "启用按分区分类",
"xpack.ml.newJob.wizard.extraStep.categorizationJob.stopOnWarnLabel": "显示警告时停止",
"xpack.ml.newJob.wizard.jobCreatorTitle.advanced": "高级",
"xpack.ml.newJob.wizard.jobCreatorTitle.categorization": "归类",
@ -36517,4 +36516,4 @@
"xpack.painlessLab.title": "Painless 实验室",
"xpack.painlessLab.walkthroughButtonLabel": "指导"
}
}
}