diff --git a/src/components/sectionList/translation/TranslationForm.tsx b/src/components/sectionList/translation/TranslationForm.tsx index f5995e42e..4ce6a2d4e 100644 --- a/src/components/sectionList/translation/TranslationForm.tsx +++ b/src/components/sectionList/translation/TranslationForm.tsx @@ -56,6 +56,15 @@ const validEventFields: Set = new Set([ 'name', 'shortName', 'description', + 'executionDateLabel', + 'dueDateLabel', + 'eventLabel', + 'eventsLabel', + 'orgUnitLabel', + 'relationshipLabel', + 'relationshipsLabel', + 'noteLabel', + 'notesLabel', ]) /** diff --git a/src/pages/programs/EditEventProgram.tsx b/src/pages/programs/EditEventProgram.tsx index 48a7b5c3c..802817cfd 100644 --- a/src/pages/programs/EditEventProgram.tsx +++ b/src/pages/programs/EditEventProgram.tsx @@ -38,6 +38,12 @@ import { EventProgramFormDescriptor } from './form/eventProgram/eventProgramForm import { StageFormValues } from './form/programStage/StageForm' import { ProgramStageListItem } from './form/trackerProgram/ProgramStagesFormContents' +const PLURAL_LABEL_FIELD_FILTERS = [ + 'eventsLabel', + 'relationshipsLabel', + 'notesLabel', +] as const + const fieldFilters = [ ...ATTRIBUTE_VALUES_FIELD_FILTERS, ...DEFAULT_FIELD_FILTERS, @@ -51,6 +57,11 @@ const fieldFilters = [ 'categoryCombo[id,displayName]', 'style[color,icon]', 'incidentDateLabel', + 'eventLabel', + 'orgUnitLabel', + 'relationshipLabel', + 'noteLabel', + ...PLURAL_LABEL_FIELD_FILTERS, 'programStages[id,name,displayName,executionDateLabel,enableUserAssignment,blockEntryForm,preGenerateUID,validationStrategy,notificationTemplates[id,name,displayName,access],dataEntryForm[id,displayName,htmlCode],programStageDataElements[id,dataElement[id,displayName,valueType,optionSet],compulsory,allowProvidedElsewhere,displayInReports,allowFutureDate,skipAnalytics,skipSynchronization,renderType,sortOrder],programStageSections[id,displayName,dataElements[id]]]', 'organisationUnits[id,displayName,path]', 'sharing', diff --git a/src/pages/programs/form/eventProgram/EventProgramCustomizationFormContents.tsx b/src/pages/programs/form/eventProgram/EventProgramCustomizationFormContents.tsx index 6d42c615e..124223921 100644 --- a/src/pages/programs/form/eventProgram/EventProgramCustomizationFormContents.tsx +++ b/src/pages/programs/form/eventProgram/EventProgramCustomizationFormContents.tsx @@ -9,11 +9,14 @@ import { StandardFormSectionTitle, } from '../../../../components' import { + FEATURES, SCHEMA_SECTIONS, Section, + useFeatureAvailable, useGivenShemaOrSchemaSectionHandleOrThrow, useValidator, } from '../../../../lib' +import { LabelField } from '../trackerProgram/fields' export const EventProgramCustomizationFormContents = React.memo( function EventProgramCustomizationFormContents({ @@ -24,6 +27,9 @@ export const EventProgramCustomizationFormContents = React.memo( section?: Section }) { useGivenShemaOrSchemaSectionHandleOrThrow({ section }) + const showPluralLabels = useFeatureAvailable( + FEATURES.customTerminologyPlurals + ) const reportDateLabelValidator = useValidator({ schemaSection: SCHEMA_SECTIONS.programStage, property: 'executionDateLabel', @@ -53,6 +59,67 @@ export const EventProgramCustomizationFormContents = React.memo( validate={reportDateLabelValidator} /> + + + {showPluralLabels && ( + + )} + + + + + {showPluralLabels && ( + + )} + + + {showPluralLabels && ( + + )} ) } diff --git a/src/pages/programs/form/eventProgram/EventProgramsSchema.ts b/src/pages/programs/form/eventProgram/EventProgramsSchema.ts index a1d43171c..d7309e8d5 100644 --- a/src/pages/programs/form/eventProgram/EventProgramsSchema.ts +++ b/src/pages/programs/form/eventProgram/EventProgramsSchema.ts @@ -32,6 +32,13 @@ const eventProgramBaseSchema = z.object({ }) .optional(), incidentDateLabel: z.string().optional(), + eventLabel: z.string().optional(), + eventsLabel: z.string().optional(), + orgUnitLabel: z.string().optional(), + relationshipLabel: z.string().optional(), + relationshipsLabel: z.string().optional(), + noteLabel: z.string().optional(), + notesLabel: z.string().optional(), programStages: z .array( z.object({ diff --git a/src/pages/programs/form/eventProgram/eventProgramFormDescriptor.tsx b/src/pages/programs/form/eventProgram/eventProgramFormDescriptor.tsx index 05f74bb86..8d5e40d3e 100644 --- a/src/pages/programs/form/eventProgram/eventProgramFormDescriptor.tsx +++ b/src/pages/programs/form/eventProgram/eventProgramFormDescriptor.tsx @@ -130,6 +130,34 @@ export const EventProgramFormDescriptor = { name: 'programStages[0].executionDateLabel', label: i18n.t('Custom label for "report date"'), }, + { + name: 'eventLabel', + label: i18n.t('Custom label for "event" (singular)'), + }, + { + name: 'eventsLabel', + label: i18n.t('Custom label for "events" (plural)'), + }, + { + name: 'orgUnitLabel', + label: i18n.t('Custom label for "organisation unit"'), + }, + { + name: 'relationshipLabel', + label: i18n.t('Custom label for "relationship" (singular)'), + }, + { + name: 'relationshipsLabel', + label: i18n.t('Custom label for "relationships" (plural)'), + }, + { + name: 'noteLabel', + label: i18n.t('Custom label for "note" (singular)'), + }, + { + name: 'notesLabel', + label: i18n.t('Custom label for "notes" (plural)'), + }, ], }, ], diff --git a/src/pages/programs/form/trackerProgram/ProgramCustomizationFormContents.tsx b/src/pages/programs/form/trackerProgram/ProgramCustomizationFormContents.tsx index dad9e7c72..c7c7e4b43 100644 --- a/src/pages/programs/form/trackerProgram/ProgramCustomizationFormContents.tsx +++ b/src/pages/programs/form/trackerProgram/ProgramCustomizationFormContents.tsx @@ -42,7 +42,7 @@ export const ProgramCustomizationFormContents = React.memo(