From 517fe6df6e647fa48cb534f09497dbcb524e7af0 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 12:09:48 +0200 Subject: [PATCH 1/8] (PC-8087) remove outdated comment --- src/ui/components/spacer/Spacer.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/ui/components/spacer/Spacer.tsx b/src/ui/components/spacer/Spacer.tsx index 2f9f68885dd..cacc5cb6ad8 100644 --- a/src/ui/components/spacer/Spacer.tsx +++ b/src/ui/components/spacer/Spacer.tsx @@ -37,11 +37,7 @@ interface FlexSpacerProps { const FlexSpacer = styled.View(({ flex }) => ({ flex: flex ? flex : 1, })) -/** - * margin : `numberOfSpaces={6}` - * - * gutter : `numberOfSpaces={4}` - */ + export const Spacer = { Flex: FlexSpacer, Row: RowSpacer, From 65a08d7ea68dca62cc91b703408b6165a5c6cf69 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 12:16:26 +0200 Subject: [PATCH 2/8] (PC-8087) use plural from lingui3 --- .../components/CancellationDetails.tsx | 6 ++- .../components/OnGoingBookingsList.tsx | 19 ++++---- src/features/bookings/pages/Bookings.test.tsx | 2 +- .../bookings/pages/EndedBookings.test.tsx | 2 +- src/features/bookings/pages/EndedBookings.tsx | 11 ++--- src/locales/fr/messages.po | 46 +++++++------------ 6 files changed, 38 insertions(+), 48 deletions(-) diff --git a/src/features/bookOffer/components/CancellationDetails.tsx b/src/features/bookOffer/components/CancellationDetails.tsx index 500730906f2..4310787ea37 100644 --- a/src/features/bookOffer/components/CancellationDetails.tsx +++ b/src/features/bookOffer/components/CancellationDetails.tsx @@ -24,7 +24,11 @@ export const CancellationDetails: React.FC = () => { message = limitDate < new Date() ? t`Cette réservation n’est pas annulable` - : t`Cette réservation peut être annulée jusqu’au ${formatDate(limitDate)}` + : t({ + id: "réservation annulable jusqu'au", + values: { date: formatDate(limitDate) }, + message: 'Cette réservation peut être annulée jusqu’au {date}', + }) } return ( diff --git a/src/features/bookings/components/OnGoingBookingsList.tsx b/src/features/bookings/components/OnGoingBookingsList.tsx index f143fbdbbc5..4530ddd67e5 100644 --- a/src/features/bookings/components/OnGoingBookingsList.tsx +++ b/src/features/bookings/components/OnGoingBookingsList.tsx @@ -1,4 +1,4 @@ -import { t } from '@lingui/macro' +import { plural } from '@lingui/macro' import { useNavigation } from '@react-navigation/native' import React, { useCallback } from 'react' import { FlatList, ListRenderItem, NativeScrollEvent, View } from 'react-native' @@ -33,11 +33,16 @@ export function OnGoingBookingsList(props: OnGoingBookingsListProps) { const bookings = props.bookings || emptyBookings const onGoingBookingsCount = bookings.length const hasBookings = onGoingBookingsCount > 0 - const bookingsCountLabel = - `${onGoingBookingsCount}\u00a0` + getBookingsCountLabel(onGoingBookingsCount > 1) + const bookingsCountLabel = plural(onGoingBookingsCount, { + one: '# réservation en cours', + other: '# réservations en cours', + }) const endedBookings = props?.endedBookings || emptyBookings - const endedBookingsLabel = getEndedBookingsCountLabel(endedBookings.length > 1) + const endedBookingsLabel = plural(endedBookings.length, { + one: 'Réservation terminée', + other: 'Réservations terminées', + }) const ListEmptyComponent = useCallback(() => , []) const ListHeaderComponent = useCallback( @@ -91,12 +96,6 @@ export function OnGoingBookingsList(props: OnGoingBookingsListProps) { ) } -const getBookingsCountLabel = (plural: boolean) => - plural ? t`réservations en cours` : t`réservation en cours` - -const getEndedBookingsCountLabel = (plural: boolean) => - plural ? t`Réservations terminées` : t`Réservation terminée` - const keyExtractor = (item: Booking) => item.id.toString() const renderItem: ListRenderItem = ({ item }) => diff --git a/src/features/bookings/pages/Bookings.test.tsx b/src/features/bookings/pages/Bookings.test.tsx index 05921051b47..dad085e611c 100644 --- a/src/features/bookings/pages/Bookings.test.tsx +++ b/src/features/bookings/pages/Bookings.test.tsx @@ -26,7 +26,7 @@ describe('Bookings', () => { it('should display the right number of ongoing bookings', async () => { const { queryByText } = renderBookings(bookingsSnap) - expect(queryByText('1\u00a0réservation en cours')).toBeTruthy() + expect(queryByText('1 réservation en cours')).toBeTruthy() }) it('should display the empty bookings dedicated view', async () => { diff --git a/src/features/bookings/pages/EndedBookings.test.tsx b/src/features/bookings/pages/EndedBookings.test.tsx index 2a1b693a6ae..6c9f33cbd2f 100644 --- a/src/features/bookings/pages/EndedBookings.test.tsx +++ b/src/features/bookings/pages/EndedBookings.test.tsx @@ -20,7 +20,7 @@ describe('EndedBookings', () => { it('should display the right number of ended bookings', () => { const { queryByText } = renderEndedBookings(bookingsSnap) - expect(queryByText('1\u00a0réservation terminée')).toBeTruthy() + expect(queryByText('1 réservation terminée')).toBeTruthy() }) }) diff --git a/src/features/bookings/pages/EndedBookings.tsx b/src/features/bookings/pages/EndedBookings.tsx index a7dd1bdd791..2ec76ea53f4 100644 --- a/src/features/bookings/pages/EndedBookings.tsx +++ b/src/features/bookings/pages/EndedBookings.tsx @@ -1,4 +1,4 @@ -import { t } from '@lingui/macro' +import { plural, t } from '@lingui/macro' import React from 'react' import { ScrollView } from 'react-native-gesture-handler' import styled from 'styled-components/native' @@ -13,8 +13,10 @@ export const EndedBookings: React.FC = () => { const { data: bookings } = useBookings(true) const endedBookingsCount = bookings?.ended_bookings?.length || 0 - const endedBookingsLabel = - `${endedBookingsCount}\u00a0` + getEndedBookingsCountLabel(endedBookingsCount > 1) + const endedBookingsLabel = plural(endedBookingsCount, { + one: '# réservation terminée', + other: '# réservations terminées', + }) return ( @@ -30,9 +32,6 @@ export const EndedBookings: React.FC = () => { ) } -const getEndedBookingsCountLabel = (plural: boolean) => - plural ? t`réservations terminées` : t`réservation terminée` - const EndedBookingsCount = styled(Typo.Body)({ color: ColorsEnum.GREY_DARK, paddingHorizontal: getSpacing(5), diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index de188063435..0ee75f05f35 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -234,10 +234,6 @@ msgstr "Cette réservation est annulable" msgid "Cette réservation n’est pas annulable" msgstr "Cette réservation n’est pas annulable" -#: src/features/bookOffer/components/CancellationDetails.tsx:22 -msgid "Cette réservation peut être annulée jusqu’au {0}" -msgstr "Cette réservation peut être annulée jusqu’au {0}" - #: src/features/search/sections/OfferDate.tsx:35 msgid "Cette semaine" msgstr "Cette semaine" @@ -297,7 +293,7 @@ msgstr "Conditions Générales d'Utilisation" msgid "Conditions Générales d’Utilisation" msgstr "Conditions Générales d’Utilisation" -#: src/features/bookOffer/components/CancellationDetails.tsx:25 +#: src/features/bookOffer/components/CancellationDetails.tsx:29 msgid "Conditions d'annulation" msgstr "Conditions d'annulation" @@ -700,7 +696,7 @@ msgstr "Mes options" msgid "Mes réservations" msgstr "Mes réservations" -#: src/features/bookings/pages/EndedBookings.tsx:22 +#: src/features/bookings/pages/EndedBookings.tsx:25 msgid "Mes réservations terminées" msgstr "Mes réservations terminées" @@ -1036,14 +1032,6 @@ msgstr "Réservation confirmée !" msgid "Réservation impossible" msgstr "Réservation impossible" -#: src/features/bookings/components/OnGoingBookingsList.tsx:44 -msgid "Réservation terminée" -msgstr "Réservation terminée" - -#: src/features/bookings/components/OnGoingBookingsList.tsx:44 -msgid "Réservations terminées" -msgstr "Réservations terminées" - #: src/features/favorites/atoms/BookingButton.tsx:50 #: src/features/favorites/atoms/BookingButton.tsx:51 #: src/features/offer/services/useCtaWordingAndAction.ts:37 @@ -1464,21 +1452,9 @@ msgstr "metteur en scène" msgid "quotidiennes" msgstr "quotidiennes" -#: src/features/bookings/components/OnGoingBookingsList.tsx:43 -msgid "réservation en cours" -msgstr "réservation en cours" - -#: src/features/bookings/pages/EndedBookings.tsx:25 -msgid "réservation terminée" -msgstr "réservation terminée" - -#: src/features/bookings/components/OnGoingBookingsList.tsx:43 -msgid "réservations en cours" -msgstr "réservations en cours" - -#: src/features/bookings/pages/EndedBookings.tsx:25 -msgid "réservations terminées" -msgstr "réservations terminées" +#: src/features/bookOffer/components/CancellationDetails.tsx:22 +msgid "réservation annulable jusqu'au" +msgstr "Cette réservation peut être annulée jusqu’au {date}" #: src/features/offer/pages/OfferDescription.tsx:15 #: src/features/offer/pages/OfferDescription.tsx:19 @@ -1499,6 +1475,10 @@ msgstr "une initiative financée par le Ministère de la Culture." msgid "voir plus" msgstr "voir plus" +#: src/features/bookings/components/OnGoingBookingsList.tsx:28 +msgid "{0, plural, one {Réservation terminée} other {Réservations terminées}}" +msgstr "{0, plural, one {Réservation terminée} other {Réservations terminées}}" + #: src/ui/components/inputs/InputError.tsx:9 msgid "{0}" msgstr "{0}" @@ -1511,6 +1491,10 @@ msgstr "{count, plural, one {# favori} other {# favoris}}" msgid "{count, plural, one {# résultat} other {# résultats}}" msgstr "{count, plural, one {# résultat} other {# résultats}}" +#: src/features/bookings/pages/EndedBookings.tsx:13 +msgid "{endedBookingsCount, plural, one {# réservation terminée} other {# réservations terminées}}" +msgstr "{endedBookingsCount, plural, one {# réservation terminée} other {# réservations terminées}}" + #: src/features/favorites/atoms/NumberOfResults.tsx:10 msgid "{nbFavorites, plural, one {# favori} other {# favoris}}" msgstr "{nbFavorites, plural, one {# favori} other {# favoris}}" @@ -1523,6 +1507,10 @@ msgstr "{nbHits, plural, one {# résultat} other {# résultats}}" msgid "{nbHits, plural, one {Afficher # résultat} other {Afficher les # résultats}}" msgstr "{nbHits, plural, one {Afficher # résultat} other {Afficher les # résultats}}" +#: src/features/bookings/components/OnGoingBookingsList.tsx:23 +msgid "{onGoingBookingsCount, plural, one {# réservation en cours} other {# réservations en cours}}" +msgstr "{onGoingBookingsCount, plural, one {# réservation en cours} other {# réservations en cours}}" + #: src/features/bookOffer/components/BookingDetails.tsx:75 msgid "{price} seront déduits de ton crédit pass Culture" msgstr "{price} seront déduits de ton crédit pass Culture" From c19ba1c34af0cf408f9d1ab6a908b0efdf3a15e5 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 12:20:44 +0200 Subject: [PATCH 3/8] (PC-8087) remove useless translation key --- src/locales/fr/messages.po | 4 ---- src/ui/components/inputs/InputError.tsx | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 0ee75f05f35..36efbc34c72 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -1479,10 +1479,6 @@ msgstr "voir plus" msgid "{0, plural, one {Réservation terminée} other {Réservations terminées}}" msgstr "{0, plural, one {Réservation terminée} other {Réservations terminées}}" -#: src/ui/components/inputs/InputError.tsx:9 -msgid "{0}" -msgstr "{0}" - #: src/features/favorites/atoms/__tests__/NumberOfResults.test.tsx:7 msgid "{count, plural, one {# favori} other {# favoris}}" msgstr "{count, plural, one {# favori} other {# favoris}}" diff --git a/src/ui/components/inputs/InputError.tsx b/src/ui/components/inputs/InputError.tsx index f9c281310f6..abfcc304f53 100644 --- a/src/ui/components/inputs/InputError.tsx +++ b/src/ui/components/inputs/InputError.tsx @@ -1,4 +1,3 @@ -import { t } from '@lingui/macro' import React, { FC, Fragment } from 'react' import { Warning } from 'ui/svg/icons/Warning' @@ -17,7 +16,7 @@ export const InputError: FC = (props) => { Date: Mon, 19 Apr 2021 12:29:09 +0200 Subject: [PATCH 4/8] (PC-8087) fix translation of deducted amount --- src/features/bookOffer/components/BookingDetails.tsx | 12 +++++++----- src/locales/fr/messages.po | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/features/bookOffer/components/BookingDetails.tsx b/src/features/bookOffer/components/BookingDetails.tsx index 641805b555f..49a06bb89bd 100644 --- a/src/features/bookOffer/components/BookingDetails.tsx +++ b/src/features/bookOffer/components/BookingDetails.tsx @@ -77,6 +77,12 @@ export const BookingDetails: React.FC = ({ stocks }) => { const onPressBookOffer = () => mutate({ quantity, stockId: stock.id }) + const deductedAmount = t({ + id: 'montant déduit', + values: { price }, + message: '{price} seront déduits de ton crédit pass Culture', + }) + return ( @@ -93,11 +99,7 @@ export const BookingDetails: React.FC = ({ stocks }) => { - {price ? ( - {t`${price} seront déduits de ton crédit pass Culture`} - ) : ( - - )} + {price ? {deductedAmount} : } ) } diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 36efbc34c72..2e74b88c143 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -305,7 +305,7 @@ msgstr "Confidentialité" msgid "Confirme ton e‑mail" msgstr "Confirme ton e‑mail" -#: src/features/bookOffer/components/BookingDetails.tsx:74 +#: src/features/bookOffer/components/BookingDetails.tsx:79 msgid "Confirmer la réservation" msgstr "Confirmer la réservation" @@ -1448,6 +1448,10 @@ msgstr "le {0}" msgid "metteur en scène" msgstr "metteur en scène" +#: src/features/bookOffer/components/BookingDetails.tsx:60 +msgid "montant déduit" +msgstr "{price} seront déduits de ton crédit pass Culture" + #: src/features/firstTutorial/pages/FirstTutorial/components/FourthCard.tsx:20 msgid "quotidiennes" msgstr "quotidiennes" @@ -1507,10 +1511,6 @@ msgstr "{nbHits, plural, one {Afficher # résultat} other {Afficher les # résul msgid "{onGoingBookingsCount, plural, one {# réservation en cours} other {# réservations en cours}}" msgstr "{onGoingBookingsCount, plural, one {# réservation en cours} other {# réservations en cours}}" -#: src/features/bookOffer/components/BookingDetails.tsx:75 -msgid "{price} seront déduits de ton crédit pass Culture" -msgstr "{price} seront déduits de ton crédit pass Culture" - #: src/features/offer/components/OfferIconCaptions.tsx:26 msgid "À deux !" msgstr "À deux !" From c4bf843c72f99a990b43dd7d31d75afe11654bc3 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 12:43:46 +0200 Subject: [PATCH 5/8] (PC-8087) update lingui documentation --- doc/i18n/getting-started.md | 42 ++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/doc/i18n/getting-started.md b/doc/i18n/getting-started.md index 52441af90c2..4f9e4689557 100644 --- a/doc/i18n/getting-started.md +++ b/doc/i18n/getting-started.md @@ -7,7 +7,32 @@ import { Text, View } from 'react-native' import { t } from '@lingui/macro' function HelloWorld({ name: string }) { - return {t(`Hello ${name}`)} + return ( + + {t(`Hello World`)} + + ) +} +``` + +For parameterized text, use this syntax: + +```tsx +import { Text, View } from 'react-native' +import { t } from '@lingui/macro' + +function HelloWorld({ name: string }) { + return ( + + + {t({ + id: 'hello name', // Mandatory + values: { name }, + message: 'Hello {name}', + })} + + + ) } ``` @@ -17,7 +42,7 @@ For plural, you can use: import { Text } from 'react-native' import { plural } from '@lingui/macro' -function ShowResultsText({ countr: number }) { +function ShowResultsText({ count: number }) { return ( {plural(count, { @@ -36,19 +61,14 @@ V3 brings the `plural` into our application, but it also brings two new non bloc 1. Test unit doesn't exist properly : https://github.com/lingui/js-lingui/issues/1041 2. Translation may be empty in `development` and show a warning : https://github.com/lingui/js-lingui/issues/1042 -*(2)* can be problematic while in development, -this happens because the variable to interpolate is returning a `function` instead of a `string`. -It can easily be fixed by calling `.toString()` on the variable. - -> Don't forget to remove every `.toString()` as they are not required in `production` builds -> and that bug should be fixed in a futur release of Lingui v3. +To solve (2), prefer the parameterised syntax. ### v2 to v3 syntax changes V2 syntax: ```jsx -_(t(`text`)) +_(t(`text`)) ``` V3 use macro, you don't need `_` anymore: @@ -83,8 +103,10 @@ You don't need to add date formatting in the translation, do not write: t`À retirer avant le\u00a0${formatToCompleteFrenchDate(expirationDatetime, false)}` ``` -Instead, write the translation and concatenate the non translated text : +Instead, write the translation and concatenate the non translated text: ```jsx t`À retirer avant le` + `\u00a0${formatToCompleteFrenchDate(expirationDatetime, false)}` ``` + +You can also use the parameterised syntax. From 936ff6ba04d0cacf022fce085366723bbc5fe020 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 12:53:06 +0200 Subject: [PATCH 6/8] (PC-8087) fix duo price translation --- src/features/bookOffer/components/BookingInformations.tsx | 6 +++++- src/locales/fr/messages.po | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/features/bookOffer/components/BookingInformations.tsx b/src/features/bookOffer/components/BookingInformations.tsx index 3b828b44a60..f746b61e39a 100644 --- a/src/features/bookOffer/components/BookingInformations.tsx +++ b/src/features/bookOffer/components/BookingInformations.tsx @@ -39,7 +39,11 @@ export const BookingInformations: React.FC = () => { if (category.categoryType === CategoryType.Event) { const subtext = stock.price > 0 && quantity === 2 - ? t`(${formatToFrenchDecimal(stock.price)} x 2 places)` + ? t({ + id: 'prix duo', + values: { price: formatToFrenchDecimal(stock.price) }, + message: '({price} x 2 places)', + }) : undefined return ( diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 2e74b88c143..d01ae3fe501 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -13,10 +13,6 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/features/bookOffer/components/BookingInformations.tsx:31 -msgid "({0} x 2 places)" -msgstr "({0} x 2 places)" - #: src/features/favorites/atoms/BicolorFavoriteCount.tsx:45 msgid "+" msgstr "+" @@ -1452,6 +1448,10 @@ msgstr "metteur en scène" msgid "montant déduit" msgstr "{price} seront déduits de ton crédit pass Culture" +#: src/features/bookOffer/components/BookingInformations.tsx:31 +msgid "prix duo" +msgstr "({price} x 2 places)" + #: src/features/firstTutorial/pages/FirstTutorial/components/FourthCard.tsx:20 msgid "quotidiennes" msgstr "quotidiennes" From dcc6b8144c662237a1e9040819739def07d5690c Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 13:23:56 +0200 Subject: [PATCH 7/8] (PC-8087) use parameterized syntax - [batch 1] --- .../auth/signup/VerifyEligibility.tsx | 7 +- .../bookOffer/pages/BookingConfirmation.tsx | 6 +- .../components/CancelBookingModal.test.tsx | 2 +- .../components/CancelBookingModal.tsx | 18 ++- src/features/bookings/helpers.ts | 12 +- src/features/cheatcodes/pages/CheatCodes.tsx | 3 +- src/features/favorites/atoms/Favorite.tsx | 6 +- src/features/home/pages/Home.tsx | 16 ++- .../components/NonBeneficiaryHeader.tsx | 13 +- .../profile/components/YoungerBadge.tsx | 7 +- src/locales/fr/messages.po | 132 +++++++++--------- 11 files changed, 136 insertions(+), 86 deletions(-) diff --git a/src/features/auth/signup/VerifyEligibility.tsx b/src/features/auth/signup/VerifyEligibility.tsx index 346cfc99f2b..e40d086c1b5 100644 --- a/src/features/auth/signup/VerifyEligibility.tsx +++ b/src/features/auth/signup/VerifyEligibility.tsx @@ -33,7 +33,12 @@ export function VerifyEligibility(props: Props) { icon={HappyFaceStars} iconSize={getSpacing(65)}> - {t`Pour que tu puisses bénéficier de l’aide financière de ${deposit} offerte par le Ministère de la Culture, nous avons besoin de vérifier ton éligibilité.`} + {t({ + id: 'need verify eligibility', + values: { deposit }, + message: + 'Pour que tu puisses bénéficier de l’aide financière de {deposit} offerte par le Ministère de la Culture, nous avons besoin de vérifier ton éligibilité.', + })} diff --git a/src/features/bookOffer/pages/BookingConfirmation.tsx b/src/features/bookOffer/pages/BookingConfirmation.tsx index b9465b57787..faee6a386c5 100644 --- a/src/features/bookOffer/pages/BookingConfirmation.tsx +++ b/src/features/bookOffer/pages/BookingConfirmation.tsx @@ -50,7 +50,11 @@ export function BookingConfirmation() { icon={TicketBooked} iconSize={getSpacing(65)}> - {t`Il te reste encore ${formatToFrenchDecimal(amountLeft)} à dépenser sur le pass !`} + {t({ + id: 'credit left to spend', + values: { credit: formatToFrenchDecimal(amountLeft) }, + message: 'Il te reste encore {credit} à dépenser sur le pass !', + })} diff --git a/src/features/bookings/components/CancelBookingModal.test.tsx b/src/features/bookings/components/CancelBookingModal.test.tsx index 0833f660a98..7b475f7624d 100644 --- a/src/features/bookings/components/CancelBookingModal.test.tsx +++ b/src/features/bookings/components/CancelBookingModal.test.tsx @@ -92,7 +92,7 @@ describe('', () => { ) ) - getByText('19' + '\u00a0' + '€ seront recrédités sur ton pass Culture.') + getByText('19 € seront recrédités sur ton pass Culture.') }) it('should display refund rule if user is ex beneficiary and offer is not free', () => { diff --git a/src/features/bookings/components/CancelBookingModal.tsx b/src/features/bookings/components/CancelBookingModal.tsx index 35b550abcfb..5f9c7ac1f1d 100644 --- a/src/features/bookings/components/CancelBookingModal.tsx +++ b/src/features/bookings/components/CancelBookingModal.tsx @@ -109,10 +109,20 @@ const Refund = styled(Typo.Body)({ function getRefundRule(booking: Booking, user?: UserProfileResponse, credit?: Credit) { const price = convertCentsToEuros(booking.totalAmount) if (price > 0 && user && credit) { - if (isUserExBeneficiary(user, credit)) - return t`Les ${price} € ne seront pas recrédités sur ton pass Culture car il est expiré.` - if (isUserBeneficiary(user)) - return price + '\u00a0' + t`€ seront recrédités sur ton pass Culture.` + if (isUserExBeneficiary(user, credit)) { + return t({ + id: 'not refunded because expired', + values: { price }, + message: 'Les {price} € ne seront pas recrédités sur ton pass Culture car il est expiré.', + }) + } + if (isUserBeneficiary(user)) { + return t({ + id: 'refunded on your pass', + values: { price }, + message: '{price} € seront recrédités sur ton pass Culture.', + }) + } } return null } diff --git a/src/features/bookings/helpers.ts b/src/features/bookings/helpers.ts index 2615f4ecd20..dfc7ff37905 100644 --- a/src/features/bookings/helpers.ts +++ b/src/features/bookings/helpers.ts @@ -58,7 +58,11 @@ export function getBookingLabels(booking: Booking, properties: BookingProperties dateLabel = t`Permanent` } else if (properties.isEvent) { dateLabel = beginningDatetime - ? t`Le ${formatToCompleteFrenchDateTime(beginningDatetime, false)}` + ? t({ + id: 'le jour', + values: { day: formatToCompleteFrenchDateTime(beginningDatetime, false) }, + message: 'Le {day}', + }) : '' const isBeginningToday = beginningDatetime ? isToday(beginningDatetime) : false @@ -70,7 +74,11 @@ export function getBookingLabels(booking: Booking, properties: BookingProperties } } else if (properties.isPhysical) { dateLabel = expirationDatetime - ? t`À retirer avant le` + `\u00a0${formatToCompleteFrenchDate(expirationDatetime, false)}` + ? t({ + id: 'withdraw before date', + values: { dateLimit: formatToCompleteFrenchDate(expirationDatetime, false) }, + message: 'À retirer avant le {dateLimit}', + }) : '' const isExpiringToday = expirationDatetime ? isToday(expirationDatetime) : false diff --git a/src/features/cheatcodes/pages/CheatCodes.tsx b/src/features/cheatcodes/pages/CheatCodes.tsx index c536a7d3429..72fe72f984f 100644 --- a/src/features/cheatcodes/pages/CheatCodes.tsx +++ b/src/features/cheatcodes/pages/CheatCodes.tsx @@ -1,5 +1,4 @@ import { BatchUser } from '@bam.tech/react-native-batch' -import { t } from '@lingui/macro' import { StackNavigationProp } from '@react-navigation/stack' import React, { FunctionComponent, useEffect, useState } from 'react' import { Text, Alert, Button } from 'react-native' @@ -105,7 +104,7 @@ async function getBatchInstallationID() { } catch (e) { Alert.alert( 'Batch error', - t`An error has occured while obtaining the Batch installation ID : ${e}` + `An error has occured while obtaining the Batch installation ID : ${e}` ) return 'Batch error' } diff --git a/src/features/favorites/atoms/Favorite.tsx b/src/features/favorites/atoms/Favorite.tsx index 4250a09f172..ea57a0c077b 100644 --- a/src/features/favorites/atoms/Favorite.tsx +++ b/src/features/favorites/atoms/Favorite.tsx @@ -57,7 +57,11 @@ export const Favorite: React.FC = (props) => { return formatToFrenchDate(new Date(offer.date)) } if (offer.startDate) { - return t`Dès le ${formatToFrenchDate(new Date(offer.startDate))}` + return t({ + id: 'starting from date', + values: { date: formatToFrenchDate(new Date(offer.startDate)) }, + message: 'Dès le {date}', + }) } return null }, [offer]) diff --git a/src/features/home/pages/Home.tsx b/src/features/home/pages/Home.tsx index d575ed0f2d1..bec146d827f 100644 --- a/src/features/home/pages/Home.tsx +++ b/src/features/home/pages/Home.tsx @@ -67,11 +67,23 @@ export const Home: FunctionComponent = function () { } }) + const welcomeTitle = userInfos?.firstName + ? t({ + id: 'hello name', + values: { name: userInfos?.firstName }, + message: 'Bonjour {name}', + }) + : t`Bienvenue !` + let subtitle = t`Toute la culture dans ta main` if (availableCredit) { subtitle = availableCredit.isExpired ? t`Ton crédit est expiré` - : t`Tu as ${formatToFrenchDecimal(availableCredit.amount)} sur ton pass` + : t({ + id: 'credit left on pass', + values: { credit: formatToFrenchDecimal(availableCredit.amount) }, + message: 'Tu as {credit} sur ton pass', + }) } const onScroll = useCallback( @@ -102,7 +114,7 @@ export const Home: FunctionComponent = function () { - {userInfos?.firstName ? t`Bonjour` + ` ${userInfos?.firstName}` : t`Bienvenue !`} + {welcomeTitle} {subtitle} diff --git a/src/features/profile/components/NonBeneficiaryHeader.tsx b/src/features/profile/components/NonBeneficiaryHeader.tsx index 4f19730a57e..b6b173847e9 100644 --- a/src/features/profile/components/NonBeneficiaryHeader.tsx +++ b/src/features/profile/components/NonBeneficiaryHeader.tsx @@ -48,8 +48,11 @@ function NonBeneficiaryHeaderComponent(props: PropsWithChildren - {t`Tu es éligible jusqu'au` + - `\u00a0${formatToSlashedFrenchDate(eligibilityEndDatetime.toISOString())}`} + {t({ + id: 'elibility deadline', + values: { deadline: formatToSlashedFrenchDate(eligibilityEndDatetime.toISOString()) }, + message: "Tu es éligible jusqu'au {deadline}", + })} } - title={t`Profite de ${deposit}`} + title={t({ + id: 'enjoy deposit', + values: { deposit }, + message: 'Profite de {deposit}', + })} subTitle={t`à dépenser dans l'application`} testID="18-banner" /> diff --git a/src/features/profile/components/YoungerBadge.tsx b/src/features/profile/components/YoungerBadge.tsx index 8b6811c06f5..1dfc559021d 100644 --- a/src/features/profile/components/YoungerBadge.tsx +++ b/src/features/profile/components/YoungerBadge.tsx @@ -17,7 +17,12 @@ export function YoungerBadge() { - {t`Patience ! L’année de tes 18 ans, si tu fais partie d’un des départements éligibles, tu bénéficieras de ${deposit} offerts à dépenser sur l’application.`} + {t({ + id: 'patience enfin', + values: { deposit }, + message: + 'Patience ! L’année de tes 18 ans, si tu fais partie d’un des départements éligibles, tu bénéficieras de {deposit} offerts à dépenser sur l’application.', + })} diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index d01ae3fe501..629f25631a9 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -103,10 +103,6 @@ msgstr "Ajoute cette offre à tes favoris et rends-toi vite sur le site pass Cul msgid "Ajouté récemment" msgstr "Ajouté récemment" -#: src/features/cheatcodes/pages/CheatCodes.tsx:101 -msgid "An error has occured while obtaining the Batch installation ID : {e}" -msgstr "Une erreur a eu lieu en obtenant l'ID d'installation Batch : {e}" - #: src/libs/itinerary/useItinerary.ts:78 msgid "Annuler" msgstr "Annuler" @@ -144,7 +140,7 @@ msgstr "Aucun résultat" msgid "Aucune valeur à sauvegarder" msgstr "Aucune valeur à sauvegarder" -#: src/features/bookings/helpers.ts:42 +#: src/features/bookings/helpers.ts:46 #: src/features/search/sections/OfferDate.tsx:33 msgid "Aujourd'hui" msgstr "Aujourd'hui" @@ -173,18 +169,14 @@ msgstr "Autour de moi" msgid "Autres" msgstr "Autres" -#: src/features/bookings/helpers.ts:58 +#: src/features/bookings/helpers.ts:66 msgid "Avant dernier jour pour retirer" msgstr "Avant dernier jour pour retirer" -#: src/features/home/pages/Home.tsx:78 +#: src/features/home/pages/Home.tsx:58 msgid "Bienvenue !" msgstr "Bienvenue !" -#: src/features/home/pages/Home.tsx:78 -msgid "Bonjour" -msgstr "Bonjour" - #: src/features/eighteenBirthday/pages/components/EighteenBirthdayCard.tsx:31 msgid "Bonne nouvelle !" msgstr "Bonne nouvelle !" @@ -242,7 +234,7 @@ msgstr "Chargement en cours..." msgid "Charte de protection des données personnelles" msgstr "Charte de protection des données personnelles" -#: src/features/home/pages/Home.tsx:72 +#: src/features/home/pages/Home.tsx:82 msgid "CheatMenu" msgstr "CheatMenu" @@ -383,11 +375,11 @@ msgstr "Date de l'offre" msgid "Date précise" msgstr "Date précise" -#: src/features/bookings/helpers.ts:45 +#: src/features/bookings/helpers.ts:49 msgid "Demain" msgstr "Demain" -#: src/features/bookings/helpers.ts:55 +#: src/features/bookings/helpers.ts:63 msgid "Dernier jour pour retirer" msgstr "Dernier jour pour retirer" @@ -409,10 +401,6 @@ msgstr "Distance" msgid "Duo" msgstr "Duo" -#: src/features/favorites/atoms/Favorite.tsx:46 -msgid "Dès le {0}" -msgstr "Dès le {0}" - #: src/features/profile/pages/Profile.tsx:138 msgid "Déconnexion" msgstr "Déconnexion" @@ -532,10 +520,6 @@ msgstr "Hors connexion : en attente du réseau." msgid "ISBN" msgstr "ISBN" -#: src/features/bookOffer/pages/BookingConfirmation.tsx:42 -msgid "Il te reste encore {0} à dépenser sur le pass !" -msgstr "Il te reste encore {0} à dépenser sur le pass !" - #: src/features/auth/login/Login.tsx:77 msgid "Il y a eu un problème. Tu peux réessayer plus tard." msgstr "Il y a eu un problème. Tu peux réessayer plus tard." @@ -628,10 +612,6 @@ msgstr "Le réglage est sauvegardé" msgid "Le token reCAPTCHA a expiré, tu peux réessayer." msgstr "Le token reCAPTCHA a expiré, tu peux réessayer." -#: src/features/bookings/helpers.ts:37 -msgid "Le {0}" -msgstr "Le {0}" - #: src/features/bookOffer/components/BookingDetails.tsx:16 msgid "Les biens acquis ou réservés sur le pass Culture sont destinés à un usage strictement personnel et ne peuvent faire l’objet de revente." msgstr "Les biens acquis ou réservés sur le pass Culture sont destinés à un usage strictement personnel et ne peuvent faire l’objet de revente." @@ -644,10 +624,6 @@ msgstr "Les conditions générales d'utilisation de l'App Store iOS ne permetten msgid "Les informations que tu as renseignées ne seront pas enregistrées" msgstr "Les informations que tu as renseignées ne seront pas enregistrées" -#: src/features/bookings/components/CancelBookingModal.tsx:79 -msgid "Les {price} € ne seront pas recrédités sur ton pass Culture car il est expiré." -msgstr "Les {price} € ne seront pas recrédités sur ton pass Culture car il est expiré." - #: src/features/search/pages/LocationFilter.tsx:81 #: src/features/search/sections/titles.ts:4 msgid "Localisation" @@ -865,10 +841,6 @@ msgstr "Pas de résultat trouvé." msgid "Passer" msgstr "Passer" -#: src/features/profile/components/YoungerBadge.tsx:16 -msgid "Patience ! L’année de tes 18 ans, si tu fais partie d’un des départements éligibles, tu bénéficieras de {deposit} offerts à dépenser sur l’application." -msgstr "Patience ! L’année de tes 18 ans, si tu fais partie d’un des départements éligibles, tu bénéficieras de {deposit} offerts à dépenser sur l’application." - #: src/features/bookings/helpers.ts:33 msgid "Permanent" msgstr "Permanent" @@ -894,10 +866,6 @@ msgstr "Pour en savoir plus sur la gestion de tes données personnelles et exerc msgid "Pour plus d'informations, nous t'invitons à consulter notre" msgstr "Pour plus d'informations, nous t'invitons à consulter notre" -#: src/features/auth/signup/VerifyEligibility.tsx:23 -msgid "Pour que tu puisses bénéficier de l’aide financière de {deposit} offerte par le Ministère de la Culture, nous avons besoin de vérifier ton éligibilité." -msgstr "Pour que tu puisses bénéficier de l’aide financière de {deposit} offerte par le Ministère de la Culture, nous avons besoin de vérifier ton éligibilité." - #: src/features/auth/signup/SetBirthday.tsx:101 msgid "Pourquoi ?" msgstr "Pourquoi ?" @@ -920,14 +888,10 @@ msgstr "Prix croissant" #: src/features/profile/components/ExBeneficiaryHeader.tsx:15 #: src/features/profile/components/LoggedOutHeader.tsx:17 -#: src/features/profile/components/NonBeneficiaryHeader.tsx:55 +#: src/features/profile/components/NonBeneficiaryHeader.tsx:62 msgid "Profil" msgstr "Profil" -#: src/features/profile/components/NonBeneficiaryHeader.tsx:46 -msgid "Profite de {deposit}" -msgstr "Profite de {deposit}" - #: src/features/favorites/pages/FavoritesSorts.tsx:29 msgid "Proximité géographique" msgstr "Proximité géographique" @@ -979,8 +943,8 @@ msgstr "Reste informé des actualités du pass Culture et ne rate aucun de nos b #: src/features/auth/forgottenPassword/ResetPasswordExpiredLink.tsx:59 #: src/features/auth/signup/SignupConfirmationExpiredLink.tsx:59 -#: src/features/auth/signup/VerifyEligibility.tsx:28 -#: src/features/bookOffer/pages/BookingConfirmation.tsx:51 +#: src/features/auth/signup/VerifyEligibility.tsx:32 +#: src/features/bookOffer/pages/BookingConfirmation.tsx:55 msgid "Retourner à l'accueil" msgstr "Retourner à l'accueil" @@ -1100,7 +1064,7 @@ msgstr "Suivre pass Culture" msgid "Suppression du compte" msgstr "Suppression du compte" -#: src/features/favorites/atoms/Favorite.tsx:121 +#: src/features/favorites/atoms/Favorite.tsx:125 msgid "Supprimer" msgstr "Supprimer" @@ -1125,7 +1089,7 @@ msgstr "Ton compte a été activé !" msgid "Ton compte te permettra de retrouver tous tes favoris en un clin d'oeil !" msgstr "Ton compte te permettra de retrouver tous tes favoris en un clin d'oeil !" -#: src/features/home/pages/Home.tsx:56 +#: src/features/home/pages/Home.tsx:62 msgid "Ton crédit est expiré" msgstr "Ton crédit est expiré" @@ -1165,7 +1129,7 @@ msgstr "Tout passer" msgid "Toute la culture" msgstr "Toute la culture" -#: src/features/home/pages/Home.tsx:53 +#: src/features/home/pages/Home.tsx:59 msgid "Toute la culture dans ta main" msgstr "Toute la culture dans ta main" @@ -1190,10 +1154,6 @@ msgstr "Tu as 18 ans..." msgid "Tu as déjà un compte ?" msgstr "Tu as déjà un compte ?" -#: src/features/home/pages/Home.tsx:57 -msgid "Tu as {0} sur ton pass" -msgstr "Tu as {0} sur ton pass" - #: src/features/bookings/pages/BookingDetails.tsx:79 msgid "Tu dois présenter ta carte d’identité et ce code de 6 caractères pour profiter de ta réservation ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." msgstr "Tu dois présenter ta carte d’identité et ce code de 6 caractères pour profiter de ta réservation ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." @@ -1210,10 +1170,6 @@ msgstr "Tu es sur le point d'annuler" msgid "Tu es éligible !" msgstr "Tu es éligible !" -#: src/features/profile/components/NonBeneficiaryHeader.tsx:39 -msgid "Tu es éligible jusqu'au" -msgstr "Tu es éligible jusqu'au" - #: src/features/eighteenBirthday/pages/components/EighteenBirthdayCard.tsx:27 msgid "Tu n'es pas connecté !" msgstr "Tu n'es pas connecté !" @@ -1256,7 +1212,7 @@ msgstr "Tu peux encore dépenser :" msgid "Tu peux modifier tes paramètres de confidentialité ici ou dans la page profil." msgstr "Tu peux modifier tes paramètres de confidentialité ici ou dans la page profil." -#: src/features/bookOffer/pages/BookingConfirmation.tsx:46 +#: src/features/bookOffer/pages/BookingConfirmation.tsx:50 msgid "Tu peux retrouver toutes les informations concernant ta réservation sur l’application" msgstr "Tu peux retrouver toutes les informations concernant ta réservation sur l’application" @@ -1349,7 +1305,7 @@ msgstr "Voir le détail de l’offre" msgid "Voir les disponibilités" msgstr "Voir les disponibilités" -#: src/features/bookOffer/pages/BookingConfirmation.tsx:49 +#: src/features/bookOffer/pages/BookingConfirmation.tsx:53 msgid "Voir ma réservation" msgstr "Voir ma réservation" @@ -1361,7 +1317,7 @@ msgstr "Voir plus d'informations" msgid "Vérifier mon identité" msgstr "Vérifier mon identité" -#: src/features/auth/signup/VerifyEligibility.tsx:26 +#: src/features/auth/signup/VerifyEligibility.tsx:30 msgid "Vérifier mon éligibilité" msgstr "Vérifier mon éligibilité" @@ -1385,6 +1341,14 @@ msgstr "autour de toi" msgid "c'est..." msgstr "c'est..." +#: src/features/home/pages/Home.tsx:63 +msgid "credit left on pass" +msgstr "Tu as {credit} sur ton pass" + +#: src/features/bookOffer/pages/BookingConfirmation.tsx:42 +msgid "credit left to spend" +msgstr "Il te reste encore {credit} à dépenser sur le pass !" + #: src/features/profile/components/ExBeneficiaryHeader.tsx:18 msgid "crédit expiré le {0}" msgstr "crédit expiré le {0}" @@ -1410,6 +1374,10 @@ msgstr "dans l’année de tes 18 ans, obtiens l’aide financière pass Culture msgid "durée" msgstr "durée" +#: src/features/profile/components/NonBeneficiaryHeader.tsx:39 +msgid "elibility deadline" +msgstr "Tu es éligible jusqu'au {deadline}" + #: src/features/offer/pages/OfferDescription.tsx:11 msgid "en détails" msgstr "en détails" @@ -1418,6 +1386,10 @@ msgstr "en détails" msgid "en ligne" msgstr "en ligne" +#: src/features/profile/components/NonBeneficiaryHeader.tsx:49 +msgid "enjoy deposit" +msgstr "Profite de {deposit}" + #: src/features/firstTutorial/pages/FirstTutorial/components/SecondCard.tsx:13 msgid "et si tu es..." msgstr "et si tu es..." @@ -1427,6 +1399,10 @@ msgstr "et si tu es..." msgid "genre" msgstr "genre" +#: src/features/home/pages/Home.tsx:53 +msgid "hello name" +msgstr "Bonjour {name}" + #: src/features/offer/pages/OfferDescription.tsx:17 msgid "interprète" msgstr "interprète" @@ -1435,6 +1411,10 @@ msgstr "interprète" msgid "intervenant" msgstr "intervenant" +#: src/features/bookings/helpers.ts:37 +msgid "le jour" +msgstr "Le {day}" + #: src/features/bookings/components/EndedBookingItem.tsx:59 #: src/features/bookings/components/EndedBookingItem.tsx:61 msgid "le {0}" @@ -1448,6 +1428,18 @@ msgstr "metteur en scène" msgid "montant déduit" msgstr "{price} seront déduits de ton crédit pass Culture" +#: src/features/auth/signup/VerifyEligibility.tsx:23 +msgid "need verify eligibility" +msgstr "Pour que tu puisses bénéficier de l’aide financière de {deposit} offerte par le Ministère de la Culture, nous avons besoin de vérifier ton éligibilité." + +#: src/features/bookings/components/CancelBookingModal.tsx:79 +msgid "not refunded because expired" +msgstr "Les {price} € ne seront pas recrédités sur ton pass Culture car il est expiré." + +#: src/features/profile/components/YoungerBadge.tsx:16 +msgid "patience enfin" +msgstr "Patience ! L’année de tes 18 ans, si tu fais partie d’un des départements éligibles, tu bénéficieras de {deposit} offerts à dépenser sur l’application." + #: src/features/bookOffer/components/BookingInformations.tsx:31 msgid "prix duo" msgstr "({price} x 2 places)" @@ -1456,6 +1448,10 @@ msgstr "({price} x 2 places)" msgid "quotidiennes" msgstr "quotidiennes" +#: src/features/bookings/components/CancelBookingModal.tsx:86 +msgid "refunded on your pass" +msgstr "{price} € seront recrédités sur ton pass Culture." + #: src/features/bookOffer/components/CancellationDetails.tsx:22 msgid "réservation annulable jusqu'au" msgstr "Cette réservation peut être annulée jusqu’au {date}" @@ -1465,6 +1461,10 @@ msgstr "Cette réservation peut être annulée jusqu’au {date}" msgid "sous genre" msgstr "sous genre" +#: src/features/favorites/atoms/Favorite.tsx:46 +msgid "starting from date" +msgstr "Dès le {date}" + #: src/features/auth/forgottenPassword/ForgottenPassword.tsx:112 #: src/features/auth/login/Login.tsx:119 #: src/features/auth/signup/SetEmail.tsx:66 @@ -1479,6 +1479,10 @@ msgstr "une initiative financée par le Ministère de la Culture." msgid "voir plus" msgstr "voir plus" +#: src/features/bookings/helpers.ts:54 +msgid "withdraw before date" +msgstr "À retirer avant le {dateLimit}" + #: src/features/bookings/components/OnGoingBookingsList.tsx:28 msgid "{0, plural, one {Réservation terminée} other {Réservations terminées}}" msgstr "{0, plural, one {Réservation terminée} other {Réservations terminées}}" @@ -1515,15 +1519,11 @@ msgstr "{onGoingBookingsCount, plural, one {# réservation en cours} other {# r msgid "À deux !" msgstr "À deux !" -#: src/features/bookings/helpers.ts:50 -msgid "À retirer avant le" -msgstr "À retirer avant le" - #: src/libs/fetch.ts:29 msgid "Échec de la requête {url}, code: {0}" msgstr "Échec de la requête {url}, code: {0}" -#: src/features/profile/components/NonBeneficiaryHeader.tsx:46 +#: src/features/profile/components/NonBeneficiaryHeader.tsx:53 msgid "à dépenser dans l'application" msgstr "à dépenser dans l'application" @@ -1534,7 +1534,3 @@ msgstr "à portée de main !" #: src/features/bookOffer/atoms/HourChoice.tsx:12 msgid "épuisé" msgstr "épuisé" - -#: src/features/bookings/components/CancelBookingModal.tsx:81 -msgid "€ seront recrédités sur ton pass Culture." -msgstr "€ seront recrédités sur ton pass Culture." From 8e79a77ee48e52c5948c112497b14a655d2ca142 Mon Sep 17 00:00:00 2001 From: Antoine Garcia Date: Mon, 19 Apr 2021 14:28:09 +0200 Subject: [PATCH 8/8] (PC-8087) use parameterized syntax - [batch 2] --- .../ReinitializePassword.tsx | 2 +- src/features/auth/signup/SetBirthday.tsx | 15 ++- src/features/auth/signup/SetEmail.tsx | 2 +- src/features/auth/signup/SetPostalCode.tsx | 2 +- .../__snapshots__/SetBirthday.test.tsx.snap | 3 +- .../bookings/components/EndedBookingItem.tsx | 11 +- src/features/offer/services/useShareOffer.ts | 6 +- .../components/ExBeneficiaryHeader.tsx | 6 +- src/features/profile/pages/ChangePassword.tsx | 8 +- src/libs/fetch.ts | 8 +- src/locales/fr/messages.po | 107 ++++++++++-------- 11 files changed, 107 insertions(+), 63 deletions(-) diff --git a/src/features/auth/forgottenPassword/ReinitializePassword.tsx b/src/features/auth/forgottenPassword/ReinitializePassword.tsx index 1661d8b0785..3758f9a68d9 100644 --- a/src/features/auth/forgottenPassword/ReinitializePassword.tsx +++ b/src/features/auth/forgottenPassword/ReinitializePassword.tsx @@ -100,7 +100,7 @@ export const ReinitializePassword = () => { diff --git a/src/features/auth/signup/SetBirthday.tsx b/src/features/auth/signup/SetBirthday.tsx index 7293ab8e9e2..f9c153157af 100644 --- a/src/features/auth/signup/SetBirthday.tsx +++ b/src/features/auth/signup/SetBirthday.tsx @@ -117,12 +117,14 @@ export const SetBirthday: FunctionComponent = ({ route }) => { return ( ) } - return + return ( + + ) } return ( @@ -176,9 +178,12 @@ export const SetBirthday: FunctionComponent = ({ route }) => { - {t`L’application pass Culture est accessible à tous. - Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de ${deposit} - proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture.`} + {t({ + id: 'application accessible pour certains départements', + values: { deposit }, + message: + 'L’application pass Culture est accessible à tous.\nSi tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de {deposit} proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture.', + })} diff --git a/src/features/auth/signup/SetEmail.tsx b/src/features/auth/signup/SetEmail.tsx index c848240d364..f315a54c0da 100644 --- a/src/features/auth/signup/SetEmail.tsx +++ b/src/features/auth/signup/SetEmail.tsx @@ -87,7 +87,7 @@ export const SetEmail: FunctionComponent = () => { /> diff --git a/src/features/auth/signup/SetPostalCode.tsx b/src/features/auth/signup/SetPostalCode.tsx index d80804e7a8f..3ab313f5d91 100644 --- a/src/features/auth/signup/SetPostalCode.tsx +++ b/src/features/auth/signup/SetPostalCode.tsx @@ -89,7 +89,7 @@ export const SetPostalCode: FunctionComponent = ({ route }) => { /> diff --git a/src/features/auth/signup/__snapshots__/SetBirthday.test.tsx.snap b/src/features/auth/signup/__snapshots__/SetBirthday.test.tsx.snap index f6e477e433a..a246d3b7ae7 100644 --- a/src/features/auth/signup/__snapshots__/SetBirthday.test.tsx.snap +++ b/src/features/auth/signup/__snapshots__/SetBirthday.test.tsx.snap @@ -985,8 +985,7 @@ Array [ } > L’application pass Culture est accessible à tous. -Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de 500 € -proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture. +Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de 500 € proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture. diff --git a/src/features/bookings/components/EndedBookingItem.tsx b/src/features/bookings/components/EndedBookingItem.tsx index 1ce6c7c8aef..ee08737a193 100644 --- a/src/features/bookings/components/EndedBookingItem.tsx +++ b/src/features/bookings/components/EndedBookingItem.tsx @@ -84,8 +84,13 @@ function getEndedBookingReason( } function getEndedBookingDateLabel(cancellationDate?: Date | null, dateUsed?: Date | null) { - if (dateUsed) return t`le ${formatToSlashedFrenchDate(new Date(dateUsed).toISOString())}` - if (cancellationDate) - return t`le ${formatToSlashedFrenchDate(new Date(cancellationDate).toISOString())}` + const endDate = dateUsed ?? cancellationDate + if (endDate) { + return t({ + id: 'jour de fin de résa', + values: { date: formatToSlashedFrenchDate(new Date(endDate).toISOString()) }, + message: 'le {date}', + }) + } return null } diff --git a/src/features/offer/services/useShareOffer.ts b/src/features/offer/services/useShareOffer.ts index 527f8b27887..b324099e167 100644 --- a/src/features/offer/services/useShareOffer.ts +++ b/src/features/offer/services/useShareOffer.ts @@ -13,7 +13,11 @@ import { useFunctionOnce } from './useFunctionOnce' const shareOffer = async (offer: OfferResponse) => { const { id, isDigital, name, venue } = offer const locationName = getLocationName(venue, isDigital) - const message = t`Retrouve "${name}" chez "${locationName}" sur le pass Culture` + const message = t({ + id: 'share offer message', + values: { name, locationName }, + message: 'Retrouve "{name}" chez "{locationName}" sur le pass Culture', + }) const url = generateLongFirebaseDynamicLink('offer', `id=${id}`) // url share content param is only for iOs, so we add url in message for android diff --git a/src/features/profile/components/ExBeneficiaryHeader.tsx b/src/features/profile/components/ExBeneficiaryHeader.tsx index 0130fb626b1..d743844ced5 100644 --- a/src/features/profile/components/ExBeneficiaryHeader.tsx +++ b/src/features/profile/components/ExBeneficiaryHeader.tsx @@ -24,7 +24,11 @@ export function ExBeneficiaryHeader(props: ExBeneficiaryHeaderProps) { {props.depositExpirationDate && ( - {t`crédit expiré le ${props.depositExpirationDate}`} + {t({ + id: 'credit expired on date', + values: { deadline: props.depositExpirationDate }, + message: 'crédit expiré le {deadline}', + })} )} diff --git a/src/features/profile/pages/ChangePassword.tsx b/src/features/profile/pages/ChangePassword.tsx index ae15a13b446..c166d4849c6 100644 --- a/src/features/profile/pages/ChangePassword.tsx +++ b/src/features/profile/pages/ChangePassword.tsx @@ -94,7 +94,11 @@ export function ChangePassword() { placeholder={t`Ton mot de passe actuel`} /> - + @@ -125,7 +129,7 @@ export function ChangePassword() { diff --git a/src/libs/fetch.ts b/src/libs/fetch.ts index 7748846829a..07a5b019244 100644 --- a/src/libs/fetch.ts +++ b/src/libs/fetch.ts @@ -42,7 +42,13 @@ async function makeExternalRequest( } if (!response.ok) { - throw new Error(t`Échec de la requête ${url}, code: ${response.status}`) + throw new Error( + t({ + id: 'request error', + values: { url, status: response.status }, + message: 'Échec de la requête {url}, code: {status}', + }) + ) } const json = await response.json() diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 629f25631a9..488f7f4ca9d 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -54,7 +54,7 @@ msgstr "Accepter et s’inscrire" msgid "Accessibilité" msgstr "Accessibilité" -#: src/features/bookings/pages/BookingDetails.tsx:149 +#: src/features/bookings/pages/BookingDetails.tsx:148 #: src/features/offer/services/useCtaWordingAndAction.ts:19 msgid "Accéder à l'offre" msgstr "Accéder à l'offre" @@ -108,7 +108,7 @@ msgid "Annuler" msgstr "Annuler" #: src/features/bookings/components/CancelBookingModal.tsx:58 -#: src/features/bookings/pages/BookingDetails.tsx:86 +#: src/features/bookings/pages/BookingDetails.tsx:85 msgid "Annuler ma réservation" msgstr "Annuler ma réservation" @@ -190,7 +190,7 @@ msgstr "CGU & Données" msgid "Catégories" msgstr "Catégories" -#: src/features/bookings/pages/BookingDetails.tsx:77 +#: src/features/bookings/pages/BookingDetails.tsx:76 msgid "Ce code à 6 caractères est ta preuve d’achat ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." msgstr "Ce code à 6 caractères est ta preuve d’achat ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." @@ -265,6 +265,10 @@ msgstr "Clique sur « Renvoyer l’e-mail » pour recevoir un nouveau lien." msgid "Code postal" msgstr "Code postal" +#: src/features/auth/signup/SetPostalCode.tsx:54 +msgid "Code postal introuvable" +msgstr "Code postal introuvable" + #: src/features/profile/pages/Profile.tsx:119 msgid "Comment ça marche ?" msgstr "Comment ça marche ?" @@ -426,7 +430,7 @@ msgstr "E-mail envoyé !" msgid "E-mail ou mot de passe incorrect." msgstr "E-mail ou mot de passe incorrect." -#: src/features/bookings/pages/BookingDetails.tsx:154 +#: src/features/bookings/pages/BookingDetails.tsx:153 msgid "EAN" msgstr "EAN" @@ -448,11 +452,11 @@ msgstr "En voir plus" msgid "Enregistrer" msgstr "Enregistrer" -#: src/libs/fetch.ts:37 +#: src/libs/fetch.ts:41 msgid "Erreur d'authentification" msgstr "Erreur d'authentification" -#: src/libs/fetch.ts:42 +#: src/libs/fetch.ts:46 msgid "Erreur lors de la récupération du token d'accès" msgstr "Erreur lors de la récupération du token d'accès" @@ -475,6 +479,7 @@ msgid "Filtrer" msgstr "Filtrer" #: src/features/auth/forgottenPassword/ForgottenPassword.tsx:74 +#: src/features/auth/signup/SetEmail.tsx:67 msgid "Format de l'e-mail incorrect" msgstr "Format de l'e-mail incorrect" @@ -537,7 +542,7 @@ msgstr "Inscris-toi pour accéder à toutes les fonctionnalités de l’applicat msgid "Je cherche" msgstr "Je cherche" -#: src/features/offer/services/useShareOffer.ts:24 +#: src/features/offer/services/useShareOffer.ts:28 msgid "Je t'invite à découvrir une super offre sur le pass Culture !" msgstr "Je t'invite à découvrir une super offre sur le pass Culture !" @@ -574,11 +579,15 @@ msgstr "L'offre n'a pas été ajoutée à tes favoris" msgid "L'offre n'a pas été retirée de tes favoris" msgstr "L'offre n'a pas été retirée de tes favoris" +#: src/features/auth/signup/SetBirthday.tsx:93 +msgid "La date choisie est incorrecte" +msgstr "La date choisie est incorrecte" + #: src/features/bookings/components/CancelBookingModal.tsx:27 msgid "La réservation a bien été annulée. Tu pourras la retrouver dans tes réservations terminées" msgstr "La réservation a bien été annulée. Tu pourras la retrouver dans tes réservations terminées" -#: src/features/bookings/pages/BookingDetails.tsx:95 +#: src/features/bookings/pages/BookingDetails.tsx:94 msgid "La réservation est annulable jusqu'au" msgstr "La réservation est annulable jusqu'au" @@ -633,16 +642,6 @@ msgstr "Localisation" msgid "L’application est actuellement en maintenance, mais sera à nouveau en ligne rapidement !" msgstr "L’application est actuellement en maintenance, mais sera à nouveau en ligne rapidement !" -#: src/features/auth/signup/SetBirthday.tsx:120 -msgid "" -"L’application pass Culture est accessible à tous.\n" -"Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de {deposit}\n" -"proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture." -msgstr "" -"L’application pass Culture est accessible à tous.\n" -"Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de {deposit}\n" -"proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture." - #: src/features/bookings/components/BookingPropertiesSection.tsx:19 msgid "Ma réservation" msgstr "Ma réservation" @@ -676,7 +675,7 @@ msgstr "Mes réservations terminées" msgid "Mettre en favoris" msgstr "Mettre en favoris" -#: src/features/bookings/pages/BookingDetails.tsx:176 +#: src/features/bookings/pages/BookingDetails.tsx:175 #: src/features/offer/pages/OfferBody.tsx:51 msgid "Modalités de retrait" msgstr "Modalités de retrait" @@ -685,7 +684,7 @@ msgstr "Modalités de retrait" msgid "Modifie ta recherche ou découvre toutes les offres" msgstr "Modifie ta recherche ou découvre toutes les offres" -#: src/features/profile/components/ExBeneficiaryHeader.tsx:23 +#: src/features/profile/components/ExBeneficiaryHeader.tsx:27 msgid "Mon crédit est expiré, que faire ?" msgstr "Mon crédit est expiré, que faire ?" @@ -700,6 +699,10 @@ msgstr "Mot de passe" msgid "Mot de passe actuel" msgstr "Mot de passe actuel" +#: src/features/profile/pages/ChangePassword.tsx:69 +msgid "Mot de passe incorrect" +msgstr "Mot de passe incorrect" + #: src/features/profile/pages/ChangePassword.tsx:41 msgid "Mot de passe modifié" msgstr "Mot de passe modifié" @@ -779,7 +782,7 @@ msgstr "Offre épuisée" msgid "On y va !" msgstr "On y va !" -#: src/features/errors/pages/AsyncErrorBoundary.tsx:45 +#: src/features/errors/pages/AsyncErrorBoundary.tsx:38 msgid "Oops !" msgstr "Oops !" @@ -956,10 +959,6 @@ msgstr "Retourner à l'offre" msgid "Retourner à ma réservation" msgstr "Retourner à ma réservation" -#: src/features/offer/services/useShareOffer.ts:20 -msgid "Retrouve \"{name}\" chez \"{locationName}\" sur le pass Culture" -msgstr "Retrouve \"{name}\" chez \"{locationName}\" sur le pass Culture" - #: src/libs/geolocation/components/GeolocationActivationModal.tsx:15 msgid "Retrouve toutes les offres autour de chez toi en activant les données de localisation." msgstr "Retrouve toutes les offres autour de chez toi en activant les données de localisation." @@ -972,7 +971,7 @@ msgstr "Retrouve toutes tes offres en un clin d'oeil en les ajoutant à tes favo msgid "Reçois nos recommandations culturelles à proximité de chez toi par e-mail." msgstr "Reçois nos recommandations culturelles à proximité de chez toi par e-mail." -#: src/features/errors/pages/AsyncErrorBoundary.tsx:62 +#: src/features/errors/pages/AsyncErrorBoundary.tsx:55 msgid "Réessayer" msgstr "Réessayer" @@ -1093,7 +1092,7 @@ msgstr "Ton compte te permettra de retrouver tous tes favoris en un clin d'oeil msgid "Ton crédit est expiré" msgstr "Ton crédit est expiré" -#: src/features/profile/components/ExBeneficiaryHeader.tsx:25 +#: src/features/profile/components/ExBeneficiaryHeader.tsx:29 msgid "Ton crédit pass Culture est arrivé à expiration mais l’aventure continue !" msgstr "Ton crédit pass Culture est arrivé à expiration mais l’aventure continue !" @@ -1154,7 +1153,11 @@ msgstr "Tu as 18 ans..." msgid "Tu as déjà un compte ?" msgstr "Tu as déjà un compte ?" -#: src/features/bookings/pages/BookingDetails.tsx:79 +#: src/features/auth/signup/SetBirthday.tsx:91 +msgid "Tu dois avoir 16 ans pour t'inscrire" +msgstr "Tu dois avoir 16 ans pour t'inscrire" + +#: src/features/bookings/pages/BookingDetails.tsx:78 msgid "Tu dois présenter ta carte d’identité et ce code de 6 caractères pour profiter de ta réservation ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." msgstr "Tu dois présenter ta carte d’identité et ce code de 6 caractères pour profiter de ta réservation ! N’oublie pas que tu n’as pas le droit de le revendre ou le céder." @@ -1174,7 +1177,7 @@ msgstr "Tu es éligible !" msgid "Tu n'es pas connecté !" msgstr "Tu n'es pas connecté !" -#: src/features/bookings/pages/BookingDetails.tsx:101 +#: src/features/bookings/pages/BookingDetails.tsx:100 msgid "Tu ne peux plus annuler ta réservation : elle devait être annulée avant le" msgstr "Tu ne peux plus annuler ta réservation : elle devait être annulée avant le" @@ -1200,7 +1203,7 @@ msgstr "Tu peux activer ou désactiver cette fonctionnalité dans les paramètre msgid "Tu peux activer ou désactiver cette fonctionnalité dans les paramètres de ton appareil." msgstr "Tu peux activer ou désactiver cette fonctionnalité dans les paramètres de ton appareil." -#: src/features/profile/components/ExBeneficiaryHeader.tsx:32 +#: src/features/profile/components/ExBeneficiaryHeader.tsx:36 msgid "Tu peux aussi découvrir les autres activités culturelles sur l'application mais leur réservation s'effectuera sur les sites de nos partenaires !" msgstr "Tu peux aussi découvrir les autres activités culturelles sur l'application mais leur réservation s'effectuera sur les sites de nos partenaires !" @@ -1216,7 +1219,7 @@ msgstr "Tu peux modifier tes paramètres de confidentialité ici ou dans la page msgid "Tu peux retrouver toutes les informations concernant ta réservation sur l’application" msgstr "Tu peux retrouver toutes les informations concernant ta réservation sur l’application" -#: src/features/profile/components/ExBeneficiaryHeader.tsx:29 +#: src/features/profile/components/ExBeneficiaryHeader.tsx:33 msgid "Tu peux toujours réserver les offres gratuites exclusives au pass Culture." msgstr "Tu peux toujours réserver les offres gratuites exclusives au pass Culture." @@ -1243,7 +1246,7 @@ msgstr "Un problème est survenu pendant la réinitialisation, réessaie plus ta msgid "Une erreur est survenue" msgstr "Une erreur est survenue" -#: src/features/errors/pages/AsyncErrorBoundary.tsx:52 +#: src/features/errors/pages/AsyncErrorBoundary.tsx:45 msgid "Une erreur s'est produite pendant le chargement." msgstr "Une erreur s'est produite pendant le chargement." @@ -1297,7 +1300,7 @@ msgstr "Veux-tu abandonner l'inscription ?" msgid "Voir l'itinéraire" msgstr "Voir l'itinéraire" -#: src/features/bookings/pages/BookingDetails.tsx:181 +#: src/features/bookings/pages/BookingDetails.tsx:180 msgid "Voir le détail de l’offre" msgstr "Voir le détail de l’offre" @@ -1329,6 +1332,12 @@ msgstr "Bienvenue à Pass Culture" msgid "ainsi que notre" msgstr "ainsi que notre" +#: src/features/auth/signup/SetBirthday.tsx:120 +msgid "application accessible pour certains départements" +msgstr "" +"L’application pass Culture est accessible à tous.\n" +"Si tu as 18 ans et que tu fais partie d’un département éligible, tu es éligible pour obtenir une aide financière de {deposit} proposée par le Ministère de la Culture qui sera créditée directement sur ton compte pass Culture." + #: src/features/offer/pages/OfferDescription.tsx:12 msgid "auteur" msgstr "auteur" @@ -1341,6 +1350,10 @@ msgstr "autour de toi" msgid "c'est..." msgstr "c'est..." +#: src/features/profile/components/ExBeneficiaryHeader.tsx:18 +msgid "credit expired on date" +msgstr "crédit expiré le {deadline}" + #: src/features/home/pages/Home.tsx:63 msgid "credit left on pass" msgstr "Tu as {credit} sur ton pass" @@ -1349,10 +1362,6 @@ msgstr "Tu as {credit} sur ton pass" msgid "credit left to spend" msgstr "Il te reste encore {credit} à dépenser sur le pass !" -#: src/features/profile/components/ExBeneficiaryHeader.tsx:18 -msgid "crédit expiré le {0}" -msgstr "crédit expiré le {0}" - #: src/features/bookOffer/atoms/HourChoice.tsx:9 #: src/features/bookOffer/components/BookDuoChoice.tsx:23 msgid "crédit insuffisant" @@ -1411,14 +1420,18 @@ msgstr "interprète" msgid "intervenant" msgstr "intervenant" +#: src/features/bookings/components/EndedBookingItem.tsx:60 +msgid "jour de fin de résa" +msgstr "le {date}" + #: src/features/bookings/helpers.ts:37 msgid "le jour" msgstr "Le {day}" -#: src/features/bookings/components/EndedBookingItem.tsx:59 -#: src/features/bookings/components/EndedBookingItem.tsx:61 -msgid "le {0}" -msgstr "le {0}" +#: src/features/auth/forgottenPassword/ReinitializePassword.tsx:68 +#: src/features/profile/pages/ChangePassword.tsx:87 +msgid "les mots de passe ne concordent pas" +msgstr "les mots de passe ne concordent pas" #: src/features/offer/pages/OfferDescription.tsx:21 msgid "metteur en scène" @@ -1452,10 +1465,18 @@ msgstr "quotidiennes" msgid "refunded on your pass" msgstr "{price} € seront recrédités sur ton pass Culture." +#: src/libs/fetch.ts:29 +msgid "request error" +msgstr "Échec de la requête {url}, code: {status}" + #: src/features/bookOffer/components/CancellationDetails.tsx:22 msgid "réservation annulable jusqu'au" msgstr "Cette réservation peut être annulée jusqu’au {date}" +#: src/features/offer/services/useShareOffer.ts:20 +msgid "share offer message" +msgstr "Retrouve \"{name}\" chez \"{locationName}\" sur le pass Culture" + #: src/features/offer/pages/OfferDescription.tsx:15 #: src/features/offer/pages/OfferDescription.tsx:19 msgid "sous genre" @@ -1519,10 +1540,6 @@ msgstr "{onGoingBookingsCount, plural, one {# réservation en cours} other {# r msgid "À deux !" msgstr "À deux !" -#: src/libs/fetch.ts:29 -msgid "Échec de la requête {url}, code: {0}" -msgstr "Échec de la requête {url}, code: {0}" - #: src/features/profile/components/NonBeneficiaryHeader.tsx:53 msgid "à dépenser dans l'application" msgstr "à dépenser dans l'application"