Add logged out translations (#9983)

Add translation for logged in / sub pages
This commit is contained in:
Félix Malfait
2025-02-03 22:00:54 +01:00
committed by GitHub
parent 351e768038
commit 7a0f2f8c0a
46 changed files with 1505 additions and 600 deletions

View File

@ -1,5 +1,5 @@
import styled from '@emotion/styled';
import React from 'react';
import { Trans } from '@lingui/react/macro';
const StyledContainer = styled.div`
align-items: center;
@ -20,21 +20,21 @@ const StyledContainer = styled.div`
export const FooterNote = () => (
<StyledContainer>
By using Twenty, you agree to the{' '}
<Trans>By using Twenty, you agree to the</Trans>{' '}
<a
href="https://twenty.com/legal/terms"
target="_blank"
rel="noopener noreferrer"
>
Terms of Service
<Trans>Terms of Service</Trans>
</a>{' '}
and{' '}
<Trans>and</Trans>{' '}
<a
href="https://twenty.com/legal/privacy"
target="_blank"
rel="noopener noreferrer"
>
Privacy Policy
<Trans>Privacy Policy</Trans>
</a>
.
</StyledContainer>

View File

@ -1,11 +1,12 @@
import { TextInput } from '@/ui/input/components/TextInput';
import { Controller, useFormContext } from 'react-hook-form';
import styled from '@emotion/styled';
import { motion } from 'framer-motion';
import { StyledText } from 'twenty-ui';
import { useTheme } from '@emotion/react';
import { Form } from '@/auth/sign-in-up/hooks/useSignInUpForm';
import { SignInUpMode } from '@/auth/types/signInUpMode';
import { TextInput } from '@/ui/input/components/TextInput';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { useLingui } from '@lingui/react/macro';
import { motion } from 'framer-motion';
import { Controller, useFormContext } from 'react-hook-form';
import { StyledText } from 'twenty-ui';
const StyledFullWidthMotionDiv = styled(motion.div)`
width: 100%;
@ -22,6 +23,7 @@ export const SignInUpPasswordField = ({
showErrors: boolean;
signInUpMode: SignInUpMode;
}) => {
const { t } = useLingui();
const theme = useTheme();
const form = useFormContext<Form>();
@ -55,7 +57,7 @@ export const SignInUpPasswordField = ({
/>
{signInUpMode === SignInUpMode.SignUp && (
<StyledText
text={'At least 8 characters long.'}
text={t`At least 8 characters long.`}
color={theme.font.color.secondary}
/>
)}

View File

@ -11,6 +11,7 @@ import { SignInUpMode } from '@/auth/types/signInUpMode';
import { isRequestingCaptchaTokenState } from '@/captcha/states/isRequestingCaptchaTokenState';
import { captchaState } from '@/client-config/states/captchaState';
import styled from '@emotion/styled';
import { useLingui } from '@lingui/react/macro';
import { useMemo, useState } from 'react';
import { useFormContext } from 'react-hook-form';
import { useRecoilValue } from 'recoil';
@ -25,6 +26,7 @@ const StyledForm = styled.form`
`;
export const SignInUpWithCredentials = () => {
const { t } = useLingui();
const form = useFormContext<Form>();
const signInUpStep = useRecoilValue(signInUpStepState);
@ -64,25 +66,25 @@ export const SignInUpWithCredentials = () => {
const buttonTitle = useMemo(() => {
if (signInUpStep === SignInUpStep.Init) {
return 'Continue With Email';
return t`Continue with Email`;
}
if (
signInUpMode === SignInUpMode.SignIn &&
signInUpStep === SignInUpStep.Password
) {
return 'Sign in';
return t`Sign in`;
}
if (
signInUpMode === SignInUpMode.SignUp &&
signInUpStep === SignInUpStep.Password
) {
return 'Sign up';
return t`Sign up`;
}
return 'Continue';
}, [signInUpMode, signInUpStep]);
return t`Continue`;
}, [signInUpMode, signInUpStep, t]);
const shouldWaitForCaptchaToken =
signInUpStep !== SignInUpStep.Init &&

View File

@ -1,12 +1,13 @@
import { IconGoogle, MainButton, HorizontalSeparator } from 'twenty-ui';
import { useSignInWithGoogle } from '@/auth/sign-in-up/hooks/useSignInWithGoogle';
import {
SignInUpStep,
signInUpStepState,
} from '@/auth/states/signInUpStepState';
import { useTheme } from '@emotion/react';
import { useRecoilValue } from 'recoil';
import { useSignInWithGoogle } from '@/auth/sign-in-up/hooks/useSignInWithGoogle';
import { useLingui } from '@lingui/react/macro';
import { memo } from 'react';
import { useRecoilValue } from 'recoil';
import { HorizontalSeparator, IconGoogle, MainButton } from 'twenty-ui';
const GoogleIcon = memo(() => {
const theme = useTheme();
@ -14,6 +15,7 @@ const GoogleIcon = memo(() => {
});
export const SignInUpWithGoogle = () => {
const { t } = useLingui();
const signInUpStep = useRecoilValue(signInUpStepState);
const { signInWithGoogle } = useSignInWithGoogle();
@ -21,7 +23,7 @@ export const SignInUpWithGoogle = () => {
<>
<MainButton
Icon={GoogleIcon}
title="Continue with Google"
title={t`Continue with Google`}
onClick={signInWithGoogle}
variant={signInUpStep === SignInUpStep.Init ? undefined : 'secondary'}
fullWidth

View File

@ -1,14 +1,17 @@
import { IconMicrosoft, MainButton, HorizontalSeparator } from 'twenty-ui';
import { useSignInWithMicrosoft } from '@/auth/sign-in-up/hooks/useSignInWithMicrosoft';
import {
SignInUpStep,
signInUpStepState,
} from '@/auth/states/signInUpStepState';
import { useTheme } from '@emotion/react';
import { useSignInWithMicrosoft } from '@/auth/sign-in-up/hooks/useSignInWithMicrosoft';
import { useLingui } from '@lingui/react/macro';
import { useRecoilValue } from 'recoil';
import { HorizontalSeparator, IconMicrosoft, MainButton } from 'twenty-ui';
export const SignInUpWithMicrosoft = () => {
const theme = useTheme();
const { t } = useLingui();
const signInUpStep = useRecoilValue(signInUpStepState);
const { signInWithMicrosoft } = useSignInWithMicrosoft();
@ -16,7 +19,7 @@ export const SignInUpWithMicrosoft = () => {
<>
<MainButton
Icon={() => <IconMicrosoft size={theme.icon.size.md} />}
title="Continue with Microsoft"
title={t`Continue with Microsoft`}
onClick={signInWithMicrosoft}
variant={signInUpStep === SignInUpStep.Init ? undefined : 'secondary'}
fullWidth

View File

@ -5,12 +5,14 @@ import {
} from '@/auth/states/signInUpStepState';
import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState';
import { useTheme } from '@emotion/react';
import { useLingui } from '@lingui/react/macro';
import { useRecoilValue, useSetRecoilState } from 'recoil';
import { isDefined } from 'twenty-shared';
import { HorizontalSeparator, IconLock, MainButton } from 'twenty-ui';
export const SignInUpWithSSO = () => {
const theme = useTheme();
const { t } = useLingui();
const setSignInUpStep = useSetRecoilState(signInUpStepState);
const workspaceAuthProviders = useRecoilValue(workspaceAuthProvidersState);
@ -33,7 +35,7 @@ export const SignInUpWithSSO = () => {
<>
<MainButton
Icon={() => <IconLock size={theme.icon.size.md} />}
title="Single sign-on (SSO)"
title={t`Single sign-on (SSO)`}
onClick={signInWithSSO}
variant={signInUpStep === SignInUpStep.Init ? undefined : 'secondary'}
fullWidth

View File

@ -8,6 +8,7 @@ import { useSignInUpForm } from '@/auth/sign-in-up/hooks/useSignInUpForm';
import { SignInUpStep } from '@/auth/states/signInUpStepState';
import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState';
import styled from '@emotion/styled';
import { Trans } from '@lingui/react/macro';
import { FormProvider } from 'react-hook-form';
import { useRecoilValue } from 'recoil';
import { ActionLink, HorizontalSeparator } from 'twenty-ui';
@ -54,7 +55,7 @@ export const SignInUpWorkspaceScopeForm = () => {
</StyledContentContainer>
{signInUpStep === SignInUpStep.Password && (
<ActionLink onClick={handleResetPassword(form.getValues('email'))}>
Forgot your password?
<Trans>Forgot your password?</Trans>
</ActionLink>
)}
</>