Date: Mon, 11 Sep 2023 14:12:46 +0300
Subject: [PATCH 02/72] OTR(Frontend): OPHOTRKEH-247: allow current date for
qualification begin (#561)
* OTR(Frontend): OPHOTRKEH-247: allow current date for qualification begin
* OTR(Frontend): OPHOTRKEH-247: oops, duplicate code here
---
frontend/packages/otr/src/redux/selectors/meetingDate.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/packages/otr/src/redux/selectors/meetingDate.ts b/frontend/packages/otr/src/redux/selectors/meetingDate.ts
index 354a66009..28a26a3f8 100644
--- a/frontend/packages/otr/src/redux/selectors/meetingDate.ts
+++ b/frontend/packages/otr/src/redux/selectors/meetingDate.ts
@@ -38,7 +38,7 @@ const filterMeetingDateByStatus = (
status: MeetingDateStatus,
currentDate: Dayjs
) => {
- const isBefore = DateUtils.isDatePartBefore(date, currentDate);
+ const isBefore = DateUtils.isDatePartBeforeOrEqual(date, currentDate);
return status === MeetingDateStatus.Upcoming ? !isBefore : isBefore;
};
From b9a94a4fd33dfddc30186c64b8bc5bf6eba8ed1a Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Wed, 13 Sep 2023 13:47:26 +0300
Subject: [PATCH 03/72] SHARED(Frontend): Try to match email validation logic
with YKI backend
---
frontend/packages/shared/CHANGELOG.MD | 12 ++++++
frontend/packages/shared/package.json | 2 +-
.../shared/src/utils/inputField/inputField.ts | 38 ++++++++++++++++++-
3 files changed, 49 insertions(+), 3 deletions(-)
diff --git a/frontend/packages/shared/CHANGELOG.MD b/frontend/packages/shared/CHANGELOG.MD
index de9fc215e..129ff3867 100644
--- a/frontend/packages/shared/CHANGELOG.MD
+++ b/frontend/packages/shared/CHANGELOG.MD
@@ -9,6 +9,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Released]
+## [1.9.24] - 2023-09-13
+
+### Changed
+
+- More stringent email validation. Uses same validation logic as YKI backend.
+
+## [1.9.23] - 203-08-25
+
+### Added
+
+- Optional `title` property for OPPHLogoViewer
+
## [1.9.22] - 2023-08-16
### Changed
diff --git a/frontend/packages/shared/package.json b/frontend/packages/shared/package.json
index 0db530e51..807fd41ee 100644
--- a/frontend/packages/shared/package.json
+++ b/frontend/packages/shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@opetushallitus/kieli-ja-kaantajatutkinnot.shared",
- "version": "1.9.23",
+ "version": "1.9.24",
"description": "Shared Frontend Package",
"exports": {
"./components": "./src/components/index.tsx",
diff --git a/frontend/packages/shared/src/utils/inputField/inputField.ts b/frontend/packages/shared/src/utils/inputField/inputField.ts
index 9d44af84f..7e2a53af4 100644
--- a/frontend/packages/shared/src/utils/inputField/inputField.ts
+++ b/frontend/packages/shared/src/utils/inputField/inputField.ts
@@ -134,7 +134,7 @@ export class InputFieldUtils {
switch (type) {
case TextFieldTypes.Email:
- if (!InputFieldUtils.EMAIL_REG_EXR.test(trimmedValue)) {
+ if (!InputFieldUtils.isValidEmail(trimmedValue)) {
return CustomTextFieldErrors.EmailFormat;
}
break;
@@ -157,6 +157,40 @@ export class InputFieldUtils {
return '';
}
- private static EMAIL_REG_EXR = /^.+@.+\..+$/;
+ static isValidEmail(email: string) {
+ const emailParts = email.split('@');
+ if (emailParts.length != 2) {
+ return false;
+ }
+
+ const [localPart, domainPart] = emailParts;
+ if (!InputFieldUtils.EMAIL_LOCAL_PART_REGEX.test(localPart)) {
+ return false;
+ }
+ if (localPart.indexOf('..') > -1) {
+ return false;
+ }
+ if (localPart.startsWith('.')) {
+ return false;
+ }
+ if (localPart.endsWith('.')) {
+ return false;
+ }
+
+ if (!InputFieldUtils.EMAIL_DOMAIN_PART_REGEX.test(domainPart)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private static EMAIL_LOCAL_PART_REGEX = new RegExp(
+ /^[\p{Letter}0-9!#$%&'+\-\/=\?\^_`\.\{|\}~]{1,64}$/,
+ 'u'
+ );
+ private static EMAIL_DOMAIN_PART_REGEX = new RegExp(
+ /^[\p{Letter}0-9\-\.]{1,255}$/,
+ 'u'
+ );
private static TEL_REG_EXR = /\d{7,14}$/;
}
From 2198a473982226ac59c618abfdf33add19030dae Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Wed, 13 Sep 2023 13:53:41 +0300
Subject: [PATCH 04/72] YKI(Frontend): Use more strict email validation logic
[deploy]
---
frontend/packages/yki/package.json | 2 +-
frontend/yarn.lock | 11 +++++++++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/frontend/packages/yki/package.json b/frontend/packages/yki/package.json
index d7960f5b1..9c0e58e7a 100644
--- a/frontend/packages/yki/package.json
+++ b/frontend/packages/yki/package.json
@@ -26,7 +26,7 @@
"yki:tslint": "yarn g:tsc --pretty --noEmit"
},
"dependencies": {
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
},
"devDependencies": {
"multer": "^1.4.5-lts.1"
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 932dec103..225ffdb22 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -2990,7 +2990,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared, shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23":
+"@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared, shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24":
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.shared@workspace:packages/shared"
languageName: unknown
@@ -3010,7 +3010,7 @@ __metadata:
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.yki@workspace:packages/yki"
dependencies:
multer: ^1.4.5-lts.1
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
languageName: unknown
linkType: soft
@@ -12606,6 +12606,13 @@ __metadata:
languageName: node
linkType: hard
+"shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23":
+ version: 1.9.23
+ resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.shared@npm:1.9.23::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40Opetushallitus%2Fkieli-ja-kaantajatutkinnot.shared%2F1.9.23%2F2aac238a8650ec36d668d15f4a72af861ab728e3"
+ checksum: 30cc03dac0c24683729f0e3a3f2b0c49e7918f3544d8fdeb0b003a4f6c31fd67372ccb11d432d6ef1b57c938dd222f2a02d5c315a76a7e3bd861201de3cd0c73
+ languageName: node
+ linkType: hard
+
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
From f41ea1a0ccd4bbb3781c106f7c3faba6c4bb42b5 Mon Sep 17 00:00:00 2001
From: Jarkko Pesonen <435495+jrkkp@users.noreply.github.com>
Date: Thu, 14 Sep 2023 14:20:44 +0300
Subject: [PATCH 05/72] AKR(Frontend) OPHAKRKEH-509: allow current day for
registration begin (#566)
---
frontend/packages/akr/src/redux/selectors/meetingDate.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/packages/akr/src/redux/selectors/meetingDate.ts b/frontend/packages/akr/src/redux/selectors/meetingDate.ts
index 354a66009..28a26a3f8 100644
--- a/frontend/packages/akr/src/redux/selectors/meetingDate.ts
+++ b/frontend/packages/akr/src/redux/selectors/meetingDate.ts
@@ -38,7 +38,7 @@ const filterMeetingDateByStatus = (
status: MeetingDateStatus,
currentDate: Dayjs
) => {
- const isBefore = DateUtils.isDatePartBefore(date, currentDate);
+ const isBefore = DateUtils.isDatePartBeforeOrEqual(date, currentDate);
return status === MeetingDateStatus.Upcoming ? !isBefore : isBefore;
};
From e4b2f4a1be949618ea2a11adb0bb4bb6a7f6e51d Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Thu, 14 Sep 2023 14:32:54 +0300
Subject: [PATCH 06/72] YKI(Frontend): Re-enable dateOfBirth placeholder text
OPHYKIKEH-253
---
.../registration/steps/register/EmailRegistrationDetails.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/frontend/packages/yki/src/components/registration/steps/register/EmailRegistrationDetails.tsx b/frontend/packages/yki/src/components/registration/steps/register/EmailRegistrationDetails.tsx
index e89720e7b..699f6570e 100644
--- a/frontend/packages/yki/src/components/registration/steps/register/EmailRegistrationDetails.tsx
+++ b/frontend/packages/yki/src/components/registration/steps/register/EmailRegistrationDetails.tsx
@@ -250,7 +250,6 @@ export const EmailRegistrationDetails = () => {
From 753cd76144c8176d84c4d80c5af73ac36e3c5b46 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 14 Sep 2023 16:49:41 +0300
Subject: [PATCH 07/72] SHARED(Frontend): Require domain part of email to
consist of at least two subdomains
---
.../shared/src/utils/inputField/inputField.ts | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/frontend/packages/shared/src/utils/inputField/inputField.ts b/frontend/packages/shared/src/utils/inputField/inputField.ts
index 7e2a53af4..b32ee9354 100644
--- a/frontend/packages/shared/src/utils/inputField/inputField.ts
+++ b/frontend/packages/shared/src/utils/inputField/inputField.ts
@@ -177,9 +177,18 @@ export class InputFieldUtils {
return false;
}
- if (!InputFieldUtils.EMAIL_DOMAIN_PART_REGEX.test(domainPart)) {
+ if (domainPart.length > 255) {
return false;
}
+ const domainParts = domainPart.split('.');
+ if (domainParts.length < 2) {
+ return false;
+ }
+ for (const subdomain of domainParts) {
+ if (!InputFieldUtils.EMAIL_SUBDOMAIN_REGEX.test(subdomain)) {
+ return false;
+ }
+ }
return true;
}
@@ -188,8 +197,8 @@ export class InputFieldUtils {
/^[\p{Letter}0-9!#$%&'+\-\/=\?\^_`\.\{|\}~]{1,64}$/,
'u'
);
- private static EMAIL_DOMAIN_PART_REGEX = new RegExp(
- /^[\p{Letter}0-9\-\.]{1,255}$/,
+ private static EMAIL_SUBDOMAIN_REGEX = new RegExp(
+ /^[\p{Letter}0-9\-]{1,63}$/,
'u'
);
private static TEL_REG_EXR = /\d{7,14}$/;
From a123fdfefb2c474192e82b7e67c6eeba652fb821 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 14 Sep 2023 16:52:14 +0300
Subject: [PATCH 08/72] AKR:OTR:VKT(Frontend): Take new email validation into
use
---
frontend/packages/akr/package.json | 2 +-
frontend/packages/otr/package.json | 2 +-
frontend/packages/vkt/package.json | 2 +-
frontend/yarn.lock | 13 +++----------
4 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/frontend/packages/akr/package.json b/frontend/packages/akr/package.json
index 5e300edeb..898c18b26 100644
--- a/frontend/packages/akr/package.json
+++ b/frontend/packages/akr/package.json
@@ -22,6 +22,6 @@
"akr:tslint": "yarn g:tsc --pretty --noEmit"
},
"dependencies": {
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
}
}
diff --git a/frontend/packages/otr/package.json b/frontend/packages/otr/package.json
index 19becf5b8..e86c52ecb 100644
--- a/frontend/packages/otr/package.json
+++ b/frontend/packages/otr/package.json
@@ -25,6 +25,6 @@
"otr:tslint": "yarn g:tsc --pretty --noEmit"
},
"dependencies": {
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
}
}
diff --git a/frontend/packages/vkt/package.json b/frontend/packages/vkt/package.json
index 833ab635a..03d962b81 100644
--- a/frontend/packages/vkt/package.json
+++ b/frontend/packages/vkt/package.json
@@ -26,6 +26,6 @@
},
"dependencies": {
"reduxjs-toolkit-persist": "^7.2.1",
- "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ "shared": "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
}
}
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 225ffdb22..c892cb9f3 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -2890,7 +2890,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.akr@workspace:packages/akr"
dependencies:
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
languageName: unknown
linkType: soft
@@ -2898,7 +2898,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.otr@workspace:packages/otr"
dependencies:
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
languageName: unknown
linkType: soft
@@ -3001,7 +3001,7 @@ __metadata:
resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.vkt@workspace:packages/vkt"
dependencies:
reduxjs-toolkit-persist: ^7.2.1
- shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23"
+ shared: "npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.24"
languageName: unknown
linkType: soft
@@ -12606,13 +12606,6 @@ __metadata:
languageName: node
linkType: hard
-"shared@npm:@opetushallitus/kieli-ja-kaantajatutkinnot.shared@1.9.23":
- version: 1.9.23
- resolution: "@opetushallitus/kieli-ja-kaantajatutkinnot.shared@npm:1.9.23::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40Opetushallitus%2Fkieli-ja-kaantajatutkinnot.shared%2F1.9.23%2F2aac238a8650ec36d668d15f4a72af861ab728e3"
- checksum: 30cc03dac0c24683729f0e3a3f2b0c49e7918f3544d8fdeb0b003a4f6c31fd67372ccb11d432d6ef1b57c938dd222f2a02d5c315a76a7e3bd861201de3cd0c73
- languageName: node
- linkType: hard
-
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
From 08b94938aae8f2335acf26649304f02444ff159d Mon Sep 17 00:00:00 2001
From: Laura Ketola <52139145+lket@users.noreply.github.com>
Date: Fri, 15 Sep 2023 10:18:27 +0300
Subject: [PATCH 09/72] YKI(Frontend): Add loading indicator to registration
submit (#562)
OPHYKIKEH-258
---
.../PublicRegistrationControlButtons.tsx | 40 +++++++++++++------
1 file changed, 28 insertions(+), 12 deletions(-)
diff --git a/frontend/packages/yki/src/components/registration/PublicRegistrationControlButtons.tsx b/frontend/packages/yki/src/components/registration/PublicRegistrationControlButtons.tsx
index a2078c2c3..9dabbf8f9 100644
--- a/frontend/packages/yki/src/components/registration/PublicRegistrationControlButtons.tsx
+++ b/frontend/packages/yki/src/components/registration/PublicRegistrationControlButtons.tsx
@@ -1,4 +1,9 @@
-import { CustomButton, CustomButtonLink, Text } from 'shared/components';
+import {
+ CustomButton,
+ CustomButtonLink,
+ LoadingProgressIndicator,
+ Text,
+} from 'shared/components';
import { APIResponseStatus, Color, Severity, Variant } from 'shared/enums';
import { useDialog } from 'shared/hooks';
@@ -39,11 +44,16 @@ const SubmitButton = () => {
keyPrefix: 'yki.component.registration',
});
const translateCommon = useCommonTranslation();
- const { activeStep } = useAppSelector(registrationSelector);
+ const {
+ activeStep,
+ submitRegistration: { status: submitRegistrationStatus },
+ } = useAppSelector(registrationSelector);
const { showDialog } = useDialog();
const dispatch = useAppDispatch();
const getRegistrationErrors = usePublicRegistrationErrors(true);
+ const isSubmitInProgress =
+ submitRegistrationStatus === APIResponseStatus.InProgress;
const handleSubmitBtnClick = () => {
if (activeStep === PublicRegistrationFormStep.Register) {
dispatch(setShowErrors(true));
@@ -82,17 +92,23 @@ const SubmitButton = () => {
};
return (
-
- {t('controlButtons.confirm')}
-
+
+ {t('controlButtons.confirm')}
+
+
);
};
From 2fa6d818ddbfa3e4ce4ed90b90d07133d946dc69 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 15 Sep 2023 12:22:45 +0300
Subject: [PATCH 10/72] Docs: Add GitHub conventions to README
---
README.md | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/README.md b/README.md
index 1f04c7895..fd42341a9 100644
--- a/README.md
+++ b/README.md
@@ -181,6 +181,8 @@ For example:
AKR(Frontend): Added new translations
```
+Consider writing a detailed commit body when the change is extensive or the reasons behind it are intricate.
+
### Branching naming conventions
Jira ticket numbers are used as branch names with possible suffix indicating what the branch is for.
@@ -192,6 +194,15 @@ feature/ ----> feature/OPHAKRKEH-250
hotfix/ ----> hotfix/akr
```
+### GitHub conventions
+
+Ensure the ticket number is included in the pull request title. This enables the association of a commit with its corresponding Jira ticket.
+
+Merging pull requests:
+
+- "Create a merge commit" and "Squash and merge": These options preserve a reference to the pull request and its associated branch.
+- "Rebase and Merge": If you choose this option, make sure that commit messages explicitly mention the relevant ticket number.
+
### Releases
Production releases for different applications are marked with tags. For example for AKR, tags are named as `AKR-ga-1234` where `ga-1234` stands for the Github Action workflow number. The name of the tag also matches the name of the release in Jira.
From 08069a3a50175f68b817a189317897116a0a9643 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Fri, 15 Sep 2023 14:22:41 +0300
Subject: [PATCH 11/72] YKI(Frontend): Fetch session details from backend and
store into redux state
---
frontend/packages/yki/src/enums/api.ts | 1 +
.../packages/yki/src/interfaces/session.ts | 32 +++++++++++++
.../yki/src/redux/reducers/session.ts | 46 +++++++++++++++++++
.../packages/yki/src/redux/sagas/index.ts | 2 +
.../packages/yki/src/redux/sagas/session.ts | 27 +++++++++++
.../yki/src/redux/selectors/session.ts | 3 ++
.../packages/yki/src/redux/store/index.ts | 2 +
.../packages/yki/src/routers/AppRouter.tsx | 13 ++++++
8 files changed, 126 insertions(+)
create mode 100644 frontend/packages/yki/src/interfaces/session.ts
create mode 100644 frontend/packages/yki/src/redux/reducers/session.ts
create mode 100644 frontend/packages/yki/src/redux/sagas/session.ts
create mode 100644 frontend/packages/yki/src/redux/selectors/session.ts
diff --git a/frontend/packages/yki/src/enums/api.ts b/frontend/packages/yki/src/enums/api.ts
index 2c1e9dcee..81ad65fde 100644
--- a/frontend/packages/yki/src/enums/api.ts
+++ b/frontend/packages/yki/src/enums/api.ts
@@ -12,6 +12,7 @@ export enum APIEndpoints {
Logout = '/yki/auth/logout',
SubmitRegistration = '/yki/api/registration/:registrationId/submit',
SuomiFiAuthRedirect = '/yki/auth/',
+ User = '/yki/auth/user',
}
export enum PaymentStatus {
diff --git a/frontend/packages/yki/src/interfaces/session.ts b/frontend/packages/yki/src/interfaces/session.ts
new file mode 100644
index 000000000..99fbe255e
--- /dev/null
+++ b/frontend/packages/yki/src/interfaces/session.ts
@@ -0,0 +1,32 @@
+export interface EmailAuthenticatedSession {
+ 'auth-method': 'EMAIL';
+ identity: {
+ 'external-user-id': string;
+ };
+}
+
+export interface SuomiFiAuthenticatedSession {
+ 'auth-method': 'SUOMIFI';
+ identity: {
+ first_name: string;
+ last_name: string;
+ ssn: string;
+ };
+}
+
+export interface CasAuthenticatedClerkSession {
+ 'auth-method': 'CAS';
+ identity: {
+ username: string;
+ };
+}
+
+interface UnauthenticatedSession {
+ identity: null;
+}
+
+export type SessionResponse =
+ | EmailAuthenticatedSession
+ | SuomiFiAuthenticatedSession
+ | CasAuthenticatedClerkSession
+ | UnauthenticatedSession;
diff --git a/frontend/packages/yki/src/redux/reducers/session.ts b/frontend/packages/yki/src/redux/reducers/session.ts
new file mode 100644
index 000000000..35d5bc4cf
--- /dev/null
+++ b/frontend/packages/yki/src/redux/reducers/session.ts
@@ -0,0 +1,46 @@
+import { createSlice, PayloadAction } from '@reduxjs/toolkit';
+import { APIResponseStatus } from 'shared/enums';
+
+import {
+ CasAuthenticatedClerkSession,
+ EmailAuthenticatedSession,
+ SessionResponse,
+ SuomiFiAuthenticatedSession,
+} from 'interfaces/session';
+
+interface SessionState {
+ status: APIResponseStatus;
+ loggedInSession?:
+ | EmailAuthenticatedSession
+ | SuomiFiAuthenticatedSession
+ | CasAuthenticatedClerkSession;
+}
+
+const initialState: SessionState = {
+ status: APIResponseStatus.NotStarted,
+};
+
+const sessionSlice = createSlice({
+ name: 'session',
+ initialState,
+ reducers: {
+ acceptSession(state, action: PayloadAction) {
+ state.status = APIResponseStatus.Success;
+ if (!action.payload.identity) {
+ state.loggedInSession = undefined;
+ } else {
+ state.loggedInSession = action.payload;
+ }
+ },
+ loadSession(state) {
+ state.status = APIResponseStatus.InProgress;
+ },
+ rejectSession(state) {
+ state.status = APIResponseStatus.Error;
+ },
+ },
+});
+
+export const sessionReducer = sessionSlice.reducer;
+export const { acceptSession, loadSession, rejectSession } =
+ sessionSlice.actions;
diff --git a/frontend/packages/yki/src/redux/sagas/index.ts b/frontend/packages/yki/src/redux/sagas/index.ts
index 56bb177de..5419b59c6 100644
--- a/frontend/packages/yki/src/redux/sagas/index.ts
+++ b/frontend/packages/yki/src/redux/sagas/index.ts
@@ -7,6 +7,7 @@ import { watchNationalities } from 'redux/sagas/nationalities';
import { watchPublicIdentification } from 'redux/sagas/publicIdentification';
import { watchRegistration } from 'redux/sagas/registration';
import { watchReservationRequest } from 'redux/sagas/reservation';
+import { watchSession } from 'redux/sagas/session';
export default function* rootSaga() {
yield all([
@@ -17,5 +18,6 @@ export default function* rootSaga() {
watchPublicIdentification(),
watchRegistration(),
watchReservationRequest(),
+ watchSession(),
]);
}
diff --git a/frontend/packages/yki/src/redux/sagas/session.ts b/frontend/packages/yki/src/redux/sagas/session.ts
new file mode 100644
index 000000000..d55bd3f14
--- /dev/null
+++ b/frontend/packages/yki/src/redux/sagas/session.ts
@@ -0,0 +1,27 @@
+import { call, put, takeLatest } from '@redux-saga/core/effects';
+import { AxiosResponse } from 'axios';
+
+import axiosInstance from 'configs/axios';
+import { APIEndpoints } from 'enums/api';
+import { SessionResponse } from 'interfaces/session';
+import {
+ acceptSession,
+ loadSession,
+ rejectSession,
+} from 'redux/reducers/session';
+
+function* loadSessionSaga() {
+ try {
+ const response: AxiosResponse = yield call(
+ axiosInstance.get,
+ APIEndpoints.User
+ );
+ yield put(acceptSession(response.data));
+ } catch (error) {
+ yield put(rejectSession());
+ }
+}
+
+export function* watchSession() {
+ yield takeLatest(loadSession.type, loadSessionSaga);
+}
diff --git a/frontend/packages/yki/src/redux/selectors/session.ts b/frontend/packages/yki/src/redux/selectors/session.ts
new file mode 100644
index 000000000..7342e7ed5
--- /dev/null
+++ b/frontend/packages/yki/src/redux/selectors/session.ts
@@ -0,0 +1,3 @@
+import { RootState } from 'configs/redux';
+
+export const sessionSelector = (state: RootState) => state.session;
diff --git a/frontend/packages/yki/src/redux/store/index.ts b/frontend/packages/yki/src/redux/store/index.ts
index 1facf59aa..ab2249120 100644
--- a/frontend/packages/yki/src/redux/store/index.ts
+++ b/frontend/packages/yki/src/redux/store/index.ts
@@ -10,6 +10,7 @@ import { nationalitiesReducer } from 'redux/reducers/nationalities';
import { publicIdentificationReducer } from 'redux/reducers/publicIdentification';
import { registrationReducer } from 'redux/reducers/registration';
import { reservationReducer } from 'redux/reducers/reservation';
+import { sessionReducer } from 'redux/reducers/session';
import rootSaga from 'redux/sagas/index';
const saga = createSagaMiddleware();
@@ -25,6 +26,7 @@ const store = configureStore({
publicIdentification: publicIdentificationReducer,
registration: registrationReducer,
reservation: reservationReducer,
+ session: sessionReducer,
},
middleware: [saga],
});
diff --git a/frontend/packages/yki/src/routers/AppRouter.tsx b/frontend/packages/yki/src/routers/AppRouter.tsx
index a6f90d7f3..9deeef210 100644
--- a/frontend/packages/yki/src/routers/AppRouter.tsx
+++ b/frontend/packages/yki/src/routers/AppRouter.tsx
@@ -1,10 +1,12 @@
import { FC, useEffect } from 'react';
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import { Notifier, ScrollToTop } from 'shared/components';
+import { APIResponseStatus } from 'shared/enums';
import { Footer } from 'components/layouts/Footer';
import { Header } from 'components/layouts/Header';
import { useCommonTranslation } from 'configs/i18n';
+import { useAppDispatch, useAppSelector } from 'configs/redux';
import { AppRoutes } from 'enums/app';
import { useAPIErrorToast } from 'hooks/useAPIErrorToast';
import { AccessibilityStatementPage } from 'pages/AccessibilityStatementPage';
@@ -15,13 +17,24 @@ import { InitRegistrationPage } from 'pages/InitRegistrationPage';
import { ReassessmentPage } from 'pages/ReassessmentPage';
import { RegistrationPage } from 'pages/RegistrationPage';
import { RegistrationPaymentStatusPage } from 'pages/RegistrationPaymentStatusPage';
+import { loadSession } from 'redux/reducers/session';
+import { sessionSelector } from 'redux/selectors/session';
export const AppRouter: FC = () => {
const translateCommon = useCommonTranslation();
+ const sessionStatus = useAppSelector(sessionSelector).status;
+ const dispatch = useAppDispatch();
useEffect(() => {
document.title = translateCommon('appTitle');
}, [translateCommon]);
+
+ useEffect(() => {
+ if (sessionStatus === APIResponseStatus.NotStarted) {
+ dispatch(loadSession());
+ }
+ }, [dispatch, sessionStatus]);
+
useAPIErrorToast();
return (
From 8e51a30809b1ceab0788ad0f9bd49d49e5a23fa0 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Tue, 19 Sep 2023 11:34:50 +0300
Subject: [PATCH 12/72] YKI(Frontend): Add some example user session responses
to dev-proxy
---
frontend/packages/yki/setupProxy.js | 68 +++++++++++++++++++++--------
1 file changed, 50 insertions(+), 18 deletions(-)
diff --git a/frontend/packages/yki/setupProxy.js b/frontend/packages/yki/setupProxy.js
index f264305ae..8e6027f3e 100644
--- a/frontend/packages/yki/setupProxy.js
+++ b/frontend/packages/yki/setupProxy.js
@@ -283,24 +283,54 @@ const adminUser = {
},
};
-// const organizerUser = {
-// identity: {
-// username: 'ykijarjestaja',
-// oid: '1.2.246.562.24.62800798482',
-// organizations: [
-// {
-// oid: '1.2.246.562.10.28646781493',
-// permissions: [{ palvelu: 'YKI', oikeus: 'JARJESTAJA' }],
-// },
-// ],
-// lang: 'fi',
-// },
-// };
-
-// const unauthenticatedUser = {
-// identity: null,
-// };
+/*
+const organizerUser = {
+ identity: {
+ username: 'ykijarjestaja',
+ oid: '1.2.246.562.24.62800798482',
+ organizations: [
+ {
+ oid: '1.2.246.562.10.28646781493',
+ permissions: [{ palvelu: 'YKI', oikeus: 'JARJESTAJA' }],
+ },
+ ],
+ lang: 'fi',
+ },
+};
+*/
+
+/*
+const loginLinkAuthenticatedUser = {
+ identity: {
+ 'external-user-id': 'testikaeyttaejae@test.invalid',
+ },
+ 'auth-method': 'EMAIL',
+};
+*/
+/*
+const suomiFiAuthenticatedUser = {
+ identity: {
+ first_name: 'Susanna',
+ nick_name: 'Susanna',
+ ssn: '020502E902X',
+ nationalities: ['784'],
+ 'external-user-id': '1.2.246.562.24.00123456789',
+ oid: '1.2.246.562.24.00123456789',
+ zip: null,
+ last_name: 'Uusivälimerkki',
+ street_address: null,
+ post_office: null,
+ },
+ 'auth-method': 'SUOMIFI',
+};
+*/
+
+/*
+const unauthenticatedUser = {
+ identity: null,
+};
+*/
const getNumberBetween = (min, max) =>
Math.trunc(Math.random() * (max - min) + min);
@@ -1202,7 +1232,9 @@ module.exports = function (app) {
app.get('/yki/api/evaluation/:id', (req, res) => {
const mockCall = () => {
try {
- evaluationPeriod = evaluationPeriods.evaluation_periods.find(ep => ep.id === req.params.id);
+ evaluationPeriod = evaluationPeriods.evaluation_periods.find(
+ (ep) => ep.id === req.params.id
+ );
if (evaluationPeriod) {
res.send(evaluationPeriod);
} else {
From 00d97e1f4259ba0982705cb3e447ecb1bdf58d25 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Tue, 19 Sep 2023 11:40:19 +0300
Subject: [PATCH 13/72] YKI(Frontend): Add auth-method to clerk responses
---
frontend/packages/yki/setupProxy.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/frontend/packages/yki/setupProxy.js b/frontend/packages/yki/setupProxy.js
index 8e6027f3e..3ae1609b9 100644
--- a/frontend/packages/yki/setupProxy.js
+++ b/frontend/packages/yki/setupProxy.js
@@ -281,6 +281,7 @@ const adminUser = {
],
lang: 'fi',
},
+ 'auth-method': 'CAS'
};
/*
@@ -296,6 +297,7 @@ const organizerUser = {
],
lang: 'fi',
},
+ 'auth-method': 'CAS'
};
*/
From 1e514d3708d9ea14528568002d40c389fbbb1f12 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 22 Sep 2023 20:43:28 +0300
Subject: [PATCH 14/72] YKI(Frontend): Add new translations
---
.../yki/public/i18n/en-GB/common.json | 1 +
.../yki/public/i18n/en-GB/public.json | 150 +++---
.../yki/public/i18n/fi-FI/public.json | 81 ++--
.../yki/public/i18n/sv-SE/common.json | 1 +
.../yki/public/i18n/sv-SE/public.json | 455 +++++++++++++++++-
.../page-objects/publicRegistrationPage.ts | 2 +-
6 files changed, 570 insertions(+), 120 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/common.json b/frontend/packages/yki/public/i18n/en-GB/common.json
index 249c06d59..a697cdaf1 100644
--- a/frontend/packages/yki/public/i18n/en-GB/common.json
+++ b/frontend/packages/yki/public/i18n/en-GB/common.json
@@ -66,6 +66,7 @@
},
"header": {
"accessibility": {
+ "continueToMain": "Skip to content",
"langSelectorAriaLabel": "Kieli / Språk / Language"
},
"lang": {
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index e8d1de1d4..cc8f0ec1a 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -16,13 +16,13 @@
"noExaminationPartsSelected": "Select at least one subtest"
},
"fixErrors": "Check and correct the following information:",
- "title": "Errors on the form!"
+ "title": "Invalid information!"
},
"fillParticipantDetails": {
"errors": {
"invalidBirthdate": "Invalid date of birth. Fill in as dd.mm.yyyy."
},
- "instructions": "Fill in the information below for the participant who requests reassessment. You will receive a summary of the request for reassessment to your email.",
+ "instructions": "Fill in the information below for the participant who requests reassessment",
"heading": "Participant information",
"labels": {
"birthdate": "Date of birth *",
@@ -32,14 +32,14 @@
},
"placeholders": {
"birthdate": "Fill in as dd.mm.yyyy",
- "email": "E.g. nimi@sahkoposti.fi",
+ "email": "For example, nimi@sahkoposti.fi",
"firstNames": "",
"lastName": ""
}
},
"info": {
- "refundIfChangeInEvaluation": "The reassessment fee will be refunded if the reassessment changes the original grading of the subtest.",
- "requiredFields": "Sections marked with a star (*) are mandatory."
+ "refundIfChangeInEvaluation": "The fee will be refunded if the reassessment changes the assessment of the subtest.",
+ "requiredFields": "Sections marked with an asterisk (*) are mandatory."
},
"renderEvaluationDetails": {
"heading": "Test details",
@@ -62,16 +62,20 @@
"street": "Hakaniemenranta 6",
"zipCity": "P.O. Box 380, 00531 Helsinki"
},
+ "headings": {
+ "contacts": "Contact information",
+ "info": "More information about the National Certificates of Language Proficiency (YKI)",
+ "statements": "Statements"
+ },
"links": {
"accessibility": {
"text": "Accessibility statement (in Finnish)"
},
"contact": {
- "title": "Feedback and development suggestions"
+ "title": ""
},
"privacy": {
- "text": "Privacy policy statement (oph.fi)",
- "url": "https://www.oph.fi/en/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ilmoittautuminen-yki-testiin#anchor-information-on-the-processing-of-personal-data"
+ "text": "Privacy policy statement"
},
"ykiHomepage": {
"text": "Website of the National Certificates of Language Proficiency (YKI) (oph.fi)"
@@ -83,65 +87,65 @@
"header": {
"evaluationPeriod": "Deadline for the request"
},
- "heading": "Tutkinnot",
+ "heading": "Select the test for whch you wish to request a reassessment",
"requestReassessment": "Request a reassessment"
},
"registration": {
"controlButtons": {
- "abortRegistration": "Abort registration",
+ "abortRegistration": "Quit registration",
"confirm": "Send"
},
"enrollToQueue": {
"dialog": {
"emailAlreadyQueued": {
- "description": "Olet jo aiemmin tilannut ilmoituksen peruutuspaikoista sähköpostiisi.",
- "title": "Ilmoituksen tilaaminen ei onnistu"
+ "description": "You have previously subscribed for notifications of available seats.",
+ "title": "Subscription failed"
},
"genericError": {
- "description": "Tapahtui odottamaton virhe. Voit yrittää uudelleen.",
- "title": "Ilmoituksen tilaaminen ei onnistunut"
+ "description": "An unexpected error occurred. Please try again.",
+ "title": "Subscription failed"
},
"inputError": {
- "description": "Tarkista antamasi sähköpostiosoite ja sen vahvistus.",
- "title": "Virheitä lomakkeella"
+ "description": "Verify your email address",
+ "title": "Invalid information!"
}
},
- "header": "Tilaa ilmoitus peruutuspaikoista",
+ "header": "Order a notification of available seats",
"info": {
- "part1": "Tässä testissä ei ole juuri nyt vapaita paikkoja. Voit tilata ilmoituksen peruutuspaikoista.",
- "part2": "Anna sähköpostiosoitteesi, niin saat ilmoituksen, jos paikkoja vapautuu."
+ "part1": "There are currently no available seats for this test. You can subscribe to receive notifications of possible cancellations.",
+ "part2": "Enter your email address, and we will notify you if any seats become available during the registration period."
},
"inputs": {
"confirmEmail": {
- "description": "Kirjoita sähköpostiosoitteesi uudelleen",
- "heading": "Vahvista sähköpostiosoitteesi"
+ "description": "Type in your email address again.",
+ "heading": "Confirm your email address."
},
"email": {
- "description": "Esim. nimi@sahkoposti.fi",
- "heading": "Syötä sähköpostiosoitteesi"
+ "description": "For example, nimi@sahkoposti.fi",
+ "heading": "Enter your email address."
},
"submit": {
- "label": "Tilaa ilmoitus"
+ "label": "Subscribe to notifications"
}
},
"success": {
- "heading": "Ilmoituksen tilaaminen onnistui!",
- "info": "Jos paikkoja tutkintoon vapautuu, saat ilmoituksen antamaasi sähköpostiosoitteeseen"
+ "heading": "Subscription confirmed!",
+ "info": "You will receive a notification at the address [sähköpostiosoite] if any seats become available for the test."
}
},
"examSessionDetails": {
"exam": "Test",
"examFee": "Test fee",
- "openings": "Available places",
+ "openings": "Available seats",
"registrationTime": "Registration period"
},
"header": "Register for a National Certificates of Language Proficiency (YKI) test",
"paymentSum": {
- "title": "Tutkintomaksu"
+ "title": "Test fee"
},
"registrationButtonLabels": {
"full": "Full",
- "orderCancellationNotification": "Order a notification of cancellations",
+ "orderCancellationNotification": "Order a notification of available seats",
"periodNotOpen": "Registration has not started",
"register": "Register"
},
@@ -151,13 +155,13 @@
"examSessionIsFull": "Test is full"
},
"registrationDetails": {
- "certificateLanguage": "In which language do you wish to receive the degree certificate? *",
+ "certificateLanguage": "In which language do you wish to receive the certificate? *",
"description1": "Fill in the YKI registration form using the participant’s own personal information.",
"description2": "Write the first and last name exactly as they appear on the official identity card.",
"errors": {
"fields": {
"address": "Street address",
- "certificateLanguage": "Select language of the certificate",
+ "certificateLanguage": "Select the language of the certificate",
"dateOfBirth": "Date of birth",
"email": "Email address",
"emailConfirmation": "Confirm email address",
@@ -169,13 +173,13 @@
"nationality": "Nationality",
"phoneNumber": "Telephone number",
"postNumber": "Postal code",
- "postOffice": "Post office",
+ "postOffice": "Town/city",
"privacyStatementConfirmation": "Accept the terms and conditions for processing personal data",
"ssn": "Personal identity code",
"termsAndConditionsAgreed": "Accept the terms and conditions for registration"
},
"fixErrors": "Check and correct the following information:",
- "title": "Errors on the form"
+ "title": "Invalid information!"
},
"labels": {
"address": "Street address",
@@ -186,31 +190,31 @@
"gender": "Gender",
"lastName": "Last name",
"nationality": "Nationality",
- "phoneNumber": "Phone number",
+ "phoneNumber": "Telephone number",
"postNumber": "Postal code",
- "postOffice": "Post office",
+ "postOffice": "Town/city",
"ssn": "Personal identity code"
},
"placeholders": {
"address": "",
"dateOfBirth": "Fill in as dd.mm.yyyy",
- "email": "E.g. nimi@sahkoposti.fi",
- "emailConfirmation": "Type in your email address again",
+ "email": "For example, nimi@sahkoposti.fi",
+ "emailConfirmation": "Fill in your email address again",
"firstNames": "",
"gender": "Select gender",
"lastName": "",
"nationality": "Select nationality",
- "phoneNumber": "Input in the format +358 50 123 4567",
+ "phoneNumber": "Use the format +358 50 123 4567",
"postNumber": "",
"postOffice": ""
},
"finnishSSN": "Do you have a Finnish personal identity code? *",
- "instructionLanguage": "In which language do you wish to complete the exercises? *",
- "requiredFields": "Sections marked with a star (*) are mandatory. ",
+ "instructionLanguage": "In which language do you wish to read the instructions of the tasks? *",
+ "requiredFields": "Sections marked with an asterisk (*) are mandatory.",
"ssn": "Personal identity code",
"termsAndConditions": {
"description1": "The registration for an YKI test is binding. Once you have confirmed your registration, you can no longer change it.",
- "description2": "Check that you are registering for a test of the correct language and level. ",
+ "description2": "Check that you are registering for a test of the correct language and level.",
"label": "I accept the terms and conditions for registration *",
"title": "Terms and conditions for registration"
},
@@ -238,7 +242,7 @@
"stepper": {
"active": "Active",
"completed": "Completed",
- "paymentAborted": "Payment was aborted",
+ "paymentAborted": "Payment was cancelled",
"phase": "Phase",
"step": {
"Done": "Done",
@@ -246,19 +250,19 @@
"Payment": "Payment",
"Register": "Register"
},
- "welcomeToExam": "Welcome to the test!"
+ "welcomeToExam": "Welcome to the YKI test!"
},
"steps": {
"identify": {
- "caption": "You must identify yourself to register for a YKI test. Use the personal information of the person taking the YKI test for the identification. ",
+ "caption": "You must identify yourself to register for a YKI test. Use the personal information of the person taking the YKI test for the identification.",
"emailButtonText": "identify with email",
"emailError": "Invalid email address",
"emailInput": {
"label": "Fill in your email address",
- "placeholder": "E.g. nimi@sahkoposti.fi"
+ "placeholder": "For example, nimi@sahkoposti.fi"
},
"emailLink": {
- "error": "Requesting a login link failed. You may try again.",
+ "error": "Identification failed. You may try again.",
"incorrectEmailDialog": {
"title": "Request failed",
"description": "Check your email address."
@@ -280,12 +284,12 @@
},
"payment": {
"cancel": {
- "description": "The registration is only confirmed after paying the test fee.",
- "heading": "Payment canceled",
- "title": "You canceled the payment"
+ "description": "Your registration will be confirmed after you have paid the test fee.",
+ "heading": "Payment was cancelled",
+ "title": "You cancelled the payment"
},
"error": {
- "description": "You can try to pay again. The registration is only confirmed after successfully paying the test fee.",
+ "description": "You may try to pay again. Your registration will be confirmed after you have paid the test fee.",
"heading": "Payment error",
"title": "An error occurred when paying."
},
@@ -294,7 +298,7 @@
"beforeYkiTest": {
"description": "To prepare for the YKI test, you can read the instructions provided by the Finnish National Agency for Education on their website:",
"label": "Before the YKI test (oph.fi)",
- "url": "https://www.oph.fi/en/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ennen-testia"
+ "url": "https://www.oph.fi/en/education-and-qualifications/yki-test"
},
"part1": "Your registration has been confirmed! You will receive a confirmation email shortly.",
"part2": "Your test centre will send you an email closer to the test date with detailed instructions on how to get there, including the exact location and start time.",
@@ -302,7 +306,7 @@
"specialArrangements": {
"description": "If you require special arrangements, send your application as soon as possible according to the instructions provided by the Finnish National Agency for Education. The instructions can be found on their website:",
"label": "Do you need special arrangements? (oph.fi)",
- "url": "https://www.oph.fi/en/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ilmoittautuminen-yki-testiin#anchor-do-you-need-special-arrangements"
+ "url": "https://www.oph.fi/en/education-and-qualifications/registering-yki-test#anchor-do-you-need-special-arrangements"
},
"title": "Welcome to the YKI test!"
},
@@ -311,7 +315,7 @@
},
"register": {
"inProgress": {
- "heading": "Register to test"
+ "heading": "Register for a test"
},
"success": {
"heading": "Registration form sent"
@@ -320,16 +324,16 @@
},
"unavailable": {
"full": {
- "description": "Ilmoittautuminen ei ole mahdollista juuri nyt. Tilaisuuteen ei ole vapaita paikkoja.",
- "title": "Tilaisuus on täynnä"
+ "description": "Registration is not possible at the moment. There are no available seats for this test.",
+ "title": "The test is full."
},
"past": {
- "description": "Tilaisuuteen ilmoittautuminen ei ole enää mahdollista. Ilmoittautumisaika on päättynyt.",
- "title": "Ilmoittautumisaika päättynyt"
+ "description": "Registration is not possible at the moment. The registration period has ended.",
+ "title": "Registration period has ended"
},
"upcoming": {
- "description": "Tilaisuuteen ilmoittautunen ei ole mahdollista. Ilmoittautumisaika ei ole vielä alkanut.",
- "title": "Ilmoittautumisaika ei ole alkanut"
+ "description": "Registration is not possible at the moment. The registration period has not started yet.",
+ "title": "Registration has not started"
}
}
}
@@ -337,7 +341,7 @@
"pages": {
"evaluationOrderPage": {
"notFound": "Tarkistusarvioinnin tietoja ei löytynyt!",
- "title": "Pyydä tarkistusarviointia",
+ "title": "Request a reassessment",
"toasts": {
"loadingError": "Tarkistusarvioinnin tietoja ei voitu ladata!"
}
@@ -399,11 +403,11 @@
"registrationPage": {
"abortDialog": {
"actions": {
- "cancel": "I don't want to abort",
- "confirm": "Yes, I want to abort the registration"
+ "cancel": "I don't want to quit",
+ "confirm": "Yes, I want to quit the registration"
},
- "description": "Do you want to abort the registration? Any information filled will be lost.",
- "title": "Abort registration"
+ "description": "Do you want to quit and leave this page? Any information filled will be lost.",
+ "title": "Quit registration"
},
"description": {
"part1": {
@@ -415,36 +419,36 @@
},
"part2": {
"link": {
- "label": "National Certificates of Language Proficiency (YKI)",
- "url": "https://www.oph.fi/en/national-certificates-language-proficiency-yki"
+ "label": "Do you need special arrangements?",
+ "url": "https://www.oph.fi/en/education-and-qualifications/registering-yki-test#anchor-do-you-need-special-arrangements"
},
"general": "The National Certificates of Language Proficiency (YKI) test measures functional language proficiency in everyday situations at the basic, intermediate, or advanced levels. All YKI tests consist of four subtests: speaking, listening comprehension, writing, and reading comprehension. You will get a separate grade for each subtest.",
- "languages": "You can take the test in the following languages: English, Finnish, French, German, Italian, Northern Sámi, Russian, Spanish, and Swedish. For more information on YKI tests, please see the website of the Finnish National Agency for Education:"
+ "languages": "If you require special arrangements in YKI test, please read the instructions on the website of the Finnish National Agency for Education:"
}
},
"filters": {
"buttons": {
- "empty": "Empty selection",
+ "empty": "Clear selection",
"showResults": "Show results ({{count}})"
},
"errorDialog": {
- "description": "To view results, select the desired language and proficiency level. Then press again the SHOW RESULTS button.",
- "title": "Select exam language and proficiency level"
+ "description": "To view results, select the language and proficiency level. Click the SHOW RESULTS button.",
+ "title": "Select the language and proficiency level"
},
"errors": {
"required": "Selection is required"
},
"heading": "Search for tests",
- "information": "Search for YKI-tests by choosing the language and proficiency level. Press the SHOW RESULTS button to see the results.",
+ "information": "Search for YKI-tests by choosing the language and proficiency level. Click the SHOW RESULTS button to see the results.",
"selectExamDetails": {
"prompt": "Choose test",
"required": "(required)"
}
},
"labels": {
- "excludeFullSessions": "Only show tests that have free places",
+ "excludeFullSessions": "Only show tests that have available seats",
"excludeNonOpenSessions": "Only show tests that are open for registration now",
- "filterExamSessions": "Filter test sessions",
+ "filterExamSessions": "Filter results",
"selectLanguage": "Choose language",
"selectLevel": "Choose proficiency level",
"selectMunicipality": "Choose municipality"
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index 582b2de5f..ea758bcb9 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -13,16 +13,16 @@
"email": "Sähköpostiosoite",
"firstNames": "Etunimet",
"lastName": "Sukunimi",
- "noExaminationPartsSelected": "Valitse ainakin yksi tarkistettava osakoe"
+ "noExaminationPartsSelected": "Valitse vähintään yksi osakoe"
},
"fixErrors": "Korjaa puuttuvat tai virheelliset tiedot:",
- "title": "Virheitä lomakkeella!"
+ "title": "Tiedoissa on korjattavaa!"
},
"fillParticipantDetails": {
"errors": {
- "invalidBirthdate": "Virheellinen syntymäaika. Syötä muodossa pp.kk.vvvv."
+ "invalidBirthdate": "Virheellinen syntymäaika. Kirjoita muodossa pp.kk.vvvv."
},
- "instructions": "Täytä alle YKI-testin osallistujan tiedot. Saat tarkistusarviointipyynnöstä yhteenvedon sähköpostiisi.",
+ "instructions": "Täytä alle sen osallistujan tiedot, joka hakee tarkistusarviointia.",
"heading": "Osallistujan tiedot",
"labels": {
"birthdate": "Syntymäaika *",
@@ -31,7 +31,7 @@
"lastName": "Sukunimi *"
},
"placeholders": {
- "birthdate": "Syötä muodossa pp.kk.vvvv",
+ "birthdate": "Kirjoita muodossa pp.kk.vvvv",
"email": "Esim. nimi@sahkoposti.fi",
"firstNames": "",
"lastName": ""
@@ -43,10 +43,10 @@
},
"renderEvaluationDetails": {
"heading": "Tutkinnon tiedot",
- "info": "Olet pyytämässä tarkistusarviointia seuraavasta tutkinnosta:"
+ "info": "Pyydä tarkistusarviointia seuraavasta tutkinnosta:"
},
"selectExaminationParts": {
- "heading": "Osakokeiden valinta",
+ "heading": "Valitse osakokeet",
"selectAtLeastOne": "Valitse vähintään yksi osakoe",
"selectParts": "Valitse ne osakokeet, joista haluat pyytää tarkistusarviointia *",
"sumTotal": "Tarkistusarvioinnin hinta yhteensä"
@@ -63,9 +63,9 @@
"zipCity": "PL 380, 00531 Helsinki"
},
"headings": {
- "statements": "Selosteet",
- "info": "Lisätietoa YKIstä",
- "contacts": "Yhteystiedot"
+ "contacts": "Yhteystiedot",
+ "info": "Lisätietoa yleisistä kielitutkinnoista (YKI)",
+ "statements": "Selosteet"
},
"links": {
"accessibility": {
@@ -75,8 +75,7 @@
"title": "Palaute ja kehitysideat"
},
"privacy": {
- "text": "Tietosuojaseloste (oph.fi)",
- "url": "https://www.oph.fi/fi/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ilmoittautuminen-yki-testiin#anchor-tietoa-henkilotietojen-kasittelysta"
+ "text": "Tietosuojaseloste"
},
"ykiHomepage": {
"text": "Yleisten kielitutkintojen verkkosivu (oph.fi)"
@@ -86,9 +85,9 @@
"publicEvaluationPeriodListing": {
"evaluationPeriodNotYetOpen": "Pyydä tarkistusarviointia {{- startDate}} alkaen",
"header": {
- "evaluationPeriod": "Tarkistusarvioinnin pyyntöaika"
+ "evaluationPeriod": "Aika, jolloin voit pyytää tarkistusarviointia:"
},
- "heading": "Tutkinnot",
+ "heading": "Valitse tutkinto, josta haluat pyytää tarkistusarviointia",
"requestReassessment": "Pyydä tarkistusarviointia"
},
"registration": {
@@ -100,21 +99,21 @@
"dialog": {
"emailAlreadyQueued": {
"description": "Olet jo aiemmin tilannut ilmoituksen peruutuspaikoista sähköpostiisi.",
- "title": "Ilmoituksen tilaaminen ei onnistu"
+ "title": "Ilmoituksen tilaaminen ei onnistunut"
},
"genericError": {
"description": "Tapahtui odottamaton virhe. Voit yrittää uudelleen.",
"title": "Ilmoituksen tilaaminen ei onnistunut"
},
"inputError": {
- "description": "Tarkista antamasi sähköpostiosoite ja sen vahvistus.",
- "title": "Virheitä lomakkeella"
+ "description": "Tarkista antamasi sähköpostiosoite.",
+ "title": "Tiedoissa on korjattavaa!"
}
},
"header": "Tilaa ilmoitus peruutuspaikoista",
"info": {
"part1": "Tässä testissä ei ole juuri nyt vapaita paikkoja. Voit tilata ilmoituksen peruutuspaikoista.",
- "part2": "Anna sähköpostiosoitteesi, niin saat ilmoituksen, jos paikkoja vapautuu."
+ "part2": "Anna sähköpostiosoitteesi, niin saat ilmoituksen, jos paikkoja vapautuu ilmoittautumisaikana."
},
"inputs": {
"confirmEmail": {
@@ -123,7 +122,7 @@
},
"email": {
"description": "Esim. nimi@sahkoposti.fi",
- "heading": "Syötä sähköpostiosoitteesi"
+ "heading": "Kirjoita sähköpostiosoitteesi"
},
"submit": {
"label": "Tilaa ilmoitus"
@@ -180,7 +179,7 @@
"termsAndConditionsAgreed": "Hyväksy ilmoittautumisen ehdot"
},
"fixErrors": "Korjaa puuttuvat tai virheelliset tiedot:",
- "title": "Virheitä lomakkeella"
+ "title": "Tiedoissa on korjattavaa!"
},
"labels": {
"address": "Katuosoite",
@@ -198,19 +197,19 @@
},
"placeholders": {
"address": "",
- "dateOfBirth": "Syötä muodossa pp.kk.vvvv",
+ "dateOfBirth": "Kirjoita muodossa pp.kk.vvvv",
"email": "Esim. nimi@sahkoposti.fi",
"emailConfirmation": "Kirjoita sähköpostiosoite uudelleen",
"firstNames": "",
"gender": "Valitse sukupuoli",
"lastName": "",
"nationality": "Valitse kansalaisuus",
- "phoneNumber": "Syötä muodossa +358 50 123 4567",
+ "phoneNumber": "Kirjoita muodossa +358 50 123 4567",
"postNumber": "",
"postOffice": ""
},
"finnishSSN": "Onko sinulla suomalainen henkilötunnus? *",
- "instructionLanguage": "Millä kielellä haluat tehdä tehtävät? *",
+ "instructionLanguage": "Millä kielellä haluat tehtävien ohjeet? *",
"requiredFields": "Tähdellä (*) merkityt osiot ovat pakollisia.",
"ssn": "Henkilötunnus",
"termsAndConditions": {
@@ -219,7 +218,7 @@
"label": "Hyväksyn ilmoittautumisen ehdot *",
"title": "Ilmoittautumisen ehdot"
},
- "title": "Syötä tietosi",
+ "title": "Täytä tietosi",
"whatsNext": {
"description": "Kun olet lähettänyt ilmoittautumislomakkeen, saat sähköpostiisi linkin tutkintomaksun maksamista varten. Ilmoittautuminen vahvistuu vasta, kun olet maksanut tutkintomaksun.",
"title": "Mitä tapahtuu seuraavaksi?"
@@ -259,11 +258,11 @@
"emailButtonText": "tunnistaudu sähköpostilla",
"emailError": "Virheellinen sähköpostiosoite",
"emailInput": {
- "label": "Syötä sähköpostiosoitteesi",
+ "label": "Kirjoita sähköpostiosoitteesi",
"placeholder": "Esim. nimi@sahkoposti.fi"
},
"emailLink": {
- "error": "Kirjautumislinkin tilaaminen epäonnistui. Voit yrittää uudestaan.",
+ "error": "Tunnistautuminen epäonnistui. Voit yrittää uudestaan.",
"incorrectEmailDialog": {
"title": "Pyyntö epäonnistui",
"description": "Tarkista sähköpostiosoite."
@@ -285,12 +284,12 @@
},
"payment": {
"cancel": {
- "description": "Ilmoittautuminen astuu voimaan vasta kun maksat tutkintomaksun.",
+ "description": "Ilmoittautuminen vahvistuu vasta, kun olet maksanut tutkintomaksun.",
"heading": "Maksutapahtuma keskeytyi",
"title": "Keskeytit maksutapahtuman"
},
"error": {
- "description": "Voit yrittää maksamista uudestaan. Ilmoittautuminen astuu voimaan vasta kun maksat tutkintomaksun.",
+ "description": "Voit yrittää maksamista uudestaan. Ilmoittautuminen vahvistuu vasta, kun olet maksanut tutkintomaksun.",
"heading": "Virhe maksutapahtumassa",
"title": "Maksutapahtuman käsittelyssä tapahtui virhe"
},
@@ -325,15 +324,15 @@
},
"unavailable": {
"full": {
- "description": "Ilmoittautuminen ei ole mahdollista juuri nyt. Tilaisuuteen ei ole vapaita paikkoja.",
- "title": "Tilaisuus on täynnä"
+ "description": "Ilmoittautuminen ei ole mahdollista juuri nyt. Tutkinnossa ei ole vapaita paikkoja.",
+ "title": "Tutkinto on täynnä"
},
"past": {
- "description": "Tilaisuuteen ilmoittautuminen ei ole enää mahdollista. Ilmoittautumisaika on päättynyt.",
+ "description": "Ilmoittautuminen ei ole enää mahdollista. Ilmoittautumisaika on päättynyt.",
"title": "Ilmoittautumisaika päättynyt"
},
"upcoming": {
- "description": "Tilaisuuteen ilmoittautunen ei ole mahdollista. Ilmoittautumisaika ei ole vielä alkanut.",
+ "description": "Ilmoittautuminen ei ole vielä mahdollista. Ilmoittautumisaika ei ole alkanut.",
"title": "Ilmoittautumisaika ei ole alkanut"
}
}
@@ -397,7 +396,7 @@
},
"introduction": {
"fee": "Tarkistusarviointien käsittelystä on tullut maksullista keväästä 2021 alkaen.",
- "info": "Tutkinnon suorittajalla on oikeus pyytää tarkistusarviointia, jos hän ei ole tyytyväinen saamaansa arviointiin. Tarkistusarviointia tulee hakea 14 vuorokauden kuluessa todistuksen saamisesta."
+ "info": "Tutkinnon suorittajalla on oikeus pyytää tarkistusarviointia, jos hän ei ole tyytyväinen saamaansa arviointiin. Tarkistusarviointia tulee hakea 14 vuorokauden kuluessa todistuksen saamisesta.\nVoit pyytää tarkistusarviointia 14 vuorokauden sisällä siitä, kun sinulla on ollut tilaisuus saada YKI-testisi tulos."
},
"title": "Yleiset kielitutkinnot (YKI) - Tarkistusarviointi"
},
@@ -420,16 +419,16 @@
},
"part2": {
"link": {
- "label": "Yleiset kielitutkinnot (YKI)",
- "url": "https://www.oph.fi/fi/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki"
+ "label": "Tarvitsetko erityisjärjestelyjä?",
+ "url": "https://www.oph.fi/fi/koulutus-ja-tutkinnot/ilmoittautuminen-yki-testiin#anchor-tarvitsetko-erityisjarjestelyja"
},
- "general": "Yleisissä kielitutkinnoissa (YKI) arvioidaan yleiskielen osaamista käytännön tilanteissa perustasolla, keskitasolla tai ylimmällä tasolla. Kaikissa YKI-tutkinnoissa on neljä osakoetta: puhuminen, puheen ymmärtäminen, kirjoittaminen ja tekstin ymmärtäminen. Saat jokaisesta osakokeesta oman arvosanan.",
- "languages": "Tutkinnon voit suorittaa seuraavissa kielissä: englanti, espanja, italia, pohjoissaame, ranska, ruotsi, saksa, suomi ja venäjä. Lue lisää yleisistä kielitutkinnoista Opetushallituksen verkkosivuilta:"
+ "general": "Yleisissä kielitutkinnoissa (YKI) arvioidaan yleiskielen osaamista käytännön tilanteissa perustasolla, keskitasolla tai ylimmällä tasolla. Kaikissa YKI-testeissä on neljä osakoetta: puhuminen, puheen ymmärtäminen, kirjoittaminen ja tekstin ymmärtäminen. Saat jokaisesta osakokeesta oman arvosanan.",
+ "languages": "Jos tarvitset erityisjärjestelyjä YKI-testissä, lue ohjeet erityisjärjestelyjen hakemiseen Opetushallituksen verkkosivuilta:"
}
},
"filters": {
"buttons": {
- "empty": "Tyhjennä kaikki",
+ "empty": "Tyhjennä valinnat",
"showResults": "Näytä tulokset ({{count}})"
},
"errorDialog": {
@@ -443,14 +442,14 @@
"information": "Hae tästä sopivaa YKI-testiä. Valitse kieli ja taitotaso. Paina NÄYTÄ TULOKSET -painiketta.",
"selectExamDetails": {
"prompt": "Valitse tutkinto",
- "required": "(pakollinen)",
- "optional": "(valinnainen)"
+ "optional": "(valinnainen)",
+ "required": "(pakollinen)"
}
},
"labels": {
"excludeFullSessions": "Näytä vain kielitutkinnot, joissa on tilaa",
"excludeNonOpenSessions": "Näytä vain kielitutkinnot, joihin voi ilmoittautua nyt",
- "filterExamSessions": "Suodata tutkintotilaisuuksia",
+ "filterExamSessions": "Rajaa tuloksia",
"selectLanguage": "Valitse kieli",
"selectLevel": "Valitse taitotaso",
"selectMunicipality": "Valitse paikkakunta"
diff --git a/frontend/packages/yki/public/i18n/sv-SE/common.json b/frontend/packages/yki/public/i18n/sv-SE/common.json
index e342c123e..f02437574 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/common.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/common.json
@@ -18,6 +18,7 @@
},
"header": {
"accessibility": {
+ "continueToMain": "Fortsätt till innehållet",
"langSelectorAriaLabel": "Kieli / Språk / Language"
},
"lang": {
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index e515464dc..77c0971c3 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -1,15 +1,460 @@
{
"yki": {
+ "component": {
+ "evaluationOrderForm": {
+ "actionButtons": {
+ "cancel": "Annulera",
+ "pay": "Betala"
+ },
+ "errorDialog": {
+ "errors": {
+ "acceptConditions": "Godkänn villkoren för behandling av personuppgifter",
+ "birthdate": "Födelsedatum",
+ "email": "E-postadress",
+ "firstNames": "Förnamn",
+ "lastName": "Efternamn",
+ "noExaminationPartsSelected": "Välj minst ett delprov."
+ },
+ "fixErrors": "Fyll i uppgifter som saknas eller korrigera felaktiga uppgifter.",
+ "title": "Felaktiga uppgifter!"
+ },
+ "fillParticipantDetails": {
+ "errors": {
+ "invalidBirthdate": "Felaktig födelsedatum. Ange i formatet dd.mm.åååå."
+ },
+ "instructions": "Fyll i uppgifterna om deltagaren som begär om kontrollbedömning.",
+ "heading": "Deltagarens uppgifter",
+ "labels": {
+ "birthdate": "Födelsedatum",
+ "email": "E-postadress",
+ "firstNames": "Förnamn",
+ "lastName": "Efternamn"
+ },
+ "placeholders": {
+ "birthdate": "Skriv i formatet dd.mm.åååå.",
+ "email": "Till exempel nimi@sahkoposti.fi",
+ "firstNames": "",
+ "lastName": ""
+ }
+ },
+ "info": {
+ "refundIfChangeInEvaluation": "Avgiften återbetalas om bedömningen av delprovet ändrar i samband med kontrollbedömningen.",
+ "requiredFields": "Fält markerade med en asterisk (*) är obligatoriska."
+ },
+ "renderEvaluationDetails": {
+ "heading": "Uppgifter om examen",
+ "info": null
+ },
+ "selectExaminationParts": {
+ "heading": null,
+ "selectAtLeastOne": null,
+ "selectParts": "Välj de delprov för vilka du vill att bedömningen kontrolleras",
+ "sumTotal": null
+ }
+ },
+ "footer": {
+ "address": {
+ "name": "Utbildningsstyrelsen",
+ "phone": {
+ "number": "+358 29 533 1000",
+ "title": "Telefon"
+ },
+ "street": "Hagnäskajen 6",
+ "zipCity": "PB 380, 00531 Helsingfors"
+ },
+ "headings": {
+ "contacts": "Kontaktuppgifter",
+ "info": "Mera information om Allmänna språkexamina (YKI)",
+ "statements": "Utlåtanden och direktiv"
+ },
+ "links": {
+ "accessibility": {
+ "text": "Tillgänglighetsdirektiv"
+ },
+ "contact": {
+ "title": ""
+ },
+ "privacy": {
+ "text": "Information om behandlingen av personuppgifter"
+ },
+ "ykiHomepage": {
+ "text": "Webbplatsen för allmänna språkexamina (YKI) (oph.fi)"
+ }
+ }
+ },
+ "publicEvaluationPeriodListing": {
+ "evaluationPeriodNotYetOpen": null,
+ "header": {
+ "evaluationPeriod": null
+ },
+ "heading": null,
+ "requestReassessment": "Gör en begäran om kontrollbedömning"
+ },
+ "registration": {
+ "controlButtons": {
+ "abortRegistration": "Avbryt anmälan",
+ "confirm": "Skicka"
+ },
+ "enrollToQueue": {
+ "dialog": {
+ "emailAlreadyQueued": {
+ "description": "Du har redan tidigare beställt en avisering om lediga platser i testet till din e-post.",
+ "title": "Beställning missllyckades"
+ },
+ "genericError": {
+ "description": "Ett oväntat fel har uppstått. Vänligen försök på nytt.",
+ "title": "Beställning missllyckades"
+ },
+ "inputError": {
+ "description": "Kontrollera din e-postadress",
+ "title": "Felaktiga uppgifter!"
+ }
+ },
+ "header": "Beställ en avisering om lediga platser",
+ "info": {
+ "part1": "Det finns inga lediga platser i det här testet just nu. Du kan beställa en avisering om lediga platser.",
+ "part2": "Ange din e-postadress om du vill beställa en avisering om lediga platser i testet."
+ },
+ "inputs": {
+ "confirmEmail": {
+ "description": "Skriv din e-postadress på nytt",
+ "heading": "Bekräfta din e-postadress"
+ },
+ "email": {
+ "description": "Till exempel nimi@sahkoposti.fi",
+ "heading": "Skriv din e-postadress"
+ },
+ "submit": {
+ "label": "Beställ en avisering"
+ }
+ },
+ "success": {
+ "heading": "Beställning lyckades!",
+ "info": "Du får en avisering till adressen [sähköpostiosoite] i fall det blir lediga platser."
+ }
+ },
+ "examSessionDetails": {
+ "exam": "Test",
+ "examFee": "Examensavgift",
+ "openings": "Lediga platser",
+ "registrationTime": "Anmälningstiden"
+ },
+ "header": "Anmäl dig till en allmän språkexamen (YKI)",
+ "paymentSum": {
+ "title": "Examensavgift"
+ },
+ "registrationButtonLabels": {
+ "full": "Fullbokat",
+ "orderCancellationNotification": "Beställ en avisering om lediga platser",
+ "periodNotOpen": "Anmälan har inte börjat",
+ "register": "Anmäl dig"
+ },
+ "registrationUnavailable": {
+ "admissionOpensOn": "Anmälan börjar {{- startDate}}",
+ "admissionPeriodIsClosed": "Anmälan har slutat",
+ "examSessionIsFull": "Testet är fullbokat"
+ },
+ "registrationDetails": {
+ "certificateLanguage": "På vilket språk vill du ha intyget? *",
+ "description1": "Fyll i YKI- anmälningsblankketten med testdeltagarens uppgifter.",
+ "description2": "För- och efternamn måste stavas på samma sätt som på deltagarens officiella identitetsbevis.",
+ "errors": {
+ "fields": {
+ "address": "Gatuadress",
+ "certificateLanguage": "Välj språket på intyget",
+ "dateOfBirth": "Födelsedatum",
+ "email": "E-postadress",
+ "emailConfirmation": "Bekräfta din e-postadress",
+ "firstNames": "Förnamn",
+ "gender": "Kön",
+ "hasSSN": "Har du en finsk personbeteckning?",
+ "instructionLanguage": "Välj språket på uppgifter",
+ "lastName": "Efternamn",
+ "nationality": "Nationalitet",
+ "phoneNumber": "Telefonnummer",
+ "postNumber": "Postnummer",
+ "postOffice": "Postanstalt",
+ "privacyStatementConfirmation": "Godkänn villkoren för behandling av personuppgifter",
+ "ssn": "Personbeteckning",
+ "termsAndConditionsAgreed": "Godkänn villkoren för anmälan"
+ },
+ "fixErrors": "Fyll i uppgifter som saknas eller korrigera felaktiga uppgifter:",
+ "title": "Felaktiga uppgifter!"
+ },
+ "labels": {
+ "address": "Gatuadress",
+ "dateOfBirth": "Födelsedatum",
+ "email": "E-postadress",
+ "emailConfirmation": "Bekräfta din e-postadress",
+ "firstNames": "Förnamn",
+ "gender": "Kön",
+ "lastName": "Efternamn",
+ "nationality": "Nationalitet",
+ "phoneNumber": "Telefonnummer",
+ "postNumber": "Postnummer",
+ "postOffice": "Postanstalt",
+ "ssn": "Personbeteckning"
+ },
+ "placeholders": {
+ "address": "",
+ "dateOfBirth": "Skriv i formatet dd.mm.åååå.",
+ "email": "Till exempel nimi@sahkoposti.fi",
+ "emailConfirmation": "Skriv din e-postadress på nytt",
+ "firstNames": "",
+ "gender": "Välj kön",
+ "lastName": "",
+ "nationality": "Välj nationalitet",
+ "phoneNumber": "Skriv i formatet +358 50 123 4567",
+ "postNumber": "",
+ "postOffice": ""
+ },
+ "finnishSSN": "Har du en finsk personbeteckning? *",
+ "instructionLanguage": "På vilket språk vill du ha anvisningarna för uppgifterna?",
+ "requiredFields": "Fält markerade med en asterisk (*) är obligatoriska.",
+ "ssn": "Personbeteckning",
+ "termsAndConditions": {
+ "description1": "Anmälan till YKI-testet är bindande. Du kan inte ändra din anmälan efter att du har bekräftat den.",
+ "description2": "Kontrollera att du anmäler dig till ett YKI-test på rätt språk och nivå.",
+ "label": "Jag godkänner villkoren för anmälan *",
+ "title": "Villkoren för anmälan"
+ },
+ "title": "Skriv dina uppgifter",
+ "whatsNext": {
+ "description": "Efter att du skickat din anmälningsblankett får du ett e-postmeddelande med en länk till betalningen av examensavgift. Anmälning är bekräftat först då du har betalat examensavgiften.",
+ "title": "Vad händer sen?"
+ }
+ },
+ "registrationFormSubmitted": {
+ "proceedToPayment": {
+ "confirmation": "Du har skickat anmälningsblanketten för YKI test",
+ "dueDateReminder": {
+ "text1": "Important! E-postmeddelandet innehåller även den sista dagen du kan betala examensavgiften.",
+ "text2": "Betala i tid så du kan delta i YKI-testet."
+ },
+ "paymentLinkEmail": {
+ "text1": "Du får ett e-postmeddelande med en betalningslänk.",
+ "text2": "Meddelandet kommer från adressen noreply@opintopolku.fi.",
+ "text3": "Anmälan är bekräftad först då du har betalt examensavgiften."
+ },
+ "title": "Bekräfta anmälan genom att betala examensavgiften."
+ }
+ },
+ "stepper": {
+ "active": "Aktiv",
+ "completed": "Färdig",
+ "paymentAborted": "Betalningen kunde inte genomföras",
+ "phase": "Fas",
+ "step": {
+ "Done": "Färdig",
+ "Identify": "Identifiera dig",
+ "Payment": "Betalning",
+ "Register": "Anmäl dig"
+ },
+ "welcomeToExam": "Välkommen till YKI-test"
+ },
+ "steps": {
+ "identify": {
+ "caption": "Du ska identifiera dig för att anmäla dig till YKI-test. Använd den persons uppgifter som deltar i YKI-testet.",
+ "emailButtonText": "Identifiera dig med din e-post",
+ "emailError": "Felaktig e-postadress",
+ "emailInput": {
+ "label": "Skriv din e-postadress",
+ "placeholder": "Till exempel nimi@sahkoposti.fi"
+ },
+ "emailLink": {
+ "error": "Identifieringen misslyckades. Du kan försöka på nytt.",
+ "incorrectEmailDialog": {
+ "title": "Begäran misslyckades",
+ "description": "Kontrollera din e-postadress"
+ },
+ "success": "Anmälningslänken har skickats till:"
+ },
+ "registrationIsBindingAdvisory": "Kontrollera att du anmäler dig till ett YKI-test på rätt språk och nivå. Anmälan till YKI-testet är bindande. Du kan inte ändra din anmälan efter att du har bekräftat den.",
+ "selectIdentificationMethod": "Välj din identifieringsmetod",
+ "suomiFiButtonText": "Identifiera dig via suomi.fi -tjänsten",
+ "title": "Identifiera dig för anmälan",
+ "withFinnishSSN": {
+ "description": "Identifiera dig via suomi.fi -tjänsten",
+ "info": "Efter indentifiering styrs du automatiskt till anmälningsblanketten"
+ },
+ "withoutFinnishSSN": {
+ "description": "Om du inte kan använda Suomi.fi-identifikationen, identiera dig med din e-post.",
+ "info": "Efter att du har identifierat dig får du en länk till anmälningsblanketten till din e-post"
+ }
+ },
+ "payment": {
+ "cancel": {
+ "description": "Anmälning är bekräftat först då du har betalat examensavgiften.",
+ "heading": "Betalningen kunde inte genomföras",
+ "title": "Du har avbrytit betalningen"
+ },
+ "error": {
+ "description": "Du kan försöka betala på nytt. Anmälning är bekräftat först då du har betalat examensavgiften.",
+ "heading": "Betalningsfel",
+ "title": "Det har uppstått ett fel i betalningen"
+ },
+ "success": {
+ "whatsNext": {
+ "beforeYkiTest": {
+ "description": "Förbereda dig till YKI-testet genom att läsa deltagarens anvisningar på Utbildningsstyrelsens webbsidor:",
+ "label": "Före YKI-testdagen (oph.fi)",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/fore-yki-testdagen"
+ },
+ "part1": "Anmälan lyckades! Du får snart en bekräftelse om din anmälan per e-post.",
+ "part2": "Din testställe skickar senare per e-post närmare anvisningar om testdagen.",
+ "part3": "I anvisningarna får du veta bland annat testplatsens exakta läge och klockslaget då testet börjar.",
+ "specialArrangements": {
+ "description": "Om du behöver specialarrangemang, skicka en ansökan enligt Utbildningsstyrelsens anvisningar så fort som möjligt.",
+ "label": "Behöver du specialarrangemang? (oph.fi)",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/anmalan-till-yki-test#anchor-behover-du-specialarrangemang"
+ },
+ "title": "Välkommen till YKI-test"
+ },
+ "heading": "Anmälan lyckades!"
+ }
+ },
+ "register": {
+ "inProgress": {
+ "heading": "Anmäl dig till ett test"
+ },
+ "success": {
+ "heading": "Anmälningsblanketten har skickats"
+ }
+ }
+ },
+ "unavailable": {
+ "full": {
+ "description": "Det är inte möjligt att anmäla sig just nu. Det finns inga lediga platser i testet.",
+ "title": "Testet är fullbokat"
+ },
+ "past": {
+ "description": "Det är inte längre möjligt att anmäla sig. Anmälningstiden har slutat.",
+ "title": "Anmälningstiden har slutat"
+ },
+ "upcoming": {
+ "description": "Det är inte ännu möjligt att anmäla sig. Anmälningstiden har inte börjat",
+ "title": "Anmälningstiden har inte börjat"
+ }
+ }
+ }
+ },
"pages": {
+ "evaluationOrderPage": {
+ "notFound": null,
+ "title": "Gör en begäran om kontrollbedömning",
+ "toasts": {
+ "loadingError": null
+ }
+ },
+ "evaluationOrderStatusPage": {
+ "cancel": {
+ "heading": null,
+ "info": null
+ },
+ "error": {
+ "heading": null,
+ "info": null
+ },
+ "success": {
+ "heading": null,
+ "body1": null,
+ "body2": null
+ }
+ },
+ "examDetailsPage": {
+ "toasts": {
+ "notFound": null
+ }
+ },
+ "initRegistrationPage": {
+ "toasts": {
+ "notFound": null
+ }
+ },
+ "reassessmentPage": {
+ "info": {
+ "general": {
+ "body1": null,
+ "body2": null,
+ "body3": null,
+ "heading": null
+ },
+ "pricing": {
+ "body1": null,
+ "body2": null,
+ "body3": null,
+ "body4": null,
+ "heading": null
+ },
+ "schedule": {
+ "body1": null,
+ "body2": null,
+ "body3": null,
+ "body4": null,
+ "heading": null
+ }
+ },
+ "introduction": {
+ "fee": null,
+ "info": null
+ },
+ "title": null
+ },
"registrationPage": {
+ "abortDialog": {
+ "actions": {
+ "cancel": "Jag vill inte avbryta",
+ "confirm": "Ja, jag vill avbryta min anmälan"
+ },
+ "description": "Vill du avbryta anmälan? Du förlorar uppgifterna som du har fyllt i.",
+ "title": "Avbryt anmälan"
+ },
+ "description": {
+ "part1": {
+ "link": {
+ "label": "Att välja ett lämpligt YKI-test och testdagarna",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/att-valja-ett-lampligt-yki-test-testdagarna"
+ },
+ "text": "Den allmänna språkexamen (YKI-examen) är en språkexamen som är avsedd för vuxna. Med examensintyg kan du officiellt visa dina språkkunskaper i olika språk. Före du anmäler dig till YKI-testet, ta reda på när och på vilket nivå du behöver ett examensintyg. Läs mer om att välja ett lämpligt YKI-test på Utbildningsstyrelsens webbsidor:"
+ },
+ "part2": {
+ "link": {
+ "label": "Behöver du specialarrangemang",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/anmalan-till-yki-test#anchor-behover-du-specialarrangemang"
+ },
+ "general": "I YKI-examen bedöms kunskaperna i standardspråket i praktiska situationer på grundnivå, mellannivå eller högsta nivå. Alla YKI-examina har fyra delprov: tal, talförståelse, skrivning och textförståelse. Varje delprov bedöms separat.",
+ "languages": "Om du behöver specialarrangemang i YKI-test, läs anvisningar på Utbildningsstyrelsens webbsidor:"
+ }
+ },
+ "filters": {
+ "buttons": {
+ "empty": "Radera allt",
+ "showResults": "Visa resultat ({{count}})"
+ },
+ "errorDialog": {
+ "description": "För att se resultat, välj först testets språk och färdighetsnivå. Tryck på VISA RESULTAT -knappen.",
+ "title": "Välj språk och färdighetsnivå"
+ },
+ "errors": {
+ "required": "Oblikatoriskt att välja"
+ },
+ "heading": "Sök almänna språkexamina (YKI)",
+ "information": "Sök här för ett lämpligt YKI-test. Välj språk och färdighetsnivå. Tryck på VISA RESULTAT -knappen.",
+ "selectExamDetails": {
+ "prompt": "Välj examen",
+ "required": "(oblikatorisk)"
+ }
+ },
"labels": {
- "filterExamSessions": "Filtrera examenstillfällen",
- "excludeFullSessions": "Visa endast examenstillfällen med ledigt utrymme",
- "excludeNonOpenSessions": "Visa endast de examenstillfällen som nu är lediga"
+ "excludeFullSessions": "Visa endast examenstillfällen med lediga platser",
+ "excludeNonOpenSessions": "Visa endast examenstillfällen vars anmälan har börjat",
+ "filterExamSessions": "Filtrera resultat",
+ "selectLanguage": "Välj språk",
+ "selectLevel": "Välj färdighetsnivå",
+ "selectMunicipality": "Välj ort"
},
- "title": "Allmänna språkexamina (YKI) - Anmälning",
"register": "Anmäl dig",
- "searchResults": "Sökresultat"
+ "title": "Allmänna språkexamina (YKI) - Anmälan"
}
}
}
diff --git a/frontend/packages/yki/src/tests/cypress/support/page-objects/publicRegistrationPage.ts b/frontend/packages/yki/src/tests/cypress/support/page-objects/publicRegistrationPage.ts
index 8c8b6e78b..e747305da 100644
--- a/frontend/packages/yki/src/tests/cypress/support/page-objects/publicRegistrationPage.ts
+++ b/frontend/packages/yki/src/tests/cypress/support/page-objects/publicRegistrationPage.ts
@@ -2,7 +2,7 @@ import { selectComboBoxOptionByName } from 'tests/cypress/support/utils/comboBox
class PublicRegistrationPage {
elements = {
- clearAllButton: () => cy.contains('Tyhjennä kaikki'),
+ clearAllButton: () => cy.contains('Tyhjennä valinnat'),
filterByLanguage: () =>
cy.findByRole('combobox', { name: /Valitse kieli/ }),
filterByLevel: () =>
From 85736b9e57e6fadb2892c31bc3cf9d0b4e384734 Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 22 Sep 2023 21:57:45 +0300
Subject: [PATCH 15/72] YKI(Frontend): Add missing en/sv privacy policy texts
---
frontend/packages/yki/public/i18n/en-GB/common.json | 2 +-
frontend/packages/yki/public/i18n/sv-SE/common.json | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/common.json b/frontend/packages/yki/public/i18n/en-GB/common.json
index a697cdaf1..cc42b0d2a 100644
--- a/frontend/packages/yki/public/i18n/en-GB/common.json
+++ b/frontend/packages/yki/public/i18n/en-GB/common.json
@@ -108,7 +108,7 @@
"grantApproval": "I accept the terms and conditions for processing personal data *",
"link": {
"label": "Information on the processing of personal data (oph.fi)",
- "url": "https://www.oph.fi/en/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ilmoittautuminen-yki-testiin#anchor-information-on-the-processing-of-personal-data"
+ "url": "https://www.oph.fi/en/education-and-qualifications/registering-yki-test#anchor-information-on-the-processing-of-personal-data"
},
"readConditions": "Read the terms and conditions of processing personal information on the website of the Finnish National Agency for Education:",
"title": "Terms and conditions for processing personal data"
diff --git a/frontend/packages/yki/public/i18n/sv-SE/common.json b/frontend/packages/yki/public/i18n/sv-SE/common.json
index f02437574..7d4e2a263 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/common.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/common.json
@@ -49,6 +49,16 @@
"level": "Nivå",
"ophLogoAlt": "Logo: Opetushallitus/Utbildningsstyrelsen.",
"price": "Pris",
+ "privacyStatement": {
+ "description": "Vi följer EUs allmänna dataskyddsförordningen i behandling av personuppgifter.",
+ "grantApproval": "Jag godkänner villkoren för anmälan. *",
+ "link": {
+ "label": "Information om behandlingen av personuppgifter (oph.fi)",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/anmalan-till-yki-test#anchor-information-om-behandlingen-av-personuppgifter"
+ },
+ "readConditions": "Läs villkoren för behandling av personuppgifter på Utbildningsstyrelsens webbsidor:",
+ "title": "Villkoren för behandling av personuppgifter"
+ },
"reassessment": "Kontrollbedömning",
"registration": "Anmälning"
}
From 11f4bcbc42a5245f53306b253968b45e57f73a6c Mon Sep 17 00:00:00 2001
From: Laura Ketola
Date: Fri, 22 Sep 2023 22:46:51 +0300
Subject: [PATCH 16/72] YKI(Frontend): Change reassessment page texts
---
.../yki/public/i18n/en-GB/public.json | 34 ++--
.../yki/public/i18n/fi-FI/public.json | 30 ++--
.../yki/public/i18n/sv-SE/common.json | 9 ++
.../yki/public/i18n/sv-SE/public.json | 44 +++---
.../yki/src/pages/ReassessmentPage.tsx | 148 +++---------------
5 files changed, 73 insertions(+), 192 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index cc8f0ec1a..67b016018 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -85,7 +85,7 @@
"publicEvaluationPeriodListing": {
"evaluationPeriodNotYetOpen": "Request a reassessment starting from {{- startDate}}",
"header": {
- "evaluationPeriod": "Deadline for the request"
+ "evaluationPeriod": "Requesting period for the reassessment"
},
"heading": "Select the test for whch you wish to request a reassessment",
"requestReassessment": "Request a reassessment"
@@ -374,31 +374,25 @@
"reassessmentPage": {
"info": {
"general": {
- "body1": "Tarkistusarviointi on Yleisiä kielitutkintoja koskevan lain (964/2004, 13 §) tarjoama mahdollisuus pyytää suorituksesi uudelleen arviointia siinä tapauksessa, että et ole tyytyväinen siihen, miten tekemäsi tutkintosuoritus on arvioitu.",
- "body2": "Tarkistusarviointi on ainoa toimenpide, jolla voit ehkä saada muutettua suorituksesi tulosta.",
- "body3": "Tarkistusarvioinnin tekevät eri arvioijat kuin ne, jotka ovat arvioineet suorituksesi ensimmäisellä kerralla. Tarkistusarvioinnissa arvioidaan vain suoritusta, eikä muita seikkoja oteta huomioon. Tarkistusarviointia koskevaan päätökseen ei saa hakea muutosta valittamalla.",
- "heading": "Tarkistusarvioinnista"
+ "body1": "In the reassessment, your test answers will be evaluated again. The reassessment will be conducted by different assessors than those who assessed your YKI test the first time.",
+ "body2": "The reassessment rarely changes the grade of a subtest. See previous statistics on the website of the Finnish National Agency for Education: ",
+ "body3": "The reassessment only focuses on your YKI test performance, and no other considerations will be taken into account. The decision on a reassessment may not be appealed.",
+ "heading": "What happens in the reassessment?",
+ "link": "https://www.oph.fi/en/education-and-qualifications/after-yki-test#anchor-reassessment"
},
"pricing": {
- "body1": "Tarkistusarviointia voi pyytää joko yhdestä tai useammasta osakokeesta.",
- "body2": "Jokaisen osakokeen tarkistusarviointi maksaa 50 euroa:",
- "body3": "Maksu suoritetaan, kun tarkistusarviointipyyntö tehdään, ja vain maksetut pyynnöt käsitellään.",
- "body4": "Maksu palautetaan, jos osakokeen arviointi muuttuu tarkistusarvioinnissa.",
- "heading": "Hinnasto"
- },
- "schedule": {
- "body1": "Voit pyytää suorituksesi tarkistusarviointia 14 päivän kuluessa siitä ajankohdasta, kun sinulla on ollut tilaisuus saada arvioinnin tulos.",
- "body2": "Tarkasta aika, milloin voit pyytää tutkintosuorituksesi tarkistusarviointia, alla olevasta Tutkinnot-taulukosta.",
- "body3": "Käsittelyaika on keskimäärin kolme kuukautta.",
- "body4": "Päätös lähetetään sähköpostitse.",
- "heading": "Aikataulu"
+ "body1": "You can request a reassessment of one or more subtests. A fee of EUR 50 will be charged for the reassessment of each subtest. The fee must be paid as the reassessment request is submitted. The request will only be processed if the fee has been paid.",
+ "body2": "You can request a reassessment up to 14 days after you have had the opportunity to receive the assessment result. The list below shows the test days for which you can currently submit a request for reassessment.",
+ "body3": "The average processing time is approximately three months. The results of the reassessment will be sent to you by e-mail.",
+ "body4": "The fee will be refunded if the reassessment changes the assessment of the subtest.",
+ "heading": "How to request and pay for the reassessment?"
}
},
"introduction": {
- "fee": "Tarkistusarviointien käsittelystä on tullut maksullista keväästä 2021 alkaen.",
- "info": "Tutkinnon suorittajalla on oikeus pyytää tarkistusarviointia, jos hän ei ole tyytyväinen saamaansa arviointiin. Tarkistusarviointia tulee hakea 14 vuorokauden kuluessa todistuksen saamisesta."
+ "info": "You can submit a claim for correction if you are not satisfied with the assessment of your YKI test. A claim for correction means a reassessment of your YKI test. You can submit a request for a reassessment on this page.",
+ "timeLimit": "You can request a reassessment within 14 days after you have had the opportunity to receive your YKI certificate."
},
- "title": "Yleiset kielitutkinnot (YKI) - Tarkistusarviointi"
+ "title": "National Certificates of Language Proficiency (YKI) - Reassessment"
},
"registrationPage": {
"abortDialog": {
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index ea758bcb9..4bd51c813 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -374,29 +374,23 @@
"reassessmentPage": {
"info": {
"general": {
- "body1": "Tarkistusarviointi on Yleisiä kielitutkintoja koskevan lain (964/2004, 13 §) tarjoama mahdollisuus pyytää suorituksesi uudelleen arviointia siinä tapauksessa, että et ole tyytyväinen siihen, miten tekemäsi tutkintosuoritus on arvioitu.",
- "body2": "Tarkistusarviointi on ainoa toimenpide, jolla voit ehkä saada muutettua suorituksesi tulosta.",
- "body3": "Tarkistusarvioinnin tekevät eri arvioijat kuin ne, jotka ovat arvioineet suorituksesi ensimmäisellä kerralla. Tarkistusarvioinnissa arvioidaan vain suoritusta, eikä muita seikkoja oteta huomioon. Tarkistusarviointia koskevaan päätökseen ei saa hakea muutosta valittamalla.",
- "heading": "Tarkistusarvioinnista"
+ "body1": "Tarkistusarvioinnissa testivastauksesi arvioidaan uudelleen. Tarkistusarvioinnin tekevät eri arvioijat kuin ne, jotka ovat arvioineet testisi ensimmäisellä kerralla.",
+ "body2": "Tarkistusarviointi muuttaa osakokeen taitotasoarviota vain harvoin. Katso tarkistusarviointitilastot Opetushallituksen verkkosivuilta: ",
+ "body3": "Tarkistusarvioinnissa arvioidaan vain testivastauksiasi. Siinä ei oteta huomioon mitään muita asioita, jotka ovat voineet vaikuttaa testin tulokseen. Et voi valittaa tarkistusarvioinnin päätöksestä.",
+ "heading": "Mitä tarkistusarvioinnissa tehdään?",
+ "link": "https://www.oph.fi/fi/koulutus-ja-tutkinnot/yki-testin-jalkeen#anchor-tarkistusarviointi"
},
"pricing": {
- "body1": "Tarkistusarviointia voi pyytää joko yhdestä tai useammasta osakokeesta.",
- "body2": "Jokaisen osakokeen tarkistusarviointi maksaa 50 euroa:",
- "body3": "Maksu suoritetaan, kun tarkistusarviointipyyntö tehdään, ja vain maksetut pyynnöt käsitellään.",
- "body4": "Maksu palautetaan, jos osakokeen arviointi muuttuu tarkistusarvioinnissa.",
- "heading": "Hinnasto"
- },
- "schedule": {
- "body1": "Voit pyytää suorituksesi tarkistusarviointia 14 päivän kuluessa siitä ajankohdasta, kun sinulla on ollut tilaisuus saada arvioinnin tulos.",
- "body2": "Tarkasta aika, milloin voit pyytää tutkintosuorituksesi tarkistusarviointia, alla olevasta Tutkinnot-taulukosta.",
- "body3": "Käsittelyaika on keskimäärin kolme kuukautta.",
- "body4": "Päätös lähetetään sähköpostitse.",
- "heading": "Aikataulu"
+ "body1": "Voit pyytää tarkistusarviointia yhdestä tai useammasta osakokeesta. Yhden osakokeen tarkistusarviointi maksaa 50 euroa. Sinun täytyy maksaa tarkistusarviointimaksu heti kun teet tarkistusarviointipyynnön. Käsittelemme vain maksetut pyynnöt.",
+ "body2": "Voit pyytää tarkistusarviointia 14 vuorokauden sisällä siitä, kun sinulla on ollut tilaisuus saada YKI-testisi tulos. Tämän sivun lopussa on lista testipäivistä, joista voit pyytää tarkistusarviointia tällä hetkellä.",
+ "body3": "Tarkistusarviointien käsittelyaika on noin kolme kuukautta. Lähetämme päätöksen tarkistusarvioinnista sähköpostitse.",
+ "body4": "Jos osakokeen arviointi muuttuu tarkistusarvioinnissa, palautamme tarkistusarviointimaksun.",
+ "heading": "Tarkistusarvioinnin pyytäminen ja maksaminen"
}
},
"introduction": {
- "fee": "Tarkistusarviointien käsittelystä on tullut maksullista keväästä 2021 alkaen.",
- "info": "Tutkinnon suorittajalla on oikeus pyytää tarkistusarviointia, jos hän ei ole tyytyväinen saamaansa arviointiin. Tarkistusarviointia tulee hakea 14 vuorokauden kuluessa todistuksen saamisesta.\nVoit pyytää tarkistusarviointia 14 vuorokauden sisällä siitä, kun sinulla on ollut tilaisuus saada YKI-testisi tulos."
+ "info": "Voit tehdä oikaisuvaatimuspyynnön, jos et ole tyytyväinen YKI-testisi arviointiin. Oikaisuvaatimuspyyntö tarkoittaa YKI-testisi tarkistusarviointia. Voit jättää tarkistusarviointipyynnön tällä sivulla.",
+ "timeLimit": "Voit pyytää tarkistusarviointia 14 vuorokauden sisällä siitä, kun sinulla on ollut tilaisuus saada YKI-testisi tulos."
},
"title": "Yleiset kielitutkinnot (YKI) - Tarkistusarviointi"
},
diff --git a/frontend/packages/yki/public/i18n/sv-SE/common.json b/frontend/packages/yki/public/i18n/sv-SE/common.json
index 7d4e2a263..525c46ba3 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/common.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/common.json
@@ -10,6 +10,15 @@
"dateTimeFormat": "l [kl.] HH:mm"
},
"error": "Ett oväntat fel uppstod.",
+ "examDate": "Testdag",
+ "examParts": {
+ "readingComprehension": "Textförståelse",
+ "speaking": "Tal",
+ "speechComprehension": "Talförståelse",
+ "writing": "Skrivning"
+ },
+ "examSession": "Test",
+ "examination": "Test",
"gender": {
"female": "Kvinna",
"male": "Man",
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 77c0971c3..116ae3c67 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -46,10 +46,10 @@
"info": null
},
"selectExaminationParts": {
- "heading": null,
+ "heading": "Välj delprov ",
"selectAtLeastOne": null,
- "selectParts": "Välj de delprov för vilka du vill att bedömningen kontrolleras",
- "sumTotal": null
+ "selectParts": "Välj de delprov för vilka du vill att bedömningen kontrolleras*",
+ "sumTotal": "Priset på kontrollbedömningen totalt"
}
},
"footer": {
@@ -83,11 +83,11 @@
}
},
"publicEvaluationPeriodListing": {
- "evaluationPeriodNotYetOpen": null,
+ "evaluationPeriodNotYetOpen": "Begär om kontrollbedömning från och med {{- startDate}}",
"header": {
- "evaluationPeriod": null
+ "evaluationPeriod": "Möjligt att begära om kontrollbedömning"
},
- "heading": null,
+ "heading": "Välj testet som du vill begära om kontrollbedömning av",
"requestReassessment": "Gör en begäran om kontrollbedömning"
},
"registration": {
@@ -374,31 +374,25 @@
"reassessmentPage": {
"info": {
"general": {
- "body1": null,
- "body2": null,
- "body3": null,
- "heading": null
+ "body1": "Vid kontrollbedömning bedöms din examensprestation om. Kontrollbedömningen genomförs av andra bedömare än de som genomförde den första bedömningen.",
+ "body2": "Kontrollbedömningen ändrar sällan vitsordet för delprovet. Läs mer på Utbildningsstyrelsens webbsidor: ",
+ "body3": "I kontrollbedömningen bedöms endast prestationen, inga andra faktorer tas i beaktande. Beslut som gäller kontrollbedömningen får inte överklagas genom besvär.",
+ "heading": "Vad är en kontrollbedömning?",
+ "link": "https://www.oph.fi/sv/utbildning-och-examina/efter-yki-testet#anchor-kontrollbedomning"
},
"pricing": {
- "body1": null,
- "body2": null,
- "body3": null,
- "body4": null,
- "heading": null
- },
- "schedule": {
- "body1": null,
- "body2": null,
- "body3": null,
- "body4": null,
- "heading": null
+ "body1": "Det är möjligt att begära om kontrollbedömning av ett eller flera delprov. Avgiften för kontrollbedömningen är 50 euro per delprov. Avgiften ska betalas i samband med att begäran om kontrollbedömning görs. Endast betalda begäranden om kontrollbedömning behandlas.",
+ "body2": "Du kan ansöka om kontrollbedömning inom 14 dagar från den tidpunkt då du har haft möjlighet att få bedömningsresultatet. I tabellen nedan kan du kontrollera när du kan begära om kontrollbedömning av din examensprestation. I slutet av sidan finns en lista på testdagar som du kan begära om kontrollbedömning för tillfället.",
+ "body3": "Behandlingstiden för ärendet är i genomsnitt tre månader. Beslutet skickas per e-post.",
+ "body4": "Avgiften återbetalas om bedömningen av delprovet ändrar i samband med kontrollbedömningen.",
+ "heading": "Att begära om och betala kontrollbedömning"
}
},
"introduction": {
- "fee": null,
- "info": null
+ "info": "Kontrollbedömning ger dig möjligheten att begära om omprövning om du inte är nöjd med bedömningen av din examensprestation. Begäran om omprövning betyder kontrollbedömning av ditt YKI-test. Du kan skicka begäran om kontrollbedömning på den här sidan.",
+ "timeLimit": "Du kan ansöka om kontrollbedömning inom 14 dagar från den tidpunkt då du har haft möjlighet att få bedömningsresultatet."
},
- "title": null
+ "title": "Allmänna språkexamina (YKI) - Kontrollbedömning"
},
"registrationPage": {
"abortDialog": {
diff --git a/frontend/packages/yki/src/pages/ReassessmentPage.tsx b/frontend/packages/yki/src/pages/ReassessmentPage.tsx
index 0452f2535..a65ecd9bb 100644
--- a/frontend/packages/yki/src/pages/ReassessmentPage.tsx
+++ b/frontend/packages/yki/src/pages/ReassessmentPage.tsx
@@ -1,131 +1,21 @@
-import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
-import {
- Accordion,
- AccordionDetails,
- AccordionSummary,
- Grid,
- Paper,
-} from '@mui/material';
+import { Grid, Paper } from '@mui/material';
import { Box } from '@mui/system';
import { FC, useEffect } from 'react';
import { H1, H2, HeaderSeparator, Text } from 'shared/components';
import { APIResponseStatus } from 'shared/enums';
-import { useWindowProperties } from 'shared/hooks';
import { PublicEvaluationPeriodListing } from 'components/reassessment/PublicEvaluationPeriodListing';
import { PublicEvaluationPeriodListingSkeleton } from 'components/skeletons/PublicEvaluationPeriodListingSkeleton';
-import { useCommonTranslation, usePublicTranslation } from 'configs/i18n';
+import { usePublicTranslation } from 'configs/i18n';
import { useAppDispatch, useAppSelector } from 'configs/redux';
import { loadEvaluationPeriods } from 'redux/reducers/evaluationPeriods';
import { evaluationPeriodsSelector } from 'redux/selectors/evaluationPeriods';
-const PricingBulletList = () => {
- const translateCommon = useCommonTranslation();
- const examParts = [
- 'readingComprehension',
- 'speechComprehension',
- 'writing',
- 'speaking',
- ];
-
- return (
-
From 909dda5e475c4c4ca7e43f5d925792410f3f809e Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 28 Sep 2023 16:51:45 +0300
Subject: [PATCH 37/72] YKI(Frontend): Fix footer link to privacy policy
statement [deploy]
---
frontend/packages/yki/public/i18n/en-GB/public.json | 3 ++-
frontend/packages/yki/public/i18n/fi-FI/public.json | 3 ++-
frontend/packages/yki/public/i18n/sv-SE/public.json | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index 8485d6572..fff42b3de 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -75,7 +75,8 @@
"title": "Feedback and development suggestions"
},
"privacy": {
- "text": "Privacy policy statement"
+ "text": "Privacy policy statement",
+ "url": "https://www.oph.fi/en/education-and-qualifications/registering-yki-test#anchor-information-on-the-processing-of-personal-data"
},
"ykiHomepage": {
"text": "Website of the National Certificates of Language Proficiency (YKI) (oph.fi)"
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index ea648334c..d3645e65b 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -75,7 +75,8 @@
"title": "Palaute ja kehitysideat"
},
"privacy": {
- "text": "Tietosuojaseloste"
+ "text": "Tietosuojaseloste",
+ "url": "https://www.oph.fi/fi/koulutus-ja-tutkinnot/kieli-ja-kaantajatutkinnot/yleiset-kielitutkinnot-yki/ilmoittautuminen-yki-testiin#anchor-tietoa-henkilotietojen-kasittelysta"
},
"ykiHomepage": {
"text": "Yleisten kielitutkintojen verkkosivu (oph.fi)"
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 3c6ad79fb..3d0c47ea4 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -75,7 +75,8 @@
"title": "Respons och utvecklingsidéer"
},
"privacy": {
- "text": "Information om behandlingen av personuppgifter"
+ "text": "Information om behandlingen av personuppgifter",
+ "url": "https://www.oph.fi/sv/utbildning-och-examina/anmalan-till-yki-test#anchor-information-om-behandlingen-av-personuppgifter"
},
"ykiHomepage": {
"text": "Webbplatsen för allmänna språkexamina (YKI) (oph.fi)"
From cf4bd70cac9d34948f667b6a5506a1694951792a Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 28 Sep 2023 17:46:38 +0300
Subject: [PATCH 38/72] YKI(Frontend): Remove indexing restrictions from HTML
meta
---
frontend/packages/yki/public/index.html | 2 --
1 file changed, 2 deletions(-)
diff --git a/frontend/packages/yki/public/index.html b/frontend/packages/yki/public/index.html
index 5dbb22d78..c582857f1 100644
--- a/frontend/packages/yki/public/index.html
+++ b/frontend/packages/yki/public/index.html
@@ -8,8 +8,6 @@
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
-
-
Date: Thu, 28 Sep 2023 15:44:08 +0300
Subject: [PATCH 39/72] YKI(Frontend): Add temporary link to the old frontend
---
.../packages/yki/public/i18n/en-GB/public.json | 5 +++++
.../packages/yki/public/i18n/fi-FI/public.json | 5 +++++
.../packages/yki/public/i18n/sv-SE/public.json | 5 +++++
.../packages/yki/src/pages/RegistrationPage.tsx | 7 +++++++
.../yki/src/styles/pages/_registration-page.scss | 15 +++++++++++++++
5 files changed, 37 insertions(+)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index 8485d6572..263348727 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -448,6 +448,11 @@
"selectLevel": "Choose proficiency level",
"selectMunicipality": "Choose municipality"
},
+ "oldUILink": {
+ "text": "This is the new YKI registration page. Do you want to use the old registration page?",
+ "link": "https://yki.opintopolku.fi/yki?lang=en",
+ "linkText": "Go to the old YKI registration page"
+ },
"register": "Register",
"title": "National Certificates of Language Proficiency (YKI) - Registration"
}
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index ea648334c..c7e624222 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -463,6 +463,11 @@
"selectLevel": "Valitse taitotaso",
"selectMunicipality": "Valitse paikkakunta"
},
+ "oldUILink": {
+ "text": "Tämä on uusi YKI-ilmoittautumissivu. Haluatko käyttää vanhaa YKI-ilmoittautumissivua?",
+ "link": "https://yki.opintopolku.fi/yki?lang=fi",
+ "linkText": "Siirry vanhalle YKI-ilmoittautumissivulle"
+ },
"register": "Ilmoittaudu",
"title": "Yleiset kielitutkinnot (YKI) - Ilmoittautuminen"
}
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 3c6ad79fb..f25e51554 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -448,6 +448,11 @@
"selectLevel": "Välj färdighetsnivå",
"selectMunicipality": "Välj ort"
},
+ "oldUILink": {
+ "text": "Den här är den nya YKI-anmälningssidan. Vill du använda den gamla anmälningssidan?",
+ "link": "https://yki.opintopolku.fi/yki?lang=sv",
+ "linkText": "Till den gamla anmälningsidan"
+ },
"register": "Anmäl dig",
"title": "Allmänna språkexamina (YKI) - Anmälan"
}
diff --git a/frontend/packages/yki/src/pages/RegistrationPage.tsx b/frontend/packages/yki/src/pages/RegistrationPage.tsx
index c1bb129d1..c96a56395 100644
--- a/frontend/packages/yki/src/pages/RegistrationPage.tsx
+++ b/frontend/packages/yki/src/pages/RegistrationPage.tsx
@@ -54,6 +54,13 @@ export const RegistrationPage: FC = () => {
item
className="public-registration-page__grid-container__item-header"
>
+
+ {t('oldUILink.text')}{' '}
+ {t('oldUILink.linkText')}
+
{t('title')}
diff --git a/frontend/packages/yki/src/styles/pages/_registration-page.scss b/frontend/packages/yki/src/styles/pages/_registration-page.scss
index b9d6d2196..d48250934 100644
--- a/frontend/packages/yki/src/styles/pages/_registration-page.scss
+++ b/frontend/packages/yki/src/styles/pages/_registration-page.scss
@@ -67,4 +67,19 @@
}
}
}
+
+ & &__link-to-old-ui {
+ background-color: $color-blue-200;
+ color: $color-text-primary;
+ margin: 2rem 0;
+ position: relative;
+
+ & a {
+ font-weight: normal;
+ }
+
+ & svg {
+ color: $color-secondary;
+ }
+ }
}
From b1672142be3c110ab6d396d2f57f0f48d08be66e Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 28 Sep 2023 18:34:52 +0300
Subject: [PATCH 40/72] YKI(Frontend): Update translations (public.json)
---
.../yki/public/i18n/en-GB/public.json | 35 +++++++++----
.../yki/public/i18n/fi-FI/public.json | 16 +++---
.../yki/public/i18n/sv-SE/public.json | 49 +++++++++++++------
3 files changed, 67 insertions(+), 33 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index c75df36bf..e3cc9bd27 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -174,7 +174,7 @@
"nationality": "Nationality",
"phoneNumber": "Telephone number",
"postNumber": "Postal code",
- "postOffice": "Town/city",
+ "postOffice": "Municipality",
"privacyStatementConfirmation": "Accept the terms and conditions for processing personal data",
"ssn": "Personal identity code",
"termsAndConditionsAgreed": "Accept the terms and conditions for registration"
@@ -193,7 +193,7 @@
"nationality": "Nationality",
"phoneNumber": "Telephone number",
"postNumber": "Postal code",
- "postOffice": "Town/city",
+ "postOffice": "Municipality",
"ssn": "Personal identity code"
},
"placeholders": {
@@ -324,9 +324,17 @@
}
},
"unavailable": {
+ "alreadyRegistered": {
+ "description": "You can register for only one YKI test on the same test day.",
+ "title": "You have already registered for another YKI test on the same test day"
+ },
"full": {
"description": "Registration is not possible at the moment. There are no available seats for this test.",
- "title": "The test is full."
+ "title": "The test is full"
+ },
+ "generic": {
+ "description": "Sending the registration form failed. You can return to the registration form and try again.",
+ "title": "Sending the registration form failed"
},
"past": {
"description": "Registration is not possible at the moment. The registration period has ended.",
@@ -349,29 +357,37 @@
},
"evaluationOrderStatusPage": {
"cancel": {
- "heading": "Payment aborted",
- "info": "You aborted the payment. The reassessment request will only be taken into account after you have payed the reassessment fee."
+ "heading": "Payment was cancelled",
+ "info": "You may try to pay again. We will only process paid requests for reassessment."
},
"error": {
"heading": "Payment error",
"info": "The payment did not go through. You may try again."
},
"success": {
- "heading": "Request for reassessment sent!",
+ "heading": "You have requested a reassessment!",
"body1": "You have sent a request for reassessment.",
- "body2": "The email also contains a receipt for the reassessment fee. If you have not received the email, please check your spam folder."
+ "body2": "You have received a confirmation of your request for reassessment by email. The email also contains information on the reassessment fee. If you have not received the email, please check your spam folder."
}
},
"examDetailsPage": {
"toasts": {
- "notFound": "Kielitutkintoa ei löytynyt"
+ "notFound": "YKI test was not found"
}
},
"initRegistrationPage": {
"toasts": {
- "notFound": "Kielitutkintoa ei löytynyt"
+ "notFound": "YKI test was not found"
}
},
+ "logoutSuccessPage": {
+ "heading": "Log out complete",
+ "info": "You have logged out successfully. Close all browser windows."
+ },
+ "notFoundPage": {
+ "description": "Please, check the website address or return to the front page.",
+ "title": "Page not found"
+ },
"reassessmentPage": {
"info": {
"general": {
@@ -438,6 +454,7 @@
"information": "Search for YKI-tests by choosing the language and proficiency level. Click the SHOW RESULTS button to see the results.",
"selectExamDetails": {
"prompt": "Choose test",
+ "optional": "(optional)",
"required": "(required)"
}
},
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index 5e9e12c79..c5402c719 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -327,7 +327,7 @@
"title": "Olet jo ilmoittautunut toiseen YKI-testiin samana testipäivänä"
},
"generic": {
- "description": "Lomakkeen lähetyksessä tapahtui virhe. Voit palata ilmoittautumislomakkeelle ja yrittää uudelleen.",
+ "description": "Ilmoittautumislomakkeen lähetys epäonnistui. Voit palata ilmoittautumislomakkeelle ja yrittää uudelleen.",
"title": "Ilmoittautumislomakkeen lähetys epäonnistui"
},
"full": {
@@ -355,12 +355,12 @@
},
"evaluationOrderStatusPage": {
"cancel": {
- "heading": "Maksu epäonnistui",
- "info": "Tarkistusarviointimaksun maksaminen ei onnistunut. Yritä maksua uudelleen."
+ "heading": "Maksu keskeytyi",
+ "info": "Voit yrittää maksua uudestaan. Käsittelemme vain maksetut tarkistusarviointipyynnöt."
},
"error": {
"heading": "Maksu epäonnistui",
- "info": "Tarkistusarviointimaksun maksaminen ei onnistunut. Yritä maksua uudelleen."
+ "info": "Tarkistusarviointimaksun maksaminen ei onnistunut. Yritä maksua uudestaan."
},
"success": {
"heading": "Olet lähettänyt tarkistusarviointipyynnön!",
@@ -370,20 +370,20 @@
},
"examDetailsPage": {
"toasts": {
- "notFound": "Kielitutkintoa ei löytynyt"
+ "notFound": "YKI-testiä ei löytynyt"
}
},
"initRegistrationPage": {
"toasts": {
- "notFound": "Kielitutkintoa ei löytynyt"
+ "notFound": "YKI-testiä ei löytynyt"
}
},
"logoutSuccessPage": {
"heading": "Uloskirjautuminen onnnistui",
- "info": "Olet kirjautunut ulos. Suljethan vielä kaikki selainikkunat."
+ "info": "Olet kirjautunut ulos. Sulje kaikki selainikkunat."
},
"notFoundPage": {
- "description": "Tarkista hakemasi osoite tai palaa aloitussivulle.",
+ "description": "Tarkista verkkosivun osoite tai palaa aloitussivulle.",
"title": "Sivua ei löytynyt"
},
"reassessmentPage": {
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index e9cc06bae..9005eba79 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -43,12 +43,12 @@
},
"renderEvaluationDetails": {
"heading": "Uppgifter om examen",
- "info": null
+ "info": "Du håller på att begära om kontrollbedömning om följande test:"
},
"selectExaminationParts": {
- "heading": "Välj delprov ",
- "selectAtLeastOne": null,
- "selectParts": "Välj de delprov för vilka du vill att bedömningen kontrolleras*",
+ "heading": "Välj delprov",
+ "selectAtLeastOne": "Välj minst ett delprov",
+ "selectParts": "Välj de delprov för vilka du vill att bedömningen kontrolleras *",
"sumTotal": "Priset på kontrollbedömningen totalt"
}
},
@@ -324,10 +324,18 @@
}
},
"unavailable": {
+ "alreadyRegistered": {
+ "description": "Du kan anmäla dig endast till ett YKI-test på samma testdag.",
+ "title": "Du har redan almält dig till ett annat YKI-test på samma testdag."
+ },
"full": {
"description": "Det är inte möjligt att anmäla sig just nu. Det finns inga lediga platser i testet.",
"title": "Testet är fullbokat"
},
+ "generic": {
+ "description": "Det gick inte att skicka anmälningsblankett. Du kan gå tillbaka till anmälningsblanketten och försöka på nytt.",
+ "title": "Det gick inte att skicka anmälningsblankett"
+ },
"past": {
"description": "Det är inte längre möjligt att anmäla sig. Anmälningstiden har slutat.",
"title": "Anmälningstiden har slutat"
@@ -341,37 +349,45 @@
},
"pages": {
"evaluationOrderPage": {
- "notFound": null,
- "title": "Gör en begäran om kontrollbedömning",
+ "notFound": "Uppgifter om kontrollbedömning hittades inte!",
+ "title": "Begär kotrollbedömning",
"toasts": {
- "loadingError": null
+ "loadingError": "Det gick inte att ladda uppgifter om kontrollbedömning!"
}
},
"evaluationOrderStatusPage": {
"cancel": {
- "heading": null,
- "info": null
+ "heading": "Betalningen kunde inte genomföras",
+ "info": "Du kan försöka betala på nytt. Vi behandlar endast betalda begäranden om kontrollbedömning."
},
"error": {
- "heading": null,
- "info": null
+ "heading": "Betalningsfel",
+ "info": "Betalningen kunde inte genomföras. Du kan försöka betala på nytt. "
},
"success": {
- "heading": null,
- "body1": null,
- "body2": null
+ "heading": "Du har begärt om kontrollbedömning!",
+ "body1": "Du har begärt om kontrollbedömning.",
+ "body2": "Du har fått en bekräftelse om din begäran om kontrollbedömning per e-post. E-posten innehåller också information om din avgift för kontrollbedömning. Om du inte har fått meddelandet, kolla din skräppostmapp."
}
},
"examDetailsPage": {
"toasts": {
- "notFound": null
+ "notFound": "YKI-test hittades inte"
}
},
"initRegistrationPage": {
"toasts": {
- "notFound": null
+ "notFound": "YKI-test hittades inte"
}
},
+ "logoutSuccessPage": {
+ "heading": "Utloggning lyckades",
+ "info": "Du har loggat ut. Stäng alla fönster i webbläsaren."
+ },
+ "notFoundPage": {
+ "description": "Kontrollera webbadress eller gå tillbaka till framsidan",
+ "title": "Sidan hittades inte"
+ },
"reassessmentPage": {
"info": {
"general": {
@@ -438,6 +454,7 @@
"information": "Sök här för ett lämpligt YKI-test. Välj språk och färdighetsnivå. Tryck på VISA RESULTAT -knappen.",
"selectExamDetails": {
"prompt": "Välj examen",
+ "optional": "(valfritt)",
"required": "(oblikatorisk)"
}
},
From 5423957c75e00c7a9d943298d4868473e3700384 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 28 Sep 2023 18:58:15 +0300
Subject: [PATCH 41/72] YKI(Frontend): Update translations (common.json)
[deploy]
---
.../yki/public/i18n/en-GB/common.json | 30 +++++----
.../yki/public/i18n/fi-FI/common.json | 14 ++---
.../yki/public/i18n/sv-SE/common.json | 61 ++++++++++++++++++-
3 files changed, 84 insertions(+), 21 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/common.json b/frontend/packages/yki/public/i18n/en-GB/common.json
index 86dde4e26..4129868a1 100644
--- a/frontend/packages/yki/public/i18n/en-GB/common.json
+++ b/frontend/packages/yki/public/i18n/en-GB/common.json
@@ -30,7 +30,7 @@
"error": "An unexpected error has occurred.",
"errors": {
"customTextField": {
- "dateFormat": "Input date in the format dd.mm.yyyy.",
+ "dateFormat": "Fill in as dd.mm.yyyy.",
"emailFormat": "The email address is incorrect",
"maxLength": "The text is too long",
"required": "The information is mandatory",
@@ -40,12 +40,12 @@
"loadingFailed": "Failed to download the information.",
"mismatchingEmails": "The contents of the email address fields are different.",
"registration": {
- "alreadyRegistered": "Voit ilmoittautua vain yhteen tutkintotilaisuuteen.",
- "examSessionFull": "Tutkintotilaisuus on täynnä.",
- "formExpired": "Lomakkeen täyttöaika on umpeutunut.",
- "paymentCreationFailed": "Lomakkeen lähetys epäonnistui.",
- "personCreationFailed": "Lomakkeen lähetys epäonnistui.",
- "registrationPeriodClosed": "Ilmoittautumisaika on päättynyt."
+ "alreadyRegistered": "You can register for only one YKI test.",
+ "examSessionFull": "The test is full.",
+ "formExpired": "Your registration form has expired.",
+ "paymentCreationFailed": "Sending the registration form failed.",
+ "personCreationFailed": "Sending the registration form failed.",
+ "registrationPeriodClosed": "The registration period has ended."
}
},
"examDate": "Test day",
@@ -62,7 +62,7 @@
"female": "Female",
"male": "Male",
"other": "Other",
- "preferNotToDisclose": "Prefer not to disclose"
+ "preferNotToDisclose": "Prefer not to respond"
},
"header": {
"accessibility": {
@@ -99,15 +99,18 @@
"swe": "Swedish"
},
"level": "Level",
+ "loadingContent": "Loading content",
+ "loadingDone": "Loading complete",
"municipality": "Municipality",
"navigationProtection": {
- "description": "You will lose any changes you have made.",
+ "description": "All changes will be lost.",
"header": "Are you sure you want to leave this page?"
},
"next": "Next",
"no": "No",
"ophLogoAlt": "Logo: Finnish National Agency for Education.",
- "placesAvailable": "Available places",
+ "ophLogoToFrontPageAlt": "The Finnish National Agency for Education - To the YKI registration page",
+ "placesAvailable": "Available seats",
"postAdmission": "Post-registration",
"price": "Price",
"privacyStatement": {
@@ -123,7 +126,12 @@
"reassessment": "Reassessment",
"registration": "Registration",
"registrationPeriod": "Registration period",
- "yes": "Yes"
+ "specialArrangementsLink": "https://www.oph.fi/en/education-and-qualifications/registering-yki-test#anchor-do-you-need-special-arrangements",
+ "yes": "Yes",
+ "ykiHomepage": {
+ "ariaLabel": "Website of the National Certificates of Language Proficiency (oph.fi), open in new tab",
+ "link": "https://www.oph.fi/en/national-certificates-language-proficiency-yki"
+ }
}
}
}
diff --git a/frontend/packages/yki/public/i18n/fi-FI/common.json b/frontend/packages/yki/public/i18n/fi-FI/common.json
index 37cdaf0d8..8ad2482e5 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/common.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/common.json
@@ -5,7 +5,7 @@
"appNameAbbreviation": "YKI",
"appTitle": "Yleiset kielitutkinnot | Opetushallitus",
"back": "Takaisin",
- "backToHomePage": "Palaa aloitussivulle",
+ "backToHomePage": "Takaisin aloitussivulle",
"cancel": "Peruuta",
"component": {
"table": {
@@ -30,7 +30,7 @@
"error": "Tapahtui odottamaton virhe.",
"errors": {
"customTextField": {
- "dateFormat": "Syötä päivämäärä muodossa pp.kk.vvvv",
+ "dateFormat": "Kirjoita päivämäärä muodossa pp.kk.vvvv",
"emailFormat": "Sähköpostiosoite on virheellinen",
"maxLength": "Teksti on liian pitkä",
"required": "Tieto on pakollinen",
@@ -40,11 +40,11 @@
"loadingFailed": "Tietojen lataaminen epäonnistui.",
"mismatchingEmails": "Sähköpostiosoitekenttien sisällöt eivät vastaa toisiaan",
"registration": {
- "alreadyRegistered": "Voit ilmoittautua vain yhteen tutkintotilaisuuteen.",
- "examSessionFull": "Tutkintotilaisuus on täynnä.",
- "formExpired": "Lomakkeen täyttöaika on umpeutunut.",
- "paymentCreationFailed": "Lomakkeen lähetys epäonnistui.",
- "personCreationFailed": "Lomakkeen lähetys epäonnistui.",
+ "alreadyRegistered": "Voit ilmoittautua vain yhteen YKI-testiin.",
+ "examSessionFull": "Tutkinto on täynnä",
+ "formExpired": "Ilmoittautumislomakkeen täyttöaika on umpeutunut.",
+ "paymentCreationFailed": "Ilmoittautumislomakkeen lähetys epäonnistui.",
+ "personCreationFailed": "Ilmoittautumislomakkeen lähetys epäonnistui.",
"registrationPeriodClosed": "Ilmoittautumisaika on päättynyt."
}
},
diff --git a/frontend/packages/yki/public/i18n/sv-SE/common.json b/frontend/packages/yki/public/i18n/sv-SE/common.json
index fd6d3bf91..663dbf830 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/common.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/common.json
@@ -4,12 +4,50 @@
"actions": "Funktioner",
"appNameAbbreviation": "YKI",
"appTitle": "Allmänna språkexamina | Utbildningsstyrelsen",
+ "back": "Tillbaka",
"backToHomePage": "Tillbaka till framsidan",
+ "cancel": "Avbryt",
+ "component": {
+ "table": {
+ "header": {
+ "searchResults": "Resultat ({{count}})",
+ "searchResultsAriaLabel_one": "Resultat (1 resultat)",
+ "searchResultsAriaLabel_other": "Resultat ({{count}} resultat)",
+ "searchResultsAriaLabel_zero": "Resultat (inga resultat)"
+ },
+ "pagination": {
+ "backButtonLabel": "Tidigare sökresultat",
+ "displayedRowsLabel": "Visas {{from}}-{{to}} / {{count}} resultat",
+ "nextButtonLabel": "Följande sökresultat",
+ "rowsPerPage": "Resultat per sida"
+ }
+ }
+ },
"contactEmail": "kielitutkinnot@oph.fi",
"dates": {
"dateTimeFormat": "l [kl.] HH:mm"
},
"error": "Ett oväntat fel uppstod.",
+ "errors": {
+ "customTextField": {
+ "dateFormat": "Ange datum i formatet dd.mm.åååå",
+ "emailFormat": "E-postadressen är felaktig",
+ "maxLength": "Texten är för lång",
+ "required": "Uppgiften är oblikatorisk",
+ "personalIdentityCodeFormat": "Personbeteckningensform kunde inte identifieras",
+ "telFormat": "Telefonummret är felaktigt"
+ },
+ "loadingFailed": "Det gick inte att ladda uppgifterna.",
+ "mismatchingEmails": "Innehållet i fälten för e-postadress motsvarar inte varandra",
+ "registration": {
+ "alreadyRegistered": "Du kan anmäla dig endast till ett YKI-test.",
+ "examSessionFull": "Testet är fullbokat.",
+ "formExpired": "Tidsfrist för änmälningsblanketten har gått ut.",
+ "paymentCreationFailed": "Det gick inte att skicka anmälningsblankett.",
+ "personCreationFailed": "Det gick inte att skicka anmälningsblankett.",
+ "registrationPeriodClosed": "Anmälningstiden har slutat."
+ }
+ },
"examDate": "Testdag",
"examParts": {
"readingComprehension": "Textförståelse",
@@ -19,11 +57,12 @@
},
"examSession": "Test",
"examination": "Test",
+ "full": "Fullbokat",
"gender": {
"female": "Kvinna",
"male": "Man",
"other": "Annan",
- "preferNotToDisclose": "Vill inte avslöja"
+ "preferNotToDisclose": "Vill ej svara"
},
"header": {
"accessibility": {
@@ -39,6 +78,7 @@
"sv": "På svenska"
}
},
+ "institution": "Testställe",
"language": "Språk",
"languageLevel": {
"ALL": "alla nivåer",
@@ -59,11 +99,19 @@
"swe": "svenska"
},
"level": "Nivå",
+ "loadingContent": "Sidan laddas om",
+ "loadingDone": "Sidan omladdad",
+ "municipality": "Ort",
"navigationProtection": {
- "description": "Du förlorar ändringar du gjort.",
+ "description": "Du kommer att förlora dina ändringar.",
"header": "Är du säker på att du vill lämna den här sidan?"
},
+ "next": "Följande",
+ "no": "Nej",
"ophLogoAlt": "Logo: Opetushallitus/Utbildningsstyrelsen.",
+ "ophLogoToFrontPageAlt": "Opetushallitus/Utbildningsstyrelsen - Till anmälningssidan för YKI-testet",
+ "placesAvailable": "Lediga platser",
+ "postAdmission": "Efterhandsanmälan",
"price": "Pris",
"privacyStatement": {
"description": "Vi följer EUs allmänna dataskyddsförordningen i behandling av personuppgifter.",
@@ -76,7 +124,14 @@
"title": "Villkoren för behandling av personuppgifter"
},
"reassessment": "Kontrollbedömning",
- "registration": "Anmälning"
+ "registration": "Anmälning",
+ "registrationPeriod": "Anmälningstid",
+ "specialArrangementsLink": "https://www.oph.fi/sv/utbildning-och-examina/anmalan-till-yki-test#anchor-behover-du-specialarrangemang",
+ "yes": "Ja",
+ "ykiHomepage": {
+ "ariaLabel": "Webbplatsen för allmänna språkexamina (oph.fi), öppnas i en ny flik",
+ "link": "https://www.oph.fi/sv/allmanna-sprakexamina-yki"
+ }
}
}
}
From f27495ebc6f14594e6415326fee4958bca8ad598 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Thu, 28 Sep 2023 19:18:41 +0300
Subject: [PATCH 42/72] YKI(Frontend): Remove two leftover translations
---
frontend/packages/yki/public/i18n/en-GB/public.json | 6 ++----
frontend/packages/yki/public/i18n/sv-SE/public.json | 6 ++----
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index e3cc9bd27..d4095b7ae 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -286,13 +286,11 @@
"payment": {
"cancel": {
"description": "Your registration will be confirmed after you have paid the test fee.",
- "heading": "Payment was cancelled",
- "title": "You cancelled the payment"
+ "heading": "Payment was cancelled"
},
"error": {
"description": "You may try to pay again. Your registration will be confirmed after you have paid the test fee.",
- "heading": "Payment error",
- "title": "An error occurred when paying."
+ "heading": "Payment error"
},
"success": {
"whatsNext": {
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 9005eba79..1ba36101a 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -286,13 +286,11 @@
"payment": {
"cancel": {
"description": "Anmälning är bekräftat först då du har betalat examensavgiften.",
- "heading": "Betalningen kunde inte genomföras",
- "title": "Du har avbrytit betalningen"
+ "heading": "Betalningen kunde inte genomföras"
},
"error": {
"description": "Du kan försöka betala på nytt. Anmälning är bekräftat först då du har betalat examensavgiften.",
- "heading": "Betalningsfel",
- "title": "Det har uppstått ett fel i betalningen"
+ "heading": "Betalningsfel"
},
"success": {
"whatsNext": {
From c1a3791e38de56bebaf64f2502f2b62c03aa4836 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Fri, 29 Sep 2023 09:44:15 +0300
Subject: [PATCH 43/72] YKI(Frontend): Latest changes [deploy]
---
frontend/packages/yki/public/i18n/en-GB/public.json | 7 +++----
frontend/packages/yki/public/i18n/fi-FI/public.json | 3 +--
frontend/packages/yki/public/i18n/sv-SE/public.json | 3 +--
.../packages/yki/src/pages/EvaluationOrderStatusPage.tsx | 7 +------
4 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/frontend/packages/yki/public/i18n/en-GB/public.json b/frontend/packages/yki/public/i18n/en-GB/public.json
index d4095b7ae..02337d5ca 100644
--- a/frontend/packages/yki/public/i18n/en-GB/public.json
+++ b/frontend/packages/yki/public/i18n/en-GB/public.json
@@ -347,10 +347,10 @@
},
"pages": {
"evaluationOrderPage": {
- "notFound": "Tarkistusarvioinnin tietoja ei löytynyt!",
+ "notFound": "Information about the reassessment was not found!",
"title": "Request a reassessment",
"toasts": {
- "loadingError": "Tarkistusarvioinnin tietoja ei voitu ladata!"
+ "loadingError": "Information about the reassessment could not be loaded!"
}
},
"evaluationOrderStatusPage": {
@@ -364,8 +364,7 @@
},
"success": {
"heading": "You have requested a reassessment!",
- "body1": "You have sent a request for reassessment.",
- "body2": "You have received a confirmation of your request for reassessment by email. The email also contains information on the reassessment fee. If you have not received the email, please check your spam folder."
+ "body": "You have received a confirmation of your request for reassessment by email. The email also contains information on the reassessment fee. If you have not received the email, please check your spam folder."
}
},
"examDetailsPage": {
diff --git a/frontend/packages/yki/public/i18n/fi-FI/public.json b/frontend/packages/yki/public/i18n/fi-FI/public.json
index c5402c719..64b55ba4e 100644
--- a/frontend/packages/yki/public/i18n/fi-FI/public.json
+++ b/frontend/packages/yki/public/i18n/fi-FI/public.json
@@ -364,8 +364,7 @@
},
"success": {
"heading": "Olet lähettänyt tarkistusarviointipyynnön!",
- "body1": "Olet lähettänyt tarkistusarviointipyynnön.",
- "body2": "Sinulle on lähetetty vahvistus tarkistusarviointipyynnöstäsi sähköpostilla. Sähköpostissa on myös kuitti tarkistusarviointimaksustasi. Jos et ole saanut viestiä, tarkista roskapostikansiosi."
+ "body": "Sinulle on lähetetty vahvistus tarkistusarviointipyynnöstäsi sähköpostilla. Sähköpostissa on myös kuitti tarkistusarviointimaksustasi. Jos et ole saanut viestiä, tarkista roskapostikansiosi."
}
},
"examDetailsPage": {
diff --git a/frontend/packages/yki/public/i18n/sv-SE/public.json b/frontend/packages/yki/public/i18n/sv-SE/public.json
index 1ba36101a..7fa6d6b73 100644
--- a/frontend/packages/yki/public/i18n/sv-SE/public.json
+++ b/frontend/packages/yki/public/i18n/sv-SE/public.json
@@ -364,8 +364,7 @@
},
"success": {
"heading": "Du har begärt om kontrollbedömning!",
- "body1": "Du har begärt om kontrollbedömning.",
- "body2": "Du har fått en bekräftelse om din begäran om kontrollbedömning per e-post. E-posten innehåller också information om din avgift för kontrollbedömning. Om du inte har fått meddelandet, kolla din skräppostmapp."
+ "body": "Du har fått en bekräftelse om din begäran om kontrollbedömning per e-post. E-posten innehåller också information om din avgift för kontrollbedömning. Om du inte har fått meddelandet, kolla din skräppostmapp."
}
},
"examDetailsPage": {
diff --git a/frontend/packages/yki/src/pages/EvaluationOrderStatusPage.tsx b/frontend/packages/yki/src/pages/EvaluationOrderStatusPage.tsx
index b996a9b1f..860739ac5 100644
--- a/frontend/packages/yki/src/pages/EvaluationOrderStatusPage.tsx
+++ b/frontend/packages/yki/src/pages/EvaluationOrderStatusPage.tsx
@@ -79,12 +79,7 @@ const Success = () => {
return (
- {t('body1')}
- {t('body2')}
- >
- }
+ contents={{t('body')}}
showEvaluationOrderDetails={true}
/>
);
From d711306684009f26dd6cdcfd01d78b9bb592dec2 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Fri, 29 Sep 2023 12:51:44 +0300
Subject: [PATCH 44/72] YKI(Frontend): Use consistent capitalization for
ExamSession municipality. Sort stored municipalities.
---
.../registration/PublicRegistrationExamSessionDetails.tsx | 4 +++-
.../examSession/PublicExamSessionListingRow.tsx | 8 ++++----
frontend/packages/yki/src/redux/reducers/examSessions.ts | 6 ++++--
frontend/packages/yki/src/redux/selectors/examSessions.ts | 5 +++--
frontend/packages/yki/src/utils/examSession.ts | 7 +++++++
5 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/frontend/packages/yki/src/components/registration/PublicRegistrationExamSessionDetails.tsx b/frontend/packages/yki/src/components/registration/PublicRegistrationExamSessionDetails.tsx
index 0442aacde..d246f68b6 100644
--- a/frontend/packages/yki/src/components/registration/PublicRegistrationExamSessionDetails.tsx
+++ b/frontend/packages/yki/src/components/registration/PublicRegistrationExamSessionDetails.tsx
@@ -47,7 +47,9 @@ export const PublicRegistrationExamSessionDetails = ({
{`${translateCommon('institution')}: `}
- {`${location.name}, ${location.street_address}, ${location.post_office}`}
+ {`${location.name}, ${
+ location.street_address
+ }, ${ExamSessionUtils.getMunicipality(location)}`}
{`${t('registrationTime')}: `}
diff --git a/frontend/packages/yki/src/components/registration/examSession/PublicExamSessionListingRow.tsx b/frontend/packages/yki/src/components/registration/examSession/PublicExamSessionListingRow.tsx
index d7f325eea..6372faf3b 100644
--- a/frontend/packages/yki/src/components/registration/examSession/PublicExamSessionListingRow.tsx
+++ b/frontend/packages/yki/src/components/registration/examSession/PublicExamSessionListingRow.tsx
@@ -126,9 +126,9 @@ const PublicExamSessionListingCellsForDesktop = ({
{DateUtils.formatOptionalDate(examSession.session_date, 'l')}
- {locationInfo?.name}
+ {locationInfo.name}
- {locationInfo?.post_office}
+ {ExamSessionUtils.getMunicipality(locationInfo)}
@@ -173,9 +173,9 @@ const PublicExamSessionListingCellsForPhone = ({
{translateCommon('institution')}
- {locationInfo?.name}
+ {locationInfo.name}
- {locationInfo?.post_office}
+ {ExamSessionUtils.getMunicipality(locationInfo)}
{translateCommon('registrationPeriod')}
diff --git a/frontend/packages/yki/src/redux/reducers/examSessions.ts b/frontend/packages/yki/src/redux/reducers/examSessions.ts
index a1865c1bc..a93ca115e 100644
--- a/frontend/packages/yki/src/redux/reducers/examSessions.ts
+++ b/frontend/packages/yki/src/redux/reducers/examSessions.ts
@@ -38,12 +38,14 @@ const examSessionsSlice = createSlice({
ExamSessionUtils.compareExamSessions(es1, es2)
);
const uniqueMunicipalities = new Set(
- examSessions.map((es) => es.location[0].post_office)
+ examSessions.map((es) =>
+ ExamSessionUtils.getMunicipality(es.location[0])
+ )
);
state.status = APIResponseStatus.Success;
state.exam_sessions = examSessions;
- state.municipalities = Array.from(uniqueMunicipalities);
+ state.municipalities = Array.from(uniqueMunicipalities).sort();
},
setPublicExamSessionFilters(
state,
diff --git a/frontend/packages/yki/src/redux/selectors/examSessions.ts b/frontend/packages/yki/src/redux/selectors/examSessions.ts
index 30c80aa0a..3e70ede4e 100644
--- a/frontend/packages/yki/src/redux/selectors/examSessions.ts
+++ b/frontend/packages/yki/src/redux/selectors/examSessions.ts
@@ -31,9 +31,10 @@ const filterExamSessions = (
}
if (filters.municipality) {
- // TODO Does reaching to index 0 always work? The post_offices *should* be the same between different locations...
filteredData = filteredData.filter(
- (es) => es.location[0].post_office === filters.municipality
+ (es) =>
+ ExamSessionUtils.getMunicipality(es.location[0]) ===
+ filters.municipality
);
}
diff --git a/frontend/packages/yki/src/utils/examSession.ts b/frontend/packages/yki/src/utils/examSession.ts
index b22d858b4..4c002a4a8 100644
--- a/frontend/packages/yki/src/utils/examSession.ts
+++ b/frontend/packages/yki/src/utils/examSession.ts
@@ -1,5 +1,6 @@
import dayjs, { Dayjs } from 'dayjs';
import { AppLanguage } from 'shared/enums';
+import { StringUtils } from 'shared/utils';
import { translateOutsideComponent } from 'configs/i18n';
import { ExamLanguage, ExamLevel, RegistrationKind } from 'enums/app';
@@ -247,4 +248,10 @@ export class ExamSessionUtils {
};
}
}
+
+ static getMunicipality(location: ExamSessionLocation) {
+ return StringUtils.capitalize(
+ StringUtils.trimAndLowerCase(location.post_office)
+ );
+ }
}
From a2a92dd08e9285d2063dc75feb0e46b7d0c45404 Mon Sep 17 00:00:00 2001
From: Pyry Koivisto
Date: Fri, 29 Sep 2023 13:01:12 +0300
Subject: [PATCH 45/72] YKI(Frontend): Update test snapshots
---
.../__snapshots__/PublicExamSessionListing.test.tsx.snap | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/frontend/packages/yki/src/tests/jest/components/registration/examSession/__snapshots__/PublicExamSessionListing.test.tsx.snap b/frontend/packages/yki/src/tests/jest/components/registration/examSession/__snapshots__/PublicExamSessionListing.test.tsx.snap
index eb54f3405..875f45f98 100644
--- a/frontend/packages/yki/src/tests/jest/components/registration/examSession/__snapshots__/PublicExamSessionListing.test.tsx.snap
+++ b/frontend/packages/yki/src/tests/jest/components/registration/examSession/__snapshots__/PublicExamSessionListing.test.tsx.snap
@@ -614,7 +614,7 @@ Array [
>
Jyväskylän kansalaisopisto
- JYVÄSKYLÄ
+ Jyväskylä