Skip to content

Commit

Permalink
Merge pull request #992 from opentripplanner/add-toast-notifications
Browse files Browse the repository at this point in the history
Improve feedback when saving locations, add toast notifications
  • Loading branch information
binh-dam-ibigroup authored Sep 21, 2023
2 parents 30ae61a + ffaedd5 commit 6772fa9
Show file tree
Hide file tree
Showing 13 changed files with 227 additions and 151 deletions.
2 changes: 2 additions & 0 deletions i18n/en-US.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ actions:
emailVerificationResent: The email verification message has been resent.
genericError: "An error was encountered: {err}"
itineraryExistenceCheckFailed: Error checking whether your selected trip is possible.
mustBeLoggedInToSavePlace: Please log in to save locations.
placeRemembered: The settings for this place have been saved.
preferencesSaved: Your preferences have been saved.
smsInvalidCode: The code you entered is invalid. Please try again.
smsResendThrottled: >-
Expand Down
113 changes: 57 additions & 56 deletions i18n/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,32 +30,31 @@ actions:
No se puede guardar el plan: este plan no se pudo guardar debido a la
falta de capacidad en uno o más vehículos. Por favor, vuelva a planificar
su viaje.
maxTripRequestsExceeded: Número de solicitudes de viaje superadas sin resultados
válidos
maxTripRequestsExceeded: Número de solicitudes de viaje superadas sin resultados válidos
saveItinerariesError: "No se pudieron guardar los itinerarios: {err}"
setDateError: "Error al establecer la fecha:"
setGroupSizeError: "No se pudo establecer el tamaño del grupo:"
setPaymentError: "Error al configurar la información de pago:"
setRequestStatusError: "Error al establecer el estado de la solicitud:"
location:
deniedAccessAlert: >
El acceso a tu ubicación está bloqueado.
Para utilizar tu ubicación actual, activa los permisos de ubicación desde
tu navegador y vuelve a cargar la página.
geolocationNotSupportedError: Su navegador no admite la geolocalización
unknownPositionError: Error desconocido al obtener la posición
userDeniedPermission: Usuario sin permiso
deniedAccessAlert: "El acceso a tu ubicación está bloqueado.\nPara utilizar tu
ubicación actual, activa los permisos de ubicación desde tu navegador y vuelve
a cargar la página. \n"
map:
currentLocation: (Ubicación actual)
user:
accountDeleted: El ({email}) de su cuenta de usuario ha sido eliminado.
authTokenError: Error al obtener un token de autorización.
confirmDeleteMonitoredTrip: ¿Desea eliminar este viaje?
confirmDeletePlace: ¿Quiere eliminar este lugar?
emailVerificationResent: El mensaje de verificación de correo electrónico ha sido
reenviado.
emailVerificationResent: El mensaje de verificación de correo electrónico ha sido reenviado.
genericError: "Se ha encontrado un error: {err}"
itineraryExistenceCheckFailed: Comprobación de errores para ver si el viaje seleccionado
es posible.
itineraryExistenceCheckFailed: Comprobación de errores para ver si el viaje seleccionado es posible.
preferencesSaved: Sus preferencias se han guardado.
smsInvalidCode: El código introducido no es válido. Por favor, inténtelo de nuevo.
smsResendThrottled: >-
Expand Down Expand Up @@ -112,12 +111,12 @@ common:
"yes":
itineraryDescriptions:
calories: "{calories, number} kcal"
fareUnknown: No hay información de las tarifas
noItineraryToDisplay: No hay itinerario que mostrar.
relativeCo2: >
{co2} de CO₂ en {isMore, select, true {más} other {menos} } que conducir
solo
transfers: "{transfers, plural, =0 {} one {# transferencia} other {# transferencias}}"
fareUnknown: No hay información de las tarifas
linkOpensNewWindow: (Abre una nueva ventana)
modes:
bicycle_rent: Compartir bicicleta
Expand Down Expand Up @@ -178,8 +177,8 @@ components:
tooManyPlaces: Se alcanzó el máximo de lugares intermedios
AdvancedOptions:
bannedRoutes: Seleccionar rutas prohibidas…
preferredRoutes: Seleccionar rutas preferidas…
bikeTolerance: Tolerancia de las bicicletas
preferredRoutes: Seleccionar rutas preferidas…
walkTolerance: Tolerancia al andar
AfterSignInScreen:
mainTitle: Redirigiendo…
Expand Down Expand Up @@ -241,8 +240,7 @@ components:
destination: destino
origin: origen
planTripTooltip: Planificar viaje
validationMessage: "Por favor, defina los siguientes campos para planificar un
viaje: {issues}"
validationMessage: "Por favor, defina los siguientes campos para planificar un viaje: {issues}"
BeforeSignInScreen:
mainTitle: Iniciando sesión
message: >
Expand Down Expand Up @@ -373,6 +371,48 @@ components:
NotificationPrefsPane:
noDeviceForPush: Regístrese con la aplicación móvil para acceder a esta configuración.
notificationChannelPrompt: "Recibir notificaciones para sus viajes guardados por:"
OTP2ErrorRenderer:
LOCATION_NOT_FOUND:
body: >-
{inputFieldsCount, plural, =0 {} one {localización es} other
{localizaciones son}} no están cerca de ninguna calle.
header: No se puede acceder a la ubicación
NO_STOPS_IN_RANGE:
body: >-
{inputFieldsCount, plural, =0 {} one {ubicación es} other {ubicaciones
son}} no están cerca de ninguna parada del transporte.
header: Sin paradas cerca
NO_TRANSIT_CONNECTION:
body: >-
No se encontró ninguna conexión entre tu origen y destino en el día
seleccionado, utilizando los tipos de vehículos que seleccionaste.
header: Sin conexiones
NO_TRANSIT_CONNECTION_IN_SEARCH_WINDOW:
body: >-
Se encontró una conexión, pero estaba fuera de las opciones de la
búsqueda, intenta ajustar las opciones de la búsqueda, usando los tipos
de vehículos que seleccionaste.
header: Sin conexiones por el criterio de la búsqueda
OUTSIDE_BOUNDS:
body: >-
{inputFieldsCount, plural, =0 {} one {localización es} other
{localizaciones son}} no están en los límites del planificador de
viajes.
header: Ubicación fuera de los límites
OUTSIDE_SERVICE_PERIOD:
body: >-
La fecha específicada está fuera del rango de los datos disponibles para
la búsqueda de los viajes.
header: Fuera de plazo
SYSTEM_ERROR:
body: Se ha producido un error desconocido en la búsqueda.
header: Error en el planificador de los viajes
WALKING_BETTER_THAN_TRANSIT:
body: Puede completar esta ruta más rápido caminando.
header: El transporte público no es la forma más rápida de hacer este viaje
inputFields:
FROM: Procedencia
TO: Destino
PhoneNumberEditor:
changeNumber: Cambiar número de teléfono
invalidCode: Introduzca 6 dígitos para el código de validación.
Expand Down Expand Up @@ -502,8 +542,7 @@ components:
header: ¡La sesión está a punto de terminar!
keepSession: Continuar sesión
SimpleRealtimeAnnotation:
usingRealtimeInfo: Este viaje utiliza información de tráfico y retrasos en tiempo
real
usingRealtimeInfo: Este viaje utiliza información de tráfico y retrasos en tiempo real
StackedPaneDisplay:
savePreferences: Guardar preferencias
StopScheduleTable:
Expand Down Expand Up @@ -566,19 +605,16 @@ components:
travelingAt: Viajando a {milesPerHour}
vehicleName: Vehículo {vehicleNumber}
TripBasicsPane:
checkingItineraryExistence: Comprobación de la existencia de itinerarios para
cada día de la semana…
checkingItineraryExistence: Comprobación de la existencia de itinerarios para cada día de la semana…
selectAtLeastOneDay: Por favor, seleccione al menos un día para el seguimiento.
tripDaysPrompt: ¿Qué días hace este viaje?
tripIsAvailableOnDaysIndicated: Su viaje está disponible en los días de la semana
indicados anteriormente.
tripIsAvailableOnDaysIndicated: Su viaje está disponible en los días de la semana indicados anteriormente.
tripNamePrompt: "Por favor, indique un nombre para este viaje:"
tripNotAvailableOnDay: El viaje no está disponible el {repeatedDay}
unsavedChangesExistingTrip: >-
Todavía no ha guardado su viaje. Si abandona la página, los cambios se
perderán.
unsavedChangesNewTrip: Todavía no ha guardado su nuevo viaje. Si abandona la página,
se perderá.
unsavedChangesNewTrip: Todavía no ha guardado su nuevo viaje. Si abandona la página, se perderá.
TripNotificationsPane:
advancedSettings: Configuración avanzada
altRouteRecommended: Se recomienda una ruta alternativa o un punto de transferencia
Expand Down Expand Up @@ -738,41 +774,6 @@ components:
switcher: Botón de cambio
WelcomeScreen:
prompt: ¿A donde quiere ir?
OTP2ErrorRenderer:
SYSTEM_ERROR:
header: Error en el planificador de los viajes
body: Se ha producido un error desconocido en la búsqueda.
LOCATION_NOT_FOUND:
body: '{inputFieldsCount, plural, =0 {} one {localización es} other {localizaciones
son}} no están cerca de ninguna calle.'
header: No se puede acceder a la ubicación
NO_STOPS_IN_RANGE:
header: Sin paradas cerca
body: '{inputFieldsCount, plural, =0 {} one {ubicación es} other {ubicaciones
son}} no están cerca de ninguna parada del transporte.'
NO_TRANSIT_CONNECTION:
body: No se encontró ninguna conexión entre tu origen y destino en el día seleccionado,
utilizando los tipos de vehículos que seleccionaste.
header: Sin conexiones
inputFields:
FROM: Procedencia
TO: Destino
WALKING_BETTER_THAN_TRANSIT:
body: Puede completar esta ruta más rápido caminando.
header: El transporte público no es la forma más rápida de hacer este viaje
OUTSIDE_SERVICE_PERIOD:
header: Fuera de plazo
body: La fecha específicada está fuera del rango de los datos disponibles para
la búsqueda de los viajes.
OUTSIDE_BOUNDS:
header: Ubicación fuera de los límites
body: '{inputFieldsCount, plural, =0 {} one {localización es} other {localizaciones
son}} no están en los límites del planificador de viajes.'
NO_TRANSIT_CONNECTION_IN_SEARCH_WINDOW:
body: Se encontró una conexión, pero estaba fuera de las opciones de la búsqueda,
intenta ajustar las opciones de la búsqueda, usando los tipos de vehículos
que seleccionaste.
header: Sin conexiones por el criterio de la búsqueda
config:
accessModes:
bicycle: Tránsito + Bicicleta Personal
Expand Down
32 changes: 13 additions & 19 deletions i18n/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ _id: fr
_name: Exemple de traduction pour OTP-react-redux en français
actions:
callTaker:
callQuerySaveError: "Erreur lors de l'enregistrement des requêtes pour l'appel
: {err}"
callQuerySaveError: "Erreur lors de l'enregistrement des requêtes pour l'appel : {err}"
callSaveError: "Impossible d'enregistrer l'appel : {err}"
checkSessionError: "Erreur durant la session d'authentification : {err}"
couldNotFindCallError: >-
Expand All @@ -18,11 +17,9 @@ actions:
true {aller}
other {retour}
} planifié préalablement pour cette demande. Voulez-vous continuer ?
deleteItinerariesError: "Erreur lors de la suppression du trajet pour le groupe
:"
deleteItinerariesError: "Erreur lors de la suppression du trajet pour le groupe :"
deleteNoteError: "Erreur lors de la suppression d'une note sur le groupe :"
editSubmitterNotesError: "Erreur lors de la modification des notes du demandeur
:"
editSubmitterNotesError: "Erreur lors de la modification des notes du demandeur :"
fetchFieldTripError: "Erreur de chargement du groupe scolaire : {err}"
fetchFieldTripsError: "Erreur lors du chargement des groupes scolaires : {err}"
fetchTripsForDateError: >-
Expand All @@ -46,8 +43,7 @@ actions:
Pour utiliser votre emplacement actuel, permettez-en l'accès depuis votre
navigateur, et ouvrez de nouveau cette page.
geolocationNotSupportedError: La géolocalisation n'est pas prise en charge par
votre navigateur.
geolocationNotSupportedError: La géolocalisation n'est pas prise en charge par votre navigateur.
unknownPositionError: Erreur inconnue lors de la détection de votre emplacement.
userDeniedPermission: Refusé par l'utilisateur
map:
Expand All @@ -61,8 +57,9 @@ actions:
Le message de vérification de votre adresse e-mail a été envoyé de
nouveau.
genericError: "Une erreur s'est produite : {err}"
itineraryExistenceCheckFailed: Erreur lors de la vérification de la validité du
trajet choisi.
itineraryExistenceCheckFailed: Erreur lors de la vérification de la validité du trajet choisi.
mustBeLoggedInToSavePlace: Veuillez vous connecter pour enregistrer des lieux.
placeRemembered: Les informations pour ce lieu ont été enregistrées.
preferencesSaved: Vos préférences ont été enregistrées.
smsInvalidCode: Le code saisi est incorrect. Veuillez réessayer.
smsResendThrottled: >-
Expand Down Expand Up @@ -351,10 +348,8 @@ components:
header: Options de recherche
NarrativeItinerariesHeader:
changeSortDir: Changer l'ordre de tri
howToFindResults: Pour afficher les résultats, utilisez l'en-tête Trajets trouvés
plus bas.
itinerariesFound: "{itineraryNum, plural, one {# trajet trouvé} other {# trajets
trouvés} }"
howToFindResults: Pour afficher les résultats, utilisez l'en-tête Trajets trouvés plus bas.
itinerariesFound: "{itineraryNum, plural, one {# trajet trouvé} other {# trajets trouvés} }"
numIssues: "{issueNum, plural, one {# problème} other {# problèmes} }"
resultsSortedBy: >-
Résultats triés par {sortSelected}. Pour modifier l'ordre, utilisez le
Expand Down Expand Up @@ -421,7 +416,8 @@ components:
header: Echec de la recherche
WALKING_BETTER_THAN_TRANSIT:
body: >-
Vous pouvez effectuer ce trajet plus rapidement sans prendre les transports.
Vous pouvez effectuer ce trajet plus rapidement sans prendre les
transports.
header: Moins rapide en transports
inputFields:
FROM: point de départ
Expand Down Expand Up @@ -666,8 +662,7 @@ components:
unknownState: État du trajet inconnu
untogglePause: Reprendre
inactive:
description: Reprenez le suivi pour obtenir des dernières conditions de votre
trajet.
description: Reprenez le suivi pour obtenir des dernières conditions de votre trajet.
heading: Suivi suspendu
nextTripNotPossible:
description: >
Expand All @@ -686,8 +681,7 @@ components:
déterminées.
heading: Conditions du trajet indéterminées
snoozed:
description: Reprenez le suivi pour obtenir des dernières conditions de votre
trajet.
description: Reprenez le suivi pour obtenir des dernières conditions de votre trajet.
heading: Suivi suspendu jusqu'à demain
upcoming:
nextTripBegins: >-
Expand Down
2 changes: 1 addition & 1 deletion lib/actions/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ export function setLocale(locale) {

if (loggedInUser) {
loggedInUser.preferredLocale = matchedLocale
dispatch(createOrUpdateUser(loggedInUser, false))
dispatch(createOrUpdateUser(loggedInUser))
}
}
}
Expand Down
Loading

0 comments on commit 6772fa9

Please sign in to comment.