locale for register form
This commit is contained in:
parent
3732d8cbcb
commit
351cd5eda9
5 changed files with 78 additions and 115 deletions
|
|
@ -43,6 +43,24 @@
|
|||
"register_rate_limited": "Zu viele Versuche. Bitte versuchen Sie es später erneut.",
|
||||
"register_invalid_request": "Ungültige Anfrage. Registrierungsparameter konnten nicht abgerufen werden.",
|
||||
"register_unsupported": "Diese Anwendung unterstützt keine Registrierung auf diesem Server.",
|
||||
"register_username_label": "Benutzername",
|
||||
"register_password_label": "Passwort",
|
||||
"register_confirm_password_label": "Passwort bestätigen",
|
||||
"register_button": "Registrieren",
|
||||
"register_token_label": "Registrierungstoken",
|
||||
"register_token_optional_label": "Registrierungstoken (optional)",
|
||||
"register_email_label": "E-Mail",
|
||||
"register_email_optional_label": "E-Mail (optional)",
|
||||
"register_terms": "Ich akzeptiere die <termsLink>Nutzungsbedingungen</termsLink> des Servers.",
|
||||
"register_error_user_taken": "Dieser Benutzername ist bereits vergeben.",
|
||||
"register_error_user_invalid": "Dieser Benutzername enthält ungültige Zeichen.",
|
||||
"register_error_user_exclusive": "Dieser Benutzername ist reserviert.",
|
||||
"register_error_password_weak": "Schwaches Passwort. Vom Server abgelehnt, bitte wählen Sie ein stärkeres.",
|
||||
"register_error_password_short": "Kurzes Passwort. Vom Server abgelehnt, bitte wählen Sie ein längeres.",
|
||||
"register_error_rate_limited": "Registrierung fehlgeschlagen. Zu viele Anfragen, bitte versuchen Sie es später erneut.",
|
||||
"register_error_forbidden": "Registrierung fehlgeschlagen. Der Server erlaubt keine Registrierung.",
|
||||
"register_error_invalid_request": "Registrierung fehlgeschlagen. Ungültige Anfrage.",
|
||||
"register_error_unknown": "Registrierung fehlgeschlagen. Unbekannter Fehler.",
|
||||
"reset_description": "Der Homeserver <strong>{{server}}</strong> sendet Ihnen eine E-Mail, um Ihr Passwort zurückzusetzen.",
|
||||
"reset_email_label": "E-Mail",
|
||||
"reset_new_password": "Neues Passwort",
|
||||
|
|
|
|||
|
|
@ -43,6 +43,24 @@
|
|||
"register_rate_limited": "Too many attempts. Please try again later.",
|
||||
"register_invalid_request": "Invalid request. Failed to get registration parameters.",
|
||||
"register_unsupported": "This application does not support registration on this server.",
|
||||
"register_username_label": "Username",
|
||||
"register_password_label": "Password",
|
||||
"register_confirm_password_label": "Confirm Password",
|
||||
"register_button": "Register",
|
||||
"register_token_label": "Registration Token",
|
||||
"register_token_optional_label": "Registration Token (Optional)",
|
||||
"register_email_label": "Email",
|
||||
"register_email_optional_label": "Email (Optional)",
|
||||
"register_terms": "I accept the server <termsLink>Terms and Conditions</termsLink>.",
|
||||
"register_error_user_taken": "This username is already taken.",
|
||||
"register_error_user_invalid": "This username contains invalid characters.",
|
||||
"register_error_user_exclusive": "This username is reserved.",
|
||||
"register_error_password_weak": "Weak password. Password rejected by server, please choose a stronger one.",
|
||||
"register_error_password_short": "Short password. Password rejected by server, please choose a longer one.",
|
||||
"register_error_rate_limited": "Failed to register. Your request has been rate-limited, please try again later.",
|
||||
"register_error_forbidden": "Failed to register. The homeserver does not permit registration.",
|
||||
"register_error_invalid_request": "Failed to register. Invalid request.",
|
||||
"register_error_unknown": "Failed to register. Unknown reason.",
|
||||
"reset_description": "Homeserver <strong>{{server}}</strong> will send you an email to let you reset your password.",
|
||||
"reset_email_label": "Email",
|
||||
"reset_new_password": "New Password",
|
||||
|
|
|
|||
|
|
@ -43,6 +43,24 @@
|
|||
"register_rate_limited": "Слишком много попыток. Попробуйте позже.",
|
||||
"register_invalid_request": "Неверный запрос. Не удалось получить параметры регистрации.",
|
||||
"register_unsupported": "Это приложение не поддерживает регистрацию на данном сервере.",
|
||||
"register_username_label": "Имя пользователя",
|
||||
"register_password_label": "Пароль",
|
||||
"register_confirm_password_label": "Подтвердите пароль",
|
||||
"register_button": "Зарегистрироваться",
|
||||
"register_token_label": "Токен регистрации",
|
||||
"register_token_optional_label": "Токен регистрации (необязательно)",
|
||||
"register_email_label": "Email",
|
||||
"register_email_optional_label": "Email (необязательно)",
|
||||
"register_terms": "Я принимаю <termsLink>Условия использования</termsLink> сервера.",
|
||||
"register_error_user_taken": "Это имя пользователя уже занято.",
|
||||
"register_error_user_invalid": "Имя пользователя содержит недопустимые символы.",
|
||||
"register_error_user_exclusive": "Это имя пользователя зарезервировано.",
|
||||
"register_error_password_weak": "Слабый пароль. Сервер отклонил пароль, выберите более надёжный.",
|
||||
"register_error_password_short": "Короткий пароль. Сервер отклонил пароль, выберите более длинный.",
|
||||
"register_error_rate_limited": "Не удалось зарегистрироваться. Слишком много попыток, попробуйте позже.",
|
||||
"register_error_forbidden": "Не удалось зарегистрироваться. Сервер не разрешает регистрацию.",
|
||||
"register_error_invalid_request": "Не удалось зарегистрироваться. Неверный запрос.",
|
||||
"register_error_unknown": "Не удалось зарегистрироваться. Неизвестная ошибка.",
|
||||
"reset_description": "Сервер <strong>{{server}}</strong> отправит вам письмо для сброса пароля.",
|
||||
"reset_email_label": "Email",
|
||||
"reset_new_password": "Новый пароль",
|
||||
|
|
|
|||
|
|
@ -1,94 +0,0 @@
|
|||
import { Avatar, AvatarImage, Box, Button, Text } from 'folds';
|
||||
import { IIdentityProvider, SSOAction, createClient } from 'matrix-js-sdk';
|
||||
import React, { useMemo } from 'react';
|
||||
import { useAutoDiscoveryInfo } from '../../hooks/useAutoDiscoveryInfo';
|
||||
|
||||
type SSOLoginProps = {
|
||||
providers?: IIdentityProvider[];
|
||||
redirectUrl: string;
|
||||
action?: SSOAction;
|
||||
saveScreenSpace?: boolean;
|
||||
};
|
||||
export function SSOLogin({ providers, redirectUrl, action, saveScreenSpace }: SSOLoginProps) {
|
||||
const discovery = useAutoDiscoveryInfo();
|
||||
const baseUrl = discovery['m.homeserver'].base_url;
|
||||
const mx = useMemo(() => createClient({ baseUrl }), [baseUrl]);
|
||||
|
||||
const getSSOIdUrl = (ssoId?: string): string =>
|
||||
mx.getSsoLoginUrl(redirectUrl, 'sso', ssoId, action);
|
||||
|
||||
const withoutIcon = providers
|
||||
? providers.find(
|
||||
(provider) => !provider.icon || !mx.mxcUrlToHttp(provider.icon, 96, 96, 'crop', false)
|
||||
)
|
||||
: true;
|
||||
|
||||
const renderAsIcons = withoutIcon ? false : saveScreenSpace && providers && providers.length > 2;
|
||||
|
||||
return (
|
||||
<Box justifyContent="Center" gap="600" wrap="Wrap">
|
||||
{providers ? (
|
||||
providers.map((provider) => {
|
||||
const { id, name, icon } = provider;
|
||||
const iconUrl = icon && mx.mxcUrlToHttp(icon, 96, 96, 'crop', false);
|
||||
|
||||
const buttonTitle = `Continue with ${name}`;
|
||||
|
||||
if (renderAsIcons) {
|
||||
return (
|
||||
<Avatar
|
||||
style={{ cursor: 'pointer' }}
|
||||
key={id}
|
||||
as="a"
|
||||
href={getSSOIdUrl(id)}
|
||||
aria-label={buttonTitle}
|
||||
size="300"
|
||||
radii="300"
|
||||
>
|
||||
<AvatarImage src={iconUrl!} alt={name} title={buttonTitle} />
|
||||
</Avatar>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Button
|
||||
style={{ width: '100%' }}
|
||||
key={id}
|
||||
as="a"
|
||||
href={getSSOIdUrl(id)}
|
||||
size="500"
|
||||
variant="Secondary"
|
||||
fill="Soft"
|
||||
outlined
|
||||
before={
|
||||
iconUrl && (
|
||||
<Avatar size="200" radii="300">
|
||||
<AvatarImage src={iconUrl} alt={name} />
|
||||
</Avatar>
|
||||
)
|
||||
}
|
||||
>
|
||||
<Text align="Center" size="B500" truncate>
|
||||
{buttonTitle}
|
||||
</Text>
|
||||
</Button>
|
||||
);
|
||||
})
|
||||
) : (
|
||||
<Button
|
||||
style={{ width: '100%' }}
|
||||
as="a"
|
||||
href={getSSOIdUrl()}
|
||||
size="500"
|
||||
variant="Secondary"
|
||||
fill="Soft"
|
||||
outlined
|
||||
>
|
||||
<Text align="Center" size="B500" truncate>
|
||||
Continue with SSO
|
||||
</Text>
|
||||
</Button>
|
||||
)}
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ import {
|
|||
color,
|
||||
} from 'folds';
|
||||
import React, { ChangeEventHandler, useCallback, useMemo, useState } from 'react';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import {
|
||||
AuthDict,
|
||||
AuthType,
|
||||
|
|
@ -184,6 +185,7 @@ export function PasswordRegisterForm({
|
|||
defaultEmail,
|
||||
defaultRegisterToken,
|
||||
}: PasswordRegisterFormProps) {
|
||||
const { t } = useTranslation();
|
||||
const serverDiscovery = useAutoDiscoveryInfo();
|
||||
const baseUrl = serverDiscovery['m.homeserver'].base_url;
|
||||
const mx = useMemo(() => createClient({ baseUrl }), [baseUrl]);
|
||||
|
|
@ -259,7 +261,7 @@ export function PasswordRegisterForm({
|
|||
<Box as="form" onSubmit={handleSubmit} direction="Inherit" gap="400">
|
||||
<Box direction="Column" gap="100">
|
||||
<Text as="label" size="L400" priority="300">
|
||||
Username
|
||||
{t('Auth.register_username_label')}
|
||||
</Text>
|
||||
<Input
|
||||
variant="Background"
|
||||
|
|
@ -270,13 +272,13 @@ export function PasswordRegisterForm({
|
|||
required
|
||||
/>
|
||||
{registerError?.errcode === RegisterError.UserTaken && (
|
||||
<FieldError message="This username is already taken." />
|
||||
<FieldError message={t('Auth.register_error_user_taken')} />
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.UserInvalid && (
|
||||
<FieldError message="This username contains invalid characters." />
|
||||
<FieldError message={t('Auth.register_error_user_invalid')} />
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.UserExclusive && (
|
||||
<FieldError message="This username is reserved." />
|
||||
<FieldError message={t('Auth.register_error_user_exclusive')} />
|
||||
)}
|
||||
</Box>
|
||||
<ConfirmPasswordMatch initialValue>
|
||||
|
|
@ -284,7 +286,7 @@ export function PasswordRegisterForm({
|
|||
<>
|
||||
<Box direction="Column" gap="100">
|
||||
<Text as="label" size="L400" priority="300">
|
||||
Password
|
||||
{t('Auth.register_password_label')}
|
||||
</Text>
|
||||
<PasswordInput
|
||||
ref={passRef}
|
||||
|
|
@ -299,7 +301,7 @@ export function PasswordRegisterForm({
|
|||
<FieldError
|
||||
message={
|
||||
registerError.data.error ??
|
||||
'Weak Password. Password rejected by server please choosing more strong Password.'
|
||||
t('Auth.register_error_password_weak')
|
||||
}
|
||||
/>
|
||||
)}
|
||||
|
|
@ -307,14 +309,14 @@ export function PasswordRegisterForm({
|
|||
<FieldError
|
||||
message={
|
||||
registerError.data.error ??
|
||||
'Short Password. Password rejected by server please choosing more long Password.'
|
||||
t('Auth.register_error_password_short')
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</Box>
|
||||
<Box direction="Column" gap="100">
|
||||
<Text as="label" size="L400" priority="300">
|
||||
Confirm Password
|
||||
{t('Auth.register_confirm_password_label')}
|
||||
</Text>
|
||||
<PasswordInput
|
||||
ref={confPassRef}
|
||||
|
|
@ -334,8 +336,8 @@ export function PasswordRegisterForm({
|
|||
<Box direction="Column" gap="100">
|
||||
<Text as="label" size="L400" priority="300">
|
||||
{requiredStageInFlows(uiaFlows, AuthType.RegistrationToken)
|
||||
? 'Registration Token'
|
||||
: 'Registration Token (Optional)'}
|
||||
? t('Auth.register_token_label')
|
||||
: t('Auth.register_token_optional_label')}
|
||||
</Text>
|
||||
<Input
|
||||
variant="Background"
|
||||
|
|
@ -350,7 +352,9 @@ export function PasswordRegisterForm({
|
|||
{hasStageInFlows(uiaFlows, AuthType.Email) && (
|
||||
<Box direction="Column" gap="100">
|
||||
<Text as="label" size="L400" priority="300">
|
||||
{requiredStageInFlows(uiaFlows, AuthType.Email) ? 'Email' : 'Email (Optional)'}
|
||||
{requiredStageInFlows(uiaFlows, AuthType.Email)
|
||||
? t('Auth.register_email_label')
|
||||
: t('Auth.register_email_optional_label')}
|
||||
</Text>
|
||||
<Input
|
||||
variant="Background"
|
||||
|
|
@ -368,30 +372,29 @@ export function PasswordRegisterForm({
|
|||
<Box alignItems="Center" gap="200">
|
||||
<Checkbox name="termsInput" size="300" variant="Primary" required />
|
||||
<Text size="T300">
|
||||
I accept server{' '}
|
||||
<a href={termUrl} target="_blank" rel="noreferrer">
|
||||
Terms and Conditions
|
||||
</a>
|
||||
.
|
||||
<Trans
|
||||
i18nKey="Auth.register_terms"
|
||||
components={{ termsLink: <a href={termUrl} target="_blank" rel="noreferrer" /> }}
|
||||
/>
|
||||
</Text>
|
||||
</Box>
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.RateLimited && (
|
||||
<FieldError message="Failed to register. Your register request has been rate-limited by server, Please try after some time." />
|
||||
<FieldError message={t('Auth.register_error_rate_limited')} />
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.Forbidden && (
|
||||
<FieldError message="Failed to register. The homeserver does not permit registration." />
|
||||
<FieldError message={t('Auth.register_error_forbidden')} />
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.InvalidRequest && (
|
||||
<FieldError message="Failed to register. Invalid request." />
|
||||
<FieldError message={t('Auth.register_error_invalid_request')} />
|
||||
)}
|
||||
{registerError?.errcode === RegisterError.Unknown && (
|
||||
<FieldError message={registerError.data.error ?? 'Failed to register. Unknown Reason.'} />
|
||||
<FieldError message={registerError.data.error ?? t('Auth.register_error_unknown')} />
|
||||
)}
|
||||
<span data-spacing-node />
|
||||
<Button variant="Primary" size="500" type="submit">
|
||||
<Text as="span" size="B500">
|
||||
Register
|
||||
{t('Auth.register_button')}
|
||||
</Text>
|
||||
</Button>
|
||||
</Box>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue