Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1843: Missing application labels #1855

Merged
merged 4 commits into from
Jan 14, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions administration/src/bp-modules/applications/JsonFieldArray.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,24 @@ const JsonFieldArray = ({
'organizationContact',
'organization',
'volunteerServiceEntitlement',
'honoredByMinisterPresidentEntitlement',
'goldenCardHonoredByMinisterPresidentEntitlement',
].includes(jsonField.name)
? `${jsonField.name}.title`
: jsonField.name

const children = jsonField.value.map((jsonFieldIt, index: number) => (
<JsonFieldView
jsonField={jsonFieldIt}
parentName={['organizationContact', 'organization'].includes(jsonField.name) ? jsonField.name : undefined}
parentName={
f1sh1918 marked this conversation as resolved.
Show resolved Hide resolved
[
'organizationContact',
'organization',
'volunteerServiceEntitlement',
'goldenCardHonoredByMinisterPresidentEntitlement',
].includes(jsonField.name)
? jsonField.name
: undefined
}
baseUrl={baseUrl}
// This is the best key we have as jsonField.name is not unique
// eslint-disable-next-line react/no-array-index-key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,12 @@ const PrintOnlySpan = styled.span`
}
`

// Some fields name are equals therefore the parents is needed for resolving the label
f1sh1918 marked this conversation as resolved.
Show resolved Hide resolved
const getTranslationKey = (fieldName: string, parentName?: string) =>
parentName ? `${parentName}.${fieldName}` : fieldName

const JsonFieldAttachment = memo(
({ jsonField, baseUrl, attachmentAccessible }: JsonFieldViewProps<JsonField<'Attachment'>>) => {
({ jsonField, baseUrl, attachmentAccessible, parentName }: JsonFieldViewProps<JsonField<'Attachment'>>) => {
const appToaster = useAppToaster()
const token = useContext(AuthContext).data?.token
const { t } = useTranslation('application')
Expand Down Expand Up @@ -64,7 +68,7 @@ const JsonFieldAttachment = memo(
}
return (
<p>
{t(jsonField.name)}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
<PrintAwareTag
round
rightIcon={<Icon icon='download' color={Colors.GRAY1} />}
Expand All @@ -77,7 +81,7 @@ const JsonFieldAttachment = memo(
}
return (
<p>
{t(jsonField.name)}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
<span>eingereicht, nicht sichtbar</span>
</p>
)
Expand All @@ -90,31 +94,30 @@ const JsonFieldElemental = ({
...rest
}: JsonFieldViewProps<Exclude<GeneralJsonField, JsonField<'Array'>>>) => {
const { t } = useTranslation('application')
const getTranslationKey = () => (parentName ? `${parentName}.${jsonField.name}` : jsonField.name)

switch (jsonField.type) {
case 'String':
return (
<p>
{t(getTranslationKey())}: {jsonField.value}
{t(getTranslationKey(jsonField.name, parentName))}: {jsonField.value}
</p>
)
case 'Date':
return (
<p>
{t(getTranslationKey())}: {new Date(jsonField.value).toLocaleDateString('de')}
{t(getTranslationKey(jsonField.name, parentName))}: {new Date(jsonField.value).toLocaleDateString('de')}
</p>
)
case 'Number':
return (
<p>
{t(getTranslationKey())}: {jsonField.value}
{t(getTranslationKey(jsonField.name, parentName))}: {jsonField.value}
</p>
)
case 'Boolean':
return (
<p>
{t(getTranslationKey())}:&nbsp;
{t(getTranslationKey(jsonField.name, parentName))}:&nbsp;
{jsonField.value ? (
<>
<Icon icon='tick' intent='success' /> Ja
Expand All @@ -127,7 +130,7 @@ const JsonFieldElemental = ({
</p>
)
case 'Attachment':
return <JsonFieldAttachment jsonField={jsonField} {...rest} />
return <JsonFieldAttachment jsonField={jsonField} parentName={parentName} {...rest} />
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ import WorkAtOrganizationsEntitlementForm from './WorkAtOrganizationsEntitlement
const EntitlementTypeRadioGroupForm = createRadioGroupForm<BlueCardEntitlementType>()
const entitlementTypeOptions: { labelByValue: { [K in BlueCardEntitlementType]: string } } = {
labelByValue: {
[BlueCardEntitlementType.WorkAtOrganizations]: i18next.t('application:blueCardEntitlementType.WorkAtOrganizations'),
[BlueCardEntitlementType.Juleica]: i18next.t('application:blueCardEntitlementType.Juleica'),
[BlueCardEntitlementType.WorkAtDepartment]: i18next.t('application:blueCardEntitlementType.WorkAtDepartment'),
[BlueCardEntitlementType.MilitaryReserve]: i18next.t('application:blueCardEntitlementType.MilitaryReserve'),
[BlueCardEntitlementType.VolunteerService]: i18next.t('application:blueCardEntitlementType.VolunteerService'),
[BlueCardEntitlementType.WorkAtOrganizations]: i18next.t('application:blueCardWorkAtOrganizationsEntitlement'),
[BlueCardEntitlementType.Juleica]: i18next.t('application:blueCardJuleicaEntitlement'),
[BlueCardEntitlementType.WorkAtDepartment]: i18next.t('application:blueCardWorkAtDepartmentEntitlement'),
[BlueCardEntitlementType.MilitaryReserve]: i18next.t('application:blueCardMilitaryReserveEntitlement'),
[BlueCardEntitlementType.VolunteerService]: i18next.t('application:volunteerServiceEntitlement:title'),
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,12 @@ import WorkAtOrganizationsEntitlementForm from './WorkAtOrganizationsEntitlement

const entitlementTypeOptions: { labelByValue: { [K in GoldenCardEntitlementType]: string } } = {
labelByValue: {
[GoldenCardEntitlementType.WorkAtOrganizations]: i18next.t(
'application:goldenCardEntitlementType.WorkAtOrganizations'
),
[GoldenCardEntitlementType.WorkAtOrganizations]: i18next.t('application:goldenCardWorkAtOrganizationsEntitlement'),
[GoldenCardEntitlementType.HonoredByMinisterPresident]: i18next.t(
'application:goldenCardEntitlementType.HonoredByMinisterPresident'
'application:goldenCardHonoredByMinisterPresidentEntitlement:title'
),
[GoldenCardEntitlementType.WorkAtDepartment]: i18next.t('application:goldenCardEntitlementType.WorkAtDepartment'),
[GoldenCardEntitlementType.MilitaryReserve]: i18next.t('application:goldenCardEntitlementType.MilitaryReserve'),
[GoldenCardEntitlementType.WorkAtDepartment]: i18next.t('application:goldenCardWorkAtDepartmentEntitlement'),
[GoldenCardEntitlementType.MilitaryReserve]: i18next.t('application:goldenCardMilitaryReserveEntitlement'),
},
}

Expand Down
40 changes: 16 additions & 24 deletions administration/src/util/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,25 @@
"wantsDigitalCard": "Ich beantrage eine digitale Ehrenamtskarte",
"wantsPhysicalCard": "Ich beantrage eine physische Ehrenamtskarte",
"blueCardJuleicaEntitlement": "Ich bin Inhaber:in einer JuLeiCa (Jugendleiter:in-Card)",
"blueCardWorkAtDepartmentEntitlement": "Ich bin aktiv in der Freiwilligen Feuerwehr mit abgeschlossener Truppmannausbildung bzw. abgeschlossenem Basis-Modul der Modularen Truppausbildung (MTA), oder im Katastrophenschutz oder im Rettungsdienst mit abgeschlossener Grundausbildung.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙃 maybe we don't need the "." at the end of the entitlement descriptions.
or at least it should be the same for all items.
currently there is no "." in blueCardJuleicaEntitlement and goldenCardHonoredByMinisterPresidentEntitlement, but we have the "." for other items.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well i think the requirements are entire sentences so they should have a dot when the user selects a requirement.
I think its not really needed to strip that. But you are right it should be equal for all requirements

"blueCardMilitaryReserveEntitlement": "Ich habe in den vergangenen zwei Kalenderjahren als Reservist regelmäßig aktiven Wehrdienst in der Bundeswehr geleistet, indem ich insgesamt mindestens 40 Tage Reservisten-Dienstleistung erbracht habe oder ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war.",
"blueCardWorkAtOrganizationsEntitlement": "Ich engagiere mich ehrenamtlich seit mindestens zwei Jahren freiwillig mindestens fünf Stunden pro Woche oder bei Projektarbeiten mindestens 250 Stunden jährlich.",
"volunteerServiceEntitlement": {
"title": "Ich leiste einen Freiwilligendienst ab in einem Freiwilligen Sozialen Jahr (FSJ), einem Freiwilligen Ökologischen Jahr (FÖJ) oder einem Bundesfreiwilligendienst (BFD).",
"programName": "Name des Programms",
"certificate": "Tätigkeitsnachweis"
},
"juleicaNumber": "Kartennummer",
"juleicaExpiration": "Karte gültig bis",
"copyOfJuleicaFront": "Kopie der Karte (1)",
"copyOfJuleicaBack": "Kopie der Karte (2)",
"blueCardWorkAtOrganizationsEntitlement": "Ich engagiere mich ehrenamtlich seit mindestens zwei Jahren freiwillig mindestens fünf Stunden pro Woche oder bei Projektarbeiten mindestens 250 Stunden jährlich",
"goldenCardWorkAtOrganizationsEntitlement": "Ich bin seit mindestens 25 Jahren mindestens 5 Stunden pro Woche oder 250 Stunden pro Jahr bei einem Verein oder einer Organisation ehrenamtlich tätig.",
"goldenCardWorkAtDepartmentEntitlement": "Ich bin Feuerwehrdienstleistende:r oder Einsatzkraft im Rettungsdienst oder in Einheiten des Katastrophenschutzes und habe eine Dienstzeitauszeichnung nach dem Feuerwehr- und Hilfsorganisationen-Ehrenzeichengesetz (FwHOEzG) erhalten.",
"goldenCardMilitaryReserveEntitlement": "Ich leiste als Reservist:in seit mindestens 25 Jahren regelmäßig aktiven Wehrdienst in der Bundeswehr, indem ich in dieser Zeit entweder insgesamt mindestens 500 Tage Reservisten-Dienstleistung erbracht habe oder in dieser Zeit ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war.",
"goldenCardHonoredByMinisterPresidentEntitlement": {
"title": "Ich bin Inhaber:in des Ehrenzeichens für Verdienste im Ehrenamt des Bayerischen Ministerpräsidenten",
"certificate": "Kopie der Urkunde"
},
"workAtOrganization": "Arbeit bei Organisation oder Verein",
"organization": {
"title": "Angaben zur Organisation",
Expand All @@ -49,28 +63,6 @@
"givenInformationIsCorrectAndComplete": "Ich versichere, dass alle angegebenen Informationen korrekt und vollständig sind",
"title": "Bayerische Ehrenamtskarte beantragen",
"sentSuccessfully": "Erfolgreich gesendet",
"sentError": "Fehler beim Senden",
"blueCardEntitlementType": {
"WorkAtOrganizations": "Ich engagiere mich ehrenamtlich seit mindestens zwei Jahren freiwillig mindestens fünf Stunden pro Woche oder bei Projektarbeiten mindestens 250 Stunden jährlich.",
"Juleica": "Ich bin Inhaber:in einer JuLeiCa (Jugendleiter:in-Card).",
"WorkAtDepartment": "Ich bin aktiv in der Freiwilligen Feuerwehr mit abgeschlossener Truppmannausbildung bzw. abgeschlossenem Basis-Modul der Modularen Truppausbildung (MTA), oder im Katastrophenschutz oder im Rettungsdienst mit abgeschlossener Grundausbildung.",
"MilitaryReserve": "Ich habe in den vergangenen zwei Kalenderjahren als Reservist regelmäßig aktiven Wehrdienst in der Bundeswehr geleistet, indem ich insgesamt mindestens 40 Tage Reservisten-Dienstleistung erbracht habe oder ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war.",
"VolunteerService": "Ich leiste einen Freiwilligendienst ab in einem Freiwilligen Sozialen Jahr (FSJ), einem Freiwilligen Ökologischen Jahr (FÖJ) oder einem Bundesfreiwilligendienst (BFD)."
},
"goldenCardEntitlementType": {
"WorkAtOrganizations": "Ich bin seit mindestens 25 Jahren mindestens 5 Stunden pro Woche oder 250 Stunden pro Jahr bei einem Verein oder einer Organisation ehrenamtlich tätig.",
"HonoredByMinisterPresident": "Ich bin Inhaber:in des Ehrenzeichens für Verdienstete im Ehrenamt des Bayerischen Ministerpräsidenten.",
"WorkAtDepartment": "Ich bin Feuerwehrdienstleistende:r oder Einsatzkraft im Rettungsdienst oder in Einheiten des Katastrophenschutzes und habe eine Dienstzeitauszeichnung nach dem Feuerwehr- und Hilfsorganisationen-Ehrenzeichengesetz (FwHOEzG) erhalten.",
"MilitaryReserve": "Ich leiste als Reservist:in seit mindestens 25 Jahren regelmäßig aktiven Wehrdienst in der Bundeswehr, indem ich in dieser Zeit entweder insgesamt mindestens 500 Tage Reservisten-Dienstleistung erbracht habe oder in dieser Zeit ständige:r Angehörige:r eines Bezirks- oder Kreisverbindungskommandos war."
},
"volunteerServiceEntitlement": {
"title": "Freiwilligendienst",
"programName": "Name des Programms",
"certificate": "Tätigkeitsnachweis"
},
"honoredByMinisterPresidentEntitlement": {
"title": "Ehrenzeichen des Ministerpräsidenten",
"certificate": "Kopie der Urkunde"
}
"sentError": "Fehler beim Senden"
}
}