@live-change/user-frontend 0.9.132 → 0.9.134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,8 @@
14
14
  "newPassword": "New password",
15
15
  "reenterPassword": "Re-enter password",
16
16
  "resetPassword": "Reset password",
17
+ "changePassword": "Change password",
18
+ "setPassword": "Set password",
17
19
  "passwordChanged": "Password changed",
18
20
  "passwordChangedSuccess": "You have successfully set your password.",
19
21
  "passwordResetSuccess": "You have successfully changed your password.",
@@ -27,6 +29,7 @@
27
29
  "suggestionLowercase": "At least one lowercase",
28
30
  "suggestionUppercase": "At least one uppercase",
29
31
  "suggestionNumeric": "At least one numeric",
32
+ "suggestionMinLength": "Minimum 8 characters",
30
33
  "alreadyHaveAccount": "Already have an account?",
31
34
  "signInToday": "Sign in today!",
32
35
  "signUpWithEmail": "Sign Up with email",
@@ -39,7 +42,20 @@
39
42
  "goBack": "Go back",
40
43
  "tryAgain": "Try again",
41
44
  "confirmEmail": "Confirm email",
42
- "confirmPhone": "Confirm phone"
45
+ "confirmPhone": "Confirm phone",
46
+ "signedIn": "Signed In",
47
+ "signInSuccess": "Congratulations! You have successfully logged in to your account.",
48
+ "signedUp": "Signed Up",
49
+ "signUpSuccess": "Congratulations! You have successfully created your account.",
50
+ "canSetPassword": "You can now set password to secure your account.",
51
+ "setupProfile": "Setup your",
52
+ "profile": "profile",
53
+ "orReturnTo": "or return to the",
54
+ "indexPage": "index page",
55
+ "returnToIndex": "Return to",
56
+ "redirectIn": "Redirect in {seconds}...",
57
+ "signedOut": "Signed Out",
58
+ "signOutSuccess": "You have successfully signed out from your account."
43
59
  },
44
60
  "errors": {
45
61
  "emailTaken": "Email is already registered, try to sign-in.",
@@ -135,6 +151,7 @@
135
151
  "view": "View",
136
152
  "close": "Close",
137
153
  "ok": "OK",
154
+ "next": "Next",
138
155
  "testIndex": "Test Index",
139
156
  "addTestNotification": "Add test notification",
140
157
  "rejected": "Rejected",
@@ -150,5 +167,73 @@
150
167
  "send": "Send",
151
168
  "feedbackSent": "Feedback sent",
152
169
  "thankYou": "Thank you for your feedback."
170
+ },
171
+ "nav": {
172
+ "profile": "Profile",
173
+ "signUp": "Sign Up",
174
+ "signIn": "Sign In",
175
+ "settings": "Settings",
176
+ "signOut": "Sign Out"
177
+ },
178
+ "notifications": {
179
+ "notificationsSettings": "Notifications settings",
180
+ "web": "Web",
181
+ "settingsSaved": "Notification settings saved",
182
+ "notifications": "Notifications",
183
+ "markAllAsRead": "Mark all as read",
184
+ "notificationsRead": "Notifications read",
185
+ "allMarkedAsRead": "All notifications have been marked as read",
186
+ "deleteAll": "Delete all",
187
+ "notificationsDeleted": "Notifications deleted",
188
+ "allDeleted": "All notifications have been deleted",
189
+ "notificationRead": "Notification read",
190
+ "markedAsRead": "Notification has been marked as read",
191
+ "notificationUnread": "Notification unread",
192
+ "markedAsUnread": "Notification has been marked as unread",
193
+ "notificationDeleted": "Notification deleted",
194
+ "hasBeenDeleted": "Notification has been deleted",
195
+ "unknownNotification": "Unknown notification {type}!",
196
+ "types": {
197
+ "accessControl_Invitation": {
198
+ "name": "Access Control Invitation"
199
+ }
200
+ }
201
+ },
202
+ "emailTemplates": {
203
+ "hello": "Hello!",
204
+ "clickButtonBelow": "Or click the button below:",
205
+ "confirmEmail": "Confirm email",
206
+ "copyAddressInstruction": "Or copy this address to your browser address bar:",
207
+ "clickLinkInstruction": "Or please click link below or copy address to your browser address bar:",
208
+ "letUsKnow": "Let us know in case it's not you.",
209
+ "seeYouSoon": "See you soon",
210
+ "teamSignature": "{brandName} Team",
211
+ "signUp": {
212
+ "subject": "Confirm your email address.",
213
+ "description": "We are glad to see you have just signed up with your email. In order to confirm that, please enter secret code:",
214
+ "textDescription": "We are glad to see you have just signed up with your email. In order to confirm that, please enter secret code:"
215
+ },
216
+ "signIn": {
217
+ "subject": "Confirm your email address.",
218
+ "description": "We are glad to see you have just signed in with your email. In order to confirm that, please enter secret code:",
219
+ "textDescription": "We are glad to see you have just signed in with your email. In order to confirm that, please enter secret code:"
220
+ },
221
+ "connect": {
222
+ "subject": "Confirm your email address.",
223
+ "description": "You are trying to connect this email address to your account. In order to confirm that, please enter secret code:",
224
+ "textDescription": "You are trying to connect this email address to your account. In order to confirm that, please enter secret code:"
225
+ },
226
+ "resetPassword": {
227
+ "subject": "Confirm your email address.",
228
+ "description": "You are trying to reset password to your account. In order to confirm that, please enter secret code:",
229
+ "textDescription": "You are trying to reset password to your account. In order to confirm that, please enter secret code:"
230
+ }
231
+ },
232
+ "smsTemplates": {
233
+ "hello": "Hello!",
234
+ "enterCode": "Enter authentication code:",
235
+ "openLink": "Or open authentication link:",
236
+ "seeYouSoon": "See you soon",
237
+ "teamSignature": "{brandName} Team"
153
238
  }
154
239
  }
@@ -14,6 +14,8 @@
14
14
  "newPassword": "Nowe hasło",
15
15
  "reenterPassword": "Powtórz hasło",
16
16
  "resetPassword": "Resetuj hasło",
17
+ "changePassword": "Zmień hasło",
18
+ "setPassword": "Ustaw hasło",
17
19
  "passwordChanged": "Hasło zmienione",
18
20
  "passwordChangedSuccess": "Pomyślnie ustawiłeś swoje hasło.",
19
21
  "passwordResetSuccess": "Pomyślnie zmieniłeś swoje hasło.",
@@ -27,6 +29,7 @@
27
29
  "suggestionLowercase": "Co najmniej jedna mała litera",
28
30
  "suggestionUppercase": "Co najmniej jedna wielka litera",
29
31
  "suggestionNumeric": "Co najmniej jedna cyfra",
32
+ "suggestionMinLength": "Minimum 8 znaków",
30
33
  "alreadyHaveAccount": "Masz już konto?",
31
34
  "signInToday": "Zaloguj się dzisiaj!",
32
35
  "signUpWithEmail": "Zarejestruj się przez email",
@@ -39,7 +42,20 @@
39
42
  "goBack": "Wróć",
40
43
  "tryAgain": "Spróbuj ponownie",
41
44
  "confirmEmail": "Potwierdź email",
42
- "confirmPhone": "Potwierdź telefon"
45
+ "confirmPhone": "Potwierdź telefon",
46
+ "signedIn": "Zalogowany",
47
+ "signInSuccess": "Gratulacje! Pomyślnie zalogowałeś się do swojego konta.",
48
+ "signedUp": "Zarejestrowany",
49
+ "signUpSuccess": "Gratulacje! Pomyślnie utworzyłeś swoje konto.",
50
+ "canSetPassword": "Możesz teraz ustawić hasło, aby zabezpieczyć swoje konto.",
51
+ "setupProfile": "Skonfiguruj swój",
52
+ "profile": "profil",
53
+ "orReturnTo": "lub wróć do",
54
+ "indexPage": "strony głównej",
55
+ "returnToIndex": "Wróć do",
56
+ "redirectIn": "Przekierowanie za {seconds}...",
57
+ "signedOut": "Wylogowany",
58
+ "signOutSuccess": "Pomyślnie wylogowałeś się ze swojego konta."
43
59
  },
44
60
  "errors": {
45
61
  "emailTaken": "Email jest już zarejestrowany, spróbuj się zalogować.",
@@ -135,6 +151,7 @@
135
151
  "view": "Pokaż",
136
152
  "close": "Zamknij",
137
153
  "ok": "OK",
154
+ "next": "Dalej",
138
155
  "testIndex": "Indeks testowy",
139
156
  "addTestNotification": "Dodaj testowe powiadomienie",
140
157
  "rejected": "Odrzucone",
@@ -150,5 +167,73 @@
150
167
  "send": "Wyślij",
151
168
  "feedbackSent": "Opinia wysłana",
152
169
  "thankYou": "Dziękujemy za Twoją opinię."
170
+ },
171
+ "nav": {
172
+ "profile": "Profil",
173
+ "signUp": "Zarejestruj się",
174
+ "signIn": "Zaloguj się",
175
+ "settings": "Ustawienia",
176
+ "signOut": "Wyloguj się"
177
+ },
178
+ "notifications": {
179
+ "notificationsSettings": "Ustawienia powiadomień",
180
+ "web": "Sieć",
181
+ "settingsSaved": "Ustawienia powiadomień zapisane",
182
+ "notifications": "Powiadomienia",
183
+ "markAllAsRead": "Oznacz wszystkie jako przeczytane",
184
+ "notificationsRead": "Powiadomienia przeczytane",
185
+ "allMarkedAsRead": "Wszystkie powiadomienia zostały oznaczone jako przeczytane",
186
+ "deleteAll": "Usuń wszystkie",
187
+ "notificationsDeleted": "Powiadomienia usunięte",
188
+ "allDeleted": "Wszystkie powiadomienia zostały usunięte",
189
+ "notificationRead": "Powiadomienie przeczytane",
190
+ "markedAsRead": "Powiadomienie zostało oznaczone jako przeczytane",
191
+ "notificationUnread": "Powiadomienie nieprzeczytane",
192
+ "markedAsUnread": "Powiadomienie zostało oznaczone jako nieprzeczytane",
193
+ "notificationDeleted": "Powiadomienie usunięte",
194
+ "hasBeenDeleted": "Powiadomienie zostało usunięte",
195
+ "unknownNotification": "Nieznane powiadomienie {type}!",
196
+ "types": {
197
+ "accessControl_Invitation": {
198
+ "name": "Zaproszenie do kontroli dostępu"
199
+ }
200
+ }
201
+ },
202
+ "emailTemplates": {
203
+ "hello": "Witaj!",
204
+ "clickButtonBelow": "Lub kliknij przycisk poniżej:",
205
+ "confirmEmail": "Potwierdź email",
206
+ "copyAddressInstruction": "Lub skopiuj ten adres do paska adresu przeglądarki:",
207
+ "clickLinkInstruction": "Lub kliknij link poniżej albo skopiuj adres do paska adresu przeglądarki:",
208
+ "letUsKnow": "Daj nam znać, jeśli to nie ty.",
209
+ "seeYouSoon": "Do zobaczenia",
210
+ "teamSignature": "Zespół {brandName}",
211
+ "signUp": {
212
+ "subject": "Potwierdź swój adres email.",
213
+ "description": "Cieszymy się, że właśnie zarejestrowałeś się swoim emailem. Aby to potwierdzić, wprowadź tajny kod:",
214
+ "textDescription": "Cieszymy się, że właśnie zarejestrowałeś się swoim emailem. Aby to potwierdzić, wprowadź tajny kod:"
215
+ },
216
+ "signIn": {
217
+ "subject": "Potwierdź swój adres email.",
218
+ "description": "Cieszymy się, że właśnie zalogowałeś się swoim emailem. Aby to potwierdzić, wprowadź tajny kod:",
219
+ "textDescription": "Cieszymy się, że właśnie zalogowałeś się swoim emailem. Aby to potwierdzić, wprowadź tajny kod:"
220
+ },
221
+ "connect": {
222
+ "subject": "Potwierdź swój adres email.",
223
+ "description": "Próbujesz połączyć ten adres email ze swoim kontem. Aby to potwierdzić, wprowadź tajny kod:",
224
+ "textDescription": "Próbujesz połączyć ten adres email ze swoim kontem. Aby to potwierdzić, wprowadź tajny kod:"
225
+ },
226
+ "resetPassword": {
227
+ "subject": "Potwierdź swój adres email.",
228
+ "description": "Próbujesz zresetować hasło do swojego konta. Aby to potwierdzić, wprowadź tajny kod:",
229
+ "textDescription": "Próbujesz zresetować hasło do swojego konta. Aby to potwierdzić, wprowadź tajny kod:"
230
+ }
231
+ },
232
+ "smsTemplates": {
233
+ "hello": "Witaj!",
234
+ "enterCode": "Wprowadź kod uwierzytelniania:",
235
+ "openLink": "Lub otwórz link uwierzytelniania:",
236
+ "seeYouSoon": "Do zobaczenia",
237
+ "teamSignature": "Zespół {brandName}"
153
238
  }
154
239
  }
@@ -57,7 +57,7 @@
57
57
  const { t, availableLocales, getLocaleMessage } = useI18n()
58
58
 
59
59
  function languageLabel(option) {
60
- console.log("LANGUAGE LABEL", option)
60
+ //console.log("LANGUAGE LABEL", option)
61
61
  if(!option) return `${t('settings.autoDetect')} (${navigator.language})`
62
62
  return getLocaleMessage(option).languageName ?? option
63
63
  }
@@ -2,51 +2,49 @@
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
- Hello!
5
+ {{ t('emailTemplates.hello') }}
6
6
  </p>
7
7
  <p>
8
- You are trying to connect this email address to your account.
9
- In order to confirm that, please enter secret code:
8
+ {{ t('emailTemplates.connect.description') }}
10
9
  </p>
11
10
  <p class="text-3xl font-medium">{{ code }}</p>
12
11
  <p>
13
- Or click the button below:
12
+ {{ t('emailTemplates.clickButtonBelow') }}
14
13
  </p>
15
14
  <div>
16
15
  <a :href="linkAddress" class="no-underline">
17
- <Button label="Confirm email" class="p-button-lg cursor-pointer" />
16
+ <Button :label="t('emailTemplates.confirmEmail')" class="p-button-lg cursor-pointer" />
18
17
  </a>
19
18
  </div>
20
19
  <p>
21
- Or copy this address to your browser address bar:<br>
20
+ {{ t('emailTemplates.copyAddressInstruction') }}<br>
22
21
  <a :href="linkAddress">
23
22
  {{ linkAddress }}
24
23
  </a>
25
24
  </p>
26
25
  <p>
27
- Let us know in case it's not you.
26
+ {{ t('emailTemplates.letUsKnow') }}
28
27
  </p>
29
28
  <p>
30
- See you soon<br>
31
- {{ brandName }} Team
29
+ {{ t('emailTemplates.seeYouSoon') }}<br>
30
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
32
31
  </p>
33
32
  <img src="/images/logo128.png">
34
33
  </div>
35
34
  <pre class="message" data-text>
36
- Hello!
35
+ {{ t('emailTemplates.hello') }}
37
36
 
38
- You are trying to connect this email address to your account.
39
- In order to confirm that, please enter secret code:
37
+ {{ t('emailTemplates.connect.textDescription') }}
40
38
  {{ code }}
41
39
 
42
- Or please click link below or copy address to your browser address bar:
40
+ {{ t('emailTemplates.clickLinkInstruction') }}
43
41
 
44
42
  {{ linkAddress }}
45
43
 
46
- Let us know in case it's not you.
44
+ {{ t('emailTemplates.letUsKnow') }}
47
45
 
48
- See you soon
49
- {{ brandName }} Team
46
+ {{ t('emailTemplates.seeYouSoon') }}
47
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
50
48
  </pre>
51
49
  </template>
52
50
 
@@ -74,6 +72,15 @@
74
72
  const secretLink = secrets.find(secret => secret.type === 'link')
75
73
  const secretCode = secrets.find(secret => secret.type === 'code')
76
74
 
75
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
76
+ import { useLocale } from "@live-change/vue3-components"
77
+ const locale = useLocale()
78
+ const localePromise = locale.getOtherOwnerLocale(owner)
79
+ await Promise.all([localePromise])
80
+ import { useI18n } from 'vue-i18n'
81
+ const { locale: i18nLocale, t } = useI18n()
82
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
83
+
77
84
  import { useHead } from '@vueuse/head'
78
85
  useHead({ htmlAttrs: { class: 'email-rendering' } })
79
86
 
@@ -86,7 +93,7 @@
86
93
 
87
94
  const metadata = {
88
95
  from: `${brandName} <admin@${brandDomain}>`,
89
- subject: 'Confirm your email address.',
96
+ subject: t('emailTemplates.connect.subject'),
90
97
  to: contact
91
98
  }
92
99
 
@@ -2,51 +2,49 @@
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
- Hello!
5
+ {{ t('emailTemplates.hello') }}
6
6
  </p>
7
7
  <p>
8
- You are trying to reset password to your account.
9
- In order to confirm that, please enter secret code:
8
+ {{ t('emailTemplates.resetPassword.description') }}
10
9
  </p>
11
10
  <p class="text-3xl font-medium">{{ code }}</p>
12
11
  <p>
13
- Or click the button below:
12
+ {{ t('emailTemplates.clickButtonBelow') }}
14
13
  </p>
15
14
  <div>
16
15
  <a :href="linkAddress" class="no-underline">
17
- <Button label="Confirm email" class="p-button-lg cursor-pointer" />
16
+ <Button :label="t('emailTemplates.confirmEmail')" class="p-button-lg cursor-pointer" />
18
17
  </a>
19
18
  </div>
20
19
  <p>
21
- Or copy this address to your browser address bar:<br>
20
+ {{ t('emailTemplates.copyAddressInstruction') }}<br>
22
21
  <a :href="linkAddress">
23
22
  {{ linkAddress }}
24
23
  </a>
25
24
  </p>
26
25
  <p>
27
- Let us know in case it's not you.
26
+ {{ t('emailTemplates.letUsKnow') }}
28
27
  </p>
29
28
  <p>
30
- See you soon<br>
31
- {{ brandName }} Team
29
+ {{ t('emailTemplates.seeYouSoon') }}<br>
30
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
32
31
  </p>
33
32
  <img src="/images/logo128.png">
34
33
  </div>
35
34
  <pre class="message" data-text>
36
- Hello!
35
+ {{ t('emailTemplates.hello') }}
37
36
 
38
- You are trying to reset password to your account.
39
- In order to confirm that, please enter secret code:
37
+ {{ t('emailTemplates.resetPassword.textDescription') }}
40
38
  {{ code }}
41
39
 
42
- Or please click link below or copy address to your browser address bar:
40
+ {{ t('emailTemplates.clickLinkInstruction') }}
43
41
 
44
42
  {{ linkAddress }}
45
43
 
46
- Let us know in case it's not you.
44
+ {{ t('emailTemplates.letUsKnow') }}
47
45
 
48
- See you soon
49
- {{ brandName }} Team
46
+ {{ t('emailTemplates.seeYouSoon') }}
47
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
50
48
  </pre>
51
49
  </template>
52
50
 
@@ -74,6 +72,15 @@
74
72
  const secretLink = secrets.find(secret => secret.type === 'link')
75
73
  const secretCode = secrets.find(secret => secret.type === 'code')
76
74
 
75
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
76
+ import { useLocale } from "@live-change/vue3-components"
77
+ const locale = useLocale()
78
+ const localePromise = locale.getOtherOwnerLocale(owner)
79
+ await Promise.all([localePromise])
80
+ import { useI18n } from 'vue-i18n'
81
+ const { locale: i18nLocale, t } = useI18n()
82
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
83
+
77
84
  import { useHead } from '@vueuse/head'
78
85
  useHead({ htmlAttrs: { class: 'email-rendering' } })
79
86
 
@@ -86,7 +93,7 @@
86
93
 
87
94
  const metadata = {
88
95
  from: `${brandName} <admin@${brandDomain}>`,
89
- subject: 'Confirm your email address.',
96
+ subject: t('emailTemplates.resetPassword.subject'),
90
97
  to: contact
91
98
  }
92
99
 
@@ -2,51 +2,49 @@
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
- Hello!
5
+ {{ t('emailTemplates.hello') }}
6
6
  </p>
7
7
  <p>
8
- We are glad to see you have just signed in with your email.
9
- In order to confirm that, please enter secret code:
8
+ {{ t('emailTemplates.signIn.description') }}
10
9
  </p>
11
10
  <p class="text-3xl font-medium">{{ code }}</p>
12
11
  <p>
13
- Or click the button below:
12
+ {{ t('emailTemplates.clickButtonBelow') }}
14
13
  </p>
15
14
  <div>
16
15
  <a :href="linkAddress" class="no-underline">
17
- <Button label="Confirm email" class="p-button-lg cursor-pointer" />
16
+ <Button :label="t('emailTemplates.confirmEmail')" class="p-button-lg cursor-pointer" />
18
17
  </a>
19
18
  </div>
20
19
  <p>
21
- Or copy this address to your browser address bar:<br>
20
+ {{ t('emailTemplates.copyAddressInstruction') }}<br>
22
21
  <a :href="linkAddress">
23
22
  {{ linkAddress }}
24
23
  </a>
25
24
  </p>
26
25
  <p>
27
- Let us know in case it's not you.
26
+ {{ t('emailTemplates.letUsKnow') }}
28
27
  </p>
29
28
  <p>
30
- See you soon<br>
31
- {{ brandName }} Team
29
+ {{ t('emailTemplates.seeYouSoon') }}<br>
30
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
32
31
  </p>
33
32
  <img src="/images/logo128.png">
34
33
  </div>
35
34
  <pre class="message" data-text>
36
- Hello!
35
+ {{ t('emailTemplates.hello') }}
37
36
 
38
- We are glad to see you have just signed in with your email.
39
- In order to confirm that, please enter secret code:
37
+ {{ t('emailTemplates.signIn.textDescription') }}
40
38
  {{ code }}
41
39
 
42
- Or please click link below or copy address to your browser address bar:
40
+ {{ t('emailTemplates.clickLinkInstruction') }}
43
41
 
44
42
  {{ linkAddress }}
45
43
 
46
- Let us know in case it's not you.
44
+ {{ t('emailTemplates.letUsKnow') }}
47
45
 
48
- See you soon
49
- {{ brandName }} Team
46
+ {{ t('emailTemplates.seeYouSoon') }}
47
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
50
48
  </pre>
51
49
  </template>
52
50
 
@@ -74,6 +72,15 @@
74
72
  const secretLink = secrets.find(secret => secret.type === 'link')
75
73
  const secretCode = secrets.find(secret => secret.type === 'code')
76
74
 
75
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
76
+ import { useLocale } from "@live-change/vue3-components"
77
+ const locale = useLocale()
78
+ const localePromise = locale.getOtherOwnerLocale(owner)
79
+ await Promise.all([localePromise])
80
+ import { useI18n } from 'vue-i18n'
81
+ const { locale: i18nLocale, t } = useI18n()
82
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
83
+
77
84
  import { useHead } from '@vueuse/head'
78
85
  useHead({ htmlAttrs: { class: 'email-rendering' } })
79
86
 
@@ -86,7 +93,7 @@
86
93
 
87
94
  const metadata = {
88
95
  from: `${brandName} <admin@${brandDomain}>`,
89
- subject: 'Confirm your email address.',
96
+ subject: t('emailTemplates.signIn.subject'),
90
97
  to: contact
91
98
  }
92
99
 
@@ -2,51 +2,49 @@
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <div data-html class="message m-12">
4
4
  <p class="text-lg">
5
- Hello!
5
+ {{ t('emailTemplates.hello') }}
6
6
  </p>
7
7
  <p>
8
- We are glad to see you have just signed up with your email.
9
- In order to confirm that, please enter secret code:
8
+ {{ t('emailTemplates.signUp.description') }}
10
9
  </p>
11
10
  <p class="text-3xl font-medium">{{ code }}</p>
12
11
  <p>
13
- Or click the button below:
12
+ {{ t('emailTemplates.clickButtonBelow') }}
14
13
  </p>
15
14
  <div>
16
15
  <a :href="linkAddress" class="no-underline">
17
- <Button label="Confirm email" class="p-button-lg cursor-pointer" />
16
+ <Button :label="t('emailTemplates.confirmEmail')" class="p-button-lg cursor-pointer" />
18
17
  </a>
19
18
  </div>
20
19
  <p>
21
- Or copy this address to your browser address bar:<br>
20
+ {{ t('emailTemplates.copyAddressInstruction') }}<br>
22
21
  <a :href="linkAddress">
23
22
  {{ linkAddress }}
24
23
  </a>
25
24
  </p>
26
25
  <p>
27
- Let us know in case it's not you.
26
+ {{ t('emailTemplates.letUsKnow') }}
28
27
  </p>
29
28
  <p>
30
- See you soon<br>
31
- {{ brandName }} Team
29
+ {{ t('emailTemplates.seeYouSoon') }}<br>
30
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
32
31
  </p>
33
32
  <img src="/images/logo128.png">
34
33
  </div>
35
34
  <pre class="message" data-text>
36
- Hello!
35
+ {{ t('emailTemplates.hello') }}
37
36
 
38
- We are glad to see you have just signed up with your email.
39
- In order to confirm that, please enter secret code:
37
+ {{ t('emailTemplates.signUp.textDescription') }}
40
38
  {{ code }}
41
39
 
42
- Or please click link below or copy address to your browser address bar:
40
+ {{ t('emailTemplates.clickLinkInstruction') }}
43
41
 
44
42
  {{ linkAddress }}
45
43
 
46
- Let us know in case it's not you.
44
+ {{ t('emailTemplates.letUsKnow') }}
47
45
 
48
- See you soon
49
- {{ brandName }} Team
46
+ {{ t('emailTemplates.seeYouSoon') }}
47
+ {{ t('emailTemplates.teamSignature', { brandName }) }}
50
48
  </pre>
51
49
  </template>
52
50
 
@@ -74,6 +72,15 @@
74
72
  const secretLink = secrets.find(secret => secret.type === 'link')
75
73
  const secretCode = secrets.find(secret => secret.type === 'code')
76
74
 
75
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
76
+ import { useLocale } from "@live-change/vue3-components"
77
+ const locale = useLocale()
78
+ const localePromise = locale.getOtherOwnerLocale(owner)
79
+ await Promise.all([localePromise])
80
+ import { useI18n } from 'vue-i18n'
81
+ const { locale: i18nLocale, t } = useI18n()
82
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
83
+
77
84
  import { useHead } from '@vueuse/head'
78
85
  useHead({ htmlAttrs: { class: 'email-rendering' } })
79
86
 
@@ -86,7 +93,7 @@
86
93
 
87
94
  const metadata = {
88
95
  from: `${brandName} <admin@${brandDomain}>`,
89
- subject: 'Confirm your email address.',
96
+ subject: t('emailTemplates.signUp.subject'),
90
97
  to: contact
91
98
  }
92
99
 
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <pre class="message" data-text>
4
- Hello! Enter authentication code: {{ code }}
5
- Or open authentication link: {{ linkAddress }}
6
- See you soon
7
- {{ brandName }} Team
4
+ {{ t('smsTemplates.hello') }} {{ t('smsTemplates.enterCode') }} {{ code }}
5
+ {{ t('smsTemplates.openLink') }} {{ linkAddress }}
6
+ {{ t('smsTemplates.seeYouSoon') }}
7
+ {{ t('smsTemplates.teamSignature', { brandName }) }}
8
8
  </pre>
9
9
  </template>
10
10
 
@@ -30,9 +30,17 @@
30
30
  const secrets = data.secrets
31
31
 
32
32
  const secretLink = secrets.find(secret => secret.type === 'link')
33
-
34
33
  const secretCode = secrets.find(secret => secret.type === 'code')
35
34
 
35
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
36
+ import { useLocale } from "@live-change/vue3-components"
37
+ const locale = useLocale()
38
+ const localePromise = locale.getOtherOwnerLocale(owner)
39
+ await Promise.all([localePromise])
40
+ import { useI18n } from 'vue-i18n'
41
+ const { locale: i18nLocale, t } = useI18n()
42
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
43
+
36
44
  import { useApi } from '@live-change/vue3-ssr'
37
45
  const api = useApi()
38
46
 
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <pre class="message" data-text>
4
- Hello! Enter authentication code: {{ code }}
5
- Or open authentication link: {{ linkAddress }}
6
- See you soon
7
- {{ brandName }} Team
4
+ {{ t('smsTemplates.hello') }} {{ t('smsTemplates.enterCode') }} {{ code }}
5
+ {{ t('smsTemplates.openLink') }} {{ linkAddress }}
6
+ {{ t('smsTemplates.seeYouSoon') }}
7
+ {{ t('smsTemplates.teamSignature', { brandName }) }}
8
8
  </pre>
9
9
  </template>
10
10
 
@@ -28,9 +28,17 @@
28
28
  const secrets = data.secrets
29
29
 
30
30
  const secretLink = secrets.find(secret => secret.type === 'link')
31
-
32
31
  const secretCode = secrets.find(secret => secret.type === 'code')
33
32
 
33
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
34
+ import { useLocale } from "@live-change/vue3-components"
35
+ const locale = useLocale()
36
+ const localePromise = locale.getOtherOwnerLocale(owner)
37
+ await Promise.all([localePromise])
38
+ import { useI18n } from 'vue-i18n'
39
+ const { locale: i18nLocale, t } = useI18n()
40
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
41
+
34
42
  import { useApi } from '@live-change/vue3-ssr'
35
43
  const api = useApi()
36
44
 
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <pre class="message" data-text>
4
- Hello! Enter authentication code: {{ code }}
5
- Or open authentication link: {{ linkAddress }}
6
- See you soon
7
- {{ brandName }} Team
4
+ {{ t('smsTemplates.hello') }} {{ t('smsTemplates.enterCode') }} {{ code }}
5
+ {{ t('smsTemplates.openLink') }} {{ linkAddress }}
6
+ {{ t('smsTemplates.seeYouSoon') }}
7
+ {{ t('smsTemplates.teamSignature', { brandName }) }}
8
8
  </pre>
9
9
  </template>
10
10
 
@@ -30,6 +30,14 @@
30
30
  const secretLink = secrets.find(secret => secret.type === 'link')
31
31
  const secretCode = secrets.find(secret => secret.type === 'code')
32
32
 
33
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
34
+ import { useLocale } from "@live-change/vue3-components"
35
+ const locale = useLocale()
36
+ const localePromise = locale.getOtherOwnerLocale(owner)
37
+ await Promise.all([localePromise])
38
+ import { useI18n } from 'vue-i18n'
39
+ const { locale: i18nLocale, t } = useI18n()
40
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
33
41
 
34
42
  import { useApi } from '@live-change/vue3-ssr'
35
43
  const api = useApi()
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <pre data-headers>{{ JSON.stringify(metadata, null, ' ') }}</pre>
3
3
  <pre class="message" data-text>
4
- Hello! Enter authentication code: {{ code }}
5
- Or open authentication link: {{ linkAddress }}
6
- See you soon
7
- {{ brandName }} Team
4
+ {{ t('smsTemplates.hello') }} {{ t('smsTemplates.enterCode') }} {{ code }}
5
+ {{ t('smsTemplates.openLink') }} {{ linkAddress }}
6
+ {{ t('smsTemplates.seeYouSoon') }}
7
+ {{ t('smsTemplates.teamSignature', { brandName }) }}
8
8
  </pre>
9
9
  </template>
10
10
 
@@ -30,6 +30,14 @@
30
30
  const secretLink = secrets.find(secret => secret.type === 'link')
31
31
  const secretCode = secrets.find(secret => secret.type === 'code')
32
32
 
33
+ const owner = { sessionOrUserType: 'user_User', sessionOrUser: data.user }
34
+ import { useLocale } from "@live-change/vue3-components"
35
+ const locale = useLocale()
36
+ const localePromise = locale.getOtherOwnerLocale(owner)
37
+ await Promise.all([localePromise])
38
+ import { useI18n } from 'vue-i18n'
39
+ const { locale: i18nLocale, t } = useI18n()
40
+ if(locale.localeRef.value?.language) i18nLocale.value = locale.localeRef.value?.language
33
41
 
34
42
  import { useApi } from '@live-change/vue3-ssr'
35
43
  const api = useApi()
@@ -10,7 +10,7 @@
10
10
  transition-colors duration-300 ease-in-out"
11
11
  >
12
12
  <i class="pi pi-user mr-3"></i>
13
- <span>Profile</span>
13
+ <span>{{ t('nav.profile') }}</span>
14
14
  </router-link>
15
15
  </li>
16
16
  <li v-if="!client.user">
@@ -23,7 +23,7 @@
23
23
  transition-colors duration-300 ease-in-out"
24
24
  >
25
25
  <i class="pi pi-user-plus mr-3"></i>
26
- <span>Sign Up</span>
26
+ <span>{{ t('nav.signUp') }}</span>
27
27
  </router-link>
28
28
  </li>
29
29
  <li v-if="!client.user">
@@ -36,7 +36,7 @@
36
36
  transition-colors duration-300 ease-in-out"
37
37
  >
38
38
  <i class="pi pi-key mr-3"></i>
39
- <span>Sign In</span>
39
+ <span>{{ t('nav.signIn') }}</span>
40
40
  </router-link>
41
41
  </li>
42
42
  <li v-if="client.user">
@@ -49,7 +49,7 @@
49
49
  transition-colors duration-300 ease-in-out"
50
50
  >
51
51
  <i class="pi pi-cog mr-3"></i>
52
- <span>Settings</span>
52
+ <span>{{ t('nav.settings') }}</span>
53
53
  </router-link>
54
54
  </li>
55
55
  <li v-if="client.user">
@@ -62,7 +62,7 @@
62
62
  transition-colors duration-300 ease-in-out"
63
63
  >
64
64
  <i class="pi pi-power-off mr-3"></i>
65
- <span>Sign Out</span>
65
+ <span>{{ t('nav.signOut') }}</span>
66
66
  </router-link>
67
67
  </li>
68
68
  </ul>
@@ -74,6 +74,9 @@
74
74
  import { client as useClient } from '@live-change/vue3-ssr'
75
75
  import { toRefs } from '@vueuse/core'
76
76
 
77
+ import { useI18n } from 'vue-i18n'
78
+ const { t } = useI18n()
79
+
77
80
  const client = useClient()
78
81
 
79
82
  </script>
@@ -21,6 +21,9 @@
21
21
 
22
22
  import { inject, defineProps, defineExpose } from "vue"
23
23
 
24
+ import { useI18n } from 'vue-i18n'
25
+ const { t } = useI18n()
26
+
24
27
  const { notification } = defineProps({
25
28
  notification: {
26
29
  type: Object,
@@ -36,8 +39,8 @@
36
39
  workingZone.addPromise('markNotificationRead', (async () => {
37
40
  await notificationApi.markRead({ notification: notification.to || notification.id })
38
41
  toast.add({
39
- severity: 'success', summary: 'Notification read',
40
- detail:'Notification has been marked as read', life: 3000
42
+ severity: 'success', summary: t('notifications.notificationRead'),
43
+ detail: t('notifications.markedAsRead'), life: 3000
41
44
  })
42
45
  })())
43
46
  }
@@ -46,8 +49,8 @@
46
49
  workingZone.addPromise('markNotificationUnread', (async () => {
47
50
  await notificationApi.markUnread({ notification: notification.to || notification.id })
48
51
  toast.add({
49
- severity: 'success', summary: 'Notification unread',
50
- detail:'Notification has been marked as unread', life: 3000
52
+ severity: 'success', summary: t('notifications.notificationUnread'),
53
+ detail: t('notifications.markedAsUnread'), life: 3000
51
54
  })
52
55
  })())
53
56
  }
@@ -56,8 +59,8 @@
56
59
  workingZone.addPromise('deleteNotification', (async () => {
57
60
  await notificationApi.delete({ notification: notification.to || notification.id })
58
61
  toast.add({
59
- severity: 'warn', summary: 'Notification deleted',
60
- detail: 'Notification has been deleted', life: 3000
62
+ severity: 'warn', summary: t('notifications.notificationDeleted'),
63
+ detail: t('notifications.hasBeenDeleted'), life: 3000
61
64
  })
62
65
  })())
63
66
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="flex items-center justify-between mb-1 px-4 pt-1">
3
- <div class="text-surface-900 dark:text-surface-0 font-medium text-xl">Notifications</div>
3
+ <div class="text-surface-900 dark:text-surface-0 font-medium text-xl">{{ t('notifications.notifications') }}</div>
4
4
  <div>
5
5
  <Button @click="$refs.menu.toggle($event)"
6
6
  icon="pi pi-ellipsis-v" class="p-button-text p-button-plain p-button-rounded" />
@@ -42,6 +42,9 @@
42
42
 
43
43
  import { ref, inject } from 'vue'
44
44
 
45
+ import { useI18n } from 'vue-i18n'
46
+ const { t } = useI18n()
47
+
45
48
  const workingZone = inject('workingZone')
46
49
 
47
50
  import { notificationTypes } from "./notificationTypes.js"
@@ -66,27 +69,27 @@
66
69
 
67
70
  const menuItems = [
68
71
  {
69
- label: 'Mark all as read',
72
+ label: t('notifications.markAllAsRead'),
70
73
  icon: 'pi pi-check',
71
74
  command: () => {
72
75
  workingZone.addPromise('markNotification', (async () => {
73
76
  await notificationApi.markAllAsRead({ })
74
77
  toast.add({
75
- severity: 'success', summary:' Notifications read',
76
- detail:'all notifications have been marked as read', life: 3000
78
+ severity: 'success', summary: t('notifications.notificationsRead'),
79
+ detail: t('notifications.allMarkedAsRead'), life: 3000
77
80
  })
78
81
  })())
79
82
  }
80
83
  },
81
84
  {
82
- label: 'Delete all',
85
+ label: t('notifications.deleteAll'),
83
86
  icon: 'pi pi-times',
84
87
  command: () => {
85
88
  workingZone.addPromise('markNotification', (async () => {
86
89
  await notificationApi.deleteAll({ })
87
90
  toast.add({
88
- severity: 'warn', summary: 'Notifications deleted',
89
- detail: 'All notifications have been deleted', life: 3000
91
+ severity: 'warn', summary: t('notifications.notificationsDeleted'),
92
+ detail: t('notifications.allDeleted'), life: 3000
90
93
  })
91
94
  })())
92
95
  }
@@ -2,7 +2,7 @@
2
2
  <div class="w-full lg:w-6/12 md:w-9/12" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
3
  <div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
4
4
  <div>
5
- <h1>Notifications settings</h1>
5
+ <h1>{{ t('notifications.notificationsSettings') }}</h1>
6
6
  </div>
7
7
  <!-- <pre>{{ settings }}</pre>
8
8
  <pre>{{ clientConfig }}</pre> -->
@@ -56,7 +56,7 @@
56
56
  phone: 'pi-phone'
57
57
  }
58
58
  function contactText(contact, type) {
59
- if(type === 'web') return 'Web'
59
+ if(type === 'web') return t('notifications.web')
60
60
  return contact
61
61
  }
62
62
 
@@ -107,7 +107,7 @@
107
107
  notificationType, notification: notificationType
108
108
  },
109
109
  recursive: true,
110
- onSave: () => toast.add({ severity: 'info', summary: 'Notification settings saved', life: 1500 })
110
+ onSave: () => toast.add({ severity: 'info', summary: t('notifications.settingsSaved'), life: 1500 })
111
111
  }).value
112
112
  return {
113
113
  contactType,
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <SimpleNotification :notification="notification">
3
3
  <div class="text-orange-600 text-2xl">
4
- Unknown notification {{ notification.notificationType }}!
4
+ {{ t('notifications.unknownNotification', { type: notification.notificationType }) }}
5
5
  </div>
6
6
  <pre class="w-full overflow-hidden">{{ notification }}</pre>
7
7
  </SimpleNotification>
@@ -13,6 +13,9 @@
13
13
 
14
14
  import { toRefs, watch } from 'vue'
15
15
 
16
+ import { useI18n } from 'vue-i18n'
17
+ const { t } = useI18n()
18
+
16
19
  const props = defineProps({
17
20
  notification: {
18
21
  type: Object,
@@ -4,7 +4,7 @@
4
4
  <div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border">
5
5
  <div class="text-center mb-8">
6
6
  <div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
7
- {{ passwordExists ? 'Change password' : 'Set password' }}
7
+ {{ passwordExists ? t('auth.changePassword') : t('auth.setPassword') }}
8
8
  </div>
9
9
  </div>
10
10
 
@@ -38,7 +38,7 @@
38
38
  <li>{{ t('auth.suggestionLowercase') }}</li>
39
39
  <li>{{ t('auth.suggestionUppercase') }}</li>
40
40
  <li>{{ t('auth.suggestionNumeric') }}</li>
41
- <li>Minimum 8 characters</li>
41
+ <li>{{ t('auth.suggestionMinLength') }}</li>
42
42
  </ul>
43
43
  </template>
44
44
  </Password>
@@ -57,7 +57,7 @@
57
57
 
58
58
  </template>
59
59
 
60
- <Button :label="passwordExists ? 'Change password' : 'Set password'"
60
+ <Button :label="passwordExists ? t('auth.changePassword') : t('auth.setPassword')"
61
61
  type="submit"
62
62
  icon="pi pi-key" class="w-full"></Button>
63
63
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="flex relative lg:static bg-surface-50 dark:bg-surface-950"
3
- style="height: calc(100vh - 88px)">
3
+ style="min-height: calc(100vh - 88px)">
4
4
  <div id="settings-menu"
5
5
  class="bg-surface-0 dark:bg-surface-950 flex-shrink-0 absolute left-0 h-full
6
6
  top-0 z-1 border-r-1 border-r-surface-300 dark:border-r-surface-700 select-none
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
3
  <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
4
- <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">Signed In</div>
5
- <p class="mt-0 p-0 leading-normal">Congratulations! You have successfully logged in to your account.</p>
4
+ <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">{{ t('auth.signedIn') }}</div>
5
+ <p class="mt-0 p-0 leading-normal">{{ t('auth.signInSuccess') }}</p>
6
6
  <div v-if="afterSignIn" class="flex flex-row justify-center items-center">
7
7
  <router-link :to="afterSignIn" class="no-underline">
8
- <Button label="Next" v-ripple />
8
+ <Button :label="t('common.next')" v-ripple />
9
9
  </router-link>
10
10
  <p class="ml-6" v-if="isMounted && redirectTime">
11
- Redirect in {{ pluralize('second', Math.ceil((redirectTime - currentTime) / 1000), true) }}...
11
+ {{ t('auth.redirectIn', { seconds: pluralize('second', Math.ceil((redirectTime - currentTime) / 1000), true) }) }}
12
12
  </p>
13
13
  </div>
14
14
  <div v-else>
15
- Return to <router-link to="/">index page</router-link>.
15
+ {{ t('auth.returnToIndex') }} <router-link to="/">{{ t('auth.indexPage') }}</router-link>.
16
16
  </div>
17
17
  </div>
18
18
  </div>
@@ -40,6 +40,9 @@
40
40
  import { useToast } from 'primevue/usetoast'
41
41
  const toast = useToast()
42
42
 
43
+ import { useI18n } from 'vue-i18n'
44
+ const { t } = useI18n()
45
+
43
46
  const userClientConfig = api.getServiceDefinition('user')?.clientConfig
44
47
 
45
48
  const afterSignIn = ref()
@@ -61,8 +64,8 @@
61
64
  setTimeout(() => { // it could be next tick
62
65
  toast.add({
63
66
  severity: 'info', life: 6000,
64
- summary: 'Signed in',
65
- detail: 'Congratulations! You have successfully logged in to your account.'
67
+ summary: t('auth.signedIn'),
68
+ detail: t('auth.signInSuccess')
66
69
  })
67
70
  router.push(route)
68
71
  }, 100)
@@ -1,14 +1,17 @@
1
1
  <template>
2
2
  <div class="w-full lg:w-6/12 md:w-9/12 max-w-[32rem]" v-shared-element:form="{ duration: '300ms', includeChildren: true }">
3
3
  <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
4
- <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">Signed Out</div>
5
- <p class="mt-0 p-0 leading-normal">You have successfully signed out from your account.</p>
4
+ <div class="text-surface-900 dark:text-surface-0 font-medium mb-4 text-xl mb-6">{{ t('auth.signedOut') }}</div>
5
+ <p class="mt-0 p-0 leading-normal">{{ t('auth.signOutSuccess') }}</p>
6
6
  </div>
7
7
  </div>
8
8
  </template>
9
9
 
10
10
  <script setup>
11
11
 
12
+ import { useI18n } from 'vue-i18n'
13
+ const { t } = useI18n()
14
+
12
15
  </script>
13
16
 
14
17
  <style>
@@ -3,26 +3,26 @@
3
3
  <div class="bg-surface-0 dark:bg-surface-900 rounded-border shadow p-6">
4
4
  <div class="text-center mb-8">
5
5
  <div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
6
- Signed Up
6
+ {{ t('auth.signedUp') }}
7
7
  </div>
8
8
  </div>
9
9
  <p class="mt-0 p-0 leading-normal">
10
- Congratulations! You have successfully created your account.
10
+ {{ t('auth.signUpSuccess') }}
11
11
  <span v-if="needPassword && !afterSignIn">
12
- You can now set password to secure your account.
12
+ {{ t('auth.canSetPassword') }}
13
13
  </span>
14
14
  <div v-else-if="afterSignIn" class="flex flex-row justify-center items-center">
15
15
  <router-link :to="afterSignIn" class="no-underline">
16
- <Button label="Next" v-ripple />
16
+ <Button :label="t('common.next')" v-ripple />
17
17
  </router-link>
18
18
  <p class="ml-6" v-if="isMounted && redirectTime">
19
- Redirect in {{ pluralize('second', Math.ceil((redirectTime - currentTime) / 1000), true) }}...
19
+ {{ t('auth.redirectIn', { seconds: pluralize('second', Math.ceil((redirectTime - currentTime) / 1000), true) }) }}
20
20
  </p>
21
21
  </div>
22
22
  <p v-else>
23
23
 
24
- Setup your <router-link :to="{ name: 'user:identification' }">profile</router-link>
25
- or return to the <router-link to="/">index page</router-link>.
24
+ {{ t('auth.setupProfile') }} <router-link :to="{ name: 'user:identification' }">{{ t('auth.profile') }}</router-link>
25
+ {{ t('auth.orReturnTo') }} <router-link to="/">{{ t('auth.indexPage') }}</router-link>.
26
26
  </p>
27
27
  </p>
28
28
  </div>
@@ -30,7 +30,7 @@
30
30
  <div class="bg-surface-0 dark:bg-surface-900 p-6 shadow rounded-border mt-2" v-if="needPassword && !afterSignIn">
31
31
  <div class="text-center mb-8">
32
32
  <div class="text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4">
33
- {{ passwordExists ? 'Change password' : 'Set password' }}
33
+ {{ passwordExists ? t('auth.changePassword') : t('auth.setPassword') }}
34
34
  </div>
35
35
  </div>
36
36
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  <div class="p-field mb-4">
44
44
  <label for="newPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">
45
- New password
45
+ {{ t('auth.newPassword') }}
46
46
  </label>
47
47
  <Password id="newPassword" class="w-full" inputClass="w-full"
48
48
  toggleMask v-model:masked="masked"
@@ -50,12 +50,12 @@
50
50
  v-model="data.passwordHash">
51
51
  <template #footer>
52
52
  <Divider />
53
- <p class="p-mt-2">Suggestions</p>
53
+ <p class="p-mt-2">{{ t('auth.passwordSuggestions') }}</p>
54
54
  <ul class="p-pl-2 p-ml-2 p-mt-0" style="line-height: 1.5">
55
- <li>At least one lowercase</li>
56
- <li>At least one uppercase</li>
57
- <li>At least one numeric</li>
58
- <li>Minimum 8 characters</li>
55
+ <li>{{ t('auth.suggestionLowercase') }}</li>
56
+ <li>{{ t('auth.suggestionUppercase') }}</li>
57
+ <li>{{ t('auth.suggestionNumeric') }}</li>
58
+ <li>{{ t('auth.suggestionMinLength') }}</li>
59
59
  </ul>
60
60
  </template>
61
61
  </Password>
@@ -65,7 +65,7 @@
65
65
  </div>
66
66
 
67
67
  <div class="p-field mb-4">
68
- <label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">Re-enter password</label>
68
+ <label for="reenterPassword" class="block text-surface-900 dark:text-surface-0 font-medium mb-2">{{ t('auth.reenterPassword') }}</label>
69
69
  <Password id="reenterPassword" class="w-full" inputClass="w-full"
70
70
  toggleMask v-model:masked="masked"
71
71
  v-model="secondPassword"
@@ -74,7 +74,7 @@
74
74
 
75
75
  </template>
76
76
 
77
- <Button :label="passwordExists ? 'Change password' : 'Set password'"
77
+ <Button :label="passwordExists ? t('auth.changePassword') : t('auth.setPassword')"
78
78
  type="submit"
79
79
  icon="pi pi-key" class="w-full"></Button>
80
80
 
@@ -158,8 +158,8 @@
158
158
  console.log("DO REDIRECT AFTER SIGN UP!", route)
159
159
  toast.add({
160
160
  severity: 'info', life: 6000,
161
- summary: 'Signed up',
162
- detail: 'Congratulations! You have successfully created your account.'
161
+ summary: t('auth.signedUp'),
162
+ detail: t('auth.signUpSuccess')
163
163
  })
164
164
  localStorage.removeItem('redirectAfterSignIn')
165
165
  router.push(route)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/user-frontend",
3
- "version": "0.9.132",
3
+ "version": "0.9.134",
4
4
  "scripts": {
5
5
  "memDev": "tsx --inspect --expose-gc server/start.js memDev --enableSessions --initScript ./init.js --dbAccess",
6
6
  "localDevInit": "tsx server/start.js localDev --enableSessions --initScript ./init.js --dbAccess",
@@ -36,29 +36,29 @@
36
36
  },
37
37
  "type": "module",
38
38
  "dependencies": {
39
- "@live-change/cli": "^0.9.132",
40
- "@live-change/dao": "^0.9.132",
41
- "@live-change/dao-vue3": "^0.9.132",
42
- "@live-change/dao-websocket": "^0.9.132",
43
- "@live-change/email-service": "^0.9.132",
44
- "@live-change/framework": "^0.9.132",
45
- "@live-change/identicon-service": "^0.9.132",
46
- "@live-change/image-frontend": "^0.9.132",
47
- "@live-change/message-authentication-service": "^0.9.132",
48
- "@live-change/notification-service": "^0.9.132",
49
- "@live-change/password-authentication-service": "^0.9.132",
50
- "@live-change/pattern": "^0.9.132",
51
- "@live-change/secret-code-service": "^0.9.132",
52
- "@live-change/secret-link-service": "^0.9.132",
53
- "@live-change/security-frontend": "^0.9.132",
54
- "@live-change/security-service": "^0.9.132",
55
- "@live-change/session-service": "^0.9.132",
56
- "@live-change/timer-service": "^0.9.132",
57
- "@live-change/upload-service": "^0.9.132",
58
- "@live-change/user-identification-service": "^0.9.132",
59
- "@live-change/user-service": "^0.9.132",
60
- "@live-change/vue3-components": "^0.9.132",
61
- "@live-change/vue3-ssr": "^0.9.132",
39
+ "@live-change/cli": "^0.9.134",
40
+ "@live-change/dao": "^0.9.134",
41
+ "@live-change/dao-vue3": "^0.9.134",
42
+ "@live-change/dao-websocket": "^0.9.134",
43
+ "@live-change/email-service": "^0.9.134",
44
+ "@live-change/framework": "^0.9.134",
45
+ "@live-change/identicon-service": "^0.9.134",
46
+ "@live-change/image-frontend": "^0.9.134",
47
+ "@live-change/message-authentication-service": "^0.9.134",
48
+ "@live-change/notification-service": "^0.9.134",
49
+ "@live-change/password-authentication-service": "^0.9.134",
50
+ "@live-change/pattern": "^0.9.134",
51
+ "@live-change/secret-code-service": "^0.9.134",
52
+ "@live-change/secret-link-service": "^0.9.134",
53
+ "@live-change/security-frontend": "^0.9.134",
54
+ "@live-change/security-service": "^0.9.134",
55
+ "@live-change/session-service": "^0.9.134",
56
+ "@live-change/timer-service": "^0.9.134",
57
+ "@live-change/upload-service": "^0.9.134",
58
+ "@live-change/user-identification-service": "^0.9.134",
59
+ "@live-change/user-service": "^0.9.134",
60
+ "@live-change/vue3-components": "^0.9.134",
61
+ "@live-change/vue3-ssr": "^0.9.134",
62
62
  "@vueuse/core": "^12.3.0",
63
63
  "codeceptjs-assert": "^0.0.5",
64
64
  "codeceptjs-video-helper": "0.1.3",
@@ -79,7 +79,7 @@
79
79
  "wtfnode": "^0.9.1"
80
80
  },
81
81
  "devDependencies": {
82
- "@live-change/codeceptjs-helper": "^0.9.132",
82
+ "@live-change/codeceptjs-helper": "^0.9.134",
83
83
  "codeceptjs": "^3.6.10",
84
84
  "generate-password": "1.7.1",
85
85
  "playwright": "1.49.1",
@@ -90,5 +90,5 @@
90
90
  "author": "Michał Łaszczewski <michal@laszczewski.pl>",
91
91
  "license": "BSD-3-Clause",
92
92
  "description": "",
93
- "gitHead": "f9627117660732245586a784be1a21455c1c3bd2"
93
+ "gitHead": "88129d6b8fff7cca15c5d7c63834fd16cb372160"
94
94
  }