From f00ebabb706a34750a493303fa4de783f22ca69b Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Wed, 22 Jul 2026 10:34:17 -0600 Subject: [PATCH 01/10] Render DELEGATESUBMIT report action as muted system message The vacation-delegate reroute action had no branch in ActionContentRouter, so it fell through to the default chat renderer and showed raw bold text instead of matching other structural system messages. --- src/languages/en.ts | 12 +++++++ src/libs/ReportActionsUtils.ts | 35 +++++++++++++++++++ .../actionContents/ActionContentRouter.tsx | 10 ++++++ src/types/onyx/OriginalMessage.ts | 18 ++++++++++ 4 files changed, 75 insertions(+) diff --git a/src/languages/en.ts b/src/languages/en.ts index 9cf300935280..6b68e96ae864 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1796,6 +1796,18 @@ const translations = { `Choose an option to change the approver for this report. (Update your workspace settings to change this permanently for all reports.)`, changedApproverMessage: (managerID: number) => `changed the approver to `, reassignedApproverMessage: (managerID: number) => `reassigned the approver to via a workflow update`, + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `This report was sent to @${originalManager} instead of you (their Vacation Delegate) because you are not a member of this report's policy`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `This report was sent to @${originalManager} instead of your Vacation Delegate @${delegate} because they are not a member of this report's policy`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `This report was sent to @${originalManager} instead of their Vacation Delegate @${delegate} because they are not a member of this report's policy`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `This report was sent to @${originalManager} for approval since @${delegate} can't approve your own reports`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `This report was sent to @${originalManager} for approval since your Vacation Delegate, @${delegate} can't approve their own reports`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `This report was sent to @${originalManager} for approval since their Vacation Delegate, @${delegate} can't approve their own reports`, actions: { addApprover: 'Add approver', addApproverSubtitle: 'Add an additional approver to the existing workflow.', diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index ec2a3aa3dd39..543a85a49dee 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -4449,6 +4449,40 @@ function getChangedApproverActionMessage(translate: LocalizedTranslate, reportAc return translate('iou.changeApprover.changedApproverMessage', actorAccountID); } +function getDelegateSubmitMessage( + translate: LocalizedTranslate, + reportAction: OnyxEntry>, + currentUserEmail: string | undefined, +): string { + const originalMessage = getOriginalMessage(reportAction); + const {originalManager, delegate, isOnPolicy = true} = originalMessage ?? {}; + + if (!originalManager || !delegate) { + return ''; + } + + const isWingman = currentUserEmail === delegate; + const isOriginalManager = currentUserEmail === originalManager; + + if (!isOnPolicy) { + if (isWingman) { + return translate('iou.changeApprover.delegateSubmitNotOnPolicyForWingman', originalManager); + } + if (isOriginalManager) { + return translate('iou.changeApprover.delegateSubmitNotOnPolicyAsOriginalManager', originalManager, delegate); + } + return translate('iou.changeApprover.delegateSubmitNotOnPolicy', originalManager, delegate); + } + + if (isWingman) { + return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManager, delegate); + } + if (isOriginalManager) { + return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', originalManager, delegate); + } + return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReport', originalManager, delegate); +} + function getHarvestCreatedExpenseReportMessage(reportID: string | undefined, reportName: string, translate: LocalizedTranslate) { const reportUrl = getReportURLForCurrentContext(reportID); const resolvedName = reportName || (reportID ? `#${reportID}` : ''); @@ -5005,6 +5039,7 @@ export { getVacationer, getSubmittedTo, getChangedApproverActionMessage, + getDelegateSubmitMessage, getUpdatedOwnershipMessage, getUpdatedDefaultTitleMessage, getUpdatedAutoHarvestingMessage, diff --git a/src/pages/inbox/report/actionContents/ActionContentRouter.tsx b/src/pages/inbox/report/actionContents/ActionContentRouter.tsx index b1ee345f63d6..8a64531f9c5e 100644 --- a/src/pages/inbox/report/actionContents/ActionContentRouter.tsx +++ b/src/pages/inbox/report/actionContents/ActionContentRouter.tsx @@ -10,6 +10,7 @@ import TaskPreview from '@components/ReportActionItem/TaskPreview'; import TripRoomPreview from '@components/ReportActionItem/TripRoomPreview'; import UnreportedTransactionAction from '@components/ReportActionItem/UnreportedTransactionAction'; +import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -17,6 +18,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import { getChangedApproverActionMessage, getCompanyCardConnectionBrokenMessage, + getDelegateSubmitMessage, getForwardedReportActionMessage, getIOUReportIDFromReportActionPreview, getOriginalMessage, @@ -157,6 +159,7 @@ function ActionContentRouter({ }: ActionContentRouterProps): React.JSX.Element | null { const {translate, formatTravelDate} = useLocalize(); const styles = useThemeStyles(); + const {email: currentUserEmail} = useCurrentUserPersonalDetails(); const [originalReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${originalReportID}`, {selector: getStableReportSelector}); @@ -494,6 +497,13 @@ function ActionContentRouter({ ); } + if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { + return ( + + ${getDelegateSubmitMessage(translate, action, currentUserEmail)}`} /> + + ); + } if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.SETTLEMENT_ACCOUNT_LOCKED)) { return ( diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index f585b2d54719..580f0550fad8 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -1598,6 +1598,23 @@ type OriginalMessageReassignApprover = { newApproverID: number; }; +/** + * Model of Delegate Submit action original message (posted when a report is auto-forwarded to a vacation delegate) + */ +type OriginalMessageDelegateSubmit = { + /** Email of the manager the report would normally have been sent to */ + originalManager: string; + + /** Email of the vacation delegate the report was sent to (or would have been sent to) */ + delegate: string; + + /** Whether the delegate is a member of the report's policy. Defaults to true when absent. */ + isOnPolicy?: boolean; + + /** Whether this action was triggered automatically */ + automaticAction?: boolean; +}; + /** * Minimal transaction data needed to render the MFA authorize transaction preview. */ @@ -1763,6 +1780,7 @@ type OriginalMessageMap = { [CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED]: OriginalMessageSmartScanFailed; [CONST.REPORT.ACTIONS.TYPE.REASSIGN_APPROVER]: OriginalMessageReassignApprover; [CONST.REPORT.ACTIONS.TYPE.REROUTE]: OriginalMessageTakeControl; + [CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT]: OriginalMessageDelegateSubmit; [CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DIRECTOR_INFORMATION_REQUIRED]: OriginalMessageReimbursementDirectorInformationRequired; [CONST.REPORT.ACTIONS.TYPE.SETTLEMENT_ACCOUNT_LOCKED]: OriginalMessageSettlementAccountLocked; } & OldDotOriginalMessageMap & From 0236f633bbdcbf45ac2c1336c10152cdb01870cb Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Wed, 22 Jul 2026 10:38:51 -0600 Subject: [PATCH 02/10] add copy --- src/languages/de.ts | 12 ++++++++++++ src/languages/es.ts | 12 ++++++++++++ src/languages/fr.ts | 12 ++++++++++++ src/languages/it.ts | 12 ++++++++++++ src/languages/ja.ts | 12 ++++++++++++ src/languages/nl.ts | 12 ++++++++++++ src/languages/pl.ts | 12 ++++++++++++ src/languages/pt-BR.ts | 12 ++++++++++++ src/languages/zh-hans.ts | 12 ++++++++++++ 9 files changed, 108 insertions(+) diff --git a/src/languages/de.ts b/src/languages/de.ts index 29e5ebce9847..d7ca2123b032 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1736,6 +1736,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wähle eine zusätzliche genehmigende Person für diese Berichte aus, bevor wir sie durch den restlichen Genehmigungs-Workflow leiten.', }, bulkSubtitle: 'Wählen Sie eine Option, um den Genehmiger für diese Berichte zu ändern.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Dieser Bericht wurde an @${originalManager} statt an Sie (deren Urlaubsvertretung) gesendet, weil Sie kein Mitglied der Richtlinie dieses Berichts sind`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Dieser Bericht wurde an @${originalManager} statt an Ihre Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Berichte nicht genehmigen kann`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da Ihre Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da deren Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, }, chooseWorkspace: 'Wähle einen Arbeitsbereich', routedDueToDEW: (to: string, reason?: string) => `Bericht weitergeleitet an ${to}${reason ? ` weil ${reason}` : ''}`, diff --git a/src/languages/es.ts b/src/languages/es.ts index 7896f53580e2..be91b874f5c4 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1698,6 +1698,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Elige un aprobador adicional para estos informes antes de que los enviemos por el resto del flujo de aprobación.', }, bulkSubtitle: 'Elige una opción para cambiar el aprobador de estos informes.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Este informe se envió a @${originalManager} en lugar de a ti (su delegado de vacaciones) porque no eres miembro de la política de este informe`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Este informe se envió a @${originalManager} en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Este informe se envió a @${originalManager} para su aprobación, ya que @${delegate} no puede aprobar sus propios informes`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Este informe se envió a @${originalManager} para su aprobación, ya que tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, }, chooseWorkspace: 'Elige un espacio de trabajo', routedDueToDEW: (to: string, reason?: string) => `informe enviado a ${to}${reason ? ` porque ${reason}` : ''}`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 7fc90ef418a0..b39ed970c367 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1742,6 +1742,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Choisissez un approbateur supplémentaire pour ces rapports avant que nous ne les transmettions pour le reste du flux de validation.', }, bulkSubtitle: 'Choisissez une option pour changer l’approbateur de ces rapports.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (leur remplaçant en vacances), car vous n’êtes pas membre de la politique de cette note de frais`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Cette note de frais a été envoyée à @${originalManager} au lieu de votre remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant de vacances @${delegate}, car il n’est pas membre de la politique de cette note de frais`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Cette note de frais a été envoyée à @${originalManager} pour approbation, car @${delegate} ne peut pas approuver ses propres notes de frais`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Cette note de frais a été envoyée à @${originalManager} pour approbation, car votre remplaçant de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, }, chooseWorkspace: 'Choisir un espace de travail', routedDueToDEW: (to: string, reason?: string) => `note de frais acheminée vers ${to}${reason ? ` parce que ${reason}` : ''}`, diff --git a/src/languages/it.ts b/src/languages/it.ts index daec765c2da7..f4f9ab3d1d72 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1734,6 +1734,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Scegli un approvatore aggiuntivo per questi report prima che li instradiamo attraverso il resto del flusso di approvazione.', }, bulkSubtitle: "Scegli un'opzione per cambiare l'approvatore di questi report.", + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Questo resoconto è stato inviato a @${originalManager} invece che a te (il loro delegato per le ferie) perché non fai parte della policy di questo resoconto`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Questo resoconto è stato inviato a @${originalManager} invece che al tuo delegato per le ferie @${delegate} perché non è membro della polizza di questo resoconto`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Questo report è stato inviato a @${originalManager} invece che al suo sostituto per le ferie @${delegate} perché non è un membro della policy di questo report`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che @${delegate} non può approvare i propri resoconti`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Questo report è stato inviato a @${originalManager} per l'approvazione perché il tuo delegato per le ferie, @${delegate}, non può approvare i propri report`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Questo rendiconto è stato inviato a @${originalManager} per l'approvazione, dato che il loro sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, }, chooseWorkspace: 'Scegli uno spazio di lavoro', routedDueToDEW: (to: string, reason?: string) => `report indirizzato a ${to}${reason ? ` perché ${reason}` : ''}`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 5304101655c9..8c0723336207 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1715,6 +1715,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: '残りの承認ワークフローに回す前に、これらのレポートの追加承認者を選択してください。', }, bulkSubtitle: 'これらのレポートの承認者を変更する方法を選択してください。', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `このレポートは、あなた(休暇代理人)ではなく、あなたがこのレポートのポリシーのメンバーではないため、代わりに @${originalManager} に送信されました`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `このレポートは、@${delegate} さんがご自身のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `このレポートは、休暇中の代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, }, chooseWorkspace: 'ワークスペースを選択', routedDueToDEW: (to: string, reason?: string) => `レポートは ${to}${reason ? ` ${reason} のため` : ''} に回覧されました`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index f21d9aa87475..cb4aee27e10a 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1731,6 +1731,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Kies een extra fiatteur voor deze rapporten voordat we ze door de rest van de goedkeuringsworkflow sturen.', }, bulkSubtitle: 'Kies een optie om de fiatteur voor deze rapporten te wijzigen.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun Vakantievertegenwoordiger), omdat je geen lid bent van het beleid van dit rapport`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar je vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangend manager voor vakantie, @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Dit rapport is naar @${originalManager} gestuurd voor goedkeuring, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat je vervanger voor vakantie, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat hun vervanger voor vakantie, @${delegate}, hun eigen rapporten niet kan goedkeuren`, }, chooseWorkspace: 'Kies een werkruimte', routedDueToDEW: (to: string, reason?: string) => `rapport doorgestuurd naar ${to}${reason ? ` omdat ${reason}` : ''}`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 1e930748908b..5505cab8cdfb 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1726,6 +1726,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wybierz dodatkowego akceptującego dla tych raportów, zanim przekażemy je dalej w pozostałej części procesu zatwierdzania.', }, bulkSubtitle: 'Wybierz opcję, aby zmienić akceptującego dla tych raportów.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Ten raport został wysłany do @${originalManager} zamiast do ciebie (twojego Zastępcy Wakacyjnego), ponieważ nie jesteś członkiem polityki tego raportu`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Ten raport został wysłany do @${originalManager}, a nie do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest członkiem polityki tego raportu`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Ten raport został wysłany do @${originalManager}, a nie do jego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ @${delegate} nie może zatwierdzać własnych raportów`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, }, chooseWorkspace: 'Wybierz przestrzeń roboczą', routedDueToDEW: (to: string, reason?: string) => `raport przekazany do ${to}${reason ? ` bo ${reason}` : ''}`, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 0cbfd597a39f..52299005c23a 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1729,6 +1729,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Escolha um aprovador adicional para estes relatórios antes de seguirmos pelo restante do fluxo de aprovação.', }, bulkSubtitle: 'Escolha uma opção para alterar o aprovador destes relatórios.', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias deles) porque você não é membro da política deste relatório`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Este relatório foi enviado para @${originalManager} em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Este relatório foi enviado para @${originalManager} para aprovação, já que @${delegate} não pode aprovar os próprios relatórios`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Esse relatório foi enviado para @${originalManager} para aprovação, já que seu substituto de férias, @${delegate}, não pode aprovar os próprios relatórios`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Este relatório foi enviado para @${originalManager} para aprovação, já que o Substituto de Férias deles, @${delegate}, não pode aprovar os próprios relatórios`, }, chooseWorkspace: 'Escolha um workspace', routedDueToDEW: (to: string, reason?: string) => `relatório encaminhado para ${to}${reason ? ` porque ${reason}` : ''}`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index d5d9c1e99ef2..6211861df008 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1674,6 +1674,18 @@ const translations: TranslationDeepObject = { bulkSubtitle: '在我们将这些报表提交给其余审批流程之前,请为其选择一位额外审批人。', }, bulkSubtitle: '选择一个选项来更改这些报表的审批人。', + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `由于你不是此报表所属政策的成员,该报表已发送给 @${originalManager},而不是发送给你(其休假代理)`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `此报表被发送给了 @${originalManager},而不是你的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `此报表已发送给 @${originalManager},而不是他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `由于 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `由于您的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `由于审批人的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 审批`, }, chooseWorkspace: '选择工作区', routedDueToDEW: (to: string, reason?: string) => `报销单已转交给 ${to}${reason ? ` 因为 ${reason}` : ''}`, From f48e96e82b8a9c0293b624d2b747d06e755648d3 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Fri, 7 Aug 2026 13:10:44 -0600 Subject: [PATCH 03/10] add greek translation --- src/languages/el.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/languages/el.ts b/src/languages/el.ts index 2d802c9c8406..3867cbbaa053 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -1757,6 +1757,18 @@ const translations: TranslationDeepObject = { `Επιλέξτε μια επιλογή για να αλλάξετε τον εγκριτή για αυτήν την αναφορά. (Ενημερώστε τις ρυθμίσεις χώρου εργασίας σας για να το αλλάξετε μόνιμα για όλες τις αναφορές.)`, changedApproverMessage: (managerID: number) => `άλλαξε τον εγκρίνοντα σε `, reassignedApproverMessage: (managerID: number) => `ανέθεσε εκ νέου τον εγκρίνοντα στον/στην μέσω ενημέρωσης ροής εργασίας`, + delegateSubmitNotOnPolicyForWingman: (originalManager: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον Αντιπρόσωπο Άδειας του) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας του/της @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας του/της, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, actions: { addApprover: 'Προσθήκη εγκρίνων', addApproverSubtitle: 'Προσθέστε έναν επιπλέον εγκρίνοντα στην υπάρχουσα ροή έγκρισης.', From 854d2bf635468af3277b199bcebc49abd9a5671a Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 10 Aug 2026 11:26:57 -0600 Subject: [PATCH 04/10] Address PR review comments on delegate submit system message - Log.warn when originalManager/delegate is missing from ACTION_DELEGATE_SUBMIT - Add unit tests for getDelegateSubmitMessage - Use "you"/"me" instead of self-mention pill when the viewer is the original manager - Remove unused automaticAction field from OriginalMessageDelegateSubmit --- src/languages/de.ts | 8 +-- src/languages/el.ts | 8 +-- src/languages/en.ts | 8 +-- src/languages/es.ts | 8 +-- src/languages/fr.ts | 8 +-- src/languages/it.ts | 8 +-- src/languages/ja.ts | 8 +-- src/languages/nl.ts | 8 +-- src/languages/pl.ts | 8 +-- src/languages/pt-BR.ts | 8 +-- src/languages/zh-hans.ts | 8 +-- src/libs/ReportActionsUtils.ts | 1 + src/types/onyx/OriginalMessage.ts | 3 -- tests/unit/ReportActionsUtilsTest.ts | 79 ++++++++++++++++++++++++++++ 14 files changed, 124 insertions(+), 47 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 604f38f02ba4..90d917a705dd 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1720,14 +1720,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wählen Sie eine Option, um den Genehmiger für diese Berichte zu ändern.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dieser Bericht wurde an @${originalManager} statt an Sie (deren Urlaubsvertretung) gesendet, weil Sie kein Mitglied der Richtlinie dieses Berichts sind`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dieser Bericht wurde an @${originalManager} statt an Ihre Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Dieser Bericht wurde an Sie statt an Ihre Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Berichte nicht genehmigen kann`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da Ihre Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Dieser Bericht wurde zur Genehmigung an Sie gesendet, da Ihre Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da deren Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, }, diff --git a/src/languages/el.ts b/src/languages/el.ts index 9508740416e1..f0007e511a22 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -1763,14 +1763,14 @@ const translations: TranslationDeepObject = { reassignedApproverMessage: (managerID: number) => `ανέθεσε εκ νέου τον εγκρίνοντα στον/στην μέσω ενημέρωσης ροής εργασίας`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον Αντιπρόσωπο Άδειας του) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε σε εσάς αντί στον Αντιπρόσωπο Άδειας σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας του/της @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Αυτή η αναφορά στάλθηκε σε εσάς για έγκριση επειδή ο Αντιπρόσωπος Άδειας σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας του/της, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, actions: { diff --git a/src/languages/en.ts b/src/languages/en.ts index 244e9a9c6f2c..a29fc87e65b8 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1790,14 +1790,14 @@ const translations = { reassignedApproverMessage: (managerID: number) => `reassigned the approver to via a workflow update`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `This report was sent to @${originalManager} instead of you (their Vacation Delegate) because you are not a member of this report's policy`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `This report was sent to @${originalManager} instead of your Vacation Delegate @${delegate} because they are not a member of this report's policy`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `This report was sent to you instead of your Vacation Delegate @${delegate} because they are not a member of this report's policy`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} instead of their Vacation Delegate @${delegate} because they are not a member of this report's policy`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} for approval since @${delegate} can't approve your own reports`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `This report was sent to @${originalManager} for approval since your Vacation Delegate, @${delegate} can't approve their own reports`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `This report was sent to you for approval since your Vacation Delegate, @${delegate} can't approve their own reports`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} for approval since their Vacation Delegate, @${delegate} can't approve their own reports`, actions: { diff --git a/src/languages/es.ts b/src/languages/es.ts index e12910d1e79c..9c47c86625ff 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1719,14 +1719,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Elige una opción para cambiar el aprobador de estos informes.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Este informe se envió a @${originalManager} en lugar de a ti (su delegado de vacaciones) porque no eres miembro de la política de este informe`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este informe se envió a @${originalManager} en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Este informe se envió a ti en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que @${delegate} no puede aprobar sus propios informes`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Este informe se envió a @${originalManager} para su aprobación, ya que tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Este informe se envió a ti para su aprobación, ya que tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, }, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 0ad07c349183..e44c3274b468 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1726,14 +1726,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Choisissez une option pour changer l’approbateur de ces rapports.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (leur remplaçant en vacances), car vous n’êtes pas membre de la politique de cette note de frais`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} au lieu de votre remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Cette note de frais vous a été envoyée au lieu de votre remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant de vacances @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car @${delegate} ne peut pas approuver ses propres notes de frais`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} pour approbation, car votre remplaçant de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, }, diff --git a/src/languages/it.ts b/src/languages/it.ts index 156351748c36..774169aef0a8 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1719,14 +1719,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: "Scegli un'opzione per cambiare l'approvatore di questi report.", delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Questo resoconto è stato inviato a @${originalManager} invece che a te (il loro delegato per le ferie) perché non fai parte della policy di questo resoconto`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a @${originalManager} invece che al tuo delegato per le ferie @${delegate} perché non è membro della polizza di questo resoconto`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Questo resoconto è stato inviato a te invece che al tuo delegato per le ferie @${delegate} perché non è membro della polizza di questo resoconto`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Questo report è stato inviato a @${originalManager} invece che al suo sostituto per le ferie @${delegate} perché non è un membro della policy di questo report`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che @${delegate} non può approvare i propri resoconti`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Questo report è stato inviato a @${originalManager} per l'approvazione perché il tuo delegato per le ferie, @${delegate}, non può approvare i propri report`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Questo report è stato inviato a te per l'approvazione perché il tuo delegato per le ferie, @${delegate}, non può approvare i propri report`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Questo rendiconto è stato inviato a @${originalManager} per l'approvazione, dato che il loro sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, }, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index e2b5fde24983..650e0e8aa5e6 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1701,14 +1701,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'これらのレポートの承認者を変更する方法を選択してください。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `このレポートは、あなた(休暇代理人)ではなく、あなたがこのレポートのポリシーのメンバーではないため、代わりに @${originalManager} に送信されました`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、あなたに送信されました`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `このレポートは、@${delegate} さんがご自身のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のためにあなたに送信されました`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `このレポートは、休暇中の代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, }, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 02abc881f62a..eaee5a42fa09 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1715,14 +1715,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Kies een optie om de fiatteur voor deze rapporten te wijzigen.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun Vakantievertegenwoordiger), omdat je geen lid bent van het beleid van dit rapport`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dit rapport is naar @${originalManager} gestuurd in plaats van naar je vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Dit rapport is naar jou gestuurd in plaats van naar je vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangend manager voor vakantie, @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Dit rapport is naar @${originalManager} gestuurd voor goedkeuring, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat je vervanger voor vakantie, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Dit rapport is ter goedkeuring naar jou verzonden, omdat je vervanger voor vakantie, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat hun vervanger voor vakantie, @${delegate}, hun eigen rapporten niet kan goedkeuren`, }, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 0dde2c3db0ff..b44ab9273baf 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1711,14 +1711,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wybierz opcję, aby zmienić akceptującego dla tych raportów.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Ten raport został wysłany do @${originalManager} zamiast do ciebie (twojego Zastępcy Wakacyjnego), ponieważ nie jesteś członkiem polityki tego raportu`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager}, a nie do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest członkiem polityki tego raportu`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Ten raport został wysłany do ciebie, a nie do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest członkiem polityki tego raportu`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager}, a nie do jego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ @${delegate} nie może zatwierdzać własnych raportów`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, }, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 8c993fc44028..0743a31ce8e5 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1714,14 +1714,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Escolha uma opção para alterar o aprovador destes relatórios.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias deles) porque você não é membro da política deste relatório`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `Este relatório foi enviado para você em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que @${delegate} não pode aprovar os próprios relatórios`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Esse relatório foi enviado para @${originalManager} para aprovação, já que seu substituto de férias, @${delegate}, não pode aprovar os próprios relatórios`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `Esse relatório foi enviado para você para aprovação, já que seu substituto de férias, @${delegate}, não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que o Substituto de Férias deles, @${delegate}, não pode aprovar os próprios relatórios`, }, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 582539e66d44..253d40e9b115 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1658,14 +1658,14 @@ const translations: TranslationDeepObject = { bulkSubtitle: '选择一个选项来更改这些报表的审批人。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `由于你不是此报表所属政策的成员,该报表已发送给 @${originalManager},而不是发送给你(其休假代理)`, - delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `此报表被发送给了 @${originalManager},而不是你的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, + delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + `此报表被发送给了你,而不是你的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `此报表已发送给 @${originalManager},而不是他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `由于 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `由于您的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + `由于您的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给您进行审批`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `由于审批人的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 审批`, }, diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 158a360acc04..3186ee57a4e4 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -4516,6 +4516,7 @@ function getDelegateSubmitMessage( const {originalManager, delegate, isOnPolicy = true} = originalMessage ?? {}; if (!originalManager || !delegate) { + Log.warn('ACTION_DELEGATE_SUBMIT action missing originalManager or delegate'); return ''; } diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 6735cc03ee80..acade6a29f48 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -1671,9 +1671,6 @@ type OriginalMessageDelegateSubmit = { /** Whether the delegate is a member of the report's policy. Defaults to true when absent. */ isOnPolicy?: boolean; - - /** Whether this action was triggered automatically */ - automaticAction?: boolean; }; /** diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts index cbaf9ba26c06..67eb9f770ea4 100644 --- a/tests/unit/ReportActionsUtilsTest.ts +++ b/tests/unit/ReportActionsUtilsTest.ts @@ -3699,6 +3699,85 @@ describe('ReportActionsUtils', () => { }); }); + describe('getDelegateSubmitMessage', () => { + const originalManagerEmail = 'manager@example.com'; + const delegateEmail = 'delegate@example.com'; + const thirdPartyEmail = 'thirdparty@example.com'; + + const buildDelegateSubmitAction = ( + originalMessage: Partial['originalMessage']> = {}, + ): ReportAction => ({ + actionName: CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT, + created: '2026-06-05 10:00:00', + reportActionID: '1', + originalMessage: { + originalManager: originalManagerEmail, + delegate: delegateEmail, + ...originalMessage, + }, + }); + + it('returns an empty string when originalManager is missing', () => { + const action = buildDelegateSubmitAction({originalManager: undefined}); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, thirdPartyEmail)).toBe(''); + }); + + it('returns an empty string when delegate is missing', () => { + const action = buildDelegateSubmitAction({delegate: undefined}); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, thirdPartyEmail)).toBe(''); + }); + + it('returns the wingman message when the delegate is not on the policy', () => { + const action = buildDelegateSubmitAction({isOnPolicy: false}); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, delegateEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitNotOnPolicyForWingman', originalManagerEmail), + ); + }); + + it('returns the original manager message when the delegate is not on the policy', () => { + const action = buildDelegateSubmitAction({isOnPolicy: false}); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, originalManagerEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitNotOnPolicyAsOriginalManager', originalManagerEmail, delegateEmail), + ); + }); + + it('returns the third-party message when the delegate is not on the policy', () => { + const action = buildDelegateSubmitAction({isOnPolicy: false}); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, thirdPartyEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitNotOnPolicy', originalManagerEmail, delegateEmail), + ); + }); + + it('returns the wingman message for the cannot-approve-own-report case', () => { + const action = buildDelegateSubmitAction(); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, delegateEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManagerEmail, delegateEmail), + ); + }); + + it('returns the original manager message for the cannot-approve-own-report case', () => { + const action = buildDelegateSubmitAction(); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, originalManagerEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', originalManagerEmail, delegateEmail), + ); + }); + + it('returns the third-party message for the cannot-approve-own-report case', () => { + const action = buildDelegateSubmitAction(); + + expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, thirdPartyEmail)).toBe( + translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReport', originalManagerEmail, delegateEmail), + ); + }); + }); + describe('getPolicyChangeLogMaxExpenseAmountMessage', () => { it('should return set message when setting from disabled to a value', () => { const action = { From e341e33d262ae84e4246c46992f4883c3ab0a361 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 10 Aug 2026 11:36:02 -0600 Subject: [PATCH 05/10] Remove unused-param underscore prefix from originalManager --- src/languages/de.ts | 4 ++-- src/languages/el.ts | 4 ++-- src/languages/en.ts | 4 ++-- src/languages/es.ts | 4 ++-- src/languages/fr.ts | 4 ++-- src/languages/it.ts | 4 ++-- src/languages/ja.ts | 4 ++-- src/languages/nl.ts | 4 ++-- src/languages/pl.ts | 4 ++-- src/languages/pt-BR.ts | 4 ++-- src/languages/zh-hans.ts | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 90d917a705dd..7fa633c328db 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1720,13 +1720,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wählen Sie eine Option, um den Genehmiger für diese Berichte zu ändern.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dieser Bericht wurde an @${originalManager} statt an Sie (deren Urlaubsvertretung) gesendet, weil Sie kein Mitglied der Richtlinie dieses Berichts sind`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Dieser Bericht wurde an Sie statt an Ihre Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Berichte nicht genehmigen kann`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an Sie gesendet, da Ihre Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da deren Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, diff --git a/src/languages/el.ts b/src/languages/el.ts index f0007e511a22..d849625af560 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -1763,13 +1763,13 @@ const translations: TranslationDeepObject = { reassignedApproverMessage: (managerID: number) => `ανέθεσε εκ νέου τον εγκρίνοντα στον/στην μέσω ενημέρωσης ροής εργασίας`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον Αντιπρόσωπο Άδειας του) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε σε εσάς αντί στον Αντιπρόσωπο Άδειας σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας του/της @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε σε εσάς για έγκριση επειδή ο Αντιπρόσωπος Άδειας σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας του/της, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, diff --git a/src/languages/en.ts b/src/languages/en.ts index a29fc87e65b8..303a5209ef7c 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1790,13 +1790,13 @@ const translations = { reassignedApproverMessage: (managerID: number) => `reassigned the approver to via a workflow update`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `This report was sent to @${originalManager} instead of you (their Vacation Delegate) because you are not a member of this report's policy`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `This report was sent to you instead of your Vacation Delegate @${delegate} because they are not a member of this report's policy`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} instead of their Vacation Delegate @${delegate} because they are not a member of this report's policy`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} for approval since @${delegate} can't approve your own reports`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `This report was sent to you for approval since your Vacation Delegate, @${delegate} can't approve their own reports`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} for approval since their Vacation Delegate, @${delegate} can't approve their own reports`, diff --git a/src/languages/es.ts b/src/languages/es.ts index 9c47c86625ff..28f2f728f483 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1719,13 +1719,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Elige una opción para cambiar el aprobador de estos informes.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Este informe se envió a @${originalManager} en lugar de a ti (su delegado de vacaciones) porque no eres miembro de la política de este informe`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Este informe se envió a ti en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que @${delegate} no puede aprobar sus propios informes`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Este informe se envió a ti para su aprobación, ya que tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index e44c3274b468..25514667657e 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1726,13 +1726,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Choisissez une option pour changer l’approbateur de ces rapports.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (leur remplaçant en vacances), car vous n’êtes pas membre de la politique de cette note de frais`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Cette note de frais vous a été envoyée au lieu de votre remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant de vacances @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car @${delegate} ne peut pas approuver ses propres notes de frais`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, diff --git a/src/languages/it.ts b/src/languages/it.ts index 774169aef0a8..9fecda6da27d 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1719,13 +1719,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: "Scegli un'opzione per cambiare l'approvatore di questi report.", delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Questo resoconto è stato inviato a @${originalManager} invece che a te (il loro delegato per le ferie) perché non fai parte della policy di questo resoconto`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Questo resoconto è stato inviato a te invece che al tuo delegato per le ferie @${delegate} perché non è membro della polizza di questo resoconto`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Questo report è stato inviato a @${originalManager} invece che al suo sostituto per le ferie @${delegate} perché non è un membro della policy di questo report`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che @${delegate} non può approvare i propri resoconti`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Questo report è stato inviato a te per l'approvazione perché il tuo delegato per le ferie, @${delegate}, non può approvare i propri report`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Questo rendiconto è stato inviato a @${originalManager} per l'approvazione, dato che il loro sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 650e0e8aa5e6..3cddcf589421 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1701,13 +1701,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'これらのレポートの承認者を変更する方法を選択してください。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `このレポートは、あなた(休暇代理人)ではなく、あなたがこのレポートのポリシーのメンバーではないため、代わりに @${originalManager} に送信されました`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、あなたに送信されました`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `このレポートは、@${delegate} さんがご自身のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のためにあなたに送信されました`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `このレポートは、休暇中の代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index eaee5a42fa09..517cb46aee69 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1715,13 +1715,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Kies een optie om de fiatteur voor deze rapporten te wijzigen.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun Vakantievertegenwoordiger), omdat je geen lid bent van het beleid van dit rapport`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Dit rapport is naar jou gestuurd in plaats van naar je vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangend manager voor vakantie, @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Dit rapport is naar @${originalManager} gestuurd voor goedkeuring, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Dit rapport is ter goedkeuring naar jou verzonden, omdat je vervanger voor vakantie, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat hun vervanger voor vakantie, @${delegate}, hun eigen rapporten niet kan goedkeuren`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b44ab9273baf..8bd2f8522142 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1711,13 +1711,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Wybierz opcję, aby zmienić akceptującego dla tych raportów.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Ten raport został wysłany do @${originalManager} zamiast do ciebie (twojego Zastępcy Wakacyjnego), ponieważ nie jesteś członkiem polityki tego raportu`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Ten raport został wysłany do ciebie, a nie do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest członkiem polityki tego raportu`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager}, a nie do jego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ @${delegate} nie może zatwierdzać własnych raportów`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 0743a31ce8e5..4bea9092037a 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1714,13 +1714,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: 'Escolha uma opção para alterar o aprovador destes relatórios.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias deles) porque você não é membro da política deste relatório`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `Este relatório foi enviado para você em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que @${delegate} não pode aprovar os próprios relatórios`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `Esse relatório foi enviado para você para aprovação, já que seu substituto de férias, @${delegate}, não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que o Substituto de Férias deles, @${delegate}, não pode aprovar os próprios relatórios`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 253d40e9b115..c44174cc621b 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1658,13 +1658,13 @@ const translations: TranslationDeepObject = { bulkSubtitle: '选择一个选项来更改这些报表的审批人。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `由于你不是此报表所属政策的成员,该报表已发送给 @${originalManager},而不是发送给你(其休假代理)`, - delegateSubmitNotOnPolicyAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => `此报表被发送给了你,而不是你的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `此报表已发送给 @${originalManager},而不是他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `由于 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (_originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => `由于您的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给您进行审批`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `由于审批人的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 审批`, From 31bb48206203047bc7cae61296f5be2e27a350ed Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Mon, 10 Aug 2026 11:39:15 -0600 Subject: [PATCH 06/10] update copy --- src/languages/de.ts | 10 +++++----- src/languages/el.ts | 19 ++++++++++--------- src/languages/es.ts | 6 +++--- src/languages/fr.ts | 8 ++++---- src/languages/it.ts | 12 ++++++------ src/languages/ja.ts | 12 ++++++------ src/languages/nl.ts | 12 ++++++------ src/languages/pl.ts | 8 ++++---- src/languages/pt-BR.ts | 10 +++++----- src/languages/zh-hans.ts | 12 ++++++------ 10 files changed, 55 insertions(+), 54 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 7fa633c328db..c40e69b023db 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1721,15 +1721,15 @@ const translations: TranslationDeepObject = { delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dieser Bericht wurde an @${originalManager} statt an Sie (deren Urlaubsvertretung) gesendet, weil Sie kein Mitglied der Richtlinie dieses Berichts sind`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dieser Bericht wurde an Sie statt an Ihre Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + `Dieser Bericht wurde Ihnen anstelle Ihres Vertretenden im Urlaub @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Berichte nicht genehmigen kann`, + `Dieser Report wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Reports nicht genehmigen kann`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Dieser Bericht wurde zur Genehmigung an Sie gesendet, da Ihre Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, + `Dieser Bericht wurde Ihnen zur Genehmigung gesendet, da Ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da deren Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, }, chooseWorkspace: 'Wähle einen Arbeitsbereich', routedDueToDEW: (to: string, reason?: string) => `Bericht weitergeleitet an ${to}${reason ? ` weil ${reason}` : ''}`, diff --git a/src/languages/el.ts b/src/languages/el.ts index d849625af560..cad92f380924 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -320,7 +320,6 @@ const translations: TranslationDeepObject = { automatic: 'Αυτόματο', showing: 'Εμφανίζονται', of: 'του', - // @context Carousel pagination counter showing the current item's position out of the total (e.g. "3 of 50"). currentOfTotal: ({current, total}: {current: number; total: number}) => `${current} από ${total}`, default: 'Προεπιλογή', update: 'Ενημέρωση', @@ -1762,17 +1761,17 @@ const translations: TranslationDeepObject = { changedApproverMessage: (managerID: number) => `άλλαξε τον εγκρίνοντα σε `, reassignedApproverMessage: (managerID: number) => `ανέθεσε εκ νέου τον εγκρίνοντα στον/στην μέσω ενημέρωσης ροής εργασίας`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον Αντιπρόσωπο Άδειας του) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον/την αναπληρωτή/αναπληρώτριά τους κατά τις διακοπές) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε σε εσάς αντί στον Αντιπρόσωπο Άδειας σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + `Αυτή η αναφορά σας στάλθηκε αντί για τον αναπληρωτή σας διακοπών @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί στον Αντιπρόσωπο Άδειας του/της @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί για τον/την αναπληρωτή/τριά τους για διακοπές @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε σε εσάς για έγκριση επειδή ο Αντιπρόσωπος Άδειας σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + `Αυτή η αναφορά σας στάλθηκε για έγκριση, επειδή ο Αντικαταστάτης Διακοπών σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του αναφορές`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση επειδή ο Αντιπρόσωπος Άδειας του/της, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, καθώς ο/η αναπληρωτής/αναπληρώτριά τους για άδεια, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, actions: { addApprover: 'Προσθήκη εγκρίνων', addApproverSubtitle: 'Προσθέστε έναν επιπλέον εγκρίνοντα στην υπάρχουσα ροή έγκρισης.', @@ -7509,8 +7508,10 @@ _Για πιο αναλυτικές οδηγίες, [επισκεφθείτε τ }, exportAgainModal: { title: 'Προσοχή!', - description: (reportName, connectionName) => - `Οι παρακάτω αναφορές έχουν ήδη εξαχθεί στο ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}. Είστε βέβαιοι ότι θέλετε να τις εξαγάγετε ξανά; + description: ( + reportName, + connectionName, + ) => `Οι παρακάτω αναφορές έχουν ήδη εξαχθεί στο ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}. Είστε βέβαιοι ότι θέλετε να τις εξαγάγετε ξανά; ${reportName}`, confirmText: 'Ναι, εξαγωγή ξανά', diff --git a/src/languages/es.ts b/src/languages/es.ts index 28f2f728f483..c9b08bfdf960 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1720,13 +1720,13 @@ const translations: TranslationDeepObject = { delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Este informe se envió a @${originalManager} en lugar de a ti (su delegado de vacaciones) porque no eres miembro de la política de este informe`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este informe se envió a ti en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, + `Este informe se te envió a ti en lugar de a tu delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Este informe se envió a @${originalManager} para su aprobación, ya que @${delegate} no puede aprobar sus propios informes`, + `Este informe se envió a @${originalManager} para su aprobación ya que @${delegate} no puede aprobar tus propios informes`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Este informe se envió a ti para su aprobación, ya que tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, + `Este informe se te ha enviado para aprobación porque tu sustituto de vacaciones, @${delegate}, no puede aprobar sus propios informes`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, }, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 25514667657e..134fe0ae85ff 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1725,15 +1725,15 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Choisissez une option pour changer l’approbateur de ces rapports.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (leur remplaçant en vacances), car vous n’êtes pas membre de la politique de cette note de frais`, + `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (son remplaçant pendant ses vacances), car vous n’êtes pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Cette note de frais vous a été envoyée au lieu de votre remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, + `Cette note de frais vous a été envoyée au lieu d’être adressée à votre remplaçant pour congés @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant de vacances @${delegate}, car il n’est pas membre de la politique de cette note de frais`, + `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant en congé @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car @${delegate} ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, + `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant pendant les vacances, @${delegate}, ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, }, diff --git a/src/languages/it.ts b/src/languages/it.ts index 9fecda6da27d..f2027b808ebb 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1718,17 +1718,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: "Scegli un'opzione per cambiare l'approvatore di questi report.", delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Questo resoconto è stato inviato a @${originalManager} invece che a te (il loro delegato per le ferie) perché non fai parte della policy di questo resoconto`, + `Questo rapporto è stato inviato a @${originalManager} invece che a te (il loro Sostituto per le ferie) perché non fai parte della polizza di questo rapporto`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a te invece che al tuo delegato per le ferie @${delegate} perché non è membro della polizza di questo resoconto`, + `Questo resoconto è stato inviato a te invece che al tuo delegato per le vacanze @${delegate} perché non è un membro della policy di questo resoconto`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Questo report è stato inviato a @${originalManager} invece che al suo sostituto per le ferie @${delegate} perché non è un membro della policy di questo report`, + `Questo resoconto è stato inviato a @${originalManager} invece che al/dei suo/i sostituto/i per le ferie @${delegate} perché non fanno parte della polizza di questo resoconto`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che @${delegate} non può approvare i propri resoconti`, + `Questo resoconto è stato inviato a @${originalManager} per l'approvazione perché @${delegate} non può approvare i propri resoconti`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Questo report è stato inviato a te per l'approvazione perché il tuo delegato per le ferie, @${delegate}, non può approvare i propri report`, + `Questo rendiconto ti è stato inviato per l'approvazione perché il tuo sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Questo rendiconto è stato inviato a @${originalManager} per l'approvazione, dato che il loro sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, + `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che il suo delegato per le ferie, @${delegate}, non può approvare i propri resoconti`, }, chooseWorkspace: 'Scegli uno spazio di lavoro', routedDueToDEW: (to: string, reason?: string) => `report indirizzato a ${to}${reason ? ` perché ${reason}` : ''}`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 3cddcf589421..dd2b52de379d 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1700,17 +1700,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'これらのレポートの承認者を変更する方法を選択してください。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `このレポートは、あなた(休暇代理人)ではなく、あなたがこのレポートのポリシーのメンバーではないため、代わりに @${originalManager} に送信されました`, + `このレポートは、あなた(休暇代理人)ではなく、あなたの代わりに @${originalManager} に送信されました。あなたはこのレポートのポリシーのメンバーではないためです。`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、あなたに送信されました`, + `このレポートは、休暇代理人の @${delegate} ではなくあなたに送信されました。このレポートのポリシーに、その代理人がメンバーとして参加していないためです。`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, + `このレポートは、このレポートのポリシーのメンバーではないため、本来の休暇代理人である @${delegate} ではなく、@${originalManager} に送信されました`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `このレポートは、@${delegate} さんがご自身のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + `@${delegate} さんはご自身のレポートを承認できないため、このレポートは承認のために @${originalManager} さんに送信されました`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のためにあなたに送信されました`, + `このレポートは、休暇代理人の @${delegate} さんが自分のレポートを承認できないため、承認のためにあなたに送信されました`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `このレポートは、休暇中の代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, }, chooseWorkspace: 'ワークスペースを選択', routedDueToDEW: (to: string, reason?: string) => `レポートは ${to}${reason ? ` ${reason} のため` : ''} に回覧されました`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 517cb46aee69..2edc686ff077 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1714,17 +1714,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Kies een optie om de fiatteur voor deze rapporten te wijzigen.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun Vakantievertegenwoordiger), omdat je geen lid bent van het beleid van dit rapport`, + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun vakantievervanger), omdat je geen lid bent van het beleid van dit rapport`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dit rapport is naar jou gestuurd in plaats van naar je vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + `Dit rapport is naar jou gestuurd in plaats van naar je Vakantievertegenwoordiger @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangend manager voor vakantie, @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangende gemachtigde @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Dit rapport is naar @${originalManager} gestuurd voor goedkeuring, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, + `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Dit rapport is ter goedkeuring naar jou verzonden, omdat je vervanger voor vakantie, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, + `Dit rapport is naar je gestuurd voor goedkeuring omdat je Vakantievervanger, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat hun vervanger voor vakantie, @${delegate}, hun eigen rapporten niet kan goedkeuren`, + `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat hun vakantieplaatsvervanger, @${delegate}, hun eigen rapporten niet kan goedkeuren`, }, chooseWorkspace: 'Kies een werkruimte', routedDueToDEW: (to: string, reason?: string) => `rapport doorgestuurd naar ${to}${reason ? ` omdat ${reason}` : ''}`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 8bd2f8522142..cdef24fd90ee 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1710,15 +1710,15 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Wybierz opcję, aby zmienić akceptującego dla tych raportów.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Ten raport został wysłany do @${originalManager} zamiast do ciebie (twojego Zastępcy Wakacyjnego), ponieważ nie jesteś członkiem polityki tego raportu`, + `Ten raport został wysłany do @${originalManager} zamiast do ciebie (jego Zastępcy na czas urlopu), ponieważ nie jesteś członkiem polityki tego raportu`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Ten raport został wysłany do ciebie, a nie do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest członkiem polityki tego raportu`, + `Ten raport został wysłany do ciebie zamiast do twojego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager}, a nie do jego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, + `Ten raport został wysłany do @${originalManager} zamiast do jego zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ @${delegate} nie może zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, + `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój zastępca urlopowy, @${delegate}, nie może zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, }, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 4bea9092037a..067191ab0267 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1713,17 +1713,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Escolha uma opção para alterar o aprovador destes relatórios.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias deles) porque você não é membro da política deste relatório`, + `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias dele/dela) porque você não é membro da política deste relatório`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este relatório foi enviado para você em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, + `Este relatório foi enviado para você em vez do seu delegante de férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, + `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias deles @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que @${delegate} não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `Esse relatório foi enviado para você para aprovação, já que seu substituto de férias, @${delegate}, não pode aprovar os próprios relatórios`, + `Este relatório foi enviado para você para aprovação, pois o seu Delegado de Férias, @${delegate}, não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} para aprovação, já que o Substituto de Férias deles, @${delegate}, não pode aprovar os próprios relatórios`, + `Este relatório foi enviado para @${originalManager} para aprovação, já que o Delegado de Férias dele(a), @${delegate}, não pode aprovar os próprios relatórios`, }, chooseWorkspace: 'Escolha um workspace', routedDueToDEW: (to: string, reason?: string) => `relatório encaminhado para ${to}${reason ? ` porque ${reason}` : ''}`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index c44174cc621b..0e0ee443f019 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1657,17 +1657,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: '选择一个选项来更改这些报表的审批人。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `由于你不是此报表所属政策的成员,该报表已发送给 @${originalManager},而不是发送给你(其休假代理)`, + `此报销单已发送给 @${originalManager},而不是发送给你(其休假代理),因为你不是此报销单所属政策的成员`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `此报表被发送给了你,而不是你的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, + `由于你的休假代理人 @${delegate} 不是此报销单所属政策的成员,这份报销单被发送给了你本人`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `此报表已发送给 @${originalManager},而不是他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, + `此报表已发送给 @${originalManager},而非他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `由于 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 进行审批`, + `此报表已发送给 @${originalManager} 进行审批,因为 @${delegate} 不能审批自己的报表`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => - `由于您的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给您进行审批`, + `此报表已发送给您审批,因为您的休假代理人 @${delegate} 无法审批自己的报表`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `由于审批人的休假代理人 @${delegate} 无法审批自己的报销单,此报销单已发送给 @${originalManager} 审批`, + `由于其休假代理人 @${delegate} 无法审批自己的报销报告,此报销报告已发送给 @${originalManager} 审批`, }, chooseWorkspace: '选择工作区', routedDueToDEW: (to: string, reason?: string) => `报销单已转交给 ${to}${reason ? ` 因为 ${reason}` : ''}`, From a8b47c89d7f8ade4768a1438fc284bad0e344194 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Tue, 11 Aug 2026 11:14:07 -0600 Subject: [PATCH 07/10] address comments --- src/languages/de.ts | 6 +++--- src/languages/el.ts | 7 ++++--- src/languages/en.ts | 6 +++--- src/languages/es.ts | 6 +++--- src/languages/fr.ts | 6 +++--- src/languages/it.ts | 6 +++--- src/languages/ja.ts | 6 +++--- src/languages/nl.ts | 6 +++--- src/languages/pl.ts | 6 +++--- src/languages/pt-BR.ts | 6 +++--- src/languages/zh-hans.ts | 5 ++--- src/libs/ReportActionsUtils.ts | 4 ++-- .../report/actionContents/ActionContentRouter.tsx | 13 ++++++++----- tests/unit/ReportActionsUtilsTest.ts | 4 ++-- 14 files changed, 45 insertions(+), 42 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index dc308c53b7e8..99c1ee609f60 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1724,9 +1724,9 @@ const translations: TranslationDeepObject = { `Dieser Bericht wurde Ihnen anstelle Ihres Vertretenden im Urlaub @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Dieser Report wurde zur Genehmigung an @${originalManager} gesendet, da @${delegate} eigene Reports nicht genehmigen kann`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Dieser Report wurde zur Genehmigung an @${originalManager} gesendet, da Sie Ihre eigenen Reports nicht genehmigen können`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Dieser Bericht wurde Ihnen zur Genehmigung gesendet, da Ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, diff --git a/src/languages/el.ts b/src/languages/el.ts index f425bf40ad7f..03009c156e13 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -320,6 +320,7 @@ const translations: TranslationDeepObject = { automatic: 'Αυτόματο', showing: 'Εμφανίζονται', of: 'του', + // @context Carousel pagination counter showing the current item's position out of the total (e.g. "3 of 50"). currentOfTotal: ({current, total}: {current: number; total: number}) => `${current} από ${total}`, default: 'Προεπιλογή', update: 'Ενημέρωση', @@ -1766,9 +1767,9 @@ const translations: TranslationDeepObject = { `Αυτή η αναφορά σας στάλθηκε αντί για τον αναπληρωτή σας διακοπών @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί για τον/την αναπληρωτή/τριά τους για διακοπές @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, επειδή ο/η @${delegate} δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, επειδή δεν μπορείτε να εγκρίνετε τις δικές σας αναφορές`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Αυτή η αναφορά σας στάλθηκε για έγκριση, επειδή ο Αντικαταστάτης Διακοπών σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του αναφορές`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, καθώς ο/η αναπληρωτής/αναπληρώτριά τους για άδεια, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, diff --git a/src/languages/en.ts b/src/languages/en.ts index e8a8d3f87b49..3147ce57842f 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1794,9 +1794,9 @@ const translations = { `This report was sent to you instead of your Vacation Delegate @${delegate} because they are not a member of this report's policy`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} instead of their Vacation Delegate @${delegate} because they are not a member of this report's policy`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `This report was sent to @${originalManager} for approval since @${delegate} can't approve your own reports`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `This report was sent to @${originalManager} for approval since you can't approve your own reports`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `This report was sent to you for approval since your Vacation Delegate, @${delegate} can't approve their own reports`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `This report was sent to @${originalManager} for approval since their Vacation Delegate, @${delegate} can't approve their own reports`, diff --git a/src/languages/es.ts b/src/languages/es.ts index 24942363ebdb..dbe74f8d359e 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1723,9 +1723,9 @@ const translations: TranslationDeepObject = { `Este informe se te envió a ti en lugar de a tu delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Este informe se envió a @${originalManager} para su aprobación ya que @${delegate} no puede aprobar tus propios informes`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Este informe se envió a @${originalManager} para su aprobación ya que tú no puedes aprobar tus propios informes`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Este informe se te ha enviado para aprobación porque tu sustituto de vacaciones, @${delegate}, no puede aprobar sus propios informes`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 0be11384ffbb..5e7715ac6bd2 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1730,9 +1730,9 @@ const translations: TranslationDeepObject = { `Cette note de frais vous a été envoyée au lieu d’être adressée à votre remplaçant pour congés @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant en congé @${delegate}, car il n’est pas membre de la politique de cette note de frais`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} pour approbation, car @${delegate} ne peut pas approuver ses propres notes de frais`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Cette note de frais a été envoyée à @${originalManager} pour approbation, car vous ne pouvez pas approuver vos propres notes de frais`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant pendant les vacances, @${delegate}, ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, diff --git a/src/languages/it.ts b/src/languages/it.ts index 420b0e74f782..305b49623745 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1723,9 +1723,9 @@ const translations: TranslationDeepObject = { `Questo resoconto è stato inviato a te invece che al tuo delegato per le vacanze @${delegate} perché non è un membro della policy di questo resoconto`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Questo resoconto è stato inviato a @${originalManager} invece che al/dei suo/i sostituto/i per le ferie @${delegate} perché non fanno parte della polizza di questo resoconto`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a @${originalManager} per l'approvazione perché @${delegate} non può approvare i propri resoconti`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Questo resoconto è stato inviato a @${originalManager} per l'approvazione perché tu non puoi approvare i tuoi resoconti`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Questo rendiconto ti è stato inviato per l'approvazione perché il tuo sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che il suo delegato per le ferie, @${delegate}, non può approvare i propri resoconti`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index ea58aadab9b4..ae555ae958ef 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1705,9 +1705,9 @@ const translations: TranslationDeepObject = { `このレポートは、休暇代理人の @${delegate} ではなくあなたに送信されました。このレポートのポリシーに、その代理人がメンバーとして参加していないためです。`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `このレポートは、このレポートのポリシーのメンバーではないため、本来の休暇代理人である @${delegate} ではなく、@${originalManager} に送信されました`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `@${delegate} さんはご自身のレポートを承認できないため、このレポートは承認のために @${originalManager} さんに送信されました`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `あなたはご自身のレポートを承認できないため、このレポートは承認のために @${originalManager} さんに送信されました`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `このレポートは、休暇代理人の @${delegate} さんが自分のレポートを承認できないため、承認のためにあなたに送信されました`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 0927b7429f98..e8dd04b1da8c 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1719,9 +1719,9 @@ const translations: TranslationDeepObject = { `Dit rapport is naar jou gestuurd in plaats van naar je Vakantievertegenwoordiger @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangende gemachtigde @${delegate}, omdat die geen lid is van het beleid van dit rapport`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat @${delegate} je eigen rapporten niet kan goedkeuren`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat je je eigen rapporten niet kunt goedkeuren`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Dit rapport is naar je gestuurd voor goedkeuring omdat je Vakantievervanger, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat hun vakantieplaatsvervanger, @${delegate}, hun eigen rapporten niet kan goedkeuren`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 36deb0e1fe9a..ccc2f19b9d53 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1715,9 +1715,9 @@ const translations: TranslationDeepObject = { `Ten raport został wysłany do ciebie zamiast do twojego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} zamiast do jego zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ @${delegate} nie może zatwierdzać własnych raportów`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ nie możesz zatwierdzać własnych raportów`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój zastępca urlopowy, @${delegate}, nie może zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index ae0362fd6127..e0da5472a904 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1718,9 +1718,9 @@ const translations: TranslationDeepObject = { `Este relatório foi enviado para você em vez do seu delegante de férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias deles @${delegate} porque ele não é membro da política deste relatório`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} para aprovação, já que @${delegate} não pode aprovar os próprios relatórios`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => + `Este relatório foi enviado para @${originalManager} para aprovação, já que você não pode aprovar seus próprios relatórios`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `Este relatório foi enviado para você para aprovação, pois o seu Delegado de Férias, @${delegate}, não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `Este relatório foi enviado para @${originalManager} para aprovação, já que o Delegado de Férias dele(a), @${delegate}, não pode aprovar os próprios relatórios`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index cd096c5fd8ef..5632205b91f8 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1662,9 +1662,8 @@ const translations: TranslationDeepObject = { `由于你的休假代理人 @${delegate} 不是此报销单所属政策的成员,这份报销单被发送给了你本人`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `此报表已发送给 @${originalManager},而非他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string, delegate: string) => - `此报表已发送给 @${originalManager} 进行审批,因为 @${delegate} 不能审批自己的报表`, - delegateSubmitCannotApproveOwnReportAsOriginalManager: (originalManager: string, delegate: string) => + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `此报表已发送给 @${originalManager} 进行审批,因为你不能审批自己的报表`, + delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `此报表已发送给您审批,因为您的休假代理人 @${delegate} 无法审批自己的报表`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => `由于其休假代理人 @${delegate} 无法审批自己的报销报告,此报销报告已发送给 @${originalManager} 审批`, diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 60262ea125b1..bd039d42b5c7 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -4548,10 +4548,10 @@ function getDelegateSubmitMessage( } if (isWingman) { - return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManager, delegate); + return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManager); } if (isOriginalManager) { - return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', originalManager, delegate); + return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', delegate); } return translate('iou.changeApprover.delegateSubmitCannotApproveOwnReport', originalManager, delegate); } diff --git a/src/pages/inbox/report/actionContents/ActionContentRouter.tsx b/src/pages/inbox/report/actionContents/ActionContentRouter.tsx index 22ae98ee1e20..976beb7172de 100644 --- a/src/pages/inbox/report/actionContents/ActionContentRouter.tsx +++ b/src/pages/inbox/report/actionContents/ActionContentRouter.tsx @@ -506,11 +506,14 @@ function ActionContentRouter({ ); } if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { - return ( - - ${getDelegateSubmitMessage(translate, action, currentUserEmail)}`} /> - - ); + const delegateSubmitMessage = getDelegateSubmitMessage(translate, action, currentUserEmail); + if (delegateSubmitMessage) { + return ( + + ${delegateSubmitMessage}`} /> + + ); + } } if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.SETTLEMENT_ACCOUNT_LOCKED)) { return ( diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts index 9ad76b87f084..5fc8493c2b63 100644 --- a/tests/unit/ReportActionsUtilsTest.ts +++ b/tests/unit/ReportActionsUtilsTest.ts @@ -3758,7 +3758,7 @@ describe('ReportActionsUtils', () => { const action = buildDelegateSubmitAction(); expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, delegateEmail)).toBe( - translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManagerEmail, delegateEmail), + translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportForWingman', originalManagerEmail), ); }); @@ -3766,7 +3766,7 @@ describe('ReportActionsUtils', () => { const action = buildDelegateSubmitAction(); expect(ReportActionsUtils.getDelegateSubmitMessage(translateLocal, action, originalManagerEmail)).toBe( - translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', originalManagerEmail, delegateEmail), + translateLocal('iou.changeApprover.delegateSubmitCannotApproveOwnReportAsOriginalManager', delegateEmail), ); }); From 4b696d39f88a79509346cdf381dd7d50c9de5d79 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Tue, 11 Aug 2026 11:25:14 -0600 Subject: [PATCH 08/10] update sidebar, thread, copy --- src/libs/ReportNameUtils.ts | 9 +++++++++ src/libs/SidebarUtils.ts | 6 ++++++ .../inbox/report/ContextMenu/ContextMenuActions.tsx | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts index d1c096df1d23..48dbab12ea1f 100644 --- a/src/libs/ReportNameUtils.ts +++ b/src/libs/ReportNameUtils.ts @@ -31,6 +31,7 @@ import {formatPhoneNumber as formatPhoneNumberPhoneUtils} from './LocalePhoneNum import {translateLocal} from './Localize'; // eslint-disable-next-line import/no-cycle import {getForReportAction, getMovedReportID} from './ModifiedExpenseMessage'; +import {getCurrentUserEmail} from './Network/NetworkStore'; import Parser from './Parser'; import {temporaryGetDisplayNameOrDefault} from './PersonalDetailsUtils'; import {getCleanedTagName, isPolicyAdmin, isPolicyFieldListEmpty} from './PolicyUtils'; @@ -51,6 +52,7 @@ import { getCurrencyDefaultTaxUpdateMessage, getCustomTaxNameUpdateMessage, getDefaultApproverUpdateMessage, + getDelegateSubmitMessage, getDismissedViolationMessageText, getDynamicExternalWorkflowApproveFailedActionMessage, getDynamicExternalWorkflowSubmitFailedActionMessage, @@ -730,6 +732,13 @@ function computeReportNameBasedOnReportAction( return Parser.htmlToText(getChangedApproverActionMessage(translate, parentReportAction)); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { + const delegateSubmitMessage = getDelegateSubmitMessage(translate, parentReportAction, getCurrentUserEmail() ?? undefined); + if (delegateSubmitMessage) { + return Parser.htmlToText(delegateSubmitMessage); + } + } + if (parentReportAction?.actionName && isTagModificationAction(parentReportAction?.actionName)) { return getCleanedTagName(getWorkspaceTagUpdateMessage(translate, parentReportAction) ?? ''); } diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 7761e5f095d6..b787e9d5ca9d 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -65,6 +65,7 @@ import { getCurrencyDefaultTaxUpdateMessage, getCustomTaxNameUpdateMessage, getDefaultApproverUpdateMessage, + getDelegateSubmitMessage, getDeletedApprovalRuleMessage, getDeletedBudgetMessage, getForeignCurrencyDefaultTaxUpdateMessage, @@ -1305,6 +1306,11 @@ function getOptionData({ isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.REASSIGN_APPROVER) ) { result.alternateText = Parser.htmlToText(getChangedApproverActionMessage(translate, lastAction)); + } else if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { + const delegateSubmitMessage = getDelegateSubmitMessage(translate, lastAction, currentUserLogin); + if (delegateSubmitMessage) { + result.alternateText = Parser.htmlToText(delegateSubmitMessage); + } } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_OWNERSHIP) { result.alternateText = Parser.htmlToText(getUpdatedOwnershipMessage(translate, lastAction, policy)); } else if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.MOVED_TRANSACTION)) { diff --git a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx index fa1bfcccaa54..21707e07cca9 100644 --- a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx @@ -45,6 +45,7 @@ import { getCurrencyDefaultTaxUpdateMessage, getCustomTaxNameUpdateMessage, getDefaultApproverUpdateMessage, + getDelegateSubmitMessage, getDeletedApprovalRuleMessage, getDeletedBudgetMessage, getDismissedViolationMessageText, @@ -1323,6 +1324,11 @@ const ContextMenuActions: ContextMenuAction[] = [ isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.REASSIGN_APPROVER) ) { setClipboardMessage(getChangedApproverActionMessage(translate, reportAction)); + } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { + const delegateSubmitMessage = getDelegateSubmitMessage(translate, reportAction, currentUserPersonalDetails.email); + if (delegateSubmitMessage) { + setClipboardMessage(delegateSubmitMessage); + } } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.MOVED_TRANSACTION)) { setClipboardMessage(getMovedTransactionMessage(translate, reportAction, reportAttributes)); } else if (isMovedAction(reportAction)) { From d9c339591cd286787dc4ad7c6072220684a27939 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Tue, 11 Aug 2026 11:26:35 -0600 Subject: [PATCH 09/10] update copy --- src/languages/de.ts | 8 ++++---- src/languages/el.ts | 11 +++++------ src/languages/es.ts | 10 +++++----- src/languages/fr.ts | 10 +++++----- src/languages/it.ts | 12 ++++++------ src/languages/ja.ts | 10 +++++----- src/languages/nl.ts | 12 ++++++------ src/languages/pl.ts | 10 +++++----- src/languages/pt-BR.ts | 12 ++++++------ src/languages/zh-hans.ts | 12 ++++++------ 10 files changed, 53 insertions(+), 54 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 99c1ee609f60..55c7af4d6dd8 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -1721,15 +1721,15 @@ const translations: TranslationDeepObject = { delegateSubmitNotOnPolicyForWingman: (originalManager: string) => `Dieser Bericht wurde an @${originalManager} statt an Sie (deren Urlaubsvertretung) gesendet, weil Sie kein Mitglied der Richtlinie dieses Berichts sind`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dieser Bericht wurde Ihnen anstelle Ihres Vertretenden im Urlaub @${delegate} gesendet, da diese Person kein Mitglied der Richtlinie dieses Berichts ist`, + `Dieser Bericht wurde Ihnen anstelle Ihrer Urlaubsvertretung @${delegate} gesendet, weil sie kein Mitglied der Richtlinie dieses Berichts ist.`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Dieser Bericht wurde an @${originalManager} statt an die Urlaubsvertretung @${delegate} gesendet, weil diese Person kein Mitglied der Richtlinie dieses Berichts ist`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `Dieser Report wurde zur Genehmigung an @${originalManager} gesendet, da Sie Ihre eigenen Reports nicht genehmigen können`, + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da Sie Ihre eigenen Berichte nicht genehmigen können`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Dieser Bericht wurde Ihnen zur Genehmigung gesendet, da Ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, + `Dieser Bericht wurde Ihnen zur Genehmigung gesendet, da Ihre Vertretung im Urlaub, @${delegate}, ihre eigenen Berichte nicht genehmigen kann.`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da ihre Urlaubsvertretung, @${delegate}, ihre eigenen Berichte nicht genehmigen kann`, + `Dieser Bericht wurde zur Genehmigung an @${originalManager} gesendet, da deren Urlaubsvertretung, @${delegate}, eigene Berichte nicht genehmigen kann`, }, chooseWorkspace: 'Wähle einen Arbeitsbereich', routedDueToDEW: (to: string, reason?: string) => `Bericht weitergeleitet an ${to}${reason ? ` weil ${reason}` : ''}`, diff --git a/src/languages/el.ts b/src/languages/el.ts index 03009c156e13..ec07617aa9b8 100644 --- a/src/languages/el.ts +++ b/src/languages/el.ts @@ -320,7 +320,6 @@ const translations: TranslationDeepObject = { automatic: 'Αυτόματο', showing: 'Εμφανίζονται', of: 'του', - // @context Carousel pagination counter showing the current item's position out of the total (e.g. "3 of 50"). currentOfTotal: ({current, total}: {current: number; total: number}) => `${current} από ${total}`, default: 'Προεπιλογή', update: 'Ενημέρωση', @@ -1762,17 +1761,17 @@ const translations: TranslationDeepObject = { changedApproverMessage: (managerID: number) => `άλλαξε τον εγκρίνοντα σε `, reassignedApproverMessage: (managerID: number) => `ανέθεσε εκ νέου τον εγκρίνοντα στον/στην μέσω ενημέρωσης ροής εργασίας`, delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί σε εσάς (τον/την αναπληρωτή/αναπληρώτριά τους κατά τις διακοπές) επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, + `Η αναφορά στάλθηκε στον/στην @${originalManager} αντί για εσάς (τον/την αναπληρωτή/τριά τους για διακοπές), επειδή δεν είστε μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Αυτή η αναφορά σας στάλθηκε αντί για τον αναπληρωτή σας διακοπών @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + `Αυτή η αναφορά σας εστάλη αντί για τον αναπληρωτή διακοπών σας @${delegate} επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί για τον/την αναπληρωτή/τριά τους για διακοπές @${delegate}, επειδή δεν είναι μέλος της πολιτικής αυτής της αναφοράς`, + `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} αντί για τον/την αναπληρωτή/τρια αδείας τους @${delegate}, επειδή δεν είναι μέλος του κανονισμού αυτής της αναφοράς`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, επειδή δεν μπορείτε να εγκρίνετε τις δικές σας αναφορές`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Αυτή η αναφορά σας στάλθηκε για έγκριση, επειδή ο Αντικαταστάτης Διακοπών σας, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του αναφορές`, + `Αυτή η αναφορά σας στάλθηκε για έγκριση, επειδή ο εκπρόσωπός σας για άδεια, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του αναφορές`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Αυτή η αναφορά στάλθηκε στον/στην @${originalManager} για έγκριση, καθώς ο/η αναπληρωτής/αναπληρώτριά τους για άδεια, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, + `Αυτή η αναφορά στάλθηκε στον/στη @${originalManager} για έγκριση, καθώς ο/η αναπληρωτής/-τριάς του/της, @${delegate}, δεν μπορεί να εγκρίνει τις δικές του/της αναφορές`, actions: { addApprover: 'Προσθήκη εγκρίνων', addApproverSubtitle: 'Προσθέστε έναν επιπλέον εγκρίνοντα στην υπάρχουσα ροή έγκρισης.', diff --git a/src/languages/es.ts b/src/languages/es.ts index dbe74f8d359e..56218ce00402 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -1718,17 +1718,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Elige una opción para cambiar el aprobador de estos informes.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Este informe se envió a @${originalManager} en lugar de a ti (su delegado de vacaciones) porque no eres miembro de la política de este informe`, + `Este informe se envió a @${originalManager} en lugar de a ti (su sustituto de vacaciones) porque no eres miembro de la política de este informe`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este informe se te envió a ti en lugar de a tu delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, + `Este informe se te envió a ti en lugar de a tu sustituto de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => `Este informe se envió a @${originalManager} en lugar de a su delegado de vacaciones @${delegate} porque no es miembro de la política de este informe`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `Este informe se envió a @${originalManager} para su aprobación ya que tú no puedes aprobar tus propios informes`, + `Este informe se envió a @${originalManager} para su aprobación, ya que no puedes aprobar tus propios informes`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Este informe se te ha enviado para aprobación porque tu sustituto de vacaciones, @${delegate}, no puede aprobar sus propios informes`, + `Este informe se te envió para su aprobación porque tu delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Este informe se envió a @${originalManager} para su aprobación, ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, + `Este informe se envió a @${originalManager} para su aprobación ya que su delegado de vacaciones, @${delegate}, no puede aprobar sus propios informes`, }, chooseWorkspace: 'Elige un espacio de trabajo', routedDueToDEW: (to: string, reason?: string) => `informe enviado a ${to}${reason ? ` porque ${reason}` : ''}`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 5e7715ac6bd2..72d0256c68f9 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -1725,17 +1725,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Choisissez une option pour changer l’approbateur de ces rapports.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (son remplaçant pendant ses vacances), car vous n’êtes pas membre de la politique de cette note de frais`, + `Cette note de frais a été envoyée à @${originalManager} au lieu de vous (son remplaçant de vacances), car vous n’êtes pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Cette note de frais vous a été envoyée au lieu d’être adressée à votre remplaçant pour congés @${delegate}, car il n’est pas membre de la politique de cette note de frais`, + `Cette note de frais vous a été envoyée au lieu de votre remplaçant pendant les vacances @${delegate}, car il n’est pas membre de la politique de cette note de frais`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant en congé @${delegate}, car il n’est pas membre de la politique de cette note de frais`, + `Cette note de frais a été envoyée à @${originalManager} au lieu de son remplaçant de vacances @${delegate}, car cette personne n’est pas membre de la politique de cette note de frais`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `Cette note de frais a été envoyée à @${originalManager} pour approbation, car vous ne pouvez pas approuver vos propres notes de frais`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant pendant les vacances, @${delegate}, ne peut pas approuver ses propres notes de frais`, + `Cette note de frais vous a été envoyée pour approbation, car votre remplaçant pour congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Cette note de frais a été envoyée à @${originalManager} pour approbation, car sa personne déléguée pour les congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, + `Cette note de frais a été envoyée à @${originalManager} pour approbation, car son délégué de congés, @${delegate}, ne peut pas approuver ses propres notes de frais`, }, chooseWorkspace: 'Choisir un espace de travail', routedDueToDEW: (to: string, reason?: string) => `note de frais acheminée vers ${to}${reason ? ` parce que ${reason}` : ''}`, diff --git a/src/languages/it.ts b/src/languages/it.ts index 305b49623745..b2fd3ba137b4 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -1718,17 +1718,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: "Scegli un'opzione per cambiare l'approvatore di questi report.", delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Questo rapporto è stato inviato a @${originalManager} invece che a te (il loro Sostituto per le ferie) perché non fai parte della polizza di questo rapporto`, + `Questo report è stato inviato a @${originalManager} invece che a te (il loro Delegato per le ferie) perché non fai parte della policy di questo report`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a te invece che al tuo delegato per le vacanze @${delegate} perché non è un membro della policy di questo resoconto`, + `Questo report è stato inviato a te invece che al tuo delegato per le vacanze @${delegate} perché non è un membro della policy di questo report`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a @${originalManager} invece che al/dei suo/i sostituto/i per le ferie @${delegate} perché non fanno parte della polizza di questo resoconto`, + `Questo report è stato inviato a @${originalManager} invece che al/la suo/a delegato/a per le vacanze @${delegate} perché non è membro della policy di questo report`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `Questo resoconto è stato inviato a @${originalManager} per l'approvazione perché tu non puoi approvare i tuoi resoconti`, + `Questo resoconto è stato inviato a @${originalManager} per l'approvazione, dato che non puoi approvare i tuoi stessi resoconti`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Questo rendiconto ti è stato inviato per l'approvazione perché il tuo sostituto per le ferie, @${delegate}, non può approvare i propri rendiconti`, + `Questo resoconto ti è stato inviato per l'approvazione perché il tuo delegato per le vacanze, @${delegate}, non può approvare i propri resoconti`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Questo resoconto è stato inviato a @${originalManager} per l’approvazione, dato che il suo delegato per le ferie, @${delegate}, non può approvare i propri resoconti`, + `Questo report è stato inviato a @${originalManager} per l'approvazione, dato che il/la suo/a Delegato/a per le ferie, @${delegate}, non può approvare i propri report`, }, chooseWorkspace: 'Scegli uno spazio di lavoro', routedDueToDEW: (to: string, reason?: string) => `report indirizzato a ${to}${reason ? ` perché ${reason}` : ''}`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index ae555ae958ef..8a7ae91caa4b 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -1700,17 +1700,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'これらのレポートの承認者を変更する方法を選択してください。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `このレポートは、あなた(休暇代理人)ではなく、あなたの代わりに @${originalManager} に送信されました。あなたはこのレポートのポリシーのメンバーではないためです。`, + `このレポートは、あなた(休暇代理人)ではなく、あなたが所属していないこのレポートのポリシーのメンバーであるため、@${originalManager} に送信されました`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `このレポートは、休暇代理人の @${delegate} ではなくあなたに送信されました。このレポートのポリシーに、その代理人がメンバーとして参加していないためです。`, + `このレポートは、休暇代理人である @${delegate} がこのレポートのポリシーのメンバーではないため、代わりにあなたに送信されました`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `このレポートは、このレポートのポリシーのメンバーではないため、本来の休暇代理人である @${delegate} ではなく、@${originalManager} に送信されました`, + `このレポートは、このレポートのポリシーのメンバーではないため、休暇代理人の @${delegate} ではなく、@${originalManager} に送信されました`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `あなたはご自身のレポートを承認できないため、このレポートは承認のために @${originalManager} さんに送信されました`, + `このレポートは、ご自身のレポートをご自身で承認することはできないため、承認のために @${originalManager} に送信されました`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => `このレポートは、休暇代理人の @${delegate} さんが自分のレポートを承認できないため、承認のためにあなたに送信されました`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `このレポートは、休暇代理人である @${delegate} さんは自分のレポートを承認できないため、承認のために @${originalManager} さんに送信されました`, + `このレポートは、休暇代理人である @${delegate} は自分のレポートを承認できないため、承認のために @${originalManager} に送信されました`, }, chooseWorkspace: 'ワークスペースを選択', routedDueToDEW: (to: string, reason?: string) => `レポートは ${to}${reason ? ` ${reason} のため` : ''} に回覧されました`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index e8dd04b1da8c..e961684ab8f3 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -1714,17 +1714,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Kies een optie om de fiatteur voor deze rapporten te wijzigen.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun vakantievervanger), omdat je geen lid bent van het beleid van dit rapport`, + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar jou (hun Vakantievertegenwoordiger), omdat je geen lid bent van het beleid van dit rapport`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Dit rapport is naar jou gestuurd in plaats van naar je Vakantievertegenwoordiger @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + `Dit rapport is naar jou gestuurd in plaats van naar je vakantiemandataris @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangende gemachtigde @${delegate}, omdat die geen lid is van het beleid van dit rapport`, + `Dit rapport is naar @${originalManager} gestuurd in plaats van naar hun vervangend manager @${delegate}, omdat die geen lid is van het beleid van dit rapport`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat je je eigen rapporten niet kunt goedkeuren`, + `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat je je eigen rapporten niet kunt goedkeuren`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Dit rapport is naar je gestuurd voor goedkeuring omdat je Vakantievervanger, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, + `Dit rapport is naar jou gestuurd voor goedkeuring omdat je Vakantieplaatsvervanger, @${delegate}, zijn of haar eigen rapporten niet kan goedkeuren`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Dit rapport is ter goedkeuring verzonden naar @${originalManager}, omdat hun vakantieplaatsvervanger, @${delegate}, hun eigen rapporten niet kan goedkeuren`, + `Dit rapport is ter goedkeuring naar @${originalManager} gestuurd, omdat hun vervanger tijdens vakantie, @${delegate}, hun eigen rapporten niet kan goedkeuren`, }, chooseWorkspace: 'Kies een werkruimte', routedDueToDEW: (to: string, reason?: string) => `rapport doorgestuurd naar ${to}${reason ? ` omdat ${reason}` : ''}`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index ccc2f19b9d53..001bebb747ec 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -1710,17 +1710,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Wybierz opcję, aby zmienić akceptującego dla tych raportów.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Ten raport został wysłany do @${originalManager} zamiast do ciebie (jego Zastępcy na czas urlopu), ponieważ nie jesteś członkiem polityki tego raportu`, + `Ten raport został wysłany do @${originalManager} zamiast do ciebie (twojego Zastępcy na czas urlopu), ponieważ nie jesteś członkiem polityki tego raportu`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Ten raport został wysłany do ciebie zamiast do twojego Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, + `Ten raport został wysłany do ciebie zamiast do twojego zastępcy urlopowego @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager} zamiast do jego zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, + `Ten raport został wysłany do @${originalManager}, a nie do Zastępcy na czas urlopu @${delegate}, ponieważ nie jest on członkiem polityki tego raportu`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ nie możesz zatwierdzać własnych raportów`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój zastępca urlopowy, @${delegate}, nie może zatwierdzać własnych raportów`, + `Ten raport został wysłany do ciebie do zatwierdzenia, ponieważ twój Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać swoich własnych raportów`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ jego Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, + `Ten raport został wysłany do @${originalManager} do zatwierdzenia, ponieważ ich Zastępca na czas urlopu, @${delegate}, nie może zatwierdzać własnych raportów`, }, chooseWorkspace: 'Wybierz przestrzeń roboczą', routedDueToDEW: (to: string, reason?: string) => `raport przekazany do ${to}${reason ? ` bo ${reason}` : ''}`, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index e0da5472a904..b633a7f9232f 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -1713,17 +1713,17 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: 'Escolha uma opção para alterar o aprovador destes relatórios.', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias dele/dela) porque você não é membro da política deste relatório`, + `Este relatório foi enviado para @${originalManager} em vez de para você (o Delegado de Férias) porque você não é membro da política deste relatório`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `Este relatório foi enviado para você em vez do seu delegante de férias @${delegate} porque ele não é membro da política deste relatório`, + `Este relatório foi enviado para você em vez do seu Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} em vez do Delegado de Férias deles @${delegate} porque ele não é membro da política deste relatório`, + `Este relatório foi enviado para @${originalManager} em vez de para o Delegado de Férias @${delegate} porque ele não é membro da política deste relatório`, delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => - `Este relatório foi enviado para @${originalManager} para aprovação, já que você não pode aprovar seus próprios relatórios`, + `Este relatório foi enviado para @${originalManager} para aprovação, pois você não pode aprovar seus próprios relatórios`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `Este relatório foi enviado para você para aprovação, pois o seu Delegado de Férias, @${delegate}, não pode aprovar os próprios relatórios`, + `Este relatório foi enviado para você para aprovação, pois seu Delegado de Férias, @${delegate}, não pode aprovar os próprios relatórios`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `Este relatório foi enviado para @${originalManager} para aprovação, já que o Delegado de Férias dele(a), @${delegate}, não pode aprovar os próprios relatórios`, + `Este relatório foi enviado para @${originalManager} para aprovação, já que o representante de férias dele(a), @${delegate}, não pode aprovar os próprios relatórios`, }, chooseWorkspace: 'Escolha um workspace', routedDueToDEW: (to: string, reason?: string) => `relatório encaminhado para ${to}${reason ? ` porque ${reason}` : ''}`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 5632205b91f8..94350b2abf54 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -1657,16 +1657,16 @@ const translations: TranslationDeepObject = { }, bulkSubtitle: '选择一个选项来更改这些报表的审批人。', delegateSubmitNotOnPolicyForWingman: (originalManager: string) => - `此报销单已发送给 @${originalManager},而不是发送给你(其休假代理),因为你不是此报销单所属政策的成员`, + `该报表已发送给 @${originalManager},而不是发送给你(他们的休假代理人),因为你不是此报表所属政策的成员`, delegateSubmitNotOnPolicyAsOriginalManager: (originalManager: string, delegate: string) => - `由于你的休假代理人 @${delegate} 不是此报销单所属政策的成员,这份报销单被发送给了你本人`, + `此报表被发送给你,而不是你的休假代理人 @${delegate},因为 TA 不是此报表所属政策的成员`, delegateSubmitNotOnPolicy: (originalManager: string, delegate: string) => - `此报表已发送给 @${originalManager},而非他们的休假代理人 @${delegate},因为他们不是此报表所属政策的成员`, - delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `此报表已发送给 @${originalManager} 进行审批,因为你不能审批自己的报表`, + `此报表被发送给 @${originalManager},而不是他们的假期代理人 @${delegate},因为该代理人不是此报表所属策略的成员`, + delegateSubmitCannotApproveOwnReportForWingman: (originalManager: string) => `由于你不能审批自己的报销单,此报销单已发送给 @${originalManager} 审批`, delegateSubmitCannotApproveOwnReportAsOriginalManager: (delegate: string) => - `此报表已发送给您审批,因为您的休假代理人 @${delegate} 无法审批自己的报表`, + `由于你的休假代理人 @${delegate} 无法审批自己的报销单,因此此报销单已发送给你审批`, delegateSubmitCannotApproveOwnReport: (originalManager: string, delegate: string) => - `由于其休假代理人 @${delegate} 无法审批自己的报销报告,此报销报告已发送给 @${originalManager} 审批`, + `此报销单已发送给 @${originalManager} 审批,因为其休假代理人 @${delegate} 不能审批自己提交的报销单`, }, chooseWorkspace: '选择工作区', routedDueToDEW: (to: string, reason?: string) => `报销单已转交给 ${to}${reason ? ` 因为 ${reason}` : ''}`, From c6d21814bee597bc5f51a91edbc071497d280528 Mon Sep 17 00:00:00 2001 From: Carlos Martins Date: Wed, 12 Aug 2026 13:59:06 -0600 Subject: [PATCH 10/10] address comments --- src/libs/SidebarUtils.ts | 9 +++------ .../inbox/report/ContextMenu/ContextMenuActions.tsx | 10 +++++----- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 383968709e3d..3cd63907ba68 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -1036,9 +1036,11 @@ function getOptionData({ // We need to remove sms domain in case the last message text has a phone number mention with sms domain. let lastMessageText = Str.removeSMSDomain(lastMessageTextFromReport); - // Specifically for concierge chats, which don't meet any of the conditions in the if statement below + // Specifically for concierge chats and expense reports, which don't meet any of the conditions in the if statement below if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) { lastMessageText = getActionableCard3DSTransactionApprovalMessage(translate, lastAction) ?? lastMessageText; + } else if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT) && !!getDelegateSubmitMessage(translate, lastAction, currentUserLogin)) { + lastMessageText = Parser.htmlToText(getDelegateSubmitMessage(translate, lastAction, currentUserLogin)); } const isGroupChat = isGroupChatUtil(report) || isDeprecatedGroupDM(report, isReportArchived); @@ -1308,11 +1310,6 @@ function getOptionData({ isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.REASSIGN_APPROVER) ) { result.alternateText = Parser.htmlToText(getChangedApproverActionMessage(translate, lastAction)); - } else if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { - const delegateSubmitMessage = getDelegateSubmitMessage(translate, lastAction, currentUserLogin); - if (delegateSubmitMessage) { - result.alternateText = Parser.htmlToText(delegateSubmitMessage); - } } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_OWNERSHIP) { result.alternateText = Parser.htmlToText(getUpdatedOwnershipMessage(translate, lastAction, policy)); } else if (isActionOfType(lastAction, CONST.REPORT.ACTIONS.TYPE.MOVED_TRANSACTION)) { diff --git a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx index c652e70a1c8e..ed29ef2b74a9 100644 --- a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx @@ -1360,11 +1360,11 @@ const ContextMenuActions: ContextMenuAction[] = [ isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.REASSIGN_APPROVER) ) { setClipboardMessage(getChangedApproverActionMessage(translate, reportAction)); - } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT)) { - const delegateSubmitMessage = getDelegateSubmitMessage(translate, reportAction, currentUserPersonalDetails.email); - if (delegateSubmitMessage) { - setClipboardMessage(delegateSubmitMessage); - } + } else if ( + isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.ACTION_DELEGATE_SUBMIT) && + !!getDelegateSubmitMessage(translate, reportAction, currentUserPersonalDetails.email) + ) { + setClipboardMessage(getDelegateSubmitMessage(translate, reportAction, currentUserPersonalDetails.email)); } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.MOVED_TRANSACTION)) { setClipboardMessage(getMovedTransactionMessage(translate, reportAction, reportAttributes)); } else if (isMovedAction(reportAction)) {