diff --git a/site/source/Provider.tsx b/site/source/Provider.tsx index 9f27c24e9..f81131b02 100644 --- a/site/source/Provider.tsx +++ b/site/source/Provider.tsx @@ -14,7 +14,7 @@ import { ErrorBoundary } from '@sentry/react' import i18next from 'i18next' import { createContext, ReactNode } from 'react' import { HelmetProvider } from 'react-helmet-async' -import { I18nextProvider } from 'react-i18next' +import { I18nextProvider, useTranslation } from 'react-i18next' import { Provider as ReduxProvider } from 'react-redux' import { BrowserRouter } from 'react-router-dom' import { ServiceWorker } from './ServiceWorker' @@ -41,6 +41,8 @@ export default function Provider({ }: ProviderProps): JSX.Element { useIframeResizer() + const { t } = useTranslation() + return ( @@ -48,7 +50,7 @@ export default function Provider({ showDialog fallback={ - + Logo mon-entreprise @@ -134,7 +136,11 @@ function ActivitéMixte() { Activité mixte - + ) diff --git a/site/source/components/Feedback/index.tsx b/site/source/components/Feedback/index.tsx index df4a648c2..61d19ec9c 100644 --- a/site/source/components/Feedback/index.tsx +++ b/site/source/components/Feedback/index.tsx @@ -86,7 +86,10 @@ export default function PageFeedback({ customMessage }: PageFeedbackProps) { Pour continuer à donner votre avis et accéder aux nouveautés en avant-première,{' '} - + inscrivez-vous sur la liste des beta-testeur diff --git a/site/source/components/JeDonneMonAvis.tsx b/site/source/components/JeDonneMonAvis.tsx index fcb7c83e9..7322b9715 100644 --- a/site/source/components/JeDonneMonAvis.tsx +++ b/site/source/components/JeDonneMonAvis.tsx @@ -1,11 +1,18 @@ import { Link } from '@/design-system/typography/link' +import { useTranslation } from 'react-i18next' export const JeDonneMonAvis = () => { + const { t } = useTranslation() const href = 'https://jedonnemonavis.numerique.gouv.fr/Demarches/3226?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=e62c98db43a483b98032a17ddcc8d279' return ( - + Je donne mon avis San Francisco, CA 94107
Site web :  - + https://www.netlify.com diff --git a/site/source/components/PaySlip.tsx b/site/source/components/PaySlip.tsx index 9a6339764..e0f75e178 100644 --- a/site/source/components/PaySlip.tsx +++ b/site/source/components/PaySlip.tsx @@ -100,6 +100,8 @@ export default function PaySlip() { const parsedRules = useEngine().getParsedRules() const cotisationsBySection = getCotisationsBySection(parsedRules) + const { t } = useTranslation() + return (
{section.title} - +
{cotisations.map((cotisation) => ( diff --git a/site/source/components/QuickLinks.tsx b/site/source/components/QuickLinks.tsx index 17e4d11d2..a3b096e84 100644 --- a/site/source/components/QuickLinks.tsx +++ b/site/source/components/QuickLinks.tsx @@ -2,7 +2,7 @@ import { goToQuestion } from '@/actions/actions' import { Spacing } from '@/design-system/layout' import { Link } from '@/design-system/typography/link' import { SmallBody } from '@/design-system/typography/paragraphs' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import { RootState } from '@/reducers/rootReducer' import { @@ -21,6 +21,8 @@ export default function QuickLinks() { const quickLinksToHide = useSelector(answeredQuestionsSelector) const dispatch = useDispatch() + const { t } = useTranslation() + if (!quickLinks) { return } @@ -41,6 +43,9 @@ export default function QuickLinks() { key={dottedName} underline={dottedName === currentQuestion} onPress={() => dispatch(goToQuestion(dottedName))} + aria-label={t('{{question}}, aller à la question : {{question}}', { + question: label, + })} > {label} diff --git a/site/source/components/SelectSimulationYear.tsx b/site/source/components/SelectSimulationYear.tsx index 222ba6825..0bd1e80c1 100644 --- a/site/source/components/SelectSimulationYear.tsx +++ b/site/source/components/SelectSimulationYear.tsx @@ -1,5 +1,5 @@ import { useContext } from 'react' -import { Trans, useTranslation } from 'react-i18next' +import { Trans } from 'react-i18next' import { useDispatch } from 'react-redux' import { Link as DesignSystemLink } from '@/design-system/typography/link' import { EngineContext } from '@/components/utils/EngineContext' @@ -14,7 +14,6 @@ const Bold = styled.span<{ bold: boolean }>` export const SelectSimulationYear = () => { const dispatch = useDispatch() - const { t } = useTranslation() const year = useContext(EngineContext).evaluate('date') const choices = [2021, 2022] @@ -38,10 +37,6 @@ export const SelectSimulationYear = () => { onPress={() => dispatch(updateSituation('date', `01/01/${year}`)) } - title={t( - 'pages.simulateurs.select-year.click-to-change-year', - "Cliquez pour changer d'année" - )} > {actualYear === 2022 ? ( diff --git a/site/source/components/SimulateurWarning.tsx b/site/source/components/SimulateurWarning.tsx index 6198c6c9a..4e52b9887 100644 --- a/site/source/components/SimulateurWarning.tsx +++ b/site/source/components/SimulateurWarning.tsx @@ -44,7 +44,10 @@ export default function SimulateurWarning({ entreprise (CFE) qui est dûe dès la deuxième année d'exercice. Son montant varie fortement en fonction du chiffre d'affaires et de la domiciliation de l'entreprise.{' '} - + Plus d'infos. diff --git a/site/source/components/Simulation/SimulationGoals.tsx b/site/source/components/Simulation/SimulationGoals.tsx index 3dbdb7f55..d8436eb2c 100644 --- a/site/source/components/Simulation/SimulationGoals.tsx +++ b/site/source/components/Simulation/SimulationGoals.tsx @@ -2,6 +2,7 @@ import { Grid } from '@/design-system/layout' import { Link } from '@/design-system/typography/link' import { firstStepCompletedSelector } from '@/selectors/simulationSelectors' import React from 'react' +import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled, { css, ThemeProvider } from 'styled-components' import { Logo } from '../Logo' @@ -89,6 +90,8 @@ const StyledSimulationGoals = styled.div< function TopSection({ toggles }: { toggles?: React.ReactNode }) { const inIframe = useIsEmbedded() + const { t } = useTranslation() + return (
{inIframe && ( @@ -103,6 +106,7 @@ function TopSection({ toggles }: { toggles?: React.ReactNode }) { href={import.meta.env.VITE_FR_BASE_URL} target="_blank" rel="noreferrer" + aria-label={t("Accéder à la page d'accueil, nouvelle fenêtre")} > diff --git a/site/source/components/Simulation/index.tsx b/site/source/components/Simulation/index.tsx index 74e55a6c6..6a0af28cd 100644 --- a/site/source/components/Simulation/index.tsx +++ b/site/source/components/Simulation/index.tsx @@ -9,7 +9,7 @@ import { firstStepCompletedSelector, } from '@/selectors/simulationSelectors' import React from 'react' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' import { TrackPage } from '../../ATInternetTracking' @@ -54,6 +54,7 @@ export default function Simulation({ const existingCompany = !!useSelector(companySituationSelector)[ 'entreprise . SIREN' ] + const { t } = useTranslation() return ( <> diff --git a/site/source/components/conversation/AnswerList.tsx b/site/source/components/conversation/AnswerList.tsx index afb919bc4..4aa3341c9 100644 --- a/site/source/components/conversation/AnswerList.tsx +++ b/site/source/components/conversation/AnswerList.tsx @@ -134,6 +134,10 @@ export default function AnswerList({ onClose, children }: AnswerListProps) { 'Retrouvez toutes les informations publiques concernant votre entreprise sur' )}{' '} Annuaire des Entreprises. @@ -177,6 +181,8 @@ function StepsTable({ rules: Array onClose: () => void }) { + const { t } = useTranslation() + return ( <> {rules @@ -185,7 +191,11 @@ function StepsTable({ {rule.title} - + @@ -200,6 +210,8 @@ function AnswerElement(rule: EvaluatedRule) { const dispatch = useDispatch() const engine = useEngine() + const { t } = useTranslation() + const parentDottedName = utils.ruleParent(rule.dottedName) as DottedName const questionDottedName = rule.rawNode.question ? rule.dottedName @@ -218,7 +230,7 @@ function AnswerElement(rule: EvaluatedRule) { ( - + {' '} @@ -231,7 +243,11 @@ function AnswerElement(rule: EvaluatedRule) {

{evaluateQuestion(engine, engine.getRule(questionDottedName))} - +

{ if (currentQuestion) { dispatch(goToQuestion(currentQuestion)) @@ -100,7 +101,7 @@ export default function Conversation({

{evaluateQuestion(engine, engine.getRule(currentQuestion))} diff --git a/site/source/components/layout/Footer/Footer.tsx b/site/source/components/layout/Footer/Footer.tsx index 31e290b9e..41a12d44a 100644 --- a/site/source/components/layout/Footer/Footer.tsx +++ b/site/source/components/layout/Footer/Footer.tsx @@ -19,7 +19,8 @@ const hrefLangLink = alternateLinks() export default function Footer() { const { absoluteSitePaths } = useSitePaths() const showFeedback = useShowFeedback() - const language = useTranslation().i18n.language as 'fr' | 'en' + const { t, i18n } = useTranslation() + const language = i18n.language as 'fr' | 'en' const currentEnv = import.meta.env.MODE const encodedUri = @@ -55,8 +56,15 @@ export default function Footer() { {language === 'en' && ( This website is provided by the{' '} - Urssaf, the French - social security contributions collector. + + Urssaf + + , the French social security contributions collector. )} @@ -127,7 +135,13 @@ export default function Footer() { {language === 'fr' && (
  • - + Accessibilité : non conforme diff --git a/site/source/components/layout/Footer/Privacy.tsx b/site/source/components/layout/Footer/Privacy.tsx index d574ce023..04e1d46a2 100644 --- a/site/source/components/layout/Footer/Privacy.tsx +++ b/site/source/components/layout/Footer/Privacy.tsx @@ -41,9 +41,15 @@ export default function Privacy({ label }: { label?: string }) { Nous recueillons des statistiques anonymes sur l'utilisation du site, que nous utilisons dans le seul but d'améliorer le service, conformément aux{' '} - + recommandations de la CNIL - {' '} + {' '} et au règlement RGPD. Ce sont les seules données qui quittent votre navigateur. @@ -76,7 +82,13 @@ export default function Privacy({ label }: { label?: string }) { afin que vous puissiez facilement les retrouver lors d'une prochaine visite sur le site. Si vous ne souhaitez pas que ce soit le cas, nous vous conseillons d'utiliser la{' '} - + navigation privée . diff --git a/site/source/components/layout/Header.tsx b/site/source/components/layout/Header.tsx index 6c637cd94..ae007908c 100644 --- a/site/source/components/layout/Header.tsx +++ b/site/source/components/layout/Header.tsx @@ -12,12 +12,16 @@ export default function Header() { const { absoluteSitePaths } = useSitePaths() const { i18n: { language }, + t, } = useTranslation() return ( - + diff --git a/site/source/components/layout/NewsBanner.tsx b/site/source/components/layout/NewsBanner.tsx index 53bdb0242..540d81bce 100644 --- a/site/source/components/layout/NewsBanner.tsx +++ b/site/source/components/layout/NewsBanner.tsx @@ -53,7 +53,13 @@ function NewsBanner({ lastRelease }: { lastRelease: LastRelease }) { Découvrez les nouveautés{' '} {determinant(lastRelease.name)} - + {lastRelease.name.toLowerCase()} diff --git a/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx b/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx index bc5106def..bcb7a699b 100644 --- a/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx +++ b/site/source/components/simulationExplanation/InstitutionsPartenaires.tsx @@ -49,6 +49,7 @@ export default function InstitutionsPartenaires() { href="https://www.ameli.fr/assure/droits-demarches/salaries-travailleurs-independants-et-personnes-sans-emploi/emploi-independant-non-salarie/praticien-auxiliaire-medical" target="_blank" rel="noreferrer" + aria-label="Logo CPAM, accéder à ameli.fr, nouvelle fenêtre" > Logo CPAM @@ -105,6 +106,7 @@ export function CotisationsUrssaf({ href="https://www.urssaf.fr/portail/home.html" target="_blank" rel="noreferrer" + aria-label="Logo URSSAF, accéder à urssaf.fr, nouvelle fenêtre" > Logo Urssaf @@ -131,6 +133,7 @@ export function ImpôtsDGFIP() { href="https://www.impots.gouv.fr" target="_blank" rel="noreferrer" + aria-label="Logo DGFiP, accéder à impots.gouv.fr, nouvelle fenêtre" > Logo DGFiP @@ -240,6 +243,7 @@ export function InstitutionsPartenairesArtisteAuteur() { href="http://www.ircec.fr/" target="_blank" rel="noreferrer" + aria-label="Logo IRCEC, accéder à ircec.fr, nouvelle fenêtre" > Logo IRCEC diff --git a/site/source/components/simulationExplanation/SalaryExplanation.tsx b/site/source/components/simulationExplanation/SalaryExplanation.tsx index 653474902..03fda3ca4 100644 --- a/site/source/components/simulationExplanation/SalaryExplanation.tsx +++ b/site/source/components/simulationExplanation/SalaryExplanation.tsx @@ -16,6 +16,8 @@ import { ThemeContext } from 'styled-components' export default function SalaryExplanation() { const payslipRef = useRef(null) + const { t } = useTranslation() + if (useInversionFail()) { return null } @@ -59,7 +61,10 @@ export default function SalaryExplanation() { Le simulateur vous aide à comprendre votre bulletin de paie, sans lui être opposable. Pour plus d'informations, rendez vous sur  - + service-public.fr . @@ -70,11 +75,17 @@ export default function SalaryExplanation() { Il ne prend pour l'instant pas en compte les accords et conventions collectives, ni la myriade d'aides aux entreprises. Trouvez votre convention collective{' '} - + ici , et explorez les aides sur  - + aides-entreprises.fr . @@ -147,7 +158,10 @@ export const DistributionSection = ({ Pour en savoir plus, rendez-vous sur le site{' '} - + aquoiserventlescotisations.urssaf.fr diff --git a/site/source/design-system/message/index.tsx b/site/source/design-system/message/index.tsx index ff827d611..e1b08dc1c 100644 --- a/site/source/design-system/message/index.tsx +++ b/site/source/design-system/message/index.tsx @@ -36,7 +36,6 @@ export function Message({ type={type} border={border} light={light} - role="alert" aria-atomic > {icon && diff --git a/site/source/design-system/typography/link.tsx b/site/source/design-system/typography/link.tsx index b3c15fd80..9e6ae692c 100644 --- a/site/source/design-system/typography/link.tsx +++ b/site/source/design-system/typography/link.tsx @@ -8,7 +8,6 @@ import React, { useCallback, useRef, } from 'react' -import { useTranslation } from 'react-i18next' import { NavLink } from 'react-router-dom' import styled, { css } from 'styled-components' @@ -79,17 +78,14 @@ export const Link = React.forwardRef< }) export function useExternalLinkProps({ - title, href, children, openInSameWindow, }: { - title?: string | null href?: string children?: React.ReactNode openInSameWindow?: true }) { - const { t } = useTranslation() if ( openInSameWindow || !href || @@ -99,7 +95,6 @@ export function useExternalLinkProps({ } return { - title: (title ? `${title} - ` : '') + t('Nouvelle fenêtre'), target: '_blank', rel: 'noreferrer', external: true, diff --git a/site/source/iframe-integration-script.js b/site/source/iframe-integration-script.js index 78b8e4c26..a4aa3953f 100644 --- a/site/source/iframe-integration-script.js +++ b/site/source/iframe-integration-script.js @@ -73,7 +73,7 @@ const simulateurURL = url.toString() links.innerHTML = `
    Retrouvez ce simulateur et bien d'autres sur - + mon-entreprise.urssaf.fr
    diff --git a/site/source/locales/ui-en.yaml b/site/source/locales/ui-en.yaml index 4c9ae30e5..e5aae2b1d 100644 --- a/site/source/locales/ui-en.yaml +++ b/site/source/locales/ui-en.yaml @@ -383,9 +383,9 @@ assistant-DRI: below." nombre-déclarations: This is your {{nthDeclaration}} tax return since the creation of your company. - intro: <0><0>We propose you a help to fill in the income from your professional + intro: <0><0>We offer you a help to fill in the income from your professional activity in your <2>income tax return of 2021 on - <5>impot.gouv.fr.<7><1>Answer these few questions, at the end + <5>impots.gouv.fr.<7><1>Answer these few questions, at the end you will have :<2><0>The forms that concern you<1>The list of the boxes that concern you with the amount to be filled<2>An estimate of the social security contributions to be paid to the Urssaf in 2022 @@ -394,7 +394,7 @@ assistant-DRI: know the <2>amount of social security contributions to be paid in 2022<1>This tool is <1>100% confidential: all the information you enter will remain in your browser.<2>To make your income tax return, - you will have to connect to <2>impot.gouv.fr." + you will have to connect to <2>impots.gouv.fr." associés: choix1: Alone choix2: Several partners @@ -626,22 +626,28 @@ déplier: show more dû par: owed by d’aides: aids embauche: + cesuAriaLabel: chèque emploi associatif (CEA), see more information on + cesu.urssaf.fr, new window chaque mois: > <0>Then each month <1> <0>Compute the individual social contributions (using the chosen payslip software) <1>Declare the contributions through the DSN, the new online declaration system <2>Deliver the standardised payslip to your employee <2>Get an example payslip + teseAriaLabel: titre emploi service entreprise (Tese), see more information on + letese.urssaf.fr, new window tâches: contrat: titre: Sign an employment contract with your employee description: All the necessary steps to hire your first employee. dpae: + ariaLabel: be done online, access the URSSAF website, new window description: > This can be done through the form called DPAE, must be completed within 8 days before any hiring, and can <2>be done online (Fr) titre: Declare your hiring t o the social administration logiciel de paie: + ariaLabel: private payroll software, see examples on dsn-info.fr, new window description: > With fewer than 20 employees, payslips and declarations can be handled online by the <2> Tese (Fr), a tool developped by the french @@ -655,6 +661,7 @@ embauche: description: All the necessary steps to hire your first employee in France. titre: The formalities for hiring pension: + aria-label: Find my pension fund, new window description: Find your pension institute (Fr) titre: Contact the compulsory supplementary pension institution assigned to you prévoyance . santé: @@ -761,6 +768,7 @@ entreprise: deposit of capital. titre: Deposit capital funds comptable: + ariaLabel: "" description: Managing a company brings a number of <1>accounting obligations. It is advisable to call in a competent person or use a website that can handle accounting for you. @@ -820,6 +828,7 @@ entreprise: main activity run. A secondary activity can be registered. titre: Write the corporate purpose of the company statuts: + aria-label: Status examples for your {{status}}, new window description: The company's articles of association ( "les statuts"), is an official document written in French, describing the status choice, naming the associate(s) and the contributed capital. <2>For more than @@ -862,6 +871,7 @@ feedback: fieldRequired: Required field footer: accessibilité: "Accessibility: not compliant" + accessibilitéAriaLabel: "Accessibility : not compliant, learn more" formeJuridique: EI: Also called company in own name or company in a personal name. No capital contribution is necessary. Private wealth and corporate wealth are one. @@ -973,6 +983,7 @@ gérer: minoritaire: Minority director ressources: annuaire-entreprises: + aria-label: Company Directory, new window body: Find all public information about your company on cta: Visit the site title: See your public data @@ -1231,9 +1242,9 @@ pages: cta: Discover title: Publicodes code: + copy-code: Copy the code description: "Here is the code to copy and paste on your site:" titre: Integration Code - copy-code: Copy the code components: CasParticuliers: '<0>Learn more about...<1><0>How to make a simulation in the past?<1>Since the end of 2021, the calculation rules of the @@ -1288,6 +1299,7 @@ pages: "Net salary" in the simulator, or by searching for "Net salary" in the search box at the top right. couleur: "What color? " + doc: "" home: choice: api: @@ -1906,6 +1918,10 @@ privacyContent: you can easily retrieve it the next time you visit the site. If you do not wish this to be the case, we advise you to use <2>private browsing. ok: Your preferences have been saved + privateNavAriaLabel: private navigation, see more information on this subject on + the CNIL website, new window + recommandationsAriaLabel: recommendations of the CNIL, see more information on + this subject on the CNIL website, new window texte: <0><1>We collect anonymous statistics on the use of the site, which we use for the sole purpose of improving the service, in accordance with the <2>recommendations of the CNIL and the RGPD regulation. This is the only diff --git a/site/source/locales/ui-fr.yaml b/site/source/locales/ui-fr.yaml index 121bdc368..99bfd482b 100644 --- a/site/source/locales/ui-fr.yaml +++ b/site/source/locales/ui-fr.yaml @@ -275,7 +275,7 @@ assistant-DRI: la création de votre entreprise. intro: <0><0>Nous vous proposons une aide pour remplir les revenus issus de votre activité professionnelle dans votre <2>déclaration des revenu de - 2021 sur <5>impot.gouv.fr.<7><1>Répondez à ces quelques + 2021 sur <5>impots.gouv.fr.<7><1>Répondez à ces quelques questions, à la fin vous aurez :<2><0>Les formulaires qui vous concernent<1>La liste des cases qui vous concernent avec le montant à remplir<2>Une estimation des cotisations sociales à payer à l'Urssaf en @@ -286,7 +286,7 @@ assistant-DRI: payer en 2022<1>Cet outil est <1>100 % confidentiel : toutes les informations que vous renseignez resteront dans votre navigateur.<2>Pour faire votre déclaration de revenu, il faudra vous connecter sur - <2>impot.gouv.fr." + <2>impots.gouv.fr." associés: choix1: Seul choix2: Plusieurs personnes @@ -437,22 +437,29 @@ domiciliation inconnue: domiciliation inconnue domiciliée à: domiciliée à d’aides: d’aides embauche: + cesuAriaLabel: chèque emploi associatif (CEA), voir plus d'informations sur + cesu.urssaf.fr, nouvelle fenêtre chaque mois: <0>Tous les mois<1><0>Utiliser un logiciel de paie pour calculer les cotisations sociales et les transmettre via la déclaration sociale nominative (DSN).<1>Certaines offres de service de l’Urssaf comme le <4>titre emploi service entreprise (Tese) ou le <8>chèque emploi associatif (CEA) gèrent automatiquement la transmission de la DSN pour vous.<1>Remettre la fiche de paie à votre employé + teseAriaLabel: titre emploi service entreprise (Tese), voir plus d'informations + sur letese.urssaf.fr, nouvelle fenêtre tâches: contrat: titre: Signer un contrat de travail avec votre employé description: Toutes les étapes nécessaires à l'embauche de votre premier employé. dpae: + ariaLabel: être effectué en ligne, accéder au site de l'URSSAF, nouvelle fenêtre description: Ceci peut être fait par le biais du formulaire appelé DPAE, doit être complété dans les 8 jours avant toute embauche, et peut <2>être effectué en ligne. titre: Déclarer l'embauche à l'administration sociale logiciel de paie: + ariaLabel: logiciel de paie privé, voir des exemples sur dsn-info.fr, nouvelle + fenêtre description: Les fiches de paie et les déclarations peuvent être traitées en ligne gratuitement par le <2>Tese. Vous pouvez aussi utiliser un <5>logiciel de paie privé. @@ -465,6 +472,7 @@ embauche: description: Toutes les démarches nécessaires à l'embauche de votre premier salarié. titre: Les formalités pour embaucher pension: + aria-label: Trouver mon institution de prévoyance, nouvelle fenêtre description: Trouver mon institution de prévoyance titre: Prendre contact avec l'institution de prévoyance complémentaire obligatoire qui vous est assignée @@ -557,6 +565,7 @@ entreprise: capital. titre: Déposer le capital comptable: + ariaLabel: obligations comptables, voir le détail sur economie.gouv.fr description: La gestion d'une entreprise impose un certain nombre d'<1>obligations comptables. Il est conseillé de faire appel aux services d'un expert-comptable ou d'un logiciel de comptabilité en @@ -596,6 +605,7 @@ entreprise: Une activité secondaire peut être enregistrée. titre: Déterminer l'objet social statuts: + aria-label: Exemples de status pour votre {{statut}}, nouvelle fenêtre description: Il s'agit d'un document officiel qui intègre la forme juridique, nomme les associés et leurs contributions au capital. <2>Dans le cas d'une création d'entreprise avec plusieurs associés, il est recommandé @@ -628,6 +638,7 @@ feedback: fieldRequired: Champ requis footer: accessibilité: "Accessibilité : non conforme" + accessibilitéAriaLabel: "Accessibilité : non conforme, en savoir plus" formeJuridique: EI: Aucun apport en capital n'est nécessaire. Le capital privé et le capital de l'entreprise ne font qu'un. @@ -747,6 +758,7 @@ gérer: minoritaire: Dirigeant minoritaire ressources: annuaire-entreprises: + aria-label: Annuaire des Entreprises, nouvelle fenêtre body: Retrouvez toutes les informations publiques concernant votre entreprise sur cta: Visiter le site @@ -994,9 +1006,9 @@ pages: cta: Découvrir title: Publicodes code: + copy-code: Copier le code description: "Voici le code à copier-coller sur votre site :" titre: Code d'intégration - copy-code: Copier le code components: CasParticuliers: "<0>En savoir plus sur...<1><0>Comment faire une simulation dans le passé ?<1>Depuis fin 2021, les règles de calculs des @@ -1054,6 +1066,7 @@ pages: en cliquant sur « Salaire net » dans le simulateur, ou en recherchant « Salaire net » dans la recherche en haut à droite. couleur: "Quelle couleur ? " + doc: documentation en ligne, voir la documentation en ligne home: choice: api: @@ -1576,6 +1589,10 @@ privacyContent: prochaine visite sur le site. Si vous ne souhaitez pas que ce soit le cas, nous vous conseillons d'utiliser la <2>navigation privée. ok: Vos préférences ont bien été enregistrées + privateNavAriaLabel: navigation privée, voir plus d'informations à ce sujet sur + le site de la CNIL, nouvelle fenêtre + recommandationsAriaLabel: recommandations de la CNIL, voir plus d'informations à + ce sujet sur le site de la CNIL, nouvelle fenêtre texte: <0><1>Nous recueillons des statistiques anonymes sur l'utilisation du site, que nous utilisons dans le seul but d'améliorer le service, conformément aux <2>recommandations de la CNIL et au règlement RGPD. Ce diff --git a/site/source/pages/Accessibilité.tsx b/site/source/pages/Accessibilité.tsx index c3a698169..1d2fa6fe6 100644 --- a/site/source/pages/Accessibilité.tsx +++ b/site/source/pages/Accessibilité.tsx @@ -60,7 +60,7 @@ export default function Accessibilité() { href="https://www.acoss.fr/files/RGAA/accessibilite_numerique-schema_pluriannuel_2020_2022-Acoss.pdf" target="_blank" rel="noreferrer" - title="La stratégie et le plan d’action à mettre en œuvre - Nouvelle fenêtre" + aria-label="la stratégie et le plan d’action à mettre en œuvre, en savoir plus, nouvelle fenêtre" > la stratégie et le plan d’action à mettre en œuvre @@ -68,14 +68,20 @@ export default function Accessibilité() { Cette déclaration d’accessibilité s’applique à{' '} - + https://mon-entreprise.urssaf.fr .

    État de conformité

    - + https://mon-entreprise.urssaf.fr {' '} n’est actuellement pas en conformité avec le{' '} @@ -83,7 +89,7 @@ export default function Accessibilité() { href="https://numerique.gouv.fr/publications/rgaa-accessibilite/" target="_blank" rel="noreferrer" - title="Référentiel général d’amélioration de l’accessibilité (RGAA) - Nouvelle fenêtre" + aria-label="Référentiel général d’amélioration de l’accessibilité (RGAA), en savoir plus, nouvelle fenêtre" > référentiel général d’amélioration de l’accessibilité (RGAA) @@ -126,7 +132,7 @@ export default function Accessibilité() { href="https://formulaire.defenseurdesdroits.fr/" target="_blank" rel="noreferrer" - title="https://formulaire.defenseurdesdroits.fr/ - Nouvelle fenêtre" + aria-label="https://formulaire.defenseurdesdroits.fr/, nouvelle fenêtre" > https://formulaire.defenseurdesdroits.fr/ @@ -138,7 +144,7 @@ export default function Accessibilité() { href="https://www.defenseurdesdroits.fr/saisir/delegues" target="_blank" rel="noreferrer" - title="https://www.defenseurdesdroits.fr/saisir/delegues - Nouvelle fenêtre" + aria-label="https://www.defenseurdesdroits.fr/saisir/delegues, nouvelle fenêtre" > https://www.defenseurdesdroits.fr/saisir/delegues diff --git a/site/source/pages/Creer/AfterRegistration.tsx b/site/source/pages/Creer/AfterRegistration.tsx index c671b7c71..21446a786 100644 --- a/site/source/pages/Creer/AfterRegistration.tsx +++ b/site/source/pages/Creer/AfterRegistration.tsx @@ -61,7 +61,10 @@ export default function AfterRegistration() { Le code APE correspond au secteur d'activité de votre entreprise. Il classifie la branche principale de votre entreprise dans la nomenclature nationale d'activités françaises « NAF » ( - + voir la liste ).{' '} @@ -78,7 +81,10 @@ export default function AfterRegistration() {

    En cas de code APE erroné, vous pouvez{' '} - + demander une modification {' '} à l'INSEE. @@ -94,7 +100,10 @@ export default function AfterRegistration() { l'existence légale d'une entreprise commerciale. Le plus souvent, pour être valable par les procédures administratives, il doit dater de moins de 3 mois.{' '} - + Plus d'infos. diff --git a/site/source/pages/Creer/CreationChecklist.tsx b/site/source/pages/Creer/CreationChecklist.tsx index e99759f86..09e381f97 100644 --- a/site/source/pages/Creer/CreationChecklist.tsx +++ b/site/source/pages/Creer/CreationChecklist.tsx @@ -148,7 +148,13 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { par une marque, une raison sociale, un nom commercial, un nom de domaine Internet, etc. Vous pouvez vérifier dans la base de données{' '} - INPI. + + INPI + + . } @@ -185,7 +191,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { entreprise sera incorporée. Dans certains lieux et certaines situations, vous pouvez bénéficier d'un financement public important (exonération de charges, de taxes, etc.).{' '} - + Plus d'infos @@ -270,7 +279,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { Le dépôt consiste en un transfert d'une somme d'argent sur un compte bloqué auprès d'une banque ou de la{' '} - + Caisse des dépôts et consignations {' '} ou d'un notaire, qui doit alors fournir un certificat de dépôt @@ -306,7 +318,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { les 30 000 €. - + Plus d'informations @@ -330,7 +345,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { pratiqués par le journal choisi{' '} - + Trouver un journal d'annonces légales (JAL) @@ -404,7 +422,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { La gestion d'une entreprise impose un certain nombre d' - + obligations comptables . Il est conseillé de faire appel aux services d'un @@ -431,7 +452,10 @@ export default function CreateCompany({ statut }: CreateCompanyProps) { ainsi qu'en matière de responsabilité civile de l'entreprise et de ses dirigeants ou en matière de perte d'exploitation. - + Plus d'infos @@ -581,6 +605,7 @@ type StatutsExampleProps = { } const StatutsExample = ({ statut }: StatutsExampleProps) => { + const { t } = useTranslation() const links = { SARL: 'https://bpifrance-creation.fr/file/109068/download?token=rmc93Ve3', EURL: 'https://bpifrance-creation.fr/file/109070/download?token=Ul-rT6Z0', @@ -591,7 +616,14 @@ const StatutsExample = ({ statut }: StatutsExampleProps) => { } return ( - + Exemple de statuts pour votre {' '} diff --git a/site/source/pages/Creer/GuideStatut/AutoEntrepreneur.tsx b/site/source/pages/Creer/GuideStatut/AutoEntrepreneur.tsx index ed9615fa3..fdeab482b 100644 --- a/site/source/pages/Creer/GuideStatut/AutoEntrepreneur.tsx +++ b/site/source/pages/Creer/GuideStatut/AutoEntrepreneur.tsx @@ -37,13 +37,19 @@ export default function Autoentrepreneur() { Note : Certaines activités sont exclues de ce statut ( - + {' '} voir la liste ). Certaines activités sont réglementées avec une qualification ou une expérience professionnelle ( - + voir la liste ). diff --git a/site/source/pages/Creer/GuideStatut/PreviousAnswers.tsx b/site/source/pages/Creer/GuideStatut/PreviousAnswers.tsx index 7a69ef405..210c53fca 100644 --- a/site/source/pages/Creer/GuideStatut/PreviousAnswers.tsx +++ b/site/source/pages/Creer/GuideStatut/PreviousAnswers.tsx @@ -2,10 +2,16 @@ import { Link } from '@/design-system/typography/link' import { RootState } from '@/reducers/rootReducer' import { useSitePaths } from '@/sitePaths' import { LegalStatusRequirements } from '@/types/companyTypes' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' +interface RequirementToTextType { + props: { + children: string + } +} + const requirementToText = ( key: keyof LegalStatusRequirements, value: string @@ -67,14 +73,22 @@ export default function PreviousAnswers() { const legalStatus = useSelector( (state: RootState) => state.choixStatutJuridique.companyLegalStatus ) + + const { t } = useTranslation() + if (Object.values(legalStatus).length < 1) { return null } return ( - {Object.entries(legalStatus).map( - ([key, value]) => + {Object.entries(legalStatus).map(([key, value]) => { + const textObject = requirementToText( + key as any, + value as any + ) as RequirementToTextType + + return ( value !== undefined && ( - {requirementToText(key as any, value as any)} + {textObject} ) - )} + ) + })} ) } diff --git a/site/source/pages/Landing/Landing.tsx b/site/source/pages/Landing/Landing.tsx index 6a34b63b0..6719853ac 100644 --- a/site/source/pages/Landing/Landing.tsx +++ b/site/source/pages/Landing/Landing.tsx @@ -126,7 +126,7 @@ export default function Landing() { Nous sommes une petite{' '} équipe @@ -134,7 +134,7 @@ export default function Landing() { autonome et pluridisciplinaire au sein de{' '} l’Urssaf @@ -142,7 +142,7 @@ export default function Landing() { d’améliorer en permanence ce site conformément à l'approche{' '} beta.gouv.fr diff --git a/site/source/pages/Nouveautes/Nouveautes.tsx b/site/source/pages/Nouveautes/Nouveautes.tsx index bcb4a9688..ca80918d8 100644 --- a/site/source/pages/Nouveautes/Nouveautes.tsx +++ b/site/source/pages/Nouveautes/Nouveautes.tsx @@ -15,6 +15,7 @@ import { Body } from '@/design-system/typography/paragraphs' import { useFetchData } from '@/hooks/useFetchData' import { useSitePaths } from '@/sitePaths' import { useMemo } from 'react' +import { useTranslation } from 'react-i18next' import { Navigate, useMatch, useNavigate } from 'react-router-dom' import styled from 'styled-components' import { TrackPage } from '../../ATInternetTracking' @@ -30,6 +31,8 @@ export default function Nouveautés() { const slug = useMatch(`${absoluteSitePaths.nouveautés}/:slug`)?.params?.slug useHideNewsBanner() + const { t } = useTranslation() + const releasesWithId = useMemo( () => (data && data.map((v, id) => ({ ...v, id }))) ?? [], [data] @@ -67,7 +70,9 @@ export default function Nouveautés() { Nous améliorons le site en continu à partir de{' '} vos retours diff --git a/site/source/pages/Simulateurs/EconomieCollaborative/VotreSituation.tsx b/site/source/pages/Simulateurs/EconomieCollaborative/VotreSituation.tsx index 0aa6145da..4fe2d24de 100644 --- a/site/source/pages/Simulateurs/EconomieCollaborative/VotreSituation.tsx +++ b/site/source/pages/Simulateurs/EconomieCollaborative/VotreSituation.tsx @@ -114,7 +114,10 @@ export default function VotreSituation() { Pour ces activités, vous avez uniquement besoin de déclarer vos revenus sur votre feuille d'imposition. Pour en savoir plus, vous pouvez consulter la{' '} - + page dédiée sur impots.gouv.fr . diff --git a/site/source/pages/Simulateurs/ExonerationCovid/ExonérationCovid.tsx b/site/source/pages/Simulateurs/ExonerationCovid/ExonérationCovid.tsx index 2a16ce7fd..59c61ba8d 100644 --- a/site/source/pages/Simulateurs/ExonerationCovid/ExonérationCovid.tsx +++ b/site/source/pages/Simulateurs/ExonerationCovid/ExonérationCovid.tsx @@ -11,7 +11,7 @@ import { H3 } from '@/design-system/typography/heading' import { DottedName as ExoCovidDottedNames } from 'exoneration-covid' import { PublicodesExpression } from 'publicodes' import { useCallback, useEffect } from 'react' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { createSearchParams, useLocation, @@ -34,6 +34,8 @@ export const ExonérationCovid = () => { [key in typeof rootDottedNames[number]]?: string } + const { t } = useTranslation() + useEffect(() => { window.scrollTo(0, 0) }, [location]) @@ -81,7 +83,11 @@ export const ExonérationCovid = () => {

    {engine.getRule('secteur').rawNode.question} - +

    diff --git a/site/source/pages/Simulateurs/ExonerationCovid/FormulaireS1S1Bis.tsx b/site/source/pages/Simulateurs/ExonerationCovid/FormulaireS1S1Bis.tsx index 1d254fdfd..e1f88d157 100644 --- a/site/source/pages/Simulateurs/ExonerationCovid/FormulaireS1S1Bis.tsx +++ b/site/source/pages/Simulateurs/ExonerationCovid/FormulaireS1S1Bis.tsx @@ -90,7 +90,12 @@ export const FormulaireS1S1Bis = ({ onChange }: Props) => { <>

    {engine.getRule('secteur . S1 ou S1bis').rawNode.question} - +

    diff --git a/site/source/pages/Simulateurs/metadata.tsx b/site/source/pages/Simulateurs/metadata.tsx index f019ccbe7..c314a7dc5 100644 --- a/site/source/pages/Simulateurs/metadata.tsx +++ b/site/source/pages/Simulateurs/metadata.tsx @@ -130,7 +130,10 @@ function getSimulatorsData({ t, sitePaths, language }: SimulatorsDataParams) { {' '} à l'embauche qui ne sont pas toutes prises en compte par notre simulateur, vous pouvez les retrouver sur{' '} - + le portail officiel . @@ -669,7 +672,7 @@ function getSimulatorsData({ t, sitePaths, language }: SimulatorsDataParams) { certains critères diff --git a/site/source/pages/Stats/DemandesUtilisateurs.tsx b/site/source/pages/Stats/DemandesUtilisateurs.tsx index e034ae5de..aa2eb82c8 100644 --- a/site/source/pages/Stats/DemandesUtilisateurs.tsx +++ b/site/source/pages/Stats/DemandesUtilisateurs.tsx @@ -4,11 +4,13 @@ import { Li, Ul } from '@/design-system/typography/list' import { Body } from '@/design-system/typography/paragraphs' import { useFetchData } from '@/hooks/useFetchData' import { useState } from 'react' +import { useTranslation } from 'react-i18next' import styled from 'styled-components' import { StatsStruct } from './types' export default function DemandeUtilisateurs() { const { data: stats } = useFetchData('/data/stats.json') + const { t } = useTranslation() return (
    @@ -19,6 +21,9 @@ export default function DemandeUtilisateurs() { Comment ça marche ? @@ -70,11 +75,16 @@ function Pagination({ items }: PaginationProps) { } function Issue({ title, number, count, closedAt }: IssueProps) { + const { t } = useTranslation() + return (
  • {count > 1 && {count} demandes}{' '} {title} {' '} diff --git a/site/source/pages/gerer/_components/Fields.tsx b/site/source/pages/gerer/_components/Fields.tsx index eb220e4d6..32060f7e6 100644 --- a/site/source/pages/gerer/_components/Fields.tsx +++ b/site/source/pages/gerer/_components/Fields.tsx @@ -17,6 +17,7 @@ import { useSSRSafeId } from '@react-aria/ssr' import { DottedName } from 'modele-social' import { RuleNode } from 'publicodes' import { useCallback, useContext } from 'react' +import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import styled from 'styled-components' @@ -92,6 +93,8 @@ export function SimpleField({ [dispatch] ) + const { t } = useTranslation() + let displayedQuestion = question ?? evaluateQuestion(engine, engine.getRule(dottedName)) @@ -120,7 +123,10 @@ export function SimpleField({ {displayedQuestion ? ( {displayedQuestion} - + ) : ( diff --git a/site/source/pages/gerer/declaration-charges-sociales-independant/_components/RésultatSimple.tsx b/site/source/pages/gerer/declaration-charges-sociales-independant/_components/RésultatSimple.tsx index df35df5c9..046f7448e 100644 --- a/site/source/pages/gerer/declaration-charges-sociales-independant/_components/RésultatSimple.tsx +++ b/site/source/pages/gerer/declaration-charges-sociales-independant/_components/RésultatSimple.tsx @@ -10,10 +10,11 @@ import { H2, H3 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' import { Body, Intro } from '@/design-system/typography/paragraphs' import { utils } from 'publicodes' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' export default function ResultatsSimples() { const engine = useEngine() + const { t } = useTranslation() return ( <> @@ -39,6 +40,9 @@ export default function ResultatsSimples() { href="https://www.impots.gouv.fr/portail/www2/minisite/declaration/independants.html?11" target="_blank" rel="noreferrer" + aria-label={t( + 'En savoir plus sur impots.gouv.fr, nouvelle fenêtre' + )} > En savoir plus diff --git a/site/source/pages/gerer/declaration-revenu-independants/_components/DéclarationRevenu.tsx b/site/source/pages/gerer/declaration-revenu-independants/_components/DéclarationRevenu.tsx index 6a7127e0e..5e61e4703 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/_components/DéclarationRevenu.tsx +++ b/site/source/pages/gerer/declaration-revenu-independants/_components/DéclarationRevenu.tsx @@ -17,6 +17,7 @@ import { getMeta } from '@/utils' import { DottedName } from 'modele-social' import { Rule, RuleNode } from 'publicodes' import { Fragment, useCallback } from 'react' +import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import styled, { css } from 'styled-components' import { SimpleField } from '../../_components/Fields' @@ -33,6 +34,8 @@ const RuleInputWithTitle = ({ }) => { const dispatch = useDispatch() + const { t } = useTranslation() + const dispatchValue = useCallback( (value, dottedName: DottedName) => { dispatch(updateSituation(dottedName, value)) @@ -49,7 +52,10 @@ const RuleInputWithTitle = ({ `} > {title} - + )} - impot.gouv.fr + impots.gouv.fr
  • diff --git a/site/source/pages/gerer/declaration-revenu-independants/entreprise.tsx b/site/source/pages/gerer/declaration-revenu-independants/entreprise.tsx index b0f46edbb..a23ec2652 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/entreprise.tsx +++ b/site/source/pages/gerer/declaration-revenu-independants/entreprise.tsx @@ -55,7 +55,12 @@ export default function Accueil() { Nous vous proposons une aide pour remplir les revenus issus de votre activité professionnelle dans votre{' '} déclaration des revenu de 2021 sur{' '} - impot.gouv.fr + + impots.gouv.fr + .
    Répondez à ces quelques questions, à la fin vous aurez : @@ -156,8 +161,11 @@ export default function Accueil() {
  • Pour faire votre déclaration de revenu, il faudra vous connecter sur{' '} - - impot.gouv.fr + + impots.gouv.fr .
  • diff --git a/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx b/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx index c9d210183..dff7fd05c 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx +++ b/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx @@ -191,7 +191,10 @@ export default function Imposition() { vous transmette à nouveau ces informations. - + Contacter le service des impôts @@ -314,8 +317,11 @@ function ResultSection() { C'est la déclaration de revenu qui est effectuée chaque année sur{' '} - - impot.gouv.fr + + impots.gouv.fr . Elle est utilisée pour calculer{' '} diff --git a/site/source/pages/gerer/declaration-revenu-independants/index.tsx b/site/source/pages/gerer/declaration-revenu-independants/index.tsx index dac13e225..46f24a979 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/index.tsx +++ b/site/source/pages/gerer/declaration-revenu-independants/index.tsx @@ -32,6 +32,7 @@ export default function AideDéclarationIndépendant() { .filter((step) => !step.isDisabled) .find((step) => step.progress !== 1) ?? steps.find((step) => !step.isDisabled) + const { t } = useTranslation() return ( <> @@ -57,7 +58,13 @@ export default function AideDéclarationIndépendant() {
    {steps.map((step) => ( - + ))}
    diff --git a/site/source/pages/gerer/embaucher.tsx b/site/source/pages/gerer/embaucher.tsx index ec97525cf..f8fc46d29 100644 --- a/site/source/pages/gerer/embaucher.tsx +++ b/site/source/pages/gerer/embaucher.tsx @@ -71,6 +71,7 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { href="https://www.service-public.fr/particuliers/vosdroits/N19871" target="_blank" rel="noreferrer" + aria-label="Plus d'informations sur service-public.fr, nouvelle fenêtre" > {' '} Plus d'informations @@ -93,6 +94,10 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { href="https://www.due.urssaf.fr" target="_blank" rel="noreferrer" + aria-label={t( + 'embauche.tâches.dpae.ariaLabel', + "être effectué en ligne, accéder au site de l'URSSAF, nouvelle fenêtre" + )} > être effectué en ligne
    @@ -124,6 +129,10 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { href="http://www.dsn-info.fr/convention-charte.htm" target="_blank" rel="noreferrer" + aria-label={t( + 'embauche.tâches.logiciel de paie.ariaLabel', + 'logiciel de paie privé, voir des exemples sur dsn-info.fr, nouvelle fenêtre' + )} > logiciel de paie privé. @@ -144,6 +153,9 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { className="ui__ button" target="_blank" rel="noreferrer" + aria-label={t( + "Plus d'informations sur service-public.fr, nouvelle fenêtre" + )} > Plus d'informations @@ -163,6 +175,10 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { className="ui__ button" target="_blank" rel="noreferrer" + aria-label={t( + 'embauche.tâches.pension.aria-label', + 'Trouver mon institution de prévoyance, nouvelle fenêtre' + )} > Trouver mon institution de prévoyance @@ -220,6 +236,10 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { href="https://www.letese.urssaf.fr" target="_blank" rel="noreferrer" + aria-label={t( + 'embauche.teseAriaLabel', + "titre emploi service entreprise (Tese), voir plus d'informations sur letese.urssaf.fr, nouvelle fenêtre" + )} > titre emploi service entreprise (Tese) {' '} @@ -228,6 +248,10 @@ function Embaucher({ onChecklistInitialization, onItemCheck }: EmbaucherProps) { href="https://www.cesu.urssaf.fr" target="_blank" rel="noreferrer" + aria-label={t( + 'embauche.cesuAriaLabel', + "chèque emploi associatif (CEA), voir plus d'informations sur cesu.urssaf.fr, nouvelle fenêtre" + )} > chèque emploi associatif (CEA) {' '} diff --git a/site/source/pages/integration/Library.tsx b/site/source/pages/integration/Library.tsx index 46a8b07b5..8d3765392 100644 --- a/site/source/pages/integration/Library.tsx +++ b/site/source/pages/integration/Library.tsx @@ -7,12 +7,14 @@ import { H2, H3, H4 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' import { Li, Ol } from '@/design-system/typography/list' import { Body, Intro } from '@/design-system/typography/paragraphs' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { CasParticuliers } from './_components/CasParticuliers' import StepByStep from './_components/StepByStep' import illustration from './_images/illustration_library.svg' export default function Library() { + const { t } = useTranslation() + return (
    @@ -36,11 +38,17 @@ export default function Library() { Pour lancer vos propres calculs, vous devez installer le paquet{' '} - + publicodes {' '} contenant l'interpréteur publicodes, ainsi que le paquet{' '} - + modele-social , qui contient les règles des simulateurs mon-entreprise. @@ -54,7 +62,10 @@ export default function Library() { mon-entreprise. - + En savoir plus sur publicodes @@ -90,7 +101,12 @@ export default function Library() { Toutes les règles disponibles sont listées et expliquées sur la{' '} - + documentation en ligne . Cette documentation est auto-générée depuis les fichiers de règles @@ -121,7 +137,10 @@ export default function Library() {
    Vous pouvez modifier sans hésiter les valeurs de la situation. Ces dernières acceptent n'importe quelle{' '} - + expression ou objet publicodes. diff --git a/site/source/pages/integration/Spreadsheet.tsx b/site/source/pages/integration/Spreadsheet.tsx index 2f9d12fd2..61b165ac2 100644 --- a/site/source/pages/integration/Spreadsheet.tsx +++ b/site/source/pages/integration/Spreadsheet.tsx @@ -3,11 +3,13 @@ import { H1, H2 } from '@/design-system/typography/heading' import { Link } from '@/design-system/typography/link' import { Body } from '@/design-system/typography/paragraphs' import { useSitePaths } from '@/sitePaths' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' export default function Spreadsheet() { const { absoluteSitePaths } = useSitePaths() + const { t } = useTranslation() + return (
    @@ -16,7 +18,13 @@ export default function Spreadsheet() { Vous souhaitez utiliser un simulateur dans une feuille Google Sheets ou Excel ? C'est possible grâce à notre{' '} - API REST ! + + API REST + {' '} + !

    Intégrer un simulateur dans Excel/Sheets

    @@ -31,7 +39,10 @@ export default function Spreadsheet() {

    Exemple

    Vous pouvez trouver un exemple complet avec{' '} - + Google Sheets , cliquez sur "Créer une copie" (vous pouvez vérifier les scripts avec diff --git a/site/source/pages/integration/_components/CasParticuliers.tsx b/site/source/pages/integration/_components/CasParticuliers.tsx index b36d6e022..fe0608bac 100644 --- a/site/source/pages/integration/_components/CasParticuliers.tsx +++ b/site/source/pages/integration/_components/CasParticuliers.tsx @@ -6,9 +6,11 @@ import { Link } from '@/design-system/typography/link' import { Li, Ul } from '@/design-system/typography/list' import { Body } from '@/design-system/typography/paragraphs' import { useSitePaths } from '@/sitePaths' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' export function CasParticuliers() { + const { t } = useTranslation() + return (

    En savoir plus sur...

    @@ -55,7 +57,12 @@ export function CasParticuliers() { Nos API suivent une{' '} - + gestion sémantique de version . Cela veut dire que toutes les modifications apportées sont @@ -106,7 +113,10 @@ export function CasParticuliers() { Dans le simulateur{' '} - + salarié , il suffit de renseigner la commune et le taux versement mobilité @@ -123,7 +133,10 @@ export function CasParticuliers() {
  • Grâce au{' '} - + service dédié sur urssaf.fr
  • @@ -142,14 +155,20 @@ export function CasParticuliers() { utiliser :
    • - + Un export csv {' '} du tableau des taux nets collectifs paru au Journal Officiel
    • Le service{' '} - + Compte AT/MP {' '} de net-entreprise diff --git a/site/source/pages/integration/_components/StepByStep.tsx b/site/source/pages/integration/_components/StepByStep.tsx index aa57c50ca..ddd82883c 100644 --- a/site/source/pages/integration/_components/StepByStep.tsx +++ b/site/source/pages/integration/_components/StepByStep.tsx @@ -13,7 +13,10 @@ export default function StepByStep() {
      Par exemple le{' '} - + simulateur salarié {' '} pour calculer un net à partir du brut. @@ -30,6 +33,7 @@ export default function StepByStep() { search: 'salaire-brut=3400%E2%82%AC%2Fmois&salari%C3%A9+.+contrat=%27CDI%27&salari%C3%A9+.+contrat+.+statut+cadre=oui&salari%C3%A9+.+r%C3%A9mun%C3%A9ration+.+frais+professionnels+.+titres-restaurant=oui', }} + aria-label="un cadre à 3400 € brut avec des titres-restaurants, accéder au simulateur salarié avec les données pré-remplies pour un cadre à 3400 € brut avec des titres-restaurants" > un cadre à 3400 € brut avec des titres-restaurants diff --git a/site/source/pages/integration/index.tsx b/site/source/pages/integration/index.tsx index 996222f76..a58150ef7 100644 --- a/site/source/pages/integration/index.tsx +++ b/site/source/pages/integration/index.tsx @@ -4,7 +4,7 @@ import { Banner, InnerBanner } from '@/design-system/banner' import { Link } from '@/design-system/typography/link' import { useFetchData } from '@/hooks/useFetchData' import { useSitePaths } from '@/sitePaths' -import { Trans } from 'react-i18next' +import { Trans, useTranslation } from 'react-i18next' import { Route, Routes, useLocation } from 'react-router-dom' import { TrackChapter } from '../../ATInternetTracking' import API from './API' @@ -25,6 +25,8 @@ export default function Integration() { const { data: jobOffers } = useFetchData('/data/job-offers.json') const openJobOffer = jobOffers?.[0] + const { t } = useTranslation() + return ( @@ -44,7 +46,14 @@ export default function Integration() { {' '} - Mon-entreprise recrute ! + + Mon-entreprise recrute ! + {' '} {openJobOffer.title} diff --git a/site/source/template.html b/site/source/template.html index 86d5e7b59..bf9324502 100644 --- a/site/source/template.html +++ b/site/source/template.html @@ -264,7 +264,10 @@

      Si besoin, vous pouvez en installer un nouveau depuis - cette page