diff --git a/src/components/TransactionItemRow/TransactionItemRowRBR.tsx b/src/components/TransactionItemRow/TransactionItemRowRBR.tsx index b77f9b1a0786..a00072ca2a1b 100644 --- a/src/components/TransactionItemRow/TransactionItemRowRBR.tsx +++ b/src/components/TransactionItemRow/TransactionItemRowRBR.tsx @@ -7,6 +7,7 @@ import RenderHTML from '@components/RenderHTML'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; +import Parser from '@libs/Parser'; import ViolationsUtils from '@libs/Violations/ViolationsUtils'; import variables from '@styles/variables'; import type {TransactionViolations} from '@src/types/onyx'; @@ -40,7 +41,8 @@ function TransactionItemRowRBR({transactionViolations, containerStyles, missingF ...(transactionViolations ? transactionViolations.map((violation) => { const message = ViolationsUtils.getViolationTranslation(violation, translate); - return message.endsWith('.') ? message : `${message}.`; + const textMessage = Parser.htmlToText(message); + return textMessage.endsWith('.') ? message : `${message}.`; }) : []), ].join(' '); diff --git a/src/languages/de.ts b/src/languages/de.ts index 3f0c2edd4e29..fa2151a65147 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6419,7 +6419,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Betrag über dem Limit von ${formattedLimit}/Person`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Betrag über dem täglichen ${formattedLimit}/Personen-Kategorielimit`, receiptNotSmartScanned: - 'Ausgabendetails und Beleg manuell hinzugefügt. Bitte überprüfen Sie die Details. Erfahren Sie mehr über die automatische Überprüfung aller Belege.', + 'Beleg und Ausgabendetails manuell hinzugefügt. Erfahren Sie mehr.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Beleg erforderlich'; if (formattedLimit ?? category) { diff --git a/src/languages/en.ts b/src/languages/en.ts index 2e239e75509d..8e5e0fd38deb 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -6385,8 +6385,7 @@ const translations = { overLimit: ({formattedLimit}: ViolationsOverLimitParams) => `Amount over ${formattedLimit}/person limit`, overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Amount over ${formattedLimit}/person limit`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Amount over daily ${formattedLimit}/person category limit`, - receiptNotSmartScanned: - 'Expense details and receipt added manually. Please verify the details. Learn more about automatic auditing for all receipts.', + receiptNotSmartScanned: 'Receipt and expense details added manually. Learn more.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Receipt required'; if (formattedLimit ?? category) { diff --git a/src/languages/es.ts b/src/languages/es.ts index 02add6bf8932..5676e99ca694 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -6873,7 +6873,7 @@ const translations = { 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: - 'Detalles del gasto y recibo añadidos manualmente. Por favor, verifica los detalles. Aprende más sobre la auditoría automática para todos los recibos.', + 'Detalles del recibo y del gasto añadidos manualmente. Aprende más.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Recibo obligatorio'; if (formattedLimit ?? category) { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index dec4c357bc55..810b246e566a 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6429,7 +6429,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Montant au-delà de la limite de ${formattedLimit}/personne`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Montant dépassant la limite quotidienne de ${formattedLimit}/personne pour la catégorie`, receiptNotSmartScanned: - 'Détails de la dépense et reçu ajoutés manuellement. Veuillez vérifier les détails. En savoir plus sur l\'audit automatique pour tous les reçus.', + 'Reçu et détails de la dépense ajoutés manuellement. En savoir plus.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Reçu requis'; if (formattedLimit ?? category) { diff --git a/src/languages/it.ts b/src/languages/it.ts index 8e52b5ddd62c..858fb8c55679 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6431,7 +6431,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Importo oltre il limite di ${formattedLimit}/persona`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Importo oltre il limite giornaliero ${formattedLimit}/persona per categoria`, receiptNotSmartScanned: - 'Dettagli della spesa e ricevuta aggiunti manualmente. Si prega di verificare i dettagli. Scopri di più sulla verifica automatica di tutte le ricevute.', + 'Ricevuta e dettagli della spesa aggiunti manualmente. Scopri di più.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Ricevuta richiesta'; if (formattedLimit ?? category) { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 0bd3f635cc2c..bd0057bb8521 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6390,8 +6390,7 @@ const translations = { overLimit: ({formattedLimit}: ViolationsOverLimitParams) => `${formattedLimit}/人の制限を超えた金額`, overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `${formattedLimit}/人の制限を超えた金額`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `1日あたりのカテゴリ制限${formattedLimit}/人を超える金額`, - receiptNotSmartScanned: - '経費の詳細と領収書が手動で追加されました。詳細を確認してください。すべての領収書の自動監査について詳細を学ぶ。', + receiptNotSmartScanned: '領収書と経費の詳細を手動で追加しました。詳細を学ぶ。', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = '領収書が必要です'; if (formattedLimit ?? category) { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 6d7af4bb8b5f..1e9e1d5b4893 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6424,7 +6424,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Bedrag boven ${formattedLimit}/persoon limiet`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Bedrag boven de dagelijkse ${formattedLimit}/persoon categoriegrens`, receiptNotSmartScanned: - 'Uitgavendetails en bon handmatig toegevoegd. Controleer de details. Meer informatie over automatische controle van alle bonnen.', + 'Bon en uitgavendetails handmatig toegevoegd. Meer weten.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Bon vereist'; if (formattedLimit ?? category) { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 8600ceae2ddb..4b3409142c1b 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6408,7 +6408,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Kwota przekracza limit ${formattedLimit}/osobę`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Kwota przekracza dzienny limit ${formattedLimit}/osoba dla kategorii`, receiptNotSmartScanned: - 'Szczegóły wydatków i paragon dodane ręcznie. Proszę zweryfikować szczegóły. Dowiedz się więcej o automatycznym audycie wszystkich paragonów.', + 'Paragon i szczegóły wydatku dodane ręcznie. Dowiedz się więcej.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Wymagany paragon'; if (formattedLimit ?? category) { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index f09cba5d1c19..0372a6d6a802 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6421,7 +6421,7 @@ const translations = { overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `Quantia acima do limite de ${formattedLimit}/pessoa`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `Quantia acima do limite diário de ${formattedLimit}/pessoa para a categoria`, receiptNotSmartScanned: - 'Detalhes da despesa e recibo adicionados manualmente. Por favor, verifique os detalhes. Saiba mais sobre auditoria automática para todos os recibos.', + 'Recibo e detalhes da despesa adicionados manualmente. Saiba mais.', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = 'Recibo necessário'; if (formattedLimit ?? category) { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 7fc4bf95d195..901eaa80d71d 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6308,8 +6308,7 @@ const translations = { overLimit: ({formattedLimit}: ViolationsOverLimitParams) => `金额超过${formattedLimit}/人限制`, overLimitAttendee: ({formattedLimit}: ViolationsOverLimitParams) => `金额超过${formattedLimit}/人限制`, perDayLimit: ({formattedLimit}: ViolationsPerDayLimitParams) => `金额超过每日 ${formattedLimit}/人类别限制`, - receiptNotSmartScanned: - '费用详情和收据已手动添加。请核实详情。了解更多关于所有收据的自动审核。', + receiptNotSmartScanned: '收据和费用详情手动添加。了解更多。', receiptRequired: ({formattedLimit, category}: ViolationsReceiptRequiredParams) => { let message = '需要收据'; if (formattedLimit ?? category) { diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index eb38d184d6eb..d7ce090e0bd5 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -5,6 +5,7 @@ import type {LocaleContextProps} from '@components/LocaleContextProvider'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import DateUtils from '@libs/DateUtils'; import {isReceiptError} from '@libs/ErrorUtils'; +import Parser from '@libs/Parser'; import {getDistanceRateCustomUnitRate, getSortedTagKeys} from '@libs/PolicyUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import CONST from '@src/CONST'; @@ -532,7 +533,8 @@ const ViolationsUtils = { if (!message) { return; } - return message.endsWith('.') ? message : `${message}.`; + const textMessage = Parser.htmlToText(message); + return textMessage.endsWith('.') ? message : `${message}.`; }), ] .filter(Boolean)