Expand feed removal confirmation copy to mention deleted unsubmitted transactions - #98307
Conversation
…transactions Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
🦜 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 74c0c7069f5..32ad4432a95 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -6248,7 +6248,8 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
cardFeedAllowDeletingTransaction: 'Löschen von Transaktionen erlauben',
removeCardFeed: 'Kartenfeed entfernen',
removeCardFeedTitle: (feedName: string) => `${feedName}-Feed entfernen`,
- removeCardFeedDescription: 'Möchtest du diesen Kartenfeed wirklich entfernen? Dadurch werden alle Karten zugewiesen.',
+ removeCardFeedDescription:
+ 'Sind Sie sicher, dass Sie diesen Kartenfeed entfernen möchten? Dadurch werden alle Karten zugewiesen und nicht eingereichte Transaktionen gelöscht.',
error: {
feedNameRequired: 'Name des Kartenfeeds ist erforderlich',
statementCloseDateRequired: 'Bitte wählen Sie ein Abrechnungsenddatum aus.',
diff --git a/src/languages/el.ts b/src/languages/el.ts
index 5acfee2009d..e8714a449ea 100644
--- a/src/languages/el.ts
+++ b/src/languages/el.ts
@@ -6381,7 +6381,8 @@ _Για πιο αναλυτικές οδηγίες, [επισκεφθείτε τ
cardFeedAllowDeletingTransaction: 'Να επιτρέπεται η διαγραφή συναλλαγών',
removeCardFeed: 'Αφαίρεση ροής κάρτας',
removeCardFeedTitle: (feedName: string) => `Κατάργηση ροής ${feedName}`,
- removeCardFeedDescription: 'Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτήν την τροφοδοσία καρτών; Αυτό θα αποδεσμεύσει όλες τις κάρτες.',
+ removeCardFeedDescription:
+ 'Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτήν τη ροή καρτών; Αυτό θα αποδεσμεύσει όλες τις κάρτες και θα διαγράψει τις μη υποβληθείσες συναλλαγές.',
error: {
feedNameRequired: 'Απαιτείται όνομα ροής κάρτας',
statementCloseDateRequired: 'Επιλέξτε μια ημερομηνία κλεισίματος της κατάστασης.',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index c740bfb4ddc..35715e47dd7 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -6127,7 +6127,7 @@ ${amount} para ${merchant} - ${date}`,
cardFeedAllowDeletingTransaction: 'Permitir eliminación de transacciones',
removeCardFeed: 'Quitar la alimentación de tarjetas',
removeCardFeedTitle: (feedName) => `Eliminar el feed de ${feedName}`,
- removeCardFeedDescription: '¿Estás seguro de que deseas eliminar esta fuente de tarjetas? Esto anulará la asignación de todas las tarjetas y eliminará las transacciones no enviadas.',
+ removeCardFeedDescription: '¿Seguro que quieres eliminar este suministro de tarjetas? Esto desasignará todas las tarjetas y eliminará las transacciones no enviadas.',
error: {
feedNameRequired: 'Se requiere el nombre de la fuente de la tarjeta',
statementCloseDateRequired: 'Por favor, selecciona una fecha de cierre del estado de cuenta.',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 1b3923a1289..5146950a85e 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -6271,7 +6271,7 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
cardFeedAllowDeletingTransaction: 'Autoriser la suppression des transactions',
removeCardFeed: 'Supprimer le flux de cartes',
removeCardFeedTitle: (feedName: string) => `Supprimer le flux ${feedName}`,
- removeCardFeedDescription: "Voulez-vous vraiment supprimer ce flux de cartes ? Cela retirera l'assignation de toutes les cartes.",
+ removeCardFeedDescription: 'Voulez-vous vraiment supprimer ce flux de cartes ? Cela retirera l’assignation de toutes les cartes et supprimera les transactions non soumises.',
error: {
feedNameRequired: 'Le nom du flux de carte est obligatoire',
statementCloseDateRequired: 'Veuillez sélectionner une date de clôture de relevé.',
diff --git a/src/languages/it.ts b/src/languages/it.ts
index ff0a26d51c9..d2314275e8d 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -6223,7 +6223,8 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
cardFeedAllowDeletingTransaction: 'Consenti l’eliminazione delle transazioni',
removeCardFeed: 'Rimuovi flusso carta',
removeCardFeedTitle: (feedName: string) => `Rimuovi feed ${feedName}`,
- removeCardFeedDescription: 'Sei sicuro di voler rimuovere questo flusso di carte? Questo rimuoverà l’assegnazione di tutte le carte.',
+ removeCardFeedDescription:
+ 'Sei sicuro di voler rimuovere questo collegamento della carta? Questo rimuoverà l’assegnazione di tutte le carte ed eliminerà le transazioni non inviate.',
error: {
feedNameRequired: 'Il nome del feed della carta è obbligatorio',
statementCloseDateRequired: 'Seleziona una data di chiusura dell’estratto conto.',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index e8f52def158..a4ed30e120a 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -6143,7 +6143,7 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
cardFeedAllowDeletingTransaction: '取引の削除を許可',
removeCardFeed: 'カードフィードを削除',
removeCardFeedTitle: (feedName: string) => `${feedName}フィードを削除`,
- removeCardFeedDescription: 'このカードフィードを削除してもよろしいですか?すべてのカードの割り当てが解除されます。',
+ removeCardFeedDescription: 'このカードフィードを削除してもよろしいですか?すべてのカードの割り当てが解除され、未提出の取引が削除されます。',
error: {
feedNameRequired: 'カードフィード名は必須です',
statementCloseDateRequired: '明細書の締め日を選択してください。',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 9bdb2bd6bf5..b1f10f5d2a4 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -6211,7 +6211,7 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_
cardFeedAllowDeletingTransaction: 'Verwijderen van transacties toestaan',
removeCardFeed: 'Kaartfeed verwijderen',
removeCardFeedTitle: (feedName: string) => `Feed ${feedName} verwijderen`,
- removeCardFeedDescription: 'Weet je zeker dat je deze kaartfeed wilt verwijderen? Hierdoor worden alle kaarten losgekoppeld.',
+ removeCardFeedDescription: 'Weet je zeker dat je deze kaartfeed wilt verwijderen? Hiermee worden alle kaarten losgekoppeld en worden niet-ingediende transacties verwijderd.',
error: {
feedNameRequired: 'Naam van kaartfeed is vereist',
statementCloseDateRequired: 'Selecteer een afsluitdatum voor het afschrift.',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 5c0f5025d1c..d3a1250aa8d 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -6189,7 +6189,7 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
cardFeedAllowDeletingTransaction: 'Zezwól na usuwanie transakcji',
removeCardFeed: 'Usuń źródło karty',
removeCardFeedTitle: (feedName: string) => `Usuń strumień ${feedName}`,
- removeCardFeedDescription: 'Na pewno chcesz usunąć ten kanał kart? Spowoduje to odłączenie wszystkich kart.',
+ removeCardFeedDescription: 'Na pewno chcesz usunąć ten kanał kart? Spowoduje to odpięcie wszystkich kart i usunięcie niewysłanych transakcji.',
error: {
feedNameRequired: 'Nazwa źródła karty jest wymagana',
statementCloseDateRequired: 'Wybierz datę zamknięcia wyciągu.',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index a6f37501505..fcdccd19496 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -6211,7 +6211,7 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
cardFeedAllowDeletingTransaction: 'Permitir excluir transações',
removeCardFeed: 'Remover feed do cartão',
removeCardFeedTitle: (feedName: string) => `Remover feed ${feedName}`,
- removeCardFeedDescription: 'Tem certeza de que deseja remover este feed de cartão? Isso removerá a atribuição de todos os cartões.',
+ removeCardFeedDescription: 'Tem certeza de que quer remover este feed de cartão? Isso vai desatribuir todos os cartões e excluir as transações não enviadas.',
error: {
feedNameRequired: 'O nome do feed do cartão é obrigatório',
statementCloseDateRequired: 'Selecione uma data de fechamento do extrato.',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index d8933b998f4..51ed1a2ef5b 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -5999,7 +5999,7 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
cardFeedAllowDeletingTransaction: '允许删除交易',
removeCardFeed: '移除卡片流水',
removeCardFeedTitle: (feedName: string) => `移除 ${feedName} 数据源`,
- removeCardFeedDescription: '确定要移除此卡片数据源吗?这将取消分配所有卡片。',
+ removeCardFeedDescription: '确定要移除此卡片流水吗?这将取消分配所有卡片并删除所有未提交的交易。',
error: {
feedNameRequired: '必须填写卡片流水名称',
statementCloseDateRequired: '请选择账单结算日期。',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
@MelvinBot can you apply diff in #98307 (comment) |
Details
@MelvinBot please set the PR Author checklist to the content in the details section above |
Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
|
Fixed the failing Oxfmt check and pushed to this branch. Root cause: Adding "y eliminará las transacciones no enviadas." pushed the Fix: Applied the wrap Oxfmt wanted (string content unchanged): removeCardFeedDescription:
'¿Estás seguro de que deseas eliminar esta fuente de tarjetas? Esto anulará la asignación de todas las tarjetas y eliminará las transacciones no enviadas.',Other checks:
|
Applies the translation updates from the Polyglot Parrot workflow so all locales mention that removing a card feed also deletes unsubmitted transactions. Co-authored-by: hoangzinh <9639873+hoangzinh@users.noreply.github.com> Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
…to claude-expandFeedRemovalCopy Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com> # Conflicts: # src/languages/es.ts
|
🤖 Applied the Polyglot Parrot translation diff from this comment and pushed to Updated Details
|
|
The code failure is already fixed — the Oxfmt check now passes on the latest commit (the The only remaining failure is I'll leave the re-running checks to complete on their own. |
|
The code-level failure is already resolved — my earlier fix made the Oxfmt check pass, and all remaining checks are just pending in the fresh CI run triggered by that push. The only currently-failing check is PR Author Checklist / checklist, and that's not something I can fix with code. It fails on the |
|
The only remaining non-ignored failure — What it is: The HybridApp remote iOS build failed during That's a transient CocoaPods/CDN download failure. This PR only touches Fix: Just re-run the failed job (I don't have permission to trigger a re-run here) — it should pass on retry. Other checks:
|
|
🤖 Done — updated the PR Author Checklist in the PR description to the checked content you provided. All items in that section are now ticked. Note: the "Verify that no errors appear in the JS console" boxes in the Tests and QA Steps sections are separate from the PR Author Checklist and were left as-is, since your request was scoped to the author checklist. Let me know if you'd like those checked too. |
|
@MelvinBot makes this PR is ready for review |
|
@hoangzinh 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] |
|
🤖 Marked this PR as ready for review. All code-quality checks pass (ESLint, Oxfmt, typecheck, unit tests, Storybook, The two red checks are not related to this copy-only change:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7c9ea1ab09
ℹ️ 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".
| removeCardFeedTitle: (feedName: string) => `${feedName}-Feed entfernen`, | ||
| removeCardFeedDescription: 'Möchtest du diesen Kartenfeed wirklich entfernen? Dadurch werden alle Karten zugewiesen.', | ||
| removeCardFeedDescription: | ||
| 'Sind Sie sicher, dass Sie diesen Kartenfeed entfernen möchten? Dadurch werden alle Karten zugewiesen und nicht eingereichte Transaktionen gelöscht.', |
There was a problem hiding this comment.
Say unassign, not assign, in German warning
For German users, this confirmation still says alle Karten zugewiesen, which means the removal will assign all cards, while the English source and the delete flow unassign/remove the cards from the feed. In the card-feed removal modal this reverses the destructive consequence the user is being asked to confirm; use the existing wording pattern from the nearby unassign strings, e.g. that the card assignments will be removed.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Good catch — the feedback is valid. The German string said Dadurch werden alle Karten zugewiesen ("all cards will be assigned"), which reverses the destructive consequence. The English source and every other locale say the cards are unassigned.
Fixed in f29a6ac using the German file's existing Zuweisung … aufheben pattern:
Sind Sie sicher, dass Sie diesen Kartenfeed entfernen möchten? Dadurch wird die Zuweisung aller Karten aufgehoben und alle nicht eingereichten Transaktionen werden gelöscht.
I checked the other 9 locales I applied and they all correctly express "unassign" (es desasignará, fr retirera l’assignation, it rimuoverà l’assegnazione, ja 割り当てが解除, nl losgekoppeld, pl odpięcie, pt-BR desatribuir, zh-hans 取消分配, el αποδεσμεύσει), so this reversal was German-only.
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppScreen.Recording.2026-08-11.at.22.08.27.movAndroid: mWeb ChromeScreen.Recording.2026-08-11.at.21.40.52.moviOS: HybridAppiOS: mWeb SafariMacOS: Chrome / SafariScreen.Recording.2026-08-11.at.21.34.37.mov |
|
The Oxfmt check I fixed earlier is now green. The only remaining failure — What's failing: The HybridApp iOS remote build can't download a prebuilt CocoaPods artifact: A Recommended action: Re-run the The other non-green items ( |
|
The Oxfmt check I fixed earlier is now passing. No code fix is needed for the remaining failures — none of them are related to this PR's copy change:
So there's nothing further for me to push — the only real failing check has been resolved. |
The German string said "werden alle Karten zugewiesen" (all cards will be assigned), reversing the destructive consequence. The English source and all other locales say the cards will be unassigned. Use the German file's existing "Zuweisung ... aufheben" pattern. Co-authored-by: hoangzinh <9639873+hoangzinh@users.noreply.github.com> Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
|
MelvinBot has made 5 consecutive commits trying to fix CI failures. Automatic CI fix dispatches are now paused for this PR. Next steps: A human should review the recent commits and resolve the conflicting CI errors manually. |
|
CI is stuck. @MelvinBot can you try to merge latest main to trigger CI again? |
…valCopy Co-authored-by: Vinh Hoang <hoangzinh@users.noreply.github.com>
|
🤖 Merged latest Details
|
mollfpr
left a comment
There was a problem hiding this comment.
LGTM! Only updating the translation file.
@trjExpensify @JmillsExpensify could you confirm if the new copy is what we desire? Thanks!
|
Yes. |
trjExpensify
left a comment
There was a problem hiding this comment.
Change request to make it clearer that unsubmitted transactions will be deleted. 👍
|
🚧 mollfpr has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
Explanation of Change
Removing a company card feed both unassigns all cards and deletes unsubmitted (unreported/draft) transactions, but the removal confirmation copy only warned about the first consequence. This left admins able to confirm a destructive action without understanding its full impact.
This is a copy-only change that appends the missing consequence to the
removeCardFeedDescriptionstring in both language files, matching the phrasing already used by the siblingunassignCardDescriptionstring.src/languages/en.ts): "Are you sure you want to remove this card feed? This will unassign all cards and delete unsubmitted transactions."src/languages/es.ts): "¿Estás seguro de que deseas eliminar esta fuente de tarjetas? Esto anulará la asignación de todas las tarjetas y eliminará las transacciones no enviadas."The modal title (
removeCardFeedTitle) is unchanged. No component or logic changes are required.Fixed Issues
$ #97842
PROPOSAL: #97842 (comment)
Tests
// TODO: The human co-author must fill out the manual test steps before marking this PR as "ready for review".
Suggested steps (to be confirmed by the co-author):
Offline tests
QA Steps
// TODO: These must be filled out, or the issue title must include "[No QA]."
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand 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
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari