From fbda788b0809dec51e7cbb9cc506c105dc38713e Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:39:18 +0530 Subject: [PATCH 1/8] Update en.ts --- src/languages/en.ts | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 50ae05f61798..464318d822f1 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -108,6 +108,7 @@ import type { PayerSettledParams, PaySomeoneParams, ReconciliationWorksParams, + ReimbursementRateParams, RemovedFromApprovalWorkflowParams, RemovedTheRequestParams, RemoveMemberPromptParams, @@ -276,7 +277,6 @@ const translations = { close: 'Close', download: 'Download', downloading: 'Downloading', - uploading: 'Uploading', pin: 'Pin', unPin: 'Unpin', back: 'Back', @@ -951,6 +951,7 @@ const translations = { error: { invalidCategoryLength: 'The category name exceeds 255 characters. Please shorten it or choose a different category.', invalidAmount: 'Please enter a valid amount before continuing.', + invalidIntegerAmount: 'Please enter a whole dollar amount before continuing.', invalidTaxAmount: ({amount}: RequestAmountParams) => `Maximum tax amount is ${amount}`, invalidSplit: 'The sum of splits must equal the total amount.', invalidSplitParticipants: 'Please enter an amount greater than zero for at least two participants.', @@ -1015,7 +1016,7 @@ const translations = { changed: 'changed', removed: 'removed', transactionPending: 'Transaction pending.', - chooseARate: 'Select a workspace reimbursement rate per mile or kilometer', + chooseARate: ({unit}: ReimbursementRateParams) => `Select a workspace reimbursement rate per ${unit}`, unapprove: 'Unapprove', unapproveReport: 'Unapprove report', headsUp: 'Heads up!', @@ -2452,19 +2453,6 @@ const translations = { classes: 'Classes', items: 'Items', customers: 'Customers/projects', - accountsDescription: 'Your QuickBooks Desktop chart of accounts will import into Expensify as categories.', - accountsSwitchTitle: 'Choose to import new accounts as enabled or disabled categories.', - accountsSwitchDescription: 'Enabled categories will be available for members to select when creating their expenses.', - classesDescription: 'Choose how to handle QuickBooks Desktop classes in Expensify.', - tagsDisplayedAsDescription: 'Line item level', - reportFieldsDisplayedAsDescription: 'Report level', - customersDescription: 'Choose how to handle QuickBooks Desktop customers/projects in Expensify.', - advancedConfig: { - autoSyncDescription: 'Expensify will automatically sync with QuickBooks Desktop every day.', - createEntities: 'Auto-create entities', - createEntitiesDescription: - "Expensify will automatically create vendors in QuickBooks Desktop if they don't exist already, and auto-create customers when exporting invoices.", - }, }, qbo: { importDescription: 'Choose which coding configurations to import from QuickBooks Online to Expensify.', @@ -3055,7 +3043,7 @@ const translations = { howDoYouWantToConnect: 'How do you want to connect to your bank?', learnMoreAboutConnections: { text: 'Learn more about the ', - linkText: 'connection methods.', + linkText: 'connection methods', }, customFeedDetails: 'Requires setup with your bank. This is most common for larger companies, and the best option, if you qualify.', directFeedDetails: 'Connect now using your master credentials. This is most common.', @@ -3084,8 +3072,6 @@ const translations = { distributionLabel: 'Distribution ID', }, }, - amexCorporate: 'Select this if the front of your cards say “Corporate”', - amexBusiness: 'Select this if the front of your cards say “Business”', error: { pleaseSelectProvider: 'Please select a card provider before continuing.', pleaseSelectBankAccount: 'Please select a bank account before continuing.', @@ -4291,8 +4277,6 @@ const translations = { current: 'Current', past: 'Past', }, - noCategory: 'No category', - noTag: 'No tag', expenseType: 'Expense type', recentSearches: 'Recent searches', recentChats: 'Recent chats', @@ -5069,7 +5053,6 @@ const translations = { reasonVisibleInLHN: { hasDraftComment: 'Has draft comment', hasGBR: 'Has GBR', - hasRBR: 'Has RBR', pinnedByUser: 'Pinned by user', hasIOUViolations: 'Has IOU violations', hasAddWorkspaceRoomErrors: 'Has add workspace room errors', From 4ea37758627d1452b4cd137cd4fe7835cd0b698f Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:39:38 +0530 Subject: [PATCH 2/8] add spanish translation --- src/languages/es.ts | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 22b4167231c0..07fce28a50d9 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -106,6 +106,7 @@ import type { PayerSettledParams, PaySomeoneParams, ReconciliationWorksParams, + ReimbursementRateParams, RemovedFromApprovalWorkflowParams, RemovedTheRequestParams, RemoveMemberPromptParams, @@ -266,7 +267,6 @@ const translations = { close: 'Cerrar', download: 'Descargar', downloading: 'Descargando', - uploading: 'Subiendo', pin: 'Fijar', unPin: 'Desfijar', back: 'Volver', @@ -946,6 +946,7 @@ const translations = { error: { invalidCategoryLength: 'La longitud 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.', + invalidIntegerAmount: 'Por favor, introduce una cantidad en dólares completos antes de continuar.', invalidTaxAmount: ({amount}: RequestAmountParams) => `El importe máximo del impuesto es ${amount}`, invalidSplit: 'La suma de las partes debe ser igual al importe total.', invalidSplitParticipants: 'Introduce un importe superior a cero para al menos dos participantes.', @@ -1010,7 +1011,7 @@ const translations = { changed: 'cambió', removed: 'eliminó', transactionPending: 'Transacción pendiente.', - chooseARate: 'Selecciona una tasa de reembolso por milla o kilómetro para el espacio de trabajo', + chooseARate: ({unit}: ReimbursementRateParams) => `Selecciona una tasa de reembolso por ${unit} del espacio de trabajo`, unapprove: 'Desaprobar', unapproveReport: 'Anular la aprobación del informe', headsUp: 'Atención!', @@ -2476,18 +2477,6 @@ const translations = { classes: 'Clases', items: 'Artículos', customers: 'Clientes/proyectos', - accountsDescription: 'Tu plan de cuentas de QuickBooks Desktop se importará a Expensify como categorías.', - accountsSwitchTitle: 'Elige importar cuentas nuevas como categorías activadas o desactivadas.', - accountsSwitchDescription: 'Las categorías activas estarán disponibles para ser escogidas cuando se crea un gasto.', - classesDescription: 'Elige cómo gestionar las clases de QuickBooks Desktop en Expensify.', - tagsDisplayedAsDescription: 'Nivel de partida', - reportFieldsDisplayedAsDescription: 'Nivel de informe', - customersDescription: 'Elige cómo gestionar los clientes/proyectos de QuickBooks Desktop en Expensify.', - advancedConfig: { - autoSyncDescription: 'Expensify se sincronizará automáticamente con QuickBooks Desktop todos los días.', - createEntities: 'Crear entidades automáticamente', - createEntitiesDescription: 'Expensify creará automáticamente proveedores en QuickBooks Desktop si aún no existen, y creará automáticamente clientes al exportar facturas.', - }, }, qbo: { importDescription: 'Elige que configuraciónes de codificación son importadas desde QuickBooks Online a Expensify.', @@ -3092,7 +3081,7 @@ const translations = { howDoYouWantToConnect: '¿Cómo deseas conectarte a tu banco?', learnMoreAboutConnections: { text: 'Obtén más información sobre ', - linkText: 'los métodos de conexión.', + linkText: 'los métodos de conexión', }, customFeedDetails: 'Requiere configuración con tu banco. Esto es más común para empresas grandes, y la mejor opción, si calificas.', directFeedDetails: 'Conéctate ahora usando tus credenciales maestras. Esto es lo más común.', @@ -3122,8 +3111,6 @@ const translations = { distributionLabel: 'ID de distribución', }, }, - amexCorporate: 'Seleccione esto si el frente de sus tarjetas dice “Corporativa”', - amexBusiness: 'Seleccione esta opción si el frente de sus tarjetas dice “Negocios”', error: { pleaseSelectProvider: 'Seleccione un proveedor de tarjetas antes de continuar.', pleaseSelectBankAccount: 'Seleccione una cuenta bancaria antes de continuar.', @@ -4337,8 +4324,6 @@ const translations = { current: 'Actual', past: 'Anterior', }, - noCategory: 'Sin categoría', - noTag: 'Sin etiqueta', expenseType: 'Tipo de gasto', recentSearches: 'Búsquedas recientes', recentChats: 'Chats recientes', @@ -5196,7 +5181,7 @@ const translations = { overLimit: ({formattedLimit}: ViolationsOverLimitParams) => `Importe supera el límite${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Importe supera el límite${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Importe supera el límite diario de la categoría${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, - receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma la exactitud', + receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma tu exactitud', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Recibo obligatorio'; if (formattedLimit ?? category) { @@ -5583,7 +5568,6 @@ const translations = { reasonVisibleInLHN: { hasDraftComment: 'Tiene comentario en borrador', hasGBR: 'Tiene GBR', - hasRBR: 'Tiene RBR', pinnedByUser: 'Fijado por el usuario', hasIOUViolations: 'Tiene violaciones de IOU', hasAddWorkspaceRoomErrors: 'Tiene errores al agregar sala de espacio de trabajo', From bc0b80823361ae31a4ae08ddb92224c1274ee919 Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:40:07 +0530 Subject: [PATCH 3/8] update validation while editing --- .../workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx index bb8515fe85d3..e51ab24937e7 100644 --- a/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx +++ b/src/pages/workspace/expensifyCard/WorkspaceEditCardLimitPage.tsx @@ -88,8 +88,10 @@ function WorkspaceEditCardLimitPage({route}: WorkspaceEditCardLimitPageProps) { const errors = ValidationUtils.getFieldRequiredErrors(values, [INPUT_IDS.LIMIT]); // We only want integers to be sent as the limit - if (!Number.isInteger(Number(values.limit))) { + if (!Number(values.limit)) { errors.limit = translate('iou.error.invalidAmount'); + } else if (!Number.isInteger(Number(values.limit))) { + errors.limit = translate('iou.error.invalidIntegerAmount'); } return errors; From a9934dbaa92a5d4a11e0890e24f2ea37fbbd3bff Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:40:26 +0530 Subject: [PATCH 4/8] Update validation while creating --- src/pages/workspace/expensifyCard/issueNew/LimitStep.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/expensifyCard/issueNew/LimitStep.tsx b/src/pages/workspace/expensifyCard/issueNew/LimitStep.tsx index eb7c2e7d8e0f..87b8eb39edcb 100644 --- a/src/pages/workspace/expensifyCard/issueNew/LimitStep.tsx +++ b/src/pages/workspace/expensifyCard/issueNew/LimitStep.tsx @@ -51,9 +51,12 @@ function LimitStep() { const errors = ValidationUtils.getFieldRequiredErrors(values, [INPUT_IDS.LIMIT]); // We only want integers to be sent as the limit - if (!Number(values.limit) || !Number.isInteger(Number(values.limit))) { + if (!Number(values.limit)) { errors.limit = translate('iou.error.invalidAmount'); + } else if (!Number.isInteger(Number(values.limit))) { + errors.limit = translate('iou.error.invalidIntegerAmount'); } + return errors; }, [translate], From 2354e03ba201071b85ba1a814750eb887653032c Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:54:00 +0530 Subject: [PATCH 5/8] Fix spanish language error --- src/languages/es.ts | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 07fce28a50d9..082c6050683e 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -106,7 +106,6 @@ import type { PayerSettledParams, PaySomeoneParams, ReconciliationWorksParams, - ReimbursementRateParams, RemovedFromApprovalWorkflowParams, RemovedTheRequestParams, RemoveMemberPromptParams, @@ -267,6 +266,7 @@ const translations = { close: 'Cerrar', download: 'Descargar', downloading: 'Descargando', + uploading: 'Subiendo', pin: 'Fijar', unPin: 'Desfijar', back: 'Volver', @@ -1011,7 +1011,7 @@ const translations = { changed: 'cambió', removed: 'eliminó', transactionPending: 'Transacción pendiente.', - chooseARate: ({unit}: ReimbursementRateParams) => `Selecciona una tasa de reembolso por ${unit} del espacio de trabajo`, + chooseARate: 'Selecciona una tasa de reembolso por milla o kilómetro para el espacio de trabajo', unapprove: 'Desaprobar', unapproveReport: 'Anular la aprobación del informe', headsUp: 'Atención!', @@ -2477,6 +2477,18 @@ const translations = { classes: 'Clases', items: 'Artículos', customers: 'Clientes/proyectos', + accountsDescription: 'Tu plan de cuentas de QuickBooks Desktop se importará a Expensify como categorías.', + accountsSwitchTitle: 'Elige importar cuentas nuevas como categorías activadas o desactivadas.', + accountsSwitchDescription: 'Las categorías activas estarán disponibles para ser escogidas cuando se crea un gasto.', + classesDescription: 'Elige cómo gestionar las clases de QuickBooks Desktop en Expensify.', + tagsDisplayedAsDescription: 'Nivel de partida', + reportFieldsDisplayedAsDescription: 'Nivel de informe', + customersDescription: 'Elige cómo gestionar los clientes/proyectos de QuickBooks Desktop en Expensify.', + advancedConfig: { + autoSyncDescription: 'Expensify se sincronizará automáticamente con QuickBooks Desktop todos los días.', + createEntities: 'Crear entidades automáticamente', + createEntitiesDescription: 'Expensify creará automáticamente proveedores en QuickBooks Desktop si aún no existen, y creará automáticamente clientes al exportar facturas.', + }, }, qbo: { importDescription: 'Elige que configuraciónes de codificación son importadas desde QuickBooks Online a Expensify.', @@ -3081,7 +3093,7 @@ const translations = { howDoYouWantToConnect: '¿Cómo deseas conectarte a tu banco?', learnMoreAboutConnections: { text: 'Obtén más información sobre ', - linkText: 'los métodos de conexión', + linkText: 'los métodos de conexión.', }, customFeedDetails: 'Requiere configuración con tu banco. Esto es más común para empresas grandes, y la mejor opción, si calificas.', directFeedDetails: 'Conéctate ahora usando tus credenciales maestras. Esto es lo más común.', @@ -3092,6 +3104,7 @@ const translations = { visa: `1. Visite [este artículo de ayuda](${CONST.COMPANY_CARDS_HELP}) para obtener instrucciones detalladas sobre cómo configurar sus tarjetas comerciales Visa.\n\n2. [Póngase en contacto con su banco](${CONST.COMPANY_CARDS_HELP}) para comprobar que admiten un feed personalizado para su programa, y pídales que lo activen.\n\n3. *Una vez que el feed esté habilitado y tengas sus datos, pasa a la siguiente pantalla.*`, amex: `1. Visite [este artículo de ayuda](${CONST.COMPANY_CARDS_HELP}) para saber si American Express puede habilitar un feed personalizado para su programa.\n\n2. Una vez activada la alimentación, Amex le enviará una carta de producción.\n\n3. *Una vez que tenga la información de alimentación, continúe con la siguiente pantalla.*`, mastercard: `1. Visite [este artículo de ayuda](${CONST.NETSUITE_IMPORT.HELP_LINKS.CUSTOM_SEGMENTS}) para obtener instrucciones detalladas sobre cómo configurar sus tarjetas comerciales Mastercard.\n\n 2. [Póngase en contacto con su banco](${CONST.COMPANY_CARDS_HELP}) para verificar que admiten un feed personalizado para su programa, y pídales que lo habiliten.\n\n3. *Una vez que el feed esté habilitado y tengas sus datos, pasa a la siguiente pantalla.*`, + stripe: `1. Visita el Panel de Stripe y ve a [Configuraciones](${CONST.COMPANY_CARDS_STRIPE_HELP}).\n\n2. En Integraciones de Productos, haz clic en Habilitar junto a Expensify.\n\n3. Una vez que la fuente esté habilitada, haz clic en Enviar abajo y comenzaremos a añadirla.`, }, whatBankIssuesCard: '¿Qué banco emite estas tarjetas?', enterNameOfBank: 'Introduzca el nombre del banco', @@ -3111,6 +3124,8 @@ const translations = { distributionLabel: 'ID de distribución', }, }, + amexCorporate: 'Seleccione esto si el frente de sus tarjetas dice “Corporativa”', + amexBusiness: 'Seleccione esta opción si el frente de sus tarjetas dice “Negocios”', error: { pleaseSelectProvider: 'Seleccione un proveedor de tarjetas antes de continuar.', pleaseSelectBankAccount: 'Seleccione una cuenta bancaria antes de continuar.', @@ -4324,6 +4339,8 @@ const translations = { current: 'Actual', past: 'Anterior', }, + noCategory: 'Sin categoría', + noTag: 'Sin etiqueta', expenseType: 'Tipo de gasto', recentSearches: 'Búsquedas recientes', recentChats: 'Chats recientes', @@ -5181,7 +5198,7 @@ const translations = { overLimit: ({formattedLimit}: ViolationsOverLimitParams) => `Importe supera el límite${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Importe supera el límite${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Importe supera el límite diario de la categoría${formattedLimit ? ` de ${formattedLimit}/persona` : ''}`, - receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma tu exactitud', + receiptNotSmartScanned: 'Recibo no verificado. Por favor, confirma la exactitud', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Recibo obligatorio'; if (formattedLimit ?? category) { @@ -5196,7 +5213,10 @@ const translations = { return message; }, reviewRequired: 'Revisión requerida', - rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { + rter: ({brokenBankConnection, isAdmin, email, isTransactionOlderThan7Days, member, rterType}: ViolationsRterParams) => { + if (rterType === CONST.RTER_VIOLATION_TYPES.BROKEN_CARD_CONNECTION_530 || rterType === CONST.RTER_VIOLATION_TYPES.BROKEN_CARD_CONNECTION) { + return ''; + } if (brokenBankConnection) { return isAdmin ? `No se puede adjuntar recibo debido a un problema con la conexión a tu banco que ${email} necesita arreglar` @@ -5209,6 +5229,10 @@ const translations = { } return ''; }, + brokenConnection530Error: 'Recibo pendiente debido a una conexión bancaria rota.', + adminBrokenConnectionError: 'Recibo pendiente debido a una conexión bancaria rota. Por favor, resuélvelo en ', + memberBrokenConnectionError: 'Recibo pendiente debido a una conexión bancaria rota. Por favor, pide a un administrador del espacio de trabajo que lo resuelva.', + markAsCashToIgnore: 'Márcalo como efectivo para ignorar y solicitar el pago.', smartscanFailed: 'No se pudo escanear el recibo. Introduce los datos manualmente', someTagLevelsRequired: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `Falta ${tagName ?? 'Tag'}`, tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `La etiqueta ${tagName ? `${tagName} ` : ''}ya no es válida`, @@ -5568,6 +5592,7 @@ const translations = { reasonVisibleInLHN: { hasDraftComment: 'Tiene comentario en borrador', hasGBR: 'Tiene GBR', + hasRBR: 'Tiene RBR', pinnedByUser: 'Fijado por el usuario', hasIOUViolations: 'Tiene violaciones de IOU', hasAddWorkspaceRoomErrors: 'Tiene errores al agregar sala de espacio de trabajo', From 18b8af5a33438c18c69596f30fcb190b0786e35f Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:54:25 +0530 Subject: [PATCH 6/8] Fix english language error --- src/languages/en.ts | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 464318d822f1..d73015693e7a 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -108,7 +108,6 @@ import type { PayerSettledParams, PaySomeoneParams, ReconciliationWorksParams, - ReimbursementRateParams, RemovedFromApprovalWorkflowParams, RemovedTheRequestParams, RemoveMemberPromptParams, @@ -277,6 +276,7 @@ const translations = { close: 'Close', download: 'Download', downloading: 'Downloading', + uploading: 'Uploading', pin: 'Pin', unPin: 'Unpin', back: 'Back', @@ -951,7 +951,6 @@ const translations = { error: { invalidCategoryLength: 'The category name exceeds 255 characters. Please shorten it or choose a different category.', invalidAmount: 'Please enter a valid amount before continuing.', - invalidIntegerAmount: 'Please enter a whole dollar amount before continuing.', invalidTaxAmount: ({amount}: RequestAmountParams) => `Maximum tax amount is ${amount}`, invalidSplit: 'The sum of splits must equal the total amount.', invalidSplitParticipants: 'Please enter an amount greater than zero for at least two participants.', @@ -1016,7 +1015,7 @@ const translations = { changed: 'changed', removed: 'removed', transactionPending: 'Transaction pending.', - chooseARate: ({unit}: ReimbursementRateParams) => `Select a workspace reimbursement rate per ${unit}`, + chooseARate: 'Select a workspace reimbursement rate per mile or kilometer', unapprove: 'Unapprove', unapproveReport: 'Unapprove report', headsUp: 'Heads up!', @@ -2453,6 +2452,19 @@ const translations = { classes: 'Classes', items: 'Items', customers: 'Customers/projects', + accountsDescription: 'Your QuickBooks Desktop chart of accounts will import into Expensify as categories.', + accountsSwitchTitle: 'Choose to import new accounts as enabled or disabled categories.', + accountsSwitchDescription: 'Enabled categories will be available for members to select when creating their expenses.', + classesDescription: 'Choose how to handle QuickBooks Desktop classes in Expensify.', + tagsDisplayedAsDescription: 'Line item level', + reportFieldsDisplayedAsDescription: 'Report level', + customersDescription: 'Choose how to handle QuickBooks Desktop customers/projects in Expensify.', + advancedConfig: { + autoSyncDescription: 'Expensify will automatically sync with QuickBooks Desktop every day.', + createEntities: 'Auto-create entities', + createEntitiesDescription: + "Expensify will automatically create vendors in QuickBooks Desktop if they don't exist already, and auto-create customers when exporting invoices.", + }, }, qbo: { importDescription: 'Choose which coding configurations to import from QuickBooks Online to Expensify.', @@ -3043,7 +3055,7 @@ const translations = { howDoYouWantToConnect: 'How do you want to connect to your bank?', learnMoreAboutConnections: { text: 'Learn more about the ', - linkText: 'connection methods', + linkText: 'connection methods.', }, customFeedDetails: 'Requires setup with your bank. This is most common for larger companies, and the best option, if you qualify.', directFeedDetails: 'Connect now using your master credentials. This is most common.', @@ -3053,6 +3065,7 @@ const translations = { visa: `1. Visit [this help article](${CONST.COMPANY_CARDS_HELP}) for detailed instructionson how to set up your Visa Commercial Cards.\n\n2. [Contact your bank](${CONST.COMPANY_CARDS_HELP}) to verify they support a custom feed for your program, and ask them toenable it.\n\n3. *Once the feed is enabled and you have its details, continue to the next screen.*`, amex: `1. Visit [this help article](${CONST.COMPANY_CARDS_HELP}) to find out if American Express can enable a custom feed for your program.\n\n2. Once the feed is enabled, Amex will send you a production letter.\n\n3. *Once you have the feed information, continue to the next screen.*`, mastercard: `1. Visit [this help article](${CONST.COMPANY_CARDS_HELP}) for detailed instructions on how to set up your Mastercard Commercial Cards.\n\n 2. [Contact your bank](${CONST.COMPANY_CARDS_HELP}) to verify they support a custom feed for your program, and ask them to enable it.\n\n3. *Once the feed is enabled and you have its details, continue to the next screen.*`, + stripe: `1. Visit Stripe’s Dashboard, and go to [Settings](${CONST.COMPANY_CARDS_STRIPE_HELP}).\n\n2. Under Product Integrations, click Enable next to Expensify.\n\n3. Once the feed is enabled, click Submit below and we’ll work on adding it.`, }, whatBankIssuesCard: 'What bank issues these cards?', enterNameOfBank: 'Enter name of bank', @@ -3072,6 +3085,8 @@ const translations = { distributionLabel: 'Distribution ID', }, }, + amexCorporate: 'Select this if the front of your cards say “Corporate”', + amexBusiness: 'Select this if the front of your cards say “Business”', error: { pleaseSelectProvider: 'Please select a card provider before continuing.', pleaseSelectBankAccount: 'Please select a bank account before continuing.', @@ -4277,6 +4292,8 @@ const translations = { current: 'Current', past: 'Past', }, + noCategory: 'No category', + noTag: 'No tag', expenseType: 'Expense type', recentSearches: 'Recent searches', recentChats: 'Recent chats', @@ -4686,7 +4703,10 @@ const translations = { return message; }, reviewRequired: 'Review required', - rter: ({brokenBankConnection, email, isAdmin, isTransactionOlderThan7Days, member}: ViolationsRterParams) => { + rter: ({brokenBankConnection, email, isAdmin, isTransactionOlderThan7Days, member, rterType}: ViolationsRterParams) => { + if (rterType === CONST.RTER_VIOLATION_TYPES.BROKEN_CARD_CONNECTION_530 || rterType === CONST.RTER_VIOLATION_TYPES.BROKEN_CARD_CONNECTION) { + return ''; + } if (brokenBankConnection) { return isAdmin ? `Can't auto-match receipt due to broken bank connection which ${email} needs to fix` @@ -4698,6 +4718,10 @@ const translations = { return ''; }, + brokenConnection530Error: 'Receipt pending due to broken bank connection.', + adminBrokenConnectionError: 'Receipt pending due to broken bank connection. Please resolve in ', + memberBrokenConnectionError: 'Receipt pending due to broken bank connection. Please ask a workspace admin to resolve.', + markAsCashToIgnore: 'Mark as cash to ignore and request payment.', smartscanFailed: 'Receipt scanning failed. Enter details manually.', someTagLevelsRequired: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `Missing ${tagName ?? 'Tag'}`, tagOutOfPolicy: ({tagName}: ViolationsTagOutOfPolicyParams = {}) => `${tagName ?? 'Tag'} no longer valid`, @@ -5053,6 +5077,7 @@ const translations = { reasonVisibleInLHN: { hasDraftComment: 'Has draft comment', hasGBR: 'Has GBR', + hasRBR: 'Has RBR', pinnedByUser: 'Pinned by user', hasIOUViolations: 'Has IOU violations', hasAddWorkspaceRoomErrors: 'Has add workspace room errors', From 96adac76cf277be09af5ef0a0f121ebde8cba7b4 Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Thu, 17 Oct 2024 17:56:15 +0530 Subject: [PATCH 7/8] add translation --- src/languages/en.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index d73015693e7a..ffb210960286 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -951,6 +951,7 @@ const translations = { error: { invalidCategoryLength: 'The category name exceeds 255 characters. Please shorten it or choose a different category.', invalidAmount: 'Please enter a valid amount before continuing.', + invalidIntegerAmount: 'Please enter a whole dollar amount before continuing.', invalidTaxAmount: ({amount}: RequestAmountParams) => `Maximum tax amount is ${amount}`, invalidSplit: 'The sum of splits must equal the total amount.', invalidSplitParticipants: 'Please enter an amount greater than zero for at least two participants.', From 1123a83b4c220b58948c4ed25fe22364ae2b663a Mon Sep 17 00:00:00 2001 From: Rutika Pawar Date: Fri, 25 Oct 2024 17:30:57 +0530 Subject: [PATCH 8/8] Update es.ts --- src/languages/es.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/es.ts b/src/languages/es.ts index 082c6050683e..095182b7d14d 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -946,7 +946,7 @@ const translations = { error: { invalidCategoryLength: 'La longitud 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.', - invalidIntegerAmount: 'Por favor, introduce una cantidad en dólares completos antes de continuar.', + invalidIntegerAmount: 'Por favor, introduce una cantidad entera en dólares antes de continuar.', invalidTaxAmount: ({amount}: RequestAmountParams) => `El importe máximo del impuesto es ${amount}`, invalidSplit: 'La suma de las partes debe ser igual al importe total.', invalidSplitParticipants: 'Introduce un importe superior a cero para al menos dos participantes.',