Remove REIMBURSED from the deprecatedOldReportActions list#80706
Remove REIMBURSED from the deprecatedOldReportActions list#80706
Conversation
Codecov Report❌ Looks like you've decreased code coverage for some files. Please write tests to increase, or at least maintain, the existing level of code coverage. See our documentation here for how to interpret this table.
|
|
@Krishna2323 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
1 similar comment
|
@Krishna2323 Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
|
Will be reviewing in an hour. |
Code Review CompleteI've completed a comprehensive review of PR #80706. Here's my assessment: SummaryThis PR conditionally displays REIMBURSED report actions based on the Files Reviewed
Overall AssessmentThe implementation is solid with proper:
1 inline comment posted with a minor performance optimization suggestion. |
Inline Comment: Performance OptimizationFile: Performance concern: The const reimbursedMessage = useMemo(() => {
const messageFragments = action.message;
if (Array.isArray(messageFragments) && messageFragments.length > 1) {
return messageFragments
.slice(1)
.map((fragment) => fragment?.text ?? '')
.join('')
.trim();
}
return getReportActionMessageText(action);
}, [action.message, action]);This avoids redundant string operations when the component re-renders. |
|
@deetergp is this ready for review again? |
|
@Krishna2323 Yes it is 👍 |
|
Reviewing... |
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index 63319364..59fff828 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -1385,8 +1385,8 @@ const translations: TranslationDeepObject<typeof en> = {
paidWithExpensify: (payer?: string) => `${payer ? `${payer} ` : ''}mit Wallet bezahlt`,
automaticallyPaidWithExpensify: (payer?: string) =>
`${payer ? `${payer} ` : ''}mit Expensify über <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">Workspace-Regeln</a> bezahlt`,
- reimbursedThisReport: 'diesen Bericht erstattet',
- paidThisBill: 'diese Rechnung bezahlt',
+ reimbursedThisReport: 'hat diesen Bericht erstattet',
+ paidThisBill: 'hat diese Rechnung bezahlt',
reimbursedOnBehalfOf: (actor: string) => `im Namen von ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `vom Bankkonto mit der Endung ${debitBankAccount}`,
reimbursedSubmitterAddedBankAccount: (submitter: string) =>
@@ -1403,8 +1403,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. Das Geld ist auf dem Weg zu Ihrem ${creditBankAccount ? `Bankkonto mit der Endung ${creditBankAccount}` : 'Konto'}. Die Erstattung wird voraussichtlich bis zum ${expectedDate} abgeschlossen.`
- : `. Das Geld ist auf dem Weg zum Bankkonto von ${submitterLogin}${creditBankAccount ? ` mit der Endung ${creditBankAccount}` : ''}. Die Erstattung wird voraussichtlich am ${expectedDate} abgeschlossen.`,
+ ? `. Geld ist auf dem Weg zu Ihrem${creditBankAccount ? `Bankkonto mit Endziffern ${creditBankAccount}` : 'Konto'}. Die Erstattung wird voraussichtlich am ${expectedDate} abgeschlossen.`
+ : `. Geld ist auf dem Weg zu ${submitterLogin}${creditBankAccount ? `Bankkonto mit Endziffern ${creditBankAccount}` : 'Konto'}. Die Rückerstattung wird voraussichtlich am ${expectedDate} abgeschlossen.`,
reimbursedWithCheck: 'per Scheck.',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1419,11 +1419,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'Karte' : 'Bankkonto';
return isCurrentUser
- ? `. Das Geld ist auf dem Weg zu Ihrem ${creditBankAccount ? `Bankkonto mit der Endung ${creditBankAccount}` : 'Konto'} (bezahlt über ${paymentMethod}). Dies kann bis zu 10 Werktage dauern.`
- : `. Das Geld ist auf dem Weg zum Bankkonto von ${submitterLogin}${creditBankAccount ? ` mit der Endung ${creditBankAccount}` : ''} (bezahlt über ${paymentMethod}). Dies kann bis zu 10 Werktage dauern.`;
+ ? `. Geld ist auf dem Weg zu Ihrem${creditBankAccount ? `Bankkonto mit Endziffern ${creditBankAccount}` : 'Konto'} (bezahlt per ${paymentMethod}). Das kann bis zu 10 Werktage dauern.`
+ : `. Geld ist auf dem Weg zu ${submitterLogin}s${creditBankAccount ? `Bankkonto mit Endziffern ${creditBankAccount}` : 'Konto'} (bezahlt über ${paymentMethod}). Dies kann bis zu 10 Werktage dauern.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `mit Direkteinzahlung (ACH)${creditBankAccount ? ` auf das Bankkonto mit der Endziffer ${creditBankAccount}.` : '. '}${expectedDate ? `Die Rückerstattung wird voraussichtlich bis zum ${expectedDate} abgeschlossen sein.` : 'Dies dauert in der Regel 4–5 Werktage.'}`,
+ `mit direkter Einzahlung (ACH)${creditBankAccount ? `auf das Bankkonto mit der Endung ${creditBankAccount}.` : '. '}${expectedDate ? `Die Erstattung wird voraussichtlich bis zum ${expectedDate} abgeschlossen sein.` : 'Dies dauert in der Regel 4–5 Werktage.'}`,
noReimbursableExpenses: 'Dieser Bericht enthält einen ungültigen Betrag',
pendingConversionMessage: 'Die Gesamtsumme wird aktualisiert, sobald du wieder online bist',
changedTheExpense: 'hat die Ausgabe geändert',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 8cdad8ea..d8753cb0 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -1392,7 +1392,7 @@ const translations: TranslationDeepObject<typeof en> = {
paidThisBill: 'a payé cette facture',
reimbursedOnBehalfOf: (actor: string) => `au nom de ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `à partir du compte bancaire se terminant par ${debitBankAccount}`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} a ajouté un compte bancaire, retirant la note de frais de la mise en attente. Le remboursement est lancé`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} a ajouté un compte bancaire, la note de frais n’est plus en attente. Le remboursement est lancé`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1405,8 +1405,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. L’argent est en route vers votre ${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'}. Remboursement estimé pour être terminé le ${expectedDate}.`
- : `. L’argent est en route vers le compte bancaire de ${submitterLogin}${creditBankAccount ? ` se terminant par ${creditBankAccount}` : ''}. Remboursement estimé pour le ${expectedDate}.`,
+ ? `. L’argent est en route vers votre${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'}. Remboursement estimé pour le ${expectedDate}.`
+ : `. L'argent est en route vers le compte de ${submitterLogin}${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'}. Remboursement estimé à la date du ${expectedDate}.`,
reimbursedWithCheck: 'par chèque.',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1421,11 +1421,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'carte' : 'compte bancaire';
return isCurrentUser
- ? `. L’argent est en route vers votre ${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'} (payé via ${paymentMethod}). Cela peut prendre jusqu’à 10 jours ouvrables.`
- : `. L’argent est en route vers le compte bancaire de ${submitterLogin}${creditBankAccount ? ` se terminant par ${creditBankAccount}` : ''} (payé via ${paymentMethod}). Cela peut prendre jusqu’à 10 jours ouvrés.`;
+ ? `. L’argent est en route vers votre${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'} (payé via ${paymentMethod}). Cela peut prendre jusqu’à 10 jours ouvrables.`
+ : `. L'argent est en route vers le/la ${submitterLogin} ${creditBankAccount ? `compte bancaire se terminant par ${creditBankAccount}` : 'compte'} (payé via ${paymentMethod}). Cela peut prendre jusqu'à 10 jours ouvrés.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `par dépôt direct (ACH)${creditBankAccount ? ` vers le compte bancaire se terminant par ${creditBankAccount}.` : '. '}${expectedDate ? `Le remboursement devrait être terminé d'ici le ${expectedDate}.` : 'Cela prend généralement 4 à 5 jours ouvrables.'}`,
+ `par dépôt direct (ACH)${creditBankAccount ? `sur le compte bancaire se terminant par ${creditBankAccount}.` : '. '}${expectedDate ? `Le remboursement devrait être effectué d’ici le ${expectedDate}.` : 'Cela prend généralement 4 à 5 jours ouvrables.'}`,
noReimbursableExpenses: 'Cette note de frais a un montant non valide',
pendingConversionMessage: 'Le total sera mis à jour quand vous serez de nouveau en ligne',
changedTheExpense: 'a modifié la dépense',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 3f6c9d32..0ae6af56 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -1096,15 +1096,12 @@ const translations: TranslationDeepObject<typeof en> = {
if (!added && !updated) {
return 'Nessuna categoria è stata aggiunta o aggiornata.';
}
-
if (added && updated) {
return `${added} ${added === 1 ? 'categoria aggiunta' : 'categorie aggiunte'}, ${updated} ${updated === 1 ? 'categoria aggiornata' : 'categorie aggiornate'}.`;
}
-
if (added) {
return added === 1 ? 'È stata aggiunta 1 categoria.' : `Sono state aggiunte ${added} categorie.`;
}
-
return updated === 1 ? 'È stata aggiornata 1 categoria.' : `Sono state aggiornate ${updated} categorie.`;
},
importCompanyCardTransactionsSuccessfulDescription: ({transactions}: {transactions: number}) =>
@@ -1391,7 +1388,7 @@ const translations: TranslationDeepObject<typeof en> = {
paidThisBill: 'ha pagato questa fattura',
reimbursedOnBehalfOf: (actor: string) => `per conto di ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `dal conto bancario che termina con ${debitBankAccount}`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} ha aggiunto un conto bancario, rimuovendo il blocco sul resoconto. Il rimborso è stato avviato`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} ha aggiunto un conto bancario, rimuovendo il blocco del report. Il rimborso è stato avviato`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1404,8 +1401,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. Il denaro è in arrivo sul tuo ${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'}. Rimborso previsto per il ${expectedDate}.`
- : `. Il denaro è in arrivo sul conto bancario di ${submitterLogin}${creditBankAccount ? ` che termina con ${creditBankAccount}` : ''}. Rimborso previsto per il ${expectedDate}.`,
+ ? `. Il denaro è in viaggio verso il tuo${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'}. Il rimborso dovrebbe essere completato entro il ${expectedDate}.`
+ : `. Il denaro è in arrivo a ${submitterLogin}${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'}. Rimborso previsto per il ${expectedDate}.`,
reimbursedWithCheck: 'tramite assegno.',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1420,11 +1417,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'carta' : 'conto bancario';
return isCurrentUser
- ? `. Il denaro è in arrivo sul tuo ${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'} (pagato tramite ${paymentMethod}). Questo potrebbe richiedere fino a 10 giorni lavorativi.`
- : `. Il denaro è in arrivo sul conto bancario di ${submitterLogin}${creditBankAccount ? ` che termina con ${creditBankAccount}` : ''} (pagato tramite ${paymentMethod}). Potrebbero volerci fino a 10 giorni lavorativi.`;
+ ? `. Il denaro è in arrivo sul tuo${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'} (pagato tramite ${paymentMethod}). Potrebbero essere necessari fino a 10 giorni lavorativi.`
+ : `. Il denaro è in arrivo sul${creditBankAccount ? `conto bancario che termina con ${creditBankAccount}` : 'conto'} di ${submitterLogin} (pagato tramite ${paymentMethod}). Potrebbero volerci fino a 10 giorni lavorativi.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `con accredito diretto (ACH)${creditBankAccount ? ` al conto bancario che termina con ${creditBankAccount}.` : '. '}${expectedDate ? `Il rimborso dovrebbe essere completato entro il ${expectedDate}.` : 'In genere richiede 4-5 giorni lavorativi.'}`,
+ `con deposito diretto (ACH)${creditBankAccount ? `sul conto bancario che termina con ${creditBankAccount}.` : '. '}${expectedDate ? `Il rimborso dovrebbe essere completato entro il ${expectedDate}.` : 'In genere richiede 4-5 giorni lavorativi.'}`,
noReimbursableExpenses: 'Questo rendiconto contiene un importo non valido',
pendingConversionMessage: 'Il totale verrà aggiornato quando torni online',
changedTheExpense: 'ha modificato la spesa',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 147fce6e..3a4a4da6 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -1079,15 +1079,12 @@ const translations: TranslationDeepObject<typeof en> = {
if (!added && !updated) {
return 'カテゴリーは追加も更新もされていません。';
}
-
if (added && updated) {
return `${added}件のカテゴリーを追加し、${updated}件のカテゴリーを更新しました。`;
}
-
if (added) {
return added === 1 ? 'カテゴリーを1件追加しました。' : `${added}件のカテゴリーを追加しました。`;
}
-
return updated === 1 ? 'カテゴリーを1件更新しました。' : `${updated}件のカテゴリーを更新しました。`;
},
importCompanyCardTransactionsSuccessfulDescription: ({transactions}: {transactions: number}) =>
@@ -1371,9 +1368,9 @@ const translations: TranslationDeepObject<typeof en> = {
`${payer ? `${payer} ` : ''}は<a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">ワークスペースルール</a>経由でExpensifyにより支払われました`,
reimbursedThisReport: 'このレポートを精算しました',
paidThisBill: 'この請求書を支払いました',
- reimbursedOnBehalfOf: (actor: string) => `${actor}に代わって`,
+ reimbursedOnBehalfOf: (actor: string) => `${actor}の代理で`,
reimbursedFromBankAccount: (debitBankAccount: string) => `末尾が ${debitBankAccount} の銀行口座から`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} さんが銀行口座を追加し、レポートの保留を解除しました。払い戻しを開始しました。`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} が銀行口座を追加したため、レポートの保留が解除されました。払い戻しを開始しました`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1386,8 +1383,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. ${creditBankAccount ? `預金口座(末尾番号 ${creditBankAccount})` : 'アカウント'} にお金を送金中です。払い戻しは ${expectedDate} に完了する見込みです。`
- : `. ${submitterLogin} さんへの${creditBankAccount ? `預金口座(末尾番号 ${creditBankAccount})` : 'アカウント'}への送金中です。払い戻しの完了予定日は ${expectedDate} です。`,
+ ? `. ${creditBankAccount ? `末尾が ${creditBankAccount} の銀行口座` : 'アカウント'}への送金が進行中です。払い戻しは${expectedDate}頃に完了する予定です。`
+ : `. ${submitterLogin}さんの${creditBankAccount ? `末尾が ${creditBankAccount} の銀行口座` : 'アカウント'}に送金中です。払い戻しの完了予定日は${expectedDate}です。`,
reimbursedWithCheck: '小切手で',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1402,11 +1399,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'カード' : '銀行口座';
return isCurrentUser
- ? `. ${paymentMethod}で支払われた資金が、お客様の${creditBankAccount ? `預金口座(末尾番号 ${creditBankAccount})` : 'アカウント'}に向けて送金中です。最大で10営業日かかる場合があります。`
- : `. ${submitterLogin} さんの ${creditBankAccount ? `預金口座(末尾番号 ${creditBankAccount})` : 'アカウント'} へ送金中です(${paymentMethod} で支払われます)。最大 10 営業日かかる場合があります。`;
+ ? `. 資金は${paymentMethod}で支払われ、${creditBankAccount ? `末尾が ${creditBankAccount} の銀行口座` : 'アカウント'} に送金中です。完了まで最長で営業日10日かかる場合があります。`
+ : `. ${submitterLogin} さんの ${creditBankAccount ? `末尾が ${creditBankAccount} の銀行口座` : 'アカウント'} への送金を${paymentMethod}で行いました。最大10営業日かかることがあります。`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `直接入金(ACH)で${creditBankAccount ? `${creditBankAccount}で終わる銀行口座へ。` : '. '}${expectedDate ? `払戻しは${expectedDate}までに完了する見込みです。` : '通常、営業日で4~5日かかります。'}`,
+ `口座振替入金(ACH)で${creditBankAccount ? `${creditBankAccount}で終わる銀行口座へ。` : '. '}${expectedDate ? `払い戻しは${expectedDate}までに完了する見込みです。` : '通常、4~5営業日かかります。'}`,
noReimbursableExpenses: 'このレポートには無効な金額が含まれています',
pendingConversionMessage: 'オンラインに戻ると合計が更新されます',
changedTheExpense: '経費を変更しました',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 28c74311..74eb2020 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -1095,15 +1095,12 @@ const translations: TranslationDeepObject<typeof en> = {
if (!added && !updated) {
return 'Er zijn geen categorieën toegevoegd of bijgewerkt.';
}
-
if (added && updated) {
return `${added} ${added === 1 ? 'categorie' : 'categorieën'} toegevoegd, ${updated} ${updated === 1 ? 'categorie' : 'categorieën'} bijgewerkt.`;
}
-
if (added) {
return added === 1 ? '1 categorie is toegevoegd.' : `${added} categorieën zijn toegevoegd.`;
}
-
return updated === 1 ? '1 categorie is bijgewerkt.' : `${updated} categorieën zijn bijgewerkt.`;
},
importCompanyCardTransactionsSuccessfulDescription: ({transactions}: {transactions: number}) =>
@@ -1385,11 +1382,12 @@ const translations: TranslationDeepObject<typeof en> = {
paidWithExpensify: (payer?: string) => `${payer ? `${payer} ` : ''}betaald met wallet`,
automaticallyPaidWithExpensify: (payer?: string) =>
`${payer ? `${payer} ` : ''}betaald met Expensify via <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">werkruimteregels</a>`,
- reimbursedThisReport: 'heeft dit rapport terugbetaald',
+ reimbursedThisReport: 'heeft dit rapport vergoed',
paidThisBill: 'heeft deze rekening betaald',
reimbursedOnBehalfOf: (actor: string) => `namens ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `van de bankrekening die eindigt op ${debitBankAccount}`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} heeft een bankrekening toegevoegd en het rapport van de wachtlijst gehaald. Terugbetaling is gestart`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) =>
+ `${submitter} heeft een bankrekening toegevoegd, waardoor het rapport niet langer in de wacht staat. Terugbetaling is gestart`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1402,8 +1400,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. Geld is onderweg naar je ${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'rekening'}. Terugbetaling wordt naar verwachting afgerond op ${expectedDate}.`
- : `. Geld is onderweg naar de bankrekening van ${submitterLogin}${creditBankAccount ? ` eindigend op ${creditBankAccount}` : ''}. Terugbetaling wordt naar verwachting afgerond op ${expectedDate}.`,
+ ? `. Geld is onderweg naar je${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'account'}. Terugbetaling wordt naar verwachting voltooid op ${expectedDate}.`
+ : `. Geld is onderweg naar de rekening van ${submitterLogin}${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'account'}. Terugbetaling wordt naar verwachting afgerond op ${expectedDate}.`,
reimbursedWithCheck: 'via cheque.',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1418,11 +1416,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'kaart' : 'bankrekening';
return isCurrentUser
- ? `. Het geld is onderweg naar je ${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'rekening'} (betaald via ${paymentMethod}). Dit kan tot 10 werkdagen duren.`
- : `. Geld is onderweg naar de bankrekening van ${submitterLogin}${creditBankAccount ? ` eindigend op ${creditBankAccount}` : ''} (betaald via ${paymentMethod}). Dit kan tot 10 werkdagen duren.`;
+ ? `. Geld is onderweg naar je ${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'account'} (betaald via ${paymentMethod}). Dit kan tot 10 werkdagen duren.`
+ : `. Geld is onderweg naar de ${creditBankAccount ? `bankrekening eindigend op ${creditBankAccount}` : 'account'} van ${submitterLogin} (betaald via ${paymentMethod}). Dit kan tot 10 werkdagen duren.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `met directe storting (ACH)${creditBankAccount ? ` naar de bankrekening die eindigt op ${creditBankAccount}.` : '. '}${expectedDate ? `De terugbetaling wordt naar verwachting voltooid op ${expectedDate}.` : 'Dit duurt meestal 4-5 werkdagen.'}`,
+ `met directe storting (ACH)${creditBankAccount ? `naar de bankrekening die eindigt op ${creditBankAccount}.` : '. '}${expectedDate ? `De terugbetaling wordt naar schatting afgerond op ${expectedDate}.` : 'Dit duurt meestal 4-5 werkdagen.'}`,
noReimbursableExpenses: 'Dit rapport bevat een ongeldig bedrag',
pendingConversionMessage: 'Totaal wordt bijgewerkt zodra je weer online bent',
changedTheExpense: 'heeft de uitgave gewijzigd',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 5bfd1f37..a58d4e93 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -1096,15 +1096,12 @@ const translations: TranslationDeepObject<typeof en> = {
if (!added && !updated) {
return 'Nie dodano ani nie zaktualizowano żadnych kategorii.';
}
-
if (added && updated) {
return `Dodano ${added} ${added === 1 ? 'kategorię' : 'kategorie'}, zaktualizowano ${updated} ${updated === 1 ? 'kategorię' : 'kategorie'}.`;
}
-
if (added) {
return added === 1 ? 'Dodano 1 kategorię.' : `Dodano ${added} kategorie.`;
}
-
return updated === 1 ? 'Zaktualizowano 1 kategorię.' : `Zaktualizowano ${updated} kategorie.`;
},
importCompanyCardTransactionsSuccessfulDescription: ({transactions}: {transactions: number}) => (transactions > 1 ? `Dodano ${transactions} transakcji.` : 'Dodano 1 transakcję.'),
@@ -1384,11 +1381,11 @@ const translations: TranslationDeepObject<typeof en> = {
paidWithExpensify: (payer?: string) => `${payer ? `${payer} ` : ''}zapłacono z portfela`,
automaticallyPaidWithExpensify: (payer?: string) =>
`${payer ? `${payer} ` : ''}zapłacono przez Expensify za pomocą <a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">reguł przestrzeni roboczej</a>`,
- reimbursedThisReport: 'zwrócił(-a) koszty z tego raportu',
- paidThisBill: 'zapłacił(a) ten rachunek',
+ reimbursedThisReport: 'zwrócił(a) koszty z tego raportu',
+ paidThisBill: 'opłacił ten rachunek',
reimbursedOnBehalfOf: (actor: string) => `w imieniu ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `z konta bankowego kończącego się na ${debitBankAccount}`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} dodał konto bankowe, zdejmując raport z wstrzymania. Zwrot został zainicjowany`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} dodał konto bankowe i zdjął raport z wstrzymania. Zwrot został zainicjowany`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1401,8 +1398,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. Pieniądze są w drodze na twoje ${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'}. Zwrot kosztów powinien zostać zrealizowany do ${expectedDate}.`
- : `. Przelew jest w drodze na konto bankowe ${submitterLogin}${creditBankAccount ? ` kończące się na ${creditBankAccount}` : ''}. Zwrot kosztów powinien zostać zrealizowany do ${expectedDate}.`,
+ ? `. Pieniądze są w drodze na twoje${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'}. Szacowany termin zakończenia zwrotu to ${expectedDate}.`
+ : `. Pieniądze są w drodze do ${submitterLogin}${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'}. Zwrot kosztów powinien zostać zrealizowany do ${expectedDate}.`,
reimbursedWithCheck: 'czekiem.',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1417,11 +1414,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'karta' : 'konto bankowe';
return isCurrentUser
- ? `. Pieniądze są w drodze na twoje ${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'} (zapłacono przez ${paymentMethod}). Może to potrwać do 10 dni roboczych.`
- : `. Pieniądze są w drodze na konto bankowe ${submitterLogin}${creditBankAccount ? ` kończące się na ${creditBankAccount}` : ''} (zapłacono przez ${paymentMethod}). Może to potrwać do 10 dni roboczych.`;
+ ? `. Pieniądze są w drodze na twoje${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'} (opłacone przez ${paymentMethod}). Może to potrwać do 10 dni roboczych.`
+ : `. Pieniądze są w drodze na konto ${submitterLogin}${creditBankAccount ? `konto bankowe kończące się na ${creditBankAccount}` : 'konto'} (zapłacono przez ${paymentMethod}). Może to potrwać do 10 dni roboczych.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `z wpłatą bezpośrednią (ACH)${creditBankAccount ? ` na konto bankowe kończące się na ${creditBankAccount}.` : '. '}${expectedDate ? `Zwrot kosztów powinien zostać zrealizowany do ${expectedDate}.` : 'To zazwyczaj zajmuje 4–5 dni roboczych.'}`,
+ `z bezpośrednim depozytem (ACH)${creditBankAccount ? `na konto bankowe kończące się na ${creditBankAccount}.` : '. '}${expectedDate ? `Zwrot kosztów powinien zostać zakończony do ${expectedDate}.` : 'Zazwyczaj zajmuje to 4–5 dni roboczych.'}`,
noReimbursableExpenses: 'Ten raport ma nieprawidłową kwotę',
pendingConversionMessage: 'Suma zaktualizuje się, gdy wrócisz do trybu online',
changedTheExpense: 'zmienił(a) wydatek',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index 0e7adb05..75230a41 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -1094,15 +1094,12 @@ const translations: TranslationDeepObject<typeof en> = {
if (!added && !updated) {
return 'Nenhuma categoria foi adicionada ou atualizada.';
}
-
if (added && updated) {
return `${added} ${added === 1 ? 'categoria' : 'categorias'} adicionada${added === 1 ? '' : 's'}, ${updated} ${updated === 1 ? 'categoria' : 'categorias'} atualizada${updated === 1 ? '' : 's'}.`;
}
-
if (added) {
return added === 1 ? '1 categoria foi adicionada.' : `${added} categorias foram adicionadas.`;
}
-
return updated === 1 ? '1 categoria foi atualizada.' : `${updated} categorias foram atualizadas.`;
},
importCompanyCardTransactionsSuccessfulDescription: ({transactions}: {transactions: number}) =>
@@ -1387,7 +1384,7 @@ const translations: TranslationDeepObject<typeof en> = {
paidThisBill: 'pagou esta conta',
reimbursedOnBehalfOf: (actor: string) => `em nome de ${actor}`,
reimbursedFromBankAccount: (debitBankAccount: string) => `da conta bancária com final ${debitBankAccount}`,
- reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} adicionou uma conta bancária, retirando o relatório da suspensão. O reembolso foi iniciado`,
+ reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} adicionou uma conta bancária, tirando o relatório da espera. O reembolso foi iniciado`,
reimbursedWithFastACH: ({
isCurrentUser,
submitterLogin,
@@ -1400,9 +1397,9 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. O dinheiro está a caminho da sua ${creditBankAccount ? `conta bancária terminada em ${creditBankAccount}` : 'conta'}. Reembolso previsto para ser concluído em ${expectedDate}.`
- : `. O dinheiro está a caminho da conta bancária de ${submitterLogin}${creditBankAccount ? ` terminada em ${creditBankAccount}` : ''}. Reembolso com conclusão estimada em ${expectedDate}.`,
- reimbursedWithCheck: 'por cheque.',
+ ? `. O dinheiro está a caminho da sua${creditBankAccount ? `conta bancária terminando em ${creditBankAccount}` : 'conta'}. Reembolso com conclusão estimada em ${expectedDate}.`
+ : `. O dinheiro está a caminho da conta de ${submitterLogin}${creditBankAccount ? `conta bancária terminando em ${creditBankAccount}` : 'conta'}. O reembolso deve ser concluído em ${expectedDate}.`,
+ reimbursedWithCheck: 'via cheque.',
reimbursedWithStripeConnect: ({
isCurrentUser,
submitterLogin,
@@ -1416,11 +1413,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? 'cartão' : 'conta bancária';
return isCurrentUser
- ? `. O dinheiro está a caminho da sua ${creditBankAccount ? `conta bancária terminada em ${creditBankAccount}` : 'conta'} (pago via ${paymentMethod}). Isso pode levar até 10 dias úteis.`
- : `. O dinheiro está a caminho da conta bancária de ${submitterLogin}${creditBankAccount ? ` terminada em ${creditBankAccount}` : ''} (pago via ${paymentMethod}). Isso pode levar até 10 dias úteis.`;
+ ? `. O dinheiro está a caminho da sua${creditBankAccount ? `conta bancária terminando em ${creditBankAccount}` : 'conta'} (pago via ${paymentMethod}). Isso pode levar até 10 dias úteis.`
+ : `. O dinheiro está a caminho da${creditBankAccount ? `conta bancária terminando em ${creditBankAccount}` : 'conta'} de ${submitterLogin} (pago via ${paymentMethod}). Isso pode levar até 10 dias úteis.`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `com depósito direto (ACH)${creditBankAccount ? ` para a conta bancária terminada em ${creditBankAccount}.` : '. '}${expectedDate ? `O reembolso está previsto para ser concluído até ${expectedDate}.` : 'Geralmente isso leva de 4 a 5 dias úteis.'}`,
+ `com depósito direto (ACH)${creditBankAccount ? `para a conta bancária terminada em ${creditBankAccount}.` : '. '}${expectedDate ? `O reembolso tem previsão de ser concluído até ${expectedDate}.` : 'Isso geralmente leva de 4 a 5 dias úteis.'}`,
noReimbursableExpenses: 'Este relatório tem um valor inválido',
pendingConversionMessage: 'O total será atualizado quando você voltar a ficar online',
changedTheExpense: 'alterou a despesa',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index a4ed4048..6d75eb08 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -1341,9 +1341,9 @@ const translations: TranslationDeepObject<typeof en> = {
paidWithExpensify: (payer?: string) => `${payer ? `${payer} ` : ''}用钱包支付`,
automaticallyPaidWithExpensify: (payer?: string) => `${payer ? `${payer} ` : ''}已通过<a href="${CONST.CONFIGURE_EXPENSE_REPORT_RULES_HELP_URL}">工作区规则</a>使用 Expensify 支付`,
reimbursedThisReport: '已报销此报表',
- paidThisBill: '已支付此账单',
+ paidThisBill: '支付了此账单',
reimbursedOnBehalfOf: (actor: string) => `代表 ${actor}`,
- reimbursedFromBankAccount: (debitBankAccount: string) => `从尾号为 ${debitBankAccount} 的银行账户`,
+ reimbursedFromBankAccount: (debitBankAccount: string) => `来自尾号为 ${debitBankAccount} 的银行账户`,
reimbursedSubmitterAddedBankAccount: (submitter: string) => `${submitter} 已添加银行账户,报告已解除挂起。已发起报销`,
reimbursedWithFastACH: ({
isCurrentUser,
@@ -1357,8 +1357,8 @@ const translations: TranslationDeepObject<typeof en> = {
expectedDate: string;
}) =>
isCurrentUser
- ? `. 款项正在汇往您的${creditBankAccount ? `尾号为 ${creditBankAccount} 的银行账户` : '账户'}。预计将在 ${expectedDate} 前完成报销。`
- : `。款项正在汇往 ${submitterLogin} 的${creditBankAccount ? `尾号为 ${creditBankAccount} 的银行账户` : '账户'}。预计于 ${expectedDate} 完成报销。`,
+ ? `. 资金正在转入您的 ${creditBankAccount ? `以 ${creditBankAccount} 结尾的银行账户` : '账户'}。预计将在 ${expectedDate} 前完成报销。`
+ : `. 款项正在汇往 ${submitterLogin} 的 ${creditBankAccount ? `以 ${creditBankAccount} 结尾的银行账户` : '账户'}。预计将在 ${expectedDate} 前完成报销。`,
reimbursedWithCheck: '通过支票。',
reimbursedWithStripeConnect: ({
isCurrentUser,
@@ -1373,11 +1373,11 @@ const translations: TranslationDeepObject<typeof en> = {
}) => {
const paymentMethod = isCard ? '卡' : '银行账户';
return isCurrentUser
- ? `. 款项正在汇往您的${creditBankAccount ? `尾号为 ${creditBankAccount} 的银行账户` : '账户'}(通过 ${paymentMethod} 支付)。这可能需要最多 10 个工作日。`
- : `. 资金正在汇往 ${submitterLogin} 的 ${creditBankAccount ? `尾号为 ${creditBankAccount} 的银行账户` : '账户'}(通过 ${paymentMethod} 支付)。这可能需要最多 10 个工作日。`;
+ ? `. 款项正在汇往您的 ${creditBankAccount ? `以 ${creditBankAccount} 结尾的银行账户` : '账户'}(通过 ${paymentMethod} 支付)。这可能需要长达 10 个工作日。`
+ : `. 款项正在汇往 ${submitterLogin} 的 ${creditBankAccount ? `以 ${creditBankAccount} 结尾的银行账户` : '账户'}(通过 ${paymentMethod} 支付)。这可能需要最多 10 个工作日。`;
},
reimbursedWithACH: ({creditBankAccount, expectedDate}: {creditBankAccount?: string; expectedDate?: string}) =>
- `使用直接存款(ACH)${creditBankAccount ? `至尾号为 ${creditBankAccount} 的银行账户。` : '. '}${expectedDate ? `预计将在 ${expectedDate} 前完成报销。` : '这通常需要 4–5 个工作日。'}`,
+ `通过直接存款(ACH)${creditBankAccount ? `至尾号为 ${creditBankAccount} 的银行账户。` : '. '}${expectedDate ? `预计在 ${expectedDate} 前完成报销。` : '这通常需要 4–5 个工作日。'}`,
noReimbursableExpenses: '此报表的金额无效',
pendingConversionMessage: '当你重新联网时,总金额会更新',
changedTheExpense: '更改了报销单',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
Reviewing... |
|
@deetergp It seems like the Auth PR hasn’t been merged or deployed yet—correct? The translation bug is still there. web_chrome_2.mp4 |
|
@Krishna2323 No, the backend PR is still in review. I'll let you know when it's on staging. |
Do this whenever paymentMethod is absent
|
@Krishna2323 Okay this is updated and ready for another look. It's been updated to not require the backend change. I ran through testing steps again and confirmed that it works and translates accordingly. 2026-04-07_15-39-03.mp4 |
|
@deetergp the report actions view works well but the message is still not translated in LHN: Monosnap.screencast.2026-04-09.03-34-43.mp4 |
|
Nice catch @Krishna2323! Updated. |
|
@deetergp the latest commit looks good and works correctly. One potential issue flagged by AI review: |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid_hybrid_1.mp4android_hybrid_2.mp4Android: mWeb Chromeandroid_chrome_1.mp4android_chrome_2.mp4iOS: HybridAppios_hybrid_1.mp4ios_hybrid_2.mp4iOS: mWeb Safariios_safari_1.mp4ios_safari_2.mp4MacOS: Chrome / Safariweb_chrome.mp4web_chrome_2.mp4 |
|
@deetergp Please check this comment and fix the failing tests. Otherwise, it looks good to me. |
|
@Krishna2323 updated to add spaces. I didn't do anything about the tests, they just passed this run. 🤷♂️ |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c1f88f3d79
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| } else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED)) { | ||
| lastMessageTextFromReport = getMarkedReimbursedMessage(translate, lastReportAction); | ||
| } else if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.REIMBURSED)) { | ||
| lastMessageTextFromReport = getReimbursedMessage(translate, lastReportAction, report, currentUserAccountID ?? CONST.DEFAULT_NUMBER_ID); |
There was a problem hiding this comment.
Require current user ID for reimbursed message rendering
getReimbursedMessage() uses currentUserAccountID to decide between “your account” and <login>'s account, but this new branch defaults to CONST.DEFAULT_NUMBER_ID when callers omit the ID. In OptionsListUtils, getLastMessageTextForReport() is still called from createOption()/getAlternateText() without currentUserAccountID, so REIMBURSED previews in those paths will systematically render third-person text for the current user (and can show awkward owner-based phrasing). This is a user-visible regression introduced by the new REIMBURSED handling; please thread the real account ID through these call sites (or avoid the 0 fallback here).
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
@deetergp 👀 please. I think this is a valid regression.
Explanation of Change
When admins pay an expense report in OldDot, a
REIMBURSEDaction is created in the report's history. Previously this action was hidden in NewDot because it was in thedeprecatedOldDotReportActionslist. When paying in NewDot, an IOUPAYaction is already shown, so those should remain hidden.This PR conditionally shows the
REIMBURSEDaction based on theisNewDotflag the backend sets:REIMBURSEDwithoutisNewDot→ Shown in NewDot with a localized messageREIMBURSEDwithisNewDot=true→ Hidden (IOU PAY action is shown instead)Key changes:
REIMBURSEDfromdeprecatedOldDotReportActions; added visibility check to hide it whenisNewDot=truegetReimbursedMessage()inReportActionsUtils.tsto produce a fully localized message for all payment types (Fast ACH, ACH, Check, StripeConnect) including the submitter-adding-bank-account casemethod; theopenReportpath maps it topaymentMethod, but real-time Pusher events only carrymethod.getReimbursedMessagereadspaymentMethod ?? methodso both paths render correctlyOriginalMessageReimbursed/OriginalMessageMarkedReimbursedtypesREIMBURSEDinContextMenuActionsFixed Issues
$ #79698 (comment)
PROPOSAL: N/A
Tests
paid with bank account XXXXOffline tests
N/A
QA Steps
REIMBURSEDaction visible)PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
iOS: Native
MacOS: Chrome / Safari