all repos — caroster @ 47a79f2e6db07a9c78fb34fadd808a6e69cfeb52

[Octree] Group carpool to your event https://caroster.io

feat: 🌐 Add translation contribution flow (#2)

* Added translation using Weblate (Swedish)

* Added translation using Weblate (Polish)

* Translated using Weblate (Polish)

Currently translated at 11.2% (27 of 241 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/pl/

* Translated using Weblate (Swedish)

Currently translated at 0.0% (0 of 241 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/sv/

* Translated using Weblate (Polish)

Currently translated at 11.2% (27 of 241 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/pl/

* Translated using Weblate (Polish)

Currently translated at 32.6% (79 of 242 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/pl/

* Translated using Weblate (Polish)

Currently translated at 54.9% (133 of 242 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/pl/

* chore: 🎨 Change locale files Tab size

* feat: 🔨 Add i18n format script

* chore: ⚰️ Remove obsolete code

* style: 🌐 Remove obsolete translations

* chore: 🔨 Add workaround script to remove unused translation keys

* style: 🌐 Synchronize locales

* style: 🌐 Format ongoing translations

* style: 🌐 Format ongoing translations

* Translated using Weblate (Swedish)

Currently translated at 8.8% (18 of 204 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/sv/

* chore: ⚰️  Remove useless code

* Added translation using Weblate (Portuguese)

* Deleted translation using Weblate (Portuguese)

* Translated using Weblate (Polish)

Currently translated at 54.4% (111 of 204 strings)

Translation: Caroster/Web app
Translate-URL: https://translate.codeberg.org/projects/caroster/web-app/pl/

* feat: 📝 Add translation instructions

---------

Co-authored-by: tygyh <jonis9898@hotmail.com>
Co-authored-by: ewm <gnu.ewm@protonmail.com>
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Tim Izzo <5ika@users.noreply.github.com>
Simon Mulquin simon@octree.ch
Wed, 22 Feb 2023 11:45:23 +0000
commit

47a79f2e6db07a9c78fb34fadd808a6e69cfeb52

parent

33d861180ca874afbd058b87d6ea87e540959047

M CONTRIBUTING.mdCONTRIBUTING.md

@@ -14,6 +14,14 @@ - Open a new GitHub pull request with the patch.

- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. +#### **Do you want to translate Caroster?** + +- Go to [the weblate project](https://translate.codeberg.org/projects/caroster/web-app/). + +- Read and accept the contributor agreement. + +- Refer to [Weblate documentation](https://docs.weblate.org/en/latest/user/translating.html) to learn how to use Weblate. + #### **Do you intend to add a new feature or change an existing one?** - Suggest your proposal by creating a [new issue](https://github.com/octree-gva/caroster/issues/new).
M frontend/containers/Languages/Icon.tsxfrontend/containers/Languages/Icon.tsx

@@ -58,7 +58,7 @@ key={locale}

disabled={language === SupportedLocales[locale]} onClick={() => onConfirm(SupportedLocales[locale])} > - {t(`languages.${locale}`)} + {t(`PROTECTED.languages.${locale}`)} </MenuItem> ))} </Menu>
D frontend/containers/OnBoardingTour/index.tsx

@@ -1,44 +0,0 @@

-import Joyride from 'react-joyride'; -import {useTheme} from '@mui/material/styles'; -import {useTranslation} from 'react-i18next'; -import useTour from '../../hooks/useTour'; - -interface Props {} - -const OnBoardingTour = (props: Props) => { - const theme = useTheme(); - const {t} = useTranslation(); - const {run, steps, step, onTourChange} = useTour(); - const translateStep = ({content, ...step}) => ({ - content: t(content), - ...step, - }); - - return ( - <Joyride - run={run} - steps={steps.map(translateStep)} - stepIndex={step} - callback={onTourChange} - locale={t('joyride', {returnObjects: true})} - continuous={true} - showProgress={true} - disableScrolling={true} - disableScrollParentFix={true} - scrollToFirstStep={false} - floaterProps={{ - disableAnimation: true, - }} - styles={{ - options: { - primaryColor: theme.palette.primary.main, - }, - tooltipContent: { - whiteSpace: 'pre-wrap', - }, - }} - /> - ); -}; - -export default OnBoardingTour;
A frontend/i18n-unused.js

@@ -0,0 +1,50 @@

+var fs = require('fs'); +var glob = require('glob'); + +glob( + '**/*.{js,jsx,ts,tsx}', + {ignore: ['**/node_modules/**'], absolute: true}, + function (err, filesPaths) { + if (err) { + console.log(err); + return; + } + + const i18nSourceFileRelativePath = '/locales/en.json'; + const i18nSourceFilePath = `${__dirname}${i18nSourceFileRelativePath}`; + + const sourceJson = fs.readFileSync(i18nSourceFilePath, 'UTF-8'); + const preSourceTranslations = JSON.parse(sourceJson); + const preKeys = Object.keys(preSourceTranslations); + + const keysToKeep = preKeys.filter(k => k.split('.')[0] === 'PROTECTED'); + filesPaths.forEach(filePath => { + const content = fs.readFileSync(filePath, 'UTF-8'); + + preKeys.forEach(key => { + if (content.includes(key) && !keysToKeep.includes(key)) { + keysToKeep.push(key); + + //supports plurals for english source translation + if (preKeys.includes(`${key}_plural`)) { + keysToKeep.push(`${key}_plural`); + } + } + }); + }); + + const sourceTranslationsToKeep = {}; + keysToKeep.sort(); + keysToKeep.forEach(key => { + sourceTranslationsToKeep[key] = preSourceTranslations[key]; + }); + + const sourceJsonToKeep = JSON.stringify(sourceTranslationsToKeep, null, 4); + fs.writeFileSync(i18nSourceFilePath, sourceJsonToKeep); + console.warn( + `This script is a workaround, ${ + preKeys.length - keysToKeep.length + } keys were removed from the ${i18nSourceFileRelativePath}, please make sure to review them before running i18n-format and adapt the code to avoid future deletion.` + ); + } +);
M frontend/locales/en.jsonfrontend/locales/en.json

@@ -1,248 +1,210 @@

{ - "supportCaroster": "Support Caroster", - "drawer.information": "Information", - "drawer.travels": "Travels", - "drawer.waitingList": "Waiting list", - "generic.me": "Me", - "generic.loading": "Loading ...", - "generic.close": "Close", - "generic.create": "Create", - "generic.delete": "Delete", - "generic.cancel": "Cancel", - "generic.remove": "Remove", - "generic.select": "Select", - "generic.save": "Save", - "generic.confirm": "Confirm", - "generic.clear": "Clear", - "generic.access": "Access", - "generic.errors.date_min": "Select an upcoming date", - "generic.errors.unknown": "An unknown error occurred", - "generic.errors.rejected": "Something went wrong", - "generic.errors.bad_data": "Something is missing", - "generic.errors.unauthorized": "Authentication problem", - "generic.errors.forbidden": "You do not have the right to do this action", - "generic.errors.not_found": "Resource not found", - "generic.errors.server": "Problem on our servers", - "generic.errors.timeout": "Unstable connection, retry later", - "languages.fr": "Français", - "languages.en": "English", - "tour.welcome.title": "Welcome to Caroster!", - "tour.welcome.text": "Would you like to take a feature tour?", - "tour.welcome.nope": "Later", - "tour.welcome.onboard": "OK, let's go!", - "tour.creator.step1": "Add a new car by clicking on this button.", - "tour.creator.step2": "The waiting list includes passengers who do not yet have a seat in a car.", - "tour.creator.step3": "The event information can be modified from this menu.", - "tour.creator.step4": "The event can be edited by clicking on the edit button.", - "tour.creator.step5": "You can copy the link from now on to share it via email, whatsapp, telegram, etc.", - "tour.user.step1": "Add a new car by clicking on this button.", - "tour.user.step2": "Would you like a place in a car? Register on the waiting list or directly in a car.", - "tour.user.step3": "The event information can be accessed from this menu.", - "tour.user.step4": "You can copy the link from now on to share it via email, whatsapp, telegram, etc.", - "joyride.back": "Back", - "joyride.close": "Close", - "joyride.last": "Finish", - "joyride.next": "Next", - "joyride.skip": "Skip", - "menu.about": "Discover more about Caroster", - "menu.code": "Caroster is Open Source", - "menu.tour": "Caroster tour", - "menu.dashboard": "My Carosters", - "menu.language": "Change language", - "menu.login": "Login", - "menu.logout": "Logout", - "menu.register": "Sign-Up", - "menu.new_event": "Create a caroster", - "menu.profile": "My profile", - "event.title": "{{title}} - Caroster", - "event.not_found": "Project not found", - "event.no_travel.title": "There are currently no cars", - "event.no_other_travel.title": "There are currently no other car", - "event.no_travel.desc": "1. Subscribe to the waiting list\n2. Share the event\n3. You will be notified when a new travel is added", - "event.details.modify": "Modify", - "event.details.save": "Save", - "event.fields.name": "Name of the event", - "event.fields.date": "Event date", - "event.fields.date_placeholder": "DD/MM/YYYY", - "event.fields.description": "Description", - "event.fields.address": "Event address", - "event.fields.empty": "Not specified", - "event.fields.link": "Share link", - "event.fields.link_desc": "Share this link with other people", - "event.fields.share": "Share", - "event.fields.copyLink": "Copy link", - "event.creation.title": "New event", - "event.creation.name": "Event name", - "event.creation.date": "Date of the event", - "event.creation.description": "Description", - "event.creation.description_helper": "Optionnal", - "event.creation.address": "Address of the event", - "event.creation.creator_email": "Your e-mail", - "event.creation.next": "Next", - "event.creation.newsletter": "Keep me informed of developments in Caroster by e-mail", - "event.creation.actions.dashboard": "$t(menu.dashboard)", - "event.creation.actions.see_profile": "Profile", - "event.creation.actions.about": "About Caroster", - "event.creation.addFromAccount.title": "Do you want to add this caroster to your events?", - "event.creation.addFromAccount.subtitle": "Create it from your account", - "event.creation.addFromAccount.actions.register": "$t(menu.register)", - "event.creation.addFromAccount.actions.login": "$t(menu.login)", - "event.actions.find_car": "Find a car", - "event.actions.copied": "The link has been copied to your clipboard", - "event.actions.noShareCapability": "Your browser cannot share nor copy to clipboard, please copy the page's URL instead.", - "event.actions.add_to_my_events": "Add to my events", - "event.actions.see_on_gmap": "See on a map", - "event.errors.cant_create": "Unable to create event", - "event.errors.cant_update": "Unable to modify event", - "event.add_to_my_events.login": "$t(menu.login)", - "event.add_to_my_events.register": "$t(menu.register)", - "event.add_to_my_events.title": "You must be logged in", - "event.add_to_my_events.text_html": "To add <strong> {{eventName}} </strong> to your carosters you must be logged in or create an account.", - "travel.fields.meeting_point": "Meeting place", - "travel.fields.details": "Notes", - "travel.fields.phone": "Contact", - "travel.creation.date": "Date of departure", - "travel.creation.time": "Departure time", - "travel.creation.title": "Add a car", - "travel.creation.car.title": "Car and driver", - "travel.creation.travel.title": "Travel", - "travel.creation.name": "Name of the car", - "travel.creation.seats": "Number of available seats", - "travel.creation.meeting": "Meeting place", - "travel.creation.phone": "Telephone number", - "travel.creation.phoneHelper.faq": "/en/faq", - "travel.creation.phoneHelper.why": "Why do we ask for a phone number ?", - "travel.creation.notes": "Additional information", - "travel.creation.created": "The car has been created", - "travel.creation.submit": "Add", - "travel.actions.remove_alert": "Are you sure you want to remove this car and add the subscribers to the waiting list?", - "travel.actions.removed": "The car has been removed and its passengers moved to the waiting list.", - "travel.vehicle.add": "Add a new vehicle", - "travel.vehicle.title": "My Vehicles", - "travel.vehicle.name": "Name of the vehicle", - "travel.vehicle.license_plate": "License plate", - "travel.vehicle.seats_number": "Seats number", - "travel.vehicle.empty": "There is no vehicle assigned to you. Click the button bellow in order to create one.", - "travel.passengers.empty": "Available seat", - "travel.passengers.add": "Add a passenger", - "travel.passengers.add_to_travel": "Add a passenger", - "travel.passengers.add_to_waitingList": "Add someone", - "travel.passengers.add_to_car": "Add to car", - "travel.passengers.add_me": "Add myself", - "travel.passengers.register_to_waiting_list": "Register to waiting list", - "travel.passengers.add_someone": "Add someone", - "travel.passengers.location": "Meeting place", - "travel.passengers.location_helper": "Indicate your preferred departure location", - "travel.passengers.location_placeholder": "Meeting place (optionnal)", - "travel.passengers.email": "Email", - "travel.passengers.email_placeholder": "Email", - "travel.passengers.email_placeholder_optional": "Email (optional)", - "travel.passengers.email_helpertext": "Email is not valid", - "travel.passengers.name": "Name", - "travel.passengers.name_placeholder": "Name", - "travel.errors.cant_create": "Unable to create the car", - "travel.errors.cant_update": "Unable to modify the car", - "travel.errors.cant_remove": "Unable to remove the car", - "travel.errors.cant_add_passenger": "Unable to add a passenger", - "travel.errors.cant_remove_passenger": "Unable to remove passenger", - "travel.errors.add_someone": "Add someone", - "travel.moved_to_waiting_list": "Passenger was moved to the waiting list.", - "dashboard.title": "$t(menu.dashboard)", - "dashboard.actions.see_event": "Go to caroster", - "dashboard.actions.add_event": "Create a caroster", - "dashboard.sections.future": "Caroster to come", - "dashboard.sections.future_plural": "Carosters to come", - "dashboard.sections.past": "Caroster passed", - "dashboard.sections.past_plural": "Past carosters", - "dashboard.sections.noDate": "Caroster without date", - "dashboard.sections.noDate_plural": "Carosters without date", - "dashboard.noEvent.title": "Welcome to Caroster", - "dashboard.noEvent.text_html": "Here you will see <strong> the carosters you are participating in </strong>, to start creating a Caroster!", - "dashboard.noEvent.create_event": "$t(menu.new_event)", - "profile.title": "Profile", - "profile.firstName": "First name", - "profile.lastName": "Last name", - "profile.email": "Email", - "profile.current_password": "Current password", - "profile.new_password": "New password", - "profile.password_changed": "Password updated", - "profile.updated": "Profile updated", - "profile.not_defined": "Not specified", - "profile.actions.save": "Save", - "profile.actions.edit": "Edit", - "profile.actions.change_password": "Change your password", - "profile.actions.logout": "Logout", - "profile.actions.cancel": "Cancel", - "profile.actions.save_new_password": "Update", - "profile.errors.password_nomatch": "Wrong password", - "passenger.title": "Waiting list", - "passenger.availability.seats": "{{count}} seat available", - "passenger.availability.seats_plural": "{{count}} seats available", - "passenger.creation.seats": "Number of passengers: {{seats}}", - "passenger.creation.departure": "Departure: ", - "passenger.creation.assign": "Assign", - "passenger.creation.available_cars": "Available cars", - "passenger.creation.no_travel.title": "No available seats at the moment...", - "passenger.creation.no_travel.desc": "{{name}} will receive an email when new cars will be available. You can share the event in the meantime.", - "passenger.actions.remove_alert": "Are you sure you want to remove <italic> <bold> {{name}} </bold> </italic> from the waitlist?", - "passenger.actions.place": "Assign", - "passenger.errors.cant_add_passenger": "Unable to add a passenger", - "passenger.errors.cant_save_passengers": "Unable to update passengers", - "passenger.errors.cant_remove_passenger": "Unable to remove the passenger", - "passenger.errors.cant_select_car": "Unable to select the car", - "passenger.success.added_self_to_car": "You have been added to this car", - "passenger.success.added_to_car": "{{name}} has been added to this car", - "passenger.success.added_self_to_waitlist": "You have been added to the waitlist. You'll be notified when new cars will be added.", - "passenger.success.added_to_waitlist": "{{name}} has been added to the waitlist", - "passenger.success.goToTravels": "Go to travels", - "passenger.input.email": "Your email", - "passenger.input.email_helper": "Optional - Get notified if cars are added", - "passenger.input.email_helper_car": "Optional", - "passenger.deleted": "The passenger has been deleted from the event.", - "signup.title": "Sign up", - "signup.create": "Create an account", - "signup.conditions": "By creating an account, you agree to [the terms of Caroster](https://caroster.io/en/terms)", - "signup.createForm": "Create an account\ninformation to fullfill", - "signup.with_mail": "Continue with an email", - "signup.email": "Email", - "signup.firstName": "First name", - "signup.lastName": "Last name", - "signup.password": "Password", - "signup.newsletter.consent": "I am interested in car pooling, I want to subscribe to the newsletter.", - "signup.submit": "Create your account", - "signup.account_already": "Do you already have an account ?", - "signup.login": "$t(menu.login)", - "signup.errors.email_taken": "This email is already associated with an account", - "confirm.creating": "Creating the account", - "confirm.title": "Confirm your email", - "confirm.text": "You have received an email with a link. Please click on this link to confirm your account.", - "confirm.login": "Return to the login screen", - "confirm.google.title": "Complete registration", - "signin.title": "Sign in", - "signin.email": "Email", - "signin.password": "Password", - "signin.login": "$t(menu.login)", - "signin.register": "$t(menu.register)", - "signin.emailConfirmation": "Your account has been confirmed. You can now login.", - "signin.errors.CredentialsSignin": "Check your email and password", - "signin.errors.EmailNotConfirmed": "Your account has not been confirmed. Please check your emails", - "signin.errors.OAuthCallback": "Impossible to use Google authentication currently", - "signin.or": "OR", - "signin.withGoogle": "Use a Google account", - "signin.no_account": "You don't have an account ?", - "lost_password.title": "Password recovery", - "lost_password.reset_title": "Definition of a new password", - "lost_password.message": "Lost your password?", - "lost_password.email": "Your email", - "lost_password.password": "New password", - "lost_password.password_confirmation": "Confirmation of the new password", - "lost_password.sent": "An email has been sent to {{email}}, with a link to recover your password", - "lost_password.error": "This email does not exist", - "lost_password.change_success": "Your password has been changed", - "lost_password.actions.send": "Send a recovery email", - "lost_password.actions.cancel": "Cancel", - "lost_password.actions.login": "Return to the login screen", - "lost_password.actions.resend": "Send again", - "lost_password.actions.register": "Create an account?", - "lost_password.actions.save_new_password": "Update" -} + "PROTECTED.languages.en": "English", + "PROTECTED.languages.fr": "Français", + "confirm.creating": "Creating the account", + "confirm.google.title": "Complete registration", + "confirm.text": "You have received an email with a link. Please click on this link to confirm your account.", + "confirm.title": "Confirm your email", + "dashboard.actions.add_event": "Create a caroster", + "dashboard.actions.see_event": "Go to caroster", + "dashboard.noEvent.create_event": "$t(menu.new_event)", + "dashboard.noEvent.text_html": "Here you will see <strong> the carosters you are participating in </strong>, to start creating a Caroster!", + "dashboard.noEvent.title": "Welcome to Caroster", + "dashboard.sections.future": "Caroster to come", + "dashboard.sections.future_plural": "Carosters to come", + "dashboard.sections.noDate": "Caroster without date", + "dashboard.sections.noDate_plural": "Carosters without date", + "dashboard.sections.past": "Caroster passed", + "dashboard.sections.past_plural": "Past carosters", + "dashboard.title": "$t(menu.dashboard)", + "drawer.information": "Information", + "drawer.travels": "Travels", + "drawer.waitingList": "Waiting list", + "event.actions.add_to_my_events": "Add to my events", + "event.actions.copied": "The link has been copied to your clipboard", + "event.actions.noShareCapability": "Your browser cannot share nor copy to clipboard, please copy the page's URL instead.", + "event.add_to_my_events.login": "$t(menu.login)", + "event.add_to_my_events.register": "$t(menu.register)", + "event.add_to_my_events.text_html": "To add <strong> {{eventName}} </strong> to your carosters you must be logged in or create an account.", + "event.add_to_my_events.title": "You must be logged in", + "event.creation.addFromAccount.actions.login": "$t(menu.login)", + "event.creation.addFromAccount.actions.register": "$t(menu.register)", + "event.creation.addFromAccount.subtitle": "Create it from your account", + "event.creation.addFromAccount.title": "Do you want to add this caroster to your events?", + "event.creation.address": "Address of the event", + "event.creation.creator_email": "Your e-mail", + "event.creation.date": "Date of the event", + "event.creation.description": "Description", + "event.creation.description_helper": "Optionnal", + "event.creation.name": "Event name", + "event.creation.newsletter": "Keep me informed of developments in Caroster by e-mail", + "event.creation.next": "Next", + "event.creation.title": "New event", + "event.details.modify": "Modify", + "event.details.save": "Save", + "event.errors.cant_create": "Unable to create event", + "event.errors.cant_update": "Unable to modify event", + "event.fields.address": "Event address", + "event.fields.copyLink": "Copy link", + "event.fields.date": "Event date", + "event.fields.date_placeholder": "DD/MM/YYYY", + "event.fields.description": "Description", + "event.fields.empty": "Not specified", + "event.fields.link": "Share link", + "event.fields.link_desc": "Share this link with other people", + "event.fields.name": "Name of the event", + "event.fields.share": "Share", + "event.no_other_travel.title": "There are currently no other car", + "event.no_travel.desc": "1. Subscribe to the waiting list\n2. Share the event\n3. You will be notified when a new travel is added", + "event.no_travel.title": "There are currently no cars", + "event.not_found": "Project not found", + "event.title": "{{title}} - Caroster", + "generic.access": "Access", + "generic.cancel": "Cancel", + "generic.confirm": "Confirm", + "generic.create": "Create", + "generic.delete": "Delete", + "generic.errors.not_found": "Resource not found", + "generic.errors.unknown": "An unknown error occurred", + "generic.me": "Me", + "generic.remove": "Remove", + "generic.save": "Save", + "generic.select": "Select", + "lost_password.actions.cancel": "Cancel", + "lost_password.actions.login": "Return to the login screen", + "lost_password.actions.register": "Create an account?", + "lost_password.actions.save_new_password": "Update", + "lost_password.actions.send": "Send a recovery email", + "lost_password.change_success": "Your password has been changed", + "lost_password.email": "Your email", + "lost_password.error": "This email does not exist", + "lost_password.message": "Lost your password?", + "lost_password.password": "New password", + "lost_password.password_confirmation": "Confirmation of the new password", + "lost_password.reset_title": "Definition of a new password", + "lost_password.sent": "An email has been sent to {{email}}, with a link to recover your password", + "lost_password.title": "Password recovery", + "menu.about": "Discover more about Caroster", + "menu.code": "Caroster is Open Source", + "menu.dashboard": "My Carosters", + "menu.language": "Change language", + "menu.login": "Login", + "menu.logout": "Logout", + "menu.new_event": "Create a caroster", + "menu.profile": "My profile", + "menu.register": "Sign-Up", + "passenger.actions.place": "Assign", + "passenger.actions.remove_alert": "Are you sure you want to remove <italic> <bold> {{name}} </bold> </italic> from the waitlist?", + "passenger.availability.seats": "{{count}} seat available", + "passenger.availability.seats_plural": "{{count}} seats available", + "passenger.creation.assign": "Assign", + "passenger.creation.available_cars": "Available cars", + "passenger.creation.departure": "Departure: ", + "passenger.creation.no_travel.desc": "{{name}} will receive an email when new cars will be available. You can share the event in the meantime.", + "passenger.creation.no_travel.title": "No available seats at the moment...", + "passenger.creation.seats": "Number of passengers: {{seats}}", + "passenger.deleted": "The passenger has been deleted from the event.", + "passenger.errors.cant_add_passenger": "Unable to add a passenger", + "passenger.errors.cant_remove_passenger": "Unable to remove the passenger", + "passenger.success.added_self_to_car": "You have been added to this car", + "passenger.success.added_self_to_waitlist": "You have been added to the waitlist. You'll be notified when new cars will be added.", + "passenger.success.added_to_car": "{{name}} has been added to this car", + "passenger.success.added_to_waitlist": "{{name}} has been added to the waitlist", + "passenger.success.goToTravels": "Go to travels", + "passenger.title": "Waiting list", + "profile.actions.cancel": "Cancel", + "profile.actions.change_password": "Change your password", + "profile.actions.edit": "Edit", + "profile.actions.logout": "Logout", + "profile.actions.save": "Save", + "profile.actions.save_new_password": "Update", + "profile.current_password": "Current password", + "profile.email": "Email", + "profile.errors.password_nomatch": "Wrong password", + "profile.firstName": "First name", + "profile.lastName": "Last name", + "profile.new_password": "New password", + "profile.not_defined": "Not specified", + "profile.password_changed": "Password updated", + "profile.title": "Profile", + "signin.email": "Email", + "signin.emailConfirmation": "Your account has been confirmed. You can now login.", + "signin.login": "$t(menu.login)", + "signin.no_account": "You don't have an account ?", + "signin.or": "OR", + "signin.password": "Password", + "signin.register": "$t(menu.register)", + "signin.title": "Sign in", + "signin.withGoogle": "Use a Google account", + "signup.account_already": "Do you already have an account ?", + "signup.conditions": "By creating an account, you agree to [the terms of Caroster](https://caroster.io/en/terms)", + "signup.create": "Create an account", + "signup.createForm": "Create an account\ninformation to fullfill", + "signup.email": "Email", + "signup.errors.email_taken": "This email is already associated with an account", + "signup.firstName": "First name", + "signup.lastName": "Last name", + "signup.login": "$t(menu.login)", + "signup.newsletter.consent": "I am interested in car pooling, I want to subscribe to the newsletter.", + "signup.password": "Password", + "signup.submit": "Create your account", + "signup.title": "Sign up", + "signup.with_mail": "Continue with an email", + "supportCaroster": "Support Caroster", + "tour.creator.step1": "Add a new car by clicking on this button.", + "tour.creator.step2": "The waiting list includes passengers who do not yet have a seat in a car.", + "tour.creator.step3": "The event information can be modified from this menu.", + "tour.creator.step4": "The event can be edited by clicking on the edit button.", + "tour.creator.step5": "You can copy the link from now on to share it via email, whatsapp, telegram, etc.", + "tour.user.step1": "Add a new car by clicking on this button.", + "tour.user.step2": "Would you like a place in a car? Register on the waiting list or directly in a car.", + "tour.user.step3": "The event information can be accessed from this menu.", + "tour.user.step4": "You can copy the link from now on to share it via email, whatsapp, telegram, etc.", + "tour.welcome.nope": "Later", + "tour.welcome.onboard": "OK, let's go!", + "tour.welcome.text": "Would you like to take a feature tour?", + "tour.welcome.title": "Welcome to Caroster!", + "travel.actions.remove_alert": "Are you sure you want to remove this car and add the subscribers to the waiting list?", + "travel.actions.removed": "The car has been removed and its passengers moved to the waiting list.", + "travel.creation.car.title": "Car and driver", + "travel.creation.created": "The car has been created", + "travel.creation.date": "Date of departure", + "travel.creation.meeting": "Meeting place", + "travel.creation.name": "Name of the car", + "travel.creation.notes": "Additional information", + "travel.creation.phone": "Telephone number", + "travel.creation.phoneHelper.faq": "/en/faq", + "travel.creation.phoneHelper.why": "Why do we ask for a phone number ?", + "travel.creation.seats": "Number of available seats", + "travel.creation.submit": "Add", + "travel.creation.time": "Departure time", + "travel.creation.title": "Add a car", + "travel.creation.travel.title": "Travel", + "travel.errors.cant_create": "Unable to create the car", + "travel.errors.cant_remove": "Unable to remove the car", + "travel.errors.cant_remove_passenger": "Unable to remove passenger", + "travel.errors.cant_update": "Unable to modify the car", + "travel.fields.details": "Notes", + "travel.fields.meeting_point": "Meeting place", + "travel.fields.phone": "Contact", + "travel.moved_to_waiting_list": "Passenger was moved to the waiting list.", + "travel.passengers.add": "Add a passenger", + "travel.passengers.add_me": "Add myself", + "travel.passengers.add_someone": "Add someone", + "travel.passengers.add_to_car": "Add to car", + "travel.passengers.email": "Email", + "travel.passengers.email_helpertext": "Email is not valid", + "travel.passengers.email_placeholder": "Email", + "travel.passengers.empty": "Available seat", + "travel.passengers.location": "Meeting place", + "travel.passengers.location_helper": "Indicate your preferred departure location", + "travel.passengers.location_placeholder": "Meeting place (optionnal)", + "travel.passengers.name": "Name", + "travel.passengers.name_placeholder": "Name", + "travel.passengers.register_to_waiting_list": "Register to waiting list", + "travel.vehicle.add": "Add a new vehicle", + "travel.vehicle.empty": "There is no vehicle assigned to you. Click the button bellow in order to create one.", + "travel.vehicle.name": "Name of the vehicle", + "travel.vehicle.seats_number": "Seats number", + "travel.vehicle.title": "My Vehicles" +}
M frontend/locales/fr.jsonfrontend/locales/fr.json

@@ -1,248 +1,210 @@

{ - "supportCaroster": "Soutenir Caroster", - "drawer.information": "Information", - "drawer.travels": "Trajets", - "drawer.waitingList": "Liste d'attente", - "generic.me": "Moi", - "generic.loading": "Chargement...", - "generic.close": "Fermer", - "generic.create": "Créer", - "generic.delete": "Supprimer", - "generic.cancel": "Annuler", - "generic.remove": "Supprimer", - "generic.select": "Selectionner", - "generic.save": "Enregistrer", - "generic.confirm": "Confirmer", - "generic.clear": "Effacer", - "generic.access": "Accéder", - "generic.errors.date_min": "Sélectionnez une date à venir", - "generic.errors.unknown": "Une erreur inconnue c'est produite", - "generic.errors.rejected": "Quelque chose c'est mal passé", - "generic.errors.bad_data": "Il manque quelque chose", - "generic.errors.unauthorized": "Problème d'authentification", - "generic.errors.forbidden": "Vous n'avez pas le droit de faire cette action", - "generic.errors.not_found": "Ressource introuvable", - "generic.errors.server": "Problème sur nos serveurs", - "generic.errors.timeout": "Connexion instable, re-essayé plus tard", - "languages.fr": "Français", - "languages.en": "English", - "tour.welcome.title": "Bienvenue sur Caroster !", - "tour.welcome.text": "Faire un tour des fonctionnalités.", - "tour.welcome.nope": "Pas maintenant", - "tour.welcome.onboard": "OK, c'est parti!", - "tour.creator.step1": "Ajoutez une nouvelle voiture en cliquant directement sur ce bouton.", - "tour.creator.step2": "La liste d'attente regroupe les personnes qui n'ont pas encore été placées dans une voiture.", - "tour.creator.step3": "Vous pouvez voir et modifier les informations de l'événement depuis ce menu.✨", - "tour.creator.step4": "Editez l'événement en cliquant sur le bouton d'édition.", - "tour.creator.step5": "Copiez le lien de l'événement dès maintenant pour le partager par email, whatsapp, telegram, etc.. ", - "tour.user.step1": "Ajoutez une nouvelle voiture en cliquant directement sur ce bouton.", - "tour.user.step2": "Vous aimeriez une place dans une voiture ? Inscrivez-vous dans la liste d'attente ou directement dans une voiture.", - "tour.user.step3": "Les informations de l'événement sont accessibles depuis ce menu.", - "tour.user.step4": "Copiez le lien de l'événement dès maintenant pour le partager par email, whatsapp, telegram, etc..", - "joyride.back": "Retour", - "joyride.close": "Fermer", - "joyride.last": "Terminer", - "joyride.next": "Suivant", - "joyride.skip": "Fermer", - "menu.about": "En savoir plus sur Caroster", - "menu.code": "Caroster est Open Source", - "menu.tour": "Découverte de Caroster", - "menu.dashboard": "Mes Carosters", - "menu.language": "Changer la langue", - "menu.login": "Se connecter", - "menu.logout": "Se déconnecter", - "menu.register": "Créer un compte", - "menu.new_event": "Créer un caroster", - "menu.profile": "Mon profil", - "event.title": "{{title}} - Caroster", - "event.not_found": "Projet introuvable", - "event.no_travel.title": "Pas de voitures pour le moment", - "event.no_other_travel.title": "Pas d'autres voitures pour le moment", - "event.no_travel.desc": "1. Inscrivez-vous dans la liste d’attente \n2. Partagez l’événement \n3. Vous serez notifié lorsqu’un nouveau trajet sera ajouté", - "event.details.modify": "Modifier", - "event.details.save": "Enregistrer", - "event.fields.name": "Nom de l'événement", - "event.fields.date": "Date de l'événement", - "event.fields.date_placeholder": "DD/MM/YYYY", - "event.fields.description": "Description", - "event.fields.address": "Adresse de l'événement", - "event.fields.empty": "Non précisé", - "event.fields.link": "Lien de partage", - "event.fields.link_desc": "Partager l'évènement à d'autres personnes", - "event.fields.share": "Partager", - "event.fields.copyLink": "Copier le lien", - "event.creation.title": "Nouvel évènement", - "event.creation.name": "Nom de l'événement", - "event.creation.date": "Date de l'événement", - "event.creation.description": "Description", - "event.creation.description_helper": "Optionnel", - "event.creation.address": "Adresse de l'événement", - "event.creation.creator_email": "Votre e-mail", - "event.creation.next": "Suivant", - "event.creation.newsletter": "Me tenir informé des évolutions de Caroster par e-mail", - "event.creation.actions.dashboard": "$t(menu.dashboard)", - "event.creation.actions.see_profile": "Profil", - "event.creation.actions.about": "À propos de Caroster", - "event.creation.addFromAccount.title": "Voulez-vous ajouter ce caroster à vos évènements ?", - "event.creation.addFromAccount.subtitle": "Créez-le depuis votre compte", - "event.creation.addFromAccount.actions.register": "$t(menu.register)", - "event.creation.addFromAccount.actions.login": "$t(menu.login)", - "event.actions.find_car": "Trouver une voiture", - "event.actions.copied": "Le lien a été copié dans votre presse-papier", - "event.actions.noShareCapability": "Votre navigateur ne permet pas de partager ou de copier dans le presse papier, veuillez copier l'URL de la page.", - "event.actions.add_to_my_events": "Ajouter à mes évènements", - "event.actions.see_on_gmap": "Voir sur une carte", - "event.errors.cant_create": "Impossible de créer l'événement", - "event.errors.cant_update": "Impossible de modifier l'événement", - "event.add_to_my_events.login": "$t(menu.login)", - "event.add_to_my_events.register": "$t(menu.register)", - "event.add_to_my_events.title": "Vous devez être connecté", - "event.add_to_my_events.text_html": "Pour ajouter <strong>{{eventName}}</strong> à vos carosters vous devez être connecté ou créer un compte.", - "travel.fields.meeting_point": "Lieu de rencontre", - "travel.fields.details": "Notes", - "travel.fields.phone": "Contact", - "travel.creation.date": "Date de départ", - "travel.creation.time": "Heure de départ", - "travel.creation.title": "Ajouter une voiture", - "travel.creation.car.title": "Voiture et contact", - "travel.creation.travel.title": "Trajet", - "travel.creation.name": "Nom de la voiture", - "travel.creation.seats": "Nombre de places disponibles", - "travel.creation.meeting": "Lieu de rencontre", - "travel.creation.phone": "Numéro de téléphone", - "travel.creation.phoneHelper.faq": "/fr/faq", - "travel.creation.phoneHelper.why": "Pourquoi le num. de tél. est-il demandé?", - "travel.creation.notes": "Infos complémentaires", - "travel.creation.created": "La voiture a été créée", - "travel.creation.submit": "Ajouter", - "travel.actions.remove_alert": "Voulez-vous vraiment supprimer cette voiture et ajouter les inscrits à la liste d'attente ?", - "travel.actions.removed": "La voiture a été supprimée et ses passagers déplacés dans la liste d'attente.", - "travel.vehicle.add": "Ajouter un nouveau véhicule", - "travel.vehicle.title": "Mes véhicules", - "travel.vehicle.name": "Nom du véhicule", - "travel.vehicle.license_plate": "Plaque d'immatriculation", - "travel.vehicle.seats_number": "Nombre de places", - "travel.vehicle.empty": "Vous n'avez aucun véhicule assigné. Utilisez le bouton ci-dessous pour en créer un.", - "travel.passengers.empty": "Place disponible", - "travel.passengers.add": "Ajouter un passager", - "travel.passengers.add_to_travel": "Ajouter un passager", - "travel.passengers.add_to_waitingList": "Ajouter quelqu'un", - "travel.passengers.add_me": "S'ajouter", - "travel.passengers.add_to_car": "Ajouter à la voiture", - "travel.passengers.register_to_waiting_list": "Inscription à la liste d'attente", - "travel.passengers.add_someone": "Ajouter quelqu'un", - "travel.passengers.location": "Lieu de rencontre", - "travel.passengers.location_helper": "Indiquez votre lieu de départ de préférence", - "travel.passengers.location_placeholder": "Lieu de rencontre (optionnel)", - "travel.passengers.email": "Email", - "travel.passengers.email_placeholder": "Email", - "travel.passengers.email_placeholder_optional": "Email (optionnel)", - "travel.passengers.email_helpertext": "Email non valide", - "travel.passengers.name": "Nom", - "travel.passengers.name_placeholder": "Nom", - "travel.errors.cant_create": "Impossible de créer la voiture", - "travel.errors.cant_update": "Impossible de modifier la voiture", - "travel.errors.cant_remove": "Impossible de supprimer la voiture", - "travel.errors.cant_add_passenger": "Impossible d'ajouter un passager", - "travel.errors.cant_remove_passenger": "Impossible de supprimer le passager", - "travel.moved_to_waiting_list": "Le passager a été déplacé dans la liste d'attente.", - "dashboard.title": "$t(menu.dashboard)", - "dashboard.actions.see_event": "Accéder au caroster", - "dashboard.actions.add_event": "Créer un caroster", - "dashboard.sections.future": "Caroster à venir", - "dashboard.sections.future_plural": "Carosters à venir", - "dashboard.sections.past": "Caroster passé", - "dashboard.sections.past_plural": "Carosters passés", - "dashboard.sections.noDate": "Caroster sans date", - "dashboard.sections.noDate_plural": "Carosters sans date", - "dashboard.noEvent.title": "Bienvenue sur Caroster", - "dashboard.noEvent.text_html": "Ici, vous y verrez <strong>les carosters auxquels vous participez</strong>, pour commencer créer un Caroster !", - "dashboard.noEvent.create_event": "$t(menu.new_event)", - "profile.title": "Profil", - "profile.firstName": "Prénom", - "profile.lastName": "Nom", - "profile.email": "Email", - "profile.current_password": "Mot de passe actuel", - "profile.new_password": "Nouveau mot de passe", - "profile.password_changed": "Mot de passe mis à jour", - "profile.updated": "Profil mis à jour", - "profile.not_defined": "Non précisé", - "profile.actions.save": "Enregistrer", - "profile.actions.edit": "Editer", - "profile.actions.change_password": "Changer son mot de passe", - "profile.actions.logout": "Se déconnecter", - "profile.actions.cancel": "Annuler", - "profile.actions.save_new_password": "Mettre à jour", - "profile.errors.password_nomatch": "Mot de passe erroné", - "passenger.title": "Liste d'attente", - "passenger.availability.seats": "{{count}} place disponible", - "passenger.availability.seats_plural": "{{count}} places disponibles", - "passenger.creation.seats": "Nombre de passagers: {{seats}}", - "passenger.creation.departure": "Depart: ", - "passenger.creation.assign": "Placer", - "passenger.creation.available_cars": "Voitures disponibles", - "passenger.creation.no_travel.title": "Pas de place disponible en ce moment...", - "passenger.creation.no_travel.desc": "{{name}} recevra un email lorsqu’une voiture sera ajoutée. En attendant, partagez l’événement", - "passenger.actions.remove_alert": "Voulez-vous vraiment supprimer <italic><bold>{{name}}</bold></italic> de la liste d'attente ?", - "passenger.actions.place": "Placer", - "passenger.errors.cant_add_passenger": "Impossible d'ajouter un passager", - "passenger.errors.cant_save_passengers": "Impossible de mettre à jour passagers", - "passenger.errors.cant_remove_passenger": "Impossible de retirer le passager", - "passenger.errors.cant_select_car": "Impossible de sélectionner la voiture", - "passenger.errors.car_full": "Voiture pleine. Impossible d'ajouter un passager supplémentaire", - "passenger.success.added_self_to_car": "Vous avez été ajouté à la voiture", - "passenger.success.added_to_car": "{{name}} a été ajouté à la voiture", - "passenger.success.added_self_to_waitlist": "Vous avez été ajouté à la liste d’attente. Vous serez notifié à l’ajout de nouvelles voitures", - "passenger.success.added_to_waitlist": "{{name}} ajouté à la liste d'attente", - "passenger.success.goToTravels": "Aller aux trajets", - "passenger.input.email": "Votre email", - "passenger.input.email_helper": "Optionnel - Soyez notifié si des voitures sont ajoutées", - "passenger.input.email_helper_car": "Optionnel", - "passenger.deleted": "Le passager a été supprimé de l'événement.", - "signup.title": "Inscription", - "signup.create": "Créer un compte", - "signup.conditions": "En créant un compte, vous acceptez [les conditions d’utilisations](https://caroster.io/fr/conditions-utilisation) de Caroster", - "signup.createForm": "Créer un compte\ninformations à remplir", - "signup.with_mail": "Continuer avec un email", - "signup.email": "Email", - "signup.firstName": "Prénom", - "signup.lastName": "Nom", - "signup.password": "Mot de passe", - "signup.newsletter.consent": "Le covoiturage m'intéresse, je souhaite recevoir des nouvelles de Caroster", - "signup.submit": "Créer un compte", - "signup.account_already": "Vous avez déjà un compte ?", - "signup.login": "$t(menu.login)", - "signup.errors.email_taken": "Cet email est déjà associé à un compte", - "confirm.creating": "Création de compte", - "confirm.title": "Confirmez votre email", - "confirm.text": "Vous avez reçu un email avec un lien. Merci de cliquer sur ce lien pour confirmer votre compte.", - "confirm.login": "Retour à l'écran de connexion", - "confirm.google.title": "Finaliser l'inscription", - "signin.title": "Se connecter", - "signin.email": "Email", - "signin.password": "Mot de passe", - "signin.login": "$t(menu.login)", - "signin.register": "$t(menu.register)", - "signin.emailConfirmation": "Votre compte a bien été confirmé. Vous pouvez maintenant vous connecter.", - "signin.errors.CredentialsSignin": "Vérifier votre email et mot de passe", - "signin.errors.EmailNotConfirmed": "Votre compte n'a pas été confirmé. Merci de vérifier vos emails", - "signin.errors.OAuthCallback": "Impossible d'utiliser la connexion avec un compte Google actuellement", - "signin.or": "OU", - "signin.withGoogle": "Continuer avec Google", - "signin.no_account": "Vous n'avez pas de compte ?", - "lost_password.title": "Récupération de mot de passe", - "lost_password.reset_title": "Définition d'un nouveau mot de passe", - "lost_password.message": "Mot de passe oublié ?", - "lost_password.email": "Votre email", - "lost_password.password": "Nouveau mot de passe", - "lost_password.password_confirmation": "Confirmation du nouveau mot de passe", - "lost_password.sent": "Un email a été envoyé à {{email}}, avec un lien pour récupérer votre mot de passe", - "lost_password.error": "Cet email n'existe pas", - "lost_password.change_success": "Votre mot de passe a été modifié", - "lost_password.actions.send": "Envoyer un email de récupération", - "lost_password.actions.cancel": "Annuler", - "lost_password.actions.login": "Retour à l'écran de connexion", - "lost_password.actions.resend": "Envoyer à nouveau", - "lost_password.actions.register": "Créer un compte ?", - "lost_password.actions.save_new_password": "Mettre à jour" -} + "PROTECTED.languages.en": "English", + "PROTECTED.languages.fr": "Français", + "confirm.creating": "Création de compte", + "confirm.google.title": "Finaliser l'inscription", + "confirm.text": "Vous avez reçu un email avec un lien. Merci de cliquer sur ce lien pour confirmer votre compte.", + "confirm.title": "Confirmez votre email", + "dashboard.actions.add_event": "Créer un caroster", + "dashboard.actions.see_event": "Accéder au caroster", + "dashboard.noEvent.create_event": "$t(menu.new_event)", + "dashboard.noEvent.text_html": "Ici, vous y verrez <strong>les carosters auxquels vous participez</strong>, pour commencer créer un Caroster !", + "dashboard.noEvent.title": "Bienvenue sur Caroster", + "dashboard.sections.future": "Caroster à venir", + "dashboard.sections.future_plural": "Carosters à venir", + "dashboard.sections.noDate": "Caroster sans date", + "dashboard.sections.noDate_plural": "Carosters sans date", + "dashboard.sections.past": "Caroster passé", + "dashboard.sections.past_plural": "Carosters passés", + "dashboard.title": "$t(menu.dashboard)", + "drawer.information": "Information", + "drawer.travels": "Trajets", + "drawer.waitingList": "Liste d'attente", + "event.actions.add_to_my_events": "Ajouter à mes évènements", + "event.actions.copied": "Le lien a été copié dans votre presse-papier", + "event.actions.noShareCapability": "Votre navigateur ne permet pas de partager ou de copier dans le presse papier, veuillez copier l'URL de la page.", + "event.add_to_my_events.login": "$t(menu.login)", + "event.add_to_my_events.register": "$t(menu.register)", + "event.add_to_my_events.text_html": "Pour ajouter <strong>{{eventName}}</strong> à vos carosters vous devez être connecté ou créer un compte.", + "event.add_to_my_events.title": "Vous devez être connecté", + "event.creation.addFromAccount.actions.login": "$t(menu.login)", + "event.creation.addFromAccount.actions.register": "$t(menu.register)", + "event.creation.addFromAccount.subtitle": "Créez-le depuis votre compte", + "event.creation.addFromAccount.title": "Voulez-vous ajouter ce caroster à vos évènements ?", + "event.creation.address": "Adresse de l'événement", + "event.creation.creator_email": "Votre e-mail", + "event.creation.date": "Date de l'événement", + "event.creation.description": "Description", + "event.creation.description_helper": "Optionnel", + "event.creation.name": "Nom de l'événement", + "event.creation.newsletter": "Me tenir informé des évolutions de Caroster par e-mail", + "event.creation.next": "Suivant", + "event.creation.title": "Nouvel évènement", + "event.details.modify": "Modifier", + "event.details.save": "Enregistrer", + "event.errors.cant_create": "Impossible de créer l'événement", + "event.errors.cant_update": "Impossible de modifier l'événement", + "event.fields.address": "Adresse de l'événement", + "event.fields.copyLink": "Copier le lien", + "event.fields.date": "Date de l'événement", + "event.fields.date_placeholder": "DD/MM/YYYY", + "event.fields.description": "Description", + "event.fields.empty": "Non précisé", + "event.fields.link": "Lien de partage", + "event.fields.link_desc": "Partager l'évènement à d'autres personnes", + "event.fields.name": "Nom de l'événement", + "event.fields.share": "Partager", + "event.no_other_travel.title": "Pas d'autres voitures pour le moment", + "event.no_travel.desc": "1. Inscrivez-vous dans la liste d’attente \n2. Partagez l’événement \n3. Vous serez notifié lorsqu’un nouveau trajet sera ajouté", + "event.no_travel.title": "Pas de voitures pour le moment", + "event.not_found": "Projet introuvable", + "event.title": "{{title}} - Caroster", + "generic.access": "Accéder", + "generic.cancel": "Annuler", + "generic.confirm": "Confirmer", + "generic.create": "Créer", + "generic.delete": "Supprimer", + "generic.errors.not_found": "Ressource introuvable", + "generic.errors.unknown": "Une erreur inconnue c'est produite", + "generic.me": "Moi", + "generic.remove": "Supprimer", + "generic.save": "Enregistrer", + "generic.select": "Selectionner", + "lost_password.actions.cancel": "Annuler", + "lost_password.actions.login": "Retour à l'écran de connexion", + "lost_password.actions.register": "Créer un compte ?", + "lost_password.actions.save_new_password": "Mettre à jour", + "lost_password.actions.send": "Envoyer un email de récupération", + "lost_password.change_success": "Votre mot de passe a été modifié", + "lost_password.email": "Votre email", + "lost_password.error": "Cet email n'existe pas", + "lost_password.message": "Mot de passe oublié ?", + "lost_password.password": "Nouveau mot de passe", + "lost_password.password_confirmation": "Confirmation du nouveau mot de passe", + "lost_password.reset_title": "Définition d'un nouveau mot de passe", + "lost_password.sent": "Un email a été envoyé à {{email}}, avec un lien pour récupérer votre mot de passe", + "lost_password.title": "Récupération de mot de passe", + "menu.about": "En savoir plus sur Caroster", + "menu.code": "Caroster est Open Source", + "menu.dashboard": "Mes Carosters", + "menu.language": "Changer la langue", + "menu.login": "Se connecter", + "menu.logout": "Se déconnecter", + "menu.new_event": "Créer un caroster", + "menu.profile": "Mon profil", + "menu.register": "Créer un compte", + "passenger.actions.place": "Placer", + "passenger.actions.remove_alert": "Voulez-vous vraiment supprimer <italic><bold>{{name}}</bold></italic> de la liste d'attente ?", + "passenger.availability.seats": "{{count}} place disponible", + "passenger.availability.seats_plural": "{{count}} places disponibles", + "passenger.creation.assign": "Placer", + "passenger.creation.available_cars": "Voitures disponibles", + "passenger.creation.departure": "Depart: ", + "passenger.creation.no_travel.desc": "{{name}} recevra un email lorsqu’une voiture sera ajoutée. En attendant, partagez l’événement", + "passenger.creation.no_travel.title": "Pas de place disponible en ce moment...", + "passenger.creation.seats": "Nombre de passagers: {{seats}}", + "passenger.deleted": "Le passager a été supprimé de l'événement.", + "passenger.errors.cant_add_passenger": "Impossible d'ajouter un passager", + "passenger.errors.cant_remove_passenger": "Impossible de retirer le passager", + "passenger.success.added_self_to_car": "Vous avez été ajouté à la voiture", + "passenger.success.added_self_to_waitlist": "Vous avez été ajouté à la liste d’attente. Vous serez notifié à l’ajout de nouvelles voitures", + "passenger.success.added_to_car": "{{name}} a été ajouté à la voiture", + "passenger.success.added_to_waitlist": "{{name}} ajouté à la liste d'attente", + "passenger.success.goToTravels": "Aller aux trajets", + "passenger.title": "Liste d'attente", + "profile.actions.cancel": "Annuler", + "profile.actions.change_password": "Changer son mot de passe", + "profile.actions.edit": "Editer", + "profile.actions.logout": "Se déconnecter", + "profile.actions.save": "Enregistrer", + "profile.actions.save_new_password": "Mettre à jour", + "profile.current_password": "Mot de passe actuel", + "profile.email": "Email", + "profile.errors.password_nomatch": "Mot de passe erroné", + "profile.firstName": "Prénom", + "profile.lastName": "Nom", + "profile.new_password": "Nouveau mot de passe", + "profile.not_defined": "Non précisé", + "profile.password_changed": "Mot de passe mis à jour", + "profile.title": "Profil", + "signin.email": "Email", + "signin.emailConfirmation": "Votre compte a bien été confirmé. Vous pouvez maintenant vous connecter.", + "signin.login": "$t(menu.login)", + "signin.no_account": "Vous n'avez pas de compte ?", + "signin.or": "OU", + "signin.password": "Mot de passe", + "signin.register": "$t(menu.register)", + "signin.title": "Se connecter", + "signin.withGoogle": "Continuer avec Google", + "signup.account_already": "Vous avez déjà un compte ?", + "signup.conditions": "En créant un compte, vous acceptez [les conditions d’utilisations](https://caroster.io/fr/conditions-utilisation) de Caroster", + "signup.create": "Créer un compte", + "signup.createForm": "Créer un compte\ninformations à remplir", + "signup.email": "Email", + "signup.errors.email_taken": "Cet email est déjà associé à un compte", + "signup.firstName": "Prénom", + "signup.lastName": "Nom", + "signup.login": "$t(menu.login)", + "signup.newsletter.consent": "Le covoiturage m'intéresse, je souhaite recevoir des nouvelles de Caroster", + "signup.password": "Mot de passe", + "signup.submit": "Créer un compte", + "signup.title": "Inscription", + "signup.with_mail": "Continuer avec un email", + "supportCaroster": "Soutenir Caroster", + "tour.creator.step1": "Ajoutez une nouvelle voiture en cliquant directement sur ce bouton.", + "tour.creator.step2": "La liste d'attente regroupe les personnes qui n'ont pas encore été placées dans une voiture.", + "tour.creator.step3": "Vous pouvez voir et modifier les informations de l'événement depuis ce menu.✨", + "tour.creator.step4": "Editez l'événement en cliquant sur le bouton d'édition.", + "tour.creator.step5": "Copiez le lien de l'événement dès maintenant pour le partager par email, whatsapp, telegram, etc.. ", + "tour.user.step1": "Ajoutez une nouvelle voiture en cliquant directement sur ce bouton.", + "tour.user.step2": "Vous aimeriez une place dans une voiture ? Inscrivez-vous dans la liste d'attente ou directement dans une voiture.", + "tour.user.step3": "Les informations de l'événement sont accessibles depuis ce menu.", + "tour.user.step4": "Copiez le lien de l'événement dès maintenant pour le partager par email, whatsapp, telegram, etc..", + "tour.welcome.nope": "Pas maintenant", + "tour.welcome.onboard": "OK, c'est parti!", + "tour.welcome.text": "Faire un tour des fonctionnalités.", + "tour.welcome.title": "Bienvenue sur Caroster !", + "travel.actions.remove_alert": "Voulez-vous vraiment supprimer cette voiture et ajouter les inscrits à la liste d'attente ?", + "travel.actions.removed": "La voiture a été supprimée et ses passagers déplacés dans la liste d'attente.", + "travel.creation.car.title": "Voiture et contact", + "travel.creation.created": "La voiture a été créée", + "travel.creation.date": "Date de départ", + "travel.creation.meeting": "Lieu de rencontre", + "travel.creation.name": "Nom de la voiture", + "travel.creation.notes": "Infos complémentaires", + "travel.creation.phone": "Numéro de téléphone", + "travel.creation.phoneHelper.faq": "/fr/faq", + "travel.creation.phoneHelper.why": "Pourquoi le num. de tél. est-il demandé?", + "travel.creation.seats": "Nombre de places disponibles", + "travel.creation.submit": "Ajouter", + "travel.creation.time": "Heure de départ", + "travel.creation.title": "Ajouter une voiture", + "travel.creation.travel.title": "Trajet", + "travel.errors.cant_create": "Impossible de créer la voiture", + "travel.errors.cant_remove": "Impossible de supprimer la voiture", + "travel.errors.cant_remove_passenger": "Impossible de supprimer le passager", + "travel.errors.cant_update": "Impossible de modifier la voiture", + "travel.fields.details": "Notes", + "travel.fields.meeting_point": "Lieu de rencontre", + "travel.fields.phone": "Contact", + "travel.moved_to_waiting_list": "Le passager a été déplacé dans la liste d'attente.", + "travel.passengers.add": "Ajouter un passager", + "travel.passengers.add_me": "S'ajouter", + "travel.passengers.add_someone": "Ajouter quelqu'un", + "travel.passengers.add_to_car": "Ajouter à la voiture", + "travel.passengers.email": "Email", + "travel.passengers.email_helpertext": "Email non valide", + "travel.passengers.email_placeholder": "Email", + "travel.passengers.empty": "Place disponible", + "travel.passengers.location": "Lieu de rencontre", + "travel.passengers.location_helper": "Indiquez votre lieu de départ de préférence", + "travel.passengers.location_placeholder": "Lieu de rencontre (optionnel)", + "travel.passengers.name": "Nom", + "travel.passengers.name_placeholder": "Nom", + "travel.passengers.register_to_waiting_list": "Inscription à la liste d'attente", + "travel.vehicle.add": "Ajouter un nouveau véhicule", + "travel.vehicle.empty": "Vous n'avez aucun véhicule assigné. Utilisez le bouton ci-dessous pour en créer un.", + "travel.vehicle.name": "Nom du véhicule", + "travel.vehicle.seats_number": "Nombre de places", + "travel.vehicle.title": "Mes véhicules" +}
A frontend/locales/pl.json

@@ -0,0 +1,254 @@

+{ + "PROTECTED.languages.en": "English", + "PROTECTED.languages.fr": "Français", + "confirm.creating": "Tworzenie konta", + "confirm.google.title": "Zakończ rejestrację", + "confirm.login": "Wróć do ekranu logowania", + "confirm.text": "Wysłano wiadomość e-mail z linkiem. Kliknij ten link, aby potwierdzić swoje konto.", + "confirm.title": "Potwierdź swój e-mail", + "dashboard.actions.add_event": "", + "dashboard.actions.see_event": "", + "dashboard.noEvent.create_event": "", + "dashboard.noEvent.text_html": "", + "dashboard.noEvent.title": "", + "dashboard.sections.future_0": "", + "dashboard.sections.future_1": "", + "dashboard.sections.future_2": "", + "dashboard.sections.noDate_0": "", + "dashboard.sections.noDate_1": "", + "dashboard.sections.noDate_2": "", + "dashboard.sections.past_0": "", + "dashboard.sections.past_1": "", + "dashboard.sections.past_2": "", + "dashboard.title": "", + "drawer.information": "Informacje", + "drawer.travels": "Podróże", + "drawer.waitingList": "Lista oczekujących", + "event.actions.add_to_my_events": "", + "event.actions.copied": "", + "event.actions.find_car": "", + "event.actions.noShareCapability": "", + "event.add_to_my_events.login": "", + "event.add_to_my_events.register": "", + "event.add_to_my_events.text_html": "", + "event.add_to_my_events.title": "", + "event.creation.actions.about": "O Caroster", + "event.creation.actions.dashboard": "$t(menu.dashboard)", + "event.creation.actions.see_profile": "Profil", + "event.creation.addFromAccount.actions.login": "", + "event.creation.addFromAccount.actions.register": "", + "event.creation.addFromAccount.subtitle": "", + "event.creation.addFromAccount.title": "", + "event.creation.address": "Miejsce wydarzenia", + "event.creation.creator_email": "Twój adres e-mail", + "event.creation.date": "Data wydarzenia", + "event.creation.description": "Opis", + "event.creation.description_helper": "Opcjonalne", + "event.creation.name": "Nazwa wydarzenia", + "event.creation.newsletter": "Informuj mnie o rozwoju Caroster przez e-mail", + "event.creation.next": "Dalej", + "event.creation.title": "Nowe wydarzenie", + "event.details.aboutCaroster": "", + "event.details.modify": "Modyfikuj", + "event.details.save": "Zapisz", + "event.errors.cant_create": "", + "event.errors.cant_update": "", + "event.fields.address": "Miejsce wydarzenia", + "event.fields.copyLink": "Kopiuj link", + "event.fields.date": "Data wydarzenia", + "event.fields.date_placeholder": "DD/MM/YYYY", + "event.fields.description": "Opis", + "event.fields.empty": "Nie określono", + "event.fields.link": "Udostępnij link", + "event.fields.link_desc": "Udostępnij ten link innym osobom", + "event.fields.name": "Nazwa wydarzenia", + "event.fields.share": "Udostępnij", + "event.no_other_travel.title": "Obecnie nie ma żadnych innych samochodów", + "event.no_travel.desc": "1. Zasubskrybuj listę oczekujących\n2. Udostępnij wydarzenie\n3. Dostaniesz powiadomienie kiedy zostanie dodana nowa podróż", + "event.no_travel.title": "Obecnie nie ma żadnych samochodów", + "event.not_found": "Nie znaleziono projektu", + "event.title": "{{title}} - Caroster", + "generic.access": "Dostęp", + "generic.cancel": "Anuluj", + "generic.clear": "Wyczyść", + "generic.close": "Zamknij", + "generic.confirm": "Potwierdź", + "generic.create": "Stwórz", + "generic.delete": "Usuń", + "generic.errors.bad_data": "Czegoś brakuje", + "generic.errors.date_min": "", + "generic.errors.forbidden": "Nie masz uprawnień do wykonania tej czynności", + "generic.errors.not_found": "Nie znaleziono zasobu", + "generic.errors.rejected": "Coś poszło nie tak", + "generic.errors.server": "Wystąpił problem z naszyn serwerem", + "generic.errors.timeout": "Niestabilne połączenie, spróbuj później", + "generic.errors.unauthorized": "Problem z uwierzytelnianiem", + "generic.errors.unknown": "Wystąpił nieznany błąd", + "generic.loading": "Ładowanie...", + "generic.me": "Ja", + "generic.remove": "Usuń", + "generic.save": "Zapisz", + "generic.select": "Wybierz", + "joyride.back": "Wstecz", + "joyride.close": "Zamknij", + "joyride.last": "Zakończ", + "joyride.next": "Dalej", + "joyride.skip": "Pomiń", + "languages.en": "English", + "languages.fr": "Français", + "lost_password.actions.cancel": "Anuluj", + "lost_password.actions.login": "Wróć do ekranu logowania", + "lost_password.actions.register": "Stworzyć konto?", + "lost_password.actions.resend": "Wyślij ponownie", + "lost_password.actions.save_new_password": "Aktualizuj", + "lost_password.actions.send": "", + "lost_password.change_success": "Twoje hasło zostało zmienione", + "lost_password.email": "Twój e-mail", + "lost_password.error": "Ten e-mail nie istnieje", + "lost_password.message": "", + "lost_password.password": "Nowe hasło", + "lost_password.password_confirmation": "Potwierdzenie nowego hasła", + "lost_password.reset_title": "Definiowanie nowego hasła", + "lost_password.sent": "", + "lost_password.title": "Odzyskiwanie hasła", + "menu.about": "Dowiedz się więcej o Caroster", + "menu.code": "Caroster jest Open Source", + "menu.dashboard": "", + "menu.language": "Zmień język", + "menu.login": "Zaloguj się", + "menu.logout": "Wyloguj się", + "menu.new_event": "", + "menu.profile": "Mój profil", + "menu.register": "Zarejestruj się", + "menu.tour": "", + "passenger.actions.place": "Przypisz", + "passenger.actions.remove_alert": "Czy na pewno chcesz usunąć <italic> <bold> {{name}} </bold> </italic> z listy oczekujących?", + "passenger.availability.seats_0": "", + "passenger.availability.seats_1": "", + "passenger.availability.seats_2": "", + "passenger.creation.assign": "", + "passenger.creation.available_cars": "", + "passenger.creation.departure": "", + "passenger.creation.no_travel.desc": "", + "passenger.creation.no_travel.title": "", + "passenger.creation.seats": "", + "passenger.deleted": "Pasażer został usunięty z wydarzenia.", + "passenger.errors.cant_add_passenger": "Nie można dodać pasażera", + "passenger.errors.cant_remove_passenger": "Nie można usunąć pasażera", + "passenger.errors.cant_save_passengers": "Nie można aktualizować pasażera", + "passenger.errors.cant_select_car": "Nie można wybrać samochodu", + "passenger.input.email": "Twój e-mail", + "passenger.input.email_helper": "", + "passenger.input.email_helper_car": "Opcjonalne", + "passenger.success.added_self_to_car": "Dodano cię do tego samochodu", + "passenger.success.added_self_to_waitlist": "Dodano cię do listy oczekujących. Otrzymasz powiadomienie, gdy zostaną dodane nowe samochody.", + "passenger.success.added_to_car": "Dodano {{name}} do tego samochodu", + "passenger.success.added_to_waitlist": "Dodano {{name}} do listy oczekujących", + "passenger.success.goToTravels": "", + "passenger.title": "", + "profile.actions.cancel": "", + "profile.actions.change_password": "", + "profile.actions.edit": "", + "profile.actions.logout": "", + "profile.actions.save": "", + "profile.actions.save_new_password": "", + "profile.current_password": "", + "profile.email": "", + "profile.errors.password_nomatch": "", + "profile.firstName": "", + "profile.lastName": "", + "profile.new_password": "", + "profile.not_defined": "", + "profile.password_changed": "", + "profile.title": "", + "profile.updated": "", + "signin.email": "E-mail", + "signin.emailConfirmation": "Twoje konto zostało potwierdzone. Teraz można się zalogować.", + "signin.errors.CredentialsSignin": "Sprawdź swój e-mail i hasło", + "signin.errors.EmailNotConfirmed": "", + "signin.errors.OAuthCallback": "", + "signin.login": "$t(menu.login)", + "signin.no_account": "Nie masz konta?", + "signin.or": "LUB", + "signin.password": "Hasło", + "signin.register": "$t(menu.register)", + "signin.title": "Sign in", + "signin.withGoogle": "Użyj konta Google", + "signup.account_already": "Czy masz już konto?", + "signup.conditions": "Tworząc konto, zgadzasz się na [warunki korzystania z Caroster](https://caroster.io/en/terms)", + "signup.create": "Stwórz konto", + "signup.createForm": "Stwórz konto\ninformacje do wypełnienia", + "signup.email": "E-mail", + "signup.errors.email_taken": "Ten adres e-mail jest już powiązany z kontem", + "signup.firstName": "Imię", + "signup.lastName": "Nazwisko", + "signup.login": "$t(menu.login)", + "signup.newsletter.consent": "Interesuje mnie car pooling, chcę zapisać się do newslettera.", + "signup.password": "Hasło", + "signup.submit": "Stwórz swoje konto", + "signup.title": "Załóż konto", + "signup.with_mail": "Kontynuuj z e-mailem", + "supportCaroster": "Wesprzyj Caroster", + "tour.creator.step1": "Dodaj nowy samochód klikając ten przycisk.", + "tour.creator.step2": "Lista oczekujących obejmuje pasażerów, którzy nie mają jeszcze miejsca w samochodzie.", + "tour.creator.step3": "Informacje o wydarzeniu można modyfikować w tym menu.", + "tour.creator.step4": "Wydarzenie można edytować, klikając przycisk edycji.", + "tour.creator.step5": "Od teraz możesz skopiować link, aby udostępnić go za pośrednictwem poczty e-mail, WhatsAppa, Telegrama itp.", + "tour.user.step1": "Dodaj nowy samochód, klikając ten przycisk.", + "tour.user.step2": "", + "tour.user.step3": "Dostęp do informacji o wydarzeniu można uzyskać z tego menu.", + "tour.user.step4": "Od teraz możesz skopiować link, aby udostępnić go za pośrednictwem poczty e-mail, WhatsAppa, Telegrama itp.", + "tour.welcome.nope": "Później", + "tour.welcome.onboard": "Tak, ruszajmy!", + "tour.welcome.text": "Czy chcesz zobaczyć w prezentację naszych funkcji?", + "tour.welcome.title": "Witamy w Caroster!", + "travel.actions.remove_alert": "", + "travel.actions.removed": "", + "travel.creation.car.title": "", + "travel.creation.created": "", + "travel.creation.date": "", + "travel.creation.meeting": "", + "travel.creation.name": "", + "travel.creation.notes": "", + "travel.creation.phone": "", + "travel.creation.phoneHelper.faq": "", + "travel.creation.phoneHelper.why": "", + "travel.creation.seats": "", + "travel.creation.submit": "", + "travel.creation.time": "", + "travel.creation.title": "", + "travel.creation.travel.title": "", + "travel.errors.add_someone": "", + "travel.errors.cant_add_passenger": "", + "travel.errors.cant_create": "", + "travel.errors.cant_remove": "", + "travel.errors.cant_remove_passenger": "", + "travel.errors.cant_update": "", + "travel.fields.details": "", + "travel.fields.meeting_point": "", + "travel.fields.phone": "", + "travel.moved_to_waiting_list": "", + "travel.passengers.add": "", + "travel.passengers.add_me": "", + "travel.passengers.add_someone": "", + "travel.passengers.add_to_car": "", + "travel.passengers.add_to_travel": "", + "travel.passengers.add_to_waitingList": "", + "travel.passengers.email": "Email", + "travel.passengers.email_helpertext": "", + "travel.passengers.email_placeholder": "Email", + "travel.passengers.email_placeholder_optional": "", + "travel.passengers.empty": "", + "travel.passengers.location": "", + "travel.passengers.location_helper": "", + "travel.passengers.location_placeholder": "", + "travel.passengers.name": "", + "travel.passengers.name_placeholder": "", + "travel.passengers.register_to_waiting_list": "", + "travel.vehicle.add": "", + "travel.vehicle.empty": "", + "travel.vehicle.license_plate": "", + "travel.vehicle.name": "", + "travel.vehicle.seats_number": "", + "travel.vehicle.title": "" +}
A frontend/locales/sv.json

@@ -0,0 +1,210 @@

+{ + "PROTECTED.languages.en": "English", + "PROTECTED.languages.fr": "Français", + "confirm.creating": "Skapar kontot", + "confirm.google.title": "Färdigställ registrering", + "confirm.text": "Du har fått ett E-mail med en länk. Klicka på den här länken för att bekräfta ditt konto.", + "confirm.title": "Bekräfta din E-mailadress", + "dashboard.actions.add_event": "Skapa en caroster", + "dashboard.actions.see_event": "Gå till caroster", + "dashboard.noEvent.create_event": "$t(menu.new_event)", + "dashboard.noEvent.text_html": "Här kommer du att se <strong> de carosters du deltar i </strong>, för att börja skapa en Caroster!", + "dashboard.noEvent.title": "Välkommen till Caroster", + "dashboard.sections.future": "Kommande Caroster", + "dashboard.sections.future_plural": "Kommande Carosters", + "dashboard.sections.noDate": "Caroster utan datum", + "dashboard.sections.noDate_plural": "Carosters utan datum", + "dashboard.sections.past": "", + "dashboard.sections.past_plural": "", + "dashboard.title": "$t(menu.dashboard)", + "drawer.information": "", + "drawer.travels": "", + "drawer.waitingList": "", + "event.actions.add_to_my_events": "", + "event.actions.copied": "", + "event.actions.noShareCapability": "", + "event.add_to_my_events.login": "$t(menu.login)", + "event.add_to_my_events.register": "$t(menu.register)", + "event.add_to_my_events.text_html": "", + "event.add_to_my_events.title": "", + "event.creation.addFromAccount.actions.login": "", + "event.creation.addFromAccount.actions.register": "", + "event.creation.addFromAccount.subtitle": "", + "event.creation.addFromAccount.title": "", + "event.creation.address": "", + "event.creation.creator_email": "", + "event.creation.date": "", + "event.creation.description": "", + "event.creation.description_helper": "", + "event.creation.name": "", + "event.creation.newsletter": "", + "event.creation.next": "", + "event.creation.title": "", + "event.details.modify": "", + "event.details.save": "", + "event.errors.cant_create": "", + "event.errors.cant_update": "", + "event.fields.address": "", + "event.fields.copyLink": "", + "event.fields.date": "", + "event.fields.date_placeholder": "", + "event.fields.description": "", + "event.fields.empty": "", + "event.fields.link": "", + "event.fields.link_desc": "", + "event.fields.name": "", + "event.fields.share": "", + "event.no_other_travel.title": "", + "event.no_travel.desc": "", + "event.no_travel.title": "", + "event.not_found": "", + "event.title": "", + "generic.access": "", + "generic.cancel": "", + "generic.confirm": "", + "generic.create": "", + "generic.delete": "", + "generic.errors.not_found": "", + "generic.errors.unknown": "", + "generic.me": "", + "generic.remove": "", + "generic.save": "", + "generic.select": "", + "lost_password.actions.cancel": "", + "lost_password.actions.login": "", + "lost_password.actions.register": "", + "lost_password.actions.save_new_password": "", + "lost_password.actions.send": "", + "lost_password.change_success": "", + "lost_password.email": "", + "lost_password.error": "", + "lost_password.message": "", + "lost_password.password": "", + "lost_password.password_confirmation": "", + "lost_password.reset_title": "", + "lost_password.sent": "", + "lost_password.title": "", + "menu.about": "", + "menu.code": "Caroster is Open Source", + "menu.dashboard": "", + "menu.language": "", + "menu.login": "", + "menu.logout": "", + "menu.new_event": "", + "menu.profile": "", + "menu.register": "", + "passenger.actions.place": "", + "passenger.actions.remove_alert": "", + "passenger.availability.seats": "", + "passenger.availability.seats_plural": "", + "passenger.creation.assign": "", + "passenger.creation.available_cars": "", + "passenger.creation.departure": "", + "passenger.creation.no_travel.desc": "", + "passenger.creation.no_travel.title": "", + "passenger.creation.seats": "", + "passenger.deleted": "", + "passenger.errors.cant_add_passenger": "", + "passenger.errors.cant_remove_passenger": "", + "passenger.success.added_self_to_car": "", + "passenger.success.added_self_to_waitlist": "", + "passenger.success.added_to_car": "", + "passenger.success.added_to_waitlist": "", + "passenger.success.goToTravels": "", + "passenger.title": "", + "profile.actions.cancel": "", + "profile.actions.change_password": "", + "profile.actions.edit": "", + "profile.actions.logout": "", + "profile.actions.save": "", + "profile.actions.save_new_password": "", + "profile.current_password": "", + "profile.email": "", + "profile.errors.password_nomatch": "", + "profile.firstName": "", + "profile.lastName": "", + "profile.new_password": "", + "profile.not_defined": "", + "profile.password_changed": "", + "profile.title": "", + "signin.email": "", + "signin.emailConfirmation": "", + "signin.login": "", + "signin.no_account": "", + "signin.or": "", + "signin.password": "", + "signin.register": "", + "signin.title": "", + "signin.withGoogle": "", + "signup.account_already": "", + "signup.conditions": "", + "signup.create": "", + "signup.createForm": "", + "signup.email": "", + "signup.errors.email_taken": "", + "signup.firstName": "", + "signup.lastName": "", + "signup.login": "", + "signup.newsletter.consent": "", + "signup.password": "", + "signup.submit": "", + "signup.title": "", + "signup.with_mail": "", + "supportCaroster": "Support Caroster", + "tour.creator.step1": "", + "tour.creator.step2": "", + "tour.creator.step3": "", + "tour.creator.step4": "", + "tour.creator.step5": "", + "tour.user.step1": "", + "tour.user.step2": "", + "tour.user.step3": "", + "tour.user.step4": "", + "tour.welcome.nope": "", + "tour.welcome.onboard": "", + "tour.welcome.text": "", + "tour.welcome.title": "", + "travel.actions.remove_alert": "", + "travel.actions.removed": "", + "travel.creation.car.title": "", + "travel.creation.created": "", + "travel.creation.date": "", + "travel.creation.meeting": "", + "travel.creation.name": "", + "travel.creation.notes": "", + "travel.creation.phone": "", + "travel.creation.phoneHelper.faq": "", + "travel.creation.phoneHelper.why": "", + "travel.creation.seats": "", + "travel.creation.submit": "", + "travel.creation.time": "", + "travel.creation.title": "", + "travel.creation.travel.title": "", + "travel.errors.cant_create": "", + "travel.errors.cant_remove": "", + "travel.errors.cant_remove_passenger": "", + "travel.errors.cant_update": "", + "travel.fields.details": "", + "travel.fields.meeting_point": "", + "travel.fields.phone": "", + "travel.moved_to_waiting_list": "", + "travel.passengers.add": "", + "travel.passengers.add_me": "", + "travel.passengers.add_someone": "", + "travel.passengers.add_to_car": "", + "travel.passengers.email": "", + "travel.passengers.email_helpertext": "", + "travel.passengers.email_placeholder": "", + "travel.passengers.empty": "", + "travel.passengers.location": "", + "travel.passengers.location_helper": "", + "travel.passengers.location_placeholder": "", + "travel.passengers.name": "", + "travel.passengers.name_placeholder": "", + "travel.passengers.register_to_waiting_list": "", + "travel.vehicle.add": "", + "travel.vehicle.empty": "", + "travel.vehicle.name": "", + "travel.vehicle.seats_number": "", + "travel.vehicle.title": "" +}
M frontend/package.jsonfrontend/package.json

@@ -6,6 +6,8 @@ "scripts": {

"dev": "next dev", "build": "next build", "prestart": "yarn && yarn build", + "i18n-format": "sync-i18n --files 'locales/*.json' --primary en --newKeysEmpty true", + "i18n-unused": "node i18n-unused", "start": "next start", "lint": "next lint", "gql": "graphql-codegen --config codegen.yml"

@@ -47,6 +49,9 @@ "@types/react": "^18.0.18",

"eslint": "^7.31.0", "eslint-config-next": "^11.1.2", "eslint-config-prettier": "^8.3.0", + "fs": "^0.0.1-security", + "glob": "^8.1.0", + "i18next-json-sync": "^3.1.2", "ts-node": "^10.9.1" } }
M frontend/yarn.lockfrontend/yarn.lock

@@ -3783,6 +3783,11 @@ version "1.0.0"

resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fs@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"

@@ -3875,6 +3880,17 @@ inherits "2"

minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" globals@^11.1.0: version "11.12.0"

@@ -4062,6 +4078,15 @@ hyphenate-style-name@^1.0.3:

version "1.0.4" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +i18next-json-sync@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/i18next-json-sync/-/i18next-json-sync-3.1.2.tgz#996d6731fa03e6240c078b91c1402062869e65a5" + integrity sha512-svJXk7Zt40ddLZPJjRpDx2acEmvbyua9/ijiBc3LoR5urmOQpPf/vYJEBxbCoZKRXRVaj4S+Jqv1yPQ5pk3Zlg== + dependencies: + glob "^7.2.0" + json-stable-stringify "^1.0.1" + yargs "^17.0.0" i18next@^21.9.1: version "21.10.0"