= useMemo(() => {
+ return [
+ {
+ title: t('label.name'),
+ dataIndex: 'name',
+ width: '200px',
+ key: 'name',
+ render: (_, record) => {
+ let link = '';
+ switch (type) {
+ case 'policy':
+ link = getPolicyWithFqnPath(record.fullyQualifiedName || '');
+
+ break;
+ case 'team':
+ link = getTeamsWithFqnPath(record.fullyQualifiedName || '');
+
+ break;
+ case 'user':
+ link = getUserPath(record.fullyQualifiedName || '');
+
+ break;
+
+ default:
+ break;
+ }
+
+ return (
+
+ {getEntityName(record)}
+
+ );
+ },
+ },
+ {
+ title: t('label.description'),
+ dataIndex: 'description',
+ key: 'description',
+ render: (_, record) => (
+
+ ),
+ },
+ {
+ title: t('label.actions'),
+ dataIndex: 'actions',
+ width: '80px',
+ key: 'actions',
+ render: (_, record) => {
+ return (
+
+
+
+ );
+ },
+ },
+ ];
+ }, []);
+
+ return (
+
+ );
+};
+
+export default RolesDetailPageList;
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/DashboardDetailsUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/DashboardDetailsUtils.ts
index 442be6e9941..1f005510d0d 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/DashboardDetailsUtils.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/DashboardDetailsUtils.ts
@@ -11,6 +11,7 @@
* limitations under the License.
*/
+import i18next from 'i18next';
import { TabSpecificField } from '../enums/entity.enum';
import { ChartType } from '../pages/DashboardDetailsPage/DashboardDetailsPage.component';
import { sortTagsCaseInsensitive } from './CommonUtils';
@@ -20,21 +21,21 @@ ${TabSpecificField.USAGE_SUMMARY}, ${TabSpecificField.CHARTS},${TabSpecificField
export const dashboardDetailsTabs = [
{
- name: 'Details',
+ name: i18next.t('label.details'),
path: 'details',
},
{
- name: 'Activity Feeds & Tasks',
+ name: i18next.t('label.activity-feed-and-task-plural'),
path: 'activity_feed',
field: TabSpecificField.ACTIVITY_FEED,
},
{
- name: 'Lineage',
+ name: i18next.t('label.lineage'),
path: 'lineage',
field: TabSpecificField.LINEAGE,
},
{
- name: 'Custom Properties',
+ name: i18next.t('label.custom-properties'),
path: 'custom_properties',
},
];
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseDetailsUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseDetailsUtils.ts
index 42a22094fa6..317f7e05466 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseDetailsUtils.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseDetailsUtils.ts
@@ -1,12 +1,13 @@
+import i18next from 'i18next';
import { TabSpecificField } from '../enums/entity.enum';
export const databaseDetailsTabs = [
{
- name: 'Schemas',
+ name: i18next.t('label.schemas'),
path: 'schemas',
},
{
- name: 'Activity Feeds',
+ name: i18next.t('label.activity-feeds'),
path: 'activity_feed',
field: TabSpecificField.ACTIVITY_FEED,
},
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/DatasetDetailsUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/DatasetDetailsUtils.ts
index 01b7c99f7da..0b313407f5e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/DatasetDetailsUtils.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/DatasetDetailsUtils.ts
@@ -11,6 +11,7 @@
* limitations under the License.
*/
+import i18next from 'i18next';
import { TabSpecificField } from '../enums/entity.enum';
export const defaultFields = `${TabSpecificField.COLUMNS}, ${TabSpecificField.USAGE_SUMMARY},
@@ -19,41 +20,41 @@ ${TabSpecificField.DATAMODEL},${TabSpecificField.TABLE_CONSTRAINTS},${TabSpecifi
export const datasetTableTabs = [
{
- name: 'Schema',
+ name: i18next.t('label.schema'),
path: 'schema',
},
{
- name: 'Activity Feeds & Tasks',
+ name: i18next.t('label.activity-feed-and-task-plural'),
path: 'activity_feed',
field: TabSpecificField.ACTIVITY_FEED,
},
{
- name: 'Sample Data',
+ name: i18next.t('label.sample-data'),
path: 'sample_data',
},
{
- name: 'Queries',
+ name: i18next.t('label.query-plural'),
path: 'table_queries',
},
{
- name: 'Profiler',
+ name: i18next.t('label.profiler'),
path: 'profiler',
},
{
- name: 'Data Quality',
+ name: i18next.t('label.data-quality'),
path: 'data-quality',
},
{
- name: 'Lineage',
+ name: i18next.t('label.lineage'),
path: 'lineage',
field: TabSpecificField.LINEAGE,
},
{
- name: 'DBT',
+ name: i18next.t('label.dbt-uppercase'),
path: 'dbt',
},
{
- name: 'Custom Properties',
+ name: i18next.t('label.custom-properties'),
path: 'custom_properties',
},
];
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
index eff1b2b11a0..eecb15c5686 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
@@ -11,6 +11,7 @@
* limitations under the License.
*/
+import i18next from 'i18next';
import { isEmpty, isNil, isUndefined, lowerCase, startCase } from 'lodash';
import { Bucket, LeafNodes, LineagePos } from 'Models';
import React, { Fragment } from 'react';
@@ -113,7 +114,7 @@ export const getEntityOverview = (
const overview = [
{
- name: 'Service',
+ name: i18next.t('label.service'),
value: service,
url: getServiceDetailsPath(
service,
@@ -122,7 +123,7 @@ export const getEntityOverview = (
isLink: true,
},
{
- name: 'Database',
+ name: i18next.t('label.database'),
value: database,
url: getDatabaseDetailsPath(
getPartialNameFromTableFQN(
@@ -134,7 +135,7 @@ export const getEntityOverview = (
isLink: true,
},
{
- name: 'Schema',
+ name: i18next.t('label.schema'),
value: schema,
url: getDatabaseSchemaDetailsPath(
getPartialNameFromTableFQN(
@@ -146,33 +147,33 @@ export const getEntityOverview = (
isLink: true,
},
{
- name: 'Owner',
+ name: i18next.t('label.owner'),
value: getEntityName(owner) || '--',
url: getTeamAndUserDetailsPath(owner?.name || ''),
isLink: owner ? owner.type === 'team' : false,
},
{
- name: 'Tier',
+ name: i18next.t('label.tier'),
value: tier ? tier.split(FQN_SEPARATOR_CHAR)[1] : '--',
isLink: false,
},
{
- name: 'Usage',
+ name: i18next.t('label.usage'),
value: usage,
isLink: false,
},
{
- name: 'Queries',
+ name: i18next.t('label.query-plural'),
value: `${queries} past week`,
isLink: false,
},
{
- name: 'Columns',
+ name: i18next.t('label.columns-plural'),
value: columns ? columns.length : '--',
isLink: false,
},
{
- name: 'Rows',
+ name: i18next.t('label.row-plural'),
value: profile && profile?.rowCount ? profile.rowCount : '--',
isLink: false,
},
@@ -188,7 +189,7 @@ export const getEntityOverview = (
const overview = [
{
- name: 'Service',
+ name: i18next.t('label.service'),
value: service?.name as string,
url: getServiceDetailsPath(
service?.name as string,
@@ -197,18 +198,18 @@ export const getEntityOverview = (
isLink: true,
},
{
- name: 'Owner',
+ name: i18next.t('label.owner'),
value: getEntityName(owner) || '--',
url: getTeamAndUserDetailsPath(owner?.name || ''),
isLink: owner ? owner.type === 'team' : false,
},
{
- name: 'Tier',
+ name: i18next.t('label.tier'),
value: tier ? tier.split(FQN_SEPARATOR_CHAR)[1] : '--',
isLink: false,
},
{
- name: `${serviceType} url`,
+ name: `${serviceType} ${i18next.t('label.url-lowercase')}`,
value: fullyQualifiedName?.split(FQN_SEPARATOR_CHAR)[1] as string,
url: pipelineUrl as string,
isLink: true,
@@ -231,7 +232,7 @@ export const getEntityOverview = (
const overview = [
{
- name: 'Service',
+ name: i18next.t('label.service'),
value: service?.name as string,
url: getServiceDetailsPath(
service?.name as string,
@@ -240,18 +241,18 @@ export const getEntityOverview = (
isLink: true,
},
{
- name: 'Owner',
+ name: i18next.t('label.owner'),
value: getEntityName(owner) || '--',
url: getTeamAndUserDetailsPath(owner?.name || ''),
isLink: owner ? owner.type === 'team' : false,
},
{
- name: 'Tier',
+ name: i18next.t('label.tier'),
value: tier ? tier.split(FQN_SEPARATOR_CHAR)[1] : '--',
isLink: false,
},
{
- name: `${serviceType} url`,
+ name: `${serviceType} ${i18next.t('label.url-lowercase')}`,
value:
displayName ||
(fullyQualifiedName?.split(FQN_SEPARATOR_CHAR)[1] as string),
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityVersionUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/EntityVersionUtils.tsx
index 8aba97cf9c0..e9b7572efa3 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityVersionUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityVersionUtils.tsx
@@ -19,27 +19,19 @@ import {
diffWords,
diffWordsWithSpace,
} from 'diff';
-import { isEmpty, isUndefined, uniqueId } from 'lodash';
+import { t } from 'i18next';
+import { isUndefined, uniqueId } from 'lodash';
import React, { Fragment } from 'react';
import ReactDOMServer from 'react-dom/server';
-import { Link } from 'react-router-dom';
-import { FQN_SEPARATOR_CHAR } from '../constants/char.constants';
-import {
- DESCRIPTIONLENGTH,
- getTeamAndUserDetailsPath,
-} from '../constants/constants';
import { EntityField } from '../constants/Feeds.constants';
-import { ChangeType } from '../enums/entity.enum';
import { Column } from '../generated/entity/data/table';
import {
ChangeDescription,
FieldChange,
} from '../generated/entity/services/databaseService';
import { TagLabel } from '../generated/type/tagLabel';
-import { getEntityName } from './CommonUtils';
import { TagLabelWithStatus } from './EntityVersionUtils.interface';
import { isValidJSONString } from './StringsUtils';
-import { getEntityLink } from './TableUtils';
export const getDiffByFieldName = (
name: string,
@@ -143,328 +135,6 @@ export const getTagsDiff = (
return result;
};
-export const getPreposition = (type: ChangeType) => {
- switch (type) {
- case 'Added':
- return 'to';
-
- case 'Removed':
- return 'from';
-
- case 'Updated':
- return 'of';
-
- default:
- return '';
- }
-};
-
-const getColumnName = (column: string) => {
- const name = column.split(FQN_SEPARATOR_CHAR);
- const length = name.length;
-
- return name
- .slice(length > 1 ? 1 : 0, length > 1 ? length - 1 : length)
- .join(FQN_SEPARATOR_CHAR);
-};
-
-const getLinkWithColumn = (column: string, eFqn: string, eType: string) => {
- return (
-
- {getColumnName(column)}
-
- );
-};
-
-const getDescriptionText = (value: string) => {
- const length = value.length;
-
- return `${value.slice(0, DESCRIPTIONLENGTH)}${
- length > DESCRIPTIONLENGTH ? '...' : ''
- }`;
-};
-
-const getDescriptionElement = (fieldChange: FieldChange) => {
- return fieldChange?.newValue && fieldChange?.oldValue ? (
-
-
- {`${getDescriptionText(
- fieldChange?.newValue
- )}`}
-
- ) : fieldChange?.newValue ? (
-
-
-
- {`${getDescriptionText(fieldChange?.newValue)}`}
-
-
- ) : (
-
-
-
- {`${getDescriptionText(fieldChange?.oldValue)}`}
-
-
- );
-};
-
-export const feedSummaryFromatter = (
- fieldChange: FieldChange,
- type: ChangeType,
- _entityName: string,
- entityType: string,
- entityFQN: string
-) => {
- const value = JSON.parse(
- isValidJSONString(fieldChange?.newValue)
- ? fieldChange?.newValue
- : isValidJSONString(fieldChange?.oldValue)
- ? fieldChange?.oldValue
- : '{}'
- );
- const oldValue = JSON.parse(
- isValidJSONString(fieldChange?.oldValue) ? fieldChange?.oldValue : '{}'
- );
- const newValue = JSON.parse(
- isValidJSONString(fieldChange?.newValue) ? fieldChange?.newValue : '{}'
- );
- let summary: JSX.Element;
- switch (true) {
- case fieldChange?.name?.startsWith('column'): {
- if (fieldChange?.name?.endsWith('tags')) {
- summary = (
-
- {`${type} tags ${value
- ?.map((val: TagLabel) => val?.tagFQN)
- ?.join(', ')} ${getPreposition(type)} column`}
- {getLinkWithColumn(
- fieldChange?.name as string,
- entityFQN,
- entityType
- )}
-
- );
-
- break;
- } else if (fieldChange?.name?.endsWith(EntityField.DESCRIPTION)) {
- summary = (
-
- {`${
- fieldChange?.newValue && fieldChange?.oldValue
- ? type
- : fieldChange?.newValue
- ? 'Added'
- : 'Removed'
- } column description for`}
- {getLinkWithColumn(
- fieldChange?.name as string,
- entityFQN,
- entityType
- )}
- {isEmpty(value) ? getDescriptionElement(fieldChange) : ''}
-
- );
-
- break;
- } else if (fieldChange?.name === EntityField.COLUMNS) {
- const length = value?.length ?? 0;
- summary = (
-
- {`${type} ${fieldChange?.name}`}{' '}
- {value?.map((column: Column, i: number) => (
-
- {getLinkWithColumn(column.name, entityFQN, entityType)}{' '}
- {i !== length - 1 ? ', ' : ''}
-
- ))}
-
- );
-
- break;
- } else {
- summary = (
-
- {`${type}`}
- {getLinkWithColumn(
- fieldChange?.name as string,
- entityFQN,
- entityType
- )}
-
- );
-
- break;
- }
- }
-
- case fieldChange?.name === 'tags': {
- const tier = value?.find((t: TagLabel) => t?.tagFQN?.startsWith('Tier'));
- const tags = value?.filter(
- (t: TagLabel) => !t?.tagFQN?.startsWith('Tier')
- );
- summary = (
-
- {tags?.length > 0 ? (
-
{`${type} tags ${tags
- ?.map((val: TagLabel) => val?.tagFQN)
- ?.join(', ')}`}
- ) : null}
- {tier ? (
-
{`${type} tier ${
- tier?.tagFQN?.split(FQN_SEPARATOR_CHAR)[1]
- }`}
- ) : null}
-
- );
-
- break;
- }
-
- case fieldChange?.name === 'owner': {
- const ownerName = getEntityName(newValue) || getEntityName(value);
- const ownerText =
- !isEmpty(oldValue) && !isEmpty(newValue) ? (
-
- {newValue?.type === 'team' ? (
-
- {ownerName}
-
- ) : (
-
- {ownerName}
-
- )}
-
- ) : (
-
- {value?.type === 'team' ? (
-
- {ownerName}
-
- ) : (
-
- {ownerName}
-
- )}
-
- );
- summary = (
- 32,
- })}
- key={uniqueId()}>
- {`Assigned ownership to ${ownerText}`}
-
- );
-
- break;
- }
-
- case fieldChange?.name === EntityField.DESCRIPTION: {
- summary = (
-
- {`${
- fieldChange?.newValue && fieldChange?.oldValue
- ? type
- : fieldChange?.newValue
- ? 'Added'
- : 'Removed'
- } description`}
- {getDescriptionElement(fieldChange)}
-
- );
-
- break;
- }
-
- case fieldChange?.name === 'followers': {
- summary = (
- {`${
- fieldChange?.newValue ? 'Started following' : 'Unfollowed'
- } ${_entityName}`}
- );
-
- break;
- }
-
- default:
- summary = {`${type} ${fieldChange?.name}`}
;
-
- break;
- }
-
- return summary;
-};
-
-export const getFeedSummary = (
- changeDescription: ChangeDescription,
- entityName: string,
- entityType: string,
- entityFQN: string
-) => {
- const fieldsAdded = [...(changeDescription?.fieldsAdded || [])];
- const fieldsDeleted = [...(changeDescription?.fieldsDeleted || [])];
- const fieldsUpdated = [...(changeDescription?.fieldsUpdated || [])];
-
- return (
-
- {fieldsDeleted?.length ? (
-
- {fieldsDeleted?.map((d) => (
-
- {feedSummaryFromatter(
- d,
- ChangeType.REMOVED,
- entityName,
- entityType,
- entityFQN
- )}
-
- ))}
-
- ) : null}
- {fieldsAdded?.length > 0 ? (
-
- {fieldsAdded?.map((a) => (
-
- {feedSummaryFromatter(
- a,
- ChangeType.ADDED,
- entityName,
- entityType,
- entityFQN
- )}
-
- ))}
-
- ) : null}
- {fieldsUpdated?.length ? (
-
- {fieldsUpdated?.map((u) => (
-
- {feedSummaryFromatter(
- u,
- ChangeType.UPDATED,
- entityName,
- entityType,
- entityFQN
- )}
-
- ))}
-
- ) : null}
-
- );
-};
-
export const summaryFormatter = (fieldChange: FieldChange) => {
const value = JSON.parse(
isValidJSONString(fieldChange?.newValue)
@@ -511,31 +181,53 @@ export const getSummary = (
{isDeleteUpdated
.map((field) => {
return field.newValue
- ? 'Data asset has been deleted'
- : 'Data asset has been restored';
+ ? t('label.data-asset-has-been-action-type', {
+ actionType: t('label.deleted-lowercase'),
+ })
+ : t('label.data-asset-has-been-action-type', {
+ actionType: t('label.restored-lowercase'),
+ });
})
.join(', ')}
) : null}
{fieldsAdded?.length > 0 ? (
- {`${isPrefix ? '+ Added' : ''} ${fieldsAdded
+ {`${isPrefix ? `+ ${t('label.added')}` : ''} ${fieldsAdded
.map(summaryFormatter)
- .join(', ')} ${!isPrefix ? `has been added` : ''}`}{' '}
+ .join(', ')} ${
+ !isPrefix
+ ? t('label.has-been-action-type-lowercase', {
+ actionType: t('label.added-lowercase'),
+ })
+ : ''
+ }`}{' '}
) : null}
{fieldsUpdated?.length ? (
- {`${isPrefix ? 'Edited' : ''} ${fieldsUpdated
+ {`${isPrefix ? t('label.edited') : ''} ${fieldsUpdated
.map(summaryFormatter)
- .join(', ')} ${!isPrefix ? `has been updated` : ''}`}{' '}
+ .join(', ')} ${
+ !isPrefix
+ ? t('label.has-been-action-type-lowercase', {
+ actionType: t('label.updated-lowercase'),
+ })
+ : ''
+ }`}{' '}
) : null}
{fieldsDeleted?.length ? (
{`${isPrefix ? '- Removed' : ''} ${fieldsDeleted
.map(summaryFormatter)
- .join(', ')} ${!isPrefix ? `has been Deleted` : ''}`}{' '}
+ .join(', ')} ${
+ !isPrefix
+ ? t('label.has-been-action-type-lowercase', {
+ actionType: t('label.deleted-lowercase'),
+ })
+ : ''
+ }`}{' '}
) : null}
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/FeedUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/FeedUtils.tsx
index c978b2d98d3..b18aa9e592e 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/FeedUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/FeedUtils.tsx
@@ -15,6 +15,7 @@ import { faAngleRight } from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { AxiosError } from 'axios';
import { Operation } from 'fast-json-patch';
+import i18next from 'i18next';
import { isEqual } from 'lodash';
import {
EntityFieldThreadCount,
@@ -112,10 +113,15 @@ export const getReplyText = (
singular?: string,
plural?: string
) => {
- if (count === 0) return 'Reply in conversation';
- if (count === 1) return `${count} ${singular ? singular : 'older reply'}`;
+ if (count === 0) return i18next.t('label.reply-in-conversation');
+ if (count === 1)
+ return `${count} ${
+ singular ? singular : i18next.t('label.older-reply-lowercase')
+ }`;
- return `${count} ${plural ? plural : 'older replies'}`;
+ return `${count} ${
+ plural ? plural : i18next.t('label.older-replies-lowercase')
+ }`;
};
export const getEntityFieldThreadCounts = (
@@ -481,10 +487,10 @@ export const updateThreadData = (
export const getFeedAction = (type: ThreadType) => {
if (type === ThreadType.Task) {
- return 'created a task';
+ return i18next.t('label.created-a-task-lowercase');
}
- return 'posted on';
+ return i18next.t('label.posted-on-lowercase');
};
export const prepareFeedLink = (entityType: string, entityFQN: string) => {
@@ -553,11 +559,11 @@ export const getFeedPanelHeaderText = (
) => {
switch (threadType) {
case ThreadType.Announcement:
- return 'Announcement';
+ return i18next.t('label.announcement');
case ThreadType.Task:
- return 'Task';
+ return i18next.t('label.task');
case ThreadType.Conversation:
default:
- return 'Conversation';
+ return i18next.t('label.Conversation');
}
};
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.ts
index 6489591323d..96a4922a3f6 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/GlossaryUtils.ts
@@ -12,6 +12,7 @@
*/
import { AxiosError } from 'axios';
+import { t } from 'i18next';
import { cloneDeep, isEmpty } from 'lodash';
import { FormattedGlossarySuggestion } from 'Models';
import { DataNode } from 'rc-tree/lib/interface';
@@ -230,7 +231,7 @@ export const updateGlossaryListBySearchedTerms = (
export const getActionsList = () => {
return [
{
- name: 'Add Term',
+ name: t('label.add-term'),
value: 'add_term',
},
];
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/TasksUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/TasksUtils.ts
index 0f6e3c9913d..40c08235e9c 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/TasksUtils.ts
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/TasksUtils.ts
@@ -13,6 +13,7 @@
import { AxiosError } from 'axios';
import { Change, diffWordsWithSpace } from 'diff';
+import { t } from 'i18next';
import { isEqual, isUndefined } from 'lodash';
import { getDashboardByFqn } from '../axiosAPIs/dashboardAPI';
import { getUserSuggestions } from '../axiosAPIs/miscAPI';
@@ -311,11 +312,11 @@ export const fetchEntityDetail = (
export const TASK_ACTION_LIST = [
{
- label: 'Accept Suggestion',
+ label: t('label.accept-suggestion'),
key: TaskActionMode.VIEW,
},
{
- label: 'Edit & Accept Suggestion',
+ label: t('label.edit-amp-accept-suggestion'),
key: TaskActionMode.EDIT,
},
];