diff --git a/docker/docker-compose/Dockerfile b/docker/docker-compose/Dockerfile
index 0da7d1979..3aac40cf9 100644
--- a/docker/docker-compose/Dockerfile
+++ b/docker/docker-compose/Dockerfile
@@ -11,6 +11,7 @@ RUN apk update \
iputils \
net-tools \
mc \
+ nano \
wget
CMD tail -f /dev/null
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 770115765..8e6d0e2a4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,7 +23,7 @@
"date-fns": "^4.1.0",
"deepl-node": "^1.15.0",
"diff": "^7.0.0",
- "dompurify": "^3.2.1",
+ "dompurify": "^3.2.4",
"easyqrcodejs": "^4.4.13",
"file-saver": "^2.0.5",
"i18n-iso-countries": "^7.13.0",
@@ -6393,9 +6393,10 @@
}
},
"node_modules/dompurify": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.1.tgz",
- "integrity": "sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==",
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
+ "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
@@ -6450,10 +6451,11 @@
"integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw=="
},
"node_modules/elliptic": {
- "version": "6.6.0",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz",
- "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==",
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
+ "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
diff --git a/package.json b/package.json
index 828f6209b..28b02ab3b 100644
--- a/package.json
+++ b/package.json
@@ -93,7 +93,7 @@
"date-fns": "^4.1.0",
"deepl-node": "^1.15.0",
"diff": "^7.0.0",
- "dompurify": "^3.2.1",
+ "dompurify": "^3.2.4",
"easyqrcodejs": "^4.4.13",
"file-saver": "^2.0.5",
"i18n-iso-countries": "^7.13.0",
diff --git a/react/assets/forus-webshop/scss/_common/sections/blocks/block-lang-control.scss b/react/assets/forus-webshop/scss/_common/sections/blocks/block-lang-control.scss
index fa9c48bda..5782ec536 100644
--- a/react/assets/forus-webshop/scss/_common/sections/blocks/block-lang-control.scss
+++ b/react/assets/forus-webshop/scss/_common/sections/blocks/block-lang-control.scss
@@ -35,6 +35,7 @@
background: #fff;
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
+ box-shadow: var(--box-shadow);
z-index: 2;
width: 230px;
max-width: 90vw;
diff --git a/react/assets/forus-webshop/scss/_common/sections/blocks/block-mobile-menu.scss b/react/assets/forus-webshop/scss/_common/sections/blocks/block-mobile-menu.scss
index d5e13c06d..b5acde663 100644
--- a/react/assets/forus-webshop/scss/_common/sections/blocks/block-mobile-menu.scss
+++ b/react/assets/forus-webshop/scss/_common/sections/blocks/block-mobile-menu.scss
@@ -4,13 +4,13 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
--item-height: 44px;
--item-line-height: 18px;
position: fixed;
- top: 50px;
+ top: 68px;
bottom: 0;
z-index: 10;
width: 100%;
transition: transform 0.2s;
background: #fff;
- box-shadow: 0px -1px 0px 0px #E5E5E5 inset;
+ box-shadow: 0px -1px 0px 0px #e5e5e5 inset;
border-top: 1px solid var(--border-color);
overflow: auto;
@@ -20,7 +20,7 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
.mobile-menu-group-header {
display: flex;
padding: 16px 20px 16px 15px;
- background: #FBFBFB;
+ background: #fbfbfb;
border-top: 1px solid transparent;
border-bottom: 1px solid var(--border-color);
color: #222222;
@@ -33,17 +33,117 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
}
}
+ .mobile-menu-languages {
+ .mobile-menu-languages-header {
+ display: flex;
+ padding: 16px 10px 16px 15px;
+ background: #fbfbfb;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid var(--border-color);
+ color: #282b39;
+ font: 600 14px/20px var(--base-font);
+ outline-offset: -2px !important;
+ gap: 5px;
+
+ .mobile-menu-languages-header-icon {
+ display: flex;
+ flex: 0 0 auto;
+ margin-left: -2px;
+
+ .mdi {
+ font-size: 18px;
+ color: #848484;
+ }
+ }
+
+ .mobile-menu-languages-header-name {
+ flex: 1 1 auto;
+ display: flex;
+ gap: 3px;
+
+ .mobile-menu-languages-header-name-prefix {
+ color: #282b39;
+ transition: 0.4s color;
+ }
+ }
+
+ .mobile-menu-languages-header-toggle {
+ display: flex;
+ justify-content: center;
+ flex: 0 0 30px;
+ align-items: center;
+
+ .mdi {
+ height: 20px;
+ line-height: 20px;
+ display: block;
+ width: 30px;
+ font-size: 28px;
+ color: #9e9e9e;
+ }
+ }
+
+ &.mobile-menu-languages-header-active {
+ .mobile-menu-languages-header-toggle {
+ .mdi {
+ color: #282b39;
+ }
+ }
+
+ .mobile-menu-languages-header-name {
+ .mobile-menu-languages-header-name-prefix {
+ color: #646464;
+ }
+ }
+ }
+ }
+
+ .mobile-menu-item-language {
+ display: flex;
+ flex-direction: row;
+ gap: 8px;
+ color: #282b39;
+ align-items: center;
+ justify-content: flex-start;
+ font: 600 14px / var(--item-line-height) var(--base-font);
+ border-bottom: 1px solid var(--border-color);
+ padding: calc((var(--item-height) - var(--item-line-height)) / 2) 15px;
+ outline-offset: -2px !important;
+
+ .mobile-menu-item-language-separator {
+ width: 1px;
+ height: 8px;
+ background: var(--border-color);
+ }
+
+ .mobile-menu-item-language-name {
+ flex: 1 1 auto;
+ }
+
+ .mobile-menu-item-language-check {
+ flex: 0 0 20px;
+ font-size: 18px;
+ line-height: var(--item-line-height);
+ height: var(--item-line-height);
+ }
+
+ &.mobile-menu-item-language-active {
+ color: #000;
+ }
+ }
+ }
+
.mobile-menu-items {
width: 100%;
overflow: scroll;
-
+
.mobile-menu-item {
- font: 600 14px/var(--item-line-height) var(--base-font);
+ font: 600 14px / var(--item-line-height) var(--base-font);
border-bottom: 1px solid var(--border-color);
padding: calc(calc(var(--item-height) - var(--item-line-height)) / 2) 15px;
display: flex;
outline-offset: -2px !important;
-
+
.mobile-menu-item-icon {
font-size: 22px;
line-height: var(--item-line-height);
@@ -71,21 +171,21 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
background-color: var(--btn-auth-bg);
border: solid 1px var(--btn-auth-border);
color: var(--tc-auth-btn);
-
+
.mdi {
color: var(--tc-auth-btn);
}
-
+
&:hover {
border: solid 1px var(--btn-auth-border);
-
+
.mdi {
color: var(--tc-auth-btn);
}
}
}
}
-
+
&.active {
color: var(--color-primary);
@@ -95,14 +195,15 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
&:after {
position: absolute;
- right: 20px;
- content: "\F012C";
- font: normal normal normal 24px/1 "Material Design Icons";
+ right: 15px;
+ content: '\F012C';
+ font: normal normal normal 24px/1 'Material Design Icons';
font-size: 18px;
- color: #282B39;
+ color: #282b39;
+ width: 20px;
}
}
-
+
&:hover {
color: var(--color-primary);
}
@@ -117,10 +218,10 @@ $footer_base_font: 'Open Sans', arial, sans-serif;
.mobile-menu-items {
.mobile-menu-item:not(.active) {
.mobile-menu-item-icon {
- color: #CDCED2;
+ color: #cdced2;
}
}
}
}
}
-}
\ No newline at end of file
+}
diff --git a/react/assets/forus-webshop/scss/_common/sections/blocks/block-navbar-mobile.scss b/react/assets/forus-webshop/scss/_common/sections/blocks/block-navbar-mobile.scss
index 65f6b121b..6698a0c73 100644
--- a/react/assets/forus-webshop/scss/_common/sections/blocks/block-navbar-mobile.scss
+++ b/react/assets/forus-webshop/scss/_common/sections/blocks/block-navbar-mobile.scss
@@ -10,33 +10,42 @@
align-items: center;
& > .navbar-mobile-auth-buttons {
- padding-top: 5px;
+ padding: 10px;
}
}
.navbar-mobile-button {
flex: 0 0 60px;
- height: 50px;
+ height: 68px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
- font: 600 9px / 14px var(--base-font);
+ font: 500 12px / 14px var(--base-font);
outline-offset: -2px !important;
border-radius: 6px;
gap: 2px;
.navbar-mobile-button-icon {
- font-size: 16px;
+ font-size: 26px;
+ line-height: 26px;
+ }
+
+ &.active {
+ font-weight: 700;
}
}
.navbar-mobile-logo {
display: flex;
- height: 30px;
flex: 1 1 auto;
flex-direction: row;
justify-content: center;
+
+ img {
+ max-width: 140px;
+ max-height: 36px;
+ }
}
.navbar-mobile-lang {
@@ -60,8 +69,8 @@
gap: 10px;
.navbar-mobile-auth-button {
- padding-top: 7px;
- padding-bottom: 7px;
+ padding-top: 9px;
+ padding-bottom: 9px;
margin: 0 0;
flex: 0 0 calc(50% - 5px);
box-shadow: none;
diff --git a/react/src/dashboard/components/pages/fund-provider/FundProvider.tsx b/react/src/dashboard/components/pages/fund-provider/FundProvider.tsx
index 2eb7bf791..b1f63f2b1 100644
--- a/react/src/dashboard/components/pages/fund-provider/FundProvider.tsx
+++ b/react/src/dashboard/components/pages/fund-provider/FundProvider.tsx
@@ -130,7 +130,7 @@ export default function FundProvider() {
- Per transactie betaalt u 0,29 cent (excl. btw)
+ Per transactie betaalt u 0,32 cent (excl. btw)
@@ -164,7 +164,7 @@ export default function FundProvider() {
- Wij gebruiken uitsluitend Ideal. Per transactie betaalt u 0,29 cent (excl. btw).
+ Wij gebruiken uitsluitend Ideal. Per transactie betaalt u 0,32 cent (excl. btw).
diff --git a/react/src/dashboard/components/pages/identities/Identities.tsx b/react/src/dashboard/components/pages/identities/Identities.tsx
index f5ee7a126..849daa74d 100644
--- a/react/src/dashboard/components/pages/identities/Identities.tsx
+++ b/react/src/dashboard/components/pages/identities/Identities.tsx
@@ -25,6 +25,7 @@ import { NumberParam, StringParam } from 'use-query-params';
import TableDateTime from '../../elements/tables/elements/TableDateTime';
import TableEmptyValue from '../../elements/table-empty-value/TableEmptyValue';
import TableDateOnly from '../../elements/tables/elements/TableDateOnly';
+import useIdentityExportService from '../../../services/exports/useIdentityExportService';
export default function Identities() {
const translate = useTranslate();
@@ -34,6 +35,7 @@ export default function Identities() {
const activeOrganization = useActiveOrganization();
const fundService = useFundService();
+ const identityExportService = useIdentityExportService();
const sponsorIdentitiesService = useSponsorIdentitiesService();
const [loading, setLoading] = useState(false);
@@ -75,11 +77,21 @@ export default function Identities() {
},
);
- const { headElement, configsElement } = useConfigurableTable(sponsorIdentitiesService.getColumns(), {
- filter: filter,
- sortable: false,
- hasTooltips: true,
- });
+ const { headElement, configsElement } = useConfigurableTable(
+ sponsorIdentitiesService.getColumns(activeOrganization),
+ { filter: filter, sortable: false, hasTooltips: true },
+ );
+
+ const { resetFilters: resetFilters, setShow } = filter;
+
+ const exportIdentities = useCallback(() => {
+ setShow(false);
+
+ identityExportService.exportData(activeOrganization.id, {
+ ...filter.activeValues,
+ per_page: null,
+ });
+ }, [activeOrganization.id, filter.activeValues, setShow, identityExportService]);
const fetchFunds = useCallback(() => {
setProgress(0);
@@ -108,8 +120,6 @@ export default function Identities() {
[activeOrganization.id, setProgress, sponsorIdentitiesService, pushApiError],
);
- const { resetFilters: resetFilters } = filter;
-
useEffect(() => {
fetchIdentities(filterValuesActive);
}, [fetchIdentities, filterValuesActive]);
@@ -175,6 +185,16 @@ export default function Identities() {
placeholder={translate('payouts.labels.search')}
/>
+
+
+
+
@@ -201,29 +221,65 @@ export default function Identities() {
className={'tr-clickable'}
customElement={'tr'}>
{identity.id} |
- {identity?.records?.given_name?.[0]?.value || } |
- {identity?.records?.family_name?.[0]?.value || } |
+
+ {identity?.records?.given_name?.[0]?.value_locale || (
+
+ )}
+ |
+
+ {identity?.records?.family_name?.[0]?.value_locale || (
+
+ )}
+ |
{identity.email || } |
- {identity.bsn || } |
+ {activeOrganization.bsn_enabled && (
+ {identity.bsn || } |
+ )}
+
+ {identity?.records?.client_number?.[0]?.value_locale || (
+
+ )}
+ |
|
+
+
+ |
|
- {identity?.records?.city?.[0]?.value || } |
- {identity?.records?.street?.[0]?.value || } |
+ {identity?.records?.city?.[0]?.value_locale || } |
+
+ {identity?.records?.street?.[0]?.value_locale || }
+ |
+
+ {identity?.records?.house_number?.[0]?.value_locale || (
+
+ )}
+ |
+
+ {identity?.records?.house_number_addition?.[0]?.value_locale || (
+
+ )}
+ |
- {identity?.records?.house_number?.[0]?.value || }
+ {identity?.records?.postal_code?.[0]?.value_locale || (
+
+ )}
+ |
+
+ {identity?.records?.municipality_name?.[0]?.value_locale || (
+
+ )}
|
- {identity?.records?.house_number_addition?.[0]?.value || (
+ {identity?.records?.neighborhood_name?.[0]?.value_locale || (
)}
|
- {identity?.records?.postal_code?.[0]?.value || } |
{
+ return identity?.records?.birth_date?.[0]?.value
+ ? Math.max(differenceInYears(new Date(), dateParse(identity?.records?.birth_date?.[0]?.value)), 0)
+ : null;
+ }, [identity?.records?.birth_date]);
+
const fetchIdentity = useCallback(() => {
setProgress(0);
@@ -86,7 +94,7 @@ export default function IdentitiesShow() {
disabledFields={disabledFields}
onDone={fetchIdentity}
identity={identity}
- recordTypes={recordTypes?.filter((item) => recordTypeKyes.includes(item.key))}
+ recordTypes={recordTypeKyes?.map((filter) => recordTypes?.find((item) => filter === item.key))}
values={recordsByKey}
organization={activeOrganization}
bodyOverflowVisible={bodyOverflowVisible}
@@ -129,12 +137,14 @@ export default function IdentitiesShow() {
text: 'Bewerken',
icon: 'pencil-outline',
onClick: () =>
- editProfileRecords(
- 'Wijzig persoonsgegevens',
- ['given_name', 'family_name', 'birth_date'],
- [],
- true,
- ),
+ editProfileRecords('Wijzig persoonsgegevens', [
+ 'given_name',
+ 'family_name',
+ 'birth_date',
+ 'gender',
+ 'marital_status',
+ 'client_number',
+ ]),
},
]}>
,
},
- { label: 'BSN', value: identity?.bsn },
+ {
+ label: 'Leeftijd',
+ value: identityCalculatedAge,
+ },
+ {
+ label: recordTypesByKey?.gender?.name,
+ value: ,
+ },
+ {
+ label: recordTypesByKey?.marital_status?.name,
+ value: ,
+ },
+ ...(activeOrganization.bsn_enabled ? [{ label: 'BSN', value: identity?.bsn }] : []),
+ {
+ label: recordTypesByKey?.client_number?.name,
+ value: ,
+ },
+ ]}
+ />
+
+
+
+ editProfileRecords(
+ 'Wijzig huishouden',
+ ['house_composition', 'living_arrangement'],
+ [],
+ true,
+ ),
+ },
+ ]}>
+ ,
+ },
+ {
+ label: recordTypesByKey?.living_arrangement?.name,
+ value: ,
+ },
]}
/>
@@ -163,7 +219,8 @@ export default function IdentitiesShow() {
items={[
{ label: 'Accountnummer', value: identity?.id },
{ label: 'Actief sinds', value: identity?.created_at_locale },
- { label: 'Laatste inlog', value: identity?.last_activity_at_locale },
+ { label: 'Laatste inlog', value: identity?.last_login_at_locale },
+ { label: 'Laatste handeling', value: identity?.last_activity_at_locale },
]}
/>
@@ -177,15 +234,7 @@ export default function IdentitiesShow() {
onClick: () => {
editProfileRecords(
'Wijzig contactgegevens',
- [
- 'telephone',
- 'mobile',
- 'city',
- 'street',
- 'house_number',
- 'house_number_addition',
- 'postal_code',
- ],
+ ['telephone', 'mobile'],
[
{ label: 'Hoofd e-mailadres', value: identity.email, key: 'email' },
...otherEmails.map((email, index) => ({
@@ -214,6 +263,32 @@ export default function IdentitiesShow() {
label: recordTypesByKey?.mobile?.name,
value: ,
},
+ ]}
+ />
+
+
+ {
+ editProfileRecords('Wijzig adresgegevens', [
+ 'city',
+ 'street',
+ 'house_number',
+ 'house_number_addition',
+ 'postal_code',
+ 'neighborhood_name',
+ 'municipality_name',
+ ]);
+ },
+ },
+ ]}>
+ ,
@@ -236,6 +311,14 @@ export default function IdentitiesShow() {
label: recordTypesByKey?.postal_code?.name,
value: ,
},
+ {
+ label: recordTypesByKey?.neighborhood_name?.name,
+ value: ,
+ },
+ {
+ label: recordTypesByKey?.municipality_name?.name,
+ value: ,
+ },
]}
/>
diff --git a/react/src/dashboard/components/pages/identitities-show/cards/IdentityBankAccountsCard.tsx b/react/src/dashboard/components/pages/identitities-show/cards/IdentityBankAccountsCard.tsx
index a326eb07e..ba2cc4e25 100644
--- a/react/src/dashboard/components/pages/identitities-show/cards/IdentityBankAccountsCard.tsx
+++ b/react/src/dashboard/components/pages/identitities-show/cards/IdentityBankAccountsCard.tsx
@@ -106,7 +106,7 @@ export default function IdentityBankAccountsCard({
},
]}>
{identity?.bank_accounts.length === 0 ? (
-
+
) : (
{identity?.bank_accounts?.map((bank_account, index) => (
diff --git a/react/src/dashboard/components/pages/identitities-show/elements/IdentityRecordKeyValueWithHistory.tsx b/react/src/dashboard/components/pages/identitities-show/elements/IdentityRecordKeyValueWithHistory.tsx
index 590b14f52..fa0d03279 100644
--- a/react/src/dashboard/components/pages/identitities-show/elements/IdentityRecordKeyValueWithHistory.tsx
+++ b/react/src/dashboard/components/pages/identitities-show/elements/IdentityRecordKeyValueWithHistory.tsx
@@ -9,7 +9,7 @@ export default function IdentityRecordKeyValueWithHistory({ records }: { records
return (
- {records?.[0]?.value || }
+ {records?.[0]?.value_locale || }
{records?.length > 1 && (
setShow(!show)}>
{`${records?.length} keer bewerkt`}
@@ -27,9 +27,9 @@ export default function IdentityRecordKeyValueWithHistory({ records }: { records
{item.employee ? item.employee?.email || `Medewerker[${item.employee?.id}]` : 'User'}
{' '}
{`${item.created_at_locale} • van `}
- {`'${records[index + 1]?.value || ''}'`}
+ {`'${records[index + 1]?.value_locale || ''}'`}
{' naar '}
- {`'${item.value || ''}'`}
+ {`'${item.value_locale || ''}'`}
))}
diff --git a/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileBankAccount.tsx b/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileBankAccount.tsx
index badb7dbcc..ce6c5978f 100644
--- a/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileBankAccount.tsx
+++ b/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileBankAccount.tsx
@@ -10,6 +10,7 @@ import SponsorIdentity from '../../../../props/models/Sponsor/SponsorIdentity';
import Modal from '../../../modals/elements/Modal';
import FormGroupInfo from '../../../elements/forms/elements/FormGroupInfo';
import FormGroup from '../../../elements/forms/controls/FormGroup';
+import useTranslate from '../../../../hooks/useTranslate';
export default function ModalEditProfileBankAccount({
id,
@@ -24,6 +25,7 @@ export default function ModalEditProfileBankAccount({
identity: SponsorIdentity;
organization: Organization;
}) {
+ const translate = useTranslate();
const setProgress = useSetProgress();
const sponsorIdentitiesService = useSponsorIdentitiesService();
@@ -78,16 +80,16 @@ export default function ModalEditProfileBankAccount({
(
-
+
form.update({ name: e.target.value })}
/>
@@ -97,16 +99,16 @@ export default function ModalEditProfileBankAccount({
(
-
+
form.update({ iban: e.target.value })}
/>
diff --git a/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileRecords.tsx b/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileRecords.tsx
index 6a0df3baf..2aecc8992 100644
--- a/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileRecords.tsx
+++ b/react/src/dashboard/components/pages/identitities-show/modals/ModalEditProfileRecords.tsx
@@ -1,4 +1,4 @@
-import React, { Fragment } from 'react';
+import React, { Fragment, useCallback } from 'react';
import { ModalState } from '../../../../modules/modals/context/ModalContext';
import useFormBuilder from '../../../../hooks/useFormBuilder';
import Organization from '../../../../props/models/Organization';
@@ -14,6 +14,8 @@ import RecordType from '../../../../props/models/RecordType';
import DatePickerControl from '../../../elements/forms/controls/DatePickerControl';
import { dateFormat, dateParse } from '../../../../helpers/dates';
import useTranslate from '../../../../hooks/useTranslate';
+import SelectControl from '../../../elements/select-control/SelectControl';
+import { differenceInYears } from 'date-fns';
export default function ModalEditProfileRecords({
modal,
@@ -39,11 +41,18 @@ export default function ModalEditProfileRecords({
const translate = useTranslate();
const setProgress = useSetProgress();
const sponsorIdentitiesService = useSponsorIdentitiesService();
+ const types = recordTypes.map((type) => type.key.toString());
const pushApiError = usePushApiError();
const form = useFormBuilder<{ [key in ProfileRecordTypes]: string }>(
- Object.keys(values).reduce((list, key) => ({ ...list, [key]: values[key] }), {}) as {
+ Object.keys(values).reduce((list, key) => {
+ if (types.includes(key)) {
+ return { ...list, [key]: values[key] };
+ }
+
+ return list;
+ }, {}) as {
[key in ProfileRecordTypes]: string;
},
(values) => {
@@ -64,6 +73,10 @@ export default function ModalEditProfileRecords({
},
);
+ const calculatedAge = useCallback((value: string) => {
+ return value ? Math.max(differenceInYears(new Date(), dateParse(value)), 0) : null;
+ }, []);
+
const { submit: formSubmit } = form;
return (
@@ -105,33 +118,74 @@ export default function ModalEditProfileRecords({
})}
{recordTypes?.map((recordType) => {
return (
- (
-
- {recordType.key === 'birth_date' ? (
- form.update({ [recordType.key]: dateFormat(date) })}
- />
- ) : (
- form.update({ [recordType.key]: e.target.value })}
- />
+
+ (
+
+ {recordType.key === 'birth_date' ? (
+ form.update({ [recordType.key]: dateFormat(date) })}
+ />
+ ) : (
+
+ {recordType?.type === 'select' ? (
+
+ form.update({ [recordType.key]: value })
+ }
+ />
+ ) : (
+ form.update({ [recordType.key]: e.target.value })}
+ />
+ )}
+
+ )}
+
+ )}
+ />
+
+ {recordType?.key === 'birth_date' && (
+ (
+
+ form.update({ [recordType.key]: e.target.value })}
+ />
+
)}
-
+ />
)}
- />
+
);
})}
diff --git a/react/src/dashboard/components/pages/identity-security/SecuritySessions.tsx b/react/src/dashboard/components/pages/identity-security/SecuritySessions.tsx
index 636b5efe6..af40e562c 100644
--- a/react/src/dashboard/components/pages/identity-security/SecuritySessions.tsx
+++ b/react/src/dashboard/components/pages/identity-security/SecuritySessions.tsx
@@ -191,7 +191,7 @@ export default function SecuritySessions() {
Sessie gestart:
- {session.started_at_locale}
+ {session.created_at_locale}
diff --git a/react/src/dashboard/components/pages/implementations-cms/ImplementationsCms.tsx b/react/src/dashboard/components/pages/implementations-cms/ImplementationsCms.tsx
index 7612ad2e5..e1582d42c 100644
--- a/react/src/dashboard/components/pages/implementations-cms/ImplementationsCms.tsx
+++ b/react/src/dashboard/components/pages/implementations-cms/ImplementationsCms.tsx
@@ -207,7 +207,7 @@ export default function ImplementationsCms() {
const { update: formUpdate } = form;
const selectBanner = useCallback(
- (mediaFile) => {
+ (mediaFile: File | Blob) => {
setBannerMeta((meta) => ({ ...meta, mediaLoading: true }));
mediaService
@@ -318,45 +318,45 @@ export default function ImplementationsCms() {
diff --git a/react/src/webshop/components/pages/profile/Profile.tsx b/react/src/webshop/components/pages/profile/Profile.tsx
index 596727e7b..ba97d1dd1 100644
--- a/react/src/webshop/components/pages/profile/Profile.tsx
+++ b/react/src/webshop/components/pages/profile/Profile.tsx
@@ -10,6 +10,8 @@ import { useRecordTypeService } from '../../../../dashboard/services/RecordTypeS
import IdentityRecordKeyValueListHistory from './elements/IdentityRecordKeyValueListHistory';
import IdentityContactInformationCard from './cards/IdentityContactInformationCard';
import { useProfileService } from '../../../../dashboard/services/ProfileService';
+import { differenceInYears } from 'date-fns';
+import { dateParse } from '../../../../dashboard/helpers/dates';
export default function Profile() {
const translate = useTranslate();
@@ -31,6 +33,12 @@ export default function Profile() {
}, {}) as ProfileRecords;
}, [recordTypes]);
+ const identityCalculatedAge = useMemo(() => {
+ return profile?.records?.birth_date?.[0]?.value
+ ? Math.max(differenceInYears(new Date(), dateParse(profile?.records?.birth_date?.[0]?.value)), 0)
+ : null;
+ }, [profile?.records?.birth_date]);
+
const fetchRecordTypes = useCallback(() => {
setProgress(0);
@@ -88,7 +96,59 @@ export default function Profile() {
),
},
+ {
+ label: translate('profile.personal.age'),
+ value: identityCalculatedAge || '-',
+ },
+ {
+ label: recordTypesByKey?.gender?.name,
+ value: ,
+ },
+ {
+ label: recordTypesByKey?.marital_status?.name,
+ value: (
+
+ ),
+ },
{ label: translate('profile.personal.bsn'), value: profile?.bsn },
+ {
+ label: recordTypesByKey?.client_number?.name,
+ value: (
+
+ ),
+ },
+ ]}
+ />
+
+
+
+
+
+ {translate('profile.household.title')}
+
+
+
+ ),
+ },
+ {
+ label: recordTypesByKey?.living_arrangement?.name,
+ value: (
+
+ ),
+ },
]}
/>
@@ -107,6 +167,10 @@ export default function Profile() {
},
{
label: translate('profile.account.last_login'),
+ value: profile?.last_login_at_locale,
+ },
+ {
+ label: translate('profile.account.last_activity'),
value: profile?.last_activity_at_locale,
},
]}
diff --git a/react/src/webshop/components/pages/profile/cards/IdentityContactInformationCard.tsx b/react/src/webshop/components/pages/profile/cards/IdentityContactInformationCard.tsx
index 1167e97df..8a8dedbe5 100644
--- a/react/src/webshop/components/pages/profile/cards/IdentityContactInformationCard.tsx
+++ b/react/src/webshop/components/pages/profile/cards/IdentityContactInformationCard.tsx
@@ -143,6 +143,22 @@ export default function IdentityContactInformationCard({
))}
+
+
+
+
+
+
+
+
@@ -223,8 +239,16 @@ export default function IdentityContactInformationCard({
),
},
{
- label: recordTypesByKey?.postal_code?.name,
- value: ,
+ label: recordTypesByKey?.neighborhood_name?.name,
+ value: (
+
+ ),
+ },
+ {
+ label: recordTypesByKey?.municipality_name?.name,
+ value: (
+
+ ),
},
]}
/>
diff --git a/react/src/webshop/components/pages/vouchers-show/VouchersShow.tsx b/react/src/webshop/components/pages/vouchers-show/VouchersShow.tsx
index d673aec1b..1409d02d5 100644
--- a/react/src/webshop/components/pages/vouchers-show/VouchersShow.tsx
+++ b/react/src/webshop/components/pages/vouchers-show/VouchersShow.tsx
@@ -757,19 +757,25 @@ export default function VouchersShow() {
{voucherCard.records_title ? (
- Persoonsgegevens
+ {translate('voucher.physical_card.personal_date')}
{voucherCard.records_title}
-
-
- {voucherCard.records_by_key.birth_date}
-
+ {voucherCard.records_by_key.birth_date && (
+
+
+
+ {voucherCard.records_by_key.birth_date}
+
+
+ )}
) : (
- Persoonsgegevens
+
+ {translate('voucher.physical_card.personal_date')}
+
)}
@@ -777,8 +783,9 @@ export default function VouchersShow() {
setShowRecords(!showRecords)}>
- {showRecords ? 'Verberg alle details' : 'Toon alle details'}
-
+ {showRecords
+ ? translate('voucher.physical_card.less_details')
+ : translate('voucher.physical_card.more_details')}
{showRecords ? (
) : (
diff --git a/react/src/webshop/hooks/useMobileLangSelector.tsx b/react/src/webshop/hooks/useMobileLangSelector.tsx
new file mode 100644
index 000000000..01328dba5
--- /dev/null
+++ b/react/src/webshop/hooks/useMobileLangSelector.tsx
@@ -0,0 +1,68 @@
+import React, { Fragment, useMemo, useState } from 'react';
+import useMainContext from './useMainContext';
+import { clickOnKeyEnter } from '../../dashboard/helpers/wcag';
+import useTranslate from '../../dashboard/hooks/useTranslate';
+import classNames from 'classnames';
+
+export default function useMobileLangSelector() {
+ const { language, languages, changeLanguage } = useMainContext();
+ const translate = useTranslate();
+ const [showOptions, setShowOptions] = useState(false);
+
+ return useMemo(() => {
+ if (languages?.length <= 1) {
+ return null;
+ }
+
+ const languageResource = languages?.filter((lang) => lang.locale === language)?.[0];
+
+ return (
+
+ setShowOptions(!showOptions)}>
+
+
+
+
+
+ {translate('top_navbar.language.prefix')}
+
+ {`${languageResource.locale.toUpperCase()} - ${languageResource.name}`}
+
+
+
+
+
+
+ {showOptions && (
+
+ {languages.map((lang) => (
+ changeLanguage(lang.locale)}>
+ {lang.locale.toUpperCase()}
+
+ {lang.name}
+ {languageResource.locale === lang.locale && (
+
+ )}
+
+ ))}
+
+ )}
+
+ );
+ }, [changeLanguage, language, languages, showOptions, translate]);
+}
diff --git a/react/src/webshop/i18n/nl/layout/top_navbar.mjs b/react/src/webshop/i18n/nl/layout/top_navbar.mjs
index e1cb3b996..b226743b5 100644
--- a/react/src/webshop/i18n/nl/layout/top_navbar.mjs
+++ b/react/src/webshop/i18n/nl/layout/top_navbar.mjs
@@ -9,6 +9,9 @@ export default {
midden_drenthe: 'Tegoed activeren',
berg_en_dal: 'Tegoed activeren',
},
+ language: {
+ prefix: 'Uw taal:',
+ },
items: {
home: 'Home',
funds: 'Activeren',
@@ -127,7 +130,7 @@ export default {
notifications: 'Notificaties',
preferences_notifications: 'Notificatievoorkeuren',
preferences_emails: 'E-mailinstellingen',
- records: 'Profiel',
+ profile: 'Gegevens',
funds: 'Alle tegoeden',
security: 'Beveiliging',
sessions: 'Sessies',
@@ -191,6 +194,7 @@ export default {
payouts: 'Uitbetalingen',
notifications: 'Notificaties',
preferences_notifications: 'Notificatievoorkeuren',
+ profile: 'Gegevens',
security_sessions: 'Sessies',
preferences_emails: 'E-mail instellingen',
security_2fa: 'Beveiliging',
diff --git a/react/src/webshop/i18n/nl/pages/me.mjs b/react/src/webshop/i18n/nl/pages/me.mjs
index 096c2194c..46e2695b4 100644
--- a/react/src/webshop/i18n/nl/pages/me.mjs
+++ b/react/src/webshop/i18n/nl/pages/me.mjs
@@ -11,6 +11,6 @@ export default {
download: {
title: 'Download Me op je telefoon of tablet',
description:
- 'Download de Me-app via onderstaande app stores. Klik hier om direct de juiste app store te openen op je telefoon of tablet.',
+ 'Download de Me-app via onderstaande app stores. Klik hier om direct de juiste app store te openen op je telefoon of tablet.',
},
};
diff --git a/react/src/webshop/i18n/nl/pages/profile.mjs b/react/src/webshop/i18n/nl/pages/profile.mjs
index 7c1f6633e..1cb2fa087 100644
--- a/react/src/webshop/i18n/nl/pages/profile.mjs
+++ b/react/src/webshop/i18n/nl/pages/profile.mjs
@@ -8,12 +8,19 @@ export default {
personal: {
title: 'Persoonsgegevens',
bsn: 'BSN',
+ age: 'Leeftijd',
},
account: {
title: 'Accountgegevens',
active_since: 'Actief sinds',
last_login: 'Laatste inlog',
+ last_activity: 'Laatste handeling',
+ },
+ household: {
+ title: 'Huishouden',
+ house_composition: 'Gezinssamenstelling',
+ living_arrangement: 'Leefvorm',
},
contacts: {
title: 'Contactgegevens aanpassen',
diff --git a/react/src/webshop/i18n/nl/pages/reservation.mjs b/react/src/webshop/i18n/nl/pages/reservation.mjs
index 01aa50143..16fc23b80 100644
--- a/react/src/webshop/i18n/nl/pages/reservation.mjs
+++ b/react/src/webshop/i18n/nl/pages/reservation.mjs
@@ -38,7 +38,7 @@ export default {
status: 'Status',
refunded: 'Terugbetaald',
date: 'Datum',
- mount: 'Zelf bijbetaal',
+ amount: 'Zelf bijbetaal',
method: 'Methode',
},
extra_amount_refund: {
diff --git a/react/src/webshop/i18n/nl/pages/voucher.mjs b/react/src/webshop/i18n/nl/pages/voucher.mjs
index ff4b9be0e..42f42dbaf 100644
--- a/react/src/webshop/i18n/nl/pages/voucher.mjs
+++ b/react/src/webshop/i18n/nl/pages/voucher.mjs
@@ -72,7 +72,7 @@ export default {
cancel: 'Annuleren',
stop_participation: 'Stop deelname',
},
- voucher_card_combined: {
+ card_combined: {
header: {
title: 'Hoe werkt het?',
},
@@ -97,6 +97,9 @@ export default {
title: 'Activeer mijn pas',
alt: "Fysieke pas: '{[ title ]}'",
card_number: 'Pasnummer',
+ personal_date: 'Persoonsgegevens',
+ less_details: 'Verberg alle details',
+ more_details: 'Toon alle details',
buttons: {
reactivate: 'Activeer',
lost_pass: 'Ik ben mijn pas kwijt',
diff --git a/react/src/webshop/i18n/translated/ar.json b/react/src/webshop/i18n/translated/ar.json
index b8c9dd83f..33f82edee 100644
--- a/react/src/webshop/i18n/translated/ar.json
+++ b/react/src/webshop/i18n/translated/ar.json
@@ -611,7 +611,6 @@
},
"preferences_emails": "إعدادات البريد الإلكتروني",
"preferences_notifications": "تفضيلات الإخطار",
- "records": "الملف الشخصي",
"reimbursements": "استرداد التكاليف",
"reservations": "الحجوزات",
"schagen": {
@@ -631,7 +630,8 @@
},
"winterswijk": {
"funds": "تفعيل"
- }
+ },
+ "profile": "البيانات"
},
"groningen": {
"voucher": "بطاقة مدينتي"
@@ -741,7 +741,8 @@
"security_2fa": "الأمن",
"security_sessions": "الجلسات",
"aria_label": "قائمة المستخدم",
- "title": "شخصي"
+ "title": "شخصي",
+ "profile": "البيانات"
},
"main_menu": "القائمة الرئيسية",
"open_home": "العودة إلى الصفحة الرئيسية",
@@ -752,6 +753,9 @@
"hartvanwestbrabant": "بدء التطبيق",
"midden_drenthe": "تفعيل الائتمان",
"potjeswijzer": "بدء التطبيق"
+ },
+ "language": {
+ "prefix": "لغتك"
}
},
"week_days": {
@@ -1075,8 +1079,8 @@
},
"description": "تطبيق Me هو عبارة عن محفظة رقمية وسجِّل نقدي في جهاز واحد. تستخدم البلديات تطبيق Me-app لإصدار الأرصدة. باستخدام التطبيق، يمكن للمقيمين إدارة أرصدتهم بسهولة. يستخدم مقدمو الخدمات التطبيق لمسح رموز QR.",
"download": {
- "description": "قم بتنزيل تطبيق Me من متاجر التطبيقات أدناه. انقر هنا لفتح متجر التطبيقات المناسب مباشرةً على هاتفك أو جهازك اللوحي.",
- "title": "قم بتنزيل Me على هاتفك أو جهازك اللوحي"
+ "title": "قم بتنزيل Me على هاتفك أو جهازك اللوحي",
+ "description": "قم بتنزيل تطبيق Me من متاجر التطبيقات أدناه. انقر هنا لفتح متجر التطبيقات المناسب مباشرةً على هاتفك أو جهازك اللوحي."
},
"title": "نبذة عن تطبيق Me",
"img_alt": "أنا-التطبيق"
@@ -1962,7 +1966,10 @@
"reactivate": "تفعيل"
},
"card_number": "رقم المرور",
- "title": "تفعيل بطاقتي"
+ "title": "تفعيل بطاقتي",
+ "less_details": "إخفاء جميع التفاصيل",
+ "more_details": "إظهار كل التفاصيل",
+ "personal_date": "البيانات الشخصية"
},
"reimbursement": {
"button": "إرسال القسيمة",
@@ -2003,7 +2010,7 @@
"title": "المعاملات",
"top_up": "ترقية"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "كيف تعمل؟"
},
@@ -2477,7 +2484,8 @@
"account": {
"active_since": "نشط منذ",
"last_login": "آخر تسجيل دخول",
- "title": "تفاصيل الحساب"
+ "title": "تفاصيل الحساب",
+ "last_activity": "الإجراء الأخير"
},
"bank_accounts": {
"title": "الحساب البنكي",
@@ -2506,9 +2514,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "البيانات الشخصية"
- },
- "title": "البيانات"
+ "title": "البيانات الشخصية",
+ "age": "العمر"
+ },
+ "title": "البيانات",
+ "household": {
+ "house_composition": "تكوين الأسرة",
+ "living_arrangement": "الشكل الحي",
+ "title": "الأسرة المعيشية"
+ }
},
"reimbursements": {
"breadcrumbs": {
@@ -2625,9 +2639,9 @@
"extra_amount": {
"date": "التاريخ",
"method": "الطريقة",
- "mount": "الدفع الذاتي",
"refunded": "مستردة",
- "status": "الحالة"
+ "status": "الحالة",
+ "amount": "الدفع الذاتي"
},
"labels": {
"cancel": "إلغاء",
@@ -3016,7 +3030,6 @@
},
"description_formal": "سوف تستخدم رصيدك {{fund}}رصيدك لهذا الحجز هل تقوم بالحجز؟ إذن أنت توافق على مشاركة بياناتك الشخصية مع مقدم الخدمة.",
"description_formal_time": "{{ days_to_cancel }} لا يزال بإمكانك إلغاء الحجز في غضون أيام بعد تأكيد الحجز.",
- "description_informal": "هل تستخدم رصيدك {{fund}}رصيدك لهذا الحجز هل تقوم بالحجز؟ إذن أنت توافق على مشاركة بياناتك الشخصية مع مقدم الخدمة.",
"description_informal_time": "{{ days_to_cancel }} لا يزال بإمكانك إلغاء الحجز في غضون أيام بعد تأكيد الحجز.",
"email_setup_description": "أضف عنوان بريدك الإلكتروني لتلقي الرسائل.",
"email_setup_title": "إضافة عنوان البريد الإلكتروني",
@@ -3081,7 +3094,8 @@
"description": "تم إجراء الحجز الخاص بك.",
"title": "لقد نجح الأمر!"
},
- "voucher_image_alt": "الائتمان"
+ "voucher_image_alt": "الائتمان",
+ "description_informal": "يمكنك استخدام {{fund}} رصيدك لهذا الحجز. هل تقوم بالحجز؟ إذن أنت توافق على مشاركة بياناتك الشخصية مع مقدم الخدمة."
},
"modal": {
"buttons": {
diff --git a/react/src/webshop/i18n/translated/de.json b/react/src/webshop/i18n/translated/de.json
index 6018844d4..baf7cb2b3 100644
--- a/react/src/webshop/i18n/translated/de.json
+++ b/react/src/webshop/i18n/translated/de.json
@@ -1314,8 +1314,8 @@
},
"description": "Die Me-App ist eine digitale Geldbörse und eine Registrierkasse in einem. Die Kommunen nutzen die Me-App, um Kredite zu vergeben. Mit der App können die Einwohner ihre Guthaben einfach verwalten. Anbieter nutzen die App, um QR-Codes zu scannen.",
"download": {
- "description": "Laden Sie die Me-App aus den unten stehenden App-Stores herunter. Klicken Sie hier, um den entsprechenden App-Store direkt auf Ihrem Telefon oder Tablet zu öffnen.",
- "title": "Laden Sie Me auf Ihr Handy oder Tablet herunter"
+ "title": "Laden Sie Me auf Ihr Handy oder Tablet herunter",
+ "description": "Laden Sie die Me-App aus den unten stehenden App-Stores herunter. Klicken Sie hier, um den entsprechenden App-Store direkt auf Ihrem Telefon oder Tablet zu öffnen."
},
"title": "Über die Me-App",
"img_alt": "Me-app"
@@ -1628,7 +1628,6 @@
},
"description_formal": "Sie verwenden Ihr {{fund}}Guthaben für diese Reservierung verwenden. Buchen Sie eine Reservierung? Dann stimmen Sie zu, dass wir Ihre persönlichen Daten mit dem Anbieter teilen.",
"description_formal_time": "{{ days_to_cancel }} Sie können die Reservierung noch innerhalb weniger Tage nach der Bestätigung stornieren.",
- "description_informal": "Sie verwenden Ihr {{fund}}Guthaben für diese Reservierung. Nehmen Sie eine Reservierung vor? Dann stimmen Sie zu, dass wir Ihre persönlichen Daten mit dem Anbieter teilen.",
"description_informal_time": "{{ days_to_cancel }} Sie können die Reservierung noch innerhalb weniger Tage nach der Bestätigung stornieren.",
"email_setup_description": "Fügen Sie Ihre E-Mail-Adresse hinzu, um Nachrichten zu erhalten.",
"email_setup_title": "E-Mail Adresse hinzufügen",
@@ -1693,7 +1692,8 @@
"description": "Ihre Reservierung wurde vorgenommen.",
"title": "Es hat geklappt!"
},
- "voucher_image_alt": "Kredit"
+ "voucher_image_alt": "Kredit",
+ "description_informal": "Sie verwenden Ihr {{fund}} Guthaben für diese Reservierung. Sie nehmen eine Reservierung vor? Dann sind Sie damit einverstanden, dass wir Ihre persönlichen Daten mit dem Anbieter teilen."
},
"modal": {
"buttons": {
@@ -2341,7 +2341,8 @@
"account": {
"active_since": "Aktiv seit",
"last_login": "Letzte Anmeldung",
- "title": "Details zum Konto"
+ "title": "Details zum Konto",
+ "last_activity": "Letzte Aktion"
},
"bank_accounts": {
"title": "Bankkonto",
@@ -2370,9 +2371,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Persönliche Daten"
- },
- "title": "Daten"
+ "title": "Persönliche Daten",
+ "age": "Alter"
+ },
+ "title": "Daten",
+ "household": {
+ "house_composition": "Zusammensetzung der Familie",
+ "living_arrangement": "Lebendige Form",
+ "title": "Haushalt"
+ }
},
"provider_sign_up": {
"breadcrumbs": {
@@ -2676,9 +2683,9 @@
"extra_amount": {
"date": "Datum",
"method": "Methode",
- "mount": "Selbstzahler",
"refunded": "Erstattet",
- "status": "Status"
+ "status": "Status",
+ "amount": "Selbstzahler"
},
"labels": {
"cancel": "Abbrechen",
@@ -3028,7 +3035,6 @@
},
"preferences_emails": "E-Mail-Einstellungen",
"preferences_notifications": "Einstellungen für Benachrichtigungen",
- "records": "Profil",
"reimbursements": "Kostendeckung",
"reservations": "Reservierungen",
"schagen": {
@@ -3048,7 +3054,8 @@
},
"winterswijk": {
"funds": "Aktivieren Sie"
- }
+ },
+ "profile": "Daten"
},
"groningen": {
"voucher": "Meine Stadtkarte"
@@ -3158,7 +3165,8 @@
"security_2fa": "Sicherheit",
"security_sessions": "Sitzungen",
"aria_label": "Benutzermenü",
- "title": "Persönlich"
+ "title": "Persönlich",
+ "profile": "Daten"
},
"main_menu": "Hauptmenü",
"open_home": "Zurück zur Hauptseite",
@@ -3169,6 +3177,9 @@
"hartvanwestbrabant": "Anwendung starten",
"midden_drenthe": "Kredit aktivieren",
"potjeswijzer": "Anwendung starten"
+ },
+ "language": {
+ "prefix": "Ihre Sprache:"
}
},
"voucher_printable": {
@@ -3291,7 +3302,10 @@
"reactivate": "Aktivieren Sie"
},
"card_number": "Pass-Nummer",
- "title": "Meinen Pass aktivieren"
+ "title": "Meinen Pass aktivieren",
+ "less_details": "Alle Details ausblenden",
+ "more_details": "Alle Details anzeigen",
+ "personal_date": "Persönliche Daten"
},
"reimbursement": {
"button": "Coupon einreichen",
@@ -3332,7 +3346,7 @@
"title": "Transaktionen",
"top_up": "Verbessert"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Wie funktioniert das?"
},
@@ -3345,7 +3359,7 @@
"redirect_to": "Möchten Sie immer noch eine Erstattung beantragen?"
},
"meedoenregeling_volwassenen_ww": {
- "how_it_works": "Haben Sie Ausgaben getätigt, die unter diese Regelung fallen? Beantragen Sie die Erstattung Ihrer Ausgaben, indem Sie eine Quittung einsenden. Nach der Genehmigung erhalten Sie den Betrag auf Ihr persönliches Bankkonto.",
+ "how_it_works": "Haben Sie Ausgaben getätigt, die unter diese Regelung fallen? Beantragen Sie die Rückerstattung Ihrer Ausgaben, indem Sie eine Quittung einreichen. Nach der Genehmigung erhalten Sie den Betrag auf Ihr persönliches Bankkonto.",
"redirect_to": "Kosten zurückfordern?"
},
"redirect_to": "Möchten Sie immer noch eine Erstattung beantragen?"
diff --git a/react/src/webshop/i18n/translated/en-US.json b/react/src/webshop/i18n/translated/en-US.json
index d682d365e..dc944cd6e 100644
--- a/react/src/webshop/i18n/translated/en-US.json
+++ b/react/src/webshop/i18n/translated/en-US.json
@@ -207,7 +207,6 @@
},
"preferences_emails": "Email settings",
"preferences_notifications": "Notification preferences",
- "records": "Profile",
"reimbursements": "Cost recovery",
"reservations": "Reservations",
"schagen": {
@@ -227,7 +226,8 @@
},
"winterswijk": {
"funds": "Activate"
- }
+ },
+ "profile": "Data"
},
"groningen": {
"voucher": "My City Pass"
@@ -337,7 +337,8 @@
"security_2fa": "Security",
"security_sessions": "Sessions",
"aria_label": "User menu",
- "title": "Personal"
+ "title": "Personal",
+ "profile": "Data"
},
"main_menu": "Main menu",
"open_home": "Back to main page",
@@ -348,6 +349,9 @@
"hartvanwestbrabant": "Start application",
"midden_drenthe": "Activate credit",
"potjeswijzer": "Start application"
+ },
+ "language": {
+ "prefix": "Your language:"
}
},
"auth_start": {
@@ -1264,8 +1268,8 @@
},
"description": "The Me app is a digital wallet and cash register in one. Municipalities use the Me app to issue credits. The app allows residents to easily manage their balances. Providers use the app to scan QR codes.",
"download": {
- "description": "Download the Me app from the app stores below. Click here to directly open the appropriate app store on your phone or tablet.",
- "title": "Download Me on your phone or tablet"
+ "title": "Download Me on your phone or tablet",
+ "description": "Download the Me app from the app stores below. Click here to directly open the appropriate app store on your phone or tablet."
},
"title": "About the Me app",
"img_alt": "Me-app"
@@ -1613,7 +1617,10 @@
},
"title": "Activate my pass",
"alt": "Physical pass: '{[ title ]}'",
- "card_number": "Pass number"
+ "card_number": "Pass number",
+ "less_details": "Hide all details",
+ "more_details": "Show all details",
+ "personal_date": "Personal data"
},
"share_voucher": {
"buttons": {
@@ -1637,25 +1644,6 @@
"reason_placeholder": "Message for provider",
"close": "Close"
},
- "voucher_card_combined": {
- "header": {
- "title": "How does it work?"
- },
- "labels": {
- "contact_sponsor": "Do you have any questions?",
- "contact_sponsor_details": "If so, please contact us.",
- "how_it_works": "We have received your application. You will receive a decision on your application within 8 weeks.",
- "IIT": {
- "how_it_works": "We have received your application. You will receive a decision on your application within 8 weeks.",
- "redirect_to": "Do you still want to apply for reimbursement?"
- },
- "meedoenregeling_volwassenen_ww": {
- "how_it_works": "Have you incurred expenses that fall within this scheme? Reclaim your expenses by submitting a receipt. After approval, you will receive the amount in your personal bank account.",
- "redirect_to": "Reclaim expenses?"
- },
- "redirect_to": "Do you still want to apply for reimbursement?"
- }
- },
"breadcrumbs": {
"home": "Home",
"voucher": "{{ title }}",
@@ -1726,6 +1714,25 @@
"expired": "Expired"
},
"title": "Expenditures"
+ },
+ "card_combined": {
+ "header": {
+ "title": "How does it work?"
+ },
+ "labels": {
+ "contact_sponsor": "Do you have any questions?",
+ "contact_sponsor_details": "If so, please contact us.",
+ "how_it_works": "We have received your application. You will receive a decision on your application within 8 weeks.",
+ "IIT": {
+ "how_it_works": "We have received your application. You will receive a decision on your application within 8 weeks.",
+ "redirect_to": "Do you still want to apply for reimbursement?"
+ },
+ "meedoenregeling_volwassenen_ww": {
+ "how_it_works": "Have you incurred expenses that fall within this scheme? Reclaim your expenses by submitting a receipt. After approval, you will receive the amount in your personal bank account.",
+ "redirect_to": "Reclaim expenses?"
+ },
+ "redirect_to": "Do you still want to apply for reimbursement?"
+ }
}
},
"vouchers": {
@@ -2182,7 +2189,8 @@
"account": {
"active_since": "Active since",
"last_login": "Last login",
- "title": "Account information"
+ "title": "Account information",
+ "last_activity": "Final act"
},
"bank_accounts": {
"title": "Bank account",
@@ -2211,9 +2219,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Personal data"
- },
- "title": "Data"
+ "title": "Personal data",
+ "age": "Age"
+ },
+ "title": "Data",
+ "household": {
+ "house_composition": "Family composition",
+ "living_arrangement": "Living Form",
+ "title": "Household"
+ }
},
"reimbursements": {
"breadcrumbs": {
@@ -2758,9 +2772,9 @@
"extra_amount": {
"date": "Date",
"method": "Method",
- "mount": "Self additional payment",
"refunded": "Refunded",
- "status": "Status"
+ "status": "Status",
+ "amount": "Self additional payment"
},
"title": "Top-up data"
},
@@ -3340,7 +3354,6 @@
},
"description_formal": "You use your {{fund}} credit for this reservation. Are you placing a reservation? Then you agree that we share your personal information with the provider.",
"description_formal_time": "You can still cancel the reservation within {{ days_to_cancel }} days after confirmation. ",
- "description_informal": "You use your {{fund}} credit for this reservation. Are you placing a reservation? Then you agree that we share your personal data with the provider.",
"description_informal_time": "You can still cancel the reservation within {{ days_to_cancel }} days after confirmation.",
"email_setup_description": "Add your email address to receive messages.",
"email_setup_title": "Add email address",
@@ -3405,7 +3418,8 @@
"description": "Your reservation has been made.",
"title": "It worked!"
},
- "voucher_image_alt": "Credit"
+ "voucher_image_alt": "Credit",
+ "description_informal": "You use your {{fund}} credit for this reservation. Are you making a reservation? Then you agree that we share your personal data with the provider."
},
"modal_logout": {
"description_formal": "Are you sure you want to log out?",
diff --git a/react/src/webshop/i18n/translated/fr.json b/react/src/webshop/i18n/translated/fr.json
index 43494487e..43c232547 100644
--- a/react/src/webshop/i18n/translated/fr.json
+++ b/react/src/webshop/i18n/translated/fr.json
@@ -1314,8 +1314,8 @@
},
"description": "L'application Me est à la fois un portefeuille numérique et une caisse enregistreuse. Les municipalités utilisent l'application Me pour émettre des crédits. Grâce à l'application, les résidents peuvent facilement gérer leurs crédits. Les prestataires utilisent l'application pour scanner les codes QR.",
"download": {
- "description": "Téléchargez l'application Me via les magasins d'applications ci-dessous. Cliquez ici pour ouvrir directement le magasin d'applications approprié sur votre téléphone ou votre tablette.",
- "title": "Téléchargez Me sur votre téléphone ou tablette"
+ "title": "Téléchargez Me sur votre téléphone ou tablette",
+ "description": "Téléchargez l'application Me dans les magasins d'applications ci-dessous. Cliquez ici pour ouvrir directement le magasin d'applications approprié sur votre téléphone ou votre tablette."
},
"title": "À propos de l'application Me",
"img_alt": "Me-app"
@@ -1628,7 +1628,6 @@
},
"description_formal": "Vous utiliserez votre {{fund}}Vous placez une réservation ? Dans ce cas, vous acceptez que nous partagions vos données personnelles avec le fournisseur.",
"description_formal_time": "{{ days_to_cancel }} Vous pouvez encore annuler la réservation dans les jours qui suivent la confirmation.",
- "description_informal": "Vous utilisez votre {{fund}}Vous placez une réservation ? Dans ce cas, vous acceptez que nous partagions vos données personnelles avec le fournisseur.",
"description_informal_time": "{{ days_to_cancel }} Vous pouvez encore annuler la réservation dans les jours qui suivent la confirmation.",
"email_setup_description": "Ajoutez votre adresse e-mail pour recevoir les messages.",
"email_setup_title": "Ajouter une adresse électronique",
@@ -1693,7 +1692,8 @@
"description": "Votre réservation a été effectuée.",
"title": "Cela a fonctionné !"
},
- "voucher_image_alt": "Crédit"
+ "voucher_image_alt": "Crédit",
+ "description_informal": "Vous utilisez votre {{fund}} crédit pour cette réservation. Vous effectuez une réservation ? Dans ce cas, vous acceptez que nous partagions vos données personnelles avec le fournisseur."
},
"modal": {
"buttons": {
@@ -2341,7 +2341,8 @@
"account": {
"active_since": "Actif depuis",
"last_login": "Dernière connexion",
- "title": "Détails du compte"
+ "title": "Détails du compte",
+ "last_activity": "Dernière action"
},
"bank_accounts": {
"title": "Compte bancaire",
@@ -2370,9 +2371,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Données personnelles"
- },
- "title": "Données"
+ "title": "Données personnelles",
+ "age": "L'âge"
+ },
+ "title": "Données",
+ "household": {
+ "house_composition": "Composition de la famille",
+ "living_arrangement": "Forme vivante",
+ "title": "Ménage"
+ }
},
"provider_sign_up": {
"breadcrumbs": {
@@ -2676,9 +2683,9 @@
"extra_amount": {
"date": "Date",
"method": "Méthode",
- "mount": "Autofinancement",
"refunded": "Remboursé",
- "status": "Statut"
+ "status": "Statut",
+ "amount": "Autofinancement"
},
"labels": {
"cancel": "Annuler",
@@ -3028,7 +3035,6 @@
},
"preferences_emails": "Paramètres du courrier électronique",
"preferences_notifications": "Préférences de notification",
- "records": "Profil",
"reimbursements": "Recouvrement des coûts",
"reservations": "Réservations",
"schagen": {
@@ -3048,7 +3054,8 @@
},
"winterswijk": {
"funds": "Activer"
- }
+ },
+ "profile": "Données"
},
"groningen": {
"voucher": "Ma carte de ville"
@@ -3158,7 +3165,8 @@
"security_2fa": "Sécurité",
"security_sessions": "Sessions",
"aria_label": "Menu utilisateur",
- "title": "Personnel"
+ "title": "Personnel",
+ "profile": "Données"
},
"main_menu": "Menu principal",
"open_home": "Retour à la page principale",
@@ -3169,6 +3177,9 @@
"hartvanwestbrabant": "Démarrer la demande",
"midden_drenthe": "Activer le crédit",
"potjeswijzer": "Démarrer la demande"
+ },
+ "language": {
+ "prefix": "Votre langue :"
}
},
"voucher_printable": {
@@ -3291,7 +3302,10 @@
"reactivate": "Activer"
},
"card_number": "Numéro de passage",
- "title": "Activer mon pass"
+ "title": "Activer mon pass",
+ "less_details": "Cacher tous les détails",
+ "more_details": "Afficher tous les détails",
+ "personal_date": "Données personnelles"
},
"reimbursement": {
"button": "Soumettre un coupon",
@@ -3332,7 +3346,7 @@
"title": "Transactions",
"top_up": "Mise à niveau"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Comment cela fonctionne-t-il ?"
},
diff --git a/react/src/webshop/i18n/translated/pl.json b/react/src/webshop/i18n/translated/pl.json
index 4f15f3542..22133eca5 100644
--- a/react/src/webshop/i18n/translated/pl.json
+++ b/react/src/webshop/i18n/translated/pl.json
@@ -1314,8 +1314,8 @@
},
"description": "Aplikacja Me to cyfrowy portfel i kasa fiskalna w jednym. Gminy używają aplikacji Me do wydawania kredytów. Dzięki aplikacji mieszkańcy mogą łatwo zarządzać swoimi kredytami. Dostawcy używają aplikacji do skanowania kodów QR.",
"download": {
- "description": "Pobierz aplikację Me z poniższych sklepów z aplikacjami. Kliknij tutaj, aby bezpośrednio otworzyć odpowiedni sklep z aplikacjami na telefonie lub tablecie.",
- "title": "Pobierz aplikację Me na swój telefon lub tablet"
+ "title": "Pobierz aplikację Me na swój telefon lub tablet",
+ "description": "Pobierz aplikację Me z poniższych sklepów z aplikacjami. Kliknij tutaj, aby bezpośrednio otworzyć odpowiedni sklep z aplikacjami na telefonie lub tablecie."
},
"title": "Informacje o aplikacji Me",
"img_alt": "Me-app"
@@ -1628,7 +1628,6 @@
},
"description_formal": "Wykorzystasz swój {{fund}}Czy dokonujesz rezerwacji? W takim przypadku zgadzasz się na udostępnienie przez nas Twoich danych osobowych dostawcy.",
"description_formal_time": "{{ days_to_cancel }} Rezerwację można anulować w ciągu kilku dni od jej potwierdzenia.",
- "description_informal": "Używasz swojego {{fund}}Czy dokonujesz rezerwacji? W takim przypadku zgadzasz się, że udostępniamy Twoje dane osobowe dostawcy.",
"description_informal_time": "{{ days_to_cancel }} Rezerwację można anulować w ciągu kilku dni od jej potwierdzenia.",
"email_setup_description": "Dodaj swój adres e-mail, aby otrzymywać wiadomości.",
"email_setup_title": "Dodaj adres e-mail",
@@ -1693,7 +1692,8 @@
"description": "Rezerwacja została dokonana.",
"title": "Udało się!"
},
- "voucher_image_alt": "Kredyt"
+ "voucher_image_alt": "Kredyt",
+ "description_informal": "Używasz swojego {{fund}} kredyt na tę rezerwację. Dokonujesz rezerwacji? W takim razie zgadzasz się, że udostępniamy Twoje dane osobowe dostawcy."
},
"modal": {
"buttons": {
@@ -2341,7 +2341,8 @@
"account": {
"active_since": "Aktywny od",
"last_login": "Ostatnie logowanie",
- "title": "Szczegóły konta"
+ "title": "Szczegóły konta",
+ "last_activity": "Ostatnia akcja"
},
"bank_accounts": {
"title": "Konto bankowe",
@@ -2370,9 +2371,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Dane osobowe"
- },
- "title": "Dane"
+ "title": "Dane osobowe",
+ "age": "Wiek"
+ },
+ "title": "Dane",
+ "household": {
+ "house_composition": "Skład rodziny",
+ "living_arrangement": "Żywa forma",
+ "title": "Gospodarstwo domowe"
+ }
},
"provider_sign_up": {
"breadcrumbs": {
@@ -2676,9 +2683,9 @@
"extra_amount": {
"date": "Data",
"method": "Metoda",
- "mount": "Płatność własna",
"refunded": "Zwrócone",
- "status": "Status"
+ "status": "Status",
+ "amount": "Płatność własna"
},
"labels": {
"cancel": "Anuluj",
@@ -3028,7 +3035,6 @@
},
"preferences_emails": "Ustawienia poczty e-mail",
"preferences_notifications": "Preferencje powiadomień",
- "records": "Profil",
"reimbursements": "Zwrot kosztów",
"reservations": "Rezerwacje",
"schagen": {
@@ -3048,7 +3054,8 @@
},
"winterswijk": {
"funds": "Aktywuj"
- }
+ },
+ "profile": "Dane"
},
"groningen": {
"voucher": "Moja karta miejska"
@@ -3158,7 +3165,8 @@
"security_2fa": "Bezpieczeństwo",
"security_sessions": "Sesje",
"aria_label": "Menu użytkownika",
- "title": "Osobiste"
+ "title": "Osobiste",
+ "profile": "Dane"
},
"main_menu": "Menu główne",
"open_home": "Powrót do strony głównej",
@@ -3169,6 +3177,9 @@
"hartvanwestbrabant": "Rozpoczęcie aplikacji",
"midden_drenthe": "Aktywacja kredytu",
"potjeswijzer": "Rozpoczęcie aplikacji"
+ },
+ "language": {
+ "prefix": "Twój język:"
}
},
"voucher_printable": {
@@ -3291,7 +3302,10 @@
"reactivate": "Aktywuj"
},
"card_number": "Numer przepustki",
- "title": "Aktywuj moją przepustkę"
+ "title": "Aktywuj moją przepustkę",
+ "less_details": "Ukryj wszystkie szczegóły",
+ "more_details": "Pokaż wszystkie szczegóły",
+ "personal_date": "Dane osobowe"
},
"reimbursement": {
"button": "Prześlij kupon",
@@ -3332,7 +3346,7 @@
"title": "Transakcje",
"top_up": "Ulepszony"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Jak to działa?"
},
diff --git a/react/src/webshop/i18n/translated/ru.json b/react/src/webshop/i18n/translated/ru.json
index c1f4e4168..24a1b487c 100644
--- a/react/src/webshop/i18n/translated/ru.json
+++ b/react/src/webshop/i18n/translated/ru.json
@@ -1314,8 +1314,8 @@
},
"description": "Приложение Me - это цифровой кошелек и кассовый аппарат в одном лице. Муниципалитеты используют Me-приложение для выдачи кредитов. С помощью приложения жители могут легко управлять своими кредитами. Поставщики услуг используют приложение для сканирования QR-кодов.",
"download": {
- "description": "Загрузите приложение Me из указанных ниже магазинов приложений. Нажмите здесь, чтобы открыть соответствующий магазин приложений на вашем телефоне или планшете.",
- "title": "Загрузите меня на свой телефон или планшет"
+ "title": "Загрузите меня на свой телефон или планшет",
+ "description": "Загрузите приложение Me из указанных ниже магазинов приложений. Нажмите здесь, чтобы открыть соответствующий магазин приложений на вашем телефоне или планшете."
},
"title": "О приложении \"Я",
"img_alt": "Me-app"
@@ -1628,7 +1628,6 @@
},
"description_formal": "Вы используете свой {{fund}}кредит для этого бронирования. Вы бронируете номер? Тогда вы соглашаетесь с тем, что мы передаем ваши личные данные поставщику услуг.",
"description_formal_time": "{{ days_to_cancel }} Вы все еще можете отменить бронирование в течение нескольких дней после подтверждения.",
- "description_informal": "Вы используете свой {{fund}}кредит для этого бронирования. Вы бронируете? Тогда вы соглашаетесь с тем, что мы передаем ваши личные данные поставщику услуг.",
"description_informal_time": "{{ days_to_cancel }} Вы все еще можете отменить бронирование в течение нескольких дней после подтверждения.",
"email_setup_description": "Добавьте свой адрес электронной почты для получения сообщений.",
"email_setup_title": "Добавить адрес электронной почты",
@@ -1693,7 +1692,8 @@
"description": "Ваша бронь сделана.",
"title": "Это сработало!"
},
- "voucher_image_alt": "Кредит"
+ "voucher_image_alt": "Кредит",
+ "description_informal": "Вы используете свой {{fund}} Кредит для этого бронирования. Вы бронируете? Тогда вы соглашаетесь с тем, что мы передаем ваши личные данные поставщику услуг."
},
"modal": {
"buttons": {
@@ -2341,7 +2341,8 @@
"account": {
"active_since": "Активно работает с",
"last_login": "Последний вход в систему",
- "title": "Детали счета"
+ "title": "Детали счета",
+ "last_activity": "Последнее действие"
},
"bank_accounts": {
"title": "Банковский счет",
@@ -2370,9 +2371,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Персональные данные"
- },
- "title": "Данные"
+ "title": "Персональные данные",
+ "age": "Возраст"
+ },
+ "title": "Данные",
+ "household": {
+ "house_composition": "Состав семьи",
+ "living_arrangement": "Живая форма",
+ "title": "Домашнее хозяйство"
+ }
},
"provider_sign_up": {
"breadcrumbs": {
@@ -2676,9 +2683,9 @@
"extra_amount": {
"date": "Дата",
"method": "Метод",
- "mount": "Самостоятельная оплата",
"refunded": "Возмещено",
- "status": "Статус"
+ "status": "Статус",
+ "amount": "Самостоятельная оплата"
},
"labels": {
"cancel": "Отмена",
@@ -3028,7 +3035,6 @@
},
"preferences_emails": "Настройки электронной почты",
"preferences_notifications": "Параметры уведомлений",
- "records": "Профиль",
"reimbursements": "Возмещение затрат",
"reservations": "Бронирование",
"schagen": {
@@ -3048,7 +3054,8 @@
},
"winterswijk": {
"funds": "Активируйте"
- }
+ },
+ "profile": "Данные"
},
"groningen": {
"voucher": "Карта моего города"
@@ -3158,7 +3165,8 @@
"security_2fa": "Безопасность",
"security_sessions": "Сессии",
"aria_label": "Меню пользователя",
- "title": "Личный"
+ "title": "Личный",
+ "profile": "Данные"
},
"main_menu": "Главное меню",
"open_home": "Назад к главной странице",
@@ -3169,6 +3177,9 @@
"hartvanwestbrabant": "Начать применение",
"midden_drenthe": "Активировать кредит",
"potjeswijzer": "Начать применение"
+ },
+ "language": {
+ "prefix": "Ваш язык:"
}
},
"voucher_printable": {
@@ -3291,7 +3302,10 @@
"reactivate": "Активируйте"
},
"card_number": "Номер пропуска",
- "title": "Активируйте мой пропуск"
+ "title": "Активируйте мой пропуск",
+ "less_details": "Скрыть все детали",
+ "more_details": "Показать все детали",
+ "personal_date": "Персональные данные"
},
"reimbursement": {
"button": "Отправить купон",
@@ -3332,7 +3346,7 @@
"title": "Транзакции",
"top_up": "Обновленный"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Как это работает?"
},
diff --git a/react/src/webshop/i18n/translated/tr.json b/react/src/webshop/i18n/translated/tr.json
index cdfecf421..6ea56c1b6 100644
--- a/react/src/webshop/i18n/translated/tr.json
+++ b/react/src/webshop/i18n/translated/tr.json
@@ -611,7 +611,6 @@
},
"preferences_emails": "E-posta ayarları",
"preferences_notifications": "Bildirim tercihleri",
- "records": "Profil",
"reimbursements": "Maliyet geri kazanımı",
"reservations": "Rezervasyonlar",
"schagen": {
@@ -631,7 +630,8 @@
},
"winterswijk": {
"funds": "Etkinleştir"
- }
+ },
+ "profile": "Veri"
},
"groningen": {
"voucher": "Şehir Kartım"
@@ -741,7 +741,8 @@
"security_2fa": "Güvenlik",
"security_sessions": "Oturumlar",
"aria_label": "Kullanıcı menüsü",
- "title": "Kişisel"
+ "title": "Kişisel",
+ "profile": "Veri"
},
"main_menu": "Ana menü",
"open_home": "Ana sayfaya geri dön",
@@ -752,6 +753,9 @@
"hartvanwestbrabant": "Uygulamayı başlat",
"midden_drenthe": "Krediyi etkinleştirin",
"potjeswijzer": "Uygulamayı başlat"
+ },
+ "language": {
+ "prefix": "Senin dilin:"
}
},
"week_days": {
@@ -1031,8 +1035,8 @@
},
"description": "Me uygulaması dijital bir cüzdan ve yazar kasadır. Belediyeler kredi vermek için Me-uygulamasını kullanmaktadır. Uygulama sayesinde vatandaşlar kredilerini kolayca yönetebilir. Sağlayıcılar QR kodlarını taramak için uygulamayı kullanır.",
"download": {
- "description": "Me uygulamasını aşağıdaki uygulama mağazalarından indirin. Telefonunuzda veya tabletinizde ilgili uygulama mağazasını doğrudan açmak için buraya tıklayın.",
- "title": "Beni telefonunuza veya tabletinize indirin"
+ "title": "Beni telefonunuza veya tabletinize indirin",
+ "description": "Me uygulamasını aşağıdaki uygulama mağazalarından indirin. Telefonunuzda veya tabletinizde ilgili uygulama mağazasını doğrudan açmak için buraya tıklayın."
},
"title": "Me uygulaması hakkında",
"img_alt": "Me-app"
@@ -1962,7 +1966,10 @@
"reactivate": "Etkinleştir"
},
"card_number": "Geçiş numarası",
- "title": "Geçiş kartımı etkinleştir"
+ "title": "Geçiş kartımı etkinleştir",
+ "less_details": "Tüm detayları gizle",
+ "more_details": "Tüm detayları göster",
+ "personal_date": "Kişisel veriler"
},
"reimbursement": {
"button": "Kupon gönder",
@@ -2003,7 +2010,7 @@
"title": "İşlemler",
"top_up": "Yükseltilmiş"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Nasıl çalışıyor?"
},
@@ -2477,7 +2484,8 @@
"account": {
"active_since": "O zamandan beri aktif",
"last_login": "Son giriş",
- "title": "Hesap bilgileri"
+ "title": "Hesap bilgileri",
+ "last_activity": "Son eylem"
},
"bank_accounts": {
"title": "Banka hesabı",
@@ -2506,9 +2514,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Kişisel veriler"
- },
- "title": "Veri"
+ "title": "Kişisel veriler",
+ "age": "Yaş"
+ },
+ "title": "Veri",
+ "household": {
+ "house_composition": "Aile yapısı",
+ "living_arrangement": "Yaşayan form",
+ "title": "Hane halkı"
+ }
},
"reimbursements": {
"breadcrumbs": {
@@ -2625,9 +2639,9 @@
"extra_amount": {
"date": "Tarih",
"method": "Yöntem",
- "mount": "Kendi kendine ödeme",
"refunded": "İade Edildi",
- "status": "Durum"
+ "status": "Durum",
+ "amount": "Kendi kendine ödeme"
},
"labels": {
"cancel": "İptal",
@@ -3016,7 +3030,6 @@
},
"description_formal": "Sen kullanacaksın {{fund}}Bu rezervasyon için kredi. Rezervasyon mu yapıyorsunuz? O zaman kişisel verilerinizi sağlayıcı ile paylaşmamızı kabul etmiş olursunuz.",
"description_formal_time": "{{ days_to_cancel }} Rezervasyonu onaylandıktan sonraki günler içinde de iptal edebilirsiniz.",
- "description_informal": "Sen kendi {{fund}}Bu rezervasyon için kredi. Rezervasyon mu yapıyorsunuz? O zaman kişisel verilerinizi sağlayıcı ile paylaşmamızı kabul etmiş olursunuz.",
"description_informal_time": "{{ days_to_cancel }} Rezervasyonu onaylandıktan sonraki günler içinde de iptal edebilirsiniz.",
"email_setup_description": "Mesaj almak için e-posta adresinizi ekleyin.",
"email_setup_title": "E-posta adresi ekle",
@@ -3081,7 +3094,8 @@
"description": "Rezervasyonunuz yapılmıştır.",
"title": "İşe yaradı!"
},
- "voucher_image_alt": "Kredi"
+ "voucher_image_alt": "Kredi",
+ "description_informal": "Sen kendi {{fund}} Bu rezervasyon için kredi. Rezervasyon mu yapıyorsunuz? O zaman kişisel verilerinizi sağlayıcı ile paylaşmamızı kabul etmiş olursunuz."
},
"modal": {
"buttons": {
diff --git a/react/src/webshop/i18n/translated/uk.json b/react/src/webshop/i18n/translated/uk.json
index 7bcc02b0f..961daf05d 100644
--- a/react/src/webshop/i18n/translated/uk.json
+++ b/react/src/webshop/i18n/translated/uk.json
@@ -1314,8 +1314,8 @@
},
"description": "Додаток Me - це цифровий гаманець і касовий апарат в одному. Муніципалітети використовують додаток Me для видачі кредитів. За допомогою додатку мешканці можуть легко керувати своїми кредитами. Постачальники використовують додаток для сканування QR-кодів.",
"download": {
- "description": "Завантажте додаток Me з наведених нижче магазинів додатків. Натисніть тут, щоб безпосередньо відкрити відповідний магазин додатків на вашому телефоні або планшеті.",
- "title": "Завантажте Мене на телефон або планшет"
+ "title": "Завантажте Мене на телефон або планшет",
+ "description": "Завантажте додаток Me із зазначених нижче магазинів додатків. Натисніть тут, щоб безпосередньо відкрити відповідний магазин додатків на вашому телефоні або планшеті."
},
"title": "Про додаток \"Я",
"img_alt": "Me-app"
@@ -1628,7 +1628,6 @@
},
"description_formal": "Ви використаєте свій {{fund}}кредит для цього бронювання. Ви робите бронювання? Тоді ви погоджуєтесь, що ми передаємо ваші персональні дані постачальнику.",
"description_formal_time": "{{ days_to_cancel }} Ви все ще можете скасувати бронювання протягом декількох днів після підтвердження.",
- "description_informal": "Ви використовуєте свій {{fund}}Ви використовуєте свій кредит для цього бронювання. Ви робите бронювання? Тоді ви погоджуєтесь, що ми передаємо ваші персональні дані постачальнику.",
"description_informal_time": "{{ days_to_cancel }} Ви все ще можете скасувати бронювання протягом декількох днів після підтвердження.",
"email_setup_description": "Додайте свою електронну адресу, щоб отримувати повідомлення.",
"email_setup_title": "Додати адресу електронної пошти",
@@ -1693,7 +1692,8 @@
"description": "Ваше бронювання зроблено.",
"title": "Спрацювало!"
},
- "voucher_image_alt": "Кредит"
+ "voucher_image_alt": "Кредит",
+ "description_informal": "Ви використовуєте свій {{fund}} кредит для цього бронювання. Здійснюєте бронювання? Тоді ви погоджуєтесь, що ми передаємо ваші персональні дані постачальнику послуг."
},
"modal": {
"buttons": {
@@ -2341,7 +2341,8 @@
"account": {
"active_since": "Активний з",
"last_login": "Останній вхід",
- "title": "Реквізити рахунку"
+ "title": "Реквізити рахунку",
+ "last_activity": "Остання дія"
},
"bank_accounts": {
"title": "Банківський рахунок",
@@ -2370,9 +2371,15 @@
},
"personal": {
"bsn": "BSN",
- "title": "Персональні дані"
- },
- "title": "Дані"
+ "title": "Персональні дані",
+ "age": "Вік"
+ },
+ "title": "Дані",
+ "household": {
+ "house_composition": "Склад сім'ї",
+ "living_arrangement": "Жива форма",
+ "title": "Домогосподарство"
+ }
},
"provider_sign_up": {
"breadcrumbs": {
@@ -2676,9 +2683,9 @@
"extra_amount": {
"date": "Дата",
"method": "Метод",
- "mount": "Самостійна оплата",
"refunded": "Відшкодовано",
- "status": "Статус"
+ "status": "Статус",
+ "amount": "Самостійна оплата"
},
"labels": {
"cancel": "Скасувати",
@@ -3028,7 +3035,6 @@
},
"preferences_emails": "Налаштування електронної пошти",
"preferences_notifications": "Налаштування сповіщень",
- "records": "Профіль",
"reimbursements": "Відшкодування витрат",
"reservations": "Бронювання",
"schagen": {
@@ -3048,7 +3054,8 @@
},
"winterswijk": {
"funds": "Активувати"
- }
+ },
+ "profile": "Дані"
},
"groningen": {
"voucher": "Моя міська картка"
@@ -3158,7 +3165,8 @@
"security_2fa": "Безпека",
"security_sessions": "Сесії",
"aria_label": "Меню користувача",
- "title": "Особисте"
+ "title": "Особисте",
+ "profile": "Дані"
},
"main_menu": "Головне меню",
"open_home": "Повернутися на головну сторінку",
@@ -3169,6 +3177,9 @@
"hartvanwestbrabant": "Запустити програму",
"midden_drenthe": "Активувати кредит",
"potjeswijzer": "Запустити програму"
+ },
+ "language": {
+ "prefix": "Твоя мова:"
}
},
"voucher_printable": {
@@ -3291,7 +3302,10 @@
"reactivate": "Активувати"
},
"card_number": "Номер пропуску",
- "title": "Активуйте мій пропуск"
+ "title": "Активуйте мій пропуск",
+ "less_details": "Приховати всі деталі",
+ "more_details": "Показати всі деталі",
+ "personal_date": "Персональні дані"
},
"reimbursement": {
"button": "Надіслати купон",
@@ -3332,7 +3346,7 @@
"title": "Транзакції",
"top_up": "Оновлений"
},
- "voucher_card_combined": {
+ "card_combined": {
"header": {
"title": "Як це працює?"
},
diff --git a/translations/cache/cache.json b/translations/cache/cache.json
index b1a3a8f27..1949663fa 100644
--- a/translations/cache/cache.json
+++ b/translations/cache/cache.json
@@ -3561,7 +3561,7 @@
],
[
"me.download.description",
- "Download de Me-app via onderstaande app stores. Klik hier om direct de juiste app store te openen op je telefoon of tablet."
+ "Download de Me-app via onderstaande app stores. Klik hier om direct de juiste app store te openen op je telefoon of tablet."
],
[
"me.download.title",
@@ -4421,7 +4421,7 @@
],
[
"modal_reserve_product.description_informal",
- "Je gebruikt jouw {{fund}} tegoed voor deze reservering. Plaatst je een reservering? Dan gaat je ermee akkoord dat wij je persoonlijke gegevens delen met de aanbieder."
+ "Je gebruikt jouw {{fund}} tegoed voor deze reservering. Plaats je een reservering? Dan ga je ermee akkoord dat wij je persoonlijke gegevens delen met de aanbieder."
],
[
"modal_reserve_product.description_informal_time",
@@ -6347,6 +6347,10 @@
"profile.account.active_since",
"Actief sinds"
],
+ [
+ "profile.account.last_activity",
+ "Laatste handeling"
+ ],
[
"profile.account.last_login",
"Laatste inlog"
@@ -6423,6 +6427,22 @@
"profile.history.you",
"jou"
],
+ [
+ "profile.household.house_composition",
+ "Gezinssamenstelling"
+ ],
+ [
+ "profile.household.living_arrangement",
+ "Leefvorm"
+ ],
+ [
+ "profile.household.title",
+ "Huishouden"
+ ],
+ [
+ "profile.personal.age",
+ "Leeftijd"
+ ],
[
"profile.personal.bsn",
"BSN"
@@ -7207,6 +7227,10 @@
"reservation.extra_amount_refund.title",
"Details van terugbetaling"
],
+ [
+ "reservation.extra_amount.amount",
+ "Zelf bijbetaal"
+ ],
[
"reservation.extra_amount.date",
"Datum"
@@ -7215,10 +7239,6 @@
"reservation.extra_amount.method",
"Methode"
],
- [
- "reservation.extra_amount.mount",
- "Zelf bijbetaal"
- ],
[
"reservation.extra_amount.refunded",
"Terugbetaald"
@@ -8024,8 +8044,8 @@
"Notificatievoorkeuren"
],
[
- "top_navbar.buttons.mobile.dropdown.records",
- "Profiel"
+ "top_navbar.buttons.mobile.dropdown.profile",
+ "Gegevens"
],
[
"top_navbar.buttons.mobile.dropdown.reimbursements",
@@ -8247,6 +8267,10 @@
"top_navbar.items.westerkwartier.funds",
"Potjes"
],
+ [
+ "top_navbar.language.prefix",
+ "Uw taal:"
+ ],
[
"top_navbar.main_menu",
"Hoofdmenu"
@@ -8323,6 +8347,10 @@
"top_navbar.user_menu.preferences_notifications",
"Notificatievoorkeuren"
],
+ [
+ "top_navbar.user_menu.profile",
+ "Gegevens"
+ ],
[
"top_navbar.user_menu.providers",
"Aanbieders"
@@ -8419,6 +8447,42 @@
"voucher.buttons.send",
"E-mail naar mij"
],
+ [
+ "voucher.card_combined.header.title",
+ "Hoe werkt het?"
+ ],
+ [
+ "voucher.card_combined.labels.contact_sponsor",
+ "Heeft u vragen?"
+ ],
+ [
+ "voucher.card_combined.labels.contact_sponsor_details",
+ "Neem dan contact met ons op."
+ ],
+ [
+ "voucher.card_combined.labels.how_it_works",
+ "Wij hebben uw aanvraag ontvangen. U ontvangt binnen 8 weken een beslissing op uw aanvraag."
+ ],
+ [
+ "voucher.card_combined.labels.IIT.how_it_works",
+ "Wij hebben uw aanvraag ontvangen. U ontvangt binnen 8 weken een beslissing op uw aanvraag."
+ ],
+ [
+ "voucher.card_combined.labels.IIT.redirect_to",
+ "Wilt u nog een vergoeding aanvragen?"
+ ],
+ [
+ "voucher.card_combined.labels.meedoenregeling_volwassenen_ww.how_it_works",
+ "Heeft u kosten gemaakt die binnen deze regeling vallen? Vraag uw kosten terug door een bon in te sturen. Na goedkeuring ontvangt u het bedrag op uw persoonlijke bankrekening."
+ ],
+ [
+ "voucher.card_combined.labels.meedoenregeling_volwassenen_ww.redirect_to",
+ "Kosten terugvragen?"
+ ],
+ [
+ "voucher.card_combined.labels.redirect_to",
+ "Wilt u nog een vergoeding aanvragen?"
+ ],
[
"voucher.card.activate_my_pass",
"Activeer mijn pas"
@@ -8627,6 +8691,18 @@
"voucher.physical_card.card_number",
"Pasnummer"
],
+ [
+ "voucher.physical_card.less_details",
+ "Verberg alle details"
+ ],
+ [
+ "voucher.physical_card.more_details",
+ "Toon alle details"
+ ],
+ [
+ "voucher.physical_card.personal_date",
+ "Persoonsgegevens"
+ ],
[
"voucher.physical_card.title",
"Activeer mijn pas"
@@ -8731,42 +8807,6 @@
"voucher.transactions.top_up",
"Opgewaardeerd"
],
- [
- "voucher.voucher_card_combined.header.title",
- "Hoe werkt het?"
- ],
- [
- "voucher.voucher_card_combined.labels.contact_sponsor",
- "Heeft u vragen?"
- ],
- [
- "voucher.voucher_card_combined.labels.contact_sponsor_details",
- "Neem dan contact met ons op."
- ],
- [
- "voucher.voucher_card_combined.labels.how_it_works",
- "Wij hebben uw aanvraag ontvangen. U ontvangt binnen 8 weken een beslissing op uw aanvraag."
- ],
- [
- "voucher.voucher_card_combined.labels.IIT.how_it_works",
- "Wij hebben uw aanvraag ontvangen. U ontvangt binnen 8 weken een beslissing op uw aanvraag."
- ],
- [
- "voucher.voucher_card_combined.labels.IIT.redirect_to",
- "Wilt u nog een vergoeding aanvragen?"
- ],
- [
- "voucher.voucher_card_combined.labels.meedoenregeling_volwassenen_ww.how_it_works",
- "Heeft u kosten gemaakt die binnen deze regeling vallen? Vraag uw kosten terug door een bon in te sturen. Na goedkeuring ontvangt u het bedrag op uw persoonlijke bankrekening."
- ],
- [
- "voucher.voucher_card_combined.labels.meedoenregeling_volwassenen_ww.redirect_to",
- "Kosten terugvragen?"
- ],
- [
- "voucher.voucher_card_combined.labels.redirect_to",
- "Wilt u nog een vergoeding aanvragen?"
- ],
[
"vouchers.breadcrumbs.home",
"Home"
|