diff --git a/.eslintrc.js b/.eslintrc.js index 4df9493b2e8c..c1b6a9676052 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -122,6 +122,7 @@ module.exports = { }, }, ], + 'rulesdir/avoid-anonymous-functions': 'off', }, }, // This helps disable the `prefer-alias` rule to be enabled for specific directories @@ -276,5 +277,11 @@ module.exports = { 'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'], }, }, + { + files: ['en.ts', 'es.ts'], + rules: { + 'rulesdir/use-periods-for-error-messages': 'error', + }, + }, ], }; diff --git a/src/languages/en.ts b/src/languages/en.ts index 5e2d1360e816..9d33d29c59bd 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -226,20 +226,20 @@ export default { conjunctionAt: 'at', genericErrorMessage: 'Oops... something went wrong and your request could not be completed. Please try again later.', error: { - invalidAmount: 'Invalid amount', - acceptTerms: 'You must accept the Terms of Service to continue', + invalidAmount: 'Invalid amount.', + acceptTerms: 'You must accept the Terms of Service to continue.', phoneNumber: `Please enter a valid phone number, with the country code (e.g. ${CONST.EXAMPLE_PHONE_NUMBER})`, fieldRequired: 'This field is required.', requestModified: 'This request is being modified by another member.', characterLimit: ({limit}: CharacterLimitParams) => `Exceeds the maximum length of ${limit} characters`, characterLimitExceedCounter: ({length, limit}) => `Character limit exceeded (${length}/${limit})`, - dateInvalid: 'Please select a valid date', + dateInvalid: 'Please select a valid date.', invalidDateShouldBeFuture: 'Please choose today or a future date.', invalidTimeShouldBeFuture: 'Please choose a time at least one minute ahead.', - invalidCharacter: 'Invalid character', - enterMerchant: 'Enter a merchant name', - enterAmount: 'Enter an amount', - enterDate: 'Enter a date', + invalidCharacter: 'Invalid character.', + enterMerchant: 'Enter a merchant name.', + enterAmount: 'Enter an amount.', + enterDate: 'Enter a date.', invalidTimeRange: 'Please enter a time using the 12-hour clock format (e.g., 2:30 PM).', }, comma: 'comma', @@ -344,8 +344,8 @@ export default { cameraPermissionRequired: 'Camera access', expensifyDoesntHaveAccessToCamera: "Expensify can't take photos without access to your camera. Tap Settings to update permissions.", attachmentError: 'Attachment error', - errorWhileSelectingAttachment: 'An error occurred while selecting an attachment, please try again', - errorWhileSelectingCorruptedImage: 'An error occurred while selecting a corrupted attachment, please try another file', + errorWhileSelectingAttachment: 'An error occurred while selecting an attachment, please try again.', + errorWhileSelectingCorruptedImage: 'An error occurred while selecting a corrupted attachment, please try another file.', takePhoto: 'Take photo', chooseFromGallery: 'Choose from gallery', chooseDocument: 'Choose document', @@ -587,7 +587,7 @@ export default { takePhoto: 'Take a photo', cameraAccess: 'Camera access is required to take pictures of receipts.', cameraErrorTitle: 'Camera Error', - cameraErrorMessage: 'An error occurred while taking a photo, please try again', + cameraErrorMessage: 'An error occurred while taking a photo, please try again.', dropTitle: 'Let it go', dropMessage: 'Drop your file here', flash: 'flash', @@ -704,18 +704,20 @@ export default { invalidCategoryLength: 'The length of the category chosen exceeds the maximum allowed (255). Please choose a different or shorten the category name first.', invalidAmount: 'Please enter a valid amount before continuing.', invalidTaxAmount: ({amount}: RequestAmountParams) => `Maximum tax amount is ${amount}`, - invalidSplit: 'Split amounts do not equal total amount', - other: 'Unexpected error, please try again later', + invalidSplit: 'Split amounts do not equal total amount.', + other: 'Unexpected error, please try again later.', genericCreateFailureMessage: 'Unexpected error submitting this expense. Please try again later.', - genericCreateInvoiceFailureMessage: 'Unexpected error sending invoice, please try again later', + genericCreateInvoiceFailureMessage: 'Unexpected error sending invoice, please try again later.', + // eslint-disable-next-line rulesdir/use-periods-for-error-messages receiptFailureMessage: "The receipt didn't upload. ", + // eslint-disable-next-line rulesdir/use-periods-for-error-messages saveFileMessage: 'Download the file ', - loseFileMessage: 'or dismiss this error and lose it', - genericDeleteFailureMessage: 'Unexpected error deleting this expense, please try again later', - genericEditFailureMessage: 'Unexpected error editing this expense, please try again later', - genericSmartscanFailureMessage: 'Transaction is missing fields', - duplicateWaypointsErrorMessage: 'Please remove duplicate waypoints', - atLeastTwoDifferentWaypoints: 'Please enter at least two different addresses', + loseFileMessage: 'or dismiss this error and lose it.', + genericDeleteFailureMessage: 'Unexpected error deleting this expense, please try again later.', + genericEditFailureMessage: 'Unexpected error editing this expense, please try again later.', + genericSmartscanFailureMessage: 'Transaction is missing fields.', + duplicateWaypointsErrorMessage: 'Please remove duplicate waypoints.', + atLeastTwoDifferentWaypoints: 'Please enter at least two different addresses.', splitExpenseMultipleParticipantsErrorMessage: 'An expense cannot be split between a workspace and other members. Please update your selection.', invalidMerchant: 'Please enter a correct merchant.', }, @@ -960,11 +962,6 @@ export default { currentPassword: 'Current password', newPassword: 'New password', newPasswordPrompt: 'New password must be different than your old password, have at least 8 characters, 1 capital letter, 1 lowercase letter, and 1 number.', - errors: { - currentPassword: 'Current password is required', - newPasswordSameAsOld: 'New password must be different than your old password', - newPassword: 'Your password must have at least 8 characters, 1 capital letter, 1 lowercase letter, and 1 number.', - }, }, twoFactorAuth: { headerTitle: 'Two-factor authentication', @@ -992,7 +989,7 @@ export default { }, recoveryCodeForm: { error: { - pleaseFillRecoveryCode: 'Please enter your recovery code', + pleaseFillRecoveryCode: 'Please enter your recovery code.', incorrectRecoveryCode: 'Incorrect recovery code. Please try again.', }, useRecoveryCode: 'Use recovery code', @@ -1001,7 +998,7 @@ export default { }, twoFactorAuthForm: { error: { - pleaseFillTwoFactorAuth: 'Please enter your two-factor authentication code', + pleaseFillTwoFactorAuth: 'Please enter your two-factor authentication code.', incorrect2fa: 'Incorrect two-factor authentication code. Please try again.', }, }, @@ -1016,7 +1013,7 @@ export default { composerLabel: 'Notes', myNote: 'My note', error: { - genericFailureMessage: "Private notes couldn't be saved", + genericFailureMessage: "Private notes couldn't be saved.", }, }, addDebitCardPage: { @@ -1031,15 +1028,15 @@ export default { expensifyPassword: 'Expensify password', error: { invalidName: 'Name can only include letters.', - addressZipCode: 'Please enter a valid zip code', - debitCardNumber: 'Please enter a valid debit card number', - expirationDate: 'Please select a valid expiration date', - securityCode: 'Please enter a valid security code', - addressStreet: 'Please enter a valid billing address that is not a PO Box', - addressState: 'Please select a state', - addressCity: 'Please enter a city', - genericFailureMessage: 'An error occurred while adding your card, please try again', - password: 'Please enter your Expensify password', + addressZipCode: 'Please enter a valid zip code.', + debitCardNumber: 'Please enter a valid debit card number.', + expirationDate: 'Please select a valid expiration date.', + securityCode: 'Please enter a valid security code.', + addressStreet: 'Please enter a valid billing address that is not a PO Box.', + addressState: 'Please select a state.', + addressCity: 'Please enter a city.', + genericFailureMessage: 'An error occurred while adding your card, please try again.', + password: 'Please enter your Expensify password.', }, }, walletPage: { @@ -1304,9 +1301,9 @@ export default { requestNewCode: 'Request a new code in ', requestNewCodeAfterErrorOccurred: 'Request a new code', error: { - pleaseFillMagicCode: 'Please enter your magic code', + pleaseFillMagicCode: 'Please enter your magic code.', incorrectMagicCode: 'Incorrect magic code.', - pleaseFillTwoFactorAuth: 'Please enter your two-factor authentication code', + pleaseFillTwoFactorAuth: 'Please enter your two-factor authentication code.', }, }, passwordForm: { @@ -1347,7 +1344,7 @@ export default { whereYouWork: 'Where do you work?', purpose: { title: 'What do you want to do today?', - error: 'Please make a selection before continuing', + error: 'Please make a selection before continuing.', [CONST.ONBOARDING_CHOICES.TRACK]: 'Track business spend for taxes', [CONST.ONBOARDING_CHOICES.EMPLOYER]: 'Get paid back by my employer', [CONST.ONBOARDING_CHOICES.MANAGE_TEAM]: "Manage my team's expenses", @@ -1356,7 +1353,7 @@ export default { [CONST.ONBOARDING_CHOICES.LOOKING_AROUND]: 'Something else', }, error: { - requiredFirstName: 'Please input your first name to continue', + requiredFirstName: 'Please input your first name to continue.', }, }, featureTraining: { @@ -1364,8 +1361,8 @@ export default { }, personalDetails: { error: { - containsReservedWord: 'Name cannot contain the words Expensify or Concierge', - hasInvalidCharacter: 'Name cannot contain a comma or semicolon', + containsReservedWord: 'Name cannot contain the words Expensify or Concierge.', + hasInvalidCharacter: 'Name cannot contain a comma or semicolon.', }, }, privatePersonalDetails: { @@ -1499,35 +1496,35 @@ export default { }, hasPhoneLoginError: 'To add a verified bank account please ensure your primary login is a valid email and try again. You can add your phone number as a secondary login.', hasBeenThrottledError: 'There was an error adding your bank account. Please wait a few minutes and try again.', - hasCurrencyError: 'Oops! It appears that your workspace currency is set to a different currency than USD. To proceed, please set it to USD and try again', + hasCurrencyError: 'Oops! It appears that your workspace currency is set to a different currency than USD. To proceed, please set it to USD and try again.', error: { youNeedToSelectAnOption: 'You need to select an option to proceed.', - noBankAccountAvailable: 'Sorry, no bank account is available', - noBankAccountSelected: 'Please choose an account', - taxID: 'Please enter a valid tax ID number', + noBankAccountAvailable: 'Sorry, no bank account is available.', + noBankAccountSelected: 'Please choose an account.', + taxID: 'Please enter a valid tax ID number.', website: 'Please enter a valid website. The website should be in lowercase.', zipCode: `Incorrect zip code format. Acceptable format: ${CONST.COUNTRY_ZIP_REGEX_DATA.US.samples}`, - phoneNumber: 'Please enter a valid phone number', - companyName: 'Please enter a valid legal business name', - addressCity: 'Please enter a valid city', - addressStreet: 'Please enter a valid street address that is not a PO box', - addressState: 'Please select a valid state', - incorporationDateFuture: 'Incorporation date cannot be in the future', - incorporationState: 'Please select a valid state', + phoneNumber: 'Please enter a valid phone number.', + companyName: 'Please enter a valid legal business name.', + addressCity: 'Please enter a valid city.', + addressStreet: 'Please enter a valid street address that is not a PO box.', + addressState: 'Please select a valid state.', + incorporationDateFuture: 'Incorporation date cannot be in the future.', + incorporationState: 'Please select a valid state.', industryCode: 'Please enter a valid industry classification code. Must be 6 digits.', - restrictedBusiness: 'Please confirm company is not on the list of restricted businesses', - routingNumber: 'Please enter a valid routing number', - accountNumber: 'Please enter a valid account number', - routingAndAccountNumberCannotBeSame: 'The routing number and account number cannot be the same', - companyType: 'Please select a valid company type', + restrictedBusiness: 'Please confirm company is not on the list of restricted businesses.', + routingNumber: 'Please enter a valid routing number.', + accountNumber: 'Please enter a valid account number.', + routingAndAccountNumberCannotBeSame: 'The routing number and account number cannot be the same.', + companyType: 'Please select a valid company type.', tooManyAttempts: 'Due to a high number of login attempts, this option has been temporarily disabled for 24 hours. Please try again later or manually enter details instead.', - address: 'Please enter a valid address', - dob: 'Please select a valid date of birth', - age: 'Must be over 18 years old', - ssnLast4: 'Please enter valid last 4 digits of SSN', - firstName: 'Please enter a valid first name', - lastName: 'Please enter a valid last name', - noDefaultDepositAccountOrDebitCardAvailable: 'Please add a default deposit bank account or debit card', + address: 'Please enter a valid address.', + dob: 'Please select a valid date of birth.', + age: 'Must be over 18 years old.', + ssnLast4: 'Please enter valid last 4 digits of SSN.', + firstName: 'Please enter a valid first name.', + lastName: 'Please enter a valid last name.', + noDefaultDepositAccountOrDebitCardAvailable: 'Please add a default deposit bank account or debit card.', validationAmounts: 'The validation amounts you entered are incorrect. Please double-check your bank statement and try again.', }, }, @@ -1583,7 +1580,7 @@ export default { legalMiddleNameLabel: 'Legal middle name', legalLastNameLabel: 'Legal last name', selectAnswer: 'You need to select a response to proceed.', - ssnFull9Error: 'Please enter a valid 9 digit SSN', + ssnFull9Error: 'Please enter a valid 9 digit SSN.', needSSNFull9: "We're having trouble verifying your SSN. Please enter the full 9 digits of your SSN.", weCouldNotVerify: 'We could not verify', pleaseFixIt: 'Please fix this information before continuing.', @@ -1798,7 +1795,7 @@ export default { termsAndConditions: 'terms and conditions', certifyTrueAndAccurate: 'I certify that the information provided is true and accurate', error: { - certify: 'Must certify information is true and accurate', + certify: 'Must certify information is true and accurate.', }, }, completeVerificationStep: { @@ -2102,7 +2099,7 @@ export default { foreignDefault: 'Foreign currency default', customTaxName: 'Custom tax name', value: 'Value', - errors: { + error: { taxRateAlreadyExists: 'This tax name is already in use.', valuePercentageRange: 'Please enter a valid percentage between 0 and 100.', customNameRequired: 'Custom tax name is required.', @@ -2192,8 +2189,8 @@ export default { unlockNoVBACopy: 'Connect a bank account to reimburse your workspace members online.', fastReimbursementsVBACopy: "You're all set to reimburse receipts from your bank account!", updateCustomUnitError: "Your changes couldn't be saved. The workspace was modified while you were offline, please try again.", - invalidRateError: 'Please enter a valid rate', - lowRateError: 'Rate must be greater than 0', + invalidRateError: 'Please enter a valid rate.', + lowRateError: 'Rate must be greater than 0.', }, accounting: { settings: 'settings', @@ -2332,7 +2329,7 @@ export default { inviteMessagePrompt: 'Make your invitation extra special by adding a message below', personalMessagePrompt: 'Message', genericFailureMessage: 'An error occurred inviting the user to the workspace, please try again.', - inviteNoMembersError: 'Please select at least one member to invite', + inviteNoMembersError: 'Please select at least one member to invite.', }, distanceRates: { oopsNotSoFast: 'Oops! Not so fast...', @@ -2467,11 +2464,11 @@ export default { // eslint-disable-next-line @typescript-eslint/naming-convention public_announceDescription: 'Anyone can find this room', createRoom: 'Create room', - roomAlreadyExistsError: 'A room with this name already exists', + roomAlreadyExistsError: 'A room with this name already exists.', roomNameReservedError: ({reservedName}: RoomNameReservedErrorParams) => `${reservedName} is a default room on all workspaces. Please choose another name.`, - roomNameInvalidError: 'Room names can only include lowercase letters, numbers and hyphens', - pleaseEnterRoomName: 'Please enter a room name', - pleaseSelectWorkspace: 'Please select a workspace', + roomNameInvalidError: 'Room names can only include lowercase letters, numbers and hyphens.', + pleaseEnterRoomName: 'Please enter a room name.', + pleaseSelectWorkspace: 'Please select a workspace.', renamedRoomAction: ({oldName, newName}: RenamedRoomActionParams) => ` renamed this room from ${oldName} to ${newName}`, roomRenamedTo: ({newName}: RoomRenamedToParams) => `Room renamed to ${newName}`, social: 'social', @@ -2565,7 +2562,7 @@ export default { }, generalError: { title: 'Attachment Error', - message: 'Attachment cannot be downloaded', + message: 'Attachment cannot be downloaded.', }, permissionError: { title: 'Storage access', @@ -2635,15 +2632,15 @@ export default { okay: 'Okay', }, error: { - title: 'Update Check Failed', - message: "We couldn't look for an update. Please check again in a bit!", + title: 'Update Check Failed.', + message: "We couldn't look for an update. Please check again in a bit!.", }, }, report: { - genericCreateReportFailureMessage: 'Unexpected error creating this chat, please try again later', - genericAddCommentFailureMessage: 'Unexpected error while posting the comment, please try again later', - genericUpdateReportFieldFailureMessage: 'Unexpected error while updating the field, please try again later', - genericUpdateReporNameEditFailureMessage: 'Unexpected error while renaming the report, please try again later', + genericCreateReportFailureMessage: 'Unexpected error creating this chat, please try again later.', + genericAddCommentFailureMessage: 'Unexpected error while posting the comment, please try again later.', + genericUpdateReportFieldFailureMessage: 'Unexpected error while updating the field, please try again later.', + genericUpdateReporNameEditFailureMessage: 'Unexpected error while renaming the report, please try again later.', noActivityYet: 'No activity yet', }, chronos: { @@ -2767,10 +2764,10 @@ export default { contactMethods: 'Contact methods.', schoolMailAsDefault: 'Before you move forward, please make sure to set your school email as your default contact method. You can do so in Settings > Profile > ', error: { - enterPhoneEmail: 'Enter a valid email or phone number', - enterEmail: 'Enter an email', - enterValidEmail: 'Enter a valid email', - tryDifferentEmail: 'Please try a different email', + enterPhoneEmail: 'Enter a valid email or phone number.', + enterEmail: 'Enter an email.', + enterValidEmail: 'Enter a valid email.', + tryDifferentEmail: 'Please try a different email.', }, }, cardTransactions: { @@ -2792,8 +2789,8 @@ export default { subtitle: 'The map will be generated when you go back online', onlineSubtitle: 'One moment while we set up the map', }, - errors: { - selectSuggestedAddress: 'Please select a suggested address or use current location', + error: { + selectSuggestedAddress: 'Please select a suggested address or use current location.', }, }, reportCardLostOrDamaged: { diff --git a/src/languages/es.ts b/src/languages/es.ts index d82fabb80799..ab170e06acc5 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -216,20 +216,20 @@ export default { conjunctionAt: 'a', genericErrorMessage: 'Ups... algo no ha ido bien y la acción no se ha podido completar. Por favor, inténtalo más tarde.', error: { - invalidAmount: 'Importe no válido', - acceptTerms: 'Debes aceptar los Términos de Servicio para continuar', + invalidAmount: 'Importe no válido.', + acceptTerms: 'Debes aceptar los Términos de Servicio para continuar.', phoneNumber: `Introduce un teléfono válido, incluyendo el código del país (p. ej. ${CONST.EXAMPLE_PHONE_NUMBER})`, fieldRequired: 'Este campo es obligatorio.', requestModified: 'Esta solicitud está siendo modificada por otro miembro.', characterLimit: ({limit}: CharacterLimitParams) => `Supera el límite de ${limit} caracteres`, characterLimitExceedCounter: ({length, limit}) => `Se superó el límite de caracteres (${length}/${limit})`, - dateInvalid: 'Por favor, selecciona una fecha válida', - invalidDateShouldBeFuture: 'Por favor, elige una fecha igual o posterior a hoy', - invalidTimeShouldBeFuture: 'Por favor, elige una hora al menos un minuto en el futuro', - invalidCharacter: 'Carácter invalido', - enterMerchant: 'Introduce un comerciante', - enterAmount: 'Introduce un importe', - enterDate: 'Introduce una fecha', + dateInvalid: 'Por favor, selecciona una fecha válida.', + invalidDateShouldBeFuture: 'Por favor, elige una fecha igual o posterior a hoy.', + invalidTimeShouldBeFuture: 'Por favor, elige una hora al menos un minuto en el futuro.', + invalidCharacter: 'Carácter invalido.', + enterMerchant: 'Introduce un comerciante.', + enterAmount: 'Introduce un importe.', + enterDate: 'Introduce una fecha.', invalidTimeRange: 'Por favor, introduce una hora entre 1 y 12 (por ejemplo, 2:30 PM).', }, comma: 'la coma', @@ -334,8 +334,8 @@ export default { cameraPermissionRequired: 'Permiso para acceder a la cámara', expensifyDoesntHaveAccessToCamera: 'Expensify no puede tomar fotos sin acceso a la cámara. Haz click en Configuración para actualizar los permisos.', attachmentError: 'Error al adjuntar archivo', - errorWhileSelectingAttachment: 'Ha ocurrido un error al seleccionar un archivo adjunto. Por favor, inténtalo de nuevo', - errorWhileSelectingCorruptedImage: 'Ha ocurrido un error al seleccionar un archivo adjunto corrupto. Por favor, inténtalo con otro archivo', + errorWhileSelectingAttachment: 'Ha ocurrido un error al seleccionar un archivo adjunto. Por favor, inténtalo de nuevo.', + errorWhileSelectingCorruptedImage: 'Ha ocurrido un error al seleccionar un archivo adjunto corrupto. Por favor, inténtalo con otro archivo.', takePhoto: 'Hacer una foto', chooseFromGallery: 'Elegir de la galería', chooseDocument: 'Elegir documento', @@ -699,18 +699,20 @@ export default { invalidCategoryLength: 'El largo de la categoría escogida excede el máximo permitido (255). Por favor, escoge otra categoría o acorta la categoría primero.', invalidAmount: 'Por favor, ingresa un importe válido antes de continuar.', invalidTaxAmount: ({amount}: RequestAmountParams) => `El importe máximo del impuesto es ${amount}`, - invalidSplit: 'La suma de las partes no equivale al importe total', - other: 'Error inesperado, por favor inténtalo más tarde', + invalidSplit: 'La suma de las partes no equivale al importe total.', + other: 'Error inesperado, por favor inténtalo más tarde.', genericCreateFailureMessage: 'Error inesperado al enviar este gasto. Por favor, inténtalo más tarde.', - genericCreateInvoiceFailureMessage: 'Error inesperado al enviar la factura, inténtalo de nuevo más tarde', + genericCreateInvoiceFailureMessage: 'Error inesperado al enviar la factura, inténtalo de nuevo más tarde.', + // eslint-disable-next-line rulesdir/use-periods-for-error-messages receiptFailureMessage: 'El recibo no se subió. ', + // eslint-disable-next-line rulesdir/use-periods-for-error-messages saveFileMessage: 'Guarda el archivo ', - loseFileMessage: 'o descarta este error y piérdelo', - genericDeleteFailureMessage: 'Error inesperado al eliminar este gasto. Por favor, inténtalo más tarde', - genericEditFailureMessage: 'Error inesperado al editar este gasto. Por favor, inténtalo más tarde', - genericSmartscanFailureMessage: 'La transacción tiene campos vacíos', - duplicateWaypointsErrorMessage: 'Por favor, elimina los puntos de ruta duplicados', - atLeastTwoDifferentWaypoints: 'Por favor, introduce al menos dos direcciones diferentes', + loseFileMessage: 'o descarta este error y piérdelo.', + genericDeleteFailureMessage: 'Error inesperado al eliminar este gasto. Por favor, inténtalo más tarde.', + genericEditFailureMessage: 'Error inesperado al editar este gasto. Por favor, inténtalo más tarde.', + genericSmartscanFailureMessage: 'La transacción tiene campos vacíos.', + duplicateWaypointsErrorMessage: 'Por favor, elimina los puntos de ruta duplicados.', + atLeastTwoDifferentWaypoints: 'Por favor, introduce al menos dos direcciones diferentes.', splitExpenseMultipleParticipantsErrorMessage: 'Solo puedes dividir un gasto entre un único espacio de trabajo o con usuarios individuales. Por favor, actualiza tu selección.', invalidMerchant: 'Por favor, introduce un comerciante correcto.', }, @@ -955,11 +957,6 @@ export default { currentPassword: 'Contraseña actual', newPassword: 'Nueva contraseña', newPasswordPrompt: 'La nueva contraseña debe ser diferente de la antigua, tener al menos 8 caracteres, 1 letra mayúscula, 1 letra minúscula y 1 número.', - errors: { - currentPassword: 'Contraseña actual es requerido', - newPasswordSameAsOld: 'La nueva contraseña tiene que ser diferente de la antigua', - newPassword: 'Su contraseña debe tener al menos 8 caracteres, 1 letra mayúscula, 1 letra minúscula y 1 número.', - }, }, twoFactorAuth: { headerTitle: 'Autenticación de dos factores', @@ -988,8 +985,8 @@ export default { }, recoveryCodeForm: { error: { - pleaseFillRecoveryCode: 'Por favor, introduce tu código de recuperación', - incorrectRecoveryCode: 'Código de recuperación incorrecto. Por favor, inténtalo de nuevo', + pleaseFillRecoveryCode: 'Por favor, introduce tu código de recuperación.', + incorrectRecoveryCode: 'Código de recuperación incorrecto. Por favor, inténtalo de nuevo.', }, useRecoveryCode: 'Usar código de recuperación', recoveryCode: 'Código de recuperación', @@ -997,8 +994,8 @@ export default { }, twoFactorAuthForm: { error: { - pleaseFillTwoFactorAuth: 'Por favor, introduce tu código de autenticación de dos factores', - incorrect2fa: 'Código de autenticación de dos factores incorrecto. Por favor, inténtalo de nuevo', + pleaseFillTwoFactorAuth: 'Por favor, introduce tu código de autenticación de dos factores.', + incorrect2fa: 'Código de autenticación de dos factores incorrecto. Por favor, inténtalo de nuevo.', }, }, passwordConfirmationScreen: { @@ -1012,7 +1009,7 @@ export default { composerLabel: 'Notas', myNote: 'Mi nota', error: { - genericFailureMessage: 'Las notas privadas no han podido ser guardadas', + genericFailureMessage: 'Las notas privadas no han podido ser guardadas.', }, }, addDebitCardPage: { @@ -1027,15 +1024,15 @@ export default { expensifyPassword: 'Contraseña de Expensify', error: { invalidName: 'El nombre sólo puede incluir letras.', - addressZipCode: 'Por favor, introduce un código postal válido', - debitCardNumber: 'Por favor, introduce un número de tarjeta de débito válido', - expirationDate: 'Por favor, selecciona una fecha de vencimiento válida', - securityCode: 'Por favor, introduce un código de seguridad válido', - addressStreet: 'Por favor, introduce una dirección de facturación válida que no sea un apartado postal', - addressState: 'Por favor, selecciona un estado', - addressCity: 'Por favor, introduce una ciudad', - genericFailureMessage: 'Se produjo un error al añadir tu tarjeta. Vuelva a intentarlo', - password: 'Por favor, introduce tu contraseña de Expensify', + addressZipCode: 'Por favor, introduce un código postal válido.', + debitCardNumber: 'Por favor, introduce un número de tarjeta de débito válido.', + expirationDate: 'Por favor, selecciona una fecha de vencimiento válida.', + securityCode: 'Por favor, introduce un código de seguridad válido.', + addressStreet: 'Por favor, introduce una dirección de facturación válida que no sea un apartado postal.', + addressState: 'Por favor, selecciona un estado.', + addressCity: 'Por favor, introduce una ciudad.', + genericFailureMessage: 'Se produjo un error al añadir tu tarjeta. Vuelva a intentarlo.', + password: 'Por favor, introduce tu contraseña de Expensify.', }, }, walletPage: { @@ -1303,9 +1300,9 @@ export default { requestNewCode: 'Pedir un código nuevo en ', requestNewCodeAfterErrorOccurred: 'Solicitar un nuevo código', error: { - pleaseFillMagicCode: 'Por favor, introduce el código mágico', + pleaseFillMagicCode: 'Por favor, introduce el código mágico.', incorrectMagicCode: 'Código mágico incorrecto.', - pleaseFillTwoFactorAuth: 'Por favor, introduce tu código de autenticación de dos factores', + pleaseFillTwoFactorAuth: 'Por favor, introduce tu código de autenticación de dos factores.', }, }, passwordForm: { @@ -1317,15 +1314,15 @@ export default { requiredWhen2FAEnabled: 'Obligatorio cuando A2F está habilitado', error: { incorrectPassword: 'Contraseña incorrecta. Por favor, inténtalo de nuevo.', - incorrectLoginOrPassword: 'Usuario o contraseña incorrectos. Por favor, inténtalo de nuevo', - incorrect2fa: 'Código de autenticación de dos factores incorrecto. Por favor, inténtalo de nuevo', - twoFactorAuthenticationEnabled: 'Tienes autenticación de 2 factores activada en esta cuenta. Por favor, conéctate usando tu email o número de teléfono', - invalidLoginOrPassword: 'Usuario o clave incorrectos. Por favor, inténtalo de nuevo o restablece la contraseña', + incorrectLoginOrPassword: 'Usuario o contraseña incorrectos. Por favor, inténtalo de nuevo.', + incorrect2fa: 'Código de autenticación de dos factores incorrecto. Por favor, inténtalo de nuevo.', + twoFactorAuthenticationEnabled: 'Tienes autenticación de 2 factores activada en esta cuenta. Por favor, conéctate usando tu email o número de teléfono.', + invalidLoginOrPassword: 'Usuario o clave incorrectos. Por favor, inténtalo de nuevo o restablece la contraseña.', unableToResetPassword: - 'No se pudo cambiar tu clave. Probablemente porque el enlace para restablecer la contrasenña ha expirado. Te hemos enviado un nuevo enlace. Comprueba tu bandeja de entrada y carpeta de Spam', - noAccess: 'No tienes acceso a esta aplicación. Por favor, añade tu usuario de GitHub para acceder', - accountLocked: 'Tu cuenta ha sido bloqueada tras varios intentos fallidos. Por favor, inténtalo de nuevo dentro de una hora', - fallback: 'Ha ocurrido un error. Por favor, inténtalo mas tarde', + 'No se pudo cambiar tu clave. Probablemente porque el enlace para restablecer la contrasenña ha expirado. Te hemos enviado un nuevo enlace. Comprueba tu bandeja de entrada y carpeta de Spam.', + noAccess: 'No tienes acceso a esta aplicación. Por favor, añade tu usuario de GitHub para acceder.', + accountLocked: 'Tu cuenta ha sido bloqueada tras varios intentos fallidos. Por favor, inténtalo de nuevo dentro de una hora.', + fallback: 'Ha ocurrido un error. Por favor, inténtalo mas tarde.', }, }, loginForm: { @@ -1355,7 +1352,7 @@ export default { [CONST.ONBOARDING_CHOICES.LOOKING_AROUND]: 'Algo más', }, error: { - requiredFirstName: 'Introduce tu nombre para continuar', + requiredFirstName: 'Introduce tu nombre para continuar.', }, }, featureTraining: { @@ -1363,8 +1360,8 @@ export default { }, personalDetails: { error: { - containsReservedWord: 'El nombre no puede contener las palabras Expensify o Concierge', - hasInvalidCharacter: 'El nombre no puede contener una coma o un punto y coma', + containsReservedWord: 'El nombre no puede contener las palabras Expensify o Concierge.', + hasInvalidCharacter: 'El nombre no puede contener una coma o un punto y coma.', }, }, privatePersonalDetails: { @@ -1520,33 +1517,33 @@ export default { '¡Ups! Parece que la moneda de tu espacio de trabajo está configurada en una moneda diferente a USD. Para continuar, por favor configúrala en USD e inténtalo nuevamente.', error: { youNeedToSelectAnOption: 'Debes seleccionar una opción para continuar.', - noBankAccountAvailable: 'Lo sentimos, no hay ninguna cuenta bancaria disponible', - noBankAccountSelected: 'Por favor, elige una cuenta bancaria', - taxID: 'Por favor, introduce un número de identificación fiscal válido', + noBankAccountAvailable: 'Lo sentimos, no hay ninguna cuenta bancaria disponible.', + noBankAccountSelected: 'Por favor, elige una cuenta bancaria.', + taxID: 'Por favor, introduce un número de identificación fiscal válido.', website: 'Por favor, introduce un sitio web válido. El sitio web debe estar en minúsculas.', zipCode: `Formato de código postal incorrecto. Formato aceptable: ${CONST.COUNTRY_ZIP_REGEX_DATA.US.samples}`, - phoneNumber: 'Por favor, introduce un teléfono válido', - companyName: 'Por favor, introduce un nombre comercial legal válido', - addressCity: 'Por favor, introduce una ciudad válida', - addressStreet: 'Por favor, introduce una calle de dirección válida que no sea un apartado postal', - addressState: 'Por favor, selecciona un estado', - incorporationDateFuture: 'La fecha de incorporación no puede ser futura', - incorporationState: 'Por favor, selecciona una estado válido', - industryCode: 'Por favor, introduce un código de clasificación de industria válido', - restrictedBusiness: 'Por favor, confirma que la empresa no está en la lista de negocios restringidos', - routingNumber: 'Por favor, introduce un número de ruta válido', - accountNumber: 'Por favor, introduce un número de cuenta válido', - routingAndAccountNumberCannotBeSame: 'El número de ruta y el número de cuenta no pueden ser iguales', - companyType: 'Por favor, selecciona un tipo de compañía válido', + phoneNumber: 'Por favor, introduce un teléfono válido.', + companyName: 'Por favor, introduce un nombre comercial legal válido.', + addressCity: 'Por favor, introduce una ciudad válida.', + addressStreet: 'Por favor, introduce una calle de dirección válida que no sea un apartado postal.', + addressState: 'Por favor, selecciona un estado.', + incorporationDateFuture: 'La fecha de incorporación no puede ser futura.', + incorporationState: 'Por favor, selecciona una estado válido.', + industryCode: 'Por favor, introduce un código de clasificación de industria válido.', + restrictedBusiness: 'Por favor, confirma que la empresa no está en la lista de negocios restringidos.', + routingNumber: 'Por favor, introduce un número de ruta válido.', + accountNumber: 'Por favor, introduce un número de cuenta válido.', + routingAndAccountNumberCannotBeSame: 'El número de ruta y el número de cuenta no pueden ser iguales.', + companyType: 'Por favor, selecciona un tipo de compañía válido.', tooManyAttempts: 'Debido a la gran cantidad de intentos de inicio de sesión, esta opción ha sido desactivada temporalmente durante 24 horas. Por favor, inténtalo de nuevo más tarde.', - address: 'Por favor, introduce una dirección válida', - dob: 'Por favor, selecciona una fecha de nacimiento válida', - age: 'Debe ser mayor de 18 años', - ssnLast4: 'Por favor, introduce los últimos 4 dígitos del número de seguridad social', - firstName: 'Por favor, introduce el nombre', - lastName: 'Por favor, introduce los apellidos', - noDefaultDepositAccountOrDebitCardAvailable: 'Por favor, añade una cuenta bancaria para depósitos o una tarjeta de débito', + address: 'Por favor, introduce una dirección válida.', + dob: 'Por favor, selecciona una fecha de nacimiento válida.', + age: 'Debe ser mayor de 18 años.', + ssnLast4: 'Por favor, introduce los últimos 4 dígitos del número de seguridad social.', + firstName: 'Por favor, introduce el nombre.', + lastName: 'Por favor, introduce los apellidos.', + noDefaultDepositAccountOrDebitCardAvailable: 'Por favor, añade una cuenta bancaria para depósitos o una tarjeta de débito.', validationAmounts: 'Los importes de validación que introduciste son incorrectos. Por favor, comprueba tu cuenta bancaria e inténtalo de nuevo.', }, }, @@ -1604,7 +1601,7 @@ export default { legalMiddleNameLabel: 'Segundo nombre legal', legalLastNameLabel: 'Apellidos legales', selectAnswer: 'Selecciona una respuesta.', - ssnFull9Error: 'Por favor, introduce los 9 dígitos de un número de seguridad social válido', + ssnFull9Error: 'Por favor, introduce los 9 dígitos de un número de seguridad social válido.', needSSNFull9: 'Estamos teniendo problemas para verificar tu número de seguridad social. Introduce los 9 dígitos del número de seguridad social.', weCouldNotVerify: 'No se pudo verificar', pleaseFixIt: 'Corrige esta información antes de continuar.', @@ -1821,7 +1818,7 @@ export default { termsAndConditions: 'Términos y condiciones', certifyTrueAndAccurate: 'Certifico que la información dada es correcta', error: { - certify: 'Debe certificar que la información es verdadera y precisa', + certify: 'Debe certificar que la información es verdadera y precisa.', }, }, completeVerificationStep: { @@ -2129,10 +2126,10 @@ export default { foreignDefault: 'Moneda extranjera por defecto', customTaxName: 'Nombre del impuesto', value: 'Valor', - errors: { - taxRateAlreadyExists: 'Ya existe un impuesto con este nombre', + error: { + taxRateAlreadyExists: 'Ya existe un impuesto con este nombre.', customNameRequired: 'El nombre del impuesto es obligatorio.', - valuePercentageRange: 'Por favor, introduce un porcentaje entre 0 y 100', + valuePercentageRange: 'Por favor, introduce un porcentaje entre 0 y 100.', deleteFailureMessage: 'Se ha producido un error al intentar eliminar la tasa de impuesto. Por favor, inténtalo más tarde.', updateFailureMessage: 'Se ha producido un error al intentar modificar la tasa de impuesto. Por favor, inténtalo más tarde.', createFailureMessage: 'Se ha producido un error al intentar crear la tasa de impuesto. Por favor, inténtalo más tarde.', @@ -2309,8 +2306,8 @@ export default { unlockNoVBACopy: 'Conecta una cuenta bancaria para reembolsar online a los miembros de tu espacio de trabajo.', fastReimbursementsVBACopy: '¡Todo listo para reembolsar recibos desde tu cuenta bancaria!', updateCustomUnitError: 'Los cambios no han podido ser guardados. El espacio de trabajo ha sido modificado mientras estabas desconectado. Por favor, inténtalo de nuevo.', - invalidRateError: 'Por favor, introduce una tarifa válida', - lowRateError: 'La tarifa debe ser mayor que 0', + invalidRateError: 'Por favor, introduce una tarifa válida.', + lowRateError: 'La tarifa debe ser mayor que 0.', }, bills: { manageYourBills: 'Gestiona tus facturas', @@ -2359,7 +2356,7 @@ export default { inviteMessageTitle: 'Añadir un mensaje', inviteMessagePrompt: 'Añadir un mensaje para hacer tu invitación destacar', personalMessagePrompt: 'Mensaje', - inviteNoMembersError: 'Por favor, selecciona al menos un miembro a invitar', + inviteNoMembersError: 'Por favor, selecciona al menos un miembro a invitar.', genericFailureMessage: 'Se produjo un error al invitar al usuario al espacio de trabajo. Vuelva a intentarlo..', }, distanceRates: { @@ -2497,12 +2494,12 @@ export default { // eslint-disable-next-line @typescript-eslint/naming-convention public_announceDescription: 'Cualquier persona puede unirse a esta sala', createRoom: 'Crea una sala de chat', - roomAlreadyExistsError: 'Ya existe una sala con este nombre', + roomAlreadyExistsError: 'Ya existe una sala con este nombre.', roomNameReservedError: ({reservedName}: RoomNameReservedErrorParams) => `${reservedName} es el nombre una sala por defecto de todos los espacios de trabajo. Por favor, elige otro nombre.`, - roomNameInvalidError: 'Los nombres de las salas solo pueden contener minúsculas, números y guiones', - pleaseEnterRoomName: 'Por favor, escribe el nombre de una sala', - pleaseSelectWorkspace: 'Por favor, selecciona un espacio de trabajo', + roomNameInvalidError: 'Los nombres de las salas solo pueden contener minúsculas, números y guiones.', + pleaseEnterRoomName: 'Por favor, escribe el nombre de una sala.', + pleaseSelectWorkspace: 'Por favor, selecciona un espacio de trabajo.', renamedRoomAction: ({oldName, newName}: RenamedRoomActionParams) => ` cambió el nombre de la sala de ${oldName} a ${newName}`, roomRenamedTo: ({newName}: RoomRenamedToParams) => `Sala renombrada a ${newName}`, social: 'social', @@ -2597,7 +2594,7 @@ export default { }, generalError: { title: 'Error en la descarga', - message: 'No se puede descargar el archivo adjunto', + message: 'No se puede descargar el archivo adjunto.', }, permissionError: { title: 'Permiso para acceder al almacenamiento', @@ -2667,14 +2664,14 @@ export default { okay: 'Vale', }, error: { - title: 'Comprobación fallida', - message: 'No hemos podido comprobar si existe una actualización. ¡Inténtalo de nuevo más tarde!', + title: 'Comprobación fallida.', + message: 'No hemos podido comprobar si existe una actualización. ¡Inténtalo de nuevo más tarde!.', }, }, report: { - genericCreateReportFailureMessage: 'Error inesperado al crear el chat. Por favor, inténtalo más tarde', - genericAddCommentFailureMessage: 'Error inesperado al añadir el comentario. Por favor, inténtalo más tarde', - genericUpdateReportFieldFailureMessage: 'Error inesperado al actualizar el campo. Por favor, inténtalo más tarde', + genericCreateReportFailureMessage: 'Error inesperado al crear el chat. Por favor, inténtalo más tarde.', + genericAddCommentFailureMessage: 'Error inesperado al añadir el comentario. Por favor, inténtalo más tarde.', + genericUpdateReportFieldFailureMessage: 'Error inesperado al actualizar el campo. Por favor, inténtalo más tarde.', genericUpdateReporNameEditFailureMessage: 'Error inesperado al cambiar el nombre del informe. Vuelva a intentarlo más tarde.', noActivityYet: 'Sin actividad todavía', }, @@ -3260,10 +3257,10 @@ export default { schoolMailAsDefault: 'Antes de seguir adelante, asegúrate de establecer el correo electrónico de tu colegio como método de contacto predeterminado. Puede hacerlo en Configuración > Perfil > ', error: { - enterPhoneEmail: 'Ingrese un correo electrónico o número de teléfono válido', - enterEmail: 'Introduce un correo electrónico', - enterValidEmail: 'Introduzca un correo electrónico válido', - tryDifferentEmail: 'Por favor intenta con un e-mail diferente', + enterPhoneEmail: 'Ingrese un correo electrónico o número de teléfono válido.', + enterEmail: 'Introduce un correo electrónico.', + enterValidEmail: 'Introduzca un correo electrónico válido.', + tryDifferentEmail: 'Por favor intenta con un e-mail diferente.', }, }, cardTransactions: { @@ -3285,7 +3282,7 @@ export default { subtitle: 'El mapa se generará cuando vuelvas a estar en línea', onlineSubtitle: 'Un momento mientras configuramos el mapa', }, - errors: { + error: { selectSuggestedAddress: 'Por favor, selecciona una dirección sugerida o usa la ubicación actual.', }, }, diff --git a/src/libs/actions/TaxRate.ts b/src/libs/actions/TaxRate.ts index ec69ea79b7ee..f8425cd0c40c 100644 --- a/src/libs/actions/TaxRate.ts +++ b/src/libs/actions/TaxRate.ts @@ -39,7 +39,7 @@ const validateTaxName = (policy: Policy, values: FormOnyxValues((acc, taxID) => { acc[taxID] = { pendingAction: null, - errors: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.errors.deleteFailureMessage'), + errors: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.error.deleteFailureMessage'), }; return acc; }, {}), @@ -376,7 +376,7 @@ function updatePolicyTaxValue(policyID: string, taxID: string, taxValue: number) [taxID]: { value: originalTaxRate.value, pendingFields: {value: null}, - errorFields: {value: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.errors.updateFailureMessage')}, + errorFields: {value: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.error.updateFailureMessage')}, }, }, }, @@ -438,7 +438,7 @@ function renamePolicyTax(policyID: string, taxID: string, newName: string) { [taxID]: { name: originalTaxRate.name, pendingFields: {name: null}, - errorFields: {name: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.errors.updateFailureMessage')}, + errorFields: {name: ErrorUtils.getMicroSecondOnyxError('workspace.taxes.error.updateFailureMessage')}, }, }, }, diff --git a/src/pages/iou/request/step/IOURequestStepWaypoint.tsx b/src/pages/iou/request/step/IOURequestStepWaypoint.tsx index 5abb0cfdaabb..5576c3dedb8a 100644 --- a/src/pages/iou/request/step/IOURequestStepWaypoint.tsx +++ b/src/pages/iou/request/step/IOURequestStepWaypoint.tsx @@ -96,7 +96,7 @@ function IOURequestStepWaypoint({ // If the user is online, and they are trying to save a value without using the autocomplete, show an error message instructing them to use a selected address instead. // That enables us to save the address with coordinates when it is selected if (!isOffline && waypointValue !== '' && waypointAddress !== waypointValue) { - ErrorUtils.addErrorMessage(errors, `waypoint${pageIndex}`, 'distance.errors.selectSuggestedAddress'); + ErrorUtils.addErrorMessage(errors, `waypoint${pageIndex}`, 'distance.error.selectSuggestedAddress'); } return errors; @@ -204,7 +204,7 @@ function IOURequestStepWaypoint({ ref={(e: HTMLElement | null) => { textInput.current = e as unknown as TextInput; }} - hint={!isOffline ? 'distance.errors.selectSuggestedAddress' : ''} + hint={!isOffline ? 'distance.error.selectSuggestedAddress' : ''} containerStyles={[styles.mt4]} label={translate('distance.address')} defaultValue={waypointAddress} diff --git a/src/pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName.tsx b/src/pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName.tsx index 9b65a7b44138..8bcefdf9fd9c 100644 --- a/src/pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName.tsx +++ b/src/pages/workspace/taxes/WorkspaceTaxesSettingsCustomTaxName.tsx @@ -41,7 +41,7 @@ function WorkspaceTaxesSettingsCustomTaxName({ const customTaxName = values[INPUT_IDS.NAME]; if (!ValidationUtils.isRequiredFulfilled(customTaxName)) { - errors.name = 'workspace.taxes.errors.customNameRequired'; + errors.name = 'workspace.taxes.error.customNameRequired'; } return errors;