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)